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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このプログラムなんですがsheetにデータを置いて表示できるようにしてありますがsheetに101を 2 2023/02/23 20:13
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
【お題】 ・このサンタクロースは偽物だと気付いた理由とは?
-
VLOOKUP関数とテキストボックスの連携
Excel(エクセル)
-
エクセルのユーザーフォームでVLOOKUPと同じ機能をするには?
Excel(エクセル)
-
VLookup関数を使ってラベルに表記させるには?
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法
Visual Basic(VBA)
-
9
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
10
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
11
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
12
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
13
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
14
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
15
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
16
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
17
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
18
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
19
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
20
ラベル内の文字(Caption)を縦表示にする方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】範囲選択の方法に...
-
ListBoxにAddItemする際、重複...
-
【VB】セルが空になるまで処理...
-
csvデータ不要列の削除をbatフ...
-
pandasでsqlite3にテーブル作成...
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
SELECT INTOで一度に複数の変数...
-
データ削除とSQL*Loaderでのイ...
-
既存データをINSERT文にして出...
-
オラクルのUPDATEで複数テーブル
-
sqlに記述できない文字
-
[materialized]マテリアライズ...
-
ACCESSのVBAにてExcelに行...
-
右向き、左向きの速度が最大と...
-
SQLで、Join句で結合したテ...
-
結合したテーブルをSUMしたい
-
データ無し時は空白行にしたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csvデータ不要列の削除をbatフ...
-
Excel VBAのユーザーフォームで...
-
【VB】セルが空になるまで処理...
-
追加クエリで重複データなしで...
-
pandasでsqlite3にテーブル作成...
-
JDBCを使ってdate型へのINSERT...
-
ListBoxにAddItemする際、重複...
-
マクロでファイルを読み込み、...
-
VBAでの行数を揃える方法
-
自作アプリからAPIで他のアプリ...
-
VBAで、新しい値のみを抜き出す...
-
エクセル 2つの列にある値の完...
-
MySQLでauto_incrementをつかわ...
-
【ExcelVBA】範囲選択の方法に...
-
Accessでパラメーター以外の削...
-
Excelのマクロでの部分的な重複...
-
EXCELで外部データの取り込みが...
-
ACCESS VBAでSeekメソッドの処...
-
エクセルで去年のデータを今年...
-
vacummdbについて
おすすめ情報