我有一个简单的问题。我下面有以下代码。此代码复制L列并将其以值格式粘贴回L列。这样,我可以摆脱公式。我的Countif代码需要它来计算L列中的月份数(一月,二月,三月等)。当我从宏屏幕运行此代码时,效果很好。当我通过按钮运行它时,粘贴的值仅填充第一行和第二行,而将L列中的其余行保留为空白(有600多个行)。关于为什么我的代码在宏屏幕上有效但在使用按钮时无效的任何想法?我想使它对我的同事们来说是用户友好的。谢谢你,马特
LastRow = Sheets("HR Data Detail").Range("A1048576").End(xlUp).Row
Worksheets("HR Data Detail").Range("L2:L" & LastRow).Copy
Worksheets("HR Data Detail").Range("L2").PasteSpecial Paste:=xlPasteValue
Application.CutCopyMode = False
答案 0 :(得分:1)
代码包括一个更标准的最后一行指示符,并且可以简单地将列设置为其自己的值(更快的方法)。如果需要,您也可以在With
块内进行一些格式化
Sub RemoveFormula()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("HR Data Detail")
Dim LRow As Long
LRow = ws.Range("L" & ws.Rows.Count).End(xlUp).Row
With ws.Range("L2:L" & LRow)
.Value = .Value
End With
End Sub
答案 1 :(得分:1)
Sub RemoveFormula()
With ThisWorkbook.Sheets("HR Data Detail") 'reference wanted sheet
With .Range("L2", .Cells(.Rows.Count, "L").End(xlUp)) ' reference referenced sheet column L range from row 2 down to its last not empty value
.Value = .Value ' remove formulas and leave values
End With
End With
End Sub