方法‘range’作用于对象‘_Global’时失败
答案:1 悬赏:0
解决时间 2021-01-06 02:48
- 提问者网友:夢醒日落
- 2021-01-05 02:20
方法‘range’作用于对象‘_Global’时失败
最佳答案
- 二级知识专家网友:煞尾
- 2021-01-05 02:44
首先:对单元格的引用
Range("Ak").Value
要改为这样:
Range("A" & Cstr(k)).Value
Range("A(k + 1)").
改为这样:
Range("A" & Cstr(k + 1)).
同样
Rows("(k+1):(k+1)").Select
改为
Rows(CStr(k + 1) & ":" & CStr(k + 1)).Select追问不知道CStr是什么意思,不过我按你的提示改成
If Range("A" & k).Value = Range("A" & (k + 1)).Value Then
Rows((k + 1) & ":" & (k + 1)).Select
就ok了。(然后就没试验你的那个,O(∩_∩)O~)
现在问题解决了,但我还想知道CStr是什么意思,以及为什么不能像我第一次那样去写?
拜托拜托。追答Cstr()函数,将数字转换成字符
理解:2 --> "2"
Val()函数,将字符(数字字符)转换成数字
理解:"2" --> 2
因为在Excel VBA中,单元格地址用字符表示,比如:单元格A1,要用
Range("A1")来表示
这里A当然是字符,但是这里的1也是字符,
你的代码里,K是数值型变量,因为你赋值为:k = 2,等等,显然它是数值,要用K来表示单元格的地址,就要把K转换成字符,所以用Cstr(K)
在所有高级语言中,字符类型与数值类型,赋值的形式相类似的,例如:
x = 12
y = 36
S = "12"
T = "36"
前两个变量是数值类型,后两个变量是字符类型。
如果你想做数值的加法运算:x + T,就会有问题,但是用:
x + Val(T) 就可以按照数值计算了。
同样,如果执行:Cstr(x) + T,结果为“1236”
Range("Ak").Value
要改为这样:
Range("A" & Cstr(k)).Value
Range("A(k + 1)").
改为这样:
Range("A" & Cstr(k + 1)).
同样
Rows("(k+1):(k+1)").Select
改为
Rows(CStr(k + 1) & ":" & CStr(k + 1)).Select追问不知道CStr是什么意思,不过我按你的提示改成
If Range("A" & k).Value = Range("A" & (k + 1)).Value Then
Rows((k + 1) & ":" & (k + 1)).Select
就ok了。(然后就没试验你的那个,O(∩_∩)O~)
现在问题解决了,但我还想知道CStr是什么意思,以及为什么不能像我第一次那样去写?
拜托拜托。追答Cstr()函数,将数字转换成字符
理解:2 --> "2"
Val()函数,将字符(数字字符)转换成数字
理解:"2" --> 2
因为在Excel VBA中,单元格地址用字符表示,比如:单元格A1,要用
Range("A1")来表示
这里A当然是字符,但是这里的1也是字符,
你的代码里,K是数值型变量,因为你赋值为:k = 2,等等,显然它是数值,要用K来表示单元格的地址,就要把K转换成字符,所以用Cstr(K)
在所有高级语言中,字符类型与数值类型,赋值的形式相类似的,例如:
x = 12
y = 36
S = "12"
T = "36"
前两个变量是数值类型,后两个变量是字符类型。
如果你想做数值的加法运算:x + T,就会有问题,但是用:
x + Val(T) 就可以按照数值计算了。
同样,如果执行:Cstr(x) + T,结果为“1236”
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