• ベストアンサー

ボタン入力で他ブックのセルへコピー

ブックBシート炉の1月1日の横にある入力ボタンでブックAシート総括の日付のマッチ(ブックBのA3とブックAのA2)したらブックBの1月1日のB3:C7がブックAのA1:B7にコピーしたいのですがどなたかVBAコードが解る方お願いします。 同様に順に1月2日の横にある入力ボタンでブックAへコピーしたいのですが。

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

  • ベストアンサー
回答No.1

こんにちは。 一応、画像を見て作りましたが、条件が違っていたら、以下のコードは動きません。 A.xlsm 側のファイルの拡張子は任意(画像では読み取れません)ですが、B.xlsmは、マクロ搭載ですから、xlsmの拡張子になります。こちらは、Excel 2010 で開発しましたが、別のブックでは、Findメソッドがまったく検索できないようでしたので、やむを得ず、ワークシート関数のMatchを使いました。 また、A.xlsmの[総括]シートの日付欄は、A:B列連結になっている必要があります。 他には、B.xlsm のシートのそれぞれのCommandButtonは、必ず、A列の[日付セル]よりも行として上に出てはいけません。例えば、[1月1日]は、A3から始まっていますから、少なくとも、CommandButtonは、C3の上辺より下になくてはなりません。その位置で、A列の日付を読取ります。 '//B.xlsm のSheets(1)のマクロコードです。 Private Sub CommandButton1_Click()  Call ButtonProgs(CommandButton1) End Sub Private Sub CommandButton2_Click()  Call ButtonProgs(CommandButton2) End Sub Sub ButtonProgs(obj As Object) Dim i As Variant Dim j As Long Dim c As Variant j = obj.TopLeftCell.Row Set c = Cells(j, 1).MergeArea.Cells(1) m = c.Address With Workbooks("A.xlsm").Worksheets("総括") 'ブック名に注意  i = Application.Match(c, .Columns(1), 0)   If IsError(i) = False Then    c.Offset(, 1).Resize(5, 2).Copy .Cells(i + 1, 1) 'コピー 5行の設定になっています。   Else    MsgBox Format(c.Value, "mm/dd") & " が見つかりません。", 48   End If End With End Sub '//

kuma0220
質問者

お礼

ありがとうございます。大変助かりました。

関連するQ&A