如何在VBA中的下一行继续代码

lak*_*esh 40 excel vba excel-vba

我想在VBA代码中键入数学论坛,其中有许多行.我想将它分成许多行.我该怎么做?

例如:

U_matrix(i, j, n + 1) = k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n) + (k * (a_xyt(xi, yi, tn) / hx ^ 2 + d_xyt(xi, yi, tn) / (2 * hx)))
Run Code Online (Sandbox Code Playgroud)

很长 想分开它.

试过这个:

U_matrix(i, j, n + 1) = k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n) 
_+ (k * (a_xyt(xi, yi, tn) / hx ^ 2 + d_xyt(xi, yi, tn) / (2 * hx)))
Run Code Online (Sandbox Code Playgroud)

但不工作..需要一些指导...

Sto*_*kke 67

在您使用的代码中使用换行符 _

例:

Dim a As Integer
a = 500 _
  + 80 _
  + 90

MsgBox a
Run Code Online (Sandbox Code Playgroud)

  • 有什么可用于数组初始化的东西吗?如果在“ _”之后有换行符,则会出现错误:Dim StringPairs As Variant <newline> StringPairs = [{“ abc”,“ def”},_ <newline> {“ 123”,“ 456”}] (2认同)
  • 应该是“_”,而不是“_”。 (2认同)
  • @JackeyOL 常规冒号 `:` 用于 VBA 中的冒号。例如 `Dim a As Integer: a = 500 + 80 + 90: MsgBox a` (2认同)

小智 22

(i, j, n + 1) = k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n) + _
(k * (a_xyt(xi, yi, tn) / hx ^ 2 + d_xyt(xi, yi, tn) / (2 * hx)))
Run Code Online (Sandbox Code Playgroud)

从ms支持

要继续从一行到下一行的语句,请键入一个空格, 后跟行继续符[键盘上的下划线字符(_)].

您可以在运算符,列表分隔符或句点中断行.


IIn*_*ble 12

在VBA(和VB.NET)中,行终止符(回车符)用于表示语句的结尾.要将长语句分成几行,您需要

在行要断开的位置使用行 - 延续字符(下划线(_)).下划线必须紧跟一个空格,然后紧跟一个行终止符(回车符).

(从如何:代码中断和组合语句)

换句话说:每当解释器遇到序列时,它都会被忽略,并在下一行继续解析.请注意,即使被忽略,行继续仍然充当标记分隔符,因此例如,它不能在变量名称的中间使用.您也无法使用行继续符来继续注释.<space>_<line terminator>

要将问题中的陈述分成几行,您可以执行以下操作:

U_matrix(i, j, n + 1) = _
     k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n) + _
     (k * (a_xyt(xi, yi, tn) / hx ^ 2 + d_xyt(xi, yi, tn) / (2 * hx)))
Run Code Online (Sandbox Code Playgroud)

(忽略前导空格.)

  • 除了回答之外,还支持解释。评论补充说,如果您尝试拆分字符串,还有一个额外的步骤。如果你想在两行中有一个字符串,你需要关闭引号;添加与号(&amp;)、空格和下划线(_);并用另一个引号开始新行。请记住包含一个尾随空格或前导空格,否则您最终会得到两个字符串连接的单词混搭。 (2认同)

小智 8

如果您想将此公式=SUMIFS(B2:B10,A2:A10,F2)插入到单元格 G2 中,我就是这样做的。

Range("G2")="=sumifs(B2:B10,A2:A10," & _

"F2)"
Run Code Online (Sandbox Code Playgroud)

要拆分一行代码,请添加与号、空格和下划线。