我有一个包含两列的表。一个(C1)填充以两位小数格式表示的数字,例如2584.12。另一列(C2)也包含以不同格式不时写入的数字。
在工作表更改事件上(位于第二列),该代码适用于C2,其格式与C1中应用的格式相同(不同格式,但不同)。
要引用C1中使用的格式,我正在使用包含整列的数组:
Set mytable = worksheet.ListObjects("My_Table")
colarray = Application.Transpose(mytable.ListColumns("C1").DataBodyRange)
,但是“ mytable.ListColumns(” C1“)。DataBodyRange”会将数字读取为值,而不是文本。
当在C1中,参考数字小数点为零时(例如,“ 2584.00”在数组中存储为整数值,如“ 2584”),甚至表号也存储为带有两个零小数点的文本为“ 2584.00”时,出现我的问题“
我想知道是否有一种方法可以使用此方法将表列转置为数组,以便它可以将数字保留为文本,从而避免出现零位小数的问题。
我认为我必须在DataBodyRange上使用一些.Text属性,但是我无法获得有效的结果,因此下一个将不起作用(“无效数目的参数”):
colarray = Application.Transpose(mytable.ListColumns("C1").DataBodyRange.Text)
.Text属性非常适合寻址表中的单个单元格,例如:
debug.print mytable.ListColumns("C1").DataBodyRange.rows(1).Text
将colarray(1)中的“ 2584”与“ 2584.00”相抵。
我当然可以为我的目的找到另一种方法,但是出于速度优势,我会坚持使用整列的转置方法。
答案 0 :(得分:0)
简单的答案是使用字符串数组...。但是我不知道您在处理数据,所以对您来说可能不切实际。
dim myArray(1 to 1) as string
myArray(1) = "123.00"
始终为123.00
答案 1 :(得分:0)
我发现.Text(如.Value和其他值)属性不能应用于一个范围内的多个单元格,而只能应用于一个单元格以进行读取。所以我必须找到另一种满足我需求的方法。
此代码有效:
foo2
而这个不:
red
谢谢!