如何根据我是否在Row3中选择了一个单元格来跳过一些代码行?

时间:2015-01-09 20:09:34

标签: excel vba excel-vba

我正在尝试使用电子表格,用户选择任何单元格,然后运行此宏。如果单元格不在第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:

4 个答案:

答案 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