Execute With...End With Statement in Immediate window, Excel VBA

Execute With...End With Statement in Immediate window, Excel VBA

我正在尝试立即执行 With...End With 语句 Window,

但我无法正常工作。

所以我的问题是如何在立即执行有关 With...End With 语句的多行代码 window?

我试图立即执行的代码 window:

With Date_Per_Month.Range("A2:H32")
.Offset(1).Resize(.rows.Count - 1, .Columns.Count - 1).select
end with

当然,直接写一行这样的代码是可行的window(但这并不能回答问题)。:

Date_Per_Month.Range("A2:H32").Offset(1).Resize _(Date_Per_Month.Range("A2:H32").Rows.Count-1,Date_Per_Month.Range("A2:H32").Columns.Count-1).Select

尝试在行尾用“:”连接每个代码行,但没有成功。

非常感谢任何帮助。

即时工具窗口本质上是一个控制台。您可以使用它来计算没有执行上下文的表达式,或者在当前过程的上下文中以中断模式计算。

每个 "line" 可以是 [几乎] 任何可执行指令,但是

您可以分配给一个不存在的变量...

foo = 42

...然后此标识符存在于 "immediate" 上下文中,您可以在后续语句中使用它:

?TypeName(foo)
Integer

...直到您明确重置该上下文:

End
?TypeName(foo)
Empty

但是你不能声明变量:

Dim foo

A With 语句是特殊的:它隐藏了一个对象引用,但在语法上它是一个 block 语句,需要用 End With 标记终止:如果您尝试在直接窗格中键入 With Sheet1,您将收到一个编译错误,指出缺少 End With - 同样是因为直接窗格中的每个语句都是独立的指令。

我们可以尝试内联它:

With Sheet1 : .Cells(1, 1).Value = 42 : End With

但随后我们得到一个奇怪的 "invalid watch expression" 错误:

无论出于何种原因,就像使用 Dim 语句声明变量一样,定义 With 变量在直接窗格的上下文中没有任何意义,其中 [=64= 的下一条指令] 是您碰巧按下 ENTER 的任何指令:没有 scope,没有操作序列 - 指令 运行s 立即,仅此而已:无论直接窗格的内容是什么,在您点击 ENTER 之前,其他指令都不会 运行。

how do you execute multiple lines of code [...] in the Immediate window?

答案是,你不需要 - 因为即时工具窗口没有 "lines of code".

的概念