• ベストアンサー

Excel VBAで、セルに入ってるデータ型を調べる方法は?

現在、Excel VBAでプログラムを作成しています。 Do Until ~ Loop の終了条件を アクティブセルに入っているデータの型が文字列型の時 としたいのですが、そのようなことは可能なのでしょうか? 可能だとしたら、どのように記述したらいいのでしょうか? 当方のPCは Win XP、Excel2003 です。 よろしくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

VarType 関数を使うとか。 Sub SampleProc()   Dim i As Long      i = 1   Do While Len(Cells(i, "A").Value) > 0     If VarType(Cells(i, "A")) = vbString Then       Exit Do     Else       ' // 処理     End If     i = i + 1   Loop   MsgBox CStr(i) & "行目で停止" End Sub

lovensis
質問者

お礼

ご回答有難うございます。 お答えいただきましたコードを参考に 解決することができました。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

MsgBox TypeName(ActiveCell.Value)

lovensis
質問者

お礼

ご回答有難うございます。 お答えいただきましたコードを参考に 解決することができました。

関連するQ&A

  • Excel VBA 時刻でのDo~Loopの抜け方

    いつもお世話になっております。 Excel VBA 時刻でのDo~Loopの抜け方を教えてください。 下記のような記述で、時刻(時間)の条件を満たした時 ループを抜けるように設定したのですが、 時刻が「8時」とか「15時」というように 時間でしか対応しません。 「何時何分」という設定にも対応するためには どのように記述すればよいか教えてください -------の部分は何らかの記述が入っているものとしてください。 ↓このように記述しました Do Until MyHour > 15 MyHour = Hour(Now) ------------------- -------------------- -------------------- Loop どうぞ、よろしくお願いします。

  • 【VB】セルが空になるまで処理を繰り返したい

    Excel VBAを使用してです。 列Aにデータがずらっと入っています。 そのデータを列Bに、 Do while ~loop か Do until ~loopを使って データが無くなるまでコピーするという処理を書きたいのです。 VB歴が浅いためひらめきません。よろしくお願いします。m(__)m

  • エクセル VBA

    エクセル VBA 指定セルがNULLじゃない場合、セルを横に1つずつずらしていきNULLのセルで抜けるVBを作りたいです。 Do Until IsNull???? loop

  • Excel VBA セルの指定の方法

    VBAの初心者です。処理1 のサブルーチンを使わずに直接記述すれば、エラーはでませんが、以下のように記述すればエラーが出てしまいます。宜しくお願いします。 Sub Macro10() i = 1 Do Until Cells(i, 1) = "" 処理1 i = i + 1 Loop End Sub Sub 処理1() Cells(i, 2).Select  ← ここでエラーになります。        ActiveCell.FormulaR1C1 = "◎" End Sub

  • アクセスVBAでデータを検索したいのですが、

    アクセスVBAでデータを検索したいのですが、 エクセルVBAのcells(i,1)にあたるようなものはないでしょうか。 添付画像のような信号を抽出したいので、立ち上がりの部分をさがしたいのですが。 ご存知のかた教えてください。 i=1 Do until cells(i,1)>=4 i=i+1 Loop 開始レコード=i データテーブルの1列目は行番号、2列目は信号が入っています。

  • 【VBA】DoUntil Loopを1度のみ実行

    いつもお世話になっております。 Excel2003を使用しております。 「この条件になるまで続行」というのは Do Until Loop だと思うのですが、 ループをしたくないけれど Do Until Loop を利用したい場合(条件になったら即終了したい) Do Until Flag=True 実行したいこと 実行したいこと2 実行したいこと3 Exit do Loop また、やりたいこととしては、 FlagがTrue になったら、プロシージャから抜けたいと思っています。 その場合は、 Do Until Flag=True  実行したいこと  実行したいこと2  実行したいこと3  Exit do Loop If Flag=True Then   Exit sub End if このように、別々?に書く以外に方法はないでしょうか? 出来れば、簡単なIF文で実行できないかと思ったのですが… 話がごちゃごちゃしていて分かりにくいので、質問事項のみまとめますと、 ● 条件になったら終了させる。 これは、Do~Loop 、For Next のみの動作でしょうか? ● ループから抜けると同時にSubを終了させるには、ループの外にIF文を書くしかない? 以上、よろしくお願い致します。

  • VBA withの使い方

    VBAの参考書で勉強をしていますが、withの使い方で引っかかっているので、どなたかご教授ください。Excel2002 よくある見積書の表で、横方向の掛け算を行方向下に連続して行おうとしています。 C列-数量 D列-単価  E列に、C列の数量×D列の単価 をVBAで行の先頭から下方向に順番に計算する。 その際に、C列の数量のセルが空白だったら何もせず終了という下記のループの方法が 参考書に書いてあります。(セルE14がE列の計算する最初のセル) Range("e14").Select Do Until ActiveCell.Offset(0, -2).Value = "" With ActiveCell .Value = .Offset(0, -2).Value * .Offset(0, -1).Value .Offset(1, 0).Select End With Loop 上記のwithの位置をDo~Loopの外に出して以下のように書き換えたら、 Range("e14").Select With ActiveCell Do Until .Offset(0, -2).Value = "" .Value = .Offset(0, -2).Value * .Offset(0, -1).Value .Offset(1, 0).Select Loop End With 最初のセルE14は正しく計算処理をするが、1つしたのセルにアクティブセルが移動した後、永久ループに入ってしまいます。 「デバック」ボタンをクリックすると[.Offset(1, 0).Select]の行が黄色くなっているのですが、どこに問題があるのかが分からない状態です。 お手数ですが、よろしくお願いします。

  • 2重のDo~Loopは?

    Excel VBAですが、A列にデータが入っています。 A列のデータが変わるまで 処理1 を実行し、変われば 処理2 を実行する。データがなくなれば終了する方法が分りません。宜しくお願いします。 i = 2 Do Until Cells(i, 1) = "" Do Until Cells(i, 1) <> Cells(i - 1, 1) 処理1 Loop 処理2 Loop

  • VBA

    VBA データを最後の行まで読むのに do until worksheets("sheet1").cells(a,1) = ""     a = a+1 loop と、かっこ悪いプログラムで作成してるのですが もっとかっこいいプログラムありますか?

  • ExcelのVBAに詳しい人に質問です

    表などでアクティブセルの行や列を目立たせるために、下記URLを参考に条件付き書式とVBAを合わせた技を使用しているのですが、アクティブセルを移動するたびにExcel表が点滅?するので、これをどうにか点滅しないようにしたいのですが出来ますでしょうか。 Application.ScreenUpdating = True を使っているのが原因だと思うのですが、無理でしょうか。 ・アクティブセルのある行・列を目立たせる http://www.relief.jp/itnote/archives/001406.php

専門家に質問してみよう