VB6.0でタイピングソフトを作成しています。KeyPressの入力判定で、入力された文字とLabel1に表示されている文字が一緒なら、その文字を消すという処理なんですが、
Private Sub Form_KeyPress(KeyAscii As Integer)
Label1.Caption = "taipingu"
If Mid(Label1.Caption, z, 1) = Chr(KeyAscii) Then
Dim ss As String
ss = Label1.Caption
Mid(ss, z, 1) = " "
Label1.Caption = ss
z = z + 1
End if
というやり方を教えていただいてやってみたのですが、
「If Mid(Label1.Caption, z, 1) = Chr(KeyAscii) Then」の部分で
「プロシージャの呼び出し、または引数が不正です」
というエラーが出てしまいます。しかも、このエラーが出ずに実行がうまくいくときもあります。
何故このエラーが出るのか、分かる方お願いします。
No.4ベストアンサー
- 回答日時:
プロジェクトの参照で、「参照不可」のものがあると
Mid関数やFormat関数等がエラーになる場合があります。
この場合、「参照不可」の項目を参照しなおすと直ります。
No.6
- 回答日時:
z 以外に容疑者はいないと思いますが‥
if 文の前に、例えば z=z のような式を置き、if 文でブレーク(一時停止)させて、そのつど z や keyascii をチェックしてみては?
また、余計なおせっかいですが、なぜ typing でなく taipingu なのでしょう?
No.5
- 回答日時:
こんばんは
No.2です。
最終文字(8文字目)を処理した後に加算しているので、Z = 9 になると思います。ですが
If Mid(Label1.Caption, z, 1) = Chr(KeyAscii) Then
では 9文字目 の検査をしてもエラーは発生しませんでした。
何故エラーになるのか私にもわからなくなりました。お役に立てず申し訳ないです。
No.2
- 回答日時:
Private Sub Form_Load()
Me.Label1.Caption = "typing"
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Me.Label1.Caption = Replace(Me.Label1.Caption, Chr(KeyAscii), "_")
End Sub
と、1行で事足りるかと思いますが・・・。
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim I As Integer
Dim L As Integer
Dim C As String
Dim S As String
S = Label1.Caption
C = Chr(KeyAscii)
L = Len(S)
For I = 1 To L
If Mid(S, I, 1) = C Then
Mid(S, I, 1) = " "
End If
Next I
Label1.Caption = S
End Sub
多分、このような回答だったんではないでしょうか?
この回答への補足
すいません・・・。少し書き足りないコードがありました。
Private Sub Form_KeyPress(KeyAscii As Integer)
Label1.Caption = "taipingu"
If Mid(Label1.Caption, z, 1) = Chr(KeyAscii) Then
Dim ss As String
ss = Label1.Caption
Mid(ss, z, 1) = " "
Label1.Caption = ss
z = z + 1
Else
Label2.Caption = "違う文字です"
End if
でした。
書いていただいたコードの2つ目のような処理をまさにやりたいのです。
ただ、「Me.Label1.Caption = Replace(Me.Label1.Caption, Chr(KeyAscii), "_")」
の処理をif文を使って私の書いたコードに組み込むにはどうやったらいいのでしょう・・・?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IEのダウンロード通知バーのVBA...
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
VBSで変数の宣言はできないので...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAがブレークモードになっ...
-
【Excel VBA】マクロをボタンに...
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜエラーになるのでしょうか...
-
マクロについて教えてください...
-
ExcelVBA Unicodeの置換・・・
-
Access2000での未定義関数repla...
-
VBAでのMATCH関数の使用
-
VBS実行時エラー オブジェクト...
-
ADODB.Streamを使用してUTF-8を...
-
Outlook.ApplicationをCreateOb...
-
実行時エラー -'-2147417848
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAでのエラー
-
プロシージャ名の取得
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
ExcelVBAで、ユーザー定義型は...
-
VBで構造体を使うさ際の64k...
-
実行時エラー48発生時のDLL特定...
おすすめ情報