• ベストアンサー

Valiantで定義したものをIntegerに変換したい

中でIntegerで処理したいのですが 入口で何が入ってくるかわからないので 初めValiantで定義しておいて、変換したいのですが If ax = "" Then a = 0 Else a = Val(ax) End If とすると Nullの使い方が不正です、のエラーがでてしまいます

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

  • ベストアンサー
  • teiou68k
  • ベストアンサー率28% (202/721)
回答No.3

No1のものです。 こんなんでどう?(VB6) If VarType(ax) = vbInteger Then   Debug.Print "Integer" Else   Debug.Print "違うよ" End If なお型の変換はValではなくCIntあたりが無難じゃないかな?(諸説あるだろうけど)

maaaa
質問者

お礼

If VarType(ax) = vbInteger Then   a = CInt(ax) Else   a = 0 End If でうまくゆきました ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

Nullと""(空文字)は別物です。 Nullを調べるときにはIsNull関数を使いましょう。

maaaa
質問者

お礼

ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。
  • teiou68k
  • ベストアンサー率28% (202/721)
回答No.1

いろんな意味で不十分。補足願います。 ・で、聞きたいことは何ですか?  →このエラーの意味?コードレビュー的な事?   Variant→Integerへの変換関数が知りたい? ・axの前提条件は?  →例えばaxに数字ではない文字列が入ってたら?(例えば"A"と入ってたら?)

maaaa
質問者

補足

