
現在エクセルのVBAを勉強中(かなり初心者ですが。。)で、仕事でも使う封筒印刷用のマクロを組んでみようと思っています。
作成したユーザーフォーム内のリストボックスに、宛名一覧を入力したワークシートからデータを引っ張ってきて表示しようと思っているのですが、宛名一覧を記述しているシートがアクティブの際にはうまく動作するのですが、その他のシート(封筒のレイアウトを書き込んでいるシートなど)がアクティブの時には
実行時エラー'1004'
アプリケーション定義まてはオブジェクト定義のエラーです。
というエラーが表示され、うまく行きません。
うまく行く方法をご教授いただけたらと思います。よろしくお願いいたします。
ソース(標準モジュールに記述)
Sub adrsList()
UserForm1.ListBox1.List = Worksheets("address").Range(Cells(Worksheets("address").UsedRange.Rows.Count, 8)).Value
UserForm1.Show
End Sub
※address:住所録のデータがH列に格納されているワークシートです
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんばんは!
address SheetのH1セル以降にデータがあるとすると
Dim lastRow As Long
lastRow = Worksheets("address").Cells(Rows.Count, "H").End(xlUp).Row
With UserForm1
.ListBox1.RowSource = "address!H1: H" & lastRow
.Show
End With
としたらどうなりますか?
※ 検証はしていませんが、一般的には プロパティで表示データを決めるコトが多いので
RowSource を使ってみました。
address Sheetの1行目が項目行でデータは2行目以降にある場合は
>H1 を H2 として調整してみてください。m(_ _)m
No.2
- 回答日時:
初心者さんが必ず一度は引っかかるミスですが、エラーの直接の原因は
Cells(Worksheets("address").UsedRange.Rows.Count, 8)
このcellsが「どのシートの」それなのか、明示されていません。
このときVBAは「アクティブシートの」指定セルを取得しようとしますが、それが
worksheets("address").range( )
の中に入っている、つまりaddressシートのセル範囲を指定するのに他のシートのセルを使おうとして矛盾が発生しています。
このエラー自身の直接の解決方法は、
Worksheets("address").Range(Worksheets("address").Cells(Worksheets("address").UsedRange.Rows.Count, 8))...
のように、該当のcellsもしっかりaddressシートのそれだと指定する事になります。
今回のご質問の直接の回答は、ここまでです。
で。
もっとも次の問題として、これでホントにリストボックスに格納したいセル範囲が取得できてるのかという部分が、非常にアヤシイですね。
具体的にaddressシートのどの範囲をリストボックスに取り込みたいのか、つまりそもそも「具体的に」(あなたがこーなったらいいなと願ってることじゃなく)何がどういう理屈でどーなって「いま欲しいセル範囲」になるのか、そこんところを良く考えてやる必要がありそうです。
ここんところは今回のご質問内容じゃありませんので、実際のあなたのaddressシートの、具体的にどこ番地のセルにどんなデータが記入されてて、そこからどんな具合にlistboxに取り込みたいのか、あなたのエクセルを回答者の手元に再現できるように手抜きせず情報提供して、新しい次のご相談として投稿し直してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロを使って日々...
-
Excelの選択肢をポップアップリ...
-
VBA セルの値と同じ名前のシー...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセル:複数シートのデータ...
-
excel vba 複雑な奴です
-
エクセルで入力シートから別シ...
-
エクセル 毎日更新する表のデ...
-
ExcelVBAで、指定したシートに...
-
エクセルで入力→日付を自動判別...
-
Excelで数値→文字列変換で指数...
-
Excelで行ごとコピー、同じ行を...
-
テキストボックス内の文字のふ...
-
Excelの関数について、特定の文...
-
日付が1年以内になると他のセル...
-
エクセルでグラフタイトルが折...
-
負のデータが含まれている場合...
-
エクセルにおける、グラフの指...
-
C+vのvは英語で何の頭文字...
-
【Excel】貼り付けた画像がいつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
エクセルのワークシートが重く...
-
VBA セルの値と同じ名前のシー...
-
Excel ハイパーリンク先のセル...
-
Excelの中央値の複数条件について
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルで入力→日付を自動判別...
-
ExcelVBAで、指定したシートに...
-
エクセル マクロを使って日々...
-
VBAを利用しオートフィルタで日...
-
【Excel】VLOOKUP関数で複数の...
-
エクセルにて別シートの値を参...
-
VBAのoffsetの動き方について教...
-
Excel 複数のシートからグラフ...
-
エクセルについて質問です 日付...
-
EXCEL VBA 一致しないデータの...
-
エクセルVBA:表の内容を担当者...
-
指定した日付の範囲内でデータ...
-
Excelマクロで毎月のデータ一覧...
-
Excel日付変更との参照先の連動
おすすめ情報