• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーフォームを作成しました)

ユーザーフォームを作成しました

このQ&Aのポイント
  • 自社の情報のユーザーフォームを作成しました。Sheet1にマクロボタンを配置しています。
  • ユーザーフォームには自社の情報が表示されます。Sheet2に項目名と情報が入力されています。
  • 現在、Sheet2で自社情報を閲覧していますが、Sheet1でフォーム表示したいと考えています。アドバイスをお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>自社の情報のユーザーフォームを作成しました。 とのことなので、フォームそのものや必要な各種コントロールの制御、各初期値の設定などはできているものと仮定します。 >Sheet2の画面で見るようになってます。 >マクロは~~ なので、その下にあるのが表示用のマクロと思われますが、シートとの間でのデータの受け渡しが見られませんがその辺は大丈夫でしょうか? 自社情報.Show がフォーム表示の実行文ですよね? 説明では「Sheet2の画面で見る」と書いてありますが、このマクロを実行すると「基本情報」というシートに表示が移ってしまいます。 ScreenUpdatingをFalseなどとしていない限り、「基本情報」のシートが表示されることになりSheet2から移動してしまいますね。 フォームの表示とシートの表示は別個に制御できますので、それぞれを指定して表示すれば可能となります。 常にsheet1を表示するのであれば、Sheets("Sheet1").Active などとしておけばいいのでは?

K-19New
質問者

お礼

ご指摘のように張り付けミスでした。 Sheets("基本情報").Selectでなく Sheets("Sheet2").Selectです。 シートとの間でのデータの受け渡しが見られませんが・・・ すみませんが 基本はどうしたらよいですか?

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

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。どうも、話が行き違ってしまっているようですね。 ユーザーフォームは通常ユーザーとのインターフェースの為の入力フォームとしての利用が多いと思われます。 そのため、表示内容の初期値の設定や各コントロールの処理(ボタンを押した場合やテキストを入力した時の処理など)を事前にセッティングしておくことが必要です。また、その値がシート内の値と連動していたり、あるいはファイルを出力するなどの処理を伴うこともありますので、終了時の処理が必要な場合もあります。 「○○.show」は○○というフォームを表示するという命令なので、このようなフォームに関わるコーディングがすでに出来ているものとして回答いたしました。 Sheet1上でフォームを表示させたいのなら、Sheet1を表示させた状態で、該当するフォームをshowすればよいことになります。 ユーザーフォームについての基本的な情報は、エクセルのVBヘルプ「目次」-「Microsoft Forms リファレンス」をご一読ください。

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

