【问题标题】:How do I make the cell Range work in VBA?如何使单元格范围在 VBA 中工作?
【发布时间】:2020-10-28 23:53:30
【问题描述】:

我的自动填充功能有问题。我想用宏来填写日期,直到B中没有任何东西。问题是那里有一些空白。我可以更改代码以使其填充到 B 中的最后一行吗?我使用下面的代码进行了尝试。但是,它不起作用。

Sub fill()
    Sheets("Table1").Select
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",R[-1]C,RC[-1])"
    ActiveCell.Select
    Dim last As Long
    Range("C2").Select
    Range(Selection, Selection.End(xlToRight)).AutoFill Destination:=Range("C2:C" & last)
    Selection.End(xlDown).Select
    Selection.ClearContents
    ActiveCell.Offset(-1, 0).Range("A1").Select
    Range(Selection, Selection.End(xlUp)).Select
    Selection.Copy
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("C:C").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
End Sub

【问题讨论】:

    标签: excel vba autofill


    【解决方案1】:

    你不需要这么长的过程。您只需几行即可完成。例如

    rng.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
    

    这是一个例子。假设您的范围是从C2 开始,如下所示。

    试试这个代码

    Option Explicit
    
    Sub Sample()
        Dim ws As Worksheet
        Set ws = Sheets("Table")
        
        Dim lRow As Long
        With ws
            lRow = .Range("C" & .Rows.Count).End(xlUp).Row
            
            Dim rng As Range
            Set rng = .Range("C3:C" & lRow)
            
            Dim visibleCells As Range
            On Error Resume Next
            Set visibleCells = rng.SpecialCells(xlCellTypeBlanks)
            On Error GoTo 0
            
            If Not visibleCells Is Nothing Then
                visibleCells.FormulaR1C1 = "=R[-1]C"
            End If
        End With
    End Sub
    

    行动中

    值得一提

    1. 还要避免使用Select/Selection/Activecell 等。您可能需要阅读How to avoid using Select in Excel VBA
    2. 您不需要 VBA 来实现您想要的。您只需点击几下即可达到同样的效果。

    非 VBA 方法

    1. 选择您的范围。在这种情况下C3:C13
    2. CTRL + G 调出转到对话框
    3. 点击特殊按钮
    4. 选择空白单选按钮并点击确定
    5. 在公式栏中输入=C2 并按CTRL + ENTER 键,您就完成了

    行动中

    【讨论】:

    • 我正要描述你的非 VBA 方法:我大约 20 年前在一次课程中学到了它,从那时起,我就一直对 MS-Excel 的强大功能感到惊讶:-)
    • 是的,Excel 仍然让我感到惊讶 :)
    • 哇!太感谢了!完美运行,感谢您提供如何避免选择的方法:)
    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多