为什么我的VBA代码不能在excel上运行?

时间:2015-03-04 02:43:27

标签: excel vba excel-vba

我最终知道这件事。我很确定我的逻辑是正确的,我已经正确定义了所有内容并遵循语法。此外,这段代码没有出现错误。请看一下,让我知道它为什么不起作用。我刚开始学习这个,我真的在寻求帮助。

Sub AddMN()

'declare the variables

    Dim MNFX As String
    Dim MNDO As String
    Dim FXDO As String
    Dim OPT As String
    Dim i As Integer
    Dim lastEmpty As Integer

    FXDO = Sheet3.Range("F3")
    OPT = Sheet3.Range("H3")


    Sheet6.Activate

    For i = 2 To 1000
        If IsEmpty(Cells(i, 1).Value) Then
            lastEmpty = i
            Exit For
        End If
    Next i

    If FXDO = "FIXED" And OPT = "YES" Then

       Cells(lastEmpty, 1).Select
       Sheet5.Range("MNFX").Copy
       ActiveCell.PasteSpecial xlPasteAll

    ElseIf FXDO = "DRAWOUT" And OPT = "YES" Then

       Cells(lastEmpty, 1).Select
       Sheet5.Range("MNDO").Copy
       ActiveCell.PasteSpecial xlPasteAll

    End If

    With Sheet6.Columns
       .WrapText = False
       .AutoFit
    End With

 End Sub

2 个答案:

答案 0 :(得分:-1)

您使用' IsEmpty'功能错了。

IsEmpty检查Variant类型变量是否已初始化,因此,#Is; IsEmpty'应该是变体。

在您的代码中,“IsEmpty'是(Cells(i,1).Value)。这不是一个变种,因此IsEmpty会返回' FALSE'任何时候。

结果,变量' lastEmpty'是0(初始值)。我猜你的代码就是这个问题。

要解决此问题,请遵循部分代码

For i = 2 To 1000
    If IsEmpty(Cells(i, 1).Value) Then
        lastEmpty = i
        Exit For
    End If
Next i

应更正为

For i = 2 To 1000
    If Cells(i, 1).Value = "" Then
        lastEmpty = i
        Exit For
    End If
Next i

这种修正使你的代码有效,我希望。

答案 1 :(得分:-2)

你把纸张作为Sheet6.blah表示,它应该是Sheets(“Sheet6”)。Blah Blah

我为您的代码做了一些简化,试试这个:

Sub AddMN()

'declare the variables

Dim MNFX As String
Dim MNDO As String
Dim FXDO As String
Dim OPT As String
Dim i As Integer
Dim lastEmpty As Integer

FXDO = Sheets("Sheet3").Range("F3")
OPT = Sheets("Sheet3").Range("H3")
Sheets("Sheet6").Activate
lastEmpty = Range("A" & Rows.Count).End(xlUp).Row + 1
If FXDO = "FIXED" And OPT = "YES" Then
   Sheets("Sheet5").Range("MNFX").Copy
   Cells(lastEmpty, 1).PasteSpecial xlPasteAll
ElseIf FXDO = "DRAWOUT" And OPT = "YES" Then
   Sheets("Sheet5").Range("MNDO").Copy
   Cells(lastEmpty, 1).PasteSpecial xlPasteAll
End If

With Sheets("Sheet6").Columns
   .WrapText = False
   .AutoFit
End With

End Sub