当前位置: 首页 > 知识库问答 >
问题:

按名称VBA选择工作表时出现运行时错误1004

楚泳
2023-03-14

我一直在为我的公司开发一个Excel宏,该宏打开几个工作簿,分析它们的特定信息行,存储该行,然后在完成每个工作簿后,在两个页面中的一个页面上设置单个工作簿中单元格的水平选择值。我遇到的问题是,在尝试选择第二个页面时,我需要将数据放在上面,我得到一个运行时错误1004。

Sub sortandinsert(listie As Variant)
'Takes in the data array and sorts it as it inserts it into the spreadsheet.
'Expects a 2 dimensional array.
Dim serialarray() As Variant
Dim listlen1 As Integer
Dim listlen2 As Integer
Dim listlen3 As Integer
Dim count1 As Integer
Dim count2 As Integer
Dim SSCcurrentrow As Integer
Dim DSCcurrentrow As Integer
Dim Colstart As Integer
Dim SSCcounter As Integer
Dim DSCcounter As Integer
Dim actbook As Workbook
Dim selectrange As range
Set actbook = ActiveWorkbook
SSCcounter = 0
DSCcounter = 0
Colstart = 1
SSCcurrentrow = 10
DSCcurrentrow = 10
serialarray = FindSerial(listie, serialarray)
listlen1 = findlength(serialarray)
For count = 0 To listlen1 - 1
    MsgBox serialarray(count)
Next
With actbook
    listlen2 = findlength(listie)
    For count1 = 0 To listlen1 - 1
    MsgBox "Current Serial is" & " " & serialarray(count1)
        For count2 = 0 To listlen2 - 1
            If contains(listie(count2), CStr(serialarray(count1))) Then
            listlen3 = findlength(listie(count2))
                If listie(count2)(0) = "SSC" Then
                    Set selectrange = Sheets("SSC").range(Cells(SSCcurrentrow + SSCcounter, Colstart), Cells(SSCcurrentrow + SSCcounter, Colstart + listlen3 - 1))
                    With selectrange
                        .Value = listie(count2)
                    End With
                    SSCcounter = SSCcounter + 1
                ElseIf listie(count2)(0) = "DSC" Then
                    Set selectrange = Sheets("DSC").range(Cells(DSCcurrentrow + DSCcounter, Colstart), Cells(DSCcurrentrow + DSCcounter, Colstart + listlen3 - 1))
                    With selectrange
                        .Value = listie(count2)
                    End With
                    DSCcounter = DSCcounter + 1
                End If
            End If
        Next
        SSCcurrentrow = SSCcurrentrow + SSCcounter + 6
        DSCcurrentrow = DSCcurrentrow + DSCcounter + 6
        'SSCcounter = 0
        'DSCcounter = 0
    Next
End With
End Sub
Set selectrange = Sheets("DSC").range(Cells(DSCcurrentrow + DSCcounter, Colstart), Cells(DSCcurrentrow + DSCcounter, Colstart + listlen3 - 1))
With selectrange
    .Value = listie(count2)
End With     

我可以做什么来修复这个错误?

共有1个答案

越涛
2023-03-14

单元格将引用ActiveWorkbook中的ActiveSheet。这些对象可能没有设置,也可能不在DSC表中。请尝试以下操作:

With actbook.Sheets("DSC")
    Set selectrange = range(.Cells(DSCcurrentrow + DSCcounter, Colstart), .Cells(DSCcurrentrow + DSCcounter, Colstart + listlen3 - 1))
End With

或者,更易读的版本可能是

Set selectrange = actbook.Sheets("DSC").Cells(DSCcurrentrow + DSCcounter, Colstart)
Set selectrange = selectrange.resize(1, listlen)
 类似资料:
  • 我在上面有一个问题:我使用了提供的答案,但仍然击中了一个对象错误。你能看到我错过了什么吗?我在“cash_sheet.range(”C8“).pastespecial xlpastevalues”处找到了错误

  • 我试图实现一个简单的Excel-VBA宏,让用户在文件资源管理器中浏览另一个工作簿,然后将该工作簿中的某些单元格复制到我的活动工作簿中。下面是我的简短代码: 该宏用于从所选工作簿(B2:C43)复制单元格,并将其复制到当前工作簿“配置”表上的单元格(A6:B47)中。当我运行宏时,我得到“运行时错误'1004':Range类的PasteSpecial方法失败”。调试器突出显示行:

  • 我一直在网上搜索,似乎找不到我的问题的答案! 我在Excel2010中创建了一个使用ActiveX控件(特别是文本框和组合框)的电子表格。 我遇到过这样的问题:当我保存电子表格、关闭Excel并重新打开文件时,所有的ActiveX控件都不想合作。我一直收到运行时错误“438”无法获取OLEObject类的Object属性。我尝试通过多种方式访问OLEObject:(参见下面) 两行都会抛出上面的运

  • 我似乎有一个错误,我正在努力找出原因。我已经尝试了帮助部分,也尝试在线研究它,但没有得出任何结果。我希望有人能够帮助我解决这个问题。 问题 我在电子表格上为不同的工作表创建了多个表单。我做了表格,可以用来隐藏/显示用户的判断选择列。我有两种形式可以很好的工作,但是第三种。 我得到 运行时错误438“对象不支持此属性或方法” 这是什么意思?代码与其他表单完全相同。它们之间唯一的区别是床单的名称不同。

  • 在我的环境中设置了JAVA_HOME之后,我在运行pig时得到了以下结果: 当我这么做的时候: 但是在我的环境中,JAVA_HOME是这样设置的: 运行于:Ubuntu 10.04.4 LTS java:java版本“1.6.0_21”Hadoop版本:Hadoop-0.20.203 PIG版本:PIG-0.11.1 env:term=Xterm shell=/bin/bash xdg_sessi