VBA - 数组中的自定义数字格式 - 特定数组编号后出错
VBA - custom number formats from arrays - error after certain array number
我无法弄清楚为什么我的代码无法正常工作。我先贴一下:
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"。请看下面的画面:
我的代码在每个单元格值之前添加数字、点和 space。它适用于前 9 个单元格,但我不知道为什么它在第 10 个单元格时出错:"Run-time error '1004' Unable to set the NumberFormat property of Range Class".
奇怪的是,当我在我的数组中输入字母时效果很好,但是对于数字,它却不行:(
我尝试了多种方法(例如尝试将我的“10”值从数组中拆分为两个独立的部分,如“1”和“0”)但几个小时后没有成功,我放弃了。
我有两个问题:
1) 有谁知道为什么会弹出这个错误,我怎样才能绕过它继续我的宏?
2) 有什么方法可以给数组赋值而不需要单独输入每一行吗?数字和自定义字符,如字母或符号?
预先感谢您的协助!
试试这个。它使用不同的数字格式:"1." @
Sub Kowalski()
Dim f
f = [char(34)&row(1:999)&"."&char(34)&" @"]
Selection.NumberFormat = f
End Sub
这是如何工作的:
Dim f
创建变体变量。
下一行使用方括号表示的 Excel 的 Evaluate 方法创建一个包含 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." @
我无法弄清楚为什么我的代码无法正常工作。我先贴一下:
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"。请看下面的画面:
我的代码在每个单元格值之前添加数字、点和 space。它适用于前 9 个单元格,但我不知道为什么它在第 10 个单元格时出错:"Run-time error '1004' Unable to set the NumberFormat property of Range Class".
奇怪的是,当我在我的数组中输入字母时效果很好,但是对于数字,它却不行:(
我尝试了多种方法(例如尝试将我的“10”值从数组中拆分为两个独立的部分,如“1”和“0”)但几个小时后没有成功,我放弃了。
我有两个问题: 1) 有谁知道为什么会弹出这个错误,我怎样才能绕过它继续我的宏? 2) 有什么方法可以给数组赋值而不需要单独输入每一行吗?数字和自定义字符,如字母或符号?
预先感谢您的协助!
试试这个。它使用不同的数字格式:"1." @
Sub Kowalski()
Dim f
f = [char(34)&row(1:999)&"."&char(34)&" @"]
Selection.NumberFormat = f
End Sub
这是如何工作的:
Dim f
创建变体变量。
下一行使用方括号表示的 Excel 的 Evaluate 方法创建一个包含 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." @