我有一些需要帮助的问题。
在用户使用数据验证下拉菜单选择了有效月份(第3行)的情况下,我希望允许用户按下按钮 1)在确定“有效月份”的两行位置添加一个公式 2)将其复制到工作簿的最后一行 3)选择该行以删除公式,并仅替换为值。
我收到的第一个问题是1004消息。如果我输入基本公式,则该代码有效= 5 + 10,但不是这个
第二个问题。我在哪里有Range(“ Z5:Z”和Lastrow),我不明白如何根据用户选择“有效月份”的列值(例如AA,AB,AC等)进行选择。 >
代码在下面出现1004错误的位置。
Dim Lastrow As Long
Lastrow = Range("D" & Rows.Count).End(xlUp).Row
Cells.Find(What:="Active Month", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(2).Select
Range("Z5:Z" & Lastrow).Formula = "=IF(ISNUMBER(VLOOKUP(F5,Dormant!A:A,1,0)),Z4,"")"
答案 0 :(得分:1)
1)将公式添加到标识“有效月份”的两行位置
2)将其复制到工作簿的最后一行
3)选择该行以删除公式,并仅替换为值。
您得到Application Defined Error
的原因是您没有在公式中加上双引号。在该公式中将""
替换为""""
,使其变为"=IF(ISNUMBER(VLOOKUP(F5,Dormant!A:A,1,0)),Z4,"""")"
这是您要尝试的吗? (未测试)。我已经注释了代码。如果您仍然有任何疑问,请问:)
Sub Sample()
Dim ws As Worksheet
Dim Lastrow As Long, StartRow As Long
Dim aCell As Range
Dim ColName As String, myformula As String
'~~> Change formula here
myformula = "=IF(ISNUMBER(VLOOKUP(F5,Dormant!A:A,1,0)),Z4,"""")"
'~~> Set this to the relevant worksheet
Set ws = Sheet1
With ws
'~~> Find the "Active Month"
Set aCell = .Cells.Find(What:="Active Month", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'~~> If Found
If Not aCell Is Nothing Then
'~~> Get offset to where it was found
StartRow = aCell.Row + 2
'~~> Get the column name where it is found
ColName = Split(.Cells(, aCell.Column).Address, "$")(1)
'~~> Find last row in that column
Lastrow = .Range(ColName & .Rows.Count).End(xlUp).Row
'~~> Identify the range and insert formula and convert it to values
With .Range(ColName & StartRow & ":" & ColName & Lastrow)
.Formula = myformula
.Value = .Value
End With
End If
End With
End Sub