アプリ版:「スタンプのみでお礼する」機能のリリースについて

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 回答 (5件)

回答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プロパティをお勧めします。
 
    • good
    • 3
この回答へのお礼

再度ありがとうございます。
大変参考になりました。

お礼日時:2009/04/20 21:01

基本的な使い方が間違ってます。



RowSourceを使うなら、右辺は、セルのアドレスです

■UserForm1.ListBox1.RowSource = Sheets("Sheet1").Range(Cells(1, 1), Cells(3, 1)).Address

ただ、ふつうセル範囲をリストにしたいときは、Listプロパティを使います。

●UserForm1.ListBox1.List = Sheets("Sheet1").Range(Cells(1, 1), Cells(3, 1)).Value


それから、回答1で指摘されてるように、質問者のコードでは行番号列番号が違います。
 

 
    • good
    • 1
この回答へのお礼

listを使うのですね!
やってみたらうまく行きました!
行と列が逆になってすいません!
ありがとうございます。

お礼日時:2009/04/19 23:49

セル番地の誤記訂正


UserForm1.ListBox1..RowSource = "Sheet1!A1:A3"
    • good
    • 0
この回答へのお礼

そもそも私の質問の仕方が間違えてました。
再度ありがとうございます。

お礼日時:2009/04/19 23:38

UserForm1.ListBox1..RowSource = "Sheet1!A1:C1"


でどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/04/19 23:38

わたしはUserFormを使ったことがないのではずしてるかもしれませんが


A1からA3なら、Range(Cells(1, 1), Cells(3, 1)) じゃないでしょうか?
    • good
    • 0
この回答へのお礼

ああ!そうでした!ご指摘ありがとうございます!

お礼日時:2009/04/19 23:38

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