Excel VBA为指定单元格指定数字,避免选择
我在Excel中有以下VBA代码。它是非常长的VBA的一部分,负责许多过程。如何摆脱Select命令?我尝试过几件事,但都没有成功Excel VBA为指定单元格指定数字,避免选择,excel,vba,optimization,Excel,Vba,Optimization,我在Excel中有以下VBA代码。它是非常长的VBA的一部分,负责许多过程。如何摆脱Select命令?我尝试过几件事,但都没有成功 ActiveWorkbook.Sheets("Installation").Select For Each Cl14 In ThisWorkbook.Sheets("Installation").Range("G2", Range("G" & Rows.Count).End(xlUp)) Select Case LCase(Cl14.Va
ActiveWorkbook.Sheets("Installation").Select
For Each Cl14 In ThisWorkbook.Sheets("Installation").Range("G2", Range("G" & Rows.Count).End(xlUp))
Select Case LCase(Cl14.Value)
Case "main"
m14 = m14 + 1: s14 = 0: ss14 = 0
Cl14.Offset(, -6).Value = m14
Case "sub"
s14 = s14 + 1: ss14 = 0
Cl14.Offset(, -6) = m14 & "." & s14
Case "sub-sub"
ss14 = ss14 + 1
Cl14.Offset(, -6) = m14 & "." & s14 & "." & ss14
End Select
Next Cl14
使用
With
语句包装范围对象。考虑用一些更有意义的东西来替换变量名。我只换了一个。另外,在代码顶部使用Option Explici
t,并用type声明所有变量
Option Explicit
Public Sub test()
Dim ws As Worksheet, iCell As Range, m14 As Long, s14 As Long, ss14 As Long
Set ws = ThisWorkbook.Worksheets("Installation")
With ws
For Each iCell In .Range("G2", .Range("G" & .Rows.Count).End(xlUp))
Select Case LCase(iCell.Value)
Case "main"
m14 = m14 + 1: s14 = 0: ss14 = 0
iCell.Offset(, -6).Value = m14
Case "sub"
s14 = s14 + 1: ss14 = 0
iCell.Offset(, -6) = m14 & "." & s14
Case "sub-sub"
ss14 = ss14 + 1
iCell.Offset(, -6) = m14 & "." & s14 & "." & ss14
End Select
Next iCell
End With
End Sub
可以执行强制循环以防止选择案例。但就个人而言,我更喜欢使用selectcase
For i = 2 To .Range("G" & .Rows.Count).End(xlUp).Row
If .Range("G" & i).Value = "main" Then
'code here
ElseIf .Range("G" & i).Value = "sub" Then
'code here
ElseIf .Range("G" & i).Value = "sub-sub" Then
'code here
End If
Next i
你的意思是,如果你用
ActiveWorkbook
替换thiswoolk
,然后用Select
删除行,那就行不通了?哦,我只看到一行。在中为每个循环计数。这行
指的是什么?