マクロでCSVファイルを取込むプログラムを作成しております。
最終行を取得するソースまではできたのですが、最終列を取得する処理ができておりません。
教えて頂けないでしょうか。
処理概要
(1)ボタンを押したら、Sheet2にCSVファイルがインポートされる
(2)Sheet2に出力されたA2行~A8行とA2行~A8行の最終列までをSheet1のD4行~D10行、D4行~D10行の列にコピー
(3)Sheet2に出力されたA9行目はコピーしない
(4)Sheet2に出力されたA10行以降とA10行以降の最終列までをSheet1のA13行以降の最終列までにコピー
現在のソースは(2)、(4)の最終列を取得するソース以外はできています。
(2)、(4)の最終列を取得し、コピーする方法を教えて下さい。
現在のソースです。
Sub READ_TextFile()
Dim LoadFileName As String
Dim LR As Long
'選んだcsvファイルをSheet1に読み込む
LoadFileName = Application.GetOpenFilename("CSVファイル(*.csv),*.csv", 1, "読み込むcsvファイルを選んで下さい", False)
If LoadFileName = "False" Then Exit Sub
Workbooks.Open LoadFileName
Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1")
ActiveWorkbook.Close False
'Sheet2のA2:A8をSheet1のD4を先頭セルとする範囲にCopy
Worksheets("Sheet2").Range("A2:A8").Copy Worksheets("Sheet1").Range("D4")
'Sheet2のA列のデータのある最終行を取得しLRという変数に入れる
LR = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
'Sheet2のA10からA列の最終行までをSheet1のA13を先頭セルとする範囲にCopy
Worksheets("Sheet2").Range("A10:A" & LR).Copy Worksheets("Sheet1").Range("A13")
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
2:8行の最終セルと10行以降の最終セルをきっちりと分けて判定する必要がある場合は
Sub test()
Dim r As Range
Dim rr As Range
With Worksheets("Sheet2")
Set r = .Rows("2:8").Cells
'2:8行間の最終列のセルを取得
Set r = r.Find(What:="*", _
After:=r(1), _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchByte:=False)
If Not r Is Nothing Then
If r.Column >= .Columns.Count - 3 Then
MsgBox "error"
Else
Set r = .Range("A2:A8").Resize(, r.Column)
MsgBox r.Address
End If
End If
'10行以降のデータ範囲を取得
Set r = Intersect(.Rows("10:" & .Rows.Count), .UsedRange)
If Not r Is Nothing Then
'念のためA10起点でSetし直し
Set r = .Range("A10", r.Cells(r.Count))
'10行以降のデータ範囲内の最終列のセルを取得
Set rr = r.Find(What:="*", _
After:=r(1), _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchByte:=False)
Set r = r.Columns(1).Resize(, rr.Column)
MsgBox r.Address
End If
End With
End Sub
..こんな感じになりますが
アバウトで構わなければ
Sub test2()
Dim r As Range
With Worksheets("Sheet2")
Set r = .UsedRange.SpecialCells(xlCellTypeLastCell)
MsgBox .Range("A2:A8").Resize(, r.Column).Address
If r.Row > 9 Then
MsgBox .Range("A10", r).Address
End If
End With
End Sub
..これで良い場合もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
URLのリンク切れをマクロを使っ...
-
Cellsのかっこの中はどっちが行...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
VBAでのリスト不一致抽出について
-
【VBA】2つのシートの値を比較...
-
【Excel VBA】 B列に特定の文字...
-
【VBA】複数行あるカンマ区切り...
-
vba 2つの条件が一致したら...
-
エクセルVBA intersect colu...
-
VBAで10行おきにセルの下に罫線...
-
DataGridViewに空白がある場合...
-
VBAで重複データを確認したい
-
IIF関数の使い方
-
VBAを使って検索したセルをコピ...
-
Changeイベントでの複数セルの...
-
エクセルVBA シートモジュール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
データグリッドビューの一番最...
-
文字列の結合を空白行まで実行
-
rowsとcolsの意味
-
VBAを使って検索したセルをコピ...
-
VBA 何かしら文字が入っていたら
-
Changeイベントでの複数セルの...
-
【Excel VBA】 B列に特定の文字...
-
【VBA】2つのシートの値を比較...
-
【Excel VBA】カンマと改行コー...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
おすすめ情報