• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習電腦 > 工具軟件 > 辦公軟件學習 > Excel教程 > Excel基礎 >

    使用Excel用戶窗體查找工作表記錄

    時間: admin1 分享

    今天介紹在用戶窗體中查找工作表中滿足特定條件的所有記錄,如下圖所示,在工作表Sheet1中,姓名為“張三”的共有三條記錄,在姓名右側的文本框中輸入“張三”后,將自動顯示第1條記錄的相關內容,然后可以單擊“前一條”和“后一條”按鈕來回顯示相關的記錄。

    首先,使用Find方法根據查找條件查找到滿足條件的所有記錄,并將其賦值給Range變量。接著,使用Property Set語句創建的自定義屬性將Range變量存儲的記錄區域傳遞給用戶窗體。為了確保引用的記錄區域與工作表中出現的順序相同,在Find方法中使用了 After參數并將其值設置為搜索區域的最后一個單元格,這樣Find方法將從單元格區域的第一個單元格開始搜索。

    將用戶窗體命名為UPos,其中的一些控件及其名稱為:姓名文本框(txtName)、工作內容文本框(txtWork)、共有記錄的文本框(txtY)、第幾條記錄的文本框(txtX)、前一條按鈕(cmdPrev)、后一條按鈕(cmdNext),還有一些標簽控件。

    在標準模塊中輸入下列代碼:

    Sub ShowPos()
    Dim ufPos As UPos '用戶窗體變量
    Dim rFound As Range '存儲當前找到的單元格
    Dim rNameRange As Range '要搜索的單元格區域
    Dim sFirstAdd As String '第一個被找到的單元格的地址
    Dim rAllFound As Range '所有找到的單元格
    '從用戶處獲取數據,這里為了介紹方便采用了硬編碼
    Const strName As String = "張三"
    Set rNameRange = Sheet1.Range("A2:A8")
    '查找
    Set rFound = rNameRange.Find(strName, rNameRange(rNameRange.Cells.Count), xlValues, xlWhole)
    '如果找到
    If Not rFound Is Nothing Then
    '存儲第一個找到的單元格的地址
    sFirstAdd = rFound.Address
    '添加找到的單元格到所有找到的單元格區域中
    Set rAllFound = rFound
    '繼續查找直到循環到開始處為止
    Do
    Set rFound = rNameRange.FindNext(rFound)
    If rFound.Address <> sFirstAdd Then
    Set rAllFound = Union(rAllFound, rFound)
    End If
    Loop Until rFound.Address = sFirstAdd
    '創建用戶窗體
    Set ufPos = New UPos
    '傳遞單元格區域到用戶窗體
    Set ufPos.AllFound = rAllFound
    ufPos.Initialize
    ufPos.Show
    Else
    MsgBox "沒有找到匹配的數據!"
    End If
    Set ufPos = Nothing
    End Sub

    在用戶窗體模塊中,聲明一些模塊級的變量來包含傳遞的區域以及當前顯示的區域。

    Private mrAllFound As Range
    Private mrCurrent As Range
    Property Set AllFound(RHS As Range)
    Set mrAllFound = RHS
    End Property

    在顯示用戶窗體之前,要初始化該窗體,使用查找到的第一條記錄填充窗體中的相應控件。

    Public Sub Initialize()
    '設置當前記錄為第一條記錄
    If Not mrAllFound Is Nothing Then
    Set mrCurrent = mrAllFound(1)
    Me.txtName.Text = mrCurrent.Value
    Me.txtWork.Text = mrCurrent.Next.Value
    Me.txtY.Text = mrAllFound.Cells.Count
    Me.txtX.Text = 1
    End If
    End Sub

    前一條按鈕和后一條按鈕使用FindPrevious方法和FindNext方法將記錄移動到合適的位置。

    Private Sub cmdNext_Click()
    '設置當前單元格
    Set mrCurrent = mrAllFound.FindNext(mrCurrent)
    Me.txtName.Text = mrCurrent.Value
    Me.txtWork.Text = mrCurrent.Next.Value
    '增加計數器值
    Me.txtX.Text = Me.txtX.Text + 1
    End Sub
    Private Sub cmdPrev_Click()
    Set mrCurrent = mrAllFound.FindPrevious(mrCurrent)
    Me.txtName.Text = mrCurrent.Value
    Me.txtWork.Text = mrCurrent.Next.Value
    Me.txtX.Text = Me.txtX.Text - 1
    End Sub

    最后,當第幾條文本框中的值變化時,啟用或禁用按鈕使得用戶不能試圖到達不存在的記錄。

    Private Sub txtX_Change()
    '啟用/禁用按鈕
    If Me.txtX.Text = 1 Then
    Me.cmdPrev.Enabled = False
    Else
    Me.cmdPrev.Enabled = True
    End If
    If Me.txtX.Text = Me.txtY.Text Then
    Me.cmdNext.Enabled = False
    Else
    Me.cmdNext.Enabled = True
    End If
    End Sub

    11596 主站蜘蛛池模板: 欧美性xxxxx极品| 67194在线午夜亚洲| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 日本成人在线网址| 国产在线麻豆精品观看| 久久精品视频观看| 国产精品久久自在自线观看| 校花的好大的奶好爽漫画| 国产粉嫩嫩00在线正在播放| 亚洲另类自拍丝袜第1页| 男人都懂的网址在线看片| 欧美videos另类极品| 国产成人不卡亚洲精品91| 久久亚洲欧美国产精品| 色一乱一伦一图一区二区精品| 拍拍拍无挡视频免费观看1000 | 99久久国产免费-99久久国产免费| 波多野结衣伦理片bd高清在线| 在线观看片免费人成视频播放| 亚洲欧美校园春色| 18禁美女黄网站色大片免费观看| 欧美亚洲桃花综合| 国产成人精品电影| 久久久噜噜噜久久中文字幕色伊伊| 色噜噜狠狠狠色综合久| 成人免费夜片在线观看| 免费人成在线观看网站品爱网 | 亚洲日韩中文字幕在线播放 | 天堂va在线高清一区| 亚洲欧美日韩电影| 亚洲人配人种jizz| 日韩免费一区二区三区| 国产18禁黄网站免费观看| v片免费在线观看| 欧美极品少妇无套实战| 国产成人综合日韩精品婷婷九月| 久久人人爽天天玩人人妻精品| 精品国产污污免费网站| 在线播放亚洲美女视频网站| 亚洲a∨精品一区二区三区下载| 野花社区在线观看www|