- ベストアンサー
VBAを使ったエクセル差し込み文書のコピー方法
- エクセルで差し込み文書を作成する際、VBAを使用して特定のセルを別のシートにコピーする方法について説明します。
- 差し込み文書を作成する際、VBAを使えば効率的に作業を行うことができます。
- VLOOKUP関数ではうまくすべてのセルをコピーすることができない場合には、VBAを利用することをおすすめします。
- みんなの回答 (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
その他の回答 (2)
- watabe007
- ベストアンサー率62% (476/760)
標準モジュールに貼り付けてお試し下さい。 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
補足
お礼が遅くなりました。ありがとうございます。 初歩的な質問かもしれませんが、差込文書が違う文面をいくつかつくりたので<Sheet1>の箇所を”平成24年(2)”に試しにしてみました。 すると「実行時エラー’9’インデックスが有効範囲にありません」とでます。 シート名は変更するとだめなのでしょうか?
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 画面左下の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
お礼
ありがとうございます。 したいことがちゃんとできるようになってました。 自分でそれなりに調べてたのですが、なかなかうまくいかなかったのでとても助かりました。
お礼
お礼が遅くなりました。ありがとうございます。vbaがドシロウトなものでシートに貼付をして実行ボタンをクリックしてました。そうすると、マクロ名を聞いてきて、マクロ名を入力して実行すると「コンパイルエラー」がでてしまい、「??」な状態でした。 何もしなくていいことに気づき、今現在、うまくできてます。 これだと、数字を変えただけで変わってくれるのですごく便利になりました。ありがとうございます。