関連するQ&A

  • エクセルVBA ユーザーフォームからシートの操作

    エクセルでユーザーフォームを用いて 顧客管理データーベース入力フォームを作成しています。 ユーザーフォーム上で入力した値を複数のシートに またがってデーターを入力していくつもりです。 それで困っていることなのですが、 ユーザーフォームを起動したときに、それぞれの シートの空白の場所を変数で記憶させているのですが 以下に示す部分でエラーが発生します。 エラーの原因は、アクティブシートでないので セルを取得できないようなのですが、アクティブでない 場合のselectに変わるやり方ってありませんか? -----sheet1がアクティブな状態で-------------------------------- Dim myRowNo As Integer Dim myRowNoS As Integer --------------------------------------------------------------- Private Sub MyRowNo1()  myRowNo = 4  Sheets("sheet1").Cells(myRowNo, 1).Select  Do Until ActiveCell.Value = ""   myRowNo = myRowNo + 1   Sheets("sheet1").Cells(myRowNo, 1).Select  Loop End Sub ---------------------------------------------------------------- Private Sub MyRowNo2()  myRowNoS = 4  Sheets("sheet2").Cells(myRowNoS, 1).Select <<<<<<<<エラー箇所  Do Until ActiveCell.Value = ""   myRowNoS = myRowNoS + 1   Sheets("sheet2").Cells(myRowNoS, 1).Select  Loop End Sub --------------------------------------------------------------- Private Sub OpenButton2_Click() 'ユーザーフォームボタンをクリック  Call MyRowNo1  Call MyRowNo2 End Sub --------------------------------------------------------------- MyRowNo1と2の間に「Worksheets("sheet2").Select」を入れる と動くようなのですが、呼び出さずに動かす方法ってありますか? 宜しくお願いいたします。

  • エクセル ユーザーフォーム ワークシート表示

    現在,マクロを勉強中です。 ユーザーフォームに,3つのラベルを設定し,それぞれのラベルをクリックすると,「初期設定」または「4月」または「5月」のシートを表示し,ユーザーフォームは消すというものを試みています。 シート名は,「初期設定」「4月」「5月」です。 1つめのラベルをクリックしたときに実行されるコードは Sub Label1_Click() Sheets("初期設定").Activate Unload Me End Sub で設定したのですが,ユーザーフォームが消えるのですが,何のシートも表示されません。 実行したいことだけを考えると,ハイパーリンクでも可能なのですが,勉強もかねて質問させていただきたいと思います。 どこか修正すべきコードがありましたらご教授くださるとありがたいです。

  • 隠していたユーザーフォームを再び表示したい

    ExcelVBA をExcel2007で苦戦している初心者です。 マクロ記載のAブックとBブックを使っています。 Aブックのユーザーフォーム「表紙」にあるボタンをクリックして Private Sub CommandButton11_Click() 表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\改善案.xlsm" Sheets(1).Select End Sub Bブック(改善案)に飛び、作業後これを閉じ、Aブックに戻したいです。 Aブックは、まだ閉じてはいません。 同時に、ユーザーフォーム「表紙」を再表示したいです。 Private Sub CommandButton2_Click() Unload UserForm1 Application.DisplayAlerts = False ThisWorkbook.Close Application.DisplayAlerts = True 表紙.show End Sub すると次のエラーが表示され 「コンパイルエラー 変数が定義されていません」 表紙.showの表紙が反転表示されます。 Aブックに戻ったときにユーザーフォーム「表紙」を表示するには どうしたらよろしいでしょうか。よろしくお願いします。

  • フォームでユーザが入力したシート名を選択したい

    初歩的な質問ですいません。教えてください! 「sheetnameinput」フォーム Private Sub NextButton2_Click() sheetname = sheetname.Text このようにフォームを作成し、ユーザにシート名を入力させて、マクロの中でそのシート名を指定(選択)したいと思っています。 続きとして Dim sn As Variant Set sn = sheetnameinput.sheetname Sheets("sn").Select と作成してみたのですが 「インデックスが有効範囲にありません(エラー9)」 のメッセージが出てしまいます。 確かにその名前のシートはエクセル内に存在しているのですが、なぜエラーとなるのでしょう?そもそも指定の仕方が間違っているのでしょうか? みなさん、教えてください。

  • ユーザーフォームの使い方、データ取得で困ってます。

    '作業用シート Private Sub CommandButton1_Click() Dim shinaName As String Dim shinaNo As String Dim sName As String Dim cName As String shinaName = InputBox("商品名を入力") shinaNo = InputBox("商品Noを入力") shinaDiv = InputBox("分類") sName = shinaName cName = shinaNo dName = shinaDiv 'ひな形シートをコピーし、シート名を商品名に Sheets("sheetnew").Select Sheets("sheetnew").Copy Before:=Sheets(1) Sheets("sheetnew (2)").Name = sName '各セルに商品名と商品コードを Worksheets(sName).Activate With ActiveSheet .Range("A2") = sName .Range("A3") = cName .Range("A4") = dName End With End Sub 構文が正しいのかわかりませんが、ビギナーなりに作ってみました(^^;; 作業用シートのボタンをクリックし、入力情報をもとに シートを新規追加していくのですが、この作業をInputBoxではなく、 ユーザーフォームを呼び出して、入力作業を1回で終わらせたいのです。 ユーザーフォーム1()内に下記5項目を作りました テキストボックス1() '商品名 テキストボックス2() '商品No リストボックス1() '分類1~3 登録ボタン() キャンセル() コマンドボタン1をクリックし、ユーザーフォーム呼び出しはOKです。 フォーム内のキャンセルボタンも機能します。 登録ボタンをクリックすると、どうもテキスト、リストボックス内容が 読み込めないみたいでエラーします。 sName = shinaName cName = shinaNo dName = shinaDiv このインプットボックスのように、変数にすると構文的(宣言の仕方?)に 駄目なのでしょうか? ユーザーフォームを見真似で作ってみたのですが、 どこに、どうセットして、どう呼び出して? また、入力されたデータをどう取得して、構文に組み込むのか? 、、、なんかこの辺りがゴチャゴチャしてわかりません。 追って説明して頂けると助かります、構文の作り方教えてください。

  • ユーザーフォームを表示されないようにしたい

    Vista excel2007 でマクロ作成中の超初心者です。 A、B、Cのブックがあります。Bブックのみマクロをワークシートに貼り付けています。 1)Aブック(マクロ記録用)の中にある、Aコマンドボタンを押すと  BブックのBシートにジャンプします。ジャンプと同時に、Bユーザーフォームを 表示しています。 2)そしてBシートには、フォームコントロールを貼り付けており、ここをクリックするとCブックCシートに飛びます。 3)ところが、CシートにはBユーザーフォームが残ったままです。このフォームを  表示されないようにしたいのです。 4)Bシートのフォームコントロールには、次のコード記述をしてあります。       Sub Cブック Cシートへ() Dim wb As Workbook Dim ws As Worksheet Dim sh As Worksheet Dim i As Long ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("CCC.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\CCC.xls") End If Worksheets(1).Select End Sub どうかよろしくお願いします。 

  • エクセルVBA ユーザーフォームの終了について

    エクセルVBAでユーザーフォームを作成しています。 コマンドボタンにVBAマクロを割り当てしているのですが 思うように動いてくれないので質問します。 コマンドボタンをクリックしたら望む動作 1、ワークシートを選択 2、その後、ユーザーフォームを消す。 と言う動作にしたいのですが、2の ユーザーフォームを消す方法、書き方が分かりません どなたか教えていただけないでしょうか 1の動作は以下のように書いています。その後の書き方を お願いします。 Private Sub CommandButton8_Click() ブック名 = "VBA演習" シート名 = "sheet1" Workbooks(ブック名 & ".xls").Worksheets(シート名).Activate End Sub (ユーザーフォームの名前は"テストフォーム"としてます)

  • Excel ユーザーフォームの入力値をシートに転記

    Excelでユーザーフォームを作りました。 ユーザーフォームには、テキストボックスを2個、ボタンを1個("記入"という文字が入っています)置いてあります。 テキストボックスに入れた数値をSheet1のセル"C24","C25"に転記したいので、ユーザーフォームのコードを次のようにしましたが、エラーメッセージは出ないかわりに何も動いてくれません。 「どこ」と「なに」が違いどうするのが正しいのか教えて下さい。よろしくお願いします。 Private Sub Tbox1_Change() a = Tbox1.Value End Sub ---------------------------- Private Sub Tbox2_Change() b = Tbox2.Value End Sub ---------------------------- Sub 記入Button_Click() '入力値をSheet1に転記 Dim a As Range Dim b As Range Sheets("Sheet1").Select Set a = Range("C24") Set b = Range("C25") End Sub

  • エクセルのVBユーザーフォームがうまく組めません

    会社でエクセルを使ってデータをまとめているのですがVBのユーザーフォームで作ろうとしています。今困っていることはoptionbuttonを4個使い選択式にし選択したら「OK」buttonを押すことで各optionbuttonに対応したsheetへ飛ぶようにしたいのですがうまくいきません。 現状ですが Private Sub CommandButton1_Click() dim str as string str=optionbutton1.caption select case str case "****" sheets("1234").select ・    ・    ・ end select End Sub としています。 間違いがありましたら指摘してください。 ちなみに3日前に始めてVBを教えてもらいました。

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

専門家に質問してみよう