下記の様なマクロがあります。意味が理解できていません。
教えてもらえないでしょうか。
Windows("aaa.XLS").Activate
Dim tbl, gyo, burank
Range("i4").Select
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select
Stop
Selection.Copy
Windows("bbb.XLS").Activate
Sheets("ccc").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("A2").Select
Application.CutCopyMode = False
ActiveCell.Formula = "=B2&C2&D2"
Range("A2").Select
Selection.Copy
gyo = 0
Do
gyo = gyo + 1
burank = Worksheets("ccc").Cells(gyo, 2).Text
Loop While burank <> ""
Range(Cells(3, 1), Cells(gyo - 1, 1)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
No.1
- 回答日時:
日本語にしてみました。
ブック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
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画面で、表示→オブジェクトブラウザで調べると、意味が理解できると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
エクセル 足して割る
-
エクセル オートフィルタで絞...
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
Excelで住所を2つ(町名迄と番...
-
Excelでのコメント表示位置
-
複数のセルのいずれかに数字が...
-
Excelのチェックボックスの使い...
-
Excel2003 の『コメント』の編...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
枠に収まらない文字を非表示に...
-
Excel:指定セル以下全てのセル...
-
エクセルのセルの枠を超えて文...
-
セルに特定の色が付いていたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報