Arrays VBA-数组中的自定义数字格式-特定数组编号后出错
我在试图找出我的代码不起作用的原因时遇到了困难。让我先粘贴它:Arrays VBA-数组中的自定义数字格式-特定数组编号后出错,arrays,excel,vba,number-formatting,Arrays,Excel,Vba,Number Formatting,我在试图找出我的代码不起作用的原因时遇到了困难。让我先粘贴它: Dim n As Integer Dim List_number As String Dim arr_number(1 To 26) As Integer arr_number(1) = "1" arr_number(2) = "2" arr_number(3) = "3" arr_number(4) = "4" arr_number(5) = "5" arr_number(6) =
Dim n As Integer
Dim List_number As String
Dim arr_number(1 To 26) As Integer
arr_number(1) = "1"
arr_number(2) = "2"
arr_number(3) = "3"
arr_number(4) = "4"
arr_number(5) = "5"
arr_number(6) = "6"
arr_number(7) = "7"
arr_number(8) = "8"
arr_number(9) = "9"
arr_number(10) = "10"
arr_number(11) = "11"
arr_number(12) = "12"
arr_number(13) = "13"
arr_number(14) = "14"
arr_number(15) = "15"
arr_number(16) = "16"
arr_number(17) = "17"
arr_number(18) = "18"
arr_number(19) = "19"
arr_number(20) = "20"
arr_number(21) = "21"
arr_number(22) = "22"
arr_number(23) = "23"
arr_number(24) = "24"
arr_number(25) = "25"
arr_number(26) = "26"
n = 1
List_number = "\" & arr_number(n) & "\._1@"
Dim myformat As String
Dim cell As Range
For Each cell In Selection
List_number = "\" & arr_number(n) & "\._1@"
myformat = List_number
cell.NumberFormat = myformat
n = n + 1
Next cell
我试图用这段代码实现的是在excel中创建某种简单的列表,将自定义格式从“cell.value”更改为“myformat.cell.value”。请参见下面的屏幕:
我的代码是在每个单元格值之前添加数字、点和空格。它对前9个单元格非常有效,但我不知道为什么它在第10个单元格中出现错误:“运行时错误'1004'无法设置Range类的NumberFormat属性”
奇怪的行为是,当我在数组中输入字母时,效果很好,但对于数字,效果却不好:(
我尝试过多种方法(例如尝试将数组中的“10”值拆分为两个单独的部分,如“1”和“0”),但在几个小时没有成功后,我放弃了
我有两个问题:
1) 有人知道为什么会出现这个错误吗?我如何绕过它继续我的宏?
2) 是否有任何方法可以将值分配给数组而无需分别键入每一行?数字和自定义字符,如字母或符号
提前感谢您的帮助 试试这个。它使用不同的数字格式:
“1”。@
工作原理:
Dim f
创建变量
下一行使用由方括号表示的Excel求值方法创建一个包含999个字符串的二维数组,该数组将用作数字格式。此行还将该数组指定给f
最后一行一次性将单独的数字格式数组指定给工作表上的当前范围选择
f
数组如下所示:
f(1,1) = "1." @
f(2,1) = "2." @
f(3,1) = "3." @
f(4,1) = "4." @
f(5,1) = "5." @
.
.
.
f(999,1) = "999." @
@Gary的学生我试图删除一些格式,但是没有那么多。。。这不可能是原因。即使我在完全“新鲜”的工作簿上尝试,也会出现此问题。Excel告诉我们\10\。@不是有效的格式@它不必是数字格式,我只是认为使用它们是明智的,就像单元格(字符串)的值改变了一样,格式保持不变。您认为使用公式并将公式结果作为字符串存储在单元格中更好吗?视情况而定。是否希望最终结果显示在与原始数据完全相同的范围内?或者可以使用新范围内的公式,将原始未更改的数据保留在原始范围内,并将结果保留在新范围内?我希望新值正好位于旧值的位置。如果值在A1:A10范围内,则新“列出的”值应在相同范围内。。。我不明白为什么Excel不让我把数组中的“10”转换成数字格式。。。我已尝试使用\1\0格式。。。而不是\10,但它不起作用…它起作用了,谢谢!我已在你的帖子上做了标记作为答复。还有一个问题-是否有快速或简单的方法在数组中存储多个值?例如,我想在一个数组中存储50个不同的字母组合(字符串)。我想在代码中分配它们-我需要重复“arr(1)=xxx”50次吗?或者有更简单的方法吗?或者,如果不容易,那么在代码中看起来“更干净”?是的,您可以使用循环。更简单的是,我在回答中将999个不同的字符串存储在一个数组中。
f(1,1) = "1." @
f(2,1) = "2." @
f(3,1) = "3." @
f(4,1) = "4." @
f(5,1) = "5." @
.
.
.
f(999,1) = "999." @