エクセル実践塾 > エクセル実践塾2007

アクティブなセルに含まれるデータを、申請書の必要な箇所にコピーしたい

 

 

 

 

アクティブなセルの行番号を取得して、各列のデータを該当セルに格納していきます

アクティブなセルの行番号は、ActiveCell.Rowで取得できます。その行番号を使って、各列のデータを、申請書の各セルに格納していきます。

@バイト型の変数「r」を宣言して、その変数「r」にアクティブセルの行番号を格納します。

Sub Sinseisyo()
  Dim r As Byte
  r = ActiveCell.Row

End Sub

Aワークシート「申請書」の各セルに対して処理していくので、With〜End Withで対象シートの記述が一度で済むようにしておきます。

Sub Sinseisyo()
  Dim r As Byte
  r = ActiveCell.Row

  With Sheets("申請書")

  End With
End Sub

B2つのセルを「=」でつなぐことで、データのコピーを行います。

Sub Sinseisyo()
  Dim r As Byte
  r = ActiveCell.Row

  With Sheets("申請書")
    .Range("F5").Value = Cells(r, 1).Value

  End With
End Sub

コピー先のセルを表す「.Range("F5").Value」の頭に、ピリオド(.)を付けるのを忘れないようにしてください。このピリオドがあることで、「.Range("F5").Value」は「Sheets("申請書").Range("F5").Value」を表しています。こうした記述方法は、With〜End Withの中でのみ許されるものです。

「Cells(r, 1).Value」の「Cells(r, 1)」は、r行目の1列目のセルを表しています。Valueプロパティは、そのセルで表示されているデータです。

C同じコードを、コピー先のセルの数だけコピーで用意します。

Dコピー先のセル番地と、コピー元の列番号を、それぞれ書き換えます。

E最後に次の2行のコードを加えて、データのコピーを終えたら、「申請書」シートの予約日セルが選択されるようにします。

Sub Sinseisyo()
  Dim r As Byte
  r = ActiveCell.Row

  With Sheets("申請書")
    .Range("F5").Value = Cells(r, 1).Value
    .Range("F4").Value = Cells(r, 2).Value
    .Range("F6").Value = Cells(r, 3).Value
    .Range("F7").Value = Cells(r, 4).Value
    .Range("G8").Value = Cells(r, 5).Value
    .Range("B12").Value = Cells(r, 6).Value
    .Range("C13").Value = Cells(r, 7).Value
    .Range("C14").Value = Cells(r, 8).Value
    .Range("G13").Value = Cells(r, 9).Value
    .Range("B16").Value = Cells(r, 10).Value
    .Activate
    .Range("B13").Select
  End With
End Sub

Activateメソッドは、指定したシートをアクティブにするコードです。次のSelectメソッドで、そのアクティブなシートで、指定セルを選択するようにしています。

F「利用者」シートの一覧表のアクティブセルのデータ行に従って、申請書の必要な箇所が書き換えられます。