Excel VBA質問箱 IV

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

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


7529 / 13645 ツリー ←次へ | 前へ→

【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 お礼[未読]

【38385】ユーザーフォームでIMEModeを半角カナなどにすると...
質問  sin  - 06/6/1(木) 13:44 -

引用なし
パスワード
   お世話になります。


困っているのですが、

UserForm1のTextBox1のIMEModeを半角カナにして

1.シートのIMEModeは「直接入力」(IMEModeー0)の状態でUserForm1を開く
      ↓
2.UserForm1のTextBox1を編集後、UserForm1を閉じ、IMEModeを元に戻す
      ↓
3.シートで[半角/全角]ボタンを押して入力モードを変えると、「半角カナ」になってしまう

というもので、シートでは[半角/全角]ボタンを押したとき、「ひらがな」入力モードに
したいのですが、やり方はないでしょうか?
よろしくお願いします。


下記の様にテストしましたが、上手くいきませんでした。
―――――――――――――――――――――――――――――――――――――

'ユーザーフォーム**********************************************************

Private Sub UserForm_Initialize()
  imem = IMEMode
End Sub

Private Sub CommandButton1_Click()
  IMEMode = 4
  IMEMode = imem
  UserForm1.Hide
End Sub


'標準モジュール**********************************************************

Public imem As Integer

Sub test()
  UserForm1.Show
  Unload UserForm1
  IMEMode = 4
  IMEMode = imem
End Sub


―――――――――――――――――――――――――――――――――――――

【38426】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  ハト  - 06/6/2(金) 15:33 -

引用なし
パスワード
   こんにちは

確認させてください

>UserForm1のTextBox1のIMEModeを半角カナにして
これはTextBox1のプロパティでIMEModeを半角カナに設定したという事ですか?


>1.シートのIMEModeは「直接入力」(IMEModeー0)の状態でUserForm1を開く
>      ↓
>2.UserForm1のTextBox1を編集後、UserForm1を閉じ、IMEModeを元に戻す
>      ↓
>3.シートで[半角/全角]ボタンを押して入力モードを変えると、「半角カナ」になってしまう
>
>というもので、シートでは[半角/全角]ボタンを押したとき、「ひらがな」入力モードに
>したいのですが、やり方はないでしょうか?
>よろしくお願いします。

フォームを開く前のモードが何であってもフォームを閉じた後、
[半角/全角]ボタンを押したとき、「ひらがな」入力モードにしたいということでしょうか?

>
>
>下記の様にテストしましたが、上手くいきませんでした。
>―――――――――――――――――――――――――――――――――――――
>
>'ユーザーフォーム**********************************************************
>
>Private Sub UserForm_Initialize()
>  imem = IMEMode
>End Sub
>
>Private Sub CommandButton1_Click()
>  IMEMode = 4
>  IMEMode = imem
>  UserForm1.Hide
>End Sub
>
>
>'標準モジュール**********************************************************
>
>Public imem As Integer
>
>Sub test()
>  UserForm1.Show
>  Unload UserForm1
>  IMEMode = 4
>  IMEMode = imem
>End Sub
>
>
>―――――――――――――――――――――――――――――――――――――

IMEMode は単独で使えるものではなく、

テキストボックスのプロパティ
セルの入力規則

を設定する為のものはずです。

上記の場合、IMEMode は宣言されていない、ただの変数扱いになっているんだと思います

【38430】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  ハト  - 06/6/2(金) 16:31 -

引用なし
パスワード
   追記です

>UserForm1のTextBox1のIMEModeを半角カナにして
>
>1.シートのIMEModeは「直接入力」(IMEModeー0)の状態でUserForm1を開く
>      ↓
>2.UserForm1のTextBox1を編集後、UserForm1を閉じ、IMEModeを元に戻す
>      ↓
>3.シートで[半角/全角]ボタンを押して入力モードを変えると、「半角カナ」になってしまう
>

