• ベストアンサー

Case Eles

yanmaaの回答

  • ベストアンサー
  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.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

south-kuma
質問者

お礼

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

関連するQ&A

  • Case Eles part2

    以前にも投稿させていただいたものと同じなのですが、締め切ったあとにまた問題が発生しまして・・・解答していただいた方には申し訳ないのですが今一度知恵をお貸しください! Private Sub TextBox貸方_Change() Dim 貸方 As Integer Tx貸方 = TextBox貸方.value Select Case Tx貸方 Case 101 TextBox貸方摘要.Text = "現金" Case 102 TextBox貸方摘要.Text = "当座預金"            ・            ・            ・  Case Else TextBox借方摘要.Text = "該当コード無し" End Select End Sub としても一度入力してからその入力したコードを消すと 実行エラー13":型が一致しません と表示されてしまいます。どうすればよいのでしょう???

  • Select Caseでorは使えないのでしょうか?

    Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" Or "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub これだとエラーになるのですが ケースが「あ」もしくは「い」の場合は同じ処理をしたい場合はどうすればいいのでしょうか? Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" MsgBox "「あ」もしくは「い」です。" Case "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub このコードをまとめるはどうすればいいのでしょうか? よろしくお願い致します。

  • 複数のテキストボックスのカンマ処理

    現在、ユーザーフォームに60個のテキストボックスを設置しています。 数値入力されるとカンマが付くようコードを書いているのですが、まとめて処理できるようなコードはないでしょうか? 現在… Private Sub TextBox1_Change() TextBox1.Text = Format(TextBox1.Text, "#,##0") End Sub Private Sub TextBox2_Change() TextBox2.Text = Format(TextBox2.Text, "#,##0") End Sub Private Sub TextBox3_Change() TextBox3.Text = Format(TextBox3.Text, "#,##0") End Sub これを60個 試しにfor~Nextで書いてみましたが、失敗しました。 Dim c As Integer For c = 1 To 60 Controls("TextBox" & c).Text = Format("TextBox" & c.Text, "#,##0") Next End Sub ご存知の方、お力を貸してください。 ウィンドウズ7のエクセル2013を使用しています。

  • ifでの条件分岐

    .net vb2005でプログラミングしています。 2つのテキストボックスがあり、その名前をtextbox1,textbox2 , 変数の代入をtx1、tx2とします。 どちらも半角数字で300までしか入力できません。 さらに、tx1に入力されるとtx2も必ず入力される必要があります。 tx1が未入力の場合はtx2も未入力である必要があります。 最初にtx1の文字数が0か確認し、入っている場合、居ない場合と ifで条件分岐させましたが うまくいきません。。 アドバイスいただきたいと思います。 Dim tx1,tex2 As Integer If Len(TextBox1.Text) = 0 Then flg = 0 ElseIf Regex.IsMatch(TextBox1.Text, "^[0-9]{1,3}$") Then tx1= Val(TextBox1.Text) tx1 = Convert.ToInt32(iptx5) '文字列をInteger型(数字型)に変換 Else MsgBox("300までの数字で入力して下さい", vbCritical, "入力エラー") TextBox1.Clear() Exit Sub End If If tx1 > 255 Then flg = 1 MsgBox(ipm_msg2, vbCritical, "入力エラー") TextBox1.Clear() End If '********************************************************************** If Len(TextBox1.Text) = 0 Then flg = 0 exit sub ElseIf Regex.IsMatch(TextBox2.Text, "^[0-9]{1,3}$") Then tx2 = Val(TextBox2.Text) tx2 = Convert.ToInt32(tex2) Else MsgBox(ipm_msg1, vbCritical, "入力エラー") TextBox2.Clear() Exit Sub End If '**255以上なら入力不可** If iptx6 > 255 Then flg = 1 MsgBox(ipm_msg2, vbCritical, "入力エラー") TextBox6.Clear() Exit Sub End If

  • Select 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 ではダメなのか理由をご教授ください。ご回答よろしくお願いします。

  • Listindexの値が上手く取得できません。

    VBA初心者です。的外れな質問をしている場合にはご容赦ください。 まず ユーザーフォームを表示した時に、 Private Sub UserForm_Initialize() Set ws1 = Worksheets("s1") Set gui2 = 銘柄コードから検索 gui2.ListBox1.AddItem "銘柄コードで検索" gui2.ListBox1.AddItem "銘柄名で検索" gui2.ListBox1.AddItem "銘柄カナで検索" End Sub とリストボックスの各項目を作成しました。 Listboxをクリックした時にlistindexを「リストの数」に格納 する(自分のイメージ) Private Sub ListBox1_Click() Set gui2 = 銘柄コードから検索 Set ws1 = Worksheets("s1") Dim リストの数 As Integer リストの数 = gui2.ListBox1.ListIndex End Sub (自分のイメージ)コマンドボタン2をクリックすると 現在選択されているListbox1のListindexが「リストの数」 に格納されているので、次のSelect文の動きをすると思っています。 Private Sub CommandButton2_Click() Set gui2 = 銘柄コードから検索 Dim リストの数 As Integer リストの数 = gui2.ListBox1.ListIndex Select Case リストの数 Case 0 MsgBox リストの数 Call 銘柄コードで検索 TextBox1.Text = "" gui2.TextBox1.SetFocus Case 1 MsgBox リストの数 Call 銘柄名で検索 MsgBox リストの数 TextBox1.Text = "" gui2.TextBox1.SetFocus Case 2 MsgBox リストの数  Call 銘柄カナで検索 TextBox1.Text = "" gui2.TextBox1.SetFocus End Select End Sub コマンドボタン2をクリックした場合に、ListIndexの値を判断し、Select文 の条件どおりに動作させるためには、どのようにしたらよいでしょうか? EXCEL2000 を使っています。

  • ListBoxに値を追加していくには。

    Private Sub CommandButton31_Click() ListBox12.ColumnCount = 5 ListBox12.ColumnWidths = "4.0cm;4.0cm;2.0cm;3.0cm;2.0cm" End Sub Private Sub TextBox175_Change() SetList End Sub Private Sub TextBox176_Change() SetList End Sub Private Sub TextBox177_Change() SetList End Sub Private Sub TextBox178_Change() SetList End Sub Private Sub TextBox179_Change() SetList End Sub Private Sub SetList() ListBox12.Clear ListBox12.AddItem TextBox175.Text ListBox12.List(0, 1) = TextBox176.Text ListBox12.List(0, 2) = TextBox177.Text ListBox12.List(0, 3) = TextBox178.Text ListBox12.List(0, 4) = TextBox179.Text End Sub ここで、TextBox175~179の値をコマンドボタン1を押す度、 ListBox12の最終行の直下に挿入されていくようにしたいです。 列はそのままです。 1行目 (0,1),(0,2),(0,3),(0,4) 2行目 (1,1),(1,2),(1,3),(1,4) 3行目 (2,1),(2,2),(2,3),(2,4) どのようにやればいいでしょうか。

  • リソースファイルの選択

    VB2010で、以下のような書き方でリソースファイルの選択を行っているのですが、 リソースファイルを増やすたびにコードを書き足さなければならず非効率的です。 リソースが10個・20個と増えてくるとその分だけコードが長くなります。 ほかに方法はあるのでしょうか? なお、今はVB2010が入っていないパソコンから投稿しているので コードを思い出しながら書いています。 たぶん大丈夫だと思いますが、もしかしたらエラーが発生するかもしれません。 Private ResourceID As Integer (中略) Dim bmp As Bitmap Select Case ResourceID Case 1 : bmp = My.Resources.picture1 Case 2 : bmp = My.Resources.picture2 Case 3 : bmp = My.Resources.picture3 End Select Select Case ResourceID Case 1 : TextBox1.Text = My.Resources.text1 Case 2 : TextBox1.Text = My.Resources.text2 Case 3 : TextBox1.Text = My.Resources.text3 End Select

  • VB2008EEのSelect Case

    VB2008EEのSelect Case devilconanさんとのやりとりを締めてしまいましたが、 下記でdevilconanさんは動いているようですが、再度試してもこちらでは動きません。 しかし、別のPCのVB2008EEで試すことが出来たのですが、こちらでは動きました。 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged Select Case sender.text Case "RadioButton1" aaa = "1" bbb = "" Case "RadioButton2" aaa = "" bbb = "2" End Select End Sub Elseを追加して、ラジオボタン1と2を交互にチェックすると、それぞれ「sssss」とMsgBoxが出ます。 別のPCだと下の記述で、「case1」「case2」が表示されました。 Select Case sender.text Case "RadioButton1" aaa = "1" bbb = "" MsgBox("case1") Case "RadioButton2" aaa = "" bbb = "2" MsgBox("case2") Case Else MsgBox("sssss") End Select 動いたPCも動かないPCもXPです。 同じファイルを開いているのですが、この違いは何でしょうか?  

  • select case 大文字小文字を区別しないよ

    select case 大文字小文字を区別しないようにするには? Sub test01() Dim str As String str = "A" Select Case str Case "a" MsgBox "aです" Case "A" MsgBox "aです" End Select End Sub これだと、半角全角がヒットしないのはなんとなくしょうがないかな、と思うのですが 大文字小文字がちがくてもヒットさせるにはどうすればいいですか? Sub test01() Dim str As String str = "A" Select Case str Case "a", "A" MsgBox "aです" End Select End Sub とするしかないでしょうか? 大文字小文字区別なく評価する方法があれば教えてください。よろしくお願いします。