• 締切済み

エクセルマクロでIMEのひらがなと英数字の切り替え

エクセルマクロで IMEのひらがなと英数字を切り替える構文を教えてください 参考書やヘルプを見ても 入力規則を設定しなければエラーになるようなので困っています。 Columns(5).Validation.IMEMode = xlIMEModeAlpha これだと 5列目に入力規則を設定していなければ実行時エラーになります。 入力規則を設定せず自由にIMEのオン・オフを切り替えたいのですが どのような構文にすればよいのでしょう

  • JOX
  • お礼率83% (141/169)

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >Columns(5).Validation.IMEMode = xlIMEModeAlpha もともと、こういう方法ではありえないけれども、 >5列目に入力規則を設定していなければ実行時エラーになります。 という理由から、 >入力規則を設定せず自由にIMEのオン・オフを切り替えたいのですが >どのような構文にすればよいのでしょう まず、全体として、どのようなことをしているのか分かりません。 5列目に、数字を入れるとかするなら、「入力規則」でよいと思います。 こういう内容というは、どこか、ひとつの部分を切り出して解決しようとしても、全体の組み立てが必要だと思うのです。 この場合、なぜ、それがうまく行かないか説明すると、セルに入力するためのIMEのステージと、もうひとつは、ワークシートとは直接関係のない段階のIMEのステージの二種類があって、後者の場合は、いくらご希望のステージを整えても、何も役に立たないはずです。 前者の場合は、何か、キーになるイベントが必要なのです。IMEは、セルに入力するのか、また、どこかのコマンドに入力するか、そうした後に、制御されるわけで、そのひとつが、入力規則のIMEコントロールです。 ですから、もし「入力規則」を使ってはならないとするなら、その周辺の説明がないと、切り出されたテクニックを教えても使いこなせないと思います。もちろん、これらは、実務で使うことを想定した話で、もし、単に技術の質問でしたら、専門掲示板のほうがよいかもしれません。今回の件は、私に分からないことではないのですが、私の技術はすぐに底をついてしまうので。

JOX
質問者

お礼

>この場合、なぜ、それがうまく行かないか説明すると、 >セルに入力するためのIMEのステージと、もうひとつは、 >ワークシートとは直接関係のない段階のIMEのステージの二種類があって、 >後者の場合は、いくらご希望のステージを整えても、何も役に立たないはずです なるほど 大変分かりやすいです。 IMEを当たり前のように使用していたので あたかも、IMEがエクセルの機能の一部と勘違いしていました なんだか、根本のところでWinアプリを理解していなかったみたい 気づかせていただき、ありがとうございました。 >ひとつの部分を切り出して解決しようとしても、 >全体の組み立てが必要だと思うのです。 はいそうでした マクロでIMEの切り替えを強引にしたければ シート全体を選択した状態で「入力規則」の日本語入力をオンに すれば、事足りるのですね。 なんだか胸の閊えが取れました。 ありがとうございました。

