web-dev-qa-db-ja.com

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)))

とても長いです。分割したいです。

これを試しました:

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)))

しかし、動作していません。これに関するガイダンスが必要です。

39
lakesh

コードに改行を含めるには、_を使用します

例:

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

MsgBox a
66
Stokke
(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)))

msサポートから

ステートメントを1行から次の行に継続するには、スペースに続けて行継続文字[キーボードの下線文字(_)]を入力します。 。

演算子、リスト区切り文字、またはピリオドで改行できます。

22
Helix Quar

VBA(およびVB.NET)では、行末記号(キャリッジリターン)を使用してステートメントの終了を通知します。長いステートメントを複数の行に分割するには、次のことが必要です。

改行したいポイントで、アンダースコア(_)である行継続文字を使用します。 アンダースコアの直前にはスペースが必要で、直後には行末記号(キャリッジリターン)が必要です。

(From How to:Break and Combine Statements in Code )から

つまり、インタープリターがシーケンス<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)))

(先頭の空白は無視されます。)

12
IInspectable

この式=SUMIFS(B2:B10,A2:A10,F2)をセルG2に挿入する場合は、次のようにします。

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

"F2)"

コードの行を分割するには、アンパサンド、スペース、アンダースコアを追加します。

1
Curt Grasso