• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロの意味について)

マクロの意味について

nishi6の回答

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>応用が利かないので、少し教えてください。下記の意味を教えてもらえますか。 >tbl.Offset(4, 0).Resize(tbl.Rows.Count - 4, tbl.Columns.Count - 8).Select >Selection.Copy >tbl.Offset(4, 5).Resize(tbl.Rows.Count - 4, tbl.Columns.Count - 5).Select >Selection.Copy tbl.Offset(4, 0)  セル領域tblの左上コーナーから、行方向に4行下がったセル。列方向の移動はゼロ。  例えば、最初のセル領域tblがI1:X1000とすると、tbl.Offset(4, 0)=I5です。  左上コーナーは.Offset(0, 0)になるわけです。 .Resize  指定された範囲のサイズを変更します。Resize(行数,列数)のように使います。  この場合は行数=tbl.Rows.Count - 4       列数=tbl.Columns.Count - 8  なので、セル領域tblでOffset位置を基点に、上4行と列数を8列減らした範囲に変更しています .Select  Resizeで変更したセル領域を選択 .Offset(4, 5)の方も同様ですね。  最初のセル領域tblがI1:X1000なら、4回下がって、5回右に動いた位置から範囲を決めています。 VBE画面で、表示→オブジェクトブラウザで調べると、意味が理解できると思います。

noname#72697
質問者

お礼

よくわかりました。ありがとうございました。

