プロが教えるわが家の防犯対策術!

以前にも投稿させていただいたものと同じなのですが、締め切ったあとにまた問題が発生しまして・・・解答していただいた方には申し訳ないのですが今一度知恵をお貸しください!
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":型が一致しません
と表示されてしまいます。どうすればよいのでしょう???

A 回答 (6件)

えーと、まず、コントロールや変数の名前に日本語を使うと、ソース効率がめちゃくちゃ悪くなるので、日本語は控えるようお勧めします。


確かに、わかりやすいのですが。

>実行エラー13":型が一致しません
こういうエラーが出たときは、デバッグを押すと、エラーとなっている行が黄色で表示されますので、その行を補足してください。
これから、VBのエラーで質問するときは、これが基本だと思ってください。
迅速に回答できるかと思います。

>Tx貸方 = TextBox貸方.value
TextBox貸方はテキストボックスだと思うのですが、valueなどというプロパティは持っていません。

型が一致しないようなエラーは、この辺しか見あたりませんが、通常は "メンバが見つかりません" とかいうエラーになるはずです。
いずれにしろ、これだけのコードでは分かりません。

補足をおねがいします。
    • good
    • 0

こんにちは。

itohhといいます。

前の質問も見てみましたが、今回の質問の中にあるソースを見ると
前のアドバイスを生かされていないのでしょうか?

もし、生かされているのでしたらそちらのソースを載せていただかないとアドバイスが
出来ないと思いますよ。
    • good
    • 0

Changeイベントを使うとせわしい感じがしますが・・・


変数宣言がよく分かりませんが、TextBox借方摘要はTextBox貸方摘要に変えてあります。

Private Sub TextBox貸方_Change()
  Dim 貸方 As Integer
  Dim Tx貸方 As Long

  With TextBox貸方摘要
    If IsNumeric(TextBox貸方.Value) Then
      Tx貸方 = TextBox貸方.Value
      Select Case Tx貸方
        Case 101: .Text = "現金"
        Case 102: .Text = "当座預金"
          :
          :
        Case Else: .Text = "該当コード無し"
      End Select
    Else
      .Text = "該当コード無し"
    End If
  End With
End Sub
    • good
    • 0

>実行エラー13":型が一致しません


データの型が違っているからです。
「Tx貸方」はInteger型、「TextBox貸方」はおそらくテキストボックスなのでString型となります。

>Tx貸方 = TextBox貸方.value
このときVBは型の自動変換を行ってくれますがいつも変換可能というわけでは有りません。
例えば数字以外や空欄は変換できずにエラーとします。

この場合、IF文を使って振り分ければ良いでしょう。
IF TextBox貸方.Text = "" THEN
Tx貸方 = 0
ELSE
Tx貸方 = TextBox貸方.Text
END IF
    • good
    • 0

次ぎのようにすると上手く行きませんか。

一応テスト済みです。
質問の趣旨にずれていますか。
イベントをText1のKeyDownにする。
1文字でも入力したり、削除したりするとこのルーチンへ飛ぶから
If  KeyCode = 13で「改行」の時だけ取り出してSelect Case
で判別する。下記では科目表示のテキストボックスをText2に
(面倒くさいと思い)変えました。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim 貸方 As Integer
Text2.Text = "" ’一度起こったエラー表示等を消す
' MsgBox KeyCode ’毎文字ごとに飛んでくることの実感のため
If KeyCode = 13 Then
Tx貸方 = Text1.Text
Select Case Tx貸方
Case 101
Text2.Text = "現金"
Case 102
Text2.Text = "当座預金"
Case Else
Text2.Text = "該当コード無し"
End Select
End If
End Sub
Tx貸方 = Text1.TextはTx貸方 = Text1.Valueではうまくいきませんでした。
 むしろ私が、テキストボックスで「エンタキーを押した時だけ飛んでくるイベント」をどなたかから教えてほしいです。
    • good
    • 0

>TextBox貸方.value


書き方からするとAccessかな?

>実行エラー13":型が一致しません
おそらく
Select Case Tx貸方
の部分でひっかかるのでは?

AccessのテキストボックスはVBのテキストボックスと違って、未入力状態の時、Null値を持ちます。
ですので
1.Nullチェック
2.数値タイプチェック
3.数値によるCASE分けによる処理
といった手順が必要です。

エラーの原因は、Select Case は文字列/数値型に使用すべきなのに、
Tx貸方.Value = Null値
のために発生すると思われます。



'Null値チェック
If IsNull(TextBox貸方.value) Then
  '未入力(Null処理)
  TextBox貸方摘要.Value = Null
Else
  '数値型チェック
  If IsNumeric(TextBox貸方.value) Then
    Select Case Tx貸方
      Case 101
        TextBox貸方摘要.Value = "現金"
      Case 102
        TextBox貸方摘要.Value = "当座預金"
               ・
               ・
               ・
      Case Else
        TextBox貸方摘要.Value = Null
        Call MsgBox("該当コード無し")
      End Select
  Else
    TextBox貸方摘要.Value = Null
    Call MsgBox("該当コード無し")
  End If
End If

このコードは
http://oshiete1.goo.ne.jp/kotaeru.php3?q=225969
を参考に作成いたしました。


それと、Accessの場合はテキストボックスの値参照や値セットはValueを使用したほうが便利です。
Textだと、フォーカスを持っているとき以外は、値参照できなかったような気が・・・
遠い記憶で、しかも未検証なので、はっきりとは言えませんが・・・

(Accessでなかったらすいません。。。)

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=225969
    • good
    • 0

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