循环数组并更改值

时间:2019-05-13 12:01:39

标签: arrays excel vba

使用以下代码,我正在循环一个数组,如果满足条件可以更改数组值。我在更改值的行上收到错误424。有什么想法吗?

#section-one .categories {
  height: 80px;
  background: rgba(0, 0, 0, 0.9);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

#section-one .categories li {
  background: -webkit-gradient(linear, left top, right top, from(#0d0d0d), to(#202020));
  background: linear-gradient(to right, #0d0d0d, #202020);
  height: inherit;
  width: 12.5%;
  border-left: 1px solid black;
  -webkit-transition: all ease-in .3s;
  transition: all ease-in .3s;
}

#section-one .categories li:hover {
  background: green;
}

#section-one .categories li a {
  display: inline-block;
  font-size: .95rem;
  height: inherit;
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

#section-one .slideshow-container {
 max-width: 1000px;
  margin: auto;
  position: relative;
}

#section-one .slideshow-container .mySlides {
  display: none;
}

#section-one .slideshow-container .prev,
#section-one .slideshow-container .next {
  top: 50%;
  background: blue;
  font-size: 18px;
  border-radius: 0 3px 3px 0;
  width: auto;
  position: absolute;
  padding: 16px;
}

#section-one .slideshow-container .next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

#section-one .slideshow-container .prev:hover,
#section-one .slideshow-container .next:hover {
  background-color: rgba(0, 0, 0, 0.8);
}

1 个答案:

答案 0 :(得分:3)

一个数组项没有.Value,它必须是arrAccSof(j, 3) = 0。如果您将值读入

这样的数组
arrAccSof = .Range(.Cells(3, 1), .Cells(MaxRowAccSof, 4))

与使用

相同
arrAccSof = .Range(.Cells(3, 1), .Cells(MaxRowAccSof, 4)).Value

,该数组仅表示范围的,而不表示范围对象。

请注意,如果您更改数组中的值,除非您将数组值最后写回到单元格中,否则它们不会自动在单元格中更改:

.Range(.Cells(3, 1), .Cells(MaxRowAccSof, 4)).Value = arrAccSof

相比,如果这样做

Dim AccSof As Range
Set AccSof = .Range(.Cells(3, 1), .Cells(MaxRowAccSof, 4))

然后AccSof是对实际范围对象的引用,该对象可以像范围本身一样使用:

AccSof(j, 3).Value = 0

这会立即更改单元格值。。

但是请注意,使用数组的第一种方法更快。我添加这个只是为了解释区别。