• ベストアンサー

inputboxの日本語入力切替について

VBAのinputbox関数についての質問です inputboxを使ってデータの入力をしたいのですが、日本語入力のONとOFFを自動的に切り替えられる記述はありませんでしょうか。 現在の記述は sub 入力() Dim simei As String simei = InputBox("氏名を入力してください") range("b5").Value = Simei End su のような感じです。inputboxを表示するまえに、言語バーの日本語入力がONの状態になるようにしたいのですが…。よろしくお願いします。

noname#121624
noname#121624

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記で上手く行くようなんですが、いかがですか。 入力規則でひらがなモードに設定。 連続入力を想定しました。途中終了条件を入れてません。 ValidationはRangeオブジェクトに対してのオブジェクト らしいので下記になります。 Sub 入力1() Dim simei As String Worksheets("sheet1").Select For i = 1 To 10 Cells(i, "A").Select With Selection.Validation .Delete .Add Type:=xlValidateInputOnly .IMEMode = xlIMEModeHiragana End With simei = InputBox("氏名を入力してください") Cells(i, "A").Value = simei Next i End Sub http://www2.moug.net/cgi-bin/technic.cgi?exvba+TI05010121参照 .Deleteは必要のようですが。

noname#121624
質問者

お礼

回答いただいた通り実行してみました。 思い通りの結果が得られました。 これで次の行程に進めます。 本当に有難うございました。

その他の回答 (2)

  • eipu
  • ベストアンサー率39% (25/64)
回答No.3

INPUTBOXはIMEモードでいうと「コントロールなし」にあたります。 なので、INPUTBOXを呼び出す前に設定されたIMEモードに依存します。 ですので、#2さんのようにRangeオブジェクトで IMEモードを設定してそれを利用するか Windows APIを使う(下記URL参照)といった手順が考えられます。 ちなみに#2さんのを素直に質問のコードに反映させると 下記になります。 sub 入力() Dim simei As String Range("a1").Select '←どこのrangeでもいいです。IMEmodeの設定を利用するだけですので。 With Selection.Validation .Delete .Add Type:=xlValidateInputOnly .IMEMode = xlIMEModeHiragana End With simei = InputBox("氏名を入力してください") range("b5").Value = Simei End su

参考URL:
http://www.ruriplus.com/msaccess/tch/tch_042.html
noname#121624
質問者

お礼

#2さんにも登校させていただいたのですが、入力規則を利用する方法でうまくゆきました。 皆さんのご親切のおかげです。 有難うございました。

回答No.1

なかなかinputboxでは難しいようですね。 私ならば、ユーザーフォームで代用します。 自分でユーザーフォームを作成し、その上にラベル、テキストボックス、ボタンを配置してinputbox風にして使いますけど…。 その方法ならば簡単に日本語のON、OFFが切り替えられます。配置したtextbox1のプロパティで、IMEModeを4(4-fmIMEModeHiragana)に設定すれば「ひらがな」モードになります。 Private Sub CommandButton1_Click() Unload UserForm1 Range("b5").Value = TextBox1 End Sub コマンドボタンをクリックした時に、上のようなプログラム文にすれば取り敢えずの作業はできると思います。どうしてもinputboxで作業したいのであれば、ヘルプでIMEModeあたりを調べてみてください。 あまり、参考にならなかったかもしれませんが、頑張ってください。

noname#121624
質問者

お礼

早速のご返事ありがとうございます。 InputBoxを使ってなんとかならないものかと…。 IMEModeをもう少し研究してみます。

