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
相关产品推荐
相关产品推荐

