- ベストアンサー
マクロの意味について
- マクロについての意味が理解できていないため、教えていただけないでしょうか。
- マクロを使用する際の具体的な手順やコマンドが含まれています。
- マクロを使用することで、Excelの操作を自動化することができます。
- みんなの回答 (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画面で、表示→オブジェクトブラウザで調べると、意味が理解できると思います。
その他の回答 (1)
- nishi6
- ベストアンサー率67% (869/1280)
日本語にしてみました。 ブックaaaをアクティブにする Windows("aaa.XLS").Activate Dim tbl, gyo, burank セルI4を選択 Range("i4").Select アクティブセル領域tblを定義。セルI4を含む空白行と空白列で囲まれた領域。多分連続的にデータが入力されているのでしょう Set tbl = ActiveCell.CurrentRegion アクティブセル領域tblの一番上の行を除外したものをtblに再定義して選択。多分、表題を除いている tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select 止めている? Stop アクティブセル領域tblをコピー Selection.Copy ブックbbbをアクティブにする Windows("bbb.XLS").Activate ブックbbbのシートcccを選択 Sheets("ccc").Select セルB2を選択 Range("B2").Select セルB2を左上にして、アクティブセル領域tblを値貼り付け Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False セルA2を選択 Range("A2").Select Application.CutCopyMode = False セルA2に算式『=B2&C2&D2』をセット。B、C、D列を文字列結合しようとしている ActiveCell.Formula = "=B2&C2&D2" 算式を登録したセルA2を再度選択 Range("A2").Select セルA2をコピー Selection.Copy 下のDoLoopで貼り付けた行数をカウントしようとしている。先判定にすべきか 行カウンタを初期化 gyo = 0 Do 行カウンタを進める gyo = gyo + 1 行カウンタの行のB列のデータを取り出し『burank』に保存 burank = Worksheets("ccc").Cells(gyo, 2).Text 取り出した『burank』が未登録(空白セル)になるまで続ける Loop While burank <> "" 最終行が求まったので、A3から対応するA列の最終行まで選択する ここで最終行は1行余分に数えているので『-1』している Range(Cells(3, 1), Cells(gyo - 1, 1)).Select コピーしてあったセルA2を貼り付け。これでB列のデータ分、算式『=B2&C2&D2』がセットされる ActiveSheet.Paste Application.CutCopyMode = False セルA2を選択 Range("A2").Select 要は、ブックaaaのデータ部分をブックbbbに貼り付けて、A列にB、C、D列の文字列結合をさせているのでしょう。メモ帳の中だけで書いています。実際に動かしていませんのでご承知おきください。
お礼
お忙しい所ありがとうございました。 参考になりました。またよろしくお願いします。
補足
応用が利かないので、少し教えてください。下記の意味を教えてもらえますか。 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
お礼
よくわかりました。ありがとうございました。