忙しい現代人の腰&肩のお悩み対策!

Listboxのリストを印刷したいので、
かなり困っています、御教授してください。
よろしくお願いします

このQ&Aに関連する最新のQ&A

印刷 VBA」に関するQ&A: VBA印刷ページ設定

A 回答 (1件)

こんばんは。



なんのListBox かは分かりませんが、以下のようにすれば取り出せるのではないでしょうか?
後は、ふつうに印刷すればよいです。

なお、UserFormでしたら、UserForm1.ListBox1.List です。

'//
Sub ListBoxContents()
Dim Ar As Variant
 Ar = ListBox1.List
 Range("A1").Resize(UBound(Ar) + 1, 1).Value = Ar
End Sub
'//
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル(VBA)でリストボックス等を使用した印刷方法

エクセルのフォームのリストボックス等を使用して、選んだシートのみを印刷することは出来るのでしょうか。(VBAを使用して)

現状
・シートが15枚あります(シート1,2,3,4は条件入力用でシート5~15は様式でシート5~15は非表示です)
・シート1にリストボックスを配置したいです(リストボックスの選ぶ名前はシート5~15です)

例として
・リストボックスでシート7を選んだときに、シート7を印刷したいです

その他
・リストボックスでなくても、選んだシートが印刷される方法が他にあるのであれば、他の方法でもかまいません。

Aベストアンサー

新しいものを作りました。

http://www.okweb.ne.jp/kotaeru_reply.php3?q=222287


書かれていた内容は間違っていませんでした。
上の新しいものもシート名を変更しただけで
他に変更はしていません。
これを参照して違いが無いか確認してください。


1.B1に数字はありますか
2.B1の数字はリストボックスで作られた数字ですか。
3.シートはありますか。
4.A列にシート名は入っていますか。
5.VBEでブレークポイントを設定、
ステップインで実行、変数「シート名」に
何が入るかを確認してください。



基本的には間違いないと思います。
あとは、シートとマクロの間で整合がとれていない
ためだと思います。

変更点を確認しながら落ち着いて見てみてください。

エラー内容は、シートを見つけられなかった
ということです。シートの指定、リストボックス部分
実際のシート、行・列のズレなどを確認ください。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCEL マクロ リストボックスよりシート名を選択してシートを選択

こんばんは.
エクセルを使って備品の管理システムを構築したいと考えております.
マクロを使います.
VBAは初心者です.

・備品を20種類ほどに分類し,シートも同様に20作りました.
・ウィンドウを2つに分割し,上下に並べています.
・上ウィンドウの最初のシート(シート名:備品一覧)のB2セルにリストボックスを設け,そのリストで20種の備品の中から一つを選択できるようにしています.
・リストボックスの側にマクロ対応のボタンを設置しております

やりたいこととしては・・・
『上ウィンドウのリストボックスで備品を選択し,ボタンをクリックすることによって,下ウィンドウでその選択した備品名のシートに移動する』
です.

私が組んでみたマクロは下記です.
----------------
Sub 備品を選択  

  Dim sheetname As String

'リストボックスからシート名を取得する
sheetname = Range("B2").Value

'下ウィンドウをアクティブにしてシートを選択する
Windows(2).Activate
Worksheets("sheetname").Select

End Sub
------------------

エラーは,『Worksheets("sheetname").Select』のところで
【実行値エラー'9' インデックスが有効範囲にありません.】

参考書やグーグルで調べてもわかりませんでした.
ご教授いただければ幸いです.
よろしくお願い致します.

こんばんは.
エクセルを使って備品の管理システムを構築したいと考えております.
マクロを使います.
VBAは初心者です.

・備品を20種類ほどに分類し,シートも同様に20作りました.
・ウィンドウを2つに分割し,上下に並べています.
・上ウィンドウの最初のシート(シート名:備品一覧)のB2セルにリストボックスを設け,そのリストで20種の備品の中から一つを選択できるようにしています.
・リストボックスの側にマクロ対応のボタンを設置しております

やりたいこととしては・・・
『上ウィン...続きを読む

Aベストアンサー

この辺の問題ではないでしょうか?

  ×Worksheets("sheetname").Select
  ○Worksheets(sheetname).Select

Qエクセル リストボックスにセルの値を表示したい

Sheet1に
A1 a
A2 i
A3 u
と入力されています。

フォームのリストボックスにこの3つのセルを表示したいのですが
Private Sub UserForm_Initialize()
UserForm1.ListBox1.ControlSource = Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 3))
End Sub
ではうまく行きません。

デバッグしてもなにも引っかからないのですが
実行すると
「実行時エラー13
型が一致しません」
となります。

「ControlSource」を「RowSource」に変えても同じでした。
※列が移動するため列番号を変数で取得したいのでCellsを使用しています。

ご教授よろしくお願いします。

Aベストアンサー

回答4、onlyromです。
大事なことを言い忘れ。。

ROWSOURCEプロパティを使うときは、リストに使う値がアクティブシートにない場合は、シート名を付けないとエラーになります。
ということで改めて回答です。


R = 5

UserForm1.ListBox1.RowSource = "Sheet1!A1:A" & R

