ユーザーフォームの入力時のマクロについて

このQ&Aのポイント
  • Windows7 excell2010でのVBAについての質問です。参照図にあるUserForm1に入力する際に、日付、顧客名、売上のIMEの設定を自動的に行いたいです。
  • 質問者はWindows7とExcel 2010を使用しており、VBAについて勉強中です。UserForm1に入力する際に、日付、顧客名、売上のIMEを自動的に設定するマクロの記述方法を教えていただきたいと思っています。
  • Windows7とExcel 2010を使用している質問者は、VBAを学んでいる最中です。UserForm1に入力する際に、日付には半角数値、顧客名にはひらがな、売上には半角数値のIME設定を自動的に行うマクロを作成したいと考えています。
回答を見る
  • ベストアンサー

ユーザーフォームの入力時のマクロについて

いつもお世話になります。 Windows7 excell2010 です。 今まさにVBAをやり出してあまりわかっていませんが下記のようにまでになったところです。 ご指導をいただきたいのは、 参照図にあるUserForm1に入力するとき、 「日付」 ime が 半角数値 「顧客名」ime が ひらがな 「売上」 ime が 半角数値 を自動的にする マクロ を記述したいです。 ご指導いたたければ幸いです。 下記のようなマクロが記述されています。 ※UserForm1 コード表示 Private Sub CommandButton1_Click() n = 1 Do n = n + 1 Loop While Cells(n, 1) <> "" Cells(n, 1) = UserForm1.TextBox1.Text Cells(n, 2) = UserForm1.TextBox2.Text Cells(n, 3) = UserForm1.TextBox3.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub ※標準モジュール Sub FormSample() Do UserForm1.Show Loop End Sub Sub Test() MsgBox "ボタンによるマクロの実行" End Sub

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

  • ベストアンサー
  • mi-tan
  • ベストアンサー率32% (26/79)
回答No.2

IMEの設定だけなら、 VBEのプロパティウィンドウで各オブジェクトに 設定するのはいかがでしょうか?

dorasuke
質問者

お礼

コードとプロパティの両方で設定ましたら「TRUE」が表示され その後試行錯誤の結果、プロパティのみに設定するとうまくゆきました。 誠に有難うございました。

dorasuke
質問者

補足

ご指導いただいて下記のようにしました。 ※プロパティ Cells(n, 1)の所 fmIMEModeAlpha Cells(n, 2)の所 fmIMEModeHiragana Cells(n, 3)の所 fmIMEModeAlpha ※コード Private Sub CommandButton1_Click() n = 1 Do n = n + 1 Loop While Cells(n, 1) <> "" Cells(n, 1) = UserForm1.TextBox1.IMEMode = fmIMEModeAlpha Cells(n, 2) = UserForm1.TextBox2.IMEMode = fmIMEModeHiragana Cells(n, 3) = UserForm1.TextBox3.IMEMode = fmIMEModeAlpha Unload Me End Sub 変更しましたがいずれの場合も 入力したセルには TRUE と表示されます。 パソコンのデスクトップのIMEツールバーは確かに変わります。 再度ご指導いただけませんか。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

TextBox1が日付、TextBox2が顧客名、TextBox3が売上だとすると、 TextBox1.IMEMode = 2 TextBox2.IMEMode = 4 TextBox3.IMEMode = 2 の様にします。

dorasuke
質問者

お礼

プロパティは ノーコントロールに設定して試しましたがうまくゆきませんでした。 ご指導には感謝します。 ありがとうございました。

dorasuke
質問者

補足

ご指導いただいて下記のようにしました。 ※プロパティ Cells(n, 1)の所 fmIMEModeAlpha Cells(n, 2)の所 fmIMEModeHiragana Cells(n, 3)の所 fmIMEModeAlpha ※コード Private Sub CommandButton1_Click() n = 1 Do n = n + 1 Loop While Cells(n, 1) <> "" Cells(n, 1) = UserForm1.TextBox1.IMEMode = fmIMEModeAlpha Cells(n, 2) = UserForm1.TextBox2.IMEMode = fmIMEModeHiragana Cells(n, 3) = UserForm1.TextBox3.IMEMode = fmIMEModeAlpha Unload Me End Sub 変更しましたがいずれの場合も 入力したセルには TRUE と表示されます。 パソコンのデスクトップのIMEツールバーは確かに変わります。 再度ご指導いただけませんか。

