gpt4 book ai didi

vba - 使用 vba 的引用问题

转载 作者:行者123 更新时间:2023-12-04 20:11:38 25 4
gpt4 key购买 nike

我有 3 列,带有标题 A B & C如图所示,我想检查 A 列中的值是否等于 B 列的 10% ,如果是,我想将其设置为列 C 的值,如果没有,我想在 B 列中获得 10% 的值.我在sheet1我想在 sheet2 中设置一个 VBA 按钮运行代码。

这是代码:

Sub Macro1()
Dim ws As Worksheet, lastrow As Long
Set ws = Worksheets("sheet1")
ws.Activate
ActiveCell.Formula = "=IF(A2=B2*0.1, A2, B2*0.1)"
lastrow = Range("A" & Rows.Count).End(xlUp).Row
Range("C2").AutoFill Destination:=Range("C2:C" & lastrow), Type:=xlFillDefault
End Sub

我的问题是如果我将鼠标指向 C2sheet1我只是运行 vba 代码,它会工作。如果我在 sheet2并按下按钮,它不起作用,它只是不显示任何数据。有没有办法将值设置为列 C根据我的标准?

worksheet

最佳答案

使代码在 sheet1 上工作独立于事件表,您需要申请.Range方法精确到 Worksheets("sheet1")目的。试试下面的代码:

Sub Macro1()

Dim lastrow As Long

With Worksheets("sheet1")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row
If lastrow = 1 Then
MsgBox "No data"
Exit Sub
End If
.Range("C2:C" & lastrow).Formula = "=IF(A2=B2*0.1, A2, B2*0.1)"
End With

End Sub

为什么不更直接:总是将值设置为列 C等于 B 列的 10% ?结果将是相同的。
Sub Macro1()

Dim lastrow As Long

With Worksheets("sheet1")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row
If lastrow = 1 Then
MsgBox "No data"
Exit Sub
End If
.Range("C2:C" & lastrow).Formula = "=B2*0.1"
End With

End Sub

关于vba - 使用 vba 的引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40411623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com