Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在vba中是否有一种简洁的方法来实现范围(“A1:A10”)。值=范围(“A1:A10”)。值+1_Excel_Vba - Fatal编程技术网

Excel 在vba中是否有一种简洁的方法来实现范围(“A1:A10”)。值=范围(“A1:A10”)。值+1

Excel 在vba中是否有一种简洁的方法来实现范围(“A1:A10”)。值=范围(“A1:A10”)。值+1,excel,vba,Excel,Vba,我在使用范围变量时有点问题。例如,我可以直接对一系列单元格进行赋值,如下所示: Range("B1:B10").Value = Range("A1:A10").Value 然而,是否有一种简洁的方法来增加值的范围,然后赋值,下面是我的意思,但会导致类型不匹配错误 Range("A1:A10").Value = Range("A1:A10").Value + 1 编辑:最终我想要实现的是一个滚动按钮,当点击向上时,范围内的所有单元格将值增加1,当点击向下时,范围内的所有单元格将值减少1。最有

我在使用范围变量时有点问题。例如,我可以直接对一系列单元格进行赋值,如下所示:

Range("B1:B10").Value = Range("A1:A10").Value
然而,是否有一种简洁的方法来增加值的范围,然后赋值,下面是我的意思,但会导致类型不匹配错误

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

编辑:最终我想要实现的是一个滚动按钮,当点击向上时,范围内的所有单元格将值增加1,当点击向下时,范围内的所有单元格将值减少1。最有效的方法是什么?

不确定这是否真的很简洁,但与其将值复制到数组中,不如添加一个循环1,然后将其写回。您可以尝试以下代码

Sub Test()

    Dim rg1 As Range, rg2 As Range
    Dim addVal As Long

    addVal = 1
    Set rg1 = Range("A1:A10")

    Set rg2 = rg1.Offset(, 1)
    rg2.Formula = "=RC[-1]+" & addVal

    rg1.Value = rg2.Value
    rg2.Clear

End Sub

如果您有大量数据,我会这样做:

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

然后将向上滚动按钮链接到增加程序,将向下滚动按钮链接到减少按钮。

您也可以在不使用VBA的情况下执行此操作

演示设置将是

从开发人员中插入表单控件>>插入>>表单控件>>滚动条

参数将是 最小值=1 最大值=100 增量变化=1 换页=10 单元链接=$B$1

然后在单元格A1中插入以下公式: =行-$B$1


向下复制。

您需要一个循环。。。如果性能/速度是您关心的问题,则始终可以将范围放入数组中,在其中循环并将其粘贴回范围。类型不匹配的原因是。Value返回数组,而+对数组不起作用。