2017-04-19 19 views
2

私はExcelとVBAを使用して、下の表の内容を使用してセルを追加しています。コードは最初に列B(2)のオプションがop1であることを確認し、列A(1)の内容を読み取り、セルD2を追加する必要があります(表2のop1以下)。VBAがクラッシュするExcel

これはループを使用して表1内のすべての値を調べ、その後、表2を設定限界(3)を超えるまで連続して取り込む必要があります。

表1:

A  B 
--- --- 
text op1 
textt op2 
text op1 

表2は、次のよう

D 
--- 
op1 
*** The Cell I want to Append *** 

私が使用しているコードです。

Sub ProcOne() 
    OpColOne = 4 

    TextColMain = 1 
    OpColMain = 2 

    i = 1 

    Do Until i > 3 
     If Cells(i, OpColMain) = "op1" Then 
      Cells(2, OpColOne) = Cells(2, OpColOne) & vbNewLine & Cells(i, TextColMain) 
      i = i + 1 
     End If 
    Loop 
End Sub 

答えて

3
Option Explicit 

Sub ProcOne() 

    Dim OpColMain As Long 
    Dim TextColMain As Long 
    Dim opColOne As Long 
    Dim i   As Long 

    opColOne = 4 

    TextColMain = 1 
    OpColMain = 2 

    i = 1 

    Do Until i >= 3 
     With ActiveSheet 

      If .Cells(i, OpColMain) = "op1" Then 
       .Cells(2, opColOne) = .Cells(2, opColOne) & vbNewLine & .Cells(i, TextColMain) 
      End If 
      i = i + 1 

     End With 
    Loop 

End Sub 

あなたは正しく、すべての変数を宣言することを確認するために、Option Explicitを必要としています。 With ActiveSheetがなければ、Excelでエラーが発生する可能性があります。したがって .CellsをActiveSheetに宣言してください。だけではありません。マイクロソフトの情報はこちらWorksheet.Cells Property (Excel)をご覧ください。

最後に、i = i + 1は、ループの外側にある必要があります。コードやケースによっては、内部でも可能です。しかし、このケースでは、我々は3つのラインしかない。

最後の編集 - 3回ループしたい場合は、i >= 3まで実行します。それ以外の場合は2回だけループします。

+0

@ A.S.H - 同意します。 – Vityata

関連する問題