• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAを使って検索したセルを別のシートにコピーする)

VBAを使ったエクセル差し込み文書のコピー方法

このQ&Aのポイント
  • エクセルで差し込み文書を作成する際、VBAを使用して特定のセルを別のシートにコピーする方法について説明します。
  • 差し込み文書を作成する際、VBAを使えば効率的に作業を行うことができます。
  • VLOOKUP関数ではうまくすべてのセルをコピーすることができない場合には、VBAを利用することをおすすめします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

Worksheet_Changeイベントを使うと <sheet1>のL1セルに入力すると <sheet2>のA列に同じ番号を検索に行きます。 あれば<sheet2>の検索行のF列をコピーして<sheet1>のB5セルに貼り付けます。 以下を<sheet1>のシートモジュールに貼り付けてお試し下さい。 Private Sub Worksheet_Change(ByVal Target As Range)   Dim myR As Variant   With Target     If .Count > 1 Then Exit Sub     If .Value = "" Then Exit Sub     If .Address <> "$L$1" Then Exit Sub     myR = Application.Match(.Value, Sheets("Sheet2").Columns(1), 0)     If IsError(myR) Then       '見つからなかった場合、B5セルをクリア       Range("B5").Clear       Exit Sub     End If     Sheets("Sheet2").Cells(myR, "F").Copy Range("B5")   End With End Sub

shenron7
質問者

お礼

お礼が遅くなりました。ありがとうございます。vbaがドシロウトなものでシートに貼付をして実行ボタンをクリックしてました。そうすると、マクロ名を聞いてきて、マクロ名を入力して実行すると「コンパイルエラー」がでてしまい、「??」な状態でした。 何もしなくていいことに気づき、今現在、うまくできてます。 これだと、数字を変えただけで変わってくれるのですごく便利になりました。ありがとうございます。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

標準モジュールに貼り付けてお試し下さい。 Sub Test()   Dim myR As Variant   myR = Application.Match(Sheets("Sheet1").Range("L1").Value, Sheets("Sheet2").Columns(1), 0)   If IsError(myR) Then     MsgBox Sheets("Sheet1").Range("L1").Value & " は、見つかりません。"     Exit Sub   End If   Sheets("Sheet2").Cells(myR, "F").Copy Sheets("Sheet1").Range("B5") End Sub

shenron7
質問者

補足

お礼が遅くなりました。ありがとうございます。 初歩的な質問かもしれませんが、差込文書が違う文面をいくつかつくりたので<Sheet1>の箇所を”平成24年(2)”に試しにしてみました。 すると「実行時エラー’9’インデックスが有効範囲にありません」とでます。 シート名は変更するとだめなのでしょうか?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub sest() 'この行から Dim k As Long Dim ws As Worksheet Set ws = Worksheets("Sheet2") If WorksheetFunction.CountIf(ws.Columns(1), Range("L1")) Then k = WorksheetFunction.Match(Range("L1"), ws.Columns(1), False) ws.Range("F" & k).Copy Destination:=Range("B5") Else MsgBox "該当データがありません。" End If End Sub 'この行まで ※ Sheet1にコマンドボタンを配置しておけばもっと簡単かもしれませんね。 参考になりますかね?m(_ _)m

shenron7
質問者

お礼

ありがとうございます。 したいことがちゃんとできるようになってました。 自分でそれなりに調べてたのですが、なかなかうまくいかなかったのでとても助かりました。

関連するQ&A