【问题标题】:excel vba run time error 91 object variable not setexcel vba运行时错误91对象变量未设置
【发布时间】:2019-10-10 17:52:51
【问题描述】:

我不知道什么变量还没有设置。

Option Explicit
Option Base 1

Sub ReverseOrder()
    Dim ReverseOrder As Variant
    Dim nEmployee As String
    Dim nEmployees As Integer
    Dim ssn As Variant
    Dim wsData As Range
    Dim i As Integer


    With wsData.Range("A1")
        nEmployees = Range(.Offset(1, 0), .End(xlDown)).Rows.Count
        ReDim Employees(1 To nEmployees)
        ReDim ssn(1 To nEmployees)

        For i = 1 To nEmployees
            Employees(i) = .Offset(i, 0).Value
            ssn(i) = .Offset(i, 0).Value
        Next

        For i = nEmployees To 1 Step -1
            .Offset(nEmployees - i + 1, 3).Value = Employees(i)
            .Offset(nEmployees - i + 1, 4).Value = ssn(i)
        Next i
    End With
End Sub

【问题讨论】:

    标签: arrays vba variables option explicit


    【解决方案1】:

    您将wsData 调暗,但没有将其设置为任何对象(例如Set wsData = Range("A1:A10")

    但我觉得wsData 应该是一个Worksheet 对象

    所以

    Dim wsData As Worksheet
    
    Set wsData = Worksheets("myWorksheetName") ' change "myWorksheetName" to wanted actual sheet name
    

    然后是你的代码

    【讨论】:

      【解决方案2】:

      WsData 范围未设置,因此出现 91 错误。它应该设置为某些东西,例如:

      Set WsData = Worksheets(1).Range("A1")
      

      然后With wsData 就可以了。

      无论如何,考虑到wsData 名称可能是一个工作表,那么这应该没问题:

      Dim wsData As Worksheet
      Set wsData = Worksheets(1)
      
      With wsData.Range("A1")
      

      【讨论】:

      • 我在嘲笑自己将 wsData 调暗为范围。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多