• ベストアンサー

数字かどうかを判断させたい

 コンボボックスから選択されたテキストオブジェクト名は(cmbNyuです)が数字かどうかを判断さたいのですが、エクセルでゆうisnumberのような関数はないのでしょうか?  ifを使ってもしcmbNyuが数字なら、と言う条件式を作りたいのです。しかし、cmbNyuは For i = 1 To matsu cmbNyu.AddItem (i & "日") cmbTai.AddItem (i & "日") Nextとしてるため"日"が入っています。(i & "日")全体で数字と見なす、もしくわ、日の部分は判定しないようにしたいです。どうすればいいでしょうか? よろしくお願いします。

  • rufas
  • お礼率75% (315/420)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 IsNumeric関数ですね。 "日"が後ろに付いているなら、Left関数で取っ払えばいいでしょう。 (左から文字列長-1だけ取り出す) したがって、 If IsNumeric(Left(cmbNyu, Len(cmbNyu) - 1)) Then (数値だった場合の処理) End If となります。 ちなみにIsNumeric関数は、 1.2E+10 のような指数表現も数値と見なしますので注意して下さい。 では。

rufas
質問者

お礼

有難うございました。Left関数とLen関数がわからなかったのでこれを調べてやってみたら出来ました!!最初isNumberかな、is numericかなとかいろいろやっていました。スペースなしのisnumericだったんですね。わかりました。有難うございました。

その他の回答 (2)

  • haporun
  • ベストアンサー率40% (230/562)
回答No.3

単位を含んだような文字列を数値に変換したいときは、Val関数を使ってください。 Debug.Print Val("5日") で5が表示されます。

rufas
質問者

お礼

なるほど!数値に変換してから判定すればいいのですね?有難うございました。

  • borick
  • ベストアンサー率33% (16/48)
回答No.1

IsNumeric関数というのがありますよ。式が数値として評価できれば真、文字等の場合には偽になります。IsNumeric(Text1.Text)のように使うことができます。

rufas
質問者

お礼

お早い回答有難うございまいした。やってみたら出来ました。またお願いします

