以前にも投稿させていただいたものと同じなのですが、締め切ったあとにまた問題が発生しまして・・・解答していただいた方には申し訳ないのですが今一度知恵をお貸しください!
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":型が一致しません
と表示されてしまいます。どうすればよいのでしょう???
No.1
- 回答日時:
えーと、まず、コントロールや変数の名前に日本語を使うと、ソース効率がめちゃくちゃ悪くなるので、日本語は控えるようお勧めします。
確かに、わかりやすいのですが。
>実行エラー13":型が一致しません
こういうエラーが出たときは、デバッグを押すと、エラーとなっている行が黄色で表示されますので、その行を補足してください。
これから、VBのエラーで質問するときは、これが基本だと思ってください。
迅速に回答できるかと思います。
>Tx貸方 = TextBox貸方.value
TextBox貸方はテキストボックスだと思うのですが、valueなどというプロパティは持っていません。
型が一致しないようなエラーは、この辺しか見あたりませんが、通常は "メンバが見つかりません" とかいうエラーになるはずです。
いずれにしろ、これだけのコードでは分かりません。
補足をおねがいします。
No.2
- 回答日時:
こんにちは。
itohhといいます。前の質問も見てみましたが、今回の質問の中にあるソースを見ると
前のアドバイスを生かされていないのでしょうか?
もし、生かされているのでしたらそちらのソースを載せていただかないとアドバイスが
出来ないと思いますよ。
No.3
- 回答日時:
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
No.4ベストアンサー
- 回答日時:
>実行エラー13":型が一致しません
データの型が違っているからです。
「Tx貸方」はInteger型、「TextBox貸方」はおそらくテキストボックスなのでString型となります。
>Tx貸方 = TextBox貸方.value
このときVBは型の自動変換を行ってくれますがいつも変換可能というわけでは有りません。
例えば数字以外や空欄は変換できずにエラーとします。
この場合、IF文を使って振り分ければ良いでしょう。
IF TextBox貸方.Text = "" THEN
Tx貸方 = 0
ELSE
Tx貸方 = TextBox貸方.Text
END IF
No.5
- 回答日時:
次ぎのようにすると上手く行きませんか。
一応テスト済みです。質問の趣旨にずれていますか。
イベントを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ではうまくいきませんでした。
むしろ私が、テキストボックスで「エンタキーを押した時だけ飛んでくるイベント」をどなたかから教えてほしいです。
No.6
- 回答日時:
>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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBSで変数の宣言はできないので...
-
エクセルエラー13型が一致しま...
-
ExcelVBA Range クラスの Page...
-
【Excel VBA】マクロをボタンに...
-
実行時エラー48発生時のDLL特定...
-
OLEDB.NETで接続できない
-
VBS実行時エラー オブジェクト...
-
excel vbaでvlooupの変数がわか...
-
マクロについて教えてください...
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBAでのエラー
-
実行時エラー3001「引数が間違...
-
なぜエラーになるのでしょうか...
-
Excel2019 ワークシートのコピ...
-
vbaのvlookup関数エラー原因を...
-
なぜこんな初歩的なVBAのIf文で...
-
デバッグ時はOK、デバッグ無し...
-
Outlook.ApplicationをCreateOb...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報