トップページ > プログラム > 2015年10月10日 > uc7CQwkx

書き込み順位&時間帯一覧

17 位/178 ID中時間01234567891011121314151617181920212223Total
書き込み数0001100000000000000001003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
277
Excel VBA 質問スレ Part38 [転載禁止]©2ch.net

書き込みレス一覧

Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
277 :デフォルトの名無しさん[sage]:2015/10/10(土) 03:55:34.16 ID:uc7CQwkx
昨日からVBAの学習を始めた者です。

<質問内容>
リストボックスにsheet2のA1:A13に入力されている内容を一覧表示したいのですが、何故かsheet1のA1:A13の内容が表示されてしまいます。
どの様な原因が考えられるでしょうか。お手数ですがご教授願いますm(__)m
(シートは「sheet1」、「sheet2」、「sheet3」があります)

<環境>
Windows7 home premium(64bit)+Excel2007

<作成手順>
1.「挿入>ユーザフォーム」からユーザーフォームを作成
2.「ツールボックス>リストボックス」からリストボックスを作成
3.作成したユーザーフォームを選択した状態でコードを表示し、以下のコードを入力

Option Explicit

Private Sub UserForm_Initialize()
Dim objsheet As Worksheet
Set objsheet = ThisWorkbook.Worksheets(3)

ListBox1.RowSource = objsheet.Range("a1:a13").Address
ListBox1.MultiSelect = fmMultiSelectExtended

End Sub

4.上記コードを標準モジュール(Module1)から以下の様に呼び出し実行
Sub Test()
ユーザーフォーム.Show
End Sub
Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
278 :277[sage]:2015/10/10(土) 04:07:02.62 ID:uc7CQwkx
申し訳御座いません。作成手順の内容に一箇所誤記がございました。

誤: Set objsheet = ThisWorkbook.Worksheets(3)
正: Set objsheet = ThisWorkbook.Worksheets(2)

正しくは上記の通りです。


Worksheetsをインデックス指定、シート名指定とそれぞれ数パターン試してみたのですが
("sheet2")、("sheet3")や(2)、(3)の場合でも、sheet1のA1:A13の内容が表示されてしまいます。


以上
Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
301 :277[sage]:2015/10/10(土) 21:43:42.05 ID:uc7CQwkx
なるほど!!

Addressプロパティはシート名を含まないセル座標を返す仕様なんですね。
Range.Address プロパティのリファレンスを見ただけではそこまで気付けませんでした。


まずは、以下の方法で試してみようと思いますが処理速度を考慮した
様々な記述方法をご紹介頂いたので今後の参考にしたいと思います。
(速いに越したこと無いですからね)

・Listbox1.List = Worksheets("Sheet2").Range("A1:A13").Value
・.ListBox1.AddItem.Cells(i,0) = Objsheet.Cells(i,1)
・objsheet.Range("a1:a13").Address(1,1,1,1)
・RowSource = "Sheet2!A1:A13"


ご回答下さった皆さん、本当に有難うございましたm(__)m


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。