【问题标题】:Compile Error: Object Required VBA编译错误:需要对象 VBA
【发布时间】:2012-07-06 13:29:19
【问题描述】:

我是 VBA 新手。我正在尝试编写一个脚本来清理实验中的一些数据。我不断收到“需要对象”的错误消息,它突出显示 pold。有谁知道为什么?

至于脚本,我正在尝试查看一列参与者编号并绘制出每个参与者所处的范围。每个参与者大约有 30 行,我想将其定义为数组中的值。

Sub Cleanthismofoup() 
Dim pranges(1 To 50) As Long 
Dim pbegin As Range
Dim pend As Range
Dim pold As Integer
Dim pnew As Integer
Dim pcell As Range
Dim pcounter As Long
Dim i As Long

Set pcell = Range("A1:A1")
Set pbegin = Range("A2:A2")
Set pold = Range("B2:B2").Value
pcounter = 0

'for every item, store value in pnew
' move down one line. Check pnew = pold
' if it is, do again. else create new range

For i = 1 To rngl
pcell = pcell.Offset(-1, 0)
pnew = pcell.Cells.Value
If pnnew <> pold Then pcell = pend
If pcell = pend Then
counter = counter + 1
pranges(counter) = pbegin
counter = counter + 1
pranges(counter) = pend
pbegin = pcell.Offset(-1, 0)
Else: pold = pnew
End If

i = i + 1
Next

结束子

【问题讨论】:

  • 在哪一行遇到错误?
  • 您似乎混合了pnewpnnew,但pnnew 没有在任何地方声明。如果模块顶部不存在Option Explicit,请将其添加到顶部

标签: excel vba


【解决方案1】:

错误是因为您使用了Set 关键字,该关键字用于分配对对象的引用。由于Set pold = Range("B2:B2").Value 的 RHS 上的输出是一个整数,所以 vba 会给你一个错误。要解决它,只需删除 Set 关键字。但是我也注意到您在for 循环中使用rng1 而不初始化rng1 变量,在这种情况下您的for 循环将永远不会执行。您可能还想纠正它。

【讨论】:

  • 这一行也缺少 Set 关键字:pcell = pcell.Offset(-1, 0)
  • 谢谢。我一直在搞乱那部分,没有保存 rng1 部分。
  • 另外,pcell=pcell.Offset(-1,0) 看起来还好吗?我正在尝试将范围值存储在 pcell 中以在列中向下移动一个。
猜你喜欢
  • 1970-01-01
  • 2014-03-11
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多