我15岁,我正在做一名开发人员实习生,我有点辛苦。
我有一个包含3列的表格,A是“数字” B是“百分比”,C是“值”。 “值”列为空白,我需要使用宏按钮来计算值。我已经尝试过了,但是这是错误的,因为我没有在VBA中进行计算:
Public Sub PushButton ()
Range("C2:C11").Formula = "=A2*B2/100"
Range("C2:C11").Value = Range("C1:C6).Value
End Sub
我该如何解决?
答案 0 :(得分:2)
您使用的是定义的范围,可以使用这样的动态范围来做到这一点:
Option Explicit
Sub PushButton()
Dim i As Long, LastRow As Long
With ThisWorkbook.ActiveSheet
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'first you need to find the last row on the active sheet
For i = 2 To LastRow 'then iterate through all the rows starting from 2, if row 1 has headers
.Cells(i, 3) = .Cells(i, 1) * .Cells(i, 2) / 100
Next i
End With
End Sub
如果您需要帮助来理解此代码,请告诉我。
编辑:说明
好吧,您首先要做的是Dimension所有变量,并帮助您在所有代码上方使用Option Explicit
。
我为循环确定了1个变量的大小,并为另一个变量确定了文本的最后一行。
要找到最后一行,您实际要执行的操作将是excel,请选择最后一行(1048576)以及将要显示文本的列(在本例中为1或“ A”列),然后按ctrl + Up excel而vba会将您带到文本的最后一个单元格。
为此,您可以使用Cells(Row, column)
来代替手动插入行1048576,而只需使用rows.count
,就可以了。
获得最后一行后,您将使用For i
循环进行迭代,这意味着对于名为i
的变量,该变量等于2(For i = 2
)To LastRow
(到最后一行)您计算得出),每次循环重新启动时,VBA都会在For
和Next
之间重复代码,向i
添加1个数字。
在这种情况下,只需在Cells(i, 3)
的行上添加一个数字,以便您可以根据其i
的值修改该单元格。
答案 1 :(得分:0)
我认为您需要质疑为什么Excel需要按需计算而不是像正常情况那样自动计算。失败的话有几个选择
您可以在ThisWorkbook
对象中使用以下内容将计算方法更改为“手动”
Option Explicit
Dim xlCalcMethod As XlCalculation
Private Sub Workbook_Open()
With Application
' Store users current method for when closing the workbook
xlCalcMethod = .Calculation
.Calculation = xlCalculationManual
End With
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Reset calculation
Application.Calculation = xlCalcMethod
End Sub
然后按下按钮时,使用以下代码计算放置在模块中的
Option Explicit
Public Sub Button_Click()
Application.Calculate
End Sub
另一个无需循环的选择是:
Sub CalculateRange()
Dim rng As Range
' Update for your Range
With ActiveSheet
Set rng = .Range("C2:C" & .Cells(.Rows.Count, "A").End(xlUp).Row)
End With
rng.Value2 = Evaluate(rng.Offset(0, -2).Address & "*" & rng.Offset(0, -1).Address & "/100")
End Sub
最后,您的想法完全可以接受VBA