' Remove thousand separator from all numeric cells
For each cel in Selection
if "#,##0" = cel.NumberFormat then _
cel.NumberFormat = "0"
Next cel
它每秒更新400个单元格,而它确实如此,Excel没有响应。我怀疑撤消历史。有没有办法在某种撤消事务中执行此操作?
答案 0 :(得分:2)
根据我的经验,自动重新计算细胞是几乎所有严重的excel vba性能问题背后的罪魁祸首。要测试是否成立,请执行以下操作:
Application.Calculation = xlCalculationManual
' put your problematic code here
Application.Calculation = xlCalculationAutomatic
如果这没有帮助,另一个可能的罪魁祸首就是屏幕更新(尽管从中获得的表现要严重得多)。尝试:
Application.ScreenUpdating = False
' put your problematic code here
Application.ScreenUpdating = True
希望这对你的情况也有帮助。
答案 1 :(得分:1)
您可以在Excel中查找和替换格式。以下是Excel 2010帮助(搜索ReplaceFormat
)中的示例:
以下示例设置搜索条件以查找包含Arial,Regular,Size 10字体的单元格,使用Arial,Bold,Size 8字体替换其格式,然后使用SearchFormat和ReplaceFormat集的可选参数调用Replace方法to True实际进行更改。
Sub MakeBold()
' Establish search criteria.
With Application.FindFormat.Font
.Name = "Arial"
.FontStyle = "Regular"
.Size = 10
End With
' Establish replacement criteria.
With Application.ReplaceFormat.Font
.Name = "Arial"
.FontStyle = "Bold"
.Size = 8
End With
' Notify user.
With Application.ReplaceFormat.Font
MsgBox .Name & "-" & .FontStyle & "-" & .Size & _
" font is what the search criteria will replace cell formats with."
End With
' Make the replacements in the worksheet.
Cells.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True
End Sub
您应该能够修改示例以进行所需的格式更改。