VBA代码中&运算符用法及自适应列自动填充问题咨询
问题解答:VBA中&运算符的作用及动态列自动填充实现
&运算符的作用
在VBA里,& 是字符串连接运算符,用来把多个字符串(或可转换为字符串的数值)拼接成一个完整的字符串。
你提到的代码行:
Selection.AutoFill Destination:=Sheets("All").Range(ActiveCell.Address & ":DB" & LastRow6), Type:=xlFillDefault
拆解来看:
ActiveCell.Address返回当前选中单元格的地址(比如$B$3)& ":DB"把字符串":DB"拼接到前面的地址后,得到$B$3:DB& LastRow6再把变量LastRow6存储的最后一行行号(比如100)拼接到末尾,最终形成完整的范围地址$B$3:DB100
Excel的Range对象通过这个拼接后的字符串,就能识别出自动填充的目标区域。
实现自适应最后列的自动填充
首先要修正你当前获取最后列的代码——之前的写法错误地用了.Row属性,应该获取列号而非行号。正确获取第2行(表头行)最后一列的代码是:
LastColumn = Sheets("All").Cells(2, Columns.Count).End(xlToLeft).Column
接下来,用动态获取的LastColumn替代固定的DB列,同时建议避免使用Select和Selection(这会降低代码效率且易出错),直接操作单元格范围:
修改后的完整代码片段:
Dim LastRow6 As Long Dim LastColumn As Long Dim ws As Worksheet Set ws = Sheets("All") ' 定义工作表对象,简化代码书写 ' 获取B列的最后一行行号 LastRow6 = ws.Range("B" & ws.Rows.Count).End(xlUp).Row ' 获取第2行(表头行)的最后一列列号 LastColumn = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column ' 定义源公式范围(B3到B列最后一行) Dim sourceRange As Range Set sourceRange = ws.Range("B3:B" & LastRow6) ' 自动填充到动态最后一列 sourceRange.AutoFill Destination:=ws.Range(sourceRange, ws.Cells(LastRow6, LastColumn)), Type:=xlFillDefault
说明:
- 用
ws.Cells(LastRow6, LastColumn)直接定位到最后一列最后一行的单元格,结合源范围sourceRange,通过Range(sourceRange, targetCell)构建完整的目标填充区域,无需手动拼接地址字符串,更可靠。 - 定义工作表对象
ws可以避免重复书写Sheets("All"),让代码更简洁且不易出错。
内容的提问来源于stack exchange,提问作者Haseo1997
相关产品推荐
相关产品推荐

