• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル内でのVBAの質問です。)

エクセルVBAで別のシートの値をコピーして指定のセルに貼り付ける方法

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問者の記述振りを見ていると、こういうイベントを使う課題や、ブックを別にして処理する方法をとるのは、まだ早すぎると思う。 まして質問者以外のものに、使わせようとするなら、もっと経験を積む必要があるだろう。 小生は、小手先調べでやってみたが、うまく伝わるか心配。 うまく行かない時は、この回答は無視してください。 (1)ブックは2つ作る   A.検索のためのボタンのあるブック。シートはSheet1とする。    "C:\Users\XXX\Documents\日付で検索.xlsm" XXXXはユーザー名。   B。検索されるデータがあるブック。シートはSheet1とする。    "C:\Users\XXX\Documents\データ例0927.xlsx" (2)AのSheet1に、検索の引き金を引く、ボタン的なものを作る。    下記のように、色々考えられる。    a.図形(四角形)でマクロを登録    開発ー挿入で作るところの    b.コントトールのボタンなど  c.ActiveXコントロールのボタンなど    ユーザー・フォームを設けてやる    d.ユーザーフォームを設けて、その上にボタンを作る   本回答では、aを使った。   この図形をクリックした、クリックイベントで検索を実行する。   登録するマクロ(処理内容)は、標準モジュールのTest02の名のもとに記述。 (3)Aブックを開くと、最初にAutoOpenでBブックを開く。    Aブックを閉じると、Bブックも閉じて終わる。 ==== データ例 AブックのSheet1   F1とF2セルに 日付と区分(小生が命名しただけ)を入力しておく 2019/1/11 い これは検索する直前までに入力しておく。 この範囲チェックは省略している。 上述の、クリックする図形(四角形)を1つ、Sheet1に張り付けておく。 ==== 検索されるデータの例(小生が一部勝手に作成したもの) BブックのSheet1 B4:I9 日付/区分 2019/1/9 2019/2/13 2019/1/11 2019/1/12 2019/1/13 2019/1/14 2019/1/15 あ 11 21 31 41 51 61 71 い 12 22 32 42 52 62 72 う 13 23 33 43 53 63 73 え 14 24 34 44 54 64 74 お 15 25 35 45 55 65 75 ======= 以下はVBAコード関連のこと。 ==== AブックのModule1 に Sub test02() MsgBox "検索します" dt = ActiveWorkbook.Sheets("Sheet1").Range("F1") MsgBox "日付 " & dt kbn = ActiveWorkbook.Sheets("Sheet1").Range("F2") MsgBox "区分 " & kbn '--- Set wb = Workbooks.Open("C:\Users\惇\Documents\データ例0927.xlsx") Set ws = wb.Worksheets("Sheet1") 'Set wb = Workbooks("C:\Users\惇\Documents\データ例0927.xlsx") 'y = Application.WorksheetFunction.Match(dt, ws.Range("C4:I4"), 0) y = ws.Range("C14:I4").Find(dt).Column 'MsgBox y x = ws.Range("B5:B9").Find(kbn).Row 'MsgBox x MsgBox "結果 " & ws.Cells(x, y) End Sub ==== 自動でデータのあるブックを開いたり、閉めたりするために、 AブックのThisworkbook に Private Sub Workbook_Open() Workbooks.Open "C:\Users\惇\Documents\データ例0927.xlsx" End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("データ例0927.xlsx").Close Savechanges:=True End Sub ==== BブックにはVBAコード無し。 ==== 利用 AブックのSheet1の F1に検索する日付 F2に検索する区分 を入力しておく ー AブックのSheet1の四角形をクリック ーー 結果 この回答では、とりあえず、画面表示のみ。 MsgBox "結果 " & ws.Cells(x, y)の箇所。 実際はこの値が後処理で、何かに使われるのだろう。質問には記述無し?

nyaaaaaaaao
質問者

お礼

丁寧にご回答ありがとうございます。 仰るとおり経験不足なので、基礎から学ぼうと思います。

