エクセル2003VBAを使ったプログラミングをしています。
シートにデータが入っていますが途中入っていないセルが多々ある状況です。
このような場合、
1.データの入っている一番したの行の行番号を取り出す方法
2.ある行で一番右側でデータの入っているセルの位置を取り出す方法
はありますでしょうか?
データが続いている(空の行等がない)場合は
Range("A1").CurrentRegion.rows.Count
で出せることはわかっているのですが、違う表のようにデータがあちこちにあるという状況です。
何かいい方法がありましたら教えてください。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
↓は、数式あるいは値が入力されているものを最終セルとして取得します。
書式が何か設定されていても、それを最終セルとは認識しません。>1.データの入っている一番したの行の行番号を取り出す方法
Sub test()
Dim Rng1 As Range
Dim Rng2 As Range
Set Rng1 = Cells
With Rng1
Set Rng2 = .Find(What:="*", after:=.Cells(1), LookIn:=xlFormulas, _
Searchorder:=xlByRows, SearchDirection:=xlPrevious)
End With
If Not Rng2 Is Nothing Then
MsgBox "データの入っている一番したの行の行番号は" & Rng2.Row & "です。"
Else
MsgBox "データが何も入力されていません。"
End If
End Sub
>2.ある行で一番右側でデータの入っているセルの位置を取り出す方法
Sub test2()
Dim Rng1 As Range
Dim Rng2 As Range
Set Rng1 = Rows(5)
With Rng1
Set Rng2 = .Find(What:="*", after:=.Cells(1), LookIn:=xlFormulas, _
Searchorder:=xlByRows, SearchDirection:=xlPrevious)
End With
If Not Rng2 Is Nothing Then
MsgBox Rng1.Row & "行で一番右側でデータの入っているセルの位置は" & Rng2.Column & "列目です。"
Else
MsgBox "データが何も入力されていません。"
End If
End Sub
参考URL:http://www2.odn.ne.jp/excel/waza/macro.html
No.5
- 回答日時:
ANo.4で回答したものです。
ANo.4は補足でおっしゃった↓の二つの条件をクリアしているマクロです。試してみてください。
>書き忘れてしまいましたがセルにはすべて(データの入っていないセルも)罫線が入っています。
>その中で、値が入っているセルもしくは背景色が指定されているセルの末端位置を特定したいのです。
>データがばらばらに入っているためA列の一番下が全体の一番下の行かわからない状態です。
>何列目が一番下の行まで入力されているかわからない状態です。
何度もありがとうございます。
塗りつぶしがあるとそこを一番右下と認識しませんが後はかなりいい感じです。
コレを元に何とかしたいと思います。
No.3
- 回答日時:
こんなのどうですか。
Sub get_right_bottom_cell()
Dim lastcell As Range, rightcell As Range, bottomcell As Range
Dim rr As Integer, rc As Integer, rb As Integer, cb As Integer
Set lastcell = Selection.SpecialCells(xlCellTypeLastCell)
Set rightcell = Range(lastcell.Address).End(xlUp)
Set bottomcell = Range(lastcell.Address).End(xlToLeft)
' rr = rightcell.Row
' cr = rightcell.Column
' rb = bottomcell.Row
' cb = bottomcell.Column
'
' Debug.Print rr, cr, rb, cb
'
' MsgBox rightcell.Address & " " & bottomcell.Address
Union(rightcell, bottomcell).Select
End Sub
コメント行は必要なものを選んでください。
No.2
- 回答日時:
以下のコマンドでは
Range("B65536").End(xlUp).Activate
B列に最後(65536行目)から上移動して空白でない行
Range("IV2").End(xlToLeft).Activate
2列名の最後の列(IV)から左へ移動して空白でない列
この回答への補足
ご回答ありがとうございます。
データがばらばらに入っているためA列の一番下が全体の一番下の行かわからない状態です。
何列目が一番下の行まで入力されているかわからない状態です。
また、No1の方の補足にも書きましたが塗りつぶしがあります。
塗りつぶしをやめてもらうべきなのかなあ。
大雑把に今作っているものについて説明すると、着席表のようなものを作っています。
会場がシートそのもので人がいる位置に名前、柱や機材など人がいられないところを塗りつぶし、そのシートを元に色々処理をするというものです。(椅子、機材の場所が決まっていないためデータが飛び飛びになる)
塗りつぶし範囲(無効な場所)が多いため、「無効」「柱」等文字列で入力するのが見づらいし、うざいということで塗りつぶしとなっています。
最大で8000人分入力することもあり罫線をとるのも分りづらいということで却下されています。
何かいい案がありましたらお願いいたします。
No.1
- 回答日時:
この回答への補足
ご回答ありがとうございます。
UsedRangeプロパティが今回の対象のものと思いますがうまくいきません。
書き忘れてしまいましたがセルにはすべて(データの入っていないセルも)罫線が入っています。
その中で、値が入っているセルもしくは背景色が指定されているセルの末端位置を特定したいのです。
こうなってしまうとやはりすべてのセルの確認をしないといけないのでしょうか?
それとも、入力時もVBAを使うことが可能なのでシートにVBAを埋め込んでおいて操作したセルを保存しておくというのが現実的なのでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
直近の5個の平均を求めたい
-
[EXCEL]ボタン押す→時刻が表に...
-
【Excel関数】UNIQUE関数で"0"...
-
アクティブになっている行をマ...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
【EXCEL】連続データの個数を抽...
-
エクセルで特定の文字列が入っ...
-
Excel 時刻の並び替え
-
エクセルのセルに指定画像(.jpg...
-
チェックボックスをクリックし...
-
セルの色によって条件文をつけ...
-
エクセル マクロ オートフィ...
-
エクセル2016で時間を入力して...
-
電話番号の入力方式が違うデー...
-
このような複雑な表をワードで...
-
エクセルで、ポインタのある行...
-
Excel マクロで特定のセルに入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
AのセルとB行を比較して、一致...
-
エクセル 上下で列幅を変えるには
-
Excel ウインドウ枠の固定をす...
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
エクセル2016で時間を入力して...
-
excel 小さすぎて見えないセル...
-
EXCELで最後の行を固定
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
エクセルマクロで偶数行(又は...
-
エクセルのセルに指定画像(.jpg...
-
罫線の斜線を自動で引くマクロ
おすすめ情報