• ベストアンサー

エクセルVBA

例として次のような簡単な表があります(左上をセルA1とします)     1日 2日 3日 A商品 100 200 300 B商品 150 250 210 C商品 100 300 500 ユーザーフォームのテキストボックスに***を入力したとき 日付  ** A商品 *** B商品 *** C商品 *** 日付に対応した商品欄に入力させるには どう記述したらいいのでしょうか?

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

UserForm に TextBox1~TextBox4 と CommandButton があるとして Private Sub CommandButton1_Click() Dim r, i As Integer  If TextBox1.Value = "" Then Exit Sub  With Activesheet   Set r = .Rows(1).Find(what:=TextBox1.Text, after:=.Range("IV1"), _       LookIn:=xlValues, lookat:=xlWhole)   If r Is Nothing Then    MsgBox TextBox1.Text & "は無い。", vbOKOnly + vbInformation, "日付"    Exit Sub   End If   For i = 2 To 4     r.Offset(i - 1, 0).Value = Me.Controls("TextBox" & i).Value   Next i End With End Sub

mentaru
質問者

お礼

できました。ありがとうございました! もうひとつお教えねがいないでしょうか? 下のような表があります(日付はセル結合しています) 日付をaとbに分けて入力します     1日       2日      3日       a   b      a b A商品 100 200   300 100 B商品 150 250   210 250 C商品 100 300    500 300 下のようなユーザーフォームのとき 日付   **            **・・・・・        a       b A商品 *** *** B商品 *** *** C商品 *** *** 日付に対応した商品欄に入力させるには どう記述したらいいのでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 > 下のような表があります(日付はセル結合しています) > 日付をaとbに分けて入力します この辺が良く理解出来ませんでした。結合セルに分けて入力? Findで発見したセルが変数 r にセットされているので後は応用で行けると思いますが、、、 例えば  TextBox1 を 検索用  TextBox2~4 を 発見セルの下2行目から転記  TextBox5~7 を 発見セルの右1列目下2行目から転記 となら、 Private Sub CommandButton1_Click() Dim r, i As Integer  If TextBox1.Value = "" Then Exit Sub  With ActiveSheet   Set r = .Rows(1).Find(what:=TextBox1.Text, after:=.Range("IV1"), _       LookIn:=xlValues, lookat:=xlWhole)   If r Is Nothing Then    MsgBox TextBox1.Text & "は無い。", vbOKOnly + vbInformation, "日付"    Exit Sub   End If   For i = 2 To 7     Select Case i     Case 2 To 4      r.Cells(1, 1).Offset(i, 0).Value = Me.Controls("TextBox" & i).Value     Case 5 To 7      r.Cells(1, 2).Offset(i - 3, 0).Value = Me.Controls("TextBox" & i).Value     End Select   Next i End With End Sub --- でも、、、 個人的な意見ですが、使う側としては入力位置の補完として該当日付に飛べば十分で、シート構成と同じUserFormなんて要らないような気がしますけど、、、

mentaru
質問者

お礼

質問方が不十分で申し訳ありません 日付、1日はセル結合してあるのでB1です 日付、1日の下セルa=B2,b=C2という意味でした ご回答ありがとうございました

すると、全ての回答が全文表示されます。

関連するQ&A