VBA-有人能解释我为什么在Cells()中出现对象错误吗?
总之,我很难理解为什么会出现对象错误。每次我读到一些东西时,我想我已经把它弄明白了,当我试图实现时,我会得到一个错误。我目前正在使用的特定代码是:VBA-有人能解释我为什么在Cells()中出现对象错误吗?,vba,excel,excel-2013,Vba,Excel,Excel 2013,总之,我很难理解为什么会出现对象错误。每次我读到一些东西时,我想我已经把它弄明白了,当我试图实现时,我会得到一个错误。我目前正在使用的特定代码是: 'Set station cell value iRow = rEmptyStation.Row iColumn = rEmptyStation.Column Cells(iRow - 1, iColumn).Copy Range(Cells(iRow, iColumn), Cells(iRow, iColumn)).Select Selection
'Set station cell value
iRow = rEmptyStation.Row
iColumn = rEmptyStation.Column
Cells(iRow - 1, iColumn).Copy
Range(Cells(iRow, iColumn), Cells(iRow, iColumn)).Select
Selection.Paste
rEmptyStation.Value = sStation
iRow
和iColumn
是long类型,rEmptyStation
是一个范围,sStation
是一个字符串。我所要做的就是复制相关单元格上方的单元格,将其粘贴到相关单元格(因为它的格式),然后将相关单元格设置为字符串
它在我有[垃圾]的行上给我一个对象错误。选择。代替[垃圾]
,我尝试了将单元格(iRow,iColumn)
,我尝试了将与工作表(1)
和一起使用。单元格(iRow,iColumn)
语句,我还尝试了在与语句一起使用.Cells()
和.Range()
有人能给我解释一下如何让它工作,以及如何在各种情况下选择正确的代码吗???以下代码适合我:
Sub Test()
Dim sStation As String
Dim rEmptyStation As Range
Dim selectedCell As Range
Dim iRow As Integer
Dim iColumn As Integer
sStation = "Test"
Set rEmptyStation = Range("A2")
'Set station cell value
iRow = rEmptyStation.Row
iColumn = rEmptyStation.Column
Cells(iRow - 1, iColumn).Copy
Set selectedCell = Range(Cells(iRow, iColumn), Cells(iRow, iColumn))
selectedCell.PasteSpecial
rEmptyStation.Value = sStation
End Sub
如果将字符串“Original”放在A1中,它将被复制到单元格A2中,然后A2中的文本将替换为“Test”。我真的不知道为什么它不起作用,因为我看不到您的数据
可能的原因是iRow
的值为1。
Excel无法计算单元格(0,iColumn)
您可以尝试以下方法:
If iRow <> 1 Then: _
Cells(iRow - 1, iColumn).Copy Cells(iRow, iColumn) '~~> Direct copy
rEmptyStation.Value = sStation
希望这能有所帮助。最终对我有用的是将我的代码切换到以下代码:
'Set station cell value
iRow = rEmptyStation.Row
iColumn = rEmptyStation.Column
Cells(iRow - 1, iColumn).Copy
Cells(iRow, iColumn).Select
Selection.PasteSpecial xlPasteFormats
rEmptyStation.Value = sStation
现在,我不知道为什么,但是当我有如下代码时,我得到了对象错误(在选择.Paste
行):
以下是我的整个项目。如果有人能弄明白这一点,那就太好了(这段代码后面的代码没有经过测试!)如果没有设置,可以为rEmptyStation is Nothing
添加一个测试。这很可能是答案,可惜OP没有提供反馈。当我的代码运行时,iRow和iColumn不是1或0。此外,在上面的代码中,我有如果rEmptyStation不算什么,那么,所以也不是这样。到目前为止,我的代码分别将iRow和iColumn生成为6和13。我现在要录制一个宏,看看它是否给了我一些东西,但由于我指的是从某个范围中找到的行和列,我不知道它是否有用。@chrisneilsen还有,我在家里的业余时间正在做这件事,所以我不会特别专注于它。
'Set station cell value
iRow = rEmptyStation.Row
iColumn = rEmptyStation.Column
Cells(iRow - 1, iColumn).Copy
Cells(iRow, iColumn).Select
Selection.PasteSpecial xlPasteFormats
rEmptyStation.Value = sStation
'Set station cell value
iRow = rEmptyStation.Row
iColumn = rEmptyStation.Column
Cells(iRow - 1, iColumn).Copy
Cells(iRow, iColumn).Select
Selection.Paste
rEmptyStation.Value = sStation