UserForm1.ListBox1.RowSource = "Sheet1!" & Range(Cells(1, 1), Cells(R, 1)).Address

UserForm1.ListBox1.List = Sheets("Sheet1").Range("A1:A" & R).Value

UserForm1.ListBox1.List = Sheets("Sheet1").Range(Cells(1, 1), Cells(R, 1)).Value
 
このどれかを使えますが、セルの値を使うときは、Listプロパティをお勧めします。
 

Q検索結果の指定列をリストボックスに反映したい

ユーザーフォームにTextbox、検索ボタン、Listboxを配置しました。
Textboxに「E列」の大分類(例:「35」)を入力して、検索ボタンを押すと、「35」のレコードのA列とB列だけListboxに反映させるようにしたいです。
皆さん、教えて下さい!宜しくお願いします。

 A列     B列    C列      D列    E列
商品コード/商品名/仕入先コード/仕入先名/大分類
123456 りんご 011 AAA 35
456789 ばなな 012 BBB 35
234567    テーブル  013 CCC 23

Aベストアンサー

元データはSheet1にあるとして

private sub CommandButton1_Click()
 dim r as long
 if me.textbox1 = "" then exit sub
 me.listbox1.clear
 me.listbox1.columncount = 2

 with worksheets("Sheet1")
 for r = 2 To .range("E65536").end(xlUp).row
  if cstr(.cells(r, "E").value) = me.textbox1.value then
   me.listbox1.additem .cells(r, "A").value
   me.listbox1.list(me.listbox1.listcount - 1, 1) = .cells(r, "B").value
  end if
 next r
 end with
end sub

ぐらいで,逐一追加していくのが一番簡単かと思います。

QExcel VBA 検索した値を入力フォームに表示

VBA初心者ながら、顧客管理用に入力フォームなどを作っています。

検索フォームを作成し、名前や住所などをキーワードに実行ボタンを押して検索すると、顧客シートからデータを引っ張ってきて、検索フォームの下に対象リストが表示されます。(今回の場合は顧客シートのNo1、12、17のデータを引っ張ってきています。)

そこから、イメージとしては、画像のように3件結果が出力された内、一番上の検索結果をクリックすると、入力フォームに選択した対象者の情報が表示されるようなことをしたいのですが、何から手をつけたらよいかがわかりません・・・。

ちなみに、検索フォームに表示される値は、実際の入力フォームに入力する項目より少ない(例えば、入力フォームでは「ふりがな」がありますが、検索フォームに検索結果としては「ふりがな」は表示されていません。)

かなり大雑把な質問ですが、アドバイスなど頂けると幸いです。

Aベストアンサー

リストで選択したデータが存在する行番号が rowNumber に正しく取得できていますか?
私のサンプルで想定している環境は以下のように想定しています。

・ データ群が書き込まれているシートの 1行目が項目名になっていて、2行目からデータが入力されている。
・ 1つのデータは 1行で完結する。
・ 1列目(A列)には抜けもれなく通し番号が振ってある。(1件目の A2 が 1 で、 2件目の A2 が2、以下 1ずつ増えていっている)
・ 検索フォームのリストボックスの 1列目は、データ群のシートの A列の値(通し番号)が表示されている。

という状況なので、
1. 検索結果のリストから 1つのクリックする。
2. クリックされたリスト項目の 1列目の値をもとに、元の場所の行番号を割り出す。(元のデータのシートは 2行目からデータが始まっているのでリスト項目 1列目の値に 1 を加算すれば元の行番号になる)


もし以下のような環境だと、選択したリスト項目の内容から元のデータの行番号を推察することができません。
・ データ群のシートの 1列目は ID となっていて、改廃されていくと番号が飛ぶこともある。
・ 検索フォームのリストの 1列目は ID の値である。

この場合はリストボックスの 1列目に隠し列を作って起き、元の行番号を表示させておくのはどうでしょうか。
1列目の列幅を 0 pt にすれば見えません。(ColumnWidth プロパティ)

リストで選択したデータが存在する行番号が rowNumber に正しく取得できていますか?
私のサンプルで想定している環境は以下のように想定しています。

・ データ群が書き込まれているシートの 1行目が項目名になっていて、2行目からデータが入力されている。
・ 1つのデータは 1行で完結する。
・ 1列目(A列)には抜けもれなく通し番号が振ってある。(1件目の A2 が 1 で、 2件目の A2 が2、以下 1ずつ増えていっている)
・ 検索フォームのリストボックスの 1列目は、データ群のシートの A列の値(通し番号)...続きを読む

QExcelVBA でリストリストボックスに列見出しをコーディングでつける

エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。

この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか?

ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。

どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

Aベストアンサー

Wendy02 です。配列で入れる方法を考えてみましたが、できませんでした。

結局、他の方法としては、ListBox の 上に、白のLabel をそれぞれのColumnにあわせて、表示するぐらいしか、思いつきません。(これは、論外でしょうね)

列見出し(フィールド)は、もともと、Excelのワークシートの、データベース用の仕様のひとつだから、Rangeオブジェクトでしか、ListBox の Header に入れることは、出来ないようです。


人気Q&Aランキング

おすすめ情報