これは単に、シートのIMEModeが1.の前が「半角カナ」なんじゃないですか?

【38432】Re:ユーザーフォームでIMEModeを半角カナなどにす...
お礼  sin  - 06/6/2(金) 17:15 -

引用なし
パスワード
   ▼ハト さん:
ありがとうございます。

>>UserForm1のTextBox1のIMEModeを半角カナにして
>これはTextBox1のプロパティでIMEModeを半角カナに設定したという事ですか?

そうです。「プロパティウィンドウで」という但し書きが抜けてました。
説明不足で申し訳ありません。


>IMEMode は単独で使えるものではなく、
>
>テキストボックスのプロパティ
>セルの入力規則
>
>を設定する為のものはずです。
>
>上記の場合、IMEMode は宣言されていない、ただの変数扱いになっているんだと思います

確かに仰る通り、ただの変数になっていました。
勝手に、「ThisWorkbook」か何かの大きいオブジェクトが省略されているのだと
思い込んでいました。
よく考えれば「.」も無しにプロパティの設定なんか出来ないですね。
基本中の基本だったんですね。お恥ずかしい限りです。
「Value」や「Row」なども含め、プロパティ名を変数名として使えるのをはじめて知りました。
勉強不足ですいません。

おかげでスッキリ解決することが出来ました。
本当にありがとうございました。

【38433】Re:ユーザーフォームでIMEModeを半角カナなどにす...
お礼  sin  - 06/6/2(金) 17:36 -

引用なし
パスワード
   ▼ハト さん:
>追記です
>
>>UserForm1のTextBox1のIMEModeを半角カナにして
>>
>>1.シートのIMEModeは「直接入力」(IMEModeー0)の状態でUserForm1を開く
>>      ↓
>>2.UserForm1のTextBox1を編集後、UserForm1を閉じ、IMEModeを元に戻す
>>      ↓
>>3.シートで[半角/全角]ボタンを押して入力モードを変えると、「半角カナ」になってしまう
>>
>
>これは単に、シートのIMEModeが1.の前が「半角カナ」なんじゃないですか?

いえ、確かに
シートで[半角/全角]ボタンを押してIMEModeが「ひらがな」入力モードであるのを
確認した上で、もう一度[半角/全角]ボタンを押してIMEModeを「直接入力」にして
から1.以降を実施しました。
これも説明不足でした。度々すいません。
本当にありがとうございました。

【38434】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  ハト  - 06/6/2(金) 18:22 -

引用なし
パスワード
   >UserForm1のTextBox1のIMEModeを半角カナにして

これだとTextBox1への入力時だけ半角カナになるはずなんですがねえ
フォームを開く前の入力モードは切り替わらないはずなんです

全く自信はありませんが、
>UserForm1のTextBox1のIMEModeを半角カナにして
これが原因だと仮定すると
フォームに以下のコードを加えて変化があるかどうか・・・

Private Sub UserForm_Initialize()
  TextBox1.IMEMode = fmIMEModeKatakanaHalf
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  TextBox1.IMEMode = fmIMEModeHiragana
End Sub

【38436】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  Poteto  - 06/6/2(金) 20:36 -

引用なし
パスワード
   ▼sin さん:

Private Sub UserForm_Initialize()
  TextBox1.IMEMode = 4
End Sub
これでできると思います。

UserFormに次のコードを入れて試してください。解決のヒントがあると思います。

Private Sub UserForm_Initialize()
  TextBox1.IMEMode = 4
End Sub

Private Sub CommandButton1_Click()
  '4は「ひらかな」5は「カタカナ」8は「半角英数字」
  Cells(65536, 1).End(xlUp).Offset(1) = TextBox1.Value 
  TextBox1 = ""
  TextBox1.SetFocus 
  If TextBox1.IMEMode = 4 Then
    TextBox1.IMEMode = 5
  ElseIf TextBox1.IMEMode = 5 Then
    TextBox1.IMEMode = 8
  ElseIf TextBox1.IMEMode = 8 Then
    TextBox1.IMEMode = 4
  End If 
