エクセル2000関連でVBAを勉強し始めました。
A1~C3まで列の名前が入っていて、
A2~C2列以下(データを入れるのはA3~C3,
A4~C4・・で、どの行までデータが入っているかは
分からない状態)が空白か
どうかを調べたい時にはどう書けばよろしいのでしょうか?
・A65536~C65536まで選択し
・上向きにデータが存在するかどうかを調べていって
・最終的にActiveになっている行番号が1であれば
A2~C65536までは空白。
1じゃなければ、データがどこかに存在する。
という方法で調べようかと思ったのですが、
Dim Line As Integer
Range("A65536:C65536").Select
Range(Selection, Selection.End(xlUp)).Select
Line = Selection.Row
でLineの値で判別しようかと思ったのですがうまく
いきません。何が間違っているのでしょうか?
また、より効率的な方法があったら教えていただき
たいです。お願いします。
No.5ベストアンサー
- 回答日時:
すみませんさっきの回答って意味不明でした。
すみません(汗)責任とってコード書きます。(って処理多すぎ… )
Sub macro1()'← 一例です。
Dim a$ , a1$ , b$ , b1$ , c$ , c1$ , ln%
Dim chk As Boolean
chk = True
ln% = 65537
Do While chk = True
ln% = ln% - 1
If ln% = 0 Then Exit Do
a1$ = "a" & Trim$(str$(ln%))
b1$ = "b" & Trim$(str$(ln%))
C1$ = "c" & Trim$(str$(ln%))
a$ = Range(a1$).Value
b$ = Range(a2$).Value
C$ = Range(a3$).Value
chk = LenMbcs(a$) = 0 And LenMbcs(b$) = 0 And LenMbcs(C$) = 0
Loop
MsgBox = (ln% & "行目までデータが入力されています。")
End Sub
Function LenMbcs(ByVal str As String)
LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function
として下さい。
下からA列、B列、C列のいずれにもデータが入力されていなければ、
(いずれもバイト数が0であれば)
一つ上の行を調べ、それでも入力されていなければ…
…を繰り返し、いずれかの列に文字が入力されている行を見つけると、
その行番号をメッセージボックスで伝えてくれます。
これでいける……はず。なんせ初心者なもんで。(汗)
不足があれば応用して下さい。
注意:空白文字(" "や" ")が入力されているセルも「入力されているセル」と判断します。
一部、VBのヘルプから引用しています。(LenMbcsの所)
Macでは不都合を起こします。(Unicodeが無い…らしい)
回答ありがとうございます。
今回は、A列、B列、C列それぞれの列で一番下の行番号を
出し、一番大きい番号を導く、という方法をとりました。
紹介していただいた方法はかなり私には難解なんですが、
また試してみたいと思います。
No.4
- 回答日時:
「範囲内の空白セル(空白文字が表示されているセルも含む)の数を返す」
という機能を持つ、
エクセルが用意している関数”countblank”を利用しましょう。
dim a%
a = Application.WorksheetFunction.CountBlank(Range("A2:C65536"))
とします。
これでaが1以上ならデータが入ってるって事で、0なら無いって事ですね。
あとは条件分岐で処理するだけですね。
あとc65536は変数にすれば変更できますよね?
ちなみに空白セルやデータの入っているセル番地を取得するには
別の方法でないといけませんが。
No.3
- 回答日時:
こんにちは。
maruru01です。A~C列は常に同じ行にデータが入っているとしていいですか?
そうするとたとえばA列だけ見ればいいと思います。
したがって、
Dim Line As Long
Range("A65536").End(xlUp).Select
'Excel2000以外のバージョンでは、総行数が違うことがあるので、
'Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Select
Line = Selection.Row
If Line > 1 then
MsgBox("データ有り")
Else
MsgBox("データ無し")
End If
これでは出来ませんか。
もちろん、A~C列の下の方に関係ないデータが入っていたらダメですけどね。
では。
回答ありがとうございます。
今回は一つの列だけデータが入っていたり、
離れたデータも見つけるプログラムを作りたかったので、
A列、B列、C列それぞれの列で一番下の行番号を出し、
一番大きい番号を導く、という方法をとりました。
またよろしくお願いします。
No.1
- 回答日時:
毎回、シートが綺麗に初期化されていることが前提です。
'セルA3を選択する
Range("A3").Select
'使用されている(された)最後のセルまで選択する
Line = Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Rows.Count+2
ではいかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
数式が入ったセルを含めて、数...
-
SUMに含まれる範囲から特定のセ...
-
エクセル:横長の表を改行して...
-
スペースとスペースの間の文字...
-
別のセルに値が入力されたら、...
-
エクセルで小数を含む数値の抽出
-
セルをダブルクリックで、画像...
-
C列にF列の担当者(A〜)を順番...
-
エクセルでセルの値分の個数の...
-
エクセルで表示されている数字...
-
Excel上でのデータ数字が連番で...
-
エクセルにデータを入力すると...
-
EXCELで一行おきの平均を...
-
エクセルで1列全部10倍したい
-
文字(数字)色別に計算するには?
-
エクセルで住所の番地順に並べ...
-
「エクセル」特定の行(セル)...
-
エクセル セル内の文字数を超え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
数式が入ったセルを含めて、数...
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
エクセルでセルの値分の個数の...
-
エクセルで1列全部10倍したい
-
別のセルに値が入力されたら、...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルで、毎日の走行距離(...
-
Excelのセル内文字の並び替えに...
-
エクセル セル内の文字数を超え...
-
エクセルのsumifでかけ算してか...
-
エクセルで小数を含む数値の抽出
-
時間を「昼間」と「夜間」に分...
-
EXCELの特定セルを編集不可・コ...
おすすめ情報