
No.6ベストアンサー
- 回答日時:
>「同じ範囲内で宣言が重複しています」という「コンパイルエラー」がでました。
#5の方の言われる通りです。
変数の宣言は、普通最初にします。
宣言する前に使っているので、
自動的に宣言したことになり、
その後で、Staticの宣言があるので、
2度宣言していると解釈されます。
#4のサンプルは、ちょっと不親切だったかもしれません。
すみません。m(_ _)m
> #4のサンプルは、ちょっと不親切だったかもしれません。
> すみません。m(_ _)m
とんでもない!
そんなことも知らないわたしがお馬鹿なんですよ。
ありがとうございました。
以下でうまく行きました。
ただ、Sub aaa()からでないとSub 番号てすと(Optional reset As Boolean = False)が動かせないのですが(マクロの一覧に無くて)、どうしてでしょう?
何度も質問してすみません。
Sub 番号てすと(Optional reset As Boolean = False)
Static g As Integer
If (reset) Then g = 0: Exit Sub
MsgBox "今のG= " & g
g = g + 1
MsgBox "次のG= " & g
End Sub
Sub zzzzzzzz()
Call 番号てすと(reset:=True)
End Sub
Sub aaa()
Call 番号てすと
End Sub
No.7
- 回答日時:
>Sub aaa()からでないとSub 番号てすと(Optional reset As Boolean = False)が動かせないのですが(マクロの一覧に無くて)、どうしてでしょう?
マクロの一覧には引数のあるSub(プロシジャー:手続き)は、表示されない様です。
一覧から選ぶだけなので、引数が指定できないからだと思います。(ちょっと余計なお世話なところもありますけど)
なので、現在やられているように、間接的に呼び出すようにして、メニューに表示するようにするしかないと思います。
No.5
- 回答日時:
順序が違いますね。
Sub 番号てすと(Optional reset As Boolean = False)
Static g As Integer ←最初に置く
If (reset) Then g = 0
MsgBox "今のG= " & g
g = g + 1
MsgBox "次のG= " & g
End Sub
ありがとうございました。
こんどは大丈夫でした。
でも、Sub 番号てすと(Optional reset As Boolean = False)
が、マクロの一覧に出てこないのはどうしてでしょう?
No.4
- 回答日時:
関数の中に確保したstaticな変数は、関数の中だけで有効なので、外からリセットすることはできません。
なので、関数呼び出しの際に、変数の値によってリセットするようにすれば良いかも知れません。
Sub 番号てすと(Optional reset As Boolean = False)
If (reset) Then g = 0
通常の処理
end sub
call 番号てすと
の様に通常どおり呼び出した場合は、普通に実行されます。
call test(reset:=true)
リセットを指定して関数を呼び出すと、gを初期化してから通常の処理を実行します。
この回答への補足
Sub 番号てすと(Optional reset As Boolean = False)
If (reset) Then g = 0
Static g As Integer
MsgBox "今のG= " & g
g = g + 1
MsgBox "次のG= " & g
End Sub
Sub zzzzzzzz()
Call 番号てすと(reset:=True)
End Sub
「同じ範囲内で宣言が重複しています」という「コンパイルエラー」がでました。
No.2
- 回答日時:
それは、Static 変数自体を使うことが違っているからです。
プロシージャ・レベルではなく、モジュールレベルで、変数を置き、
例:
Dim g As Integer
Sub 番号てすと()
MsgBox "今のG= " & g
g = g + 1
MsgBox "次のG= " & g
End Sub
として、
例えば、
Sub HennsuClear()
g = 0
End Sub
とします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
固定電話着信履歴 181 ・・・・...
-
823で始まる電話番号
-
電話をかけるのに、違う番号を...
-
電話番号 +817673467911という...
-
すべて「ひとつ・・・」ではじ...
-
エクセル ADO Filterでは一気...
-
至急お願いいたします! ゆう...
-
フリーダイヤルのけた数
-
81・・・・・から始まる電話...
-
同じ商品なのに、JANコード...
-
不気味な番号
-
66から始まる番号
-
1から5までの番号が1つずつ書か...
-
P/Nとは?
-
ファイル名に「1-1、1-2...
-
その曲が弾けるようになるまで...
-
パチンコの抽選入場って、番号...
-
MS Wordで図表番号を1から振り...
-
公衆電話番号
-
UL規格のイエローカード番号...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
999で始まる電話番号から着信が...
-
電話をかけるのに、違う番号を...
-
81・・・・・から始まる電話...
-
固定電話着信履歴 181 ・・・・...
-
至急お願いいたします! ゆう...
-
同じ商品なのに、JANコード...
-
体育の時の4列横隊ってどーやっ...
-
823で始まる電話番号
-
フリーダイヤルのけた数
-
電話番号 +817673467911という...
-
if関数を使って割引率をだす
-
すべて「ひとつ・・・」ではじ...
-
pcでGoogleアカウントを作ろう...
-
1から5までの番号が1つずつ書か...
-
携帯番号変える時は、それなり...
-
昔のスマホのLINEからプッシュ...
-
内線番号一覧が分かりづらい
-
不気味な番号
-
P/Nとは?
-
FAX番号の英語表記とは?
おすすめ情報