我写了一段代码,用一个公式填充一个单元格区域,该公式应该在特定的月份列停止。宏将自动找到与当前月份对应的列,并在该列停止填充公式。
目前,我使用它搜索第4行,这是我的日期行。但是,我希望它更动态一点,并在该行的开头查找字母"D",以表示它是日期行。
你知道我做错了什么吗?
谢谢!
下面是原始代码:
Sub DragFormulaToMonth()
Dim mdate As Date
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "m" Or Cells(i, 1) = "M" Then
mdate = Worksheets("Input").Range("B2").Value
mcol = Application.WorksheetFunction.Match(CDbl(mdate), Range("4:4"), 0)
Range(Cells(i, "AQ"), Cells(i, mcol)).FillRight
End If
Next i
End Sub
下面是我为使日期行规范更具动态性所做的尝试:
以下是我试图让它更有活力的方法:
Sub DragFormulaToMonth()
Dim mdate As Date
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "m" Or Cells(i, 1) = "M" Then
mdate = Worksheets("Input").Range("B2").Value
If Cells(i, 1) = "D" Then
mcol = Application.Match(mdate, Range(Cells(i, 5), Cells(i, Columns.Count)), 0)
If Not IsError(mcol) Then
Range(Cells(i, "AQ"), Cells(i, mcol)).FillRight
End If
End If
Range(Cells(i, "AQ"), Cells(i, mcol)).FillRight
End If
Next i
End Sub
3条答案
按热度按时间yjghlzjz1#
如果您在
immediate window
中执行Debug.print Cells(i, 1)
或print Cells(i, 1)
,您会注意到结果为空实际上,您需要的是
Cells(i, 1).Value
返回实际的单元格内容,因此需要将If
语句修改为Cells(i, 1).Value
此外,您可以使用
If UCase(Cells(i, 1).Value) = "M" Then
,而不是使用两个单独的If
语句来表示“M”和“miszxjhcz2#
代码首先检查是否为
Cells(i, 1) = "m" Or Cells(i, 1) = "M"
,如果是,则查看If Cells(i, 1) = "D" Then
。显然,如果Cells(i,1)
是M
,则它不可能是D
也许这能满足你的愿望
pqwbnv8z3#
感谢您的反馈意见。我能够使用您的建议来解决我的问题。以下是最后的代码,为我工作:
末端子组件