vba代码怎么编写

2024-11-24 04:03:47
推荐回答(2个)
回答1:

在工作表事件(比如在sheet1)中添加以下代码:

 Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 7 Then

        Cells(Target.Row, Target.Column + 2).Select

    ElseIf Target.Column = 9 Then

        Cells(Target.Row, Target.Column + 2).Select

    ElseIf Target.Column = 11 Then

        Cells(Target.Row + 1, 7).Select

    End If

 End Sub

回答2:

尽量使用VBA原有的属性、方法和Worksheet函数
由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。例如用Range的属性
CurrentRegion来返回 Range 对象,该对象代表当前区。(当前区指以任意空白行及空白列的组合为边界的区域)。同样功能的VBA代码需数十行。因此编程前应尽可能多地了解Excel对象的属性、方法。
充分利用Worksheet函数是提高程序运行速度的极度有效的方法。如求平均工资的例子:
For Each c In Worksheet(1).Range(″A1:A1000″)
Totalvalue = Totalvalue + c.value
Next
Averagevalue = Totalvalue / Worksheet(1).Range(″A1:A1000″).Rows.Count
而下面代码程序比上面例子快得多:
Averagevalue=Application.WorksheetFunction.Average(Worksheets(1).Range(″A1:A1000″))
其它函数如Count,Counta,Countif,Match,Lookup等等,都能代替相同功能的VBA程序代码,提高程序的运行速度。