Excel VBA实现复制I4值到L5:L19首个空白单元格的代码求助
原有代码问题
- 查找范围未限定在L5:L19区间,遍历范围是L列整列从第1行到最后一个有内容的行,无法匹配目标区域的首个空白单元格
- 循环未在找到第一个空白后终止,最终选中的是遍历范围内最后一个空白单元格,不符合需求
- 使用
Select、复制粘贴的操作冗余,效率低还会影响系统剪贴板
修正后可直接使用的代码
Private Sub RecordCalcOffset_Click() Dim targetRng As Range, currentCell As Range ' 定义查找范围为指定的L5:L19 Set targetRng = ActiveSheet.Range("L5:L19") ' 遍历目标区域找第一个空白单元格 For Each currentCell In targetRng If IsEmpty(currentCell.Value) Or Trim(currentCell.Value) = "" Then ' 直接赋值替换复制粘贴,效率更高 currentCell.Value = ActiveSheet.Range("I4").Value ' 找到首个符合要求的单元格后直接退出循环 Exit For End If Next ' 可选:如果需要区域占满提示,可以取消下方注释 ' If currentCell Is Nothing Then MsgBox "L5:L19区域已全部填满,无法写入新数据" End Sub
补充说明
如果需要固定写入某张工作表,避免切换到其他工作表时点按钮写错位置,可以把代码里的ActiveSheet替换为Sheets("你的工作表名称"),比如表格叫「设备运行记录」就写Sheets("设备运行记录")。
内容的提问来源于stack exchange,提问作者Darius Lunar
相关产品推荐
相关产品推荐

