ユーザーフォームの値を結合セルに貼り付ける方法

このQ&Aのポイント
  • ユーザーフォームで入力された値を結合セルに貼り付ける方法について解説します。
  • 結合セルが複数あり、結合セルの個数が2個、3個、4個などである場合における処理方法についても説明します。
  • 保存コマンドボタンを押すと、TextBox4に入力された連絡先の値がユーザー情報シートの次の行の結合セルに入るだけのプロシージャが実行されます。
回答を見る
  • ベストアンサー

ユーザーフォームの値を結合セルに貼り付けるには?

よろしくお願いします。 ユーザー情報と言うシートのA2:ACの結合セルA2、D2とE2の結合セルD2、F2:J2までの結合セルF2、K2:L2の結合セルK2があります。 A2には名前、D2には年齢、F2には住所、K2には連絡先の項目があります。 ユーザー入力フォームはTextBox1に名前、TextBox2に年齢、TextBox3に住所、TextBox4に連絡先の入力個所を設けました。 保存コマンドボタンと、閉じるコマンドボタンを設置してあります。 以下のプロシージャーを保存コマンドボタンに割り当てて実行すると、TextBox4の連絡先の値がユーザー情報と言うシートのA3に入るだけです。 結合していなければ、順番に問題なく入るのですが、結合セルが複数あり、結合セルの個数が2個だったり、3個だったり、4個だったりする 場合、どうすればよいでしょうか? Private Sub CommandButton1_Click() Dim lastRow As Long With Worksheets("ユーザー情報") lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 .Cells(lastRow, 1) = Me.TextBox1.Text .Cells(lastRow, 1) = Me.TextBox2.Text .Cells(lastRow, 1) = Me.TextBox3.Text .Cells(lastRow, 1) = Me.TextBox4.Text End With End Sub

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1478)
回答No.1

.Cells(lastRow, "A") = Me.TextBox1.Text .Cells(lastRow, "D") = Me.TextBox2.Text .Cells(lastRow, "F") = Me.TextBox3.Text .Cells(lastRow, "K") = Me.TextBox4.Text にすればいいと思いますが。 結合セルは関係ないと思います。 なんで全て1になっているのか判りません。

shibushijuko
質問者

お礼

ご回答ありがとうございます。思い通りで出来ました。m(_ _)m

その他の回答 (1)

noname#232800
noname#232800
回答No.2

いつも間違うんだけど a,1 b,1 c,1 d,1 e,1 a,2 b,2 c,2 d,2 e,2 a,3 b,3 c,3 d,3 e,3 でしょ?  でも、セルは cells(2,d) の順でしょ?(実際には 2,4 と記述) .Cells(lastRow, 1) = Me.TextBox1.Text .Cells(lastRow + 1, 1) = Me.TextBox2.Text .Cells(lastRow + 2, 1) = Me.TextBox3.Text .Cells(lastRow + 3, 1) = Me.TextBox4.Text ・・・・・でも、意味が違う .Cells(lastRow, 1) = Me.TextBox1.Text .Cells(lastRow, 4) = Me.TextBox2.Text .Cells(lastRow, 6) = Me.TextBox3.Text .Cells(lastRow, 11) = Me.TextBox4.Text ・・・・が正解だとして (さらに、Me要らねんじゃね? ペアレント(親)が Worksheetだし) 結合したら、4 が 5、6 が 7、11 が 12に変わる・・・ んんん~ プログラム記述後は合体禁止

shibushijuko
質問者

お礼

ご回答ありがとうございます。結合した列の最初の番号を入れればいいんですね。Meのご指摘、ありがとうございます。そもそもMeの意味を分からず使用していました。もう少し勉強します。m(_ _)m

