这将是一个非常基本的问题。
我想声明单元格为变体,以代替重复键入,例如
var ind = ["Apple", "Pear", "Banana"];
var arr = [
["Apple", "Banana", "Pear", "Pear", "Apple", "Apple", "Banana"],
[11, 12, 34, 54, 76, 23, 232],
[33, 54, 22, 11, 23, 21, 33]
];
const first = arr[0];
const result = arr.slice(1).reduce((r, e, i) => {
const a = r[i + 1] = [];
e.forEach((el, j) => {
const index = ind.indexOf(first[j])
if (!a[index]) a[index] = [el];
else a[index].push(el)
})
return r;
}, [ind])
console.log(result)
要么
a = cells(1,1)
然后
a = range("a1")
或
a.select
但
发生错误运行时424
我想了解问题所在,该怎么办。
谢谢
答案 0 :(得分:1)
您已经遇到了VBA的一个有趣的“功能”-默认属性。 Excel库中的大多数对象都有默认属性,该属性在未指定任何属性的情况下使用。对于范围对象,默认属性是Value属性。这意味着该行
Range("A1") = 4
VBA将解释为含义
Let Range("A1").Value = 4
在您的情况下,该行
a = cells(1,1)
最终被解释为
Let a = range("a1").value
但是,你写过
Set a = cells(1,1)
然后设置该值将强制vba将cell(1,1)视为对象,从而将a设置为指向单元格A1的指针,这就是您想要的。
(VBA仍然坚持使用Let进行值分配,因为您的原始行会因歧义而出错,但不会造成混淆-但是Let语句现在是可选的,因此如果您将其保留,则不会出现错误)