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

VBA宏需求:将arrFlags值写入rng区域后的第一列

修正VBA宏写入列位置的问题

你的代码问题出在Offset的列偏移参数上:

  • rng.Offset(0, lastC + 1)用了绝对列号的思路,但Offset的第二个参数是相对于rng区域的列偏移量,不是绝对列数。
  • rng本身已经覆盖到工作表的第lastC列,要写到它后面的第一列,只需要偏移1列即可。

修正后的代码:

Sub question()
    Dim ws As Worksheet, rng As Range, lastR As Long, lastC As Long
    Dim arr, arrFlags
    
    Set ws = ActiveSheet
    lastR = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastC = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    
    Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lastR, lastC))

    arr = rng.Value2
    ReDim arrFlags(1 To UBound(arr, 1), 1 To 1)

    ' 改为偏移1列,指向rng右侧第一列
    With rng.Offset(0, 1)
        .Value = arrFlags
    End With
End Sub

你也可以用更直观的方式定位目标列,效果完全一致:

' 定位到rng最后一列的右侧第一列,再调整行数匹配rng
With rng.Columns(rng.Columns.Count).Offset(0, 1).Resize(rng.Rows.Count, 1)
    .Value = arrFlags
End With

内容的提问来源于stack exchange,提问作者Leedo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:35:05