【发布时间】:2020-06-04 14:32:31
【问题描述】:
我有这个模块来运行 工作表 B 中的一些事件。此模块中使用的所有 Range 均指 工作表 B 中的那些单元格。
但是,我想将运行此模块的按钮放在 工作表 A 中。是否有单行标题代码或要添加的内容,以便所有 Range 始终引用 Worksheet B 中的那些。请理解,或者,我可以将“Sheets(B).Range(#)”添加到每个 Range,但是,这看起来并不整洁。
以下是我的代码的 sn-p。感谢您的帮助。
Sub X_Iterate_Member()
Application.ScreenUpdating = False
On Error GoTo Error
Dim i As Integer, X As Integer
'------------------------Pre-guess X_value to be 0.5h-------------
For i = 4 To 11
Range("B" & i) = Range("E" & i).Value * 0.5
Next i
'------------------------Iteration Loop---------------------------
i = 4 'Reset i to be 4-th Row
Do While i < 11 ' Working on Row 4 to 11
Do While i < 11
If Range("B" & i) <> "" And Range("J" & i) <> 0 Then Exit Do
i = i + 1
Loop
If Range("B" & i) = "" Or Range("J" & i) = 0 Then GoTo Increment
Range("Q" & i).GoalSeek Goal:=0, ChangingCell:=Range("B" & i)
【问题讨论】:
-
用
With Sheet1-End With结构包围您的代码,并在所有Range引用前加上.以完全限定它们,即.Range(...而不是Range(...:- ) -
并更改您的
On Error GoTo Error行。Error是 VBA 中的保留字,不应用作跳转标签。叫它别的东西:On Error GoTo Error_Handling。另请注意,关于变量i和x,行数和列数的类型为Long而不是Integer。存在的行数超出了Integer的处理能力。