• 締切済み

エクセルユーザーフォームのリストボックスで入力する方法

(一回目は間違えて質問するを押してしまいました。すいません) エクセル2000で請求書の作り方を教えて下さい。 (1)シート「請求書」に下記請求書とフォームツールバーのボタンを挿入。     D      E     商品名   単価 13 14 15   (2)シート「商品」に下記を記述後,C5:D7の範囲を「単価表」と定義。      C         D      商品名       単価 5  プリンター     30000 6  ノートPC      200000  7  デスクトップPC   300000    (3)UserForm1のListBox1に、リスト項目を取り込む設定をする。 (4)標準モジュールに下記を記述してこのマクロをボタンに登録しておく。 Sub ダイアログを表示() UserForm1.Show vbModeless Range("D13").Select End Sub この状態で、(1)で挿入したボタンをクリックすると表示されるリストボックス項目をクリックすれば、D13に商品名とE13に単価を転送して、カーソルが下に自動移動するというもの。但し下記条件で。  1.コマンドボタンを使わず、リスト項目の選択でダイレクトに転送できる もの。 2.1回転送してカーソルが下に自動移動後に、引き続いて同じリスト項目をクリックしても転送できるもの。(他の項目を選択するなら転送できるのですが同じ項目の転送がどうしてもうまくいきません。) 長くなりましたがなるべく簡単な方法でよろしくお願いいたします。   

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

やりたい事とあってるか解りませんが、、、 「商品」シートのC4:D4がタイトル行で「商品名」「単価」となっていて、C5:D7がタイトルを除いたリストだとします。 UserForm に ListBox1 を置き、UserFormのモジュールに下記のようにすると「ダブルクリック」で「請求書」シート にデータを転記出来ます。 シングルクリックでは下手に選ぶ事も出来ずに使い勝手が悪いように思います。 どうしてもシングルクリックならば、ListBox1_DblClickの内容を MouseDown 又は MouseUpとかのイベントで使う感じでしょうか、、、 '---------------------------------------------------------------------- Private Sub UserForm_Initialize()   With ListBox1     .ColumnCount = 2     .ColumnHeads = True     .RowSource = "商品!C5:D7"   End With End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)   If ActiveCell.Parent.Name <> "請求書" Then Exit Sub   With ListBox1     ActiveCell.Value = .List(.ListIndex)     ActiveCell.Offset(0, 1).Value = .Column(1, .ListIndex)     ActiveCell.Offset(1, 0).Activate   End With End Sub '----------------------------------------------------------------------

kafun-show
質問者

お礼

1ヶ月程ホームページで方法を探しても分らなかったのですが、おかげさまでやっと分りました。ダブルクリックイベントとインデックスをうまく利用するんですね。やっと思ったとおりの請求書が作れます。本当にありがとうございました。

