使用范围变量时,我有一些问题。例如,我可以直接对一系列像这样的单元格进行分配:
Range("B1:B10").Value = Range("A1:A10").Value
但是,有没有一种简单的方法来进行值范围的递增然后赋值,这是我的意思,但是导致类型不匹配错误
Range("A1:A10").Value = Range("A1:A10").Value + 1
编辑:最终,我要实现的是滚动按钮,单击_UP时,范围中的所有单元格都将值增加1,单击_Down时,范围中的所有单元格都将值减小1。有效的方法吗?
答案 0 :(得分:1)
如果您有大量数据,这就是我要做的事情:
Option Explicit
Sub Increase_Decrease(UpOrDown As Long)
Dim LastRow As Long, i As Long
Dim arr As Variant
With ThisWorkbook.Sheets("MySheet") 'Change MySheet for your sheet
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
arr = .Range("A1", .Cells(LastRow, 1)).Value
For i = 1 To UBound(arr)
arr(i, 1) = arr(i, 1) + UpOrDown
Next i
.Range("A1", .Cells(LastRow, 1)).Value = arr
End With
End Sub
Sub Increase()
Increase_Decrease 1
End Sub
Sub Decrease()
Increase_Decrease -1
End Sub
然后,将向上滚动按钮链接到增加过程,将向下滚动按钮链接到减少按钮。
答案 1 :(得分:0)
不知道这是否很简洁,但不是将值复制到数组中,而是添加循环1,然后将其写回,您可以尝试以下代码
(array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1], dtype=int64))
答案 2 :(得分:0)
您也可以在没有VBA的情况下执行此操作。
演示设置为
从Developer >> Insert >> Form Controls >> Scroll Bar
插入表单控件。
参数将是
最小值= 1
最大值= 100
增量变化= 1
页面更改= 10
单元格链接= $B$1
然后在单元格A1中插入以下公式:
=ROW()-$B$1
复制下来。