Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3483|回复: 4

[已解决]帮忙修改下VBA代码

[复制链接]
发表于 2013-11-6 16:36 | 显示全部楼层 |阅读模式
5学分
本帖最后由 刘洪裕 于 2014-1-12 15:39 编辑

指定数据插入空列
最佳答案
2013-11-6 17:12
原代码是在"3值"右边插入4列,而现在想改为"3值"左边边插入3列,是吗?
如果是,改为蓝色这句即可

Sub InsertCol()
    Dim Ar, i%
    Ar = Sheets("表格1").Range("a1", Sheets("表格1").Cells(1, Columns.Count).End(xlToLeft))
    Application.ScreenUpdating = False
    For i = UBound(Ar, 2) To 1 Step -1
        If Ar(1, i) = "3值" Then
            Debug.Print Range(Cells(1, i - 2), Cells(1, i)).Address(0, 0)
            Range(Cells(1, i - 2), Cells(1, i)).EntireColumn.Insert Shift:=xlToRight
        End If
    Next
    Application.ScreenUpdating = True
End Sub

帮忙修改下VBA代码.zip

32.53 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-6 17:12 | 显示全部楼层    本楼为最佳答案   
原代码是在"3值"右边插入4列,而现在想改为"3值"左边边插入3列,是吗?
如果是,改为蓝色这句即可

Sub InsertCol()
    Dim Ar, i%
    Ar = Sheets("表格1").Range("a1", Sheets("表格1").Cells(1, Columns.Count).End(xlToLeft))
    Application.ScreenUpdating = False
    For i = UBound(Ar, 2) To 1 Step -1
        If Ar(1, i) = "3值" Then
            Debug.Print Range(Cells(1, i - 2), Cells(1, i)).Address(0, 0)
            Range(Cells(1, i - 2), Cells(1, i)).EntireColumn.Insert Shift:=xlToRight
        End If
    Next
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

发表于 2013-11-6 17:18 | 显示全部楼层
回复

使用道具 举报

发表于 2013-11-6 17:21 | 显示全部楼层
在10里最大只有16384列。
回复

使用道具 举报

发表于 2013-11-6 17:24 | 显示全部楼层
代码没什么问题。
1行内有4000多个3值的单元格。
每一个插3列就要插入12000列。
在没有插入的情况下,已经用了16000列了。
所以,到最后报错了,工作表的列都用完了。
QQ截图20131106172514.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 13:38 , Processed in 0.277100 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表