2016-08-02 14 views
0

セル488の後に何らかの理由で機能が正しくコピーされなくなります。終わりまで(約行1,000)、488の後、同じセルから一番下まで引きます。行の後にコード区切りをコピーして繰り返します。488

このコードをより堅牢にして、常に同じ行のセルから引き出す方法はありますか?

私が明確にする必要がある場合は、私に教えてください、私は必要なことを詳述することを嬉しく思っています。

Sub Compare() 
    Dim lastRow As Long 

    With Sheets("MP Parameters") 
     lastRow = .Cells(.Rows.Count, "C").End(xlUp).row 
     Range("A1").EntireColumn.Insert 
     With .Range("A5:A" & lastRow) 
      .Formula = "=MID(B5,FIND(""¬"",SUBSTITUTE(B5,""-"",""¬"",3))+1,LEN(B5))" 
      .Value = .Value 
     End With 
    End With 
End Sub 

答えて

1

cyboashuは、問題の原因となっている計算が完了する前に変換していると述べています。あなたが最初CellFormulaを配置し、その後CellValueをコピーしているが

。これは、VBAがValueを計算させてCellに入れるように短縮することができます。

Sub Compare() 
    Dim lastRow As Long 
    Dim cell As Range 

    With Worksheets("MP Parameters") 
     lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row 
     Range("A1").EntireColumn.Insert 
     For Each cell In .Range("A5:A" & lastRow) 
      cell.Value = Mid(cell.Offset(0, 1), Application.WorksheetFunction.Find _ 
         ("¬", Application.WorksheetFunction.Substitute(cell.Offset _ 
         (0, 1), "-", "¬", 3)) + 1, Len(cell.Offset(0, 1))) 
     Next 
    End With 
End Sub 

上記のコードの機能がテストされ、機能します。

+0

セルが空白であるような一見奇妙なエラーがあるようです。これはエラーメッセージではありませんが、何らかの理由でfor条件が満たされていないため、エラーコードをスローしないようです。それは私の最後の問題かもしれない私はそれを調べます –

+0

、私の問題だったスクラッチ。ありがとうございました! –

1

計算が完了する前に値に変換しています。

Sub Compare() 
    Dim lastRow As Long 

    With Sheets("MP Parameters") 
     lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row 
     Range("A1").EntireColumn.Insert 
     With .Range("A5:A" & lastRow) 
      .Formula = "=MID(B5,FIND(""¬"",SUBSTITUTE(B5,""-"",""¬"",3))+1,LEN(B5))" 

      '/ Force calculation before cobnversting to value 
      Sheets("MP Parameters").Calculate 
      Do 
      Loop Until Application.CalculationState = xlDone 

      .Value = .Value 
     End With 
    End With 
End Sub 
+0

あなたは何を意味するか分かりますが、これは確かにうまくいくはずですが、なんらかの理由でまだそれほど素晴らしいものではありません。同じ問題が発生しています。私は場合によっては再起動するつもりです。 –

+0

再起動後、問題が引き続き発生する –

+1

.Value = .Value部分をコメントアウトして、何が起こるかを再確認してください。 – cyboashu

関連する問題