• ベストアンサー

VBAについて

UserForm1に、TextBox2、TextBox3、ComboBox1があります。 例えば、それぞれに TextBox2 = 100 TextBox3 = 500 ComboBox1 = abc-def と値をフォームから入力し、 UserForm1に配置された「OK」ボタンをクリックすると、 エクセルシートのH10からM10の結合された一つのセルの中に 100 / 500 abc-def と2段表示させたいのですが、可能でしょうか。 可能でしたら方法を教えて下さい。

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

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

ポイントは (1)セル結合したセルへ値をセットするのは結語前の左上隅のセルをめがけて、代入すること。 その他のセルに代入するとエラーにならないが、何もセットされなかった。 (2)一つのセルの中に、2段表示させたいのですが は、VBCRLFの改行ではなく100/500のあとに、Chr(10)(改行のみ)を入れてabc-defと&でつなぐこと。 Textbox2.text & Textbox3.text & Chr(10) & Combobox1.text (3)そして書式ーセルー配置ー全体を折り返して表示にチェックを入れる。またはVBAで.WrapText=Trueを設定すること。

piopao
質問者

お礼

回答ありがとうございます。 無事解決することができました。 詳しく教えていただき、 本当にありがとうございました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。補足です。 例えば、A1:C5 が結合された状態で、 Range("B2").Value = "AAAA" & vbLf & "BBBB" 無効となって代入されません。結合セルへ代入するのであれば #1 や #2 のご回答のように左上のセルに対して代入するか、次のようにしま す。 Range("B2").MergeArea.Value = "AAAA" & vbLf & "BBBB" Range("B2") の MergeArea プロパティーで セルの結合範囲が Range オブジェクトで返され、その Range オブジェクトに対して代入して います。

piopao
質問者

お礼

回答ありがとうございます。 無事解決することができました。 このような方法もあるのですね。 勉強になりました。 本当にありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Range("H10") = TextBox2 & " / " & TextBox3 & vblf & ComboBox1.value >結合された一つのセル 結合セルは、範囲の左上のセル位置を指定しないと有効になりません。 結合範囲の他のセルを指定しても無効(エラー)になります。 >2段表示させたいのですが 折り返しは VbLf 等で繋ぎます。

piopao
質問者

お礼

回答ありがとうございます。 無事解決することができました。 本当にありがとうございました。

