VBAで複数の表の項目を集計する物を作成しようとしています。
図のように、空白行を含むセル範囲を取得したいのですがどのようにすればよいでしょうか?(緑の部分)
また表ごとに、行数が可変のためそれにも対応できるようにしたいです。
ご指導のほどよろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
右の表で「型番」が消えているのが気になりますが…
要件が許せば、該当の表を「テーブル」にするのが手っ取り早いです。
テーブルにすることで、範囲の管理をテーブルに任せることができ、列単位の参照も行いやすくなります。
vba
1'テーブルのあるワークシート 2Dim ws As Excel.Worksheet 3Set ws = Excel.ActiveCell.Worksheet 4 5 6'テーブルを取得 7Dim myTable As Excel.ListObject 8Set myTable = ws.ListObjects.Item("テーブルの名前") 9 10'テーブルの列の 11With myTable.ListColumns 12 '「項目名」のデータ部分から「備考列」のデータ部分までを取得 13 Dim rng As Excel.Range 14 Set rng = ws.Range( _ 15 .Item("項目名").DataBodyRange, _ 16 .Item("備考").DataBodyRange _ 17 ) 18End With 'myTable.ListColumns 19Stop
投稿2018/07/06 15:48
総合スコア2166
0
ベストアンサー
私もimihitoさん提案のテーブルにする案に賛成ですが、別案を。
表のSEQ項目には空白がないとするなら、
SEQのセル位置が A1 として、
vba
1 Dim ws As Worksheet 2 Dim r As Range 3 4 Set ws = ActiveSheet 5 Set r = ws.Range("A1").CurrentRegion 6 Set r = r.Offset(1, 1).Resize(r.Rows.Count - 1, r.Columns.Count - 1)
投稿2018/07/06 17:43
総合スコア33620
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
参加賞で、別案
VBA
1Sub test() 2 Dim Rng As Range 3 4 With activeaheet.Range("A1").CurrentRegion 5 Set Rng = Intersect(.Cells, .Offset(1, 1)) 6 End With 7 MsgBox Rng.Address(False, False) 8 Rng.Select 9End Sub
投稿2018/07/08 01:26
総合スコア2136
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/08 03:08
2018/07/22 02:56
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/22 02:56