【问题标题】:Excel VBA Dynamic Range / Loop issueExcel VBA动态范围/循环问题
【发布时间】:2018-05-07 07:11:50
【问题描述】:

我正在为一家银行开发财务模型,并遇到以下问题,我无法在 Excel VBA 中解决,希望您能提供帮助。

我构建了一个简单的宏,它基本上做了两件事:(i) 它清除给定范围内的内容,(ii) 它用公式填充相同的范围。简而言之,它如下所示:

Sub AutoCalculateCashFlows()
    Range(D208:L208).ClearContents
    Range("L208").FormulaR1C1 = "=+R[-34]C-R[-34]C[-1]"
    Range("L208").AutoFill Destination:=Range("E208:L208"), Type:=xlFillDefault
End Sub

我的问题是应该自动填充的范围取决于用户在 E10:L10 的范围内填写了多少个单元格。用户将从右到左开始填充此范围,但我不知道他们将从 L 列向左移动多远。我的宏自动填充的公式至少需要两个数据,即。至少应填充 L10 和 K10,如果是后者,则宏只需要使用公式自动填充 L208,如果填写了 J10:L10,则宏需要自动填充范围 L208:K208 等等如果填写完整的 D10:L10 范围,则应使用公式填充 E208:L208。

我曾考虑通过两种途径解决此问题:(i) 将其视为动态范围问题,在这种情况下,我需要一个 vba 代码来确定用户在 D10:L10 范围内填充的上一个到最后一个单元格并在“Destination:=Range("E208:L208")”中使用该单元格的列代码,或者 (ii) 运行一个循环,该循环将使用公式填充范围 E208:L208 直到单元格在D10范围内的上一列中:L10由用户填写并在没有时停止。

希望这是有道理的,并提前感谢您的帮助。

【问题讨论】:

    标签: vba excel loops dynamic range


    【解决方案1】:

    当您需要 VBA 中的动态范围时,您应该简单地构建一个。这可能是最简单的方法:

    Sub TestMe()
    
        Dim colRange    As Long
        Dim rowRange    As Long
        Dim rngMain     As Range
    
        rowRange = 10
    
        With Worksheets(1)
            colRange = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Set rngMain = .Range(.Cells(rowRange, colRange), .Cells(100, 200))
            MsgBox rngMain.Address
        End With
    
    End Sub
    

    它是动态的,基于第一个工作表第 1 行中最后使用的列。

    关于第 1 行中使用的第二个列,这 3 个中的一个可能会为您执行此操作,具体取决于您到底想要什么:

    .Cells(1, 1).End(xlToRight).End(xlToRight).Column
    .Cells(1, 1).End(xlToRight).Column
    .Cells(1, 1).End(xlToRight).Column + 1
    

    【讨论】:

    • 谢谢。我认为这为我指明了正确的方向,但是从上述解决方案的角度来看,我需要我的范围从第 1 行的第二个使用的列到 L1。你能告诉我如何修改你的代码来达到这个结果吗?
    • 第三个对我有用。谢谢你,维提拉。随后如何在我的自动填充命令中引用 rngMain?我输入了以下内容,但它到达了“应用程序定义的或对象定义的错误”:Range("L10").AutoFill Destination:=Range("rngMain"), Type:=xlFillDefault
    • 大概是这样Destination:=rngMain
    猜你喜欢
    • 2020-11-15
    • 2015-08-03
    • 2019-03-29
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    相关资源
    最近更新 更多