vba - 如何使用vba获取同一单元格中的百分比值
问题描述
我在工作表 7 中有一个范围,范围(“A1:A10”),我正在尝试下面的代码以在同一个单元格中获取百分比值,但是每当我在 Range(“A1:A10”中键入一个数字时,Excel 就会挂起),有时,它给我一个运行时错误“28”,堆栈空间不足。但不能显示任何行号或突出显示该行。
例如,我正在尝试这个
如果我在 A1 到 A10 范围内键入任何数字,例如单元格 A2 中的 1499,则值应在单元格 A2(相同单元格)中更改为 1338.46,因为 1338.46 是 1499 的 89.29%。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range, m, v
For Each rngCell In Range("A1:A10")
v = rngCell.Value
If Len(v) > 0 Then
m = v * 89.29 / 100
If Not IsError(m) Then rngCell.Value = m
End If
Next
End Sub
解决方案
相同单元格计算(工作表更改)
- 您必须在计算之前关闭事件,然后再打开它们(或在出现错误的情况下)。
编码
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const rngAddress As String = "A1:A10"
Const Perc As Double = 89.29
Dim rng As Range
Set rng = Intersect(Target, Range(rngAddress))
If rng Is Nothing Then
Exit Sub
End If
Dim rngCell As Range
Dim v As Variant
Application.EnableEvents = False
On Error GoTo SafeExit
For Each rngCell In rng.Cells
v = rngCell.Value
If VarType(v) = vbDouble Then
rngCell.Value = v * Perc / 100
End If
Next
SafeExit:
Application.EnableEvents = True
End Sub
推荐阅读
- yii2 - Yii2:如何在文本字段中大写?
- node.js - 尝试通过 passport-facebook 进行身份验证时出现“内部服务器错误”
- html - 如何使 flexbox 容器仅扩展到最长的内部项目?
- python - 如何根据odoo 10中的条件使字段可输入?
- python - 如何在MYSQL中按列分组两次
- excel - VBA 圆的半径
- reactjs - 从 node_modules 编译组件时反应语法错误
- react-native - 使用 react-native-textinput-effects 时的样式问题
- c# - 设计具有数百个具有不同属性值的子类型的基本类型的最佳方法
- java - 如何可靠地每秒调用函数 X 次?