VBA运行时错误1004“应用程序定义或对象定义的错误”select范围时

select范围时遇到错误1004“应用程序定义或对象定义的错误”的问题。

我仍然可以select行(即Rows("21:21").select ),并在同一工作簿的其他工作表中select范围。 我不相信错误是在代码中。 也许它的一些设置我不知道?

我之前使用过相同的代码,但是由于某种原因,我不能在这个子函数中使用它(我已经评论了错误发生的地方)…

 Sub CopySheet1_to_PasteSheet2() Dim CLastFundRow As Integer Dim CFirstBlankRow As Integer 'Finds last row of content Windows("Excel.xlsm").Activate Sheets("Sheet1").Activate Range("C21").Select '>>>Error 1004 "Application-defined or Object-defined error" Occurs Selection.End(xlDown).Select CLastFundRow = ActiveCell.Row 'Finds first row without content CFirstBlankRow = CLastFundRow + 1 'Copy Data Range("A21:C" & CLastFundRow).Select Selection.Copy 'Paste Data Values Sheets("PalTrakExport PortfolioAIdName").Select Range("A21").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Bring back to top of sheet for consistancy Range("A21").Select Range("A1").Select End Sub 

我需要在复制中使用所有的幻灯片,因为行数会经常变化。 再次,下面的代码已经使用过,没有错误…但在这种情况下没有。

 Dim CLastFundRow As Integer Dim CFirstBlankRow As Integer 'Finds last row of content Windows("Excel.xlsm").Activate Sheets("Sheet1").Activate Range("C21").Select '>>>Error 1004 "Application-defined or Object-defined error" Occurs Selection.End(xlDown).Select CLastFundRow = ActiveCell.Row 'Finds first row without content CFirstBlankRow = CLastFundRow + 1 

也许你的代码是在Sheet1的后面,所以当你将焦点改变到Sheet2时,找不到对象? 如果是这种情况,只需指定您的目标工作表可能会有所帮助:

 Sheets("Sheet1").Range("C21").Select 

我对Select如何工作并不是很熟悉,因为我尽量避免使用它:-)。 您可以定义和操作范围而不必select它们。 明确你所提到的一切也是一个好主意。 这样,如果您从一张纸或一本工作簿转到另一张工作簿,则不会失去跟踪效果。 尝试这个:

 Option Explicit Sub CopySheet1_to_PasteSheet2() Dim CLastFundRow As Integer Dim CFirstBlankRow As Integer Dim wksSource As Worksheet, wksDest As Worksheet Dim rngStart As Range, rngSource As Range, rngDest As Range Set wksSource = ActiveWorkbook.Sheets("Sheet1") Set wksDest = ActiveWorkbook.Sheets("Sheet2") 'Finds last row of content CLastFundRow = wksSource.Range("C21").End(xlDown).Row 'Finds first row without content CFirstBlankRow = CLastFundRow + 1 'Copy Data Set rngSource = wksSource.Range("A2:C" & CLastFundRow) 'Paste Data Values Set rngDest = wksDest.Range("A21") rngSource.Copy rngDest.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'Bring back to top of sheet for consistancy wksDest.Range("A1").Select End Sub 

这有点晚,但可能有助于未来的参考。 我刚刚有同样的问题,我认为这是因为macros被logging在工作表级别。 右键单击VBA项目窗口上的模块节点,单击插入模块,然后将macros粘贴到新模块中(确保删除了在工作表级别logging的macros)。

希望这个帮助。

这样的事情我也经历过。 在我的情况下,大多数工作表处于保护模式(尽pipe与macros相关的单元被解锁)。 当我禁用工作表上的保护,macros工作正常…它似乎VBA不喜欢locking的单元格,即使它们不被macros使用。

Excel中的某些操作受可用内存的限制。 如果你反复重复相同的过程,可能会产生内存溢出,excel将无法重复。 尝试在同一个工作簿中创build多个工作表时,发生了这种情况。

你必须去数据库的工作表来获得第一个空行,你可以这样做:

 Sub DesdeColombia () Dim LastRowFull As Long 'Here we will define the first blank row in the column number 1 of sheet number 1: LastRowFull = Sheet1.Cells(Rows.Count,1).End(xlUp).Offset(1,0).Row 'Now we are gonna introduce some information there, then here we go: Sheet1.Cells(LastRowFull, 1).Value = "We got it" End Sub 

我有一个类似的问题,并修复它应用这些步骤:

  1. 取消保护我想要编辑的工作表
  2. 改变范围内的每个单元格select的范围(分解)

我希望这会帮助别人。

我有一个类似的问题,但事实certificate,我只是参考了一个单元格离开了页面{即单元格(i,1).cut单元格(i-1,2)}

试图在工作簿的每个工作表上循环时,我遇到了类似的问题。 为了解决它,我做了这样的事情

 dim mySheet as sheet for each mysheet in myWorkbook.sheets mySheet.activate activesheet.range("A1").select with Selection 'any wanted operations here end with next 

它工作得很好

我希望你能适应你的情况

当您以编程方式将大型数组string设置为Excel 2003中的一个范围时,您可能会收到“运行时错误1004”错误消息

在Office Excel 2003中,当以编程方式设置包含大string的数组的范围值时,可能会收到类似于以下内容的错误消息:

运行时错误“1004”。 应用程序定义的或操作定义的错误。

如果数组中的一个或多个单元格(单元格区域)包含设置为包含多个911个字符的string,则可能会发生此问题。

要解决此问题,请编辑脚本,以便数组中的单元格不包含保存超过911个字符的string。

例如,下面的示例代码块中的以下代码行定义了一个包含912个字符的string:

 Sub XLTest() Dim aValues(4) aValues(0) = "Test1" aValues(1) = "Test2" aValues(2) = "Test3" MsgBox "First the Good range set." aValues(3) = String(911, 65) Range("A1:D1").Value = aValues MsgBox "Now the bad range set." aValues(3) = String(912, 66) Range("A2:D2").Value = aValues End Sub 

其他版本的Excel或像Calc一样的免费替代品也应该可以工作。

你可以使用下面的代码(例如,你想从表2复制一些单元格到表1)

 Sub Copy Worksheets("Sheet1").Activate Worksheets("Sheet1").Range(Cells(i, 6), Cells(i, FullPathLastColumn)).Copy_ Destination:=Worksheets("Sheet2").Cells(Path2Row, Path2EndColumn + 1) End Sub 

我可以通过将计数器定义为Single来移除错误(运行时错误'1004'。应用程序定义的或操作定义的错误)

我遇到了同样的问题,发现创build工作表的人有几列locking。 我删除了保护和一切按devise工作。