• ベストアンサー

VBAで初歩的な質問です。ユーザーフォームについて。本文をご覧いただけないでしょうか?

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

実際のケースを、質問に出すために、家計簿に置き換えたのではないかと思います。 それで実例で言わんとすることが、判りにくくなってませんか。 #2でもおっしゃっている、「・・ためになぜ3つもユーザーフォームを使っているのか」ということと関連してると思いますが、構想そのものをベテランに質問してみてください。 もし思いつくままや、自分はそれしかできないということから、素人っぽい構想で、そのコーディング方法を聞いて実現しても、進歩がなく、使い勝手も悪いです。構想(デザイン・仕様)こそが大切です。 推測では、多段式絞り検索のことに行き着き、1フォームの複数の コンボボックスで実現することではないでしょうか。 >既に登録されてしまった場合に他の名前で登録 この必要性が、家計簿からは、なぜそうするかその理由が、イメージできません。

uk0221
質問者

お礼

お礼が遅くなってしまい、大変申し訳ございません。 (本当にスミマセン・・・) 素人でコーディングしたのでこれで合っているのか不安でならないです。確かにベテランさんに聞きたいところですが・・・周りにベテランさんの知り合いがいない場合、どうなさっていますか?もしお知恵を拝借できるようでしたら、お勧めのサイトなど教えてくださらないでしょうか? 最後に返事が遅くなってしまい、申し訳ございませんでした。 これからも宜しくお願い致します。

