Excelマクロの勉強中です。
マクロで封筒の宛名印刷をしたいと考えています。
Excelシートの内容は下のような感じです。
---------------------------------------------------
整理番号 氏名 郵便番号 県 市町村
00001 徳川家康 000-0000 愛知県 ○○市・・・
00002 武田信玄 000-0000 山梨県 ○○市・・・
00003 豊臣秀吉 000-0000 愛知県 ○○市・・・
00004 上杉謙信 000-0000 新潟県 ○○市・・・
00005 伊達正宗 000-0000 宮城県 ○○市・・・
00006 浅井長政 000-0000 滋賀県 ○○市・・・
00007 前田利家 000-0000 福井県 ○○市・・・
00008 毛利元就 000-0000 岡山県 ○○市・・・
00009 斉藤道三 000-0000 岐阜県 ○○市・・・
00010 島津義光 000-0000 福岡県 ○○市・・・
---------------------------------------------------
(1)このシートを「県」でフィルターをかけて、
ユーザーフォームに結果を表示したい。
(表示行数は不定となります。)
(2)結果表示行のそれぞれにチェックボックスを設け、
一斉印刷と選択印刷の両方を選べるようにしたい。
と言うのが目的なのですが、
このような処理はユーザーフォームで可能なのでしょうか?
よろしくお願いします。
No.1
- 回答日時:
>のような処理はユーザーフォームで可能なのでしょうか?
可能です。
ユーザーフォーム上にListBoxを設けListBoxにフィルターをかけた値を表示します。
ListBoxは
ListStyleプロパティ を fmListStyleOption
MultiSelectプロパティ を fmMultiSelectMulti
に設定すると1列目にチェックボックスが表示されます
この回答への補足
ご回答ありがとうございます。
途中まではうまく行ったのですが・・・、
============================================================
Private Sub UserForm_Initialize()
Dim データ範囲
With Worksheets("住所録")
データ範囲 = .Range(.Cells(2, 1), .Cells(Rows.Count, 5).End(xlUp)).Value
End With
With ListBox1
.ColumnCount = 5
.ColumnWidths = "20;50;50;50;50"
.List = データ範囲
.MultiSelect = fmMultiSelectMulti
.ColumnHeads = True
.ListStyle = fmListStyleOption
End With
End Sub
============================================================
問題は、
(1)フィルターをかけた情報と違うものが表示されることがある。
(2)コラムヘッドが表示されない。
お分かりになるでしょうか?
No.2ベストアンサー
- 回答日時:
>(1)フィルターをかけた情報と違うものが表示されることがある。
フィルターで抽出された値をリストボックスに設定するには一旦、抽出したデーターを
他のシートに移して、それを基に設定する必要があります。
例ではSheets("作業場").を設けて行っています。
Private Sub UserForm_Initialize()
Dim データ範囲
With Worksheets("住所録")
Sheets("作業場").Cells.ClearContents
.Range("A2", .Cells(Rows.Count, 5).End(xlUp)).Copy Sheets("作業場").Range("A1")
データ範囲 = Sheets("作業場").Range("A1").CurrentRegion.Value
End With
With ListBox1
.ColumnCount = 5
.ColumnWidths = "20;50;50;50;50"
.List = データ範囲
.MultiSelect = fmMultiSelectMulti
.ListStyle = fmListStyleOption
End With
End Sub
>(2)コラムヘッドが表示されない。
見出しを表示するにはリストデーターの設定は.RowSourceを使います。
Private Sub UserForm_Initialize()
Dim データ範囲 As String
Dim LastRow As Long
With Worksheets("住所録")
LastRow = .Cells(Rows.Count, 5).End(xlUp).Row
データ範囲 = .Range("A2:E" & LastRow).Address(External:=True)
End With
With ListBox1
.ColumnCount = 5
.ColumnWidths = "20;50;50;50;50"
.RowSource = データ範囲
.MultiSelect = fmMultiSelectMulti
.ColumnHeads = True
.ListStyle = fmListStyleOption
End With
End Sub
こちらは、直接、フィルターのデーターを参照していますので
フィルターで隠れているデーターも表示されますので
一旦、別のシートにデーターをコピーして参照してやる必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 転職 長く続けられる好条件の求人でしょうか? 3 2023/07/12 18:45
- Excel(エクセル) ExcelのVLOOKUP関数 7 2022/08/23 06:46
- 転職 下記のような募集は、良い会社でしょうか?どう思いますか?入ってみたら良くない事が無いでしょうか? 4 2023/03/03 16:40
- 野球 高校野球の話 1 2022/08/18 09:54
- その他(国内) 3時!夜中なのか早朝なのか微妙な時間、5時に出るならシャワー浴びてお茶淹れて神棚、仏壇 2 2022/05/20 03:58
- Excel(エクセル) エクセルの参照について教えていただけますでしょうか 1 2022/12/16 11:35
- その他(国内) 静岡市の都会度が100だとしたら 次の市の都会度はいくつぐらいになりそうですか? 1栃木県宇都宮市 3 2022/11/26 19:05
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- 甲信越・北陸 北陸観光 3 2023/05/29 17:04
- 邦楽 サザンオールスターズの皆さんは、何故武道館まで時間がかかったのでしょうか 3 2022/06/03 21:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
excelの不要な行の削除ができな...
-
シート削除して同名シート追加...
-
EXCELで2つのファイルから重複...
-
VBAで CTRL+HOMEの位置へ移動...
-
Excelで日付変更ごとに、自動的...
-
トランジスタの選び方
-
エクセル 縦に長い表の印刷時...
-
EXCEL の表を一行ずつシートに...
-
ファンモータが作動しない。
-
エクセルで名簿を50音で切り分ける
-
EXCEL 複数行のデータを1行にま...
-
Excelマクロ 差分抽出の方法が...
-
(VBAにて)日付でデータを抽出す...
-
エクセルVBAで、特定文字から始...
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
-
実行時エラー’438 の解消
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
excelの不要な行の削除ができな...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
オートフィルタで抽出したデー...
-
エクセルのカメラ機能について
-
(VBAにて)日付でデータを抽出す...
-
エクセルで名簿を50音で切り分ける
-
別々のシートの表をピボットテ...
-
Excel 売上管理シートに入力し...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL の表を一行ずつシートに...
-
エクセルVBAで、特定文字から始...
おすすめ情報