是否有一种简洁的方法来做Range(“ A1:A10”)。Value = Range(“ A1:A10”)。Value + 1在vba中

时间:2019-10-02 05:59:14

标签: excel vba

使用范围变量时,我有一些问题。例如,我可以直接对一系列像这样的单元格进行分配:

Range("B1:B10").Value = Range("A1:A10").Value

但是,有没有一种简单的方法来进行值范围的递增然后赋值,这是我的意思,但是导致类型不匹配错误

Range("A1:A10").Value = Range("A1:A10").Value + 1 

编辑:最终,我要实现的是滚动按钮,单击_UP时,范围中的所有单元格都将值增加1,单击_Down时,范围中的所有单元格都将值减小1。有效的方法吗?

3 个答案:

答案 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

复制下来。