End Sub

【38441】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  漂流民  - 06/6/2(金) 23:55 -

引用なし
パスワード
   ▼Poteto さん:
こんばんわ

どこかで見たようなコードだと思ったら
私のサンプルコードでしたか(^^)
[#38369]
参考にしていただきありがとうございます。

ただこのスレの質問の内容とは少し違うような・・・


ちなみに、
>  If TextBox1.IMEMode = 4 Then
>    TextBox1.IMEMode = 5
>  ElseIf TextBox1.IMEMode = 5 Then
>    TextBox1.IMEMode = 8
>  ElseIf TextBox1.IMEMode = 8 Then
>    TextBox1.IMEMode = 4
>  End If 
ですが、
後で見て「メンテナンス性の悪い素人丸出しのコードだなぁ」
と思いましたが、わざわざ追記するほどではないと思ったので
書きませんでしたが、

'*********************************************************
  Select Case TextBox1.IMEMode
    Case 4
      TextBox1.IMEMode = 5
    Case 5
      TextBox1.IMEMode = 8
    Case 8
      TextBox1.IMEMode = 4
  End Select
'*********************************************************



'*********************************************************
  Dim Ti As Integer
  
  Ti = TextBox1.IMEMode
  
  Select Case Ti
    Case 4
      Ti = 5
    Case 5
      Ti = 8
    Case 8
      Ti = 4
  End Select
'*********************************************************

とした方が使いやすいと思います。

【38446】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  Poteto  - 06/6/3(土) 8:28 -

引用なし
パスワード
   ▼漂流民 さん:
こんにちは
その通りです。貴殿のコードを書かせていただいたのです。
非常に参考になったので、また私が受け売りでした。
ところでまた、新しいSelectCaseですか?参考にさせていただきます。

>ただこのスレの質問の内容とは少し違うような・・・
>ちなみに、
>>  If TextBox1.IMEMode = 4 Then
>>    TextBox1.IMEMode = 5
>>  ElseIf TextBox1.IMEMode = 5 Then
>>    TextBox1.IMEMode = 8
>>  ElseIf TextBox1.IMEMode = 8 Then
>>    TextBox1.IMEMode = 4
>>  End If 
>ですが、
>後で見て「メンテナンス性の悪い素人丸出しのコードだなぁ」
>と思いましたが、わざわざ追記するほどではないと思ったので
>書きませんでしたが、
>'*********************************************************
>  Select Case TextBox1.IMEMode
>    Case 4
>      TextBox1.IMEMode = 5
>    Case 5
>      TextBox1.IMEMode = 8
>    Case 8
>      TextBox1.IMEMode = 4
>  End Select
>'*********************************************************
>や
>'*********************************************************
>  Dim Ti As Integer  
>  Ti = TextBox1.IMEMode  
>  Select Case Ti
>    Case 4
>      Ti = 5
>    Case 5
>      Ti = 8
>    Case 8
>      Ti = 4
>  End Select
>'*********************************************************
>とした方が使いやすいと思います。

ありがとう御座います。でもSelectCaseの場合は、Commandボタンで入力後、テキストボックスの文字を一旦削除しないと、IMEModeが変わりませんね。そのような意図だったのですか・・・失礼しました。

また、ちょっと教えていただきたいのですが、現在選択されているIMEModoを表示するのはラベルかどこかに出す事はできるのでしょうか?

【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

【38506】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  sin  - 06/6/5(月) 14:06 -

引用なし
パスワード
   ▼ハト さん:

>>UserForm1のTextBox1のIMEModeを半角カナにして
>
>これだとTextBox1への入力時だけ半角カナになるはずなんですがねえ
>フォームを開く前の入力モードは切り替わらないはずなんです

すいません、どうも再現性の低い質問だったようです。
windowsのバージョン officeのバージョンが違うもの
数台のパソコンで試しましたが、再現したりしなかったりでした。
また、設定するタイミングも
・プロパティウィンドウでIMEModeを設定する場合
・UserFormのInitialize時にIMEModeを設定する場合
・TextBox1のEnter時にIMEModeを設定する場合
でそれぞれ再現性が違いました。


>全く自信はありませんが、
>>UserForm1のTextBox1のIMEModeを半角カナにして
>これが原因だと仮定すると
>フォームに以下のコードを加えて変化があるかどうか・・・
>
>Private Sub UserForm_Initialize()
>  TextBox1.IMEMode = fmIMEModeKatakanaHalf
>End Sub
>
>Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
>  TextBox1.IMEMode = fmIMEModeHiragana
>End Sub

【38426】で頂いたアドバイスで、視界が開けました。
タイミングは違うのですが、まさにその考え方で解決させました

Private Sub TextBox1_Enter()
  TextBox1.IMEMode = 6
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  TextBox1.IMEMode = 4
End Sub

にしました。


ただ、シート上のでのIMEModeの取得・設定の仕方が気になったので、
ついでに調べてみたのですが、

↓これで出来ると信じてた(笑)
>>Public imem As Integer
>>  imem = IMEMode
>>  IMEMode = imem

こうなりました・・・


Option Explicit
Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function ImmGetContext Lib "Imm32.dll" (ByVal hwnd As Long) As Long
Public Declare Function ImmReleaseContext Lib "Imm32.dll" (ByVal hwnd As Long, ByVal hIMC As Long) As Long

Public Declare Function ImmGetOpenStatus Lib "Imm32.dll" (ByVal hIMC As Long) As Long
Public Declare Function ImmSetOpenStatus Lib "Imm32.dll" (ByVal hIMC As Long, ByVal fOpen As Long) As Long

Public Declare Function ImmSetConversionStatus Lib "Imm32.dll" _
  (ByVal hIMC As Long, ByVal fdwConversion As Long, fdwSentence As Long) As Long
Public Declare Function ImmGetConversionStatus Lib "Imm32.dll" _
  (ByVal hIMC As Long, lpfdwConversion As Long, lpfdwSentence As Long) As Long

Sub test()
'入力モードの切り替え 「直接」→「ひらがな」→「半角カナ」→・・・
  Dim hwnd As Long
  Dim cime As Long
  Dim simm As Long
  Dim conv As Long
  Dim sent As Long

  hwnd = FindWindow(vbNullString, Application.Caption)
  cime = ImmGetContext(hwnd)
  simm = ImmGetOpenStatus(cime)
  Call ImmGetConversionStatus(cime, conv, sent)

  If simm = 0 Then
    simm = 1
    conv = 25
  ElseIf conv = 25 Then
    conv = 19
  Else
    simm = 0
    conv = 25
  End If

  Call ImmSetConversionStatus(cime, conv, sent)
  Call ImmSetOpenStatus(cime, simm)
  Call ImmReleaseContext(hwnd, cime)

End Sub


こんな方法しかないのでしょうか?
(一通り調べたつもりですが・・・)
WorkbooksとかApplicationあたりのプロパティ
にありそうな気がするんですが・・・

【38511】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  ハト  - 06/6/5(月) 15:46 -

引用なし
パスワード
   ▼sin さん:

>すいません、どうも再現性の低い質問だったようです。
>windowsのバージョン officeのバージョンが違うもの
>数台のパソコンで試しましたが、再現したりしなかったりでした。
>また、設定するタイミングも
>・プロパティウィンドウでIMEModeを設定する場合
>・UserFormのInitialize時にIMEModeを設定する場合
>・TextBox1のEnter時にIMEModeを設定する場合
>でそれぞれ再現性が違いました。

それは、難しいですね


>【38426】で頂いたアドバイスで、視界が開けました。
>タイミングは違うのですが、まさにその考え方で解決させました
>
>Private Sub TextBox1_Enter()
>  TextBox1.IMEMode = 6
>End Sub
>
>Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
>  TextBox1.IMEMode = 4
>End Sub
>
>にしました。

解決の参考になったようですね
よかった(^^;

>ただ、シート上のでのIMEModeの取得・設定の仕方が気になったので、
>ついでに調べてみたのですが、

API関数ですね、確かにそれならできますね

>こんな方法しかないのでしょうか?
>(一通り調べたつもりですが・・・)
>WorkbooksとかApplicationあたりのプロパティ
>にありそうな気がするんですが・・・

残念ながらプロパティにはなさそうです
ただ、関数に IMEStatus というのがあります
その時の IMEMode を返してくれますので
値の取得はできますが、設定はできないようです

【38512】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  ハチ  - 06/6/5(月) 15:51 -

引用なし
パスワード
   ▼sin さん:

特定のCellの範囲だけでよければ、入力規則で設定することは可能ですが。
入力規則がすでに設定されている場合は、
Deleteをするどうかチェックする必要があります。

'A1〜B10までを日本語入力にする。
Sub test()

With ActiveSheet.Range("A1:B10")
  .Validation.Delete
  .Validation.Add Type:=xlValidateInputOnly
  .Validation.IMEMode = xlIMEModeHiragana
End With

End Sub

【38515】Re:ユーザーフォームでIMEModeを半角カナなどにす...
発言  ichinose  - 06/6/5(月) 16:16 -

引用なし
パスワード
   こんにちは。


>こんな方法しかないのでしょうか?
Office XP(2002)付属のIME2002って色々と問題が多いと聞いています。
私は、入力規則のIME設定を使うことがあります。

これを工夫して使うことは出来ませんか?
Sub test()
  UserForm1.Show
  Range("a1").Activate 'a1を入力規則でIMEをひらがなに予め設定しておきます
End Sub

【38527】Re:ユーザーフォームでIMEModeを半角カナなどにす...
お礼  sin  - 06/6/5(月) 18:40 -

引用なし
パスワード
   ▼ハト さん:
ありがとうございます。

>残念ながらプロパティにはなさそうです
>ただ、関数に IMEStatus というのがあります
>その時の IMEMode を返してくれますので
>値の取得はできますが、設定はできないようです

やはり出来そうもないですか・・・
取得ができるなら設定もできて良さそうなものですが・・・

今回はいろいろと勉強になりました。
本当にありがとうございました。

【38550】Re:ユーザーフォームでIMEModeを半角カナなどにす...
お礼  sin  - 06/6/6(火) 12:17 -

引用なし
パスワード
   ▼ハチ さん:
>▼sin さん:
>
>特定のCellの範囲だけでよければ、入力規則で設定することは可能ですが。
>入力規則がすでに設定されている場合は、
>Deleteをするどうかチェックする必要があります。
>
>'A1〜B10までを日本語入力にする。
>Sub test()
>
>With ActiveSheet.Range("A1:B10")
>  .Validation.Delete
>  .Validation.Add Type:=xlValidateInputOnly
>  .Validation.IMEMode = xlIMEModeHiragana
>End With
>
>End Sub

やはりBookなどではできないようですね。
ありがとうございました。

【38551】Re:ユーザーフォームでIMEModeを半角カナなどにす...
お礼  sin  - 06/6/6(火) 12:18 -

引用なし
パスワード
   ▼ichinose さん:
>こんにちは。
>
>
>>こんな方法しかないのでしょうか?
>Office XP(2002)付属のIME2002って色々と問題が多いと聞いています。
すいません、私の環境はさらに古いOffice200/IME2000です。^^;

>私は、入力規則のIME設定を使うことがあります。
>
>これを工夫して使うことは出来ませんか?
>Sub test()
>  UserForm1.Show
>  Range("a1").Activate 'a1を入力規則でIMEをひらがなに予め設定しておきます
>End Sub
問題はフォームを閉じてシートに戻った時のIMEでトラブっていました。
ありがとうございました。

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