tho*_*mas 23 excel vba excel-vba
选择范围时,我遇到错误1004"应用程序定义或对象定义错误"的问题.
我仍然可以选择行(即Rows("21:21").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
Run Code Online (Sandbox Code Playgroud)
我需要在我的复制中充满乐趣,因为行数会经常变化.同样,下面的代码之前已经使用过,没有错误......但在这个例子中没有.
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
Run Code Online (Sandbox Code Playgroud)
小智 24
也许您的代码在Sheet1后面,所以当您将焦点更改为Sheet2时,无法找到对象?如果是这种情况,只需指定目标工作表可能会有所帮助:
Sheets("Sheet1").Range("C21").Select
Run Code Online (Sandbox Code Playgroud)
我不太熟悉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
Run Code Online (Sandbox Code Playgroud)
小智 12
这有点晚,但可能有助于将来参考.我刚刚遇到了同样的问题,我认为这是因为宏是在工作表级别记录的.右键单击VBA项目窗口上的模块节点,单击插入模块,然后将宏粘贴到新模块中(确保删除工作表级别记录的宏).
希望这有帮助.
我也有同样的问题,差点发疯。解决方案出乎意料。
我的 Excel 默认发货,我在 Excel 单元格中输入公式,如下所示:
=COUNTIF(Range; Searchvalue)
=COUNTIF(A1:A10; 7) 'Example
Run Code Online (Sandbox Code Playgroud)
请注意,参数用分号分隔;
。现在,如果您将该字符串完全粘贴到 VBA 中的公式中,例如:
Range("C7").FormulaArray = "=COUNTIF(A1:A10; 7)" 'this will not work
Run Code Online (Sandbox Code Playgroud)
你会得到这个 1004 错误,完全没有解释。我花了几个小时来调试这个。你所要做的就是用逗号替换所有的分号。
Range("C7").FormulaArray = "=COUNTIF(A1:A10, 7)" 'this works
Run Code Online (Sandbox Code Playgroud)
小智 5
这样的事情我也经历过.在我的情况下,大多数工作表都处于保护模式(尽管与宏相关的单元格已解锁).当我在工作表上禁用保护时,宏工作正常......看起来VBA不喜欢锁定的单元格,即使它们没有被宏使用.
归档时间: |
|
查看次数: |
753172 次 |
最近记录: |