C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 置換の仕方について


(過去ログ 56 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■31700 / inTopicNo.1)  置換の仕方について
  
□投稿者/ naoko (1回)-(2009/01/27(Tue) 16:47:55)

分類:[VB6 以前] 

VB6.0を使用しています。

txtBOXに入力された半角数値を自動的に全角に置換させたいのですが
txt_KeyPressイベントにて処理しようとしてるのですが『型が一致しません』とエラーになってしまいます。
例 12aa ⇒ 12AA

Dim d As String
d = txt(1).Text
KeyAscii = StrConv(d, vbUpperCase)

また、”’(シングルクォーテーション)”が入力された場合、’を削除させたいのですが
それもうまくいきません。

どのような書き方が宜しいのでしょうか?
txtBoxは7つあります。

KeyAscii = Replace(" & txt(i).Text & ", "'", "")
引用返信 編集キー/
■31701 / inTopicNo.2)  Re[1]: 置換の仕方について
□投稿者/ επιστημη (1587回)-(2009/01/27(Tue) 17:11:31)
επιστημη さんの Web サイト
> 『型が一致しません』とエラーになってしまいます。
> KeyAscii = StrConv(d, vbUpperCase)

StrConv関数はStringを返しますが、KeyAsciiの型はStringですか?

引用返信 編集キー/
■31702 / inTopicNo.3)  Re[1]: 置換の仕方について
□投稿者/ 魔界の仮面弁士 (971回)-(2009/01/27(Tue) 17:11:59)
No31700 (naoko さん) に返信
> txtBOXに入力された半角数値を自動的に全角に置換させたいのですが
> txt_KeyPressイベントにて処理しようとしてるのですが

(Vista や XP Tablet などで)「ペン入力」された場合、KeyPress は発生しませんのでご注意を。
また、マウスの右クリックでクリップボードから「貼り付け」した場合も発生しません。

> Dim d As String
> d = txt(1).Text
txt は、TextBox の「コントロール配列」なのでしょうか?


> KeyAscii = StrConv(d, vbUpperCase)
KeyPress イベントの引数を良く見てください。『KeyAscii As Integer』になっていますよね。
StrConv の結果は String 型なので、そのままでは Integer 型としては扱えません。

書くとすれば、
 Private Sub txt_KeyPress(Index As Integer, KeyAscii As Integer)
   KeyAscii = Asc(UCase(Chr(KeyAscii)))
 End Sub
のようになるでしょう。


> また、”’(シングルクォーテーション)”が入力された場合、’を削除させたいのですが
> それもうまくいきません。
『'』ではなく、
『’』を削除したいのですね?

であれば、こんな感じで。
 Private Sub txt_KeyPress(Index As Integer, KeyAscii As Integer)
   If KeyAscii = Asc("’") Then
     KeyAscii = 0
   End If
 End Sub


> どのような書き方が宜しいのでしょうか?
Change イベントや LostFocus イベントを併用した方が良いかも。
引用返信 編集キー/
■31703 / inTopicNo.4)  Re[2]: 置換の仕方について
□投稿者/ naoko (2回)-(2009/01/27(Tue) 17:35:44)
No31701 (επιστημη さん) に返信
>
> StrConv関数はStringを返しますが、KeyAsciiの型はStringですか?
>
仰るとおり、Integer型だったので型が一致してませんでした。
ありがとうございます。
引用返信 編集キー/
■31704 / inTopicNo.5)  Re[2]: 置換の仕方について
□投稿者/ naoko (3回)-(2009/01/27(Tue) 17:39:14)
No31702 (魔界の仮面弁士 さん) に返信
>>Dim d As String
>>d = txt(1).Text
> txt は、TextBox の「コントロール配列」なのでしょうか?
コントロール配列になっております。

> KeyPress イベントの引数を良く見てください。『KeyAscii As Integer』になっていますよね。
仰るとおり、型がそもそも違っておりました。

> 書くとすれば、
>  Private Sub txt_KeyPress(Index As Integer, KeyAscii As Integer)
>    KeyAscii = Asc(UCase(Chr(KeyAscii)))
>  End Sub
> のようになるでしょう。
有難うございます。
出来ました^^

> であれば、こんな感じで。
>  Private Sub txt_KeyPress(Index As Integer, KeyAscii As Integer)
>    If KeyAscii = Asc("’") Then
>      KeyAscii = 0
>    End If
>  End Sub

本当に助かりました。
有難うございます。
魔界の仮面弁士さんの記述どおりでうまく行きました。

また、よろしくお願いいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -