gpt4 book ai didi

vba - 当我使用 Range.Cells() 引用单个单元格时出现错误 1004

转载 作者:行者123 更新时间:2023-12-04 20:37:44 25 4
gpt4 key购买 nike

我正在尝试创建一个小宏,只要用户修改一行,它就会在特定列中插入时间戳。首先,我创建了一个函数,它返回应插入时间戳的列的索引。作为第二步,我创建了一个子程序来监控更改。作为后者的一部分,我通过使用行索引和列索引来设置时间戳的目标范围。

This is what my data looks like

enter image description here

Dim Timestamp As Date
Dim TimestampCell As Range
Dim TimestampColumn As String
Dim TimestampRow As String
Dim Column As Integer

Function getTimestampColumn() As Integer
For Column = 1 To 5
If Cells(1, Column).value = "Last updated on" Then
getTimestampColumn = Column
End If
Next Column
End Function

Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 Then
TimestampColumn = getTimestampColumn()
TimestampRow = Target.Row
Timestamp = Now
Set TimestampCell = Range(Cells(TimestampRow, TimestampColumn))
TimestampCell = Timestamp
End If
End Sub

我的问题:宏引发运行时错误 (1004)。当我将范围硬编码到特定单元格时,它工作正常。因此,似乎我以错误的方式使用 Range(Cells()) 。我已经阅读了 Cells 属性的帮助条目和几个解释如何使用它的站点,但我无法弄清楚我做错了什么。

我知道有很多关于如何使用 Range(Cells()) 和 Error 1004 的问题,但我没有找到任何解决方案的线索(如果我没有正确搜索,请告诉我)。

This is what the Debugger says

enter image description here

最佳答案

由于某种原因,您的行和列变量是字符串。他们应该是整数类型。

Option Explicit

Dim Timestamp As Date
Dim TimestampCell As Range
Dim TimestampColumn As Long '<~~ Long integer
Dim TimestampRow As Long '<~~ Long integer
Dim Column As Integer

Function getTimestampColumn() As Integer
Dim col As Long
For col = 1 To 5
If Cells(1, col).Value = "Last updated on" Then
getTimestampColumn = col
Exit For
End If
Next col
If col > 5 Then MsgBox "'Last updated on' not found"
End Function

Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 Then
TimestampColumn = getTimestampColumn()
TimestampRow = Target.Row
Timestamp = Now
Set TimestampCell = Cells(TimestampRow, TimestampColumn)
TimestampCell = Timestamp
End If
End Sub

关于vba - 当我使用 Range.Cells() 引用单个单元格时出现错误 1004,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com