EXCEL VBA限制工作数据批号或者自定义规则完整

EXCEL VBA限制工作数据批号或者自定义规则完整

python 复制代码
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nRow%, Arr(), cMc$, cPc$, cTxt$, nSum!
    If Target.Row = 1 Or Target.Column <> 4 Then Exit Sub
    If Target.CountLarge > 1 Then Exit Sub
    cMc = Target.Offset(0, -1).Value
    cPc = Target.Value
    If cMc = "" Or cPc = "" Then Exit Sub
    For sh = 0 To 1
        With Sheets(Array("期初", "入库")(sh))
            nRow = .Range("a1048576").End(xlUp).Row
            Arr = .Range("a1:e" & nRow).Value
        End With
        For i = 2 To nRow
            If Arr(i, 2 + sh) = cMc And Arr(i, 3 + sh) = cPc Then
                nSum = nSum + Arr(i, 4 + sh)
            End If
        Next
    Next
    nRow = Target.Row - 1
    With Me
        Arr = .Range("a1:e" & nRow).Value
    End With
    For i = 2 To nRow
        If Arr(i, 3) = cMc And Arr(i, 4) = cPc Then
            nSum = nSum - Arr(i, 5)
        End If
    Next
    With Target.Offset(0, 1).Validation
        .Delete
        .Add 2, 1, 8, nSum
        .InputTitle = "最大值"
        .InputMessage = nSum
    End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim nRow%, Arr(), cMc$, cTxt$, sh%
    If Target.Row = 1 Or Target.Column <> 4 Then Exit Sub
    If Target.CountLarge > 1 Then Exit Sub
    cMc = Target.Offset(0, -1).Value
    If cMc = "" Then Exit Sub
    For sh = 0 To 1
        With Sheets(Array("期初", "入库")(sh))
            nRow = .Range("a1048576").End(xlUp).Row
            Arr = .Range("a1:d" & nRow).Value
        End With
        For i = 2 To nRow
            If Arr(i, 2 + sh) = cMc Then
                If Not cTxt & "," Like "*," & Arr(i, 3 + sh) & ",*" Then
                    cTxt = cTxt & "," & Arr(i, 3 + sh)
                End If
            End If
        Next
    Next
    With Target.Validation
        .Delete
        If cTxt <> "" Then .Add 3, 1, 1, cTxt
    End With
End Sub
相关推荐
gCode Teacher 格码致知17 小时前
Python基础教学:Python的openpyxl和python-docx模块结合Excel和Word模板进行数据写入-由Deepseek产生
python·excel
Dcs17 小时前
Java 中 UnaryOperator 接口与 Lambda 表达式的应用示例
java·后端
猫小呆18 小时前
Weaviate服务器部署笔记
服务器·weaviate
M1582276905518 小时前
工业互联利器!EtherNet/IP 转 ModbusTCP 网关,让跨协议通信零门槛
服务器·网络·tcp/ip
阿巴~阿巴~18 小时前
基于UDP协议的英汉翻译服务系统:从网络通信到字典查询的完整机制
linux·服务器·网络·网络协议·udp协议·套接字绑定·英汉翻译服务系统
阿巴~阿巴~18 小时前
简易回声服务器实现与网络测试指南
linux·服务器·网络·udp协议·网络测试·udp套接字编程
bagadesu19 小时前
使用Docker构建Node.js应用的详细指南
java·后端
没有bug.的程序员19 小时前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
洛_尘20 小时前
JAVA EE初阶 2: 多线程-初阶
java·开发语言
Slow菜鸟20 小时前
Java 开发环境安装指南(五) | Git 安装
java·git