
こんばんわ!
エクセルのVBAを使った管理システムを作ろうと思うのですが、色々考えて下記のような状態にしてみたのですが、ユーザーフォームをモードレスにするとスタック容量が足りなくなります。
Sub aaa_date()
If Range("a1") = 1 Then
bbb_date.Show
ElseIf Range("a1") = 2 Then
ccc_date.Show
ElseIf Range("a1") = 3 Then
ddd_date.Show
End If
Call aaa_date
End Sub
bbb_date(ユーザーフォーム)に↓
Private Sub CommandButton1_Click()
Range("a1") = 2
Unload Me
End Sub
Private Sub CommandButton2_Click()
Range("a1") = 3
Unload Me
End Sub
ccc_date(ユーザーフォーム)に↓
Private Sub CommandButton1_Click()
Range("a1") = 1
Unload Me
End Sub
Private Sub CommandButton2_Click()
Range("a1") = 3
Unload Me
End Sub
ddd_date(ユーザーフォーム)に↓
Private Sub CommandButton1_Click()
Range("a1") = 1
Unload Me
End Sub
Private Sub CommandButton2_Click()
Range("a1") = 2
Unload Me
End Sub
※bbb_dateとccc_dateとddd_dateはそれぞれにあるボタンを押すとA7セルの値を変更するようにして、aaa_dateでどのフォームを表示するのかを選択しています。
※実際にはもっと沢山ユーザーフォームがあります。
上記の状態では動作するのですが、エクセルの表に値を入力したいので、bbb_dateとccc_datとddd_datをvbModeless(モードレス状態)にすると、スタック容量が足りませんと出ます。
別のやり方でもよいですので、ユーザーフォームを切り替える良い方法があったらお願いします。

No.2ベストアンサー
- 回答日時:
はじめまして、
下記のプロシージャのCall aaa_date の部分は自分自身を呼び出しているので、
再帰呼び出しになるかな、VBAではエラーになる若しくはなりやすい処理の仕方です。
※実際にはもっと沢山ユーザーフォームがあります。
とのことですが、もしデザインが同一であれば雛形を作り中のデータなど
はコード内から変更します。フォームの表題であれば、.caption = 何何 となるはず。
メインフォーム
↓
項目を選択 → コード
↓ ↓ ユーザーフォームのデザインを選択
↓ ↓ 雛形のデータを変更
↓ ←
ユーザーフォーム表示
Sub aaa_date()
If Range("a1") = 1 Then
bbb_date.Show
ElseIf Range("a1") = 2 Then
ccc_date.Show
ElseIf Range("a1") = 3 Then
ddd_date.Show
End If
Call aaa_date
End Sub
No.1
- 回答日時:
>Sub aaa_date()
>If Range("a1") = 1 Then
>bbb_date.Show
>ElseIf Range("a1") = 2 Then
>ccc_date.Show
>ElseIf Range("a1") = 3 Then
>ddd_date.Show
>End If
>Call aaa_date
>End Sub
このコードは実際のコードですか?
どういう意図で書きました?
Sub aaa_date()の中で
Call aaa_date
自分自身をCallしていて、終了条件がありません。
bbb_dateやccc_dateをモードレスで開くと無限Loopですからスタック不足になります。
コードもそうですが
>※実際にはもっと沢山ユーザーフォームがあります。
どれくらい沢山なのかにもよりますが
TabStripやMultiPageコントロールを使うなどして仕様も見直したほうが良いのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
Excelで隣のセルと同じ内容に列...
-
PowerPointで表の1つの列だけ...
-
エクセルで、2種類のデータを...
-
2つのエクセルのデータを同じよ...
-
エクセルでオートフィルタのボ...
-
Excelで半角の文字を含むセルを...
-
エクセルのオートフィルタで最...
-
エクセル 同じ数字を他の列に自...
-
SUMIFとCOUNTIFを合わせたよう...
-
Excel 文字列を結合するときに...
-
Excelで中央揃えが出来ない?
-
重複行を削除して数値を合算し...
-
Excelのオートフィルタで非表示...
-
【スプレッドシート】指定の日...
-
Excelで、A列にある文字がB列...
-
エクセル(勝手に太字になる)
-
エクセルで文字が混じった数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
UWSCのCALLで呼び出すファイル...
-
以下の条件に合う関数を教えて...
-
EXCELで
-
機械設計・製図を極めた方、教...
-
VBAで組み合わせ算出やCOUNTIFS...
-
変数を引き継ぐには...
-
数IIBの数列の問題、、、
-
誰か解いてください!
-
URLの?以降の名称(~~/index...
-
エクセルのFINDで複数のワード...
-
ゴルフのティーチングプロにな...
-
tracertの結果
-
Excel 英大文字小文字を区別せ...
-
急いでいます。論文での数式の...
-
数学Ⅲ
-
Excel2010で日付の前ゼロを空白...
-
エクセル 特定の文字のみカウント
-
線形代数の次元の問題です。 ぜ...
-
格納したデータを配列のように...
おすすめ情報