【问题标题】:VBA Offset difficultiesVBA 偏移困难
【发布时间】:2017-05-28 19:40:24
【问题描述】:

我将 fRange 存储为范围。现在我希望 fRange 向下 1 和向右 1。从这里需要弹出输入框。每次填充输入框时,它都需要向右移动,直到单元格具有其他颜色。

我遇到的问题是我在输入框中输入的所有内容都输入了错误的单元格。 现在有了这个,所以认为偏移量有问题

i = 3
u = 1
fRange = fRange.Offset(1, u)

Do While Cells(1, i).Interior.Color = RGB(69, 105, 142)


fRange = InputBox("Add price", Cells(1, i))


i = i + 1
u = u + 1


Loop

【问题讨论】:

    标签: vba offset


    【解决方案1】:

    请看VBA Best Practices documentation


    您缺少Set 关键字。如果您在模块顶部使用 Option Explicit 并声明变量,则不会出现此问题。

    fRange 是一个 Range 对象。在 VBA 中,对象必须是 Set

    i = 3
    u = 1
    Set fRange = fRange.Offset(1, u)
    
    Do While Cells(1, i).Interior.Color = RGB(69, 105, 142)
    
    
    fRange = InputBox("Add price", Cells(1, i))
    
    
    i = i + 1
    u = u + 1
    
    
    Loop
    

    【讨论】:

    • fRange = InputBox("Add price", Cells(1, i)) 可能是正确的 - 隐式使用 fRange.Value。 (但我认为Set fRange 可能意味着在Do 内。)
    • @YowE3K aha 是的,这更有意义,我将编辑我的示例
    • 但可能是Set fRange = fRange.Offset(1, 0)Do 内? (我认为 OP 应该将其重写为只使用一个变量 - iu - 不能同时使用。)
    • @YowE3K 逻辑肯定是错误的,u 从未使用过,循环查看Cells 而不是fRange - 也正如您指出的那样,fRange 未设置在任何时候到一个新的范围。我想纠正所有只是把它放在盘子上交给 OP,而不是鼓励他们先学习最佳实践。
    • 我怀疑第 1 行是标题,fRange 最初可能指向适用于日期的行,而偏移量 fRange 可能只是指Cells(r, i) 其中 r 是该行号。但从问题中无法判断,因此 OP 必须自己解决。
    猜你喜欢
    • 2021-01-15
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2018-01-17
    • 2017-10-18
    • 1970-01-01
    • 2013-03-14
    相关资源
    最近更新 更多