• ベストアンサー

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を使っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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

maru_v66v
質問者

お礼

希望どうりの範囲選択が出来ました。 私が書いていたのと似ているようだけど、 全然別物ですね。すごいです。 なにがどーなっているのか、これも紐解き頑張ってみます。 どうもありがとうございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

最初の「<小計>」までを選択するなら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文で囲めば繰り返し「<小計>」までの行を選択できます。

maru_v66v
質問者

お礼

貼り付けてテストしてみたら、A列だけの選択でした。 H列までとなると、もっとコードが必要なのでしょう。 このマクロがどういう仕組みなのか、 頑張って紐解いて、今後の参考にします。 ありがとうございました。

関連するQ&A