我的工作簿很大,正在尝试提高性能。
是否可以/可以将公式存储在代码中包含的某种列表中,而不是电子表格中的单元格中?
Variable SelectedRow = the currently selected row
例如:
ColumnBFormula = A(SelectedRow) + 1
ColumnCFormula = A(SelectedRow) + 2
如果用户在单元格A3中输入4,则该宏仅在空单元格B3和C3中写上述公式,然后转换为值。电子表格的其余部分保持不变(应该到处都只有值)。
然后,用户在A4单元格中输入6,然后电子表格将公式写入空白单元格B4和C4,然后进行计算并转换为值。
谢谢
答案 0 :(得分:0)
鉴于您知道代码要执行的操作,则无需输入公式即可执行操作。
在VBA编辑器中,将此代码添加到“ ThisWorkbook”对象中...
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim objCell As Range
Application.EnableEvents = False
For Each objCell In Target.Cells
If objCell.Column = 1 Then
If objCell.Value = "" Then
objCell.Offset(0, 1) = ""
objCell.Offset(0, 2) = ""
Else
objCell.Offset(0, 1) = objCell.Value + 1
objCell.Offset(0, 2) = objCell.Value + 2
End If
End If
Next
Application.EnableEvents = True
End Sub
希望对您有用。
仅供参考-您需要为值添加相关的错误检查(如果不是数字等),则需要对其进行改进。
答案 1 :(得分:0)
尝试:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lastrow As Long
'Refer to Sheet1
With ThisWorkbook.Worksheets("Sheet1")
'Check if Column A affected
If Not Intersect(Target, Range("A:A")) Is Nothing And IsNumeric(Target) Then
'Disable event to avoid event trigger
Application.EnableEvents = False
Target.Offset(0, 1).Value = Target + 1
Target.Offset(0, 2).Value = Target + 2
'Enable event
Application.EnableEvents = True
End If
End With
结束子 说明:
启用事件: