Excel精英培训网

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

[已解决],VBA选择列能不能用数字表示?

[复制链接]
发表于 2014-11-5 10:22 | 显示全部楼层 |阅读模式
本帖最后由 含月化烛 于 2014-11-5 10:58 编辑

用VBA选择列可以用数字表示吗? 用数字表示列.rar (6.08 KB, 下载次数: 6)
EM截图_2014115102255.png
发表于 2014-11-5 10:28 | 显示全部楼层
一列可以用columns(1).select来。
多列的话不行。
回复

使用道具 举报

 楼主| 发表于 2014-11-5 10:31 | 显示全部楼层
hwc2ycy 发表于 2014-11-5 10:28
一列可以用columns(1).select来。
多列的话不行。

麻烦你再看一下我的帖子内容,如果想动态的选择多列应该怎么办?
回复

使用道具 举报

发表于 2014-11-5 10:40 | 显示全部楼层    本楼为最佳答案   
  1. Sub t()
  2.     Dim i%
  3.     i = Cells("2", Columns.Count).End(xlToLeft).Column   '获取第二行中最后有数字的一列
  4.     Sheets(1).Columns(i + 1).Resize(, 2).Hidden = False                           '显示选中的两列
  5. End Sub
复制代码
回复

使用道具 举报

发表于 2014-11-5 10:45 | 显示全部楼层
Columns参数可以是数值或文本,
如果为数值: Columns(3),
如果为文本则必须是能表示一个或多个整列引用地址的文本,如:Columns("A:D")

但是在你的例子中,相当于Columns("1:3"),里面根本不是数值,也不是能表示整列引用的文本,故而出错。
如果非得用Columns和数值来表示连续的多列,则可以考虑这么写: Range(Columns(1),Columns(3))
回复

使用道具 举报

发表于 2014-11-5 10:48 | 显示全部楼层
你可以选择单元格 RANGE("A1:B1").ENTIRECOLUMN,这样不就可以返回整个列嘛。
由单元格可以反回所在的行,列,整行,整列,再籍由entirerow,entirecolumn,resize来扩大区域
回复

使用道具 举报

发表于 2014-11-5 11:02 | 显示全部楼层
  1. Sub demo()
  2.     Dim a As String, b As String, x As String
  3.     a = Split(Cells(2, Cells(2, Columns.Count).End(xlToLeft).Column + 1).Address(ColumnAbsolute:=False), "$")(0)
  4.     b = Split(Cells(2, Cells(2, Columns.Count).End(xlToLeft).Column + 2).Address(ColumnAbsolute:=False), "$")(0)
  5.     x = a & ":" & b
  6.     Sheet1.Columns(x).Select
  7. End Sub
复制代码
楼主看看是不是这个效果
回复

使用道具 举报

发表于 2014-11-5 11:04 | 显示全部楼层
WreckRalf 发表于 2014-11-5 10:45
Columns参数可以是数值或文本,
如果为数值: Columns(3),
如果为文本则必须是能表示一个或多个整列引用 ...

1105.rar (12.56 KB, 下载次数: 11)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:41 , Processed in 0.420015 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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