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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
全ての変数を一気にリセットする方法はありますか?
PowerPoint(パワーポイント)
-
DATE型変数を初期化する方法
Visual Basic(VBA)
-
VBAでネットワークコンピュータのファイルにアクセスできない(XL2000)
Access(アクセス)
-
-
4
関数外からstatic変数を再度初期化できるのでしょうか?
C言語・C++・C#
-
5
エクセルVBAでシートモジュールでのパブリック変数
Excel(エクセル)
-
6
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
9
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
固定電話着信履歴 181 ・・・・...
-
81・・・・・から始まる電話...
-
電話番号 +817673467911という...
-
電話をかけるのに、違う番号を...
-
至急お願いいたします! ゆう...
-
体育の時の4列横隊ってどーやっ...
-
P/Nとは?
-
すべて「ひとつ・・・」ではじ...
-
くら寿司の自動受付で整理番号...
-
66から始まる番号
-
銀行で番号札は?
-
シューベルトの曲についてるD番...
-
メルカリやラクマができず 体調...
-
携帯番号変える時は、それなり...
-
AccessのIIf関数でエラーが出...
-
番号の下4桁だけ変更可能でし...
-
iPhoneSE2にIMEIとIMEI2という...
-
メルカリをやるために番号変え...
-
暗証番号の決め方?
-
国際電話番号の前の+(プラス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
固定電話着信履歴 181 ・・・・...
-
81・・・・・から始まる電話...
-
電話番号 +817673467911という...
-
電話をかけるのに、違う番号を...
-
フリーダイヤルのけた数
-
体育の時の4列横隊ってどーやっ...
-
国際電話番号の前の+(プラス...
-
メルカリやラクマができず 体調...
-
携帯番号変える時は、それなり...
-
66から始まる番号
-
至急お願いいたします! ゆう...
-
不気味な番号
-
P/Nとは?
-
同じ商品なのに、JANコード...
-
すべて「ひとつ・・・」ではじ...
-
迷惑電話
-
FAX番号の英語表記とは?
-
メルカリをやるために番号変え...
-
内線番号一覧が分かりづらい
-
パワーポイントは、ページ番号...
おすすめ情報