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

需求:为显示邮件按钮添加Excel VBA宏,按日期更新Table工作表

实现「显示邮件」按钮的VBA宏

以下是完善后的VBA代码,已添加日期判断逻辑,满足你要求的填充/更新功能:

Sub SaveValues()
    Dim targetDate As String
    Dim tableWs As Worksheet
    Dim sourceWs As Worksheet
    Dim findRange As Range
    Dim targetCol As Integer
    
    ' 定义工作表对象,简化代码维护
    Set sourceWs = ThisWorkbook.Worksheets("Intradag likviditet")
    Set tableWs = ThisWorkbook.Worksheets("Table")
    
    ' 获取目标日期(L2单元格的文本格式日期)
    targetDate = sourceWs.Range("L2").Value
    If targetDate = "" Then Exit Sub ' 日期为空时直接退出,避免无效操作
    
    ' 在Table表第9行精确查找目标日期
    Set findRange = tableWs.Rows(9).Find(What:=targetDate, LookIn:=xlValues, LookAt:=xlWhole)
    
    If Not findRange Is Nothing Then
        ' 日期已存在,获取对应列号
        targetCol = findRange.Column
    Else
        ' 日期不存在,定位第9行第一个空列
        targetCol = tableWs.Cells(9, tableWs.Columns.Count).End(xlToLeft).Column + 1
        ' 在新列写入目标日期
        tableWs.Cells(9, targetCol).Value = targetDate
    End If
    
    ' 批量填充C11的值到10、11、12行对应列
    sourceWs.Range("C11").Copy
    tableWs.Range(tableWs.Cells(10, targetCol), tableWs.Cells(12, targetCol)).PasteSpecial Paste:=xlPasteValues
    ' 批量填充C23的值到13、14、15行对应列
    sourceWs.Range("C23").Copy
    tableWs.Range(tableWs.Cells(13, targetCol), tableWs.Cells(15, targetCol)).PasteSpecial Paste:=xlPasteValues
    
    ' 取消复制状态,清除剪贴板内容
    Application.CutCopyMode = False
End Sub

关键逻辑说明:

  • 日期查找:使用Rows(9).Find在Table表第9行精确匹配目标日期,返回对应单元格对象
  • 列定位:找到日期则复用现有列;未找到则从第9行最右侧向左定位首个非空列,再+1得到新列位置
  • 值填充:采用PasteSpecial xlPasteValues仅粘贴数值,避免复制原单元格的格式或公式
  • 边界处理:新增日期为空时的退出判断,防止无效写入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:00:47