|
▼Poteto さん:
こんにちわ
>ありがとう御座います。でもSelectCaseの場合は、Commandボタンで入力後、テキストボックスの文字を一旦削除しないと、
>IMEModeが変わりませんね。そのような意図だったのですか・・・失礼しました。
の
>Commandボタンで入力後、テキストボックスの文字を一旦削除しないと、IMEModeが変わりませんね。
はちょっと分かりませんが・・・
1つ目のコードは、単に判定の対象が1つで複数の値ならSelect Caseを使ったほうが
見やすいという意図です。
2つ目のコードは変数にした方が使いまわしがしやすいという意図ですが・・・
まるで意味不明なことをしていました。
テストもせずに書き込んでしまい、大変申し訳ありませんm(__)m
>また、ちょっと教えていただきたいのですが、現在選択されているIMEModoを表示するのはラベルかどこかに出す事はできるのでしょうか?
こういう事でしょうか?
Label1.Caption = "ひらがな"
これも含めて、
訂正
Dim Ti As Control
Dim lb As Control
Set Ti = TextBox1
Set lb = Label1
Select Case Ti.IMEMode
Case 4
Ti.IMEMode = 5
lb.Caption = Ti.Name & " 入力モード・・・" & "全角カナ"
Case 5
Ti.IMEMode = 8
lb.Caption = Ti.Name & " 入力モード・・・" & "半角英数"
Case 8
Ti.IMEMode = 4
lb.Caption = Ti.Name & " 入力モード・・・" & "ひらがな"
End Select
Set lb = Nothing
Set Ti = Nothing
こうすることで、後々テキストボックスが増えた場合などに対応が楽になります。
例えば、
↓任意の数のテキストボックスに対応
標準モジュール
'===============================================================================
Public tb As Long
Public tcnt() As Long
Sub test()
UserForm1.Show
End Sub
ユーザーフォーム
'===============================================================================
'************************************************************************************
'ラベル・・・1つ、コマンドボタン・・・1つ、テキストボックス・・・好きなだけ を用意してください
'************************************************************************************
Private Sub UserForm_Initialize()
Dim mcc As Long, i As Long, j As Long
mcc = Me.Controls.Count: j = 1
For i = 0 To mcc - 1
If Left(Me.Controls(i).Name, 7) = "TextBox" Then
Me.Controls(i).IMEMode = 4
ReDim Preserve tcnt(j)
tcnt(j) = i: j = j + 1
End If
Next i
Label1.Caption = Me.Controls(LBound(tcnt)).Name & " 入力モード・・・" & "ひらがな"
tb = 1
End Sub
Private Sub CommandButton1_Click()
Dim Ti As Control, Tin As Control, lb As Control
Set Ti = Me.Controls(tcnt(tb))
Set lb = Label1
Cells(65536, 4).End(xlUp).Offset(1) = Ti.Value: Ti = ""
If Ti.IMEMode = 8 Then tb = (tb Mod UBound(tcnt)) + 1
Set Tin = Me.Controls(tcnt(tb))
Select Case Ti.IMEMode
Case 4
Ti.IMEMode = 5
lb.Caption = Tin.Name & " 入力モード・・・" & "全角カナ"
Case 5
Ti.IMEMode = 8
lb.Caption = Tin.Name & " 入力モード・・・" & "半角英数"
Case 8
Ti.IMEMode = 4
lb.Caption = Tin.Name & " 入力モード・・・" & "ひらがな"
End Select
Tin.SetFocus
Set lb = Nothing: Set Ti = Nothing: Set Tin = Nothing
End Sub
|
|