
いつもお世話になっております。
ある列(例としてはA列)に「Rose」というデータが入っていたり無かったりしています。(他の列には何かしらのデータが入っています。)
A列に何も入っていなかった場合、別のマクロ(例として「test2」)へ移行するように組みたいのですが、空白の認識が上手くいきません。ご教授お願いいたします。
Sub test1()
r = Range("65536").End(xlUp).Row
For i = 2 To r
If InStr("Rose", Cells(nLine, 1)) = "" Then
Call test2
Exit Sub
End If
Next
End Sub
環境はwindowsXP Excel2003です。
よろしくお願いいたします。
No.5
- 回答日時:
>「Rose」というデータが入っていたり無かったりしています
>A列に何も入っていなかった場合
何も入ってなかった場合を検索する訳ですから、
Roseという文字列は何の関係もありませんね。
で、提示のコードのInstr関数は意味がないということになります。
そのInstr関数の使い方も間違ってますが、それを置いといて、
Instr関数は、「含む」かどうかを検索する関数です。
例えば、aaaRose、aaaRoseBBB、RoseXXXなど
空白かどうかを判断するなら、単純に
If Cells(i, "A").Value = "" Then
で十分です。
そしてまた、Roseを「含ない」ことを判断する場合は
If InStr(Cells(i, "A").Value, "Rose") = 0 Then
とか、
If Not Cells(i, "A").Value Like "*Rose*" Then
などとすればいいでしょう。
以上です。
ご回答ありがとうございました。
シンプルなコードのご提示ありがとうございます。
自分のコードがまだまだ無駄が多いと痛感でございます。
No.3
- 回答日時:
>Cells(nLine, 1))
nLineはこの行実行以前に定義して行番号の数値が入って居ないとおかしい。
なぜ突然nLineか?何かをコピーしたままか?
ーー
>InStr("Rose", Cells(nLine, 1)) = ""
Instr関数は文字列に該当が無ければ0を返す。
だからこの使い方はおかしい。
ーー
空白か?と聞くのにInstr関数は使わない。
ーーー
表題は
>空白なら別のマクロへ移動したい
だがそのことだけなら
Call test2
や
test2
でよいので、聞くまでもなく実現している。
後述するが空白処理後返ってこなくてもよいのか?
ーー
>Range("65536").End(xlUp).Row
の65536はどの列かを普通指定する。前列最終行が同じとは限らない。
Range("A65536").End(xlUp).Row
Sub test01()
r = Worksheets("Sheet1").Range("65536").End(xlUp).Row
MsgBox r
End Sub
はエラーになる。
質問のコードは、1度も実行もしてみないで質問したのか。
---
初めての空白セルが現れると、test2を処理して、終わっちゃうがそれでよいのか?普通は最終行まで何かを処理するのでは。
質問例では空白で無ければ、何もしてないので、これでよいのかな。
2番目のセルのRoseも見つけなければならないと思うから、何か変だ。
ーーー
もう少し解説書・WEBのコード例などの例を日ごろから勉強しないと、というレベルだと思う。
深夜にもかかわらず、ご回答ありがとうございました。
実際はものすごく長いコードの一部分だったので、その部分を引っ張ってきたのですが…
解りやすい質問の仕方は難しいです…が、これにくじけずに精進いたします。
No.2
- 回答日時:
上記回答の訂正です。
【誤】
If InStr("Rose", Cells(nLine, 1)) = "" Then の行を
If Cells(r, 1).value = "" or IsNull(Cells(r, 1).value) Then に変えてください。
【正】
If InStr("Rose", Cells(nLine, 1)) = "" Then の行を
If Cells(i, 1).value = "" or IsNull(Cells(i, 1).value) Then に変えてください。
No.1
- 回答日時:
>A列に何も入っていなかった場合、別のマクロ(例として「test2」)へ移行するように組みたいのですが、空白の認識が上手くいきません。
上記を満たせば良いのであれば
If InStr("Rose", Cells(nLine, 1)) = "" Then の行を
If Cells(r, 1).value = "" or IsNull(Cells(r, 1).value) Then に変えてください。
→ nLineという変数は添付されたコードのどこにも出現しませんが??
→ InStr関数は、ある文字列に対して指定した文字列が出現する位置を取得する関数なので、戻り値が""になることはあり得ないと思います。
関数については[URL:http://officetanaka.net/excel/vba/function/InStr …]が参考になるかと思います。
<引用>
InStr関数は、引数string1で指定した文字列の中から引数string2で指定した文字列を検索して、見つかった位置を返します。たとえば、InStr("ABCDEF", "DE")は4を返します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA 空白セルがあったらメッセージボックスで知らせたい
Visual Basic(VBA)
-
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
-
4
未記入がある場合はマクロを実行させない方法
その他(Microsoft Office)
-
5
Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです
Visual Basic(VBA)
-
6
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
7
マクロについて質問です 範囲内のセルが空白か調べるにはどのようなプログラムになるんでしょうか? セル
Visual Basic(VBA)
-
8
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
9
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
10
エクセルマクロ 【空白セルを無視する方法を教えてください】
Excel(エクセル)
-
11
エクセルマクロで特定の範囲が空白という条件
Excel(エクセル)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002
Visual Basic(VBA)
-
14
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
VBAで文字列を数値に変換したい
Excel(エクセル)
-
17
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
18
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
19
VBA 何かしら文字が入っていたら
Visual Basic(VBA)
-
20
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
VBAコンボボックスで選択した値...
-
rowsとcolsの意味
-
DataGridViewにリンク列の追加...
-
Worksheets メソッドは失敗しま...
-
VBAで、離れた複数の列に対して...
-
C# 列の挿入
-
VBAでのリスト不一致抽出について
-
二つのリストを比べて部分一致...
-
【VBA】複数行あるカンマ区切り...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
DataGridViewに空白がある場合...
-
【Excel VBA】カンマと改行コー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
VBA 何かしら文字が入っていたら
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
Changeイベントでの複数セルの...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
DataGridViewに空白がある場合...
おすすめ情報