関連するQ&A

  • コンボボックスにdateで取得した月の日数分を表示したい

     プログラム初心者です。VBAなのですが、エクセルから取得してきたある月の日数分だけの日付をコンボボックスに追加したいのですが、どうしたらいいでしょうか?    その月の末日をmatsuとしていろいろ考えてみましたが、どうもわかりませんでした。 matsu=Day(DateSerial(年,月,1)  ←年と月は可変です。 これを工夫してある月の末日を取得したと考えています。これを For i = 1 To matsu cmbNyu.AddItem (i & "日") cmbTai.AddItem (i & "日") Next i でコンボボックスに追加・・・とうゆう予定なのですが・・・?この方法じゃなくてもいいので何か方法がありましたらどんなことでもいいのでお力をお貸しください。よろしくお願いします。 

  • ExcelVBA:コードを少なくする方法

    例えば、コンボボックスでオブジェクト名が「コンボ1」「コンボ2」「コンボ3」の3つがあったとします。 全てのコンボボックスに「10」「45」「92」のリストを入れたいとき、 With コンボ1 .Additem 10 .Additem 45 .Additem 92 End With というように「コンボ2」「コンボ3」も同じようにコードを書いてるのですが、コードを少なくする方法を教えてください。 もう一つ、オブジェクト名に「(*)」(*は数字)を含んだ名前を作ることがなぜできないのでしょうか? 回答よろしくお願いします。

  • Excel:VBAでコンボボックスを活用する方法

    はじめまして。Excel2000でアンケートシートを作りたいと思っています。 その回答をコンボボックスから選ぶようにしたいのですが、「違う質問だけど同じ選択肢」というのがたくさんあるので簡潔にしたいのです。 このサイト等ネットで調べるとコントロールに変数を持たせる方法として Control(ComboBox & i)とか Me(ComboBox & i) というのを目にしましたが、どちらもこの状態には該当しないのかうまくいきませんでした。 コンボボックスごとにソースを作るしかないのでしょうか? 理想としてはforループでコンボボックスの回数だけ回して、if文でComboBox1と3と4と7には○○○、2と5と6には△△△を表示するようにできたらいいなぁと思っています。 (あくまで理想のソースです。) For i = 1 To 30 If i = 1 Or 3 Or 4 Or 7 Then With ComboBox & i(←ここが知りたいです☆) .Clear .AddItem "非常に重要" .AddItem "重要" .AddItem "少し重要" .AddItem "重要ではない" End With ElseIf i = 2 Or 5 Or 6 Then With ComboBox & i(←ここが知りたいです☆) .Clear .AddItem "はい" .AddItem "いいえ" End With End If Next i いかがでしょうか?☆部分をどうにかすることで解決するのでしょうか?他に方法があったらぜひご教示ください。 そもそもコンボボックスの作り方にも自信がありません。 以前に少しだけVBを経験してますが、ほぼ初心者です。 よろしくお願い致します。

  • エクセル2010 シート上のコンボボックス

    エクセル2010を使用しております。 シート1にコンボボックス1(アクティブXコントロール)を設置しており、 コードは下記です。 Private Sub ComboBox1_DropButtonClick() Dim i As Long With Worksheets("シート操作").OLEObjects("ComboBox1").Object .Clear    For i = 1 To 100 .AddItem i Next i End With End Sub コンボボックス1のドロップボタンで リスト1~100の数字の中から、任意の数字を選び テキスト表示部分に表示させたいだけなのですが、 上記コードではリストから選択しても何も表示されません。 コードの誤りと詳しい説明を希望します。 よろしくお願いいたします。

  • VB6 テキストボックスの数値をコンボボックスに反映させるには?

    TextBoxのChangeイベントを使って、 テキストボックスの数値をコンボボックスに反映させる (具体的には数値をコンボボックスのindex数にし、それぞれのindexに アニメ+str(i)としたいです。 しかし、後で書くソースは何故か、コンボボックスが アニメ1 アニメ0 アニメ1 アニメ2 アニメ3 … となってしまいます。 これを アニメ0 アニメ1 アニメ2 アニメ3 … としたいです。どうすればいいんでしょうか? Private Sub Text8_Change() Static p As Integer If Text8.Text = "" Then Exit Sub For i = 0 To p If p = 0 Then GoTo b If Form6.Combo1.NewIndex = -1 Then GoTo b Form6.Combo1.RemoveItem (i) Next i b: For i = 0 To Val(Text8.Text) Form6.Combo1.AddItem "アニメ" + str(i) Next i p = Val(Text8.Text) End Sub

  • 文字と数字の判定

    テキストボックスに入力された事柄が文字なのか数字なのか判定する関数ってないでしょうか? 無い場合どのようなロジックを組めばいいのでしょうか?

    • ベストアンサー
    • Perl
  • EXCEL VBA ユーザーフォーム内のテキストボックスを一括処理する方法について

    EXCEL VBAのユーザーフォームについて質問があります。 ユーザーフォームを作り、その中にコンボボックスを1個、テキストボックスを100個設置する。 コンボボックスの値が1のときはテキストボックス1~テキストボックス50までのEnabledをFalseに設定し、 コンボボックスの値が2のときはテキストボックス1~テキストボックス100までのEnabled をFalseに設定する。 このとき、TextBox1.Enabled = False、TextBox2.Enabled = False・・・と一つ一つ書いていくのではなく、 セルを処理するときと同様に、テキストボックスの番号を変数にして処理することは可能でしょうか。 Private Sub ComboBox1_Change()  Dim i As Integer   If ComboBox1.Value = 1 Then   For i = 1 To 50   TextBox(i).Enabled = False   Next i   ElseIf ComboBox1.Value = 2 Then   For i = 1 To 100   TextBox(i).Enabled = False   Next i   End If End Sub というような処理をイメージしているのですが、うまくいきません。どうぞよろしくお願いいたします。

  • コンボボックスのクリア方法について教えて下さい(vb6.5)

    コンボボックスのクリア方法について教えて下さい(vb6.5) ComboBox1で選択したものによって、 ComboBox2で表示するものを変えたいと思っています。 ただ、一度ComboBox1で選択した後にComboBox2を開くと、 ComboBox2は前回のものがどんどん足されていきます。 コンボボックスのクリア方法について、 どの様にすればよいかご教示のほど、 宜しくお願い致します。 Private Sub ComboBox1_Change() UserForm1.ComboBox2.RemoveItem (0) If ComboBox1.Text = 1 Then UserForm1.ComboBox2.AddItem "A" UserForm1.ComboBox2.AddItem "B" UserForm1.ComboBox2.AddItem "C" ElseIf ComboBox1.Text = 2 Then UserForm1.ComboBox2.AddItem "D" UserForm1.ComboBox2.AddItem "E" UserForm1.ComboBox2.AddItem "F" Else UserForm1.ComboBox2.AddItem "G" UserForm1.ComboBox2.AddItem "H" UserForm1.ComboBox2.AddItem "I" End If End Sub -------------------------------------- Private Sub UserForm_Initialize() UserForm1.ComboBox1.AddItem "1" UserForm1.ComboBox1.AddItem "2" UserForm1.ComboBox1.AddItem "3" End Sub

  • コンボボックスで2週間前までの日付を選択したい

    VBA 初心者です。 ユーザーフォーム コンボボックスに 今日から2週間前までの日付を選択できるようにしたいです。 現在、 試行してもコンボボックスには何も表示されません。 ご教授願います。 Private Sub Form_Load() Dim i As Integer For i = 0 To 14 ComboBox5.AddItem Format(Date - i, "yyyy-mm-dd") Next ComboBox5.Text = ComboBox5.List(0) End Sub

  • 【C#】コンボボックスに任意の数字を入力し、それをテキストボックスに表

    【C#】コンボボックスに任意の数字を入力し、それをテキストボックスに表示させる方法 C#初心者です。 コンボボックスの処理につまずいています。 <処理> 1.コンボボックスに任意の数字を入力できるようにしておく。 2.そして、任意の数字を入力する。 3.ボタンを押したら、その入力した数字がテキストボックスに表示される。 1と2はできるのですが、3がよくわかりません。 どなたかご教授いただけると幸いです。 宜しくお願いいたします。

専門家に質問してみよう