首页 > 解决方案 > 将活动单元格从选定范围复制到第一个空单元格

问题描述

情况是:在声明的范围内找到第一个空单元格。如果找到,则将值从活动单元格复制到“第一个找到的空单元格”并退出循环。

看不出有什么需要改进的。退出循环时可能会出现一些错误。

Sub Copie()
Dim myNamedRange As Range
Set myNamedRange = myWorksheet.Range("L2:L11")
For Each cell In myNamedRange
    If IsEmpty(cell) = True Then
        ActiveCell.Value = cell.Value
        Exit For
    End If
Next cell
End Sub

标签: excelvba

解决方案


要在不循环的情况下执行此操作,您可以使用FIND,但是使用小范围不会产生任何明显的改进。

Sub Copy()

    Dim myWorkSheet As Worksheet
    Dim myNamedRange As Range
    Dim FirstEmptyCell As Range

    Set myWorkSheet = ThisWorkbook.Worksheets("Sheet1")
    Set myNamedRange = myWorkSheet.Range("L2:L11")

    With myNamedRange
        Set FirstEmptyCell = .Find( _
            What:="", _
            After:=.Cells(.Rows.Count, .Columns.Count), _
            LookIn:=xlValues, _
            LookAt:=xlWhole, _
            SearchDirection:=xlNext, _
            SearchFormat:=False)
    End With

    If Not FirstEmptyCell Is Nothing Then
        FirstEmptyCell = ActiveCell
    Else
        MsgBox "No empty cells found.", vbOKOnly + vbInformation
    End If

End Sub

推荐阅读