Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-有人能解释我为什么在Cells()中出现对象错误吗?_Vba_Excel_Excel 2013 - Fatal编程技术网

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