関連するQ&A

  • ユーザフォームのリストボックス

    お世話になります。 ユーザフォームのリストボックス内の下記2個のどちらかを選択し Private Sub UserForm_Initialize() ListBox1.AddItem ("印刷プレビュー") ListBox1.AddItem ("印刷") End Sub CommandButton1をクリックして Worksheets("Sheet1").PrintOut か Worksheets("Sheet1").PrintPreview を実行したいのですが どうやってリストボックスとコマンドボタンを 連動できるようにすればいいのでしょうか コマンドボタンのみだったら出来るのですが、 リストボックスを使うとうまくいきません。 ご教授よろしくお願いいたします。

  • エクセル VB: フォーム内のリストボックスの項目

    エクセルVBなのですが、フォームをつくってその中にリストボックスを配置しました。 コマンドボタンで呼び出して、シート内にあるリストから項目を抽出し反復を省略したリストを フォーム内のリストボックスに作りたいのですが。 Private Sub CommandButton1_Click() UserForm1.Show (このあとリスト項目のコード) End Sub コマンドボタンをクリックすると、UserForm1が現れますが、リストの中身は空です。一度Unload meでフォームを終わらせて、2回目クリックするとリストの中身が現れます。 一回目のクリックでエラーは出ません。 一回目のクリックでリストを配置したいのですが、何が問題なんでしょうか? Excel2003 Windows Xp です。 よろしくご教示下さい。

  • リストボックスから項目を選択してセルに入力したいのです

    EXcel2003でマクロ作成中です。エクセルシートのN列を右クリックすると、ユーザーォームが現れ、その中のリストボックスから項目を選択すると選択文字が白色に反転します。 ユーザーホームの下方に設置した「入力する」ボタンをクリックする、アクティブセルにテキスト文字列が挿入されます。 Option Explicit Private Sub CommandButton1_Click() With ListBox1 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) End If End With Unload UserForm1 End Sub --------------------------- Private Sub CommandButton2_Click() Unload UserForm1 End Sub ------------------------------ これと同じものをB列につくりました。エクセルシートのB列を右クリックすると、リストボックスが表示されますが、その中の項目を選択しようとすると、一瞬にしてユーザーフォーム自体が消えてしまい項目を 選択できません。 Private Sub CommandButton1_Click() With ListBox2 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox2.list(ListBox2.ListIndex) End If End With Unload UserForm2 End Sub ----------------------------- Private Sub CommandButton2_Click() Unload UserForm2 End Sub ------------------------------------------ まったく同じものを作って内容だけかえたのですが、できません。 どうしてでしょうか?ご教授おねがいします。

  • エクセルユーザーフォームで困ってます。

    エクセル初心者です。 自分のユーザーフォーム(住所、商品登録)を作りたくて大変困ってます。 下記は、ネットなどをみて貼り付けたのですが、上手くいきません。 まずTOPページを作り、ユーザーフォームを呼び出すボタンを作り、クリックすると フォームが出るようにしてあります。 そこに、自分の入力したいものをユーザーフォームにテキストでつくり、シート9に 登録ボタンを作りクリックしたら、シートに反映させたいと思ってます。 登録ボタンを押したら、入力画面はクリアにしたいです。 他にいろいろやりたい事もあるのですが、入力した順番に001・002・003と顧客番号をつけたり 検索ボタンを作って、名前や、顧客番号を入れると情報を呼び出したり、請求書用のプリントシートや、封筒シートに簡単に反映できればと思っています。 しかし、まだまだそこまではいかず、最初でつまずいてます。 現状は、フォームを呼び出すときに実行時エラーがでます。 どうしても、自分の使い勝手のいいものを作りたいので どうか、助けてください。大変まいってます。 長文になりますが、どうかよろしくお願いします。 下記の入力中のものをみていただけて、いろいろ意見をいただけるとありがたいです。 Sub FormShow() UserForm1.Show End Sub 'Sheet9へ書き込む Private Sub 登録_Click() Dim i As Integer With Worksheets(9) 'テキストボックスの値を書き出し For i = 1 To 80 .Range("B" & i) = UserForm1.Controls("TextBox" & i).Text Next End With End Sub 'Formを呼び出したとき、Sheet9から読み込む Private Sub UserForm_Initialize() Dim i As Integer With Worksheets(9) 'テキストボックスの値を読み込み For i = 1 To 80 UserForm1.Controls("TextBox" & i).Text = .Range("B" & i) Next End With End Sub '終了ボタン Private Sub CommandButton2_Click() Unload Me End Sub

  • EXCEL VBAのユーザーフォーム上のテキストボックスの入力方法について

    すいません教えていただきたいことがあります。 EXCEL VBAのユーザーフォームについて、 コマンドボタンにタグを設定して、これにキーボードと同じ機能を持たせて テキストボックス内に入力することは可能でしょうか。 例えばコマンドボタンを「あ」~「ん」まで作り、それぞれのボタンに「あ」~「ん」までのタグを設定する。 Private Sub UserForm_Initialize() CommandButton1.Tag = "あ" CommandButton2.Tag = "い" ・・・・「ん」までボタンを作成する。 次に、 Private Sub CommandButton1_Click() TextBox1.Value = TextBox1.Value & CommandButton1.Tag End Sub Private Sub CommandButton2_Click() TextBox1.Value = TextBox1.Value & CommandButton3.Tag End Sub ・・・「ん」まで作成する。 この設定では、コマンドボタンのクリックで文字の追加はできますが、ボタンを押すと常に文字が一番後ろに追加されるため、 テキストボックスをクリックしても文章の途中に文字を挿入することが出来ません。 通常のキーボードの入力と同じようにテキストボックス内でクリックした箇所からコマンドボタンで入力を開始するような設定は可能でしょうか。 よろしくお願いします。

  • エクセルVBA リストビュー選択項目を別フォームへ

    皆さんこんにちは。 エクセル2013使用のVBA初心者です。 エクセルVBAのリストビューについて教えてください。 Userform1上にListview1とコマンドボタン1があります。 Listview1はSheet1を呼び込んだものが反映されており 左から駅名・顧客名・店舗名が記載されています。 Listview1でどれかを選択してコマンドボタン1を押したら Listview1で選択した項目の 駅名をUserform2のTextbox1に 顧客名を〃のTextbox2に 店舗名を〃のTextbox3に反映したいのですが リストビューの情報がネット上にも少なく コードをどのように書いたら良いか見当がつきません。 Userform2のPrivate Sub UserForm_Initialize()に TextBox1 = UserForm1.ListView1.FocusedItem.SubItems(0).Text を記載してみたものの、コンパイルエラーが出てしまいます。 (スイマセン、あまり意味が分かっていないで書きました) リストビューで選択した項目を別のユーザーフォームに 反映させるにはどうしたら良いでしょうか? どなたかヒントをいただけると助かります。

  • VBA ユーザーフォーム リストボックス

    教えてください。 現在下記のようなコードでリストボックスに対象セルの値を表示しています。 Private Sub UserForm_Initialize() ListBox1.List = Range(Range("M5"), Cells(Rows.Count, 14).End(xlUp)).Value End Sub この時、例えば別シート(仮にsheet3)のセルを表示したい場合 どのようにすればいいでしょうか? ListBox1.List = sheets("sheet3").Range(Range("M5"), Cells(Rows.Count, 14).End(xlUp)).Value としてもエラーになってしまいます。 よろしくお願いします。

  • リストボックスについて。

    普通、リストボックスで項目を選択してからsubmitボタンで、情報を転送しますよね。そうではなくて、リストボックスを開いて、項目をクリックしたらデータの受け渡しをするようにしたい場合はどうすればいいでしょうか。そういうサイトを見たことがあったような気がしたので、もしあるのなら使いたいと思い、質問してみました。

    • ベストアンサー
    • HTML
  • エクセルで商品リストの作成方法

    パソコンに関してはほとんど初心者です。 入門書を片手に、なんとか請求書を作成することに成功しましたが、商品リストの作成方法が分かりません。 具体的に申しますと、予め単価が決まっている商品が約40アイテムほどございまして、それを請求書に入力するのですが、その際、該当商品の単価が、商品名を入力すると自動的に入力される方法です。 例えば、C4のセルに商品名を入力すると、D4のセルに予め登録しておいた単価が自動的に入力される、という具合です。 宜しくお願いします。

  • エクセルでユーザーフォームを開いても入力できません

    エクセルでユーザーフォームを作成し、商品コードを入力してマスタより内容の表示をさせるマクロを作成しました。 実行させるとフォームが開き商品コードでカーソルが点滅しているのですが商品コードが入力できません。しかしタイトルバーのところをクリックすると入力できます。どうもフォームが非活 性になっているように思えます。 ユーザーフォームはマクロでUSERFORM1.SHOWで開いています。原因がどこにあるかアドバ イスいただければ幸いです。 エクセルは2016、OSはWINDOWS7です。 宜しくお願い致します。

専門家に質問してみよう