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

VBA实现按表头及用户窗体值定位交叉单元格并设置格式

VBA实现培训记录写入与单元格着色方案

1. 「记录培训」按钮触发代码

在工作表插入表单控件按钮后,指定以下宏:

Sub ShowTrainingForm()
    UserForm1.Show ' 替换为你的用户窗体实际名称
End Sub

2. 用户窗体提交逻辑(窗体添加「提交」按钮,命名为cmdSubmit)

在用户窗体的代码模块中添加核心处理代码:

Private Sub cmdSubmit_Click()
    Dim ws As Worksheet
    Dim nameRow As Variant, codeCol As Variant
    Dim targetCell As Range
    
    ' 绑定目标工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 定位姓名对应的行(假设行表头在第1行,按需修改)
    nameRow = Application.Match(Me.cbName.Value, ws.Rows(1), 0)
    ' 定位编码对应的列(假设列表头在第1列,按需修改)
    codeCol = Application.Match(Me.cbCode.Value, ws.Columns(1), 0)
    
    ' 检查匹配结果,避免找不到项导致报错
    If IsError(nameRow) Or IsError(codeCol) Then
        MsgBox "未匹配到对应的姓名或培训编码,请检查输入", vbExclamation
        Exit Sub
    End If
    
    ' 获取交叉单元格
    Set targetCell = ws.Cells(nameRow, codeCol)
    
    ' 写入日期并设置格式
    targetCell.Value = Me.cbDate.Value
    targetCell.NumberFormat = "yyyy-mm-dd" ' 可根据需求调整日期格式
    
    ' 根据评价结果设置单元格填充色
    Select Case Me.cbMark.Value
        Case "Good"
            targetCell.Interior.Color = RGB(146, 208, 80) ' 绿色
        Case "to be reviewed"
            targetCell.Interior.Color = RGB(255, 235, 156) ' 黄色
        Case "not good"
            targetCell.Interior.Color = RGB(255, 199, 206) ' 红色
        Case Else
            targetCell.Interior.ColorIndex = xlColorIndexNone ' 默认无填充
    End Select
    
    ' 关闭窗体
    Unload Me
End Sub

关键调整说明

  • 表头位置:若你的行/列表头不在第1行/第1列,修改ws.Rows(1)和ws.Columns(1)为实际表头所在的行号/列号。
  • 颜色配置:RGB值可自行替换为需要的颜色,也可使用vbGreen这类内置颜色常量。

内容的提问来源于stack exchange,提问作者VBA-inspired

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:37:11