
EXCEL VBAの構文について教えてください。
まず、
Sheet2(マスタ)にA4~Z882 までデータがあります。
UserForm2にTextBox1~10まであります。
Sheet1(一覧表)にコマンドボタンで"修正"を用意し、このボタンを押すとUserForm2が表示されます。
このユーザーフォームでは、Sheet1(一覧表)上のActivecellのデータをTextBox1に表示するようにしております。(Private Sub UserForm_Initialize()にて)
ここから教えてほしいのですが、
TextBox1と同じ行のデータをSheet2(マスタ)からvlookupのように各TextBox2~10に表示させたいと思ってます。
どのようなコードを作れば良いのでしょうか?
Sheet2(マスタ)にはA列にActivecellと同一文字列が並んでおります。
B列=Box2、C列=Box3・・・と表示されるようにしたいのです。
また、UserForm2に修正ボタンを設置し、データを訂正後押すとSheet2(マスタ)のデータを更新できるようにしたいのですがどのようにすればよいのでしょうか?
No.1ベストアンサー
- 回答日時:
>TextBox1と同じ行のデータをSheet2(マスタ)からvlookupのように各TextBox2~10に表示させたいと思ってます。
『TextBox1と同じ行のデータ』で良いのでしょうか?
って事はSheet1(一覧表)のActivecellの『行』になります? 'A
そうではなくて『TextBox1の値をSheet2(マスタ)のA列から検索してヒットした行のデータ』でしょうか? 'B
マスタから表示させるのは
Private Sub UserForm_Initialize()
Dim n As Long
Dim i As Long
n = ActiveCell.Row 'A
Me.Tag = n 'A
' Dim x 'B
' x = Application.Match(ActiveCell.Value, Sheets("マスタ").Columns("A"), 0) 'B
' If IsError(x) Then 'B
' MsgBox "error" 'B
' Exit Sub 'B
' End If 'B
' n = CLng(x) 'B
' Me.Tag = n 'B
Me.TextBox1.Text = ActiveCell.Value
For i = 2 To 10
Me.Controls("textbox" & i).Text = Sheets("マスタ").Cells(n, i).Value
Next
End Sub
こんなコードになります
参照したいマスタのデータがB列からJ列まで、つまり2~9列目までとして
変数iを使ってループし
Me.Controls("textbox" & i) に Sheets("マスタ").Cells(n, i) のデータを設定すれば良いです
変数を使わないでループせずに Me.TextBox2.Text = Sheets("マスタ").Cells(n, 2).Value とか
それぞれ9行書いてもいいです
もし『TextBox1の値をSheet2(マスタ)のA列から検索してヒットした行のデータ』なら
'Aのコードを削除してコメントアウトした'Bのコードを活かしてください
どちらにしても Me.Tag = n などのように、Sheets("マスタ")の該当行をどこかに記録しておきます
Tagを使わず Me.TextBox11.Text = n などと他のコントロールを使って記録しても良いかと思います
>Sheet2(マスタ)のデータを更新
の場合は
Private Sub CommandButton1_Click()
Dim n As Long
Dim i As Long
n = Me.Tag
Dim s(1 To 10)
For i = 1 To 10
s(i) = Me.Controls("textbox" & i).Text
Next
Sheets("マスタ").Cells(n, 1).Resize(, 10).Value = s
End Sub
n = Me.Tag などで記録しておいた該当行を取り出し、そこに書き込みます
早速のご回答ありがとうございます。
ユーザーフォームへのデータの抽出、表示は 'Bにて表示できました。
変数を使うとうまく動かなかったのでそれぞれのコード入力で出来ました。
ありがとうございます。
コマンドボタンでデータの更新については、s(i) = Me.Controls("textbox" & i).Textの欄でエラーになってしまいます。
実際はテキストボックスとコマンドボックスが混在しているのが原因と思います。
もう少し勉強が必要ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VLOOKUP関数とテキストボックスの連携
Excel(エクセル)
-
エクセルのユーザーフォームでVLOOKUPと同じ機能をするには?
Excel(エクセル)
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
-
4
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
5
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
8
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
9
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
10
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
11
VLookup関数を使ってラベルに表記させるには?
Visual Basic(VBA)
-
12
Excel VBA コンボボックスで空白を削除
その他(Microsoft Office)
-
13
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
14
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
15
VBAのユーザーフォームで、テキストボックスを連携させたいのですが。
Visual Basic(VBA)
-
16
excel VBA ユーザーフォームを消すとTextBoxから反映させたセルの値も戻ってしまう
Excel(エクセル)
-
17
Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法
Visual Basic(VBA)
-
18
Excel VBA ユーザーフォーム内のラベルにテキストボックスの計算結果を出す方法
Visual Basic(VBA)
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
Excelで検索結果をテキストボックスに表示
Windows Vista・XP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAのユーザーフォームで...
-
追加クエリで重複データなしで...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
PostgreSQLのtimestamp型で時間...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
エラーを起こす方法
-
truncate tableを使って複数の...
-
T-SQLで任意の箇所で強制終了す...
-
UPDATEで既存のレコードに文字...
-
テキストボックスの背景をVB...
-
selectの単純繰り返し
-
timestamp が空のデータを除い...
-
UPDATEの更新前の値を取得したい
-
既存データをINSERT文にして出...
-
IN句に副問合わせを使う場合と...
-
三科目合計点のクラス別平均点...
-
CASE文内での計算
-
DELETEの操作で (PostgreSQL)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JDBCを使ってdate型へのINSERT...
-
追加クエリで重複データなしで...
-
【VB】セルが空になるまで処理...
-
Excel VBAのユーザーフォームで...
-
csvデータ不要列の削除をbatフ...
-
pandasでsqlite3にテーブル作成...
-
ListBoxにAddItemする際、重複...
-
ACCESS VBAでSeekメソッドの処...
-
エクセル 2つの列にある値の完...
-
EXCELで外部データの取り込みが...
-
マクロでファイルを読み込み、...
-
VBAでの行数を揃える方法
-
エクセルで去年のデータを今年...
-
MySQLでauto_incrementをつかわ...
-
自作アプリからAPIで他のアプリ...
-
VBでACCESS(アクセス...
-
Accessでパラメーター以外の削...
-
リストボックスからリストボッ...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
おすすめ情報