Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


43293 / 76732 ←次へ | 前へ→

【38489】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  漂流民  - 06/6/4(日) 16:22 -

引用なし
パスワード
   ▼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

1 hits

【38385】ユーザーフォームでIMEModeを半角カナなどにすると... sin 06/6/1(木) 13:44 質問
【38426】Re:ユーザーフォームでIMEModeを半角カナなどにする... ハト 06/6/2(金) 15:33 発言
【38432】Re:ユーザーフォームでIMEModeを半角カナなどにす... sin 06/6/2(金) 17:15 お礼
【38430】Re:ユーザーフォームでIMEModeを半角カナなどにする... ハト 06/6/2(金) 16:31 発言
【38433】Re:ユーザーフォームでIMEModeを半角カナなどにす... sin 06/6/2(金) 17:36 お礼
【38434】Re:ユーザーフォームでIMEModeを半角カナなどにす... ハト 06/6/2(金) 18:22 発言
【38436】Re:ユーザーフォームでIMEModeを半角カナなどにす... Poteto 06/6/2(金) 20:36 発言
【38441】Re:ユーザーフォームでIMEModeを半角カナなどにす... 漂流民 06/6/2(金) 23:55 発言
【38446】Re:ユーザーフォームでIMEModeを半角カナなどにす... Poteto 06/6/3(土) 8:28 発言
【38489】Re:ユーザーフォームでIMEModeを半角カナなどにす... 漂流民 06/6/4(日) 16:22 発言
【38506】Re:ユーザーフォームでIMEModeを半角カナなどにす... sin 06/6/5(月) 14:06 発言
【38511】Re:ユーザーフォームでIMEModeを半角カナなどにす... ハト 06/6/5(月) 15:46 発言
【38512】Re:ユーザーフォームでIMEModeを半角カナなどにす... ハチ 06/6/5(月) 15:51 発言
【38550】Re:ユーザーフォームでIMEModeを半角カナなどにす... sin 06/6/6(火) 12:17 お礼
【38527】Re:ユーザーフォームでIMEModeを半角カナなどにす... sin 06/6/5(月) 18:40 お礼
【38515】Re:ユーザーフォームでIMEModeを半角カナなどにす... ichinose 06/6/5(月) 16:16 発言
【38551】Re:ユーザーフォームでIMEModeを半角カナなどにす... sin 06/6/6(火) 12:18 お礼

43293 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free