You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写VBA代码:定义名称(Process 1等)并实现自动填充单元格图案功能

VBA解决方案:零件工序判定与自动格式设置

1. 创建包含零件编号的定义名称(Defined Name)

以下代码会根据指定单元格范围创建Process 1、Process 2、Process 3三个定义名称。你需要根据截图里的零件编号实际位置修改代码中的范围引用:

Sub CreateProcessNames()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1") ' 替换为你的目标工作表名称
    
    ' 清除已存在的同名定义名称,避免重复创建
    On Error Resume Next
    ThisWorkbook.Names("Process 1").Delete
    ThisWorkbook.Names("Process 2").Delete
    ThisWorkbook.Names("Process 3").Delete
    On Error GoTo 0
    
    ' 创建Process 1的定义名称,示例范围为A2:A15,需替换为截图中的实际范围
    ThisWorkbook.Names.Add _
        Name:="Process 1", _
        RefersTo:=ws.Range("A2:A15"), _
        Visible:=True
    
    ' 创建Process 2的定义名称,示例范围为B2:B15,需替换为截图中的实际范围
    ThisWorkbook.Names.Add _
        Name:="Process 2", _
        RefersTo:=ws.Range("B2:B15"), _
        Visible:=True
    
    ' 创建Process 3的定义名称,示例范围为C2:C15,需替换为截图中的实际范围
    ThisWorkbook.Names.Add _
        Name:="Process 3", _
        RefersTo:=ws.Range("C2:C15"), _
        Visible:=True
        
    MsgBox "定义名称创建完成!"
End Sub

2. 自动判定工序并设置单元格格式

使用工作表Change事件,当单元格输入零件编号时,自动匹配对应的定义名称,判定所属工序,并将单元格填充为75%灰色图案:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    Dim processName As String
    Dim isMatch As Boolean
    
    ' 仅处理单个单元格输入,避免批量操作卡顿
    If Target.Cells.Count > 1 Then Exit Sub
    
    ' 仅处理指定列(示例为A列,可根据需求修改目标列)
    If Target.Column <> 1 Then Exit Sub
    
    ' 清空单元格原有填充格式
    Target.Interior.Pattern = xlNone
    
    ' 遍历三个工序定义名称,匹配输入的零件编号
    isMatch = False
    For Each processName In Array("Process 1", "Process 2", "Process 3")
        If Not IsError(Application.Match(Target.Value, ThisWorkbook.Names(processName).RefersToRange, 0)) Then
            ' 设置75%灰色图案填充
            Target.Interior.Pattern = xlGray75
            isMatch = True
            Exit For
        End If
    Next processName
    
    ' 可选:未匹配到工序时弹出提示
    If Not isMatch Then
        MsgBox Target.Value & " 未匹配到任何工序!"
    End If
End Sub

使用步骤

  1. 打开VBA编辑器(按下Alt + F11);
  2. 插入标准模块:右键点击工程资源管理器中的工作簿名称 → 插入 → 模块,粘贴第一部分的CreateProcessNames代码;
  3. 双击需要实现自动判定的工作表(如Sheet1),在右侧代码窗口粘贴第二部分的Worksheet_Change代码;
  4. 修改第一部分代码中的单元格范围,确保与截图里的零件编号位置一致;
  5. 运行CreateProcessNames宏(按下F5),完成定义名称的创建;
  6. 在指定列输入零件编号,单元格会自动填充75%灰色(若匹配到对应工序)。

内容的提问来源于stack exchange,提问作者Syazwan Zuhaizi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:15:16