関連するQ&A

  • エクセルVBAで質問です

    あるブックのシートに入力するようにしています。そこには関数や、 リストなどさまざまな設定がされています。そのブックにコードを書いてマクロ実行ボタンもそのシートに付けたいと思っています。 このシートをデスクトップにコピーして別ブックとして作成したいのですが、コードを教えていただけないでしょうか。できるかわかりませんが、関数が設定されてある箇所は関数としてではなく、値としてコピーされると都合がいいです。 また、作成されたブック(コピーしたシート)には、マクロのボタンなんかが残らない形ではできないものでしょうか?

  • エクセル複数シートの検索とVBA

    エクセルVBA初心者です。 今エクセル2007で、下画像の上段・中段のような売上げシートを ブックの中に複数シート作成しています。 シートは売上げのあった日毎に作成しており、シート名は「1.1」のように日付にしています。 売上日はシートの左上のA1セルに入力しています。 ここでしたい処理なのですが、画像の下段のように検索用の シートを1枚作り、そこに売上内容を入力し、マクロコードを実行すれま、自動的に 該当するデータ(売上内容から支払い方法まで)を表示するコードはあるのでしょうか。 今は手作業で、シートを目視で確認しているので大変になってきました。 よろしくお願いします。

  • エクセルVBAについて。

    あるセルの数値を別シートへ連続してコピーするにはどのようなコードを使えばいいのでしょうか? 教えてください。お願いします。

  • エクセルVBAでの質問です。

    エクセル2003での質問です。 book1のシート1からbook2のシート18セルC30へ 表のコピーを行い、C30が空白セルだったらそのまま貼り付け、 非空白だったら表最下部から2行あけて表のコピー操作を行う。 としたいのですが以下の箇所でエラーがでてしまいます。 book1.Activate sheet1.Range("C8:E24").Copy book2.Activate If sheet18.Range("C30") = "" Then sheet18.Range("C30:E46").Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 Else sheet18.Range("C30").End(xlDown).Offset(2).Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 End If 以上、解決策をご教示願います。

  • 複数ブックの特定のセルを合計したいです

    中を見ていただき、ありがとうございます。 似たような質問・ご回答があるのは重々承知しておりますが できるだけシンプルなコードを教えていただきたく、質問させていただきました。 さて、いま1つのフォルダ内に,複数のブック(ファイル)が入っています。 すべてのブックはExcel2007で作成しており、目的の作業もExcel2007で行いたいです。 なお、それぞれのブックの名前に規則性はありません。 ブックの中身は統一されており、1ブック1シート、シート名は Sheet1 です。 このシートのB4からP4(横一列15個のセル)には、画像上段のように数値が入っています。 ここでやりたいのは、すべてのブックに入っているそれらの数値を平均して、 別に用意しておいた集計用のブックの同一セル(B4からP4)に入れるという作業です。 ブックを結合してから串刺し演算をしても良いのですが、できればマクロ一発で しかもできるだけシンプルなコードで以上を実現できれば嬉しいです。 過不足等ございましたら補足させて頂きますので、どうかお知恵をお貸しください。

  • Excel VBA  Sheet1に記述していたのですがうまく動きません。

    シート1にコマンドボタンを配置し、Sheet1にそのままコードを記述していました。そこにマクロで記録したシート3の並び替えのコードを追記したのですがうまく動きません。 もしかしてこれは、Sheet1に記述していたためなのでしょうか。 このままSheet1に一連の作業として記述していきたいのですが、 どうしたらよいのでしょうか。 Excel2003を使用しています。 またModule1にSheet1のコードをコピーして移動させた場合は、どのようにすればコマンドボタンから実行させることができるのでしょうか。 宜しくお願い致します。

  • EXCEL VBAについての質問です

    質問させてください。 添付した画像のような表にて在庫の管理をしたいと考えています。 VBAのフォームを使用し、テキストボックスに入出庫の数値を入れ、 入庫、出庫のボタンを押し、在庫の数値を増減させたいと思っています。 下に書かせていただいたような流れでできないものかと思ったのですが、 3行目と4行目のプログラムがうまく動作させられません。 offsetを使用し、セルをずらすことができるかと思いましたが エラーが出てしまい実行することができませんでした。 どなたか方法をご存知の方がいましたら回答よろしくお願いします。 また、もっとベターな方法がありましたらアドバイスをよろしくお願いします。 Private Sub CommandButton1_Click() '「a」という単精度浮動小数点数型 の変数を宣言する. Dim a As Single 'ワークシート「Sheet1」をアクティブにする. Worksheets("Sheet1").Activate 'textbox1の内容を変数aに入れる. a = TextBox1.Value1 'Comboboxで選択したセルの4つ右隣のセルの値を(A32)に記入する Worksheets("Sheet1").Range("A32") = ComboBox1.Offset(4,0).Value 'セル(A32)と変数aを足し、その値をComboboxで選択したセルの4つ右隣のセルに記入する 'Worksheets("Sheet1").ComboBox1.Offset(4,0).Value = a + ComboBox1.Offset(4,0).Value End Sub

  • エクセルVBAの質問です。

    エクセルVBAの質問です。 一つ一つコードを試しては動きを確認するという作業を始めたばかりの初心者です。 VBAで他のブックからデータを取得するにあたっては、その参照先のブックの行列は絶対いじってはならないものだと理解しています。でも、行列が変わってしまう可能性があるため、参照先のブックの値を、行列ではなく、たとえば「“4月”かつ“売上”の交わるセルから数値を取得せよ」のように、参照先のブック内の文字列を読みにいって、そこから取得するような考え方は成り立つでしょうか。もし成り立つ場合は、どのように組めるものなのか、考え方を教えていただけませんでしょうか。 何卒よろしくおねがいいたします。

  • エクセルVBAでブックを開くとマクロを実行するようにしたいのですが

    ブックを開くと同時に開いたシートを保護するようにしたいのですがうまくいきません。通常(?)ボタンを作っておいて押すと実行すると思うのですが、そうせずにブックを開くと実行するようにならないかと思っています。保護をするコードはわかるのですが、どこにそれを書き込んだらいいのかもわかりません。VBAプロジェクトを見るとSheet1,Sheet2,ThisWorkbook,UserForm1とありますが、そのうちのどこかに置くのでしょうか?

  • excel vba 作成について教えて下さい。

    excel VBAを使ってあるブックのセル範囲を別のブック(日報.XLS)のシートへコピー貼り付けをしたいのですが、コピーする側のブックがランダムに取り込まれ(例 8時間ピッチにて自動的にブックが作成される)そのブックを日にちごとに集計し、一か月ごとにまとめるということをやらなければなりません。 例)8時間ごとにフォルダが作成されます。   000001.XLS 000002.XLS   00000F.XLS ・・・・・・・・16進数にて   上記ブックのSheet1のA2:A11までの数値を別のブック(日報月報集計)のに貼り付ける。 別のブック(日報月報集計)は項目ごとに10個のシートがあり 8時間ごとのファイルのセルA2は別ブックのSheet1の日付けに対応するセルへ貼り付け B2は       Sheet2 上記操作を8時間ごと(可変可能)に自動的にコピー貼り付けをやりたいのですが ブック間のコピー貼り付け等わからないことが(初心者です。)多々あり、いろいろ調べてはいるのですが、STOPした状態です。 出来れば、初心者にも理解しやすい解説等あれば宜しくお願いします。