関連するQ&A

  • ユーザーフォームに入力したデーターが転記できない

    いつもお世話になります。 Windows7 excell2010 です。 いろんなものに勉強してここまでに作成したユーザーフォームですが、データーは入力できるのですがコマンドボタンをクリックしても各セルに反映されません。 色々と試行錯誤していますがうまくゆきません。 どこに不具合があるかわからず恐れ入りますがどなたかご指導いただけませんか。 参考にコードは参考に下記にします。 ユーザフォームのVBAは下記です コード ※Module1 Sub 売上() Do UserForm1.Show Loop End Sub Sub 入金() Do UserForm2.Show Loop End Sub ※UserForm1 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "1" .AddItem "2" .AddItem "3" End With End Sub Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm1.TextBox1.Text Cells(n, 3) = UserForm1.TextBox2.Text Cells(n, 4) = UserForm1.TextBox3.Text Cells(n, 11) = UserForm1.ComboBox1.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub ※UserForm2 Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm2.TextBox1.Text Cells(n, 3) = UserForm2.TextBox2.Text Cells(n, 4) = UserForm2.TextBox3.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub

  • ユーザーフォームVBAでCells(n, 7)が

    いつもお世話になります Windows7 excell2010 です ご指導を仰ぎたいのは参照図で言うと、 TextBox1~6 は順調に入力しますがTextBox7にすると「入力」に飛び 参照図のG13に入力されません。 VBAを勉強し始めたはかりですのでどこが悪いかわかりません。 恐れ入りますがご指導願えませんでしょうか。 下記参考にします。 Module のコードには Sub FormSample() Do UserForm1.Show Loop End Sub Sub Test() MsgBox "ボタンによるマクロの実行" End Sub UserForm1 Private Sub CommandButton1_Click() n = 1 Do n = n + 1 Loop While Cells(n, 1) <> "" Cells(n, 1) = UserForm1.TextBox1.Text Cells(n, 2) = UserForm1.TextBox2.Text Cells(n, 3) = UserForm1.TextBox3.Text Cells(n, 4) = UserForm1.TextBox4.Text Cells(n, 5) = UserForm1.TextBox5.Text Cells(n, 6) = UserForm1.TextBox6.Text Cells(n, 7) = UserForm1.TextBox7.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub

  • ユーザーフォームに今日の日付を

    いつもお世話になります WIN7 EXCELL2010 です。 UserForm1 に下記のように マクロを入れています。 Private Sub CommandButton1_Click() ' y = 2 Do While Cells(y, 2) <> "" y = y + 1 Loop Cells(y, 2) = TextBox1.Text = Format(Date, "mm/dd") Cells(y, 3) = TextBox2.Text Cells(y, 13) = TextBox3.Text Cells(y, 14) = TextBox4.Text TextBox1.Text = Format(Date, "mm/dd") TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox1.SetFocus End Sub USERFORM1 を立ち上げたときに TEXT BOX1 に今日の日付が出るようにしたいのですが上記のマクロでは 表示されません。 色々調べて上記のマクロを作成しました。 恐れ入りますが上のマクロのどこがいけないのかご指導願えませんでしょうか。 よろしくお願いします。

  • ユーザーフォームの内容が一部だけ残らない。

    VBAを始めてまだ1週間ほどなのでどの部分を変えればよいのかわかりません。 どなたかわかる方が居れば回答をお願いします。 問題:下記の構文でTextBox2の内容だけが残らない。 UserFoem1で記入場所が7つあり、ボタン1(入力)を押すと 7つの内容がSheet(履歴表)に転記されます。 ボタン2(終了)を押すとUserFormが消えます。 そして転記された後、内容をそのまま7つのTextBoxに残したいと思っています。 TextBox1(txtDate)日付を自動で表示して、 TextBox3~7までは転記後も内容は残るのですが、 TextBox2の内容だけが残らないのです。 下記の構文はネット上でいろんな方のものをコピペして製作したので、 訳の分からない文字がたくさんあり理解をしていない部分はあります。 ですので回答をいただけるならTextBox2の問題解決と 下記の内容をもっとスマートな形に変えて 不要な部分を削除して頂けたらと思っています。 宜しくお願い致します。 Sub ユーザーフォームで履歴表へ入力する() End Sub Private Sub CommandButton1_Click() Dim n As Long With Worksheets("履歴表") n = .Range("B" & Rows.Count).End(xlUp).Row  'Bの一番下を検索する Cells(n + 1, 2).Value = txtDate.Value    'テキストボックス2に自動で日付を入れてB列へ Cells(n + 1, 3).Value = TextBox2.Value 'C列へ代入 Cells(n + 1, 4).Value = TextBox3.Value 'D列へ代入 Cells(n + 1, 5).Value = TextBox4.Value 'E列へ代入 Cells(n + 1, 6).Value = TextBox5.Value 'F列へ代入 Cells(n + 1, 7).Value = TextBox6.Value 'G列へ代入 Cells(n + 1, 8).Value = TextBox7.Value 'H列へ代入 Range(Cells(n + 1, 2), Cells(n + 1, 2)).Offset(, -1).Value = Range(Cells(n + 1, 2), Cells(n + 1, 2)).Row - 4   'A列に番号を順番に入れる End With TextBox2.Value = "" TextBox2.SetFocus End Sub Private Sub TextBox2_Change() '商品名 End Sub Private Sub TextBox3_Change() '型式・形式 End Sub Private Sub TextBox4_Change() '数量 End Sub Private Sub TextBox5_Change() '客先 End Sub Private Sub TextBox6_Change() '担当 End Sub Private Sub TextBox7_Change() '備考 End Sub Private Sub txtDate_Change() End Sub Private Sub UserForm_Click() End Sub Private Sub UserForm_Initialize() UserForm1.txtDate.Value = Date End Sub Private Sub CommandButton2_Click() Me.Hide End Sub

  • VBA ユーザーフォームでデーターの入力

    いつもお世話になります。 WIN7 EXCELL2010 です。 現在は ユーザーフォームを起動し、 日時   は自動で今日の日付 ID    入力 売上金額 入力 を順次エンターキー クリックをクリックして 「入力」ボタンをクリックすると B C K列にデーターが入力されます。 この現状からいちいち「入力」ボタンをマウスに持ち替えるのはたくさんのデーターを 入力するに面倒で、キーボード上で作業が可能ならば改善したいと思っています。 「入力」ボタンのクリックを「キーボード」のエンター変えたいのですがどうマクロを記述すればいいかご指導いただけませんか。  ※併用が可能ならば「入力」ボタンでのデーター入力もできるのならありがたいのです。 よろしくお願いします。 参考 UserForm1 Private Sub CommandButton1_Click() ' y = 2 Do While Cells(y, 2) <> "" y = y + 1 Loop Cells(y, 2) = TextBox1.Text Cells(y, 3) = TextBox2.Text Cells(y, 4) = TextBox3.Text Cells(y, 11) = TextBox4.Text TextBox1.Text = Format(Date, "mm/dd") TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox1.SetFocus End Sub Module1 Sub FormDisp() UserForm1.Show vbModeless End Sub

  • (VBA)ユーザーフォームの値を、モジュールで使用

    ユーザーフォームを使用したく UserForm1に以下を配置 TextBox1 TextBox2 CommandButton1 CommandButon1に以下のコード書き込みました Private Sub CommandButton1_Click() Dim N As Single Dim M As Single N = UserForm1.TextBox1.Text M = UserForm1.TextBox2.Text Unload UserForm1 End Sub 標準モジュールに以下を記載して ユーザーフォームの値を、モジュールで使用したいのですが [「M=~」で型が一致しません(エラー13)がでます。 「M=~とN=~」 を削除すると MsgBoxの値がM,Nともにゼロになります Public M As Single Public N As Single UserForm1.Show 1 M = UserForm1.TextBox1.Text     ----> ここでエラー13 N = UserForm1.TextBox1.Text MsgBox M MsgBox N ------------------------------ どこでコードが間違っていますか ?

  • ユーザーフォームの切り替えについて・・・

    UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)

  • マクロ ユーザーフォームが表示されない

    いつも回答して頂き、ありがとうございます。 Sub UserForm1() UserForm1.Show End Sub と記述しましたが、エラーが発生し、ユーザーフォームが表示してくれません。 コンパイルエラー:Functionまたは変数が必要です フォームはコマンドボタンを一つ配置し、 Private Sub CommandButton1_Click() Unload UserForm1 End Sub と記述してあるだけです。何が悪いのでしょうか?御教授の程宜しくお願い致します。

  • ユーザーフォームをWorksheet上で表示

    数日前、このカテゴリで相談した事の続きです。 以前の相談は、次の通りです。 http://okwave.jp/qa/q8892460.html この相談の中で出来たことは 1 ユーザーフォームを保存終了 2 Worksheet上にボタンを作成、そのボタンをクリックでユーザーフォームを表示 以上のことはできました。 作成したコードは次のとおりです。   '// Private Sub UserForm_Initialize() With Worksheets("Sheet1")  TextBox1 = .Cells(1, 1).Value  TextBox2 = .Cells(2, 1).Value TextBox3 = .Cells(3, 1).Value TextBox4 = .Cells(4, 1).Value TextBox5 = .Cells(5, 1).Value ).Value End With End Sub Private Sub UserForm_Terminate() With Worksheets("Sheet1")  .Cells(1, 1).Value = TextBox1  .Cells(2, 1).Value = TextBox2 .Cells(3, 1).Value = TextBox3 .Cells(4, 1).Value = TextBox4 .Cells(5, 1).Value = TextBox5 End With End Sub '// Private Sub cmdsyuuryo_Click() Unload Me End Sub Private Sub UserForm_Click() Myform.Show vbModeless End Sub そこで質問です。 現在Worksheet上にボタンを作成、クリックしてユーザーフォームを表示しているの を、WorksheetのセルA1(名前を記述してある)をクリックするだけでユーザーフォー ムを表示する方法はありませんか? ユーザーフォームの保存先は「Sheet1」のA1からA5までです。 できれば、この設定で具体的なコードの記述をお願いします。 Excel2013です。 よろしくお願いします。

  • エクセルVBAユーザーフォーム「テキストボックス」「コンボボックス」の書式設定について

    ユーザーフォームを作成して、出荷実績を投入しようとしています。 現在、ユーザーフォームを作成して、 上から以下のようにボタンが並んでいます。 (1)コンボボックス1  商品コードと商品名を選択する。 (2)テキストボックス1~7  地域ごとの出荷実績を投入する。 (3)コマンドボタン1  決定→入力 (4)コマンドボタン2  終了 そして、以下3つの問題点がありますが、どのようにVBAを記述したら良いのか、わかりません。  a.コンボボックス1に表示される商品を商品コード   (アルファベット)と商品名で改行したい。   つまり「折り返して全体を表示する」ことは出来ないでしょうか。  b.「AAAA~」は5行目・「CCCC~」は7行目 といった   ように、商品ごとに値を投入する行を変更したい。  c.テキストボックス1~6の内容の合計が自動で(入力している   最中に)テキストボックス7に表示されるようにしたい。 次のようなVBAは記述出来たのですが、上記3つの要素を加えるには どのようにしたらよいのか、教えていただけないでしょうか? ちなみに入力する順番は次のようになっています。(設定済み) M4→L4→J4→K4→H4→I4 →M5→L5→J5→K5→H5→I5 ------------------------------------------------------------- ’フォームを表示させる。 Sub formdsp() UserForm1.Show End Sub ’フォーム内容 Dim cnt As Integer Private Sub Combobox1_Change() End Sub '入力ボタン Private Sub CommandButton1_Click() With ActiveSheet .Cells(cnt, 13) = TextBox1.Text .Cells(cnt, 12) = TextBox2.Text .Cells(cnt, 10) = TextBox3.Text .Cells(cnt, 11) = TextBox4.Text .Cells(cnt, 8) = TextBox5.Text .Cells(cnt, 9) = TextBox6.Text .Cells(cnt, 15) = TextBox7.Text cnt = cnt + 1 .Cells(cnt, 13) = Activate End With UserForm1.TextBox1.Text = "" UserForm1.TextBox2.Text = "" UserForm1.TextBox3.Text = "" UserForm1.TextBox4.Text = "" UserForm1.TextBox5.Text = "" UserForm1.TextBox6.Text = "" UserForm1.TextBox7.Text = "" UserForm1.Combobox1.Text = "" UserForm1.TextBox1.SetFocus End Sub '終了ボタン Private Sub CommandButton2_Click() Unload Me End End Sub 'コンボボックス Private Sub userform_initialize() cnt = 4 With UserForm1.Combobox1 .AddItem "AAAA 11111111111" .AddItem "BBBB 22222222222" .AddItem "CCCC 333333333" .AddItem "DDDD 444444" .AddItem "EEEE 5555555555" .AddItem "FFFF 666" .AddItem "GGGG 7777777" .AddItem "HHHH 88888" .AddItem "IIIII 999999999" .AddItem "JJJJ 0000000000000" .AddItem "KKKK 1111" .AddItem "LLLL 222222" .AddItem "MMMM 3333" End With End Sub

専門家に質問してみよう