関連するQ&A

  • Excel VBAのユーザーフォームについて

    Excel VBAでユーザーフォームを作成しています。 ユーザーフォームで出力したファイル 「出力ファイルA」 ユーザーフォームで使用するファイル 「ファイルB」 を、起動していると必ず「インデックスが範囲内にありません」 といった内容のエラーが表示されます。 ユーザーフォームで使用するファイルの表示中に そのようなエラー画面が出てきても仕方がないと思うのですが、 ユーザーフォームはマルチ画面を作成したので ファイルは「出力ファイルC」も出すことができる仕様です。 また、「出力ファイルA」「出力ファイルC」は コンボボックスで選択した西暦がファイルの先頭に付くので (例:2014_出力ファイルA.xls) 必ず同じファイル名が出力されるとは限りません。 なので、そのようなエラーが表示されないようにしたいのですが可能でしょうか? また、特別なコードは記述していないのですが、 なのでボタンとかコンボボックスのコードを書けばよいのか・・・という感じなのですが、 どのように対処すればよいかわかりません。 それと、出力したファイルの内容を確認するためにアクティブには、 ユーザーフォーム画面を終了させるしかならず、 そもそもそうゆう仕様なのかがわかりません。 ユーザーフォームを作成するのは初めてなので初心者丸出しで お恥ずかしい限りなのですが、 どなたかアドバイスいただけますと幸いです。 こんな抽象的ですが、どうお伝えすればよいのかがそもそもわからず困っていて、 それに時間もなく頭を抱えているので お手柔らかに願います。 よろしくお願い致します。

  • VBA ユーザーフォームを閉じる時にイベント

    VBAでユーザーフォームを閉じるときに名前を付けて保存しブックを閉じるようにしたいのですが、 ユーザーフォームを閉じるときのイベントの起こし方がよく分かりません。 また名前を付けて保存しブックを閉じるのはこれでよろしいでしょうか? Application.Dialogs(xlDialogSaveAs).Show ActiveWorkbook.close

  • EXCEL VBAでユーザーフォームを使ってデータを入力したい。

    EXCEL VBAでユーザーフォームを使ってデータを入力したいと思っています。(ユーザーフォームはできています。) 入力項目が4項目あります。 名前 作業コード 開始時間 終了時間 上記4項目と登録ボタンです。 sheet1にユーザーフォームを表示し sheet2の A1に名前 B1に作業コード C1に開始時間 D1に終了時間が 登録ボタンを押すごとに どんどんデータを記録していきたいのです。 VBA初心者ですのでコードがよくわかりません。 ご教授ください。よろしくお願いいたします。

  • エクセルVBAのユーザーフォーム上のテキストボックスについての質問です

    エクセルVBAのユーザーフォーム上のテキストボックスについての質問です。 Aのユーザーフォームの内容をBのユーザーフォームのテキストボックスへ引き継いで、Bのユーザーフォーム上で内容を編集するという仕組みにしたいのです。 Bのユーザーフォームは新規入力もかねたユーザーフォームなので、テキストボックスのイベントにAfterUpdateを使用して、テキストボックスの内容が書き換えられるとデータベースから検索して新規か既存か判断させています。 AのユーザーフォームからBのユーザーフォームのテキストボックスへ引継ぎさせるときにこのAfterUpdateを発生させたくないのですが、Application.EnableEvents=Falseなどを使ってもイベントが発生してしまいます。 また、イベントがどのタイミングで発生するかと、コードをステップで実行させると、このイベントは発生しません。そのために、いきづまってしまいました。 AのユーザーフォームからBに引き継ぐ処理  ユーザーフォームB.Load ---ユーザーフォームBのイニシャライズが実行される  ユーザーフォームB.テキストボックス = ユーザーフォームA.テキストボックス  ユーザーフォームB.Show ちょっと簡単に書きすぎですがこんな感じです。 コードをステップで実行するとユーザーフォームBのAfterUpdateは実行されません。(VBAエディタのバグ?) どなたか回答お願いします。

  • vba ユーザーフォームにて質問

    勉強のためにvbaにユーザーフォームを作っています。 画像のとおり青色が塗られている箇所に、ユーザーフォームで社員名、件数を 転記したいです。 ユーザーフォーム 社員名 件数 を入力したら範囲はC3からC15転記されます。 転記終わったら、D3からD15に転記。この作業をH列まで行いたいのですが、 C3の列以降転記できません。 お答えできる方いればよろしくお願いします。 Private Sub CommandButton1_Click() Dim rc As Long Dim retu As Long Dim Ctrl As Control If Me.txtComboBox1.Value = "" Then MsgBox "社員名を選択してください!", vbOKOnly Me.txtComboBox1.SetFocus Exit Sub End If rc = MsgBox("件数を入力しますか?", vbYesNo) If rc = vbYes Then MsgBox "実行する" Else MsgBox "中止しました" Exit Sub End If retu = Cells(2, Columns.Count).End(xlToLeft).Column + 1 Cells(3, retu).Value = Me.txtComboBox1.Value ←社員を選択 Cells(4, retu).Value = Me.txtsuzuki.Value  ←売れた件数 Cells(5, retu).Value = Me.txttoyota.Value  ←売れた件数 Cells(6, retu).Value = Me.txthonnda.Value   ←売れた件数 For Each Ctrl In Me.Controls If Ctrl.Name Like "txt*" Then Ctrl.Value = "" End If Next Ctrl End Sub

  • ユーザーフォーム

    シート1にユーザーフォーム1を、シート2にユーザーフォーム2をそれぞれ表示しておいてHideで非表示にして画面を切り替えて使用してますが、片方のフォームを表示しておくのを忘れたりHideでなくUnroadで終了していたのを忘れていたりしてエラーにしてしまいます。Hideで非表示でなかったらフォームを開かないしShowでもエラーにならないようにするにはどうしたらよろしいでしょうか。VBAは素人ですのでやさしく教えてください。宜しくおねがいします。

  • VBAのユーザーフォームを実行しようとすると…。

    オブジェクトがありません、とのエラーメッセージが出て、実行できません。 標準モジュールには以下のようなプロシージャを記述しているのですが、デバッグしてみると、2行目の「○○○.Show」の部分が黄色く反転しているのです。 しかし、○○○の名前をつけたユーザーフォームは存在するのです。オブジェクトがない、とのエラーメッセージが出る理由がわかりません。 どなたか解決方法を教えていただけませんでしょうか。 Public Sub Form_Show() ○○○.Show End Sub

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • excel vba ユーザーフォーム

    現在、セルa101からa110までに「商品名」、セルb101からb110までに「金額」が 入力済みです。 このデータを、ユーザーフォーム上にコンボボックスを2つ作成し、セルa1へ 商品名を選択後、入力。また、b2へ金額を選択後、入力させたいのです。 また、ユーザーフォーム上にテキストボックスを作成し、ここに入力した 「備考」の全角10文字をc1へ移動したいです。 今のところ、ユーザーフォーム、コンボボックス、テキストボックスを作成した だけで 立ち往生しています。 どなたか、ご教授お願いいたします。

  • access2007 フォームの設定

    access初心者です。 access2007を使用しています。 テーブル:商品テーブル --- フィールド:商品コード,商品分類,商品名 syo0001,文房具,のり syo0002,文房具,はさみ syo0003,筆記用具,蛍光ペン syo0004,筆記用具,油性ペン syo0005,筆記用具,水性ペン syo0006,ノート,A4ノート syo0007,ノート,B5ノート syo0008,ノート,メモ帳 商品テーブルが上記のようにあったとします。 フォームで商品分類と商品名のコンボボックスを作り、 商品分類のコンボボックスで「文房具」を選択した後、 商品名のコンボボックスを開いたときに「のり」「はさみ」だけが 表示できるようにしたいです。 (同様に筆記用具を選ぶと、「蛍光ペン」「油性ペン」「水性ペン」が表示される。) このようなこと可能でしょうか。 ご回答をどうか、よろしくお願い致します。