我正在尝试使用电子表格,用户选择任何单元格,然后运行此宏。如果单元格不在第3行中,则选择该单元所在的整行,剪切并在第3行中插入该行。(此部分工作正常)如果所选单元格在第3行中,那么我想跳过剪切插入部分代码。这似乎应该很简单,但我得到错误:如果没有阻止,如果,当我运行此宏时结束。任何帮助将不胜感激。谢谢。
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:
答案 0 :(得分:2)
在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
答案 1 :(得分:1)
在这种情况下使用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
你也应该原则上避免。选择你不需要的地方。
答案 2 :(得分:0)
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:
答案 3 :(得分:0)
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