VBA 数据验证序列 动态更新

7 篇文章 1 订阅
本文描述了如何通过VBA脚本在Excel中,基于银行流水表中的单位名称,查找对应的合同编号,并将其作为下拉列表供用户选择,以便实现表1与表2的数据关联,进行进一步的数据分析。
摘要由CSDN通过智能技术生成

聪明又机灵的同事给我出了个题目,如下

表1为银行流水,有三个字段:日期,单位名称,金额

表2为合同目录,有四个字段:合同编号,合同名称,单位名称,合同额;其中一个单位可以签订多份合同,

现在需要在表1中根据单位名称,找到有几份合同,然后以下拉菜单的形式选择出相应的合同编号。最终实现通过合同编号将表1和表2连起来,做进一步的数据分析。

通过摸索,VBA可实现了上述功能。

要点:

1、确定目标单位(所在行的第二列)

2、根据目标单位在sheet2中找出所有的合同编号,并存在数组中

3、将数组赋值到下拉列表中

4、完成。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim aa As String
Dim bb As Integer ' 合同目录最大行数
Dim cc As String  ' 所选行的单位名称
Dim i As Integer
bb = Sheets(2).Range("A1").End(xlDown).Row
cc = Cells(Target.Row, 3)


If Target.Column = 7 Then

    For i = 1 To bb
        If Sheets(2).Cells(i, 3) = cc Then
            aa = aa & Sheets(2).Cells(i, 1) & Sheets(2).Cells(i, 2) & ","
        End If
    Next i
    aa = Left(aa, Len(aa) - 1)

    With Selection.Validation
    
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=aa
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .IMEMode = xlIMEModeNoControl
        .ShowInput = True
        .ShowError = True
    End With
End If
End Sub

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VBA(Visual Basic for Applications)是一种在Microsoft Office应用程序中使用的编程语言。要获取网页数据并实时更新,可以使用VBA的网络请求功能以及计时器功能。 首先,需要使用VBA中的HTTP请求对象来发送网络请求并获取网页数据。可以使用`CreateObject("MSXML2.XMLHTTP")`来创建HTTP请求对象。然后,使用HTTP请求对象发送GET或POST请求,获取所需网页数据。 ``` Dim http As Object Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", "http://example.com", False '替换为目标网页的URL http.send Dim response As String response = http.responseText ``` 接下来,可以将获取的网页数据解析为所需的格式,例如XML或HTML。可以使用VBA中的内置函数或第三方库来解析网页数据。 最后,为了实现实时更新,可以使用VBA中的计时器功能。可以使用VBA的`Application.OnTime`方法来定时执行获取网页数据的代码。 ``` Sub UpdateWebData() '获取网页数据的代码 '设定下一次更新的时间 Application.OnTime Now + TimeValue("00:05:00"), "UpdateWebData" End Sub Sub StartUpdating() '启动更新任务 Application.OnTime Now + TimeValue("00:00:01"), "UpdateWebData" End Sub Sub StopUpdating() '停止更新任务 Application.OnTime Now + TimeValue("00:00:01"), "UpdateWebData", , False End Sub ``` 以上代码示例中,`UpdateWebData`子例程中的代码会在每次调用时获取网页数据,并将下一次更新的时间设定为5分钟后。`StartUpdating`子例程用于启动更新任务,调用后会立即执行一次更新,并设定下一次更新的时间。`StopUpdating`子例程用于停止更新任务,调用后不再执行下一次更新。 通过使用VBA的网络请求和计时器功能,可以实现获取网页数据的实时更新。可以根据需求调整更新的时间间隔和代码逻辑,以满足实际应用的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值