You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:15:37