ここから本文です

ExcelVBAで「最終行のある列番号を取得」するにはどうすればよいでしょうか?

kmy********さん

2019/3/2613:01:47

ExcelVBAで「最終行のある列番号を取得」するにはどうすればよいでしょうか?

シートの中で一番長い列を探して、A2の値をその行まで伸ばしたいのですが
●の部分をどうすればよいか分かりません。

VV = Cells(Rows.Count, ●).End(xlUp).Row
Range("A2") = UserForm1.TextBox1.Value
Range("A2").AutoFill Destination:=Range("A2:A" & VV), Type:=xlFillCopy


またはほかに良いやり方をご存知でしたらご教示くださいm(__)m
よろしくお願いいたします。

閲覧数:
39
回答数:
2

違反報告

ベストアンサーに選ばれた回答

unk********さん

2019/3/2614:35:57

Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Column

みたいな。

質問した人からのコメント

2019/3/26 15:42:19

ありがとうございます。
ワイルドカードを使用するとは思いつきませんでした。
ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

kab********さん

2019/3/2614:20:29

面倒かもしれませんが、愚直に1列ずつ調べるほか方法はないように思うけれど・・・
どうかな?

『シートの中で一番長い列を探して』って書いてあるけれど、さすがにXFD列(16384列目)までじゃないよね?
いや、最悪そうだったらそこまで調べるしかないんだけれどね。

'***初期化***
MaxClm = 0

'***B列から調べたい最終列まで***
For i = 2 To 最終列 Step 1
TmpClm = Cells(Rows.Count, i).End(xlUp).Row

'***直近で調べてた行数が、前に調べた行数より大きい場合 入れ替え***
If MaxClm < TmpClm Then
MaxClm = TmpClm
End If
Next i

'***質問者さんのロジックそのまま使用***
Range("A2") = UserForm1.TextBox1.Value
Range("A2").AutoFill Destination:=Range("A2:A" & MaxClm),Type:=xlFillCopy


たぶん、一発で調べるやり方ってのはないと思うんだよね。あんのかな?
んで、ボクが思い付いた方法はFor文を使って片っ端から調べるってやり方ね。

最終列 ← 決まってんなら、そのまま数値を入れちゃって固定しても良いだろうし
仮にシート毎に最終列が決まってないよってんなら、1行目の最終列を調べてそれを変数へ格納して、その変数使えば問題ないと思う。

こんなやり方じゃダメかしらね?

我ながらちょっと冗長な感じがするからなぁ・・・
他の人で一発で求めるやり方とか、もっと効率良いやり方出てくるといいねぇ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる