• ベストアンサー

エクセルVBAで セルの空白を識別する

早速ですが IF Application.ISBLANK(Q17)=TRUE Then って やると Q17 が 未定義エラーとなります。 セルに書き込む関数と VBAとは 異なるらしいのですが・・・イマイチでして。 VBで使う  ISNULLも 変数しか 受付ないようですので、一旦 tanka=cells(3,17) isnull(tanka) とやるようです。 VBAから 空白を 識別する方法は無いものでしょうか 厳密には 未入力 DELE SPACE すべて 空白でいいのですが 数字のゼロに 置き換えると ゼロの時に おかしくなりそうで・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば次のようにすればよいでしょう。 If IsEmpty(Range("Q17")) = True Then

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.2

IF Application.WorksheetFunction.ISBLANK(Range("Q17").Value)=TRUE Then とやってみてください。 ただ、ワークシート関数のISBLANKよりは、VBA関数のIsEmptyの 方がスマートなうえ、処理も早いですけど・・・。

007itochan
質問者

お礼

恐縮です。 IsEmptyの回答を頂いた方に・・・陳謝

関連するQ&A

  • 空白セルを空白と認識しない?

    範囲指定をしてジャンプで「空白セル」を実行すると、きちんとグレー反転するセルがあるのですが、 VBAで if Isnull(Cells(I,3) then… と指定すると、そうではないセルとして認識されています。 なぜでしょうか?

  • 空白セルと0値を識別させたい。(VBA)

    すみません、誰か教えていただけますか。 シートの53、54、55行目にそれぞれ値入っています。 それを3行目にビジュアル的に表現させています。 55行目はセルの色で、53行目は数値があり同じ値が 続く部分の合計を出しています。 しかし、下記の記述ですと数値が0(変数D=0)の時に うまくいきません。空白セルと認識されてしまうと思います。 何か、良い方法があれば教えて頂けませんでしょうか。 宜しくお願いします。 Sub 表示() Dim a As Long Dim c As Long Dim D As Long Dim e As String Dim f As String c = 3 For a = 3 To 64 With Worksheets("Sheet1") If .Cells(53, a) <> .Cells(53, a + 1) Then .Range(.Cells(53, c), .Cells(53, a)).Select D = WorksheetFunction.Sum(Selection) e = D f = Selection(1).Offset(1, 0).Value G = Selection(1).Offset(2, 0).Value If D <> 0 Then Selection(1).Offset(-50, 0).Value = f + "//" + e .Range(.Cells(53, c), .Cells(53, a)).Offset(-50, 0).Select Selection.Interior.ColorIndex = G End If If Selection(1).Value = "" Then .Range(.Cells(53, c), .Cells(53, a)).Offset(-50, 0).Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone End If c = a + 1 End If End With Next End Sub

  • VBAで関数を挿入したい

    VBAでISBLANK関数を Fomulaでシートに挿入したいのですが アプリケーション定義またはオブジェクト定義のエラーとなってしまいます。 ISBLANK関数をVBAで挿入するにはどうすればうまくいくでしょうか? 他にもISNULLやISEMPTYを試しましたがうまくいきませんでした。 どなたかご存知の方がいらっしゃいましたらアドバイスをお願いいたします。

  • 空白ならば vba エラーになる IsNull

    If IsNull(Forms("フォーム").Cntrols("年度別").Value) = True Then End If このコードは何がおかしいですか? 実行時エラー2465になってしまいます。 コントロールが空白なら文字を入れて、空白じゃないなら mystr = Forms("フォーム").Cntrols("年度別").Value のようにして、コントロールの値を変数に格納したいのですが、 エラーになる原因がわかりません。

  • エクセルVBA・時間値なら・・・

    早速ですが 入力された値が 時間かそれとも時間でないか識別したいのですが If IsDate(Cells(1, 2)) Then 日付はあるのですが If Istime(Cells(1, 2)) Then は 駄目なようです。 If TimeValue(Cells(1, 2)) Then ですと、True なら 良いのですが、逆だとエラーになります。 エラー回避で、識別するのも手ですが、 簡単な方法は無いのでしょうか

  • VBA

    VBA Cells(1, 2) = Cells(1, 1) Cells(1, 1)が 0の時  Cells(1, 2)を空白にする方法が知りたいです。 下記じゃない方法で if Cells(1, 1) = 0 then Cells(1, 2) = "" endif

  • VBA スペースが入力されていても、空白セルと判断する方法

    VBAで、空白ではないときに処理するようなマクロを組みたいのですが、空白のはずのセルにスペースが入っている場合があり、 IF cells(i,j)<>empty then のような記述では、スペースが入力されているセルも該当してしまいます。 スペースのみのセルを消去するか、それか、数値か文字列の何かが入力されていることを判断するような方法はありますか? よろしくお願いします。

  • VBAで「セルに何か入っている場合」

    EXCELでVBAを使いアプリケーションを作っています。 今「このセルに何か入っている(何でも良い。とにかく空でない)場合、この処理」という意味のプログラムを書きたいのですが、「このセルに何か入っている場合」の部分がどうしてもわかりません。null、isnull、emptyなど片っ端から試してみたり、逆に問題のセルが空欄の時にfalseになる変数を前もって設定して、その変数がtrueの時に処理させようとしたりしてみたのですが、すべてうまく行きませんでした。 解決法を教えていただけたら幸いです。

  • EXCELのVBAでセル値の移動でエラー

    EXCEL2002のVBAでセル値の移動をVBAでやりたいのですが (1)の様に1行は出来るのですが、(2)の様に2行を移動させるとエラー (実行時エラー1004 アプリケーション定義またはオブジェクト定義のアラーです。)が出てしまいます。 (2)のマクロでどうしてエラーが出るのか分かりません。 エラーを出さずに2行目を移動させる方法を教えてください。 (1)_________________________________________________ If Range("L1") <> detachn Then i = 9 While i >= 1 Cells(1, i + 13).Value = Cells(1, i + 12).Value i = i - 1 Wend Cells(1, 13).Value = Range("L1").Value datachn = Range("L1").Value End If (2)_______________________________________________ If Range("L1") <> detachn Then i = 9 While i >= 1 Cells(1, i + 13).Value = Cells(1, i + 12).Value Cells(2, i + 13).Value = Cells(2, i + 12).Value ←ここでエラー i = i - 1 Wend Cells(1, 13).Value = Range("L1").Value Cells(2, 13).Value = Range("L2").Value datachn = Range("L1").Value End If

  • 空白のセルを行削除する。EXCELマクロなのですが・・

    VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。  まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub

専門家に質問してみよう