[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『変数への初期値の設定方法』(京子)
お世話になります
Sub hensu()
Dim a As Long, b As Long, c As Long, d As Long, e As Long
Dim f As Long, g As Long, h As Long, i As Long, j As Long
a = 1 b = 1 c = 1 d = 1 e = 1 f = 10000 g = 10000 h = 10000 i = 10000 j = 10000
'各変数を使用しての処理
End Sub
変数の初期値を設定する際、上の例の様に 変数の個数は10個で "1" とするのが5個、10000とするのが5個の場合に まとめて設定する様な方法はありますでしょうか? もしありましたら教えて下さい 宜しくお願いします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
できないですね。残念ながら。
一括Set といった関数があればいいですね。なので作っちゃいましょう。
Sub Test() Dim a As Long, b As Long, c As Long, d As Long, e As Long Dim f As Long, g As Long, h As Long, i As Long, j As Long Dim x As String, y As String, z As String
一括Set 1, a, b, c, d, e 一括Set 1000, f, g, h, i, j 一括Set "こんにちは", x, y, z
MsgBox a & vbLf & b & vbLf & c & vbLf & d & vbLf & e MsgBox f & vbLf & g & vbLf & h & vbLf & i & vbLf & j MsgBox x & vbLf & y & vbLf & z
End Sub
Sub 一括Set(ParamArray arg()) Dim d As Variant Dim i As Long
d = arg(LBound(arg)) For i = LBound(arg) + 1 To UBound(arg) arg(i) = d Next End Sub
(β) 2017/01/04(水) 23:47
変数の初期値を設定する際、上の例の様に 変数の個数は10個で "1" とするのが5個、10000とするのが5個の場合に まとめて設定する様な方法はありますでしょうか?
んと、
その前にホントに10個も変数を用意しなければいけないか、
もう一度、推敲してみてください。
もし、
Sub test()
Dim a As Long, b As Long, c As Long, d As Long, e As Long Dim f As Long, g As Long, h As Long, i As Long, j As Long
a = 1 b = 1 c = 1 d = 1 e = 1 f = 10000 g = 10000 h = 10000 i = 10000 j = 10000
Do Until a = f Range("A1").Value = a a = a + 1 Loop
Do Until b = g Range("B1").Value = b b = b + 1 Loop
Do Until c = h Range("C1").Value = c c = c + 1 Loop
End Sub
みたいなことをしたいなら、
Sub test2()
Dim i As Long, j As Long Dim c As Range
Set c = Range("A1") For i = 1 To 5 For j = 1 To 10000 c.Value = i Next Set c = c.Offset(, 1) Next End Sub
のように纏められます。
その名の通り「変数」なのですから、
都度都度、使いまわして色々な値を必要に応じて変えてやるように、
柔軟に考えましょう^^
また、どうしても10個ないとだめだけど、
メインのプロシージャに長々と代入式を羅列するのが、
読みにくいと思うなら、別のプロシージャに追い出すのも
ありかなぁと思います。
Sub test()
Dim a As Long, b As Long, c As Long, d As Long, e As Long Dim f As Long, g As Long, h As Long, i As Long, j As Long
Get変数初期化 a, b, c, d, e, f, g, h, i, j
Stop '続いて何かの処理 End Sub
Function Get変数初期化(a As Long, b As Long, c As Long, d As Long, e As Long, _
f As Long, g As Long, h As Long, i As Long, j As Long) a = 1 b = 1 c = 1 d = 1 e = 1 f = 10000 g = 10000 h = 10000 i = 10000 j = 10000 End Function
ただ、タイピングの量を減らしたいだけなら、諦めてください。
いずれにしても、一般論で話しても有意義とは思えません。
どんなことをやろうとしているのかで、
効率的な書き方は変わるので、
やろうとしていることを明確にした方がいいと思います。
(まっつわん) 2017/01/05(木) 10:43
βさん まっつぁんさん 回答有難う御座います ん〜 通常の方法では無理なのですね。了解です 諸々事情があり2種類の初期値設定を行う変数の数は実際には10個ではなく23個なんです コードの中で縦にズラーッと並び 不都合は無いのですが、ひょっとして記述方法を私が知らないだけ? と思っての質問でした。 (京子) 2017/01/05(木) 23:33
a = 1: b = 1: c = 1: d = 1: e = 1 といったマルチステートメントは可能です。 可読性が低下するという意見もありますが。 (γ) 2017/01/05(木) 23:59
こんばんわ。
変数名は全て別の名前にしないといけないんですか? 配列を使用出来るなら、以下のような記述で格納できると思いますが、
For i = 1 To 10 If i < 6 Then a(i) = 1 Else a(i) = 10000 End If Next i
とか以下とか
For i = 1 To 5 a(i) = 1 Next i For i = 6 To 10 a(i) = 10000 Next i
そもそも同じ中身の変数は1つにして(a=1 と b=10000 の2つだけにして)使い回ししたらダメなんですか? コードの中身を質問者さん以外の人も見て何か指摘されるとかですか?
( sy) 2017/01/06(金) 00:19
配列利用が不可なら、一括Setが良いと思うけど、どこが不満ですか?
(γ) 2017/01/06(金) 00:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.