excel圖表制作:創建級聯列表框

      網友投稿 685 2025-04-04

      excel圖表制作:創建級聯列表框


      本文利用excel圖表記錄集技巧,創建級聯列表框。

      示例效果如下圖1所示。

      圖1

      正如上圖1所演示的,創建的一組列表框-Region,Market和State可以聯動工作。也就是說,如果選擇列表框Region中的某項,那么列表框Market和State僅顯示在所選擇的Region項中與該項關聯的值。同樣,選擇列表框Market中的某項,列表框State中僅顯示與Market項中與該項關聯的值。

      解決方法

      使用ADO記錄集為子列表框提取記錄,使用父列表框的值作為條件。在這種情況下,Region和Markets都是父列表框,因為它們影響如何提供下一級的值。Market和State作為子列表框,因為它們的值取決于其上一級列表框。

      在本示例中,創建一個函數,接受子列表框作為其參數,然后使用該列表框判斷提取什么數據以及填充哪個列表框。

      打開VBE,插入一個標準模塊,輸入下列代碼:

      Function CascadeChild(TargetChild As OLEObject)

      Dim Myconnection As Connection

      Dim Myrecordset As Recordset

      Dim Myworkbook As String

      Dim strSQL As String

      Set Myconnection = NewConnection

      Set Myrecordset = NewRecordset

      ‘識別要引用的工作簿

      Myworkbook =Application.ThisWorkbook.FullName

      ‘打開對該工作簿的連接

      Myconnection.Open”Provider=Microsoft.Jet.OLEDB.4.0;” & _ ? ?“Data Source=”& Myworkbook & “;” & _ ? ?“ExtendedProperties=Excel 8.0;” & _ ? ?“Persist SecurityInfo=False”

      ‘確定正確的SQL語句,在父列表框中使用該值作為查詢的參數

      Select CaseTargetChild.Name

      Case Is =”lstMarket”

      strSQL = “SelectDistinct [Market] AS [tgtField] from [Sheet1$A1:C40] Where [Region]='”& Sheet1.lstRegion.Value & “‘”

      Case Is =”lstState”

      strSQL = “SelectDistinct [State] AS [tgtField] from [Sheet1$A1:C40] Where [Market]='”& Sheet1.lstMarket.Value & “‘”

      End Select

      ‘裝載查詢到記錄集中

      Myrecordset.Open strSQL,Myconnection, adOpenStatic

      ‘填充目標子列表框

      With TargetChild.Object

      .Clear

      Do

      .AddItemMyrecordset![tgtField]

      Myrecordset.MoveNext

      Loop UntilMyrecordset.EOF’自動選擇列表框中的第一個值

      .Value = .List(0) ? ?End With

      ‘清理 ? ?Myconnection.Close

      Set Myrecordset = Nothing

      Set Myconnection =Nothing

      End Function

      每個父列表框的OnClick事件只是簡單地調用上面的函數,傳遞目標子列表框作為函數的參數:

      Private Sub lstMarket_Click() ? ?CallCascadeChild(ActiveSheet.OLEObjects(Sheet1.lstState.Name))End Sub Private Sub lstRegion_Click() ? ?Call CascadeChild(ActiveSheet.OLEObjects(Sheet1.lstMarket.Name))End Sub

      說明

      1.示例中使用的是ActiveX列表框控件。

      2.需要在VBE中設置對Microsoft ActiveX Data Objects Library的引用,如下圖2所示。

      圖2

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:在wps表格中如何求和(wps里表格怎么求和)
      下一篇:Exce2007處理數據時如何在幾百人名中篩選出名字重復的數據(excel2007批量篩選重復人名)
      相關文章
      国产av无码专区亚洲国产精品| 亚洲人成网站免费播放| 亚洲AV无码一区二区三区电影 | 豆国产96在线|亚洲| 亚洲一区二区无码偷拍 | 亚洲一级特黄大片无码毛片| 国产精品亚洲а∨无码播放麻豆| 亚洲精品乱码久久久久久V| 亚洲乱码日产精品一二三| 国产精品亚洲综合久久 | ass亚洲**毛茸茸pics| 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产中文在线视频| 亚洲小说图片视频| 亚洲制服在线观看| 国产亚洲精品影视在线| 亚洲一区二区三区写真| 亚洲国产区男人本色| 亚洲av成人一区二区三区在线播放| 亚洲a∨无码一区二区| 亚洲 无码 在线 专区| 亚洲熟伦熟女新五十路熟妇 | 亚洲国产精品无码第一区二区三区| 亚洲精品精华液一区二区| 亚洲av无码一区二区三区在线播放| 亚洲乱码国产乱码精华| 午夜亚洲福利在线老司机| 亚洲国产电影av在线网址| 亚洲综合色视频在线观看| 亚洲午夜福利AV一区二区无码| 亚洲精品无码久久久久去q| 亚洲AV成人精品网站在线播放| 亚洲一级二级三级不卡| 91亚洲性爱在线视频| 亚洲综合无码一区二区痴汉| 久久亚洲AV成人无码国产最大| 成人精品国产亚洲欧洲| 亚洲综合另类小说色区色噜噜| 亚洲AV无码专区国产乱码电影 | 亚洲制服丝袜一区二区三区| 中文字幕亚洲综合久久综合|