なまはんかな知識で迷惑かけています、すみません ・axの前提は数字が入ってきますが、Nullで入って  くることもある ・もっと前の条件はInputがACCESSのテーブルです ・やりたいことは、  数字であれば、そのまま数字を引き継ぎ  数字以外(Nullとは、予想以外のもの)はゼロで  aに入れる そして、aの中には数字がある、という状況を  作りたいのです

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 名前が二重に定義されています

    If 条件 then dim arry(2) arry(0)="null" arry(1)="null" arry(2)="null" else if 条件 then dim arry(2) arry(0)="0" arry(1)="0" arry(2)="0" elseif y(0)="1" then arry=split(x,",") end if end if と書いてみたのですが、arryのところで「名前が二重に定義されています」というエラーが出てしまいます。自分としてはif文の条件にあてはまらない限り中の処理を実行しないため、二重に定義してはいないと思っているのですが間違っているのでしょうか? if文の外に dim arry(2) と1回だけ宣言すればこのエラーは出なくなりますが今度はsplitの処理のところで「型が一致しません」というエラーが出ます。 これの原因または回避方法を教えてください。

  • データコンボのNullについて

    何度もすいませんm(__)m データコンボで 値が選択されてない場合は nullをデータベースに格納したいんですが、 できません。nullの使い方が不正です。と出ます。 教えてください。 VB6を使ってますデータベースはMySQLです。 Dim id As Integer If Me.DataCombo1.Text = "" Then id = Null Else id = Me.DataCombo1.SelectedItem End If datacombo1はInteger型のデータを データベースに格納します

  • 関数の引数に未定義の変数を渡すとエラーが出る

    自作の関数で、issetとemptyを一緒に判定する関数を作っているのですがエラーが出ます。 ある変数が「未定義」または「null」または「""(空白)」の場合はnullである、という関数を作りたいです。 ------------------------------------------ function is_null_ex($value){  if (!isset($value)) {return true;}               // 未定義かnullの場合、trueを返す  else if (strlen(strval($value)) === 0) {return true;}   // 空白の場合はtrueを返す  else {return false;}                      // $valueに値が入っている場合はfalseを返す } is_null_ex($val); ------------------------------------------ 上記の関数で$valueが未定義の場合にfuncを使うと、次のようなエラーが出ます。 Notice: Undefined variable: val つまり、未定義の変数を引数に渡すとエラーが出ます。 「未定義なら関数に渡さなければ?」と思うかもしれませんが、そもそもこの関数は「未定義」または「null」または「""(空白)」を判定したい関数なのです。 この場合、どうすれば良いのでしょうか? エラーは出ますが上記の関数で「if (!isset($value)) {return true;}」の部分できちんと判定はされています。 PHP5.3系で運用しています。 ぞうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • タイムレポートの普通残業時間について

    お世話になります。 Excel2007でタイムレポートを作成しております。 VBAで構文を作成しました。 30分以上で、残業発生。以降10分単位。29分は残業ではないというのが条件であります。 30分なら0:30 29分なら表示させない。35分ら0:30、40分なら0:40といった形です。 30分以上なら、普通残業を計算をするという構文を書いたのですが、 10分以上から0:10と表示されてしまいます。 8:30が定時、17:00が終了です。7:45が就業時間です。 普通残業は、17:00から22:00です。8:30分より早く来ても、8:30分から計算します。 たとえば、8:30 17:30なら、 7:45 0:30、 8:30 17:45なら 7:45 0:40です。 17:29なら普通残業は、表示させないようにしたいと思います。 →現状、0:20と表示されてしまいます。 -----------------------------------------------------------------------------   Public Sub CmpKintaiTime(prmINTIM, prmOUTTIM, prmKNMKBN, rtnSYUGYO, rtnHAYZAN, rtnFUTZAN, rtnSINZAN, rtnTIKOKU, rtnSOUTAI, rtnKYUZAN, rtnKYUSIN) '************************************************** ' 勤怠時間 算出 '************************************************** On Error GoTo ErrorTrap Dim wINTIM As Integer Dim wOUTTIM As Integer Dim wSTRTIM As Integer Dim wENDTIM As Integer Dim wSYUGYO As Variant Dim wFUTZAN As Variant Dim wSINZAN As Variant Dim wHAYZAN As Variant Dim wTIKOKU As Variant Dim wSOUTAI As Variant Dim wTIKOKUw As Variant Dim wSOUTAIw As Variant Dim wKYUZAN As Variant Dim wKYUSIN As Variant Dim wLower As Integer Dim wUpper As Integer Dim wIdx As Integer If IsTime(prmINTIM) = False Then GoTo ExitTrap End If If IsTime(prmOUTTIM) = False Then GoTo ExitTrap End If '時刻を分換算 wINTIM = Hour(prmINTIM) * 60 + Minute(prmINTIM) wOUTTIM = Hour(prmOUTTIM) * 60 + Minute(prmOUTTIM) '日付が変わった時刻は24時間加算 If wINTIM >= wOUTTIM Then wOUTTIM = wOUTTIM + (24 * 60) End If If wOUTTIM > khnENDTIM Then If wOUTTIM <= khnSTRFZN Then wOUTTIM = khnENDTIM Else If wOUTTIM > khnENDFZN Then If wOUTTIM <= khnSTRSZN Then wOUTTIM = khnENDFZN Else If wOUTTIM > khnENDSZN Then wOUTTIM = khnENDSZN End If End If End If End If End If wSYUGYO = Null wFUTZAN = Null wSINZAN = Null wHAYZAN = Null wTIKOKU = Null wSOUTAI = Null '就業時間算出 If wINTIM < khnSTRTIM Then wSTRTIM = khnSTRTIM Else wSTRTIM = wINTIM End If If wOUTTIM > khnENDTIM Then wENDTIM = khnENDTIM Else wENDTIM = wOUTTIM End If If wENDTIM > wSTRTIM Then wSYUGYO = wENDTIM - wSTRTIM Else wSYUGYO = 0 End If If prmKNMKBN <> 1 Then '平日のみ '遅刻 If wINTIM > khnSTRTIM Then wTIKOKU = wINTIM - khnSTRTIM End If '早退 If wOUTTIM < khnENDTIM Then wSOUTAI = khnENDTIM - wOUTTIM End If End If '早出残業算出 (始業時刻より早出残業判断分前に出勤した場合、早出を算出) If wINTIM <= (khnSTRTIM - khnHAYFUN) Then wHAYZAN = khnSTRTIM - wINTIM End If '普通残業算出 wFUTZAN = wOUTTIM - wINTIM - wSYUGYO If wFUTZAN >= 30 Then wFUTZAN = wOUTTIM - wINTIM - wSYUGYO End If ご教授くださいますようお願い申し上げます。 文章が長くて、最後まで読んでくださってありがとうございます。 お手数をおかけしますが、ご教授くださいますようお願いいたします。

  • 線形変換の定義

    線形変換の定義 前回の質問で線形変換とアフィン変換について質問させて頂きました。 前回の質問内容:http://okwave.jp/qa/q5973471.html 線形変換とアフィン変換については理解する事が出来ました。 ご回答下さった方本当にありがとうございます。 線形変換の定義を幾つか示して頂いたのですが、 線型変換の定義: [1] 体 K 上のベクトル空間 V 上の変換 f で、 x,y∈V, a,b∈K, について常に f(ax+by) = a f(x) + b f(y) が成り立つもの。 線型変換の定義: [1’] [1']?体 K 上のベクトル空間 V 上の変換 f で、?x,y∈V, a∈K について常に?f(x+y) = f(x) + f(y),? f(ax) = a f(x) が成り立つもの。 線形変換の定義:[1''] ?体 K 上のベクトル空間 V 上の変換 f で、?x,y∈V, a,b∈K について a+b=1 のとき?f(ax + by) = a f(x) + b f(y),? f(ax) = a f(x) が成り立つもの。 定義[1] ⇔ [1'] ⇔ [1''] が同値であることはどのように示せば良いのでしょうか? また、定義[1'']におけるa+b=1とは具体的に何を示しているのでしょうか? ご回答よろしくお願い致します。

  • REALbasicについて質問です。

    今日プログラミングをはじめた超初心者です。 全然わからないので教えていただきたいのですが Sub Action () dim x as string dim y as integer x = editField1.text y = val(x) if y = 0 then msgbox "ゼロだよん。" else msgbox "ゼロじゃないよん。" end if End Sub というプログラムを実行してみたのですがeditField1のところがおかしいらしく動いてくれません。どのようにしたらよろしいでしょうか?

  • 変数xが定義されていないときだけ

    xを1として定義するには if(x==null)x=1; でよいのでしょうか? 同様にa[3]が定義されていないときだけにa[3]を1に定義するには if(a[3]==null)a[3]=1; でよいのでしょうか?

  • Excelのユーザー定義関数について。

    ネットで調べて「アルファベットのみを半角にする」というユーザー定義関数を発見し使用していますが、 この関数にある特定の文字を変換する条件を追加することはできますでしょうか。 例えば、リンゴ という文字がセル内にある場合、ミカン に変換されて表示されるという条件を下記のユーザー定義関数に加える事ができますか。 もしくは、新たに別のユーザー定義関数を作るしかないのでしょうか。アドバイスよろしくお願いします。m(_ _ )m Function ASC_A(str As String) As String Dim i As Integer For i = 1 To Len(str) If Mid(str, i, 1) Like "[a-zA-Z]" Then Mid(str, i, 1) = StrConv(Mid(str, i, 1), vbNarrow) End If Next ASC_A = str End Function

  • プログラミングVisual Basicの質問です。

    任意の数字を入力し、Len関数とMid関数を使って2進数を10進数に変換するというプログラムを作っているのですが、うまくいきません。 コードは Dim a  As Integer Dim b  As Integer Dim i  As Integer a = Val(TextBox1.Text) For i = Len(a) To 1 Step -1 If Mid(a, Len(a), 1) = "1" Then b += 2 ^ (i - 1) End If Next Label3.Text = b    End Sub 上記のものが作ったコードです。 問題点の指摘をよろしくお願いします。

  • javaで電卓を作りたいのですが(Swing

    こんにちは。プログラミング初心者なのでどうかご助言願います。 javaのSwing(JFRAME)で電卓を作ろうとしているのですが、一応動作はするのですが連続計算がうまくいきません たとえば66(画面表示は66)*3(画面表示は3)-(画面表示は198)8(画面表示は8)=190 という計算をさせたいのですが、途中でうまくいってないみたいで 最終的な答えが58、という答えが出てしまいます。(途中はきちんと198と表示されます) 下のメソッドのどこが間違っているかご指摘頂けるとありがたいです int val =0; int val0=0; String op = null; //数字 public void numberreturn(int i){ val=val*10+ i; resultTextField.setText((new Integer(val)).toString()); } //演算子 public void calculate(String x){ if(op==null){ if(val0!=0){ op=x; }else{ val0=val; val=0; op=x;} }else if(val==0){ op=x; }else if(val0!=0){ returning(val0,val,op); op=x; }else{ val0=val; val=0; op=x; } } //結果表示 public void ansreturn(int i){ resultTextField.setText((new Integer(i)).toString()); } //計算を行う関数 public void returning (int i,int j,String x){ if(x!=null){ int k; if(x=="plus"){ k=i+j; } else if(x=="minus"){ k=i-j; } else if(x=="mult"){ k=i*j; } else{ try{ k=i/j; }catch(Exception e){ k=0; } } i=k; ansreturn(i); j=0; x=null; }else{ j=0; x=null; } } ボタンのほうは一応こんな感じです private void minusButtonActionPerformed(java.awt.event.ActionEvent evt) { calculate("minus"); } private void equallButtonActionPerformed(java.awt.event.ActionEvent evt) { returning(val0,val,op); } よろしくお願いします

    • ベストアンサー
    • Java