2017-05-16 3 views
0

VBAプログラミングの初心者で、Ifステートメント内の値に基づいてセルにテキストを追加しようとしています。私はfindステートメントを使用しようとしましたが、それはヌル値で終了し、最終的に、私は3つの異なる値のためにこれを必要とします。変数として "MyCell"を定義する必要があるかどうかはわかりません。いずれにしてもうまくいきませんでした。下のコードを実行すると、MyCellは無効な修飾子です。Excelのvba内のifステートメントを使用して、セル値に基づいてテキスト配列を連結または結合する

Sub Macro2() 
' 
' Macro to insert Text into Cells 

Dim i As Long 
Dim MyCell As String 

Worksheets("Tax").Active 
For i = 2 To Range("H" & Rows.Count).End(xlUp).Row 
    ActiveCell.Select 
    MyCell = ActiveCell.Value 

     If MyCell.Value = "State Tax" Then 
      MyCell = Join("State Tax - ", Range(i, "D")) 

     ElseIf MyCell.Value = "SUI" Then 
      MyCell = Join("SUI - ", Range(i, "D")) 

     ElseIf MyCell.Value = "Local Tax" Then 
      MyCell = Join("Local Tax - ", Range(i, "D")) 
     End If 

    Next i 
End Sub 
+0

あなたの入力と希望する出力をここに表示できますか? –

答えて

0

myCellは必要ありません。あなたがした場合は、文字列ではなく範囲としてインスタンス化します。これを試して、必要なものを達成したかどうかを確認してください。

Sub Macro2() 
' 
' Macro to insert Text into Cells 

Dim i As Long 

With Worksheets("Tax") 
For i = 2 To .Range("H" & Rows.Count).End(xlUp).Row 
     If .Range("H" & i).Value = "State Tax" Then 
      .Range("H" & i).Value = "State Tax - " & .Range("D" & i).Value 

     ElseIf .Range("H" & i).Value = "SUI" Then 
      .Range("H" & i).Value = "SUI - " & .Range("D" & i).Value 

     ElseIf .Range("H" & i).Value = "Local Tax" Then 
      .Range("H" & i).Value = "Local Tax - " & .Range("D" & i).Value 
     End If 

    Next i 
End With 
End Sub 
+0

感謝します!私はしばらくこのことに取り組んでいました。ワークシート( "Tax") "と" Worksheets( "Tax")を使用したことに気付きました。理由を説明してもらえますか?また、ループが範囲を使用するので、範囲対セルを使用する必要がありますか? – Purpletiger

+0

シートを選択したりアクティブにしたりするのがはるかに効率的です。ほとんどの場合、シートをアクティブにしたり、範囲を選択したりすることなく、シートで必要なことを行うことができます。 "ワークシート(Sheet1)"メソッドをコーディングする際に覚えておくべき唯一のことは、範囲オブジェクトの前にピリオドを付けることです。そのため、VBAはアクティブなワークシートではなくそのワークシートについて話していることを認識します。私にポイントを与えるために答えの左上に灰色の上向き矢印をクリックしてください。 –

+0

説明ありがとうございます!それは非常に役に立ちます。私はあなたにポイントを与えましたが、まだ公開されていません。 – Purpletiger

関連する問題