VBA xlToRight相关功能问题:如何将选中列粘贴到右侧首个可用空列
VBA代码调整说明
你原有代码的核心问题是定位逻辑错误,把「查找工作表最右侧空列」的逻辑误写为「查找A列最后一行」,完全不符合需求。
调整后可直接使用代码
Sub CopyMonthData() Dim targetSht As Worksheet Dim lastUsedCol As Integer ' 绑定目标工作表,避免表切换导致引用错误 Set targetSht = Worksheets("SalesInvoicesMonth") ' 定位目标工作表第一行最右侧的已使用列 lastUsedCol = targetSht.Cells(1, targetSht.Columns.Count).End(xlToLeft).Column ' 复制指定范围数据到最右侧空列的第2行开始粘贴(和数据源起始行对齐) Worksheets("Tables").Range("d2:d200").Copy targetSht.Cells(2, lastUsedCol + 1) End Sub
核心调整说明
- 原代码中
Range("a" & Columns.Count).End(xlToLeft)的作用是定位A列最后一个非空单元格,和你需要的最右侧列定位逻辑完全不符,调整为优先获取第一行最右侧已使用列序号,序号+1即为第一个可用空列 - 原代码的
Offset(1,0)是向下偏移1行,调整为列号+1实现向右偏移1列,粘贴起始行设置为2和数据源起始行保持一致
如果需要从空列的第一行开始粘贴,只需把最后一行代码中的Cells(2, lastUsedCol + 1)里的2改为1即可。
内容的提问来源于stack exchange,提问作者Andrew Noakes
相关产品推荐
相关产品推荐

