ただいま私はこのようなプログラムを作っています。

Private Sub TextBox貸方_Change()
Dim 貸方 As Integer
Tx貸方 = TextBox貸方.value
Select Case Tx貸方
Case 101
TextBox貸方摘要.Text = "現金"
Case 102
TextBox貸方摘要.Text = "当座預金"
           ・
           ・
           ・
 'Case Eles
'MsgBox ("該当コード無し")
End Select
End Sub
しかしなぜか1011などの存在しないコードを入力してもメッセージボックスが表示されません!誰かお力をお貸しください!

A 回答 (2件)

ケアレスミス以前にイベントの発生タイミングを理解してください。


Changeイベントはテキストボックスの内容が変わる度に発生します。よってキー入力毎に該当プログラムが実行されます。

例えば
LostFocusイベントならテキストボックスから別のオブジェクトにフォーカスが移った場合に発生します。

また「Tx貸方」の変数の宣言がなされていませんが、別の場所で宣言しているのでしょうか?

Tx貸方のデータ型が数値系なら代入時にエラーになります。
IF文でまず、テキストボックスが数値に変換できるか確認する必要があります。
例えば

If IsNumeric(TextBox貸方.value) Then
Select Case Tx貸方
Case 101
TextBox貸方摘要.Text = "現金"
Case 102
TextBox貸方摘要.Text = "当座預金"
           ・
           ・
           ・
Case Else
MsgBox ("該当コード無し")
End Select
Else
MsgBox ("該当コード無し")
End If
    • good
    • 0
この回答へのお礼

ありがとうございます!是非ためしてみます!

お礼日時:2002/02/27 15:58

こんにちは。

maruru01です。

ケアレスミスなので、問題の本質ではないかも知れませんが、

1.綴りが違います。
  ×Eles
  ○Else
2.コメント文になっている(頭に"'"が付いている)

以上の点を修正してもダメな場合は、補足して下さい。
では。

この回答への補足

何も記入しない場合にエラー発生と一文字打つごとにメッセージボックスが表示されてしまいます・・・申し訳ありませんがお願いします。

補足日時:2002/02/27 12:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

Qtextbox.textやlabel.captionの型変換について

VB6.0を使用しています。
テキストボックスやラベルに値として数字を入れているのですが、これらの値に数字で加算減算する場合・・・

●宣言部でintegerを宣言する又は、

●string型で宣言してからプロシージャ内でCint(textbox.text)やCint(label.caption)のように変換するのとどう違うのでしょうか?

Aベストアンサー

宣言部でintegerを宣言した変数でも、textboxやlabelに放り込む時点で、テキスト型にキャストされてます。

また逆に、textbox.textやlabel.captionをそのまま数値計算式に放り込んで計算できたりするのは、「それらが数値だった場合、数値型にキャストする」といった処理が暗黙のうちに行われているためです。

VB6.0に限れば別に問題の無い話かもしれませんが、自身の将来的なことも見越すならば、明示的な型変換はなるべく心がけるようにしたほうがよいと思います。
textbox.textやlabel.captionの値を計算式に用いる場合は、CintやClngで型変換するようにしましょう。

QSelect Case組み合わせ条件について

例えば、「Aの値」&「Bの値」で処理をする場合には
Select Case "A"&"B"
Case "11" '(A=1&B=1の場合)

で処理できると思うのですが、「B=1~5」として組み合わせることは可能でしょうか?
現在、下記のようにSelect文の中にSelectを組み合わせていますが、
どうにか上記のようにひとつのSelect文で処理できないかな~と思っています。

Select Case "A"
Case 1
Select Case "B"
Case 1 To 5

ご存知の方がいらっしゃいましたら、ぜひご回答の程お願いいたします。

Aベストアンサー

私なら、Select Caseをまとめて簡単に書こうと思ったら、ANo.3の
nda23氏のような書き方をすると思いますが、その書き方について。
Select Case True
  Case ???
   :
   :
End Select
の書き方をするなら、???の部分とTrueの比較が行われるので、???の部分は
全体で見て「論理式である」必要があります。
ANo.3の内容を書き換えるとすると、
  Case A=1 And B>=1 And B<=5
みたいな感じになります。

QSelect Caseステートメント 「Is」

VBAについて質問です。

http://excelvba.pc-users.net/fol6/6_2.html

Sub test()
Dim intPoint As Integer
intPoint = InputBox("点数を入力してください")

Select Case intPoint
Case Is >= 80
MsgBox "優です。"
Case Is >= 70
MsgBox "良です。"
Case Is >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select
End Sub
は、
なぜ
Sub test2()
Dim intPoint As Integer
intPoint = 75

Select Case intPoint
Case intPoint >= 80
MsgBox "優です。"
Case intPoint >= 70
MsgBox "良です。"
Case intPoint >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select
End Sub

では、だめなのでしょうか?

test2を実行すると、
Case Elseの
MsgBox "再テストです。"
になってしまいます。
本当は、"良です。"が正しいのに。

testをF8でステップインしながら実行した時に、
「Case Is >= 80」
の来た時に、isにカーソルをあてても、InputBoxで入力した数値が表示されません。

なぜ、この場合、Case intPoint >= 80
ではダメなのか理由をご教授ください。ご回答よろしくお願いします。

VBAについて質問です。

http://excelvba.pc-users.net/fol6/6_2.html

Sub test()
Dim intPoint As Integer
intPoint = InputBox("点数を入力してください")

Select Case intPoint
Case Is >= 80
MsgBox "優です。"
Case Is >= 70
MsgBox "良です。"
Case Is >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select
End Sub
は、
なぜ
Sub test2()
Dim intPoint As Integer
intPoint = 75

Select Case intPoint
Case intPoint >= 80
MsgBox "優です。"
Case intPoint >= ...続きを読む

Aベストアンサー

Select Case intPoint
Case intPoint >= 80
MsgBox "優です。"
Case intPoint >= 70
MsgBox "良です。"
Case intPoint >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select

Case intPoint >= 80のような書き方をするときは

Select Case true
Case intPoint >= 80
・・・
End Select
とします。

以上参考まで。

Qselect case文について

VB6.0のSelect Case文について質問です。
現在、ある文字列(mojiretu)の中から特定の文字を検索して
その文字が文字列(mojiretu)の中に存在したらチェックボックスにチェックという一連の処理を行いたいのですがうまくいきません><
このSelect Case文のどこを直すべきでしょうか?

select case mojiretu
case instr(mojiretu,"abc")
chk1.value=1
case instr(mojiretu,"def")
chk2.value=1
case else
chk3.value=1
end select

Aベストアンサー

こんにちは。

単に、以下のようにすればできると思います。

select case True
case instr(mojiretu,"abc")
chk1.value=1
case instr(mojiretu,"def")
chk2.value=1
case else
chk3.value=1
end select


このカテゴリの人気Q&Aランキング

おすすめ情報