Board logo

標題: [發問] 如何讓Listbox可一併顯示工作表的表頭呢? [打印本頁]

作者: dechiuan999    時間: 2010-10-15 15:33     標題: 如何讓Listbox可一併顯示工作表的表頭呢?

各位大大好:

   小弟想利用Combobox1_Change方式
選取指定姓名並取出姓名一定範圍內
的資料。現已達成取出資料的問題。
但有一問題仍無法突破,就是表頭如
何也能同時一併和取出資料顯示在Listbox1內呢?

Private Sub ComboBox1_Change()
    Dim mSht As Worksheet
    Dim mAr
    Dim s$, j%, m%
    Dim mStr$, mStr1$
    Dim mRng
    Dim mRng1 As Range   
   
    Set mSht = Worksheets("L_Data01")
    With mSht        
        With ComboBox1
            .Width = .Width * 0.5
            .ColumnCount = 1
            mAr = .List
            .Value = .List(.ListIndex)
            mStr = .Value
        End With        
        
        Set mRng1 = .Columns("c").Find(what:=mStr, lookat:=xlWhole, searchorder:=xlByRows)
        If Not mRng1 Is Nothing Then
            m = mRng1.Row
        Else
            MsgBox "請先選取指定姓名"
            Exit Sub
        End If        
        mRng = .Range("a" & m).Resize(6, 8)        
        With ListBox1
            .Width = .Width * 1
            .ColumnCount = 8
            .ColumnHeads = True   '工作表的第一列表頭無法顯示
            .List = mRng
        End With        
    End With      
End Sub

謝謝各位大大。
作者: GBKEE    時間: 2010-10-15 17:13

回復 1# dechiuan999
  1. Private Sub ComboBox1_Change()
  2.     Dim mSht As Worksheet, mAr, s$, j%, m%, mStr$, mStr1$
  3.     Dim mRng  As Range, mRng1 As Range
  4.     Set mSht = Worksheets("L_Data01")
  5.     With mSht
  6.         With ComboBox1
  7.             .Width = .Width * 0.5
  8.             .ColumnCount = 1
  9.             mAr = .List
  10.             .Value = .List(.ListIndex)
  11.             mStr = .Value
  12.         End With
  13.         Set mRng1 = .Columns("c").Find(what:=mStr, lookat:=xlWhole, searchorder:=xlByRows)
  14.         If Not mRng1 Is Nothing Then
  15.             m = mRng1.Row
  16.         Else
  17.             MsgBox "請先選取指定姓名"
  18.             Exit Sub
  19.         End If
  20.         .Range("IO1").CurrentRegion = ""
  21.         .Range("a" & m).Resize(6, 8).Copy .Range("IO2")
  22.         Set mRng = .Range("IO2").CurrentRegion
  23.         .[A1:H1].Copy .[IO1]
  24.         With ListBox1
  25.             .Width = .Width * 1
  26.             .ColumnCount = 8
  27.             .ColumnHeads = True
  28.             .RowSource = mRng.Address(, , , 1, 1)
  29.             .ColumnHeads = True
  30.         End With
  31.     End With
  32. End Sub
複製代碼

作者: dechiuan999    時間: 2010-10-15 20:21

謝謝版主大大。

   小弟引用版主大大的語法,
已測試成功。

   但其中語法看了說明
也是不得其門而入。

其語法如下:

mRng.Address(, , , 1, 1)

不知能否請版大大也能對此語
法詳加說明,日後小弟也有機
會能加以應用呢?

另小弟也稍加修正語法,
能與各位分享。

語法如下:

  .Range("IO1").CurrentRegion = ""
        .Range("a" & m).Resize(6, 8).Copy .Range("IO2")
         Set mRng = .Range("IO2").CurrentRegion      
        
        .[A1:H1].Copy .[IO1]        
        With Application.Names.Add("tmp", RefersTo:=mRng)
            mStr1 = .RefersTo
            .Delete
        End With
        
        With ListBox1
            .Width = .Width * 1
            .ColumnCount = 8
            .ColumnHeads = True
            '.RowSource = mRng.Address(, , , 1, 1)
            .RowSource = mStr1
            .ColumnHeads = True
        End With

感恩版主大大。
作者: GBKEE    時間: 2010-10-15 21:13

本帖最後由 GBKEE 於 2010-10-15 21:14 編輯

回復 3# dechiuan999
Excel Vba 說明 [ 套用至 Range 物件時用 Address 屬性。]   操作 說明裡的範例  看看便知
作者: oobird    時間: 2010-10-15 22:41

listbox載入不連續數據無法顯示表頭,一直是用戶心裡的痛。
不知新版改善這個問題沒?
作者: dechiuan999    時間: 2010-10-16 05:33

謝謝二位版主大大。

感恩大大!
作者: Hsieh    時間: 2010-10-16 08:18

本帖最後由 Hsieh 於 2010-10-16 10:03 編輯

回復 5# oobird
在2003以後有建立清單功能
rowsource用清單位址即可

    [attach]3216[/attach]
      [attach]3218[/attach]
作者: oobird    時間: 2010-10-16 08:23

我的excel很菜的…
[attach]3217[/attach]
作者: Hsieh    時間: 2010-10-16 08:33

因為清單是2003版本以後的功能
您的2002應該無此物件
作者: GBKEE    時間: 2010-10-16 10:04

本帖最後由 GBKEE 於 2010-10-16 10:06 編輯
回復  oobird   在2003以後有建立清單功能  rowsource用清單位址即可
Hsieh 發表於 2010-10-16 08:18
listbox載入不連續數據無法顯示表頭,一直是用戶心裡的痛。不知新版改善這個問題沒?
oobird 發表於 2010-10-15 22:41


Hsieh版主 所提供的 在2003版 可以執行 可是還是不能達到   oobird版主的 [不連續數據無法顯示表頭 ,不知新版改善這個問題沒.]




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