関連するQ&A

  • .Add Type:=xlValidateInpu

    VbaでA列のみ入力規則でひらがなにしたいのですが、 Sub test() With Columns(“a”).Validation .Delete .IMEMode = xlIMEModeHiragana End With End Sub にすると、実行時エラー1004になります。 .Delete .Add Type:=xlValidateInputOnly .IMEMode = xlIMEModeHiragana にすると、問題ないです。 .Add Type:=xlValidateInputOnly がどういう意味なのか知りたいのですが Validationのヘルプを見ても、 Add Typeに関する記載がありません。 なぜ、Add Typeがないとエラーになるのでしょうか?

  • マクロで入力規則の他の設定を残しIME制御のみ変更

    お世話になります。 Excel2013を使用しています。 今マクロで、選択したセルの入力規則にIME制御(On/OFF)をセットするマクロを作成したいと考えております。 最初、自動記録したものをそのまま保存して使っていましたが、 それを利用すると、選択したセルの入力規則の他のルールまで上書きされてしまっていることに気づきました。 具体的には、たとえば、入力規則の「入力値の種類」を「リスト」にして、値を「東京,大阪,名古屋」に設定し、この3種類をプルダウンリストから選べるようにしていたセルに上記のマクロを実行すると、IMEの自動切り替えはうまく変わっていたのですが、 入力値の種類で「リスト」にしていた設定までもが「すべての値」に上書きされてしまっていました。 自動記録したマクロでは、 With Selection.Validation .Delete .Add Type:=tp, AlertStyle:=xlValidAlertStop, Operator _ :=xlBetween .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeHiragana ・・・(1) .ShowInput = True .ShowError = True End With となっていましたので、(1)以外の他の部分が余計なのかと思い、 Selection.Validation.IMEMode = xlIMEModeHiragana としましたところ、エラーが発生していました。 そこで、いろいろ調べて With Selection.Validation .Delete .Add Type:=xlValidateInputOnly .IMEMode = xlIMEModeHiragana End With としてみましたが、やはり「入力値の種類」が「すべての値」おに書き換わってしまっていました。 恐らく.Deleteのところで「リスト」の設定が一旦クリアされているように思うので、そこを消したいのですが、消すと、どうやら.Deleteがないといけないらしくエラーが発生してしまいます。 「入力値の種類」を「リスト」のまま残しつつ、IME制御の設定だけをマクロから変更する このような場合のうまいやり方がございましたら、お教え願えますでしょうか。 よろしくお願い致します。

  • 入力規則 ひらがな VBA うまくできない

    シート全体を入力規則でひらがな入力するvbaコードを実行したいのですが Sub Macro2() With Cells.Validation .Delete .IMEMode = xlIMEModeHiragana End With End Sub これだと実行時エラー1004が発生するのですが、何かが間違ってると思うのですが、 どこが変でしょうか? ご教授よろしくお願いします。

  • かな入力でひらがなから英数字の切り替え

    かな入力に設定していて、ひらがなを打つ時と英数字の切り替えはキーボードの左上(Escの下)の半角/全角ボタンで 切り替えています。 それで英数字は(半角英数はabc)と(ABC)の使い分けは abcの時はシフト押さないでABCの時はシフト押しながらにしています。 そこで質問なのですが、複数の人が別の掲示板で >シフトキーを押しながら半角英数文字を打った後(決定前の下線がある状態)F9を押すと全角になる という書き込みをみたのですが、私のPCではなりません 1.どのように設定すればそうなるのですか? 2.かな入力の場合は一般的にはひらがなと英数字の切り替えはどのようにしていますか? 3.abcは半角英数字ですよね? ABCは全角英数字ですよね?  ABCは、どういうのですか? 半角大文字とでも  いうのですか? すみません、笑わずに教えて下さい。

  • Excel2010で入力規則の日本語入力が効かない

    OS・・・Windows XP IME・・・Baidu IME Excel2010について質問です。 会社のパソコンで、Excel2010を使って社員名簿を作成しています。 表の一行目に氏名・ローマ字表記・所属部署・社内メールアドレスなどの項目があり、項目の列ごとに氏名の列は「ひらがな」、ローマ字表記の列は「半角英数」などの入力規則を設定したいのですが、「データ⇒入力規則⇒日本語入力タブ」で日本語入力を変更しても、変更が効きません。 具体的には、「ひらがな(またはオン)」設定にした列から「半角英数字(またはオフ、無効)」に設定した列に移動した時は、IMEの入力モードが「あ」から「_A」へ変わるのですが、逆に「半角英数字」の列から「ひらがな」の列に移動した時は、入力モードが「_A」のままになってしまい、半角/全角キーでモードを変えないといけません。 BaiduIMEとMicrosoftの相性の問題でしょうか。MS IMEも入っているのですが、できればBaiduのほうを使いたいと思っています。 どうすればうまく設定できるでしょうか。 アドバイスをお願いします。

  • IMEの"オン"と"ひらがな"は一緒ですか?

    Access やExcelのIMEの設定で"IME オン"と "IME ひらがな"は一緒ですよね?どちらもそのプロパティを設定した項目にカーソルを置くと入力モードがひらがなになりましたので。何か違いがあるのでしょうか?

  • ひらがな、カタカナの入力ができなくなりました。

    WindowsXPのノートパソコンをつかっています。 タスクバーにある文字の切り替えで、『あ』という表示のひらがなの設定にしてあるのに打った文字は英数字になってしまいます。 また、カタカナ全角、カタカナ半角の設定にしていても英数字になってしまいます。 全角英数字や半角英数字はそれぞれの大きさで英数字で正しく表示されます。 どうすれば、ひらがなやそれを変換して漢字が入力できるようになるでしょうか? 困っています。この質問は別のパソコンで書いています。 文字のプロパティでの設定は、かな入力にしてあります。念のためローマ字入力にして試しましたが、これにしてもやはり英数字が表示されてしまいます。 キー設定や色設定はATOK 、IME97などを試しましたが、どれでも上手くいきません。 再起動したりしても、よくなりません。 よろしくお願いします。  

  • TextBoxのIME制御について

    WinXP環境のVB6でMicrosoft Forms 2.0 Object LibraryのTextBoxを使用していますが、IME制御をするとキー入力が出来なくなります。 TextBoxのプロパティのIMEModeを4-fmIMEModeHiraganaにすると、IMEはちゃんとひらがなになるんですが、キー入力できません。 IMEをキーボードでOffにしてやると入力できます。 いろいろ試行錯誤した結果、Microsoft Forms 2.0 Object LibraryのCommand Buttonを一緒に使うと発生するようですが、その他にも原因があるようです。 デザインの関係上、Microsoft Forms 2.0 Object Libraryを使いたいのですが、ちゃんとひらがな入力できる方法を教えてください。

  • エクセル入力規則のマクロについての質問です。

    エクセル入力規則のマクロについての質問です。  excel2003 os=WindowsXP の環境です。  E列の10行目から57行目、I列の10行目から60行目に1から9999までの数字のみ入力可能の条件を設定しようと下記のプログラムを作ったのですが、全く動いてくれません。ご教授のほどよろしくお願いします。  Private Sub Worksheet_Activate() Range("e10:e48").Select With Selection.Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="0", Formula2:="9999" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "入力制限があります" .InputMessage = "" .ErrorMessage = "登録は9999までしか登録できません。9999以下のの数字を入力下さい。" .IMEMode = xlIMEModeAlpha .ShowInput = True .ShowError = True End With Range("i10:i60").Select With Selection.Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="0", Formula2:="9999" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "入力制限があります。" .InputMessage = "" .ErrorMessage = "登録は9999までしか登録できません。9999以下のの数字を入力下さい。" .IMEMode = xlIMEModeAlpha .ShowInput = True .ShowError = True End With End Sub

  • エクセルVBAで入力規則の列数を取得

    エクセル2013です。 ワークシートのB列、C列、E列に入力規則が設定してあります。 ところが以下のマクロを動かすと Cells.Count は正しく3を返しますが、Columns.Countは2返ります。 B、C、D列に入力規則を設定したときは、Columns.Countはちゃんと3が返ります。 B、D、E列に入力規則を設定したときは、Columns.Countはなんと1が返りました。 なぜでしょうか? Sub TEST01()   With Rows(3).SpecialCells(xlCellTypeAllValidation)     MsgBox .Cells.Count     MsgBox .Columns.Count   End With End Sub

専門家に質問してみよう