関連するQ&A

  • エクセル ユーザーフォームでVLOOK

    ユーザーフォームのテキストボックスで、ご教示お願いいたします。 現在、以下のようなコードこちらで教えていただきセルに入力をしております。 テキストボックス5に値を入れ、 listのシートから該当する文字をテキストボックス6に表示させたいと思っております。 ■現在のコード '// Private Sub CommandButton1_Click() Dim LastRow As Long 'ここはキャメル形式やパスカル形式にします/大文字は定数です。 Dim i As Long '/テキストボックスに値があるか調べる For i = 1 To 7 Next i '/セルに書き込み With Worksheets("Sheet1") LastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 For i = 1 To 7 .Cells(LastRow, i).Value = Me.Controls("TextBox" & i).Value Next End With '/TextBox1-7をクリア If MsgBox("テキストボックスを空にしてよろしいですか?", vbQuestion + vbYesNo) = vbYes Then For i = 1 To 7 Me.Controls("TextBox" & i).Value = "" Next i End If 'TextBox1にフォーカスを移動 Me.TextBox1.SetFocus End Sub ■付け足したいコード Private Sub textbox5_change() Dim temp, x temp = Me.textBox5.Value If IsNumeric(temp) Then temp = Val(temp) x = Application.VLookUp(temp, Sheets("list").Range("a1:b20"), 2, False) If Not IsError(x) Then Me.TextBox6.Value = x Else MsgBox Me.TextBox5.Value & " はリストにありません" End If End Sub 【質問内容】 付け足したいコードは上記の通りですが、どのように付け足せばいいのかが分からず、 困っております。 度々で申し訳ありませんが、テキストボックス5の値を見て、 テキストボックス6に表示させるやり方をご教示お願いいたします。

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

    いつもお世話になります。 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

  • ユーザーフォームを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です。 よろしくお願いします。

  • ユーザーフォームのテキストボックスでVLOOK

    ユーザーフォームのテキストボックスで、ご教示お願いいたします。 現在、以下のようなコードこちらで教えていただきセルに入力をしております。 上から順番に入力した際、テキストボックス5に値を入たら、 listのシートから該当するもの(項目は20個)をテキストボックス6に表示させたいと思っております。 ■現在のコード '// Private Sub CommandButton1_Click() Dim LastRow As Long 'ここはキャメル形式やパスカル形式にします/大文字は定数です。 Dim i As Long '/テキストボックスに値があるか調べる For i = 1 To 7 Next i '/セルに書き込み With Worksheets("Sheet1") LastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 For i = 1 To 7 .Cells(LastRow, i).Value = Me.Controls("TextBox" & i).Value Next End With '/TextBox1-7をクリア If MsgBox("テキストボックスを空にしてよろしいですか?", vbQuestion + vbYesNo) = vbYes Then For i = 1 To 7 Me.Controls("TextBox" & i).Value = "" Next i End If 'TextBox1にフォーカスを移動 Me.TextBox1.SetFocus End Sub ■付け足したいコード Private Sub textbox5_change() Dim temp, x temp = Me.textBox5.Value If IsNumeric(temp) Then temp = Val(temp) x = Application.VLookUp(temp, Sheets("list").Range("a1:b20"), 2, False) If Not IsError(x) Then Me.TextBox6.Value = x Else MsgBox Me.TextBox5.Value & " はリストにありません" End If End Sub 【質問内容】 付け足したいコードは上記の通りですが、どのように付け足せばいいのかが分からず、 困っております。 度々で申し訳ありませんが、テキストボックス5の値を見て、 テキストボックス6に表示させるやり方をご教示お願いいたします。

  • ユーザーフォームでの任意の文字を含む検索について

    初心者の質問で申し訳ございません。 ユーザーフォームを利用して検索ボタンを作りました。 ユーザーフォームでテキストボックスを2個と コマンドボタン1個を作成し、 テキストボックス1に検索したい氏名を入力して コマンドボタンを押すと、 ワークシートに作成されたデータのD列から 一致するものを検索し、 一致したデータのA列にある「番号」をテキストボックス2、 表示する。 このサイトで教えていただき、以下のようなプログラムで 検索することができました。 しかし、テキストボックス1の文字が完全に一致すれば結果は出るのですが、 文字を含むものを検索するように改良したいのですがどのようにすればいいのか 分からず困っています。 よろしくお願いいたします。 ************************** Private Sub CommandButton1_Click() Dim res  If TextBox1.Text <> "" Then   res = Application.Match(TextBox1.Text, Sheets("データ").Columns(4), 0)   If IsNumeric(res) Then    TextBox2.Text = Sheets("データ").Cells(res, "A").Value   Else    TextBox2.Text = "Not Found"   End If  Else   TextBox2.Text = ""  End If End Sub

  • エクセルのユーザーフォームについて

    パスワード入力用のしかけです。 ワークシートに配置したコマンドボタンを押してユーザーフォームを呼び出します。 Private Sub CommandButton1_Click() UserForm1.Show End Sub ユーザーフォームにはテキストボックスとコマンドボタンを配置しております。 テキストボックスのPasswordCharには * を設定しました。 Private Sub CommandButton1_Click() If StrConv(TextBox1.Text, vbLowerCase) = "abcd" Then MsgBox "OK!" Unload Me Else TextBox1.Text = "" TextBox1.SetFocus End If End Sub これで、ABCDまたはabcdと入力され、ユーザーフォーム上のコマンドボタンをクリックすれば、ユーザーフォームは消えます。 でも、いちいちマウスでクリックするのが面倒なのでEnterキー1回でユーザーフォームを消したいのです。 今でも、一度Enterキーを押すと、ボタンにフォーカスが移動するので、さらにEnterで消えますが、二度ではなくEnterキー1回でユーザーフォームを消すにはどうすればよいのでしょうか? ユーザーフォームは使ったことがないのでわかりません。 よろしくお願いします。

  • ユーザーフォーム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

  • 結合セルに結合していないセルの値を貼り付けたいです。

    結合セルに結合していないセルの値を貼り付けたいです。 シート1の1行目の[A1-B1-C1-D1]を結合しています。以下同じように[E1-F1-G1-H1]…のように4つづつ結合しています。 この行に、シート2のA1→B1→C1と続く結合していないセルのデータを貼り付けたいのですが、やりかたがわかりません。色々やってみたのですが、うまくゆきません。ご教授お願いいたします。

  • ユーザーフォームの氏名のテキストで「様」を

    いつもお世話になります。 WIN7 EXCELL2010 です。 ユーザ―フォームのVBAが下記です。 御指導を仰ぎたいのは TextBox3.Text = "" ここに氏名が入りますがユーザーフォームで、 例えば「石井 徹」と入力したら”様”とデーター欄に「石井 徹様」となるには可能でしょうか。 もし可能ならばどうすればいいのかをご教授いただけないでしょうか。 Private Sub CommandButton1_Click() ' y = 2 Do While Cells(y, 2) <> "" y = y + 1 Loop Cells(y, 1) = TextBox1.Text Cells(y, 2) = TextBox2.Text Cells(y, 3) = TextBox3.Text Cells(y, 4) = TextBox4.Text Cells(y, 5) = TextBox5.Text Cells(y, 6) = TextBox6.Text Cells(y, 7) = TextBox7.Text Cells(y, 8) = TextBox8.Text Cells(y, 9) = TextBox9.Text Cells(y, 10) = TextBox10.Text Cells(y, 11) = TextBox11.Text Cells(y, 12) = TextBox12.Text Cells(y, 13) = TextBox13.Text TextBox1.Text = Format(Date, "mm/dd") TextBox2.Text = "" TextBox3.Text = "" ここに氏名が入ります。 TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox7.Text = "" TextBox8.Text = "" TextBox9.Text = "" TextBox10.Text = "" TextBox11.Text = "" TextBox12.Text = "" TextBox13.Text = "" TextBox1.SetFocus End Sub 是非よろしくお願いします。

  • Excelでセルの検索結果をテキストボックスに表示

    先日、この内容の回答が来たのですが、いろいろテストしていたら、検索ボックスに入力して1回目は検索できるのですが、続けて次の検索をしようテキストボックスに入力してボタンを押しても以前の内容で検索されてしまいます。 どこを修正すれば良いのか教えてください。 UserForm1に、検索条件を入れるTextBox4、 該当した行のB,C,D列表示用の、TextBox1、TextBox2,TextBox3の3つ(計4つ)を設けます。 コマンドボタンを1つ(Captionは「検索・次検索」)設けます。検索・次検索ボタンです。 標準モジュールに Public ac As Range Public startaddr As String 変数の次ステップ(イベント)への受け渡し用です。 UserForm1のコマンドボタンのクリック・イベント・プロに Private Sub CommandButton1_Click() Dim r As Range If ac Is Nothing Then d = Range("A65536").End(xlUp).Row With ActiveSheet.Range(Cells(1, "A"), Cells(d, "A")) Set r = .Find(what:=TextBox4) rr = r.Row TextBox1.Text = Cells(rr, "B") TextBox2.Text = Cells(rr, "C") TextBox3.Text = Cells(rr, "D") Set ac = r r.Activate MsgBox ac.Address startaddr = ac.Address Exit Sub End With Else MsgBox ac.Address d = Range("A65536").End(xlUp).Row MsgBox d With ActiveSheet.Range(Cells(1, "A"), Cells(d, "A")) Set r = .FindNext(ac) rr = r.Row TextBox1.Text = Cells(rr, "B") TextBox2.Text = Cells(rr, "C") TextBox3.Text = Cells(rr, "D") Set ac = r r.Activate If r.Address = startaddr Then TextBox1.Text = "終わり" Exit Sub End With End If End Sub

専門家に質問してみよう