関連するQ&A

  • excelのInputBoxで日本語入力OFFにしたい

    タイトルの通りです excelのInputBoxで日本語入力OFFにしたいのですが、 VBAでIME(MS-IME)を制御できるのでしょうか。 セルへの入力であれば、入力規則で出来るので、 イメージとしては、そんな感じです。

  • InputBoxでの日本語オン、オフ設定方法

    InputBoxでの日本語オン、オフ自動設定方法が 知りたいです。 具体的には、 エクセルでいうところの、 データ(D)→入力規則(L)→「データの入力規則」ダイアログ内の 日本語タブで日本語入力オン、の設定を、 VB6.0 CCEのプロパティで設定したいです。 例)・InputBoxを2回連続で入力するとき 最初のInputBoxで、自動的に日本語入力オン (Enterキーで入力終了後) 次のInputBoxで、自動的に日本語入力オフ 開発環境:VB6.0 CCE です。 詳しい方、宜しくお願い致します。

  • InputBox関数について教えて下さい。

    InputBox関数について教えて下さい。 記述内容は以下の通りです。 Sub 追加() Dim tuika As Double tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する項目を【全角大文字】で入力して下さい。", _ Left:=700, _ Top:=100, _ Type:=2) If tuika = False Then Exit Sub With Worksheets("Sheet1") .Range("B10").Value = tuika LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet2").Range("A" & LastRow).Value = Worksheets("Sheet1").Range("B10").Value End With End Sub 困っているのは、Type:=2)の部分です。 文字列を指定しているのですが数値は入力出来るのですが肝心の文字列が入力出来ない状況です。 どなたかご指導をお願い致します。 【環境】 OS = WindowsXP SP3 Excel = 2003

  • InputBoxについて

    Sub test1() Dim tmp As String tmp = Application.InputBox("testです") End Sub Sub test2() Dim tmp As String tmp = InputBox("testです") End Sub この二つのコードを比較すると、 test1の方は、ダイアログボックスのタイトルに「入力」が表示され、 四角いインプットボックスが表示されます。 test2の方は、私がいつも使っているインプットボックスなのですが、 「tmp =」と 「InputBox」の間に何かコードが省略されてるのでしょうか? Application.を付ける事によって、形が変わってしまうのでしょうか? また、オブジェクトブラウザを見ると 【1】Function InputBox(Prompt As String, [Title], [Default], [Left], [T Excel.Application のメンバ 【2】Function InputBox(Prompt, [Title], [Default], [XPos], [YPos], [Help VBA.Interaction のメンバ がありましたが、 test1、test2それぞれどちらの事なのでしょうか?

  • エクセル(VBA)上でINPUTBOX以外の入力方法ないでしょうか?

    子供向けに暗算ドリルを作成しようと考えています。 VBAで、Range("A1")=InputBox("答えは?")と記述すれば、シート上にINPUTBOXが現れて、セルA1に答えを入力できますね。画面上にINPUTBOXを表示させるのは、違和感を感じてます。 「A1に問題を次々に表示させ」「A1に”答えは?”と表示させ」「A1に答えを入力させ」「A1に”正解です”表示」するような、スマートな入力方法はありますか?

  • InputBox  String型・Variant

    VBAです。 InputBox  String型・Variant型がエラーにならない理由がわかりません。 Sub 日付型() Dim 日 As Date 日 = InputBox("値をいれてください") End Sub Sub 数値型() Dim i As Long i = InputBox("値をいれてください") End Sub Sub 通貨型() Dim 円 As Currency 円 = InputBox("値をいれてください") End Sub Sub String型() Dim a As String a = InputBox("値をいれてください") End Sub Sub Variant型() Dim v As Variant v = InputBox("値をいれてください") End Sub String型・Variant型以外は、 「実行時エラー '13'; 型が一致しません。」になります。 String型・Variant型はならない理由を教えてください。ご回答よろしくお願いします。

  • エクセルマクロでinputboxメソッドゼロ入力

    エクセル2007です。 以下のマクロで、inputboxメソッドで質問させると、キャンセルボタンを押すと、うまいぐあいに止まります。 しかし、0を押しても、止まってしまいます。本当は、C2にゼロと表示させたいのです。 Sub 練習() Dim myR myR = Application.InputBox(prompt:="数量を入力しなさい", Type:=1) If myR = False Then Exit Sub Range("C2").Value = myR End Sub

  • vba ワークシートを変数を用いて開くには

    初歩的な質問ですが、 ワークシートの書式が新しくなったことで、書き換えをすることになりました。 現在のエクセルファイルから、新しいエクセルファイルへ、セルの値を参照しながら VBAにて作業をしたいのですが、 Sub changesheet() Dim iname As String Dim wbname As String iname = InputBox("ブック名を入力", "対象ブックを入力") wbname = "シート2012(" & iname & ").xls" ActiveSheet.Range("P4").Value = Workbooks(wbname).Worksheets("Sheet1").Range("P4").Value End Sub この記載で実行すると、インデックスが有効範囲にありません とエラーになってしまいます。 変数(inputbox)を用いたセルの参照はどのように記述すればよろしいでしょうか? よろしくお願いします。

  • マクロ inputbox ブランクで入力した時

    いつも回答して頂きありがとうございます。 InputBoxに何も入力せず、OKを押してしまった場合、マクロの処理を終了させたいのですが、どうしたらよろしいでしょうか?宜しくお願い致します。 Sub 名前を入力する() Dim a As Long a = Application.InputBox("班を数字で入力して下さい。", Type:=1) If a = 0 Then MsgBox "キャンセルされました。", vbOKOnly Exit Sub End If With ActiveSheet .Range("E4:F5").Value = Worksheets("名前一覧").Cells(2, a).Value End With End Sub

  • InputBox関数について

    VBAの勉強中です。 教えてください。 INPUTBOX関数で、何も入力しないでの入力も可、とするコードはどうなるでしょうか。 言葉を変えて言えば、入力ボックスが未入力の状態でOKボタンを押すということです。 例えば以下のようにすると、当然ながら「キャンセル」と判断されます。 Sub Test()  Dim myData As String  myData = InputBox("入力してください")   If myData = "" Then     MsgBox "キャンセル"   Else     MsgBox "入力OK"   End If End Sub ■■尚、今回は、メソッドではなくて関数での質問になりますのでその点よろしくお願いします。  

専門家に質問してみよう