シートに記載された最終列の番号を取得したく、以下のコードを作成しました。
Dim r As Range Dim last As Range Set r = Worksheets("城").UsedRange.Select last = Range("r").Column
ステップインで確認すると1行目は機能していて、2行目は「オブジェクトが必要です」と表示されます。
rは範囲(Range)なので機能すると思ったのですが・・・
改善方法、アドバイスいただければありがたいです。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
vba
1 Dim r As Range 2' Dim last As Range 3' 列番号は数値なので Range型ではなく、Long型 4 Dim last As Long 5 6' Set r = Worksheets("城").UsedRange.Select 7' .Select が不要、Select はメソッド(選択するという動作)であってオブジェクトではない 8 Set r = Worksheets("城").UsedRange 9 10' last = Range("r").Column 11' Range("r") などという指定はできない 12 last = r.Columns(r.Columns.Count).Column
最終列の番号取得には他にもいろいろな方法があります。
また、注意点もあります。下記に詳しく解説されています。
最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)|VBA技術解説
上記でも解説されてますが、UsedRange だと書式を設定(罫線とか背景色等)すると、そこも範囲になります。
データが入力されている領域の最終列ということなら、CurrentRegion を使った方かいいでしょう。
投稿2020/08/06 13:22
編集2020/08/06 13:55総合スコア34075
0
下記コードで正しく動きます。
Dim r As Range Dim last As Range Set r = Worksheets("城").UsedRange last = r.Columns(r.Columns.Count)
質問者様のコードがエラーになる原因
1.Set r = Worksheets("城").UsedRange.Select
まず、これは.Selectの戻り値がRangeオブジェクトではないためエラーが発生します。
2.last = Range("r").Column
まず、Range("r")と()内に"r"を入れていますが、これはアドレスとして不正な文字列なのでエラーになります。
おそらく、変数rのセル範囲を参照したかったのだと思いますが、使い方を勘違いされているようです。
そして、.Columnの戻り値はLong型であり、列番号を返すメソッドであるため、Range型の変数に代入できません。
投稿2020/08/06 13:56
総合スコア305
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 14:07
2020/08/06 14:07
2020/08/06 14:15
0
少し情報が足りない気がします。
シートに記載された最終列の番号とありますが、
Worksheets("城").UsedRange.Select
というコードの場合、例えばデータの始まりがB2セルで始まった場合、
1行目とA列は範囲選択から無視されます。その上で、指定された範囲内の列番号が必要なのか、
それともA1から数えた列番号が欲しいのか…その辺りが曖昧です。
また、必ずA1からデータがスタートし、空欄などもなくデータが並んでいるのであれば、
質問者さんの方法でなくとも
VBA
1Dim l as Variant 2Range("A1").End(xlToRight).Select 3l = Selection.Column
などで一番右端の列が取得できるのでこのように列番号を拾ってやればいい気もします。
なんとなくですが、質問者さんのやりたいことはこのサイトに記載されている内容で解決しませんか?
投稿2020/08/06 13:47
編集2020/08/06 13:49総合スコア230
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 13:30
2020/08/06 14:02