関連するQ&A

  • Excel VBA(Win2000、Office2000)

    現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。 フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。 問題の日付に関する質問についてですが・・・ ユーザーフォーム上に 年を入力するComboBox1 → 2004 月を入力するComboBox2 → 5 日を入力するComboBox3 → 7 *いづれも、プルダウンから数字を選択して入力するようにしています。 この3つの入力値を合わせて、2004/05/07と認識させて、TextBox1に"金"と表示させたいのですが、どのようにしたら良いでしょうか? TextBox1表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。 宜しくお願い致します。

  • エクセルVBAのマクロ文について

    エクセルVBAで、シート上のボタン(フォーム)をクリックすると、UserForm1が表示されてその中のTextBoxに別のシートのセルに入力したいる値を表示させたくて、以下のようにボタン(フォーム)にマクロを入力したのですが、エラーがでてきてうまくいきません。 入力したマクロが間違っているのでしょうか? Sub ボタン1_Click() UserForm1.Show UserForm1.TextBox1 = Sheets("入力").Ranges("D11").Value End Sub すみませんが、ご存知の方、教えてくださいませんか?

  • VBAのエラーについて

    エクセル2007 でマクロのコードを書いています。 開発画面からマクロを実行するとうまくいくのに、エクセルのシートに配置したボタンにそのマクロを登録して実行するとエラーが出てしまいます。 標準モジュールに UserForm1.showを書いており、UserForm1上に配置したコマンドボタンによってUserForm2を表示させているのですが、UserForm2が出る前に、「問題が発生したために、Microsoft Office 2007 Excelを・・・・・・」というような画面が出て強制終了されます。(UserForm1、UserForm2とも modelessで表示しています。) また、開発画面から1度実行すれば、シートに配置しマクロを登録したボタンからでも実行できるようになるのですが、一度、そのブックを保存してから改めて開くと、同じような症状が出てしまいます。 UserForm2のInitializeに問題があるのだと思い、そこのコードをじっくりと見た結果、UserForm2にあるPageの中に配置した特定のComboBoxとCommandButtonに関する処理を非表示にするとエラーが出ないことが判明しました。しかし、それらについての処理は、他のComboBoxなどと同じ処理(セルの値を読み込むような)をしているもので、名前などのミスもありません。(というか、開発画面からの実行では正常に動きます。) ただ、共通していることとしては、そのエラーが出る特定のComboBoxとCommandButtonは、最後の最後で思いついて配置したものであるということだけなのです。  ずっと、いろいろな方向から試しているのですが、わかりません。複雑な説明で申し訳ないのですが、なにかしら情報をお願いします。

  • Excel VBAで年齢を求める(Win2000、Office2000)

    現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。 フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。 ユーザーフォーム上に 年を入力するComboBox1 → 1972 月を入力するComboBox2 → 1 日を入力するComboBox3 → 1 *いづれも、プルダウンから数字を選択して入力するようにしています。 この3つの入力値を合わせて、1972/01/01と認識させて、TextBox1に"32"才と表示させたいのですが・・・現在、3つのComboBoxから日付を変数にセットするところまで出来ています。 ↓ Private Sub ComboBox3_Change() Dim B As Date B = Me.ComboBox1.Value & "/" & Me.ComboBox2.Value & "/" & Me.ComboBox3.Value 問題は、このあと誕生日を求める方法がわからず困っています。 *TextBox1に表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。 宜しくお願い致します。

  • Excell(2003) VBA UserForm上のSheetの参照方法は

    Excell2003にてuserForm1にコントロールとしてスプレッドシートを載せています。 このuserForm1には、別にテキストボックス(textbox1)とコマンドボタンが二つ(commandButton1とCommandButton2)があります。 commandButton1がクリックされたとき、textbox1に入力された値をチェックしたのち、Me(userForm)上のSheet1の適当なセル(たとえばA2)にその値を入力したい。  また、CommandButton2がクリックされたときは、Sheet2のA2に入力したい。その場合Sheet2を表示する動作も必要です。  この場合 Q:本体のSheetではなく、フォーム上のSheetを指定する方法 Q:複数のSheetからなるフォーム上のspledSheetのいずれかを表示する方法  はどのようにしたら良いのでしょう。

  • Excel VBA リストボックスのクリア(Win2000、Office2000)

    Worksheets("Sheet1")に60個程度のTextBoxとComboBoxが並んでいます。(ユーザーフォーム上ではなく、シート上に配置) この各ボックスに入力された値を、ファイルを開いた時(OpenEvent)で入力されている値を消したいのですが、どうしたらよいでしょうか?(終了時でも構いません) 宜しくお願い致します。

  • VBAで最終行の取得について

    UserFormのConboBoxで「○○」を選んで、 UserFormのTextBoxで『あいう』と入力すると、ワークシートに A      B 1 ○○   ×× 2 あいう と表示され、 UserFormのConboBoxで「××」を選んで、 UserFormのTextBoxで『アイウ』と入力すると A      B 1 ○○   ×× 2 あいう  アイウ 3 :    : と表示されるようにしたいと思います。 以下のプログラムまではできています。 ********************************************* Private Sub UserForm_Initialize()  Dim lasClm As Integer, i As Integer  lasClm = Sheet1.Range("A1").End(xlToRight).Column   For i = 1 To lasClm   ComboBox1.AddItem Sheet1.Cells(1, i).Value   Next i End Sub ********************************************* Private Sub CommandButton1_Click()  Select Case ComboBox1.Text  Case Sheet1.Cells(1, 1).Value '「○○」が選択  Sheet1.Cells(2, 1).Value = TextBox1.Text ・・・(1)  Case Sheet1.Cells(1, 2).Value '「××」が選択  Sheet1.Cells(2, 2).Value = TextBox1.Text ・・・(2)  End Select  UserForm1.Hide End Sub ********************************************** 今は(1)、(2)のように直接セルを指定しているのですが、 この部分を各列(A列、B列)の最終行の値を取得して、 最終行+1のセルに順次TextBoxに入力された値を代入していきたいのですが、 どのようにしたらよいのでしょうか。 しかし、A列とB列は同じように値が増えていくとは限りません。 例)    A     B 1 ○○   ×× 2 あいう  アイウ 3 かきく 4 さしす となる場合もあるので、A列とB列それぞれの最終行の値を取得したいと思っています。

  • EXCEL_VBAでCheckBox等の未チェックをMsgBoxで返したい

    EXCEL VBAで入力フォームとして、UserFormにTextBox,ComboBox,OptionnButton,CheckBoxが複数配置してあり、 入力が完了したらCommandButtonをクリックし、テンプレートシートの 各セルに値が反映されるようなBookを想定しています。 ここでCommandButtonをクリックした時に、各入力・チェック項目が抜けている場合、MsgBoxで「○○○に入力漏れがあります」と再入力を促し、全て入力が完了した場合にテンプレートシート(ActiveSheet)に値が反映され、MsgBoxで「入力内容に間違いがなければ印刷、やり直す場合は修正して下さい」と表示させたいのですが、エラー処理ができず、ご教示願えればと思っております。 よろしくお願いします。

  • EXCEL VBAについての質問です

    質問させてください。 添付した画像のような表にて在庫の管理をしたいと考えています。 VBAのフォームを使用し、テキストボックスに入出庫の数値を入れ、 入庫、出庫のボタンを押し、在庫の数値を増減させたいと思っています。 下に書かせていただいたような流れでできないものかと思ったのですが、 3行目と4行目のプログラムがうまく動作させられません。 offsetを使用し、セルをずらすことができるかと思いましたが エラーが出てしまい実行することができませんでした。 どなたか方法をご存知の方がいましたら回答よろしくお願いします。 また、もっとベターな方法がありましたらアドバイスをよろしくお願いします。 Private Sub CommandButton1_Click() '「a」という単精度浮動小数点数型 の変数を宣言する. Dim a As Single 'ワークシート「Sheet1」をアクティブにする. Worksheets("Sheet1").Activate 'textbox1の内容を変数aに入れる. a = TextBox1.Value1 'Comboboxで選択したセルの4つ右隣のセルの値を(A32)に記入する Worksheets("Sheet1").Range("A32") = ComboBox1.Offset(4,0).Value 'セル(A32)と変数aを足し、その値をComboboxで選択したセルの4つ右隣のセルに記入する 'Worksheets("Sheet1").ComboBox1.Offset(4,0).Value = a + ComboBox1.Offset(4,0).Value End Sub

  • excel VBA コンボボックスでシート選択後エラー

    どなたかご教授願います。 ユーザーフォームにコンボボックスを配置し、ブック内のシートすべて選択できるようにしてます。選択後シートに移動するのですが、同じユーザーフォームのテキストボックス等に入力した後、コマンドボタンをクリックするとエラーとなります。しかしテキストボックス等の値は間違いなく入力されています。よろしくお願いします。 Private Sub ComboBox1_Change() → Sheets(Me.ComboBox1.Value).Select       この部分が黄色になってしまいます End Sub Private Sub CommandButton1_Click() Dim myRow As Long ActiveSheet.Select myRow = Range("B65536").End(xlUp).Offset(1, 0).Row '各テキストボックの値をセルに入力 Cells(myRow, 2).Value = TextBox1.Value Cells(myRow, 3).Value = TextBox1.Value Cells(myRow, 4).Value = ComboBox2.Value Cells(myRow, 6).Value = TextBox2.Value Cells(myRow, 7).Value = TextBox3.Value Cells(myRow, 8).Value = TextBox4.Value 'Cells(myRow, 9).Value = TextBox5.Value '書式設定 Cells(myRow, 2).NumberFormatLocal = "m" Cells(myRow, 3).NumberFormatLocal = "dd" Cells(myRow, 6).NumberFormatLocal = "#,###" 'セルに入力が各テキストボックの値をクリア ComboBox1.Value = "" ComboBox2.Value = "" TextBox2.Value = "" TextBox3.Value = "" TextBox4.Value = "" 'フォーカス移動 ComboBox2.SetFocus End Sub

専門家に質問してみよう