ͼƬ 使用Excel用户窗体查找工作表记录_亚博竞彩官网_足彩外围平台-APP推荐

亚博竞彩官网_足彩外围平台-APP推荐

当前位置:主页 > 电脑教程 > 工具软件 > 办公软件 > Excel教程 > excel基础 > >

闂傚倷绀侀幉锛勬暜濡ゅ懌鈧啯寰勯幇顑┿儵鏌涢幇闈涙灈缂佲偓閸愵喗鐓曟繛鎴濆船瀵箖鏌涢悢閿嬫悙妞ゎ亜鍟存俊鍫曞川椤撶喎鈧海绱撴担璇℃當闁稿﹤娼¢幃浼搭敋閳ь剙鐣疯ぐ鎺濇晩闁芥ê顦板▓妯衡攽閻愯埖褰х紓宥呮喘楠炲繘鏁撻敓锟�-600*90

使用Excel用户窗体查找工作表记录

来源::未知 | 作者:亚博竞彩官网_足彩外围平台-APP推荐 | 本文已影响
闂傚倷绀侀幉锟犲礉閺囥垹绠犻幖鎼厛閺佸﹪鏌熼柇锕€骞戝ù婊勭矒閺屾盯鈥﹂幋婵呯敖闂佹悶鍔庨崢褑鐏嬮梺缁橆殔閻擃偊鎳栭埡鍐暥闂佸憡绋戦顓炵暤娓氣偓閺屾盯鈥﹂幋婵囩亶闂佸摜鍠撻崑娑㈡箒闂佹寧绻傜换鎴犫偓姘炬嫹-500*200

今天介绍在用户窗体中查找工作表中满足特定条件的所有记录,如下图所示,在工作表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


亚博竞彩官网_足彩外围平台-APP推荐

更多关于“excel基础”的文章

闂傚倸鍊风粈渚€骞夐敓鐘茬闁哄洢鍨圭粻鐘诲箹閹碱厾鍘涢柡浣革躬閺岀喖鏌囬敃鈧獮鎴澝瑰⿰鍕煉闁哄本绋栫粻娑㈠箻鐎涙ê鏋戦梻浣藉吹閸犳劙骞愭繝姘モ偓鍐Ψ閳哄倸鈧兘鏌ょ喊鍗炲幐闁惧繐閰e铏规喆閸曨厹鍋為梺鍛婃尰缁诲牓鐛箛娑樺窛閻庢稒蓱濞呫垽姊虹捄銊ユ珢闁瑰嚖鎷�-600*90
  闂傚倸鍊风粈渚€骞夐敍鍕殰婵°倕鎳岄埀顒€鍟鍕箛椤戔斂鍎甸弻娑㈠箛闂堟稒鐏堢紓浣插亾闁告劦鍠楅悡鏇熺箾閹存繂鑸圭€殿噣绠栭弻娑㈡偄闁垮鎮欏銈庝簻閸熷瓨淇婇懜闈涚窞閻庯綆鍋婇弫顏堟煟閻斿摜鐭嬫繝銏★耿楠炲鏁嶉崟顓犵暥闂佺粯姊瑰鍨i懡銈囩=濞达絽鎼瓭缂備礁顦遍幊鎾绘偩閻戣棄惟闁挎柨澧介惁鍫熺箾鏉堝墽绉繛鍜冪到閻★拷1-300*250
  闂傚倸鍊风粈渚€骞夐敍鍕殰婵°倕鎳岄埀顒€鍟鍕箛椤戔斂鍎甸弻娑㈠箛闂堟稒鐏堢紓浣插亾闁告劦鍠楅悡鏇熺箾閹存繂鑸圭€殿噣绠栭弻娑㈡偄闁垮鎮欏銈庝簻閸熷瓨淇婇懜闈涚窞閻庯綆鍋婇弫顏堟煟閻斿摜鐭嬫繝銏★耿楠炲鏁嶉崟顓犵暥闂佺粯姊瑰鍨i懡銈囩=濞达絽鎼瓭缂備礁顦遍幊鎾绘偩閻戣棄惟闁挎柨澧介惁鍫熺箾鏉堝墽绉繛鍜冪到閻★拷3-300*250

热榜阅读TOP

本周TOP10

禁止修改excel指定单元格数据数据

禁止修改excel指定单元格数据数据

对于某个Excel工作簿中的数据,如果我们仅仅是希望别人查看而不希望其随意地修改的话,为该工作簿添加一...