- ベストアンサー
Excelマクロ 範囲指定について教えて下さい。
ソフトから書き出したテキスト形式のファイルを、エクセルで読み込んで範囲を指定し、 他のブックのシートに貼り付けるという、いつもの作業をマクロで簡素化しようと、 マクロ初心者の私は、マクロの自動記録と、インターネットで調べたりで作っているのですが、 範囲指定でつまづいています。 読込んだファイルには、A列からH列までデータがあります。 行のほうは、その都度変わります。 A列を下に見ていくと、途中<小計>という文字が何度か出てきます。 左上端がA4として、そこから初めての<小計>がある行の1段上の行までで 範囲指定させることは出来るのでしょうか? 例えば、A20に<小計>があるなら、指定範囲を A1:H19 という具合に するのはどうしたらいいですか? 下のマクロでは、H列の右下端まで全部範囲指定するので、ダメですね。 Dim 左上端 As String, 右下端 As String Windows("aaa.txt").Activate Worksheets("aaa").Select 左上端 = "A4" 右下端 = Range(左上端).SpecialCells(xlLastCell).Address Range(左上端 & ":" & 右下端).Select Selection.Copy Windows("bbb.xls").Activate Sheets("bbb").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Excel2003を使っています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか・・・。 Sub TEST() Dim 左上端 As Range, 右下端 As Range Windows("aaa.txt").Activate Worksheets("aaa").Select Set 左上端 = Range("A4") Set 右下端 = Columns("A:A").Find(What:="小計", After:=Range("A4"), LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows) Range(左上端, 右下端.Offset(-1, 7)).Copy Windows("bbb.xls").Activate Sheets("bbb").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
最初の「<小計>」までを選択するならMATCH関数を利用する方が高速だと思いますが、繰り返し処理を行いそうな感じがしますのでFor文で書きました Sub Macro() Dim idx, StartR As Long StartR = 1 '開始行を指定 For idx = StartR To Range("A65536").End(xlUp).Row If InStr(Cells(idx, "A"), "<小計>") > 0 Then Range(Cells(StartR, "A"), Cells(idx - 1, "A")).Select StartR = idx + 1 '繰り返し処理のための予備的な行です Exit For End If Next idx End Sub 全体をDo~Loop文で囲めば繰り返し「<小計>」までの行を選択できます。
お礼
貼り付けてテストしてみたら、A列だけの選択でした。 H列までとなると、もっとコードが必要なのでしょう。 このマクロがどういう仕組みなのか、 頑張って紐解いて、今後の参考にします。 ありがとうございました。
お礼
希望どうりの範囲選択が出来ました。 私が書いていたのと似ているようだけど、 全然別物ですね。すごいです。 なにがどーなっているのか、これも紐解き頑張ってみます。 どうもありがとうございました。