エクセルVBAでIME入力モードの制御について教えてください。
Sub IMEの現在の状態()
状態 = IMEStatus()
MsgBox 状態 & "です", vbInformation, "IMEの現在の状態"
End Sub
これでIMEStatus関数の戻り値が
1 オンの状態
2 オフの状態
4 全角ひらがな入力モード
5 全角カタカナ入力モード
6 半角カタカナ入力モード
7 全角英数入力モード
8 半角英数入力モード
であることがわかりましたが、逆にIMEの状態を設定するにはどのように記述すればいいのでしょうか?
たとえば、Sheets("AAA").Range("B1:B20")は「半角英数入力モード」にする場合。
DialogSheets("GGG")のダイアローグを呼び出したとき、その中のEditboxes("HHH")には「全角ひらがな入力モード」。
などです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
えーっと・・・基礎はないけど実践だけで何とかやってるというレベルなんですねぇ。
まぁ私も似たようなもんなんですが。VBAの本など読まれることをお勧めしますよ。貴方の場合、全くの初心者が読むよりは遥かに得られるものがあるかと思います。
で
IMEモードの切り替えがマクロに記録されない点については、IMEの管轄はエクセルではないためです。まぁそれでもコードから直接操作することは可能なんですが。
前回のマクロはデータ>入力規則からした作業をマクロで記録しただけです。細かく解説すると
特定のセル(Range("A1")とか)に
入力規則(Validation)を
追加する(Add)
という意味合いなんですよ。
で「Editboxes」というのはおそらくTEXTBOXの一種ですよね。その上に入力規則を追加しようとしても反映されないのは当然で、セルにはValidationというプロパティが用意されていますが、TEXTBOXにはありません。
但しTEXTBOXはIMEmodeのプロパティを直接持っていますから
TEXTBOX.IMEmode=1
というような感じで設定できます。
しかしおそらくですが、組み込みダイアログはその辺の自由度がありませんので、Editboxesのプロパティが操作できない、というか元からIMEmodeを持ってないのじゃないのかなと。
ですので最初からフォームで作れと何度も言ってる訳なんですが。今更95時代の遺産を使うのもなんですし。
なんどもありがとうございます。
Sub IME_ひらがな2()
DialogSheets("Dialog1").EditBoxes("テストエディット").IMEMode = 4
DialogSheets("Dialog1").Show
End Sub
とやりましたがだめでした。「実行時エラー438 オブジェクトはこのメソッドまたはプロパティをサポートしていません」だそうです。
> 最初からフォームで作れと何度も言ってる訳なんですが。
> 今更95時代の遺産を使うのもなんですし。
ほんとにそうですね。でも残念ながらEXCEL97以降のユーザーフォームはよくわからないので使ったことがないのです。勉強しなくちゃいけませんね。
ありがとうございました。
No.2
- 回答日時:
1番ですけど。
変更を記録してくれないとはどういう意味なんでしょうか。どういう手順でやられているんでしょうかね。
Sub Macro1()
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween :=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeKatakanaHalf
.ShowInput = True
.ShowError = True
End With
End Sub
普通にやったらこうなりましたよ。
でちょっと修正
Sub IME_settei()
With Sheets("Sheet1").Range("A1:A10").Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator :=xlBetween
.IMEMode = xlIMEModeAlpha
End With
End Sub
・Validationまで分かっていたなら後はヘルプ読んだほうが早いです。
・組み込みダイアログのプロパティの設定が出来ないのなら新しいフォームを作るというのは無理なのでしょうか。
ありがとうございます。
シートの選択した部分への設定はこれでうまく行きました!
>変更を記録してくれないとはどういう意味なんでしょうか
ツール→マクロ→新しいマクロの記録、でIMEをいじってもその操作はモジュールシートに出てこないのです。
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2003/9/20 ユーザー名 : XXXX,YYY
'
'
Range("F1:G4").Select
End Sub
って感じです。
>・Validationまで分かっていたなら後はヘルプ読んだほうが早いです。
いや、ぜんぜんわかっていないのです。ただコピペしただけ(笑)
>・組み込みダイアログのプロパティの設定が出来ないのなら新しいフォームを作るというのは無理なのでしょうか。
Application.Dialogs(xlDialogOpen).Show などの組み込みダイアローグではなく、シートタブクリック→右クリック→挿入、でだせるMS EXCEL5.0ダイアローグなのです。
挿入したダイアローグシートにエディットボックスを貼り付け、
Sub IME_ひらがな()
With DialogSheets("Dialog1").EditBoxes("テストエディット").Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
.IMEMode = xlIMEModeHiragana
End With
DialogSheets("Dialog1").Show
End Sub
とやってみましたがエラーで駄目でした。
No.1
- 回答日時:
IMEModeプロパティを使います。
ヘルプによればシート上のそれを設定するには、入力規則を設定するやりかたしかないようです。
例文はマクロの自動記録でつくってみれば一発でわかるでしょう。
DialogSheetsは触ったことないのでわかりませんが(一昔前の組み込みダイアログですか?)Editboxesのプロパティで設定とかできないんでしょうかね? できないのなら素直に新たなフォームを作ったほうが早いんじゃないかなと。
この回答への補足
さっそくありがとうございます。
マクロの自動記録はもちろんやってみましたが、IME入力モードの変更を記録してくれません。
Sub IMEひらがな設定()
Sheets("Sheet1").Range("A1:A10").Validation.IMEMode = xlIMEModeHiragana
End Sub
いろいろ検索して、上記もやってみましたがエラーでした。
DialogSheetsは MS EXCEL 5.0ダイアローグです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Mac OS Macにおける全角・半角の切り替え(自動のそれの停止) 2 2022/09/13 16:42
- ノートパソコン ”IMEが無効です” というメッセージが出ます! 4 2023/05/02 09:56
- マウス・キーボード キーボード(半角/全角 漢字)のキーから 入力モード 2 2022/11/23 09:58
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Windows 10 なぜか全角カタカナ入力になってしまう (USキーボード、「Alt」 + 「`」) 1 2022/06/29 13:22
- 地図・道路 クロネコヤマトのメンバーズで番地変更できません 例えば私の家の番地が12-3とかなんですが、そしたら 2 2022/07/10 19:29
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
excelのInputBoxで日本語入力OFFにしたい
Excel(エクセル)
-
全角/半角キーをSendkeys関数で使用できますか?
Visual Basic(VBA)
-
【Excel】 VBAでIMEの操作はできますか?
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
EXCEL VBA でインプットボックスを開いたときの入力モードの設定について
Excel(エクセル)
-
6
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
7
IMEを制御するマクロについて教えてください
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
ExcelVBA:KeyCode「半角/全角」の定数
Visual Basic(VBA)
-
10
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
13
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
14
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
15
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
16
VBAのTextBoxに半角数字のみ入力したい
Visual Basic(VBA)
-
17
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
18
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
19
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
20
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iPhoneでひらがな半角入力でき...
-
半角カタカナの由来、必要性は?
-
エクセルVBAでIME入力モードの制御
-
Switchで半角カタカナを入力したい
-
半角カタカナを使うこと
-
outlook 半角→全角に切替できない
-
半角入力で中丸点はどうやって...
-
エクセルでカタカナをひらがな...
-
ネ + 喜 =ネ喜 ってなん...
-
☆画面中に縦スクロールバー付き...
-
51以降の数字を囲い文字(〇)...
-
「芳」という字の旧漢字を出すには
-
エクセルで10%引く場合の計算...
-
キーボードで四角1を打つには...
-
「角」と言う字の真ん中が突き...
-
漢字について質問です。
-
旧漢字
-
エクセルでの100時間後の日時の...
-
Excel上でどれが外字か調べたい
-
漢字の「原」の点のないものはP...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角入力で中丸点はどうやって...
-
半角カタカナの由来、必要性は?
-
Switchで半角カタカナを入力したい
-
エクセルVBAでIME入力モードの制御
-
エクセルでカタカナをひらがな...
-
iPhoneでひらがな半角入力でき...
-
パナソニックのレッツノートを...
-
半角カタカナを使うこと
-
EXCELでの文字・数字入力の基本...
-
Excel:全角カタカナを入力時に...
-
Macにおける全角・半角の切り替...
-
個人情報入力時の名前の読みが...
-
エクセル-ひらがなから半角カナへ
-
いつの間にか フリック入力が、...
-
Excelユーザーフォーム(テキス...
-
何でカタカナ??
-
MS-IMEの入力モード間違いを防...
-
outlook 半角→全角に切替できない
-
ATOKの入力切り替えをショート...
-
outlook express6 で半角カタカ...
おすすめ情報