Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Vba 如何将单元格范围乘以一个值_Vba_Excel - Fatal编程技术网

Vba 如何将单元格范围乘以一个值

Vba 如何将单元格范围乘以一个值,vba,excel,Vba,Excel,我试着做一个函数,在这个函数中,人们可以输入一个整数,表示某个单元格中要增加的百分比,然后某个范围内的值会随着这个输入而增加。我对vba非常陌生,所以我不太确定如何才能做到这一点。以下是我到目前为止的情况: Dim percent As Integer Function ADJUST(percent) If percent > 0 Then percent = (percent + 100) * 0.01 'Converts value to percentag

我试着做一个函数,在这个函数中,人们可以输入一个整数,表示某个单元格中要增加的百分比,然后某个范围内的值会随着这个输入而增加。我对vba非常陌生,所以我不太确定如何才能做到这一点。以下是我到目前为止的情况:

Dim percent As Integer

Function ADJUST(percent)
    If percent > 0 Then
        percent = (percent + 100) * 0.01  'Converts value to percentage to increase
        percent.Copy
        Range("K4:N20").PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
    Else
        percent = 0
    End If
End Function

我知道复制和粘贴特别可能也不是最有效的方法。如果方向正确,我们将不胜感激

就我个人而言,我会使用
For
循环并遍历范围内的每个单元格。另外,请注意:这不需要是
函数,因为没有返回值-最好将其设置为
,其参数为
百分比

Sub ADJUST(percent)
    If percent > 0 Then
        For Each cell In Range("K4:N20")
            cell.Value = cell.Value * (percent * 0.01)
        Next cell
    Else
        cell.Value = 0
    End If
End Function
测试:


免责声明:有更简单的方法吗?很可能。

这是家庭作业吗?这不需要VBA;最好使用简单的工作表函数来完成此操作。如果您不熟悉使用Excel的工作表函数,我建议您首先关注这一点。仅供参考,
percent
参数隐藏了
percent
模块级变量,该参数应声明为
范围
。另外,由于它是以
ByRef
隐式传递的,因此无法判断其目的是分配
percent
本地范围参数,还是分配
percent
模块范围的专用字段。模块级别变量在
ADJUST
范围内不可访问。还不清楚:我花了3次读取才意识到参数实际上是一个
变量/范围
,而
百分比=(表达式)
实际上是
百分比.Value=(表达式)
。说什么就做什么。
Sub Test()
    Adjust (50)
End Sub