関連するQ&A

  • Excel マクロ : マクロの記録の表記方法の変更

    Excelで質問です。 下記のようなマクロの記録を使用し「顧客一覧」のブックにデータを追加しています。 しかし、処理の中で一項目コピーするごとにファイルを行ったり来たりしているようで処理が遅いようです。何か解決策はあるのでしょうか? ・ ・ ・ Windows("顧客一覧.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("顧客一覧.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy Windows("顧客一覧.xls").Activate Range("B4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C8").Select Application.CutCopyMode = False Selection.Copy   ・   ・

  • エクセルで複数ファイルからコピーをする。

    すみませんが、BOOK1に複数のファイルから部分的にコピーして貼り付けるという作業をしたいのですが、ど素人なもんでわかりません。マクロで記録したモノをいじってみてるのですが、根本的にコードが分かっていなくギブアップです。  やりたいことは、フォルダーの中の970305日報1、970305日報2、970306日報1、970306日報2のようなファイルが山ほどあるのですが、 この970305の日報1と2を開き、それぞれファイルの決まった列を順番にをBook1の行へ行列を入れ替えて貼りつけていき(1日が1行)保存して閉じてから、次の日970306のデータをBOOK1の2行目に貼り付けるということをしたいのですが、どなたか教えていただければ助かります。よろしくお願いします。 Sub Macro2() Dim MyFile As String, MyPath As String Dim wb As Workbook, tb As Workbook Set tb = ThisWorkbook MyPath = tb.Path & "\" MyFile = Dir(MyPath & "*.xls", vbNormal) Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Do While MyFile <> "" If MyFile <> tb.Name Then Set wb = Workbooks.Open(MyPath & MyFile) With ActiveSheet Windows("970305日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("C1").Select Selection.PasteSpecial Paste:=xlPasteAll,         Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970305日報1.xls").Activate Range("C33:C38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("H1").Select Selection.PasteSpecial Paste:=xlPasteAll,       Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970305日報1.xls").Activate ActiveWindow.Close Windows("970305日報2.xls").Activate Range("B31:B36").Select Selection.Copy Windows("日報リスト.xls").Activate Range("N1").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970305日報2.xls").Activate Range("D31:D36").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("T1").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970305日報2.xls").Activate ActiveWindow.Close Windows("970306日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("C2").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970306日報1.xls").Activate Range("C33:C38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("H2").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970306日報1.xls").Activate ActiveWindow.Close -----------------------------------------

  • こんなマクロなんですが。

    下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。 Range("B23").Select Selection.Copy Range("F23").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B24").Select Selection.Copy Range("F24").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B25").Select Application.CutCopyMode = False Sheets("September 03").Copy Before:=Sheets(2)          ←ここ Selection.Copy Sheets("September 03 (2)").Select                   ←ここ Sheets("September 03 (2)").Name = "September 10"       ←ここ Range("B33").Select Application.CutCopyMode = False ActiveWindow.SmallScroll Down:=-15 Range("F12:L18").SelectEnd Sub と、まだ続くんですが、とりあえずここまでで。 番地のデータを取り込むようにしたいんですが、うまくいきません。 ←ここ っていうのがまさにそれです。

  • Excel マクロでファイル名を変数に・・・

    初心者です。検索してもわからなかったので質問です。 下記のようなマクロの処理で「AAA」というファイル名のExcelに「2.xls」からデータをコピーし貼り付けています。    ・    ・ Windows("AAA.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("AAA.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy    ・    ・ 今回は「2.xls」ではなく「3.xls」、「4.xls」、・・・といったように違うファイル名で同じ処理を行ないたいので「2」と指定するのではなく「(ファイル名).xls」といった形にしたいのですが、それは可能なのでしょうか。 ご意見宜しくお願いいたします。

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • オートフィルタをし選択・貼付をマクロにしたいのですが、対象データ表示される行が毎回違うのでうまくいきません。

    いつもお世話になっております。 どなたかご教示いただければ助かります。 ファイル(1)のデータの中からA行が830となっているものを、ファイル(2)のページ1の一番下の行に付け足し 同じようにファイル(1)からA行が1000となっているものを、ファイル(2)のページ2の一番下に付け足す という作業をマクロでしたいのですが、毎回830と1000がセルAの何行目に表示されるのかが異なっており、オートフィルタをかけた状態でマクロにするとマクロ作成時にたまたま表示されていた行数が指定されているので、別の日に違う行数をコピーしてしまい私が作成したマクロではうまくいきません。 どう変更すれば宜しいでしょうか? どうぞ宜しくお願い致します。 Workbooks.Open Filename:="mm.xls"    ←上記文でファイル(1) Sheets(DM).Select Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>*850*", Operator:=xlAnd, _ Criteria2:="<>*1000*" Range("A2").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.EntireRow.Delete ActiveSheet.Rows("1:1").Select Selection.AutoFilter Windows("xx.xls").Activate  ←ファイル(2) Sheets("ll").Select   ←ページ1  ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="1000" Rows("3:3").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False Windows("xx.xls").Activate Sheets("pp").Select  ←ページ2 ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="850" Rows("2:2").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save Windows("mm.xls").Activate ActiveWindow.Close End Sub

  • エクセルのマクロで繰り返し処理

    当方マクロ初心者ですが下記のマクロをCheckBox0~CheckBox23についてコピーするセルを変化させながら繰り返し処理を行いたいのですが、簡単なループ処理で行えますか? 教えていただければ幸いです。 If CheckBox0.Value = True Then Worksheets("sheets1").Activate  行 = Worksheets("sheets1").Range("e7")   行 = 行   Worksheets("sheets1").Range("g7:t7").Copy Windows("Books1.xls").Activate Sheets("sheets1").Select Range(Cells(行, 15), Cells(行, 15)).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End If

  • VBAの勤務割表の式を短く

     月間の勤務割表を作成しています。 1列3行を一枡として一人・一日の枡とし、勤務の割り振り状態を表示するものです。 列に日付、行を個人名(max16名)とし1列3行を名前の定義で13種類作成してあります。 別シートの各セルの入力番号に応じて13種類を貼り付けていますが、式を簡単にできませんでしようか?  お教えくださいませんでしょうか?勉強不足は否めませんが。 尚名前の定義は、1行3列に1--で勤務1・""-""で日勤・""公休""で公等にしてあります。 OS Windows7 Office2010 Sub 図形の貼付け2() If Worksheets("メイン").Range("J9").Value Then Select Case Worksheets("メイン").Range("J9").Value 1人-1日 Case 1: ActiveSheet.Range("勤務1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 2: ActiveSheet.Range("勤務2").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 3: ActiveSheet.Range("勤務3").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 4: ActiveSheet.Range("日勤1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 5: ActiveSheet.Range("日勤2").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 6: ActiveSheet.Range("日勤3").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False End Select Else Select Case Worksheets("メイン").Range("I9").Value Case 2: ActiveSheet.Range("明け").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 4: ActiveSheet.Range("夜勤").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 5: ActiveSheet.Range("公").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 6: ActiveSheet.Range("有").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 7: ActiveSheet.Range("特").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 8: ActiveSheet.Range("振").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 9: ActiveSheet.Range("欠").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False End Select End If End Sub

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • EXCLの自動マクロ記録を簡潔に編集をお願いします。

    すみません教えてください。  収支会計.XLSの売上台帳のシートを別ファイル確定申告2.xlsの売上作業範囲シートに貼り付けたく自動マクロを記録したのですが、いまいち動きがぎこちなく重く何とかスムーズに出来ないでしょうか? Sub 売り上げ書き込み() ' ' 売り上げ書き込み Macro ' Range("A2:F251").Select Selection.Delete Shift:=xlUp Application.Left = 20.8 Application.Top = 34 Windows("収支会計.XLS").Activate With ActiveWindow .Top = 3.4 .Left = 9.4 End With Sheets("売上台帳").Select ActiveWindow.SmallScroll Down:=-55 ActiveWindow.ScrollRow = 1 With ActiveWindow .Top = 87.4 .Left = 37 End With Range("D5:H1004").Select Selection.Copy Windows("確定申告2.xls").Activate Range("B2").Select ActiveSheet.Paste Range("A2").Select Windows("収支会計.XLS").Activate Range("C5:C430").Select Application.CutCopyMode = False Selection.Copy Windows("確定申告2.xls").Activate ActiveSheet.Paste Range("H8").Select End Sub 宜しくお願いします。