如何根据我是否选择了 Row3 中的单元格来跳过某些代码行?
How do I skip some lines of code based on whether I have selected a cell in Row3 or not?
我正在尝试创建一个电子表格,其中用户 select 任何单元格然后 运行 这个宏。如果该单元格不在第 3 行中,则 select 该单元格所在的整行,将该行剪切并插入第 3 行中。(这部分工作正常)如果 selected 单元格在行中3 然后我想跳过剪切和插入部分代码。这看起来应该很简单,但我收到错误:End if without block if, when I 运行 this macro。任何帮助将不胜感激。谢谢。
Dim Row As String
ActiveCell.EntireRow.Select
strRow = Selection
If Selection = Rows("3:3") Then GoTo SkipToHere
End If
Selection.Cut
ActiveWindow.SmallScroll Down:=-84
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Range("A3").Select
SkipToHere:
Dim Row As String
If Activecell.Row = 3 Then GoTo SkipToHere
End If
ActiveCell.EntireRow.Select
Selection.Cut
ActiveWindow.SmallScroll Down:=-84
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Range("A3").Select
SkipToHere:
在 VBA 中,您可以用多种方式编写 IF
语句:1. 全部在一行中,或 2. 使用 Else
组件,或 3. 使用 ElseIf
...等等
当您编写如下 IF
语句时:
If A=True Then B
没有 Else
组件,则 VBA 不需要 End IF
语句。当你像这样使用 IF
时需要它:
IF A=True Then
Do this
Else
Do Something else
End If
在此上下文中使用 GoTo 可能不是解决此问题的最佳方法。相反,我只是将您的第一部分包含在 If:
中
Dim strRow As String
ActiveCell.EntireRow.Select
strRow = Selection
If Selection.Row <> 3 Then
Selection.Cut
Rows("3:3").Insert Shift:=xlDown
Range("A3").Select
End If
原则上,您也应该避免在不需要的地方使用 .Select。
Sub Horsten()
'选区和第三行没有共同点吗?
If Intersect(Selection, Rows(3)) Is Nothing Then
' 然后剪切和粘贴(但不改变选择)
Selection.EntireRow.Cut
Rows(3).Insert Shift:=xlDown
' 然后根据需要调整位置
ActiveWindow.SmallScroll Up:=84
Cells(3, 1).Select
End If
End Sub
我正在尝试创建一个电子表格,其中用户 select 任何单元格然后 运行 这个宏。如果该单元格不在第 3 行中,则 select 该单元格所在的整行,将该行剪切并插入第 3 行中。(这部分工作正常)如果 selected 单元格在行中3 然后我想跳过剪切和插入部分代码。这看起来应该很简单,但我收到错误:End if without block if, when I 运行 this macro。任何帮助将不胜感激。谢谢。
Dim Row As String
ActiveCell.EntireRow.Select
strRow = Selection
If Selection = Rows("3:3") Then GoTo SkipToHere
End If
Selection.Cut
ActiveWindow.SmallScroll Down:=-84
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Range("A3").Select
SkipToHere:
Dim Row As String
If Activecell.Row = 3 Then GoTo SkipToHere
End If
ActiveCell.EntireRow.Select
Selection.Cut
ActiveWindow.SmallScroll Down:=-84
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Range("A3").Select
SkipToHere:
在 VBA 中,您可以用多种方式编写 IF
语句:1. 全部在一行中,或 2. 使用 Else
组件,或 3. 使用 ElseIf
...等等
当您编写如下 IF
语句时:
If A=True Then B
没有 Else
组件,则 VBA 不需要 End IF
语句。当你像这样使用 IF
时需要它:
IF A=True Then
Do this
Else
Do Something else
End If
在此上下文中使用 GoTo 可能不是解决此问题的最佳方法。相反,我只是将您的第一部分包含在 If:
中Dim strRow As String
ActiveCell.EntireRow.Select
strRow = Selection
If Selection.Row <> 3 Then
Selection.Cut
Rows("3:3").Insert Shift:=xlDown
Range("A3").Select
End If
原则上,您也应该避免在不需要的地方使用 .Select。
Sub Horsten()
'选区和第三行没有共同点吗?
If Intersect(Selection, Rows(3)) Is Nothing Then
' 然后剪切和粘贴(但不改变选择)
Selection.EntireRow.Cut
Rows(3).Insert Shift:=xlDown
' 然后根据需要调整位置
ActiveWindow.SmallScroll Up:=84
Cells(3, 1).Select
End If
End Sub