エクセルVBAにて質問です。 ユーザーフォームを作成して、表に入力するマクロを作りました。 テキストボックスの値を参照して、入力前にシートを選択することは可能でしょうか。

Visual Basic | Excel111閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

質問の説明不足すみません。。 添付画像の取引先ID欄になにかしらシートに関する情報を入力したら入力先シートを変更できるのでしょうか、、、?といった感じです。 無理そうなら全てのシートにユーザーフォームを追加しようと思います。

画像

ThanksImg質問者からのお礼コメント

たくさんの回答ありがとうございました。 モードレスモードでシートを選択のコードを消してアクティブシートに入力する形で落ち着きました。

お礼日時:1/21 11:52

その他の回答(3件)

0

入力前と言うか入力するシートを限定したいと言うなら、ユーザーフォームにシート名又はシートインデックスを準備できるようにし、その値を基にWorksheets(とある値).~ としてしまえば良いのでは? それとも書き込む際に事前に目視確認したいのなら、そのコントロールによって目的のシートを上記のように限定しアクティベートするとか? 勘違いならごめんなさい。

0

一番手っ取り早い方法。 0. "集計表1" "集計表2" "集計表3" など必要なシートを用意しておく 1. Userform1にlblシート名を追加しておく。 2. シート上または、他のUserformにCommandButtonを必要な数追加する。 3. それぞれのCommandButton の Click イベントにコードを書く CommandButton1 には Userform1.lblシート名 = "集計表1" CommandButton2 には Userform1.lblシート名 = "集計表2" CommandButton3 には Userform1.lblシート名 = "集計表3" 4. Userform1 の 「入力」ボタンのClickイベントに必要なコードを書く Sub 入力ボタン_Click() Dim シート名 As String, ws As Worksheet シート名 = lblシート名.Caption Set ws = Worksheets(シート名) ws.Range("A1") = TextBox1.Value ws.Range("A2") = TextBox2.Value ... End Sub 5. ちゃんと動くことが確認できたらlblシート名.Visible = False にしておく

0

なぜシートを分けるのでしょうか データーは 1枚のシートに全部入れるべきです。 そして、データーベースをまず作成しておいて、 データーベースのなかから、見たいデーターのみを、見たいときだけ 別シートに抽出すればいい そうすれば、データーの修正、追加、削除、集計、分析 全て1枚のシートで、できます。 それを 別シートに分けたのでは、見やすいだけで、まったく不便なものになります。 メリットがありません。