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も見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
高校三年生の合唱祭で何を歌いましたか?
大人になると大人数で合唱する機会ってないですよね。 思い出すと、高校三年生の合唱祭が最後でした。 そこで、みんなの思い出の合唱曲を知りたい!
-
VLOOKUP関数とテキストボックスの連携
Excel(エクセル)
-
エクセルのユーザーフォームでVLOOKUPと同じ機能をするには?
Excel(エクセル)
-
VLookup関数を使ってラベルに表記させるには?
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
6
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
7
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
8
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
9
Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法
Visual Basic(VBA)
-
10
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
11
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
12
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
13
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
14
VBAでユーザーフォームにセル値を表示させるには
Visual Basic(VBA)
-
15
ユーザーフォームで別シートを検索できますか
Excel(エクセル)
-
16
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
17
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
18
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
19
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
20
Excel VBA ユーザーフォーム内のラベルにテキストボックスの計算結果を出す方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAのユーザーフォームで...
-
エクセル 2つの列にある値の完...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
絶対参照と相対参照の違いを教...
-
ADO+ODBCでテーブルに接続する...
-
フラグをたてるってどういうこ...
-
フォームから入力してテーブル...
-
初歩的質問 文字列を検索しヒ...
-
副問合せで複数列の値リストの...
-
右向き、左向きの速度が最大と...
-
SQLです!!教えてください。あ...
-
SQLです!!教えてください。あ...
-
下記の問合せを行うクエリを、 ...
-
「総降水量が100mm以上になる...
-
SQL Server:UNIONで結合した結...
-
SQLで、Join句で結合したテ...
-
あってますか?SQL
-
データがリストアできない!!
-
MySQL: 複数テーブルのcount
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csvデータ不要列の削除をbatフ...
-
Excel VBAのユーザーフォームで...
-
【VB】セルが空になるまで処理...
-
追加クエリで重複データなしで...
-
pandasでsqlite3にテーブル作成...
-
JDBCを使ってdate型へのINSERT...
-
ListBoxにAddItemする際、重複...
-
マクロでファイルを読み込み、...
-
VBAでの行数を揃える方法
-
自作アプリからAPIで他のアプリ...
-
VBAで、新しい値のみを抜き出す...
-
MySQLでauto_incrementをつかわ...
-
エクセル 2つの列にある値の完...
-
【ExcelVBA】範囲選択の方法に...
-
Accessでパラメーター以外の削...
-
Excelのマクロでの部分的な重複...
-
ACCESS VBAでSeekメソッドの処...
-
EXCELで外部データの取り込みが...
-
vacummdbについて
-
VBA コードの削除に関する質問...
おすすめ情報