繁体   English   中英

在“立即”窗口中使用“执行...结束为语句”,Excel VBA

[英]Execute With…End With Statement in Immediate window, Excel VBA

我正在尝试在即时窗口中执行With ... End With语句,

但我没有让它工作。

所以我的问题是如何在即时窗口中执行与With ... End With语句有关的多行代码?

我想在立即窗口中执行的代码:

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

当然,它可以在立即窗口中编写一行这样的代码(但这不能回答问题)。

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

试图在每行代码的末尾用“:”连接起来,但是没有用。

非常感谢您的帮助。

直接的工具窗口本质上是一个控制台。 您可以使用它来评估没有执行上下文的表达式,也可以在当前过程的上下文中以中断模式对表达式求值。

每个“行”几乎可以是任何可执行指令,但是

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

foo = 42

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

?TypeName(foo)
Integer

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

End
?TypeName(foo)
Empty

但是您不能声明变量:

Dim foo

编译错误:立即窗格中无效

With语句很特殊:它取消了对象引用,但从语法上讲,它是一个语句,需要以End With令牌终止:如果尝试在即时窗格中键入With Sheet1 ,则会出现编译错误,提示End With丢失-又因为在不久的窗格中的每个语句是一个独立的指令。

我们可以尝试内联它:

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

但是然后我们得到一个奇怪的“无效的监视表达式”错误:

编译错误:无效的监视表达式

不管原因如何,例如使用Dim语句声明变量,在即时窗格的上下文中定义With变量都没有意义,在下一个要执行的指令就是您碰到ENTER的任何指令:没有作用域 ,没有序列操作-一条指令立即运行,仅此而已:无论立即窗格的内容是什么,在您按Enter之前都不会运行其他指令。

您如何在立即窗口中执行多行代码[...]?

答案是,您不会-因为直接的工具窗口没有“代码行”的概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM