Excel VBA セルに値を入れる方法

こちらの記事では、Excel VBA を利用してセルに値を入れる方法をご紹介しています。

まず、VBAでシート上のセルに値を入れるためには、どのブックのどのシートのどのセルなのか?という情報が必要になります。

下記はセルに値を入れるサンプルコードです。

 

sponsor link

今開いているブックのアクティブになっているシートのセルに値を入れる

今開いてるブックのアクティブなシートは、ThisWorkbook.ActiveSheet で取得できます。

下記はこれを利用して WorkSheetオブジェクトを作成して、セルに値を入れています。

Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.ActiveSheet
    ws.Range("E2").Value = ws.Range("A2").Value + ws.Range("C2").Value
    
End Sub

こちらのサンプルコードは、セルA2+セルC2の結果をセルEに表示する簡単なコードになります。

実行結果は下記のようになります。

 

今開いてるブックの別のシートのセルに値を入れる

アクティブじゃない別のシートのセルに値を入れるには、シートのインデックスで指定するか、シート名を直接指定してセルに値を入れる方法があります。

Private Sub CommandButton1_Click()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Set ws1 = ThisWorkbook.ActiveSheet
    Set ws2 = ThisWorkbook.Sheets("答え")
    ws2.Range("B2").Value = ws1.Range("A2").Value + ws1.Range("C2").Value
    
End Sub

こちらのサンプルコードは、操作しているシート上のセルA2とC2の値を加算した結果を『答え』という名前のシートのセルB2に表示しています。

実行結果は下記の様になります。

 

インデックスでシートを指定する場合 下記サンプルコードの様に ThisWorkbook.Sheets(2) という形で何番目のシートなのかを1から始まる番号で指定します。

Private Sub CommandButton1_Click()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Set ws1 = ThisWorkbook.ActiveSheet
    Set ws2 = ThisWorkbook.Sheets(2)
    ws2.Range("B2").Value = ws1.Range("A2").Value + ws1.Range("C2").Value
    
End Sub

こちらの結果も同様に二番目にある『答え』というシートに答えが表示されます。

注意点としては、インデックスはシートの並びで変わってしまうという点です。

利用者がシートの順番を変更した場合、インデックスも変わってしまうので意図した結果が得られない可能性があります。

タイトルとURLをコピーしました