Board logo

標題: 如何讓ListBox可以隨著儲存格內的數字變化 [打印本頁]

作者: catmm    時間: 2010-8-26 21:52     標題: 如何讓ListBox可以隨著儲存格內的數字變化

各位前輩請問一下

如何讓ListBox顯示可以隨著儲存格(A1)內的數字變化
還是要用Textbox??
作者: oobird    時間: 2010-8-26 22:23

把改變的語句寫在Worksheet_Change事件裡。
作者: catmm    時間: 2010-8-27 13:46

我的Listbox是在useform內,所以執行都會出現錯誤
作者: GBKEE    時間: 2010-8-27 14:45

回復 3# catmm
  1. Private Sub UserForm_Initialize()
  2.     With ListBox1
  3.         .RowSource = "a1:b6"
  4.         .ColumnCount = 2
  5.     End With
  6. End Sub
複製代碼

作者: catmm    時間: 2010-8-28 15:14

可以用喔~~
謝謝大大~~
感恩~~
作者: syuan    時間: 2010-8-28 17:13

小弟的寫法(好像比較多了一點......)


Private Sub UserForm_Initialize()
Dim xxxx AS Range

Set xxxx = Sheets("xxxx").Range("a1:b2")  

With UserForm1.ListBox1
     .ColumnCount = xxxx.Columns.Count
     .ColumnWidths = "100"
     .List = xxxx.Value
End With
End sub


以上僅參考.....
作者: GBKEE    時間: 2010-8-29 07:49

回復 6# syuan
ListBox1.List = xxxx.Value                             會固定List的值,為最初設定時xxxx的值
ListBox1.RowSource = xxxx.Address(, , , 1)   List的值,會隨xxxx的值 而改變
作者: syuan    時間: 2010-8-31 19:39

回復 7# GBKEE
感謝GBKEE大的教導

小弟尚有一事不解

如果在EXCEL裡有好幾頁的分頁(Sheet1、Sheet2、Sheet3....),小弟在#6所寫的語法,就是因為有好幾頁的分頁,所以才這樣寫!

小弟不才,那如果想以您這句語法去修改小弟的程式時,請問要如何去改呢?
ListBox1.RowSource = xxxx.Address(, , , 1)

註:以下為小弟套用您的語法來修改,發現好像僅會秀出第一個Sheet的內容而已!
ElseIf UserForm1.ListBox1.ListIndex = 6 And UserForm1.ListBox2.ListIndex = 1 And UserForm1.ListBox3.ListIndex = 1 Then
With UserForm2.ListBox1
     .RowSource = "m5:n8"
     .ColumnCount = 2
     .ColumnWidths = "100"
End With
UserForm2.Show


以上,祝安康!
作者: kimbal    時間: 2010-8-31 20:04

回復 8# syuan

你的意思是選一張表的對吧? 可以這樣的

dim strsht as string
strsht ="sheet1"

.....
ElseIf UserForm1.ListBox1.ListIndex = 6 And UserForm1.ListBox2.ListIndex = 1 And UserForm1.ListBox3.ListIndex = 1 Then
With UserForm2.ListBox1
     .RowSource = worksheets(strsht).range("m5:n8").address(,,,1)
     .ColumnCount = 2
     .ColumnWidths = "100"
End With
UserForm2.Show

以上回傳sheet1
把strsht="sheet1"  換成 "sheet2" 就會回傳sheet2 的
作者: Hsieh    時間: 2010-8-31 22:46

玩一下公共定義
切換檔案工作表試試看有甚麼差別[attach]2661[/attach]
作者: syuan    時間: 2010-9-22 23:12

回復  syuan

你的意思是選一張表的對吧? 可以這樣的

dim strsht as string
strsht ="sheet1"

.. ...
kimbal 發表於 2010-8-31 20:04


感謝kimbal大的教導

小弟試了一下,並將您的語法稍改了一下(將宣告拿掉了)

ElseIf UserForm1.ListBox1.ListIndex = 6 And UserForm1.ListBox2.ListIndex = 2 And UserForm1.ListBox3.ListIndex = 0 Then
With UserForm2.ListBox1
     .RowSource = Worksheets("xxxx").Range("M6:N9").Address(, , , 1)
     .ColumnCount = 2
     .ColumnWidths = "100"
End With
UserForm2.Show

這樣執行後,一樣可以達到小弟原先的需求∼∼

不過小弟原先的程式是有宣告的,用您的語法後,不但行數減少了,原先的的宣告也不需要了!真是一舉數得!

不過小弟好奇的是,在.range("m6:n9")的後面有個加上.Address(,,,1)

小弟想來想去,還是不懂意思!希望您或是各位先進能幫小弟解一下惑!

祝各位中秋佳節愉快∼∼
作者: Hsieh    時間: 2010-9-22 23:14

VBA說明
語法

運算式.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

運算式   代表 Range 物件的變數。

參數

名稱 必要/選用 資料類型 描述
RowAbsolute 選用 Variant 如果為 True,則會以絕對參照的形式傳回對列的參照。預設值為 True。
ColumnAbsolute 選用 Variant 如果為 True,則會以絕對參照的形式傳回對欄的參照。預設值為 True。
ReferenceStyle 選用 XlReferenceStyle 參照樣式。預設值為 xlA1。
External 選用 Variant 如果為 True 則會傳回外部參照。如果為 False 則會傳回區域參照。預設值為 False。
RelativeTo 選用 Variant 如果 RowAbsolute 及 ColumnAbsolute 都為 False,而且 ReferenceStyle 為 xlR1C1,則必須包含相對參照的起始點。此引數即為定義起始點的 Range 物件。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)