【发布时间】:2016-06-07 16:16:53
【问题描述】:
这是我的代码的一部分。最后,我想遍历单元格,找到两个短语之间的文本,将其连接起来,然后将其粘贴到确定的列中。一旦代码找到“ID”,它将在粘贴范围中添加一行,然后重新开始。 (这在底部附近)。
我不能做的是让每个部分的范围进行合作。当我使用 'wksSource.Range(Cells(R, 2)).Value = stringValues' 时,它会引发错误:1004,对象工作表的方法范围失败。但如果我使用 'wksSource.Range("B15").Value = stringValues' 就完全没问题了。问题是,这不是动态的。每次找到短语“ID”时,我都需要增加“R”。每个部分的列都是不变的。 (R,2) (R,3) 等
我已经做了很多谷歌搜索,我明白为什么会抛出这个错误;我只是无法弄清楚为什么会在这种情况下发生。工作表已定义......它适用于“B15”,所以我认为错误在“R”中,但我被卡住了。
请帮忙! (我意识到这可能一直是一个循环,如果你愿意,我很想听听这方面的建议,但现在,我正在努力学习,这似乎是我做到这一点的最佳方式一次。今天用小循环增加行,明天解决大循环。:))
Dim rng As Range, AllPos As Range, rngEnd As Range, rngStart As Range
Dim DeptRng As Variant, stringValues As String, cell As Range, NextRow As Variant
Dim R As Integer, lastRowCon As Integer, wksSource As Worksheet, paste As Range
Set AllPos = Range("A2:A53")
R = 2
Set wksSource = ActiveWorkbook.Sheets("Sheet1")
Set rngStart = AllPos.Find("Department Description:").Cells
If Not rngStart Is Nothing Then
Set rngEnd = AllPos.Find("Position Duties :").Cells
Set DeptRng = Range(rngStart, rngEnd.Offset(1))
For Each C In DeptRng
stringValues = stringValues & C
Next C
wksSource.Range(Cells(R, 2)).Value = stringValues
stringValues = ""
End If
.....上面这里的几次迭代.....
Set rngStart = AllPos.Find("ID:").Cells
If Not rngStart Is Nothing Then
'Finds last row of content
lastRowCon = wksSource.Range("A1").End(xlDown).Row
'Finds first row without content
R = lastRowCon + 1
'select next empty row, Column B
End If
【问题讨论】:
标签: vba loops range runtime-error