![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こんばんわ!
エクセルの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(モードレス状態)にすると、スタック容量が足りませんと出ます。
別のやり方でもよいですので、ユーザーフォームを切り替える良い方法があったらお願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?8acaa2e)
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で
-
VBA スタック容量が足りない・...
-
数学Ⅲ
-
不正アクセスされているようです。
-
数IIBの数列の問題、、、
-
エクセルのFINDで複数のワード...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
お店に入るために行列に並んで...
-
Excel関数で、範囲内の最後のセ...
-
Excelで隣のセルと同じ内容に列...
-
エクセルの偶数行(奇数行)の抽出
-
エクセルでオートフィルタのボ...
-
エクセルでの複数条件下での標...
-
エクセル 文字数 多い順 並...
-
エクセルのオートフィルタで最...
-
エクセルで最初のスペースまで...
-
エクセルの項目軸を左寄せにしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
Excel 英大文字小文字を区別せ...
-
VBAで組み合わせ算出やCOUNTIFS...
-
数IIBの数列の問題、、、
-
急いでいます。論文での数式の...
-
不正アクセスされているようです。
-
エクセル 特定の文字のみカウント
-
数学Ⅲ
-
Excel ユーザーフォームのオプ...
-
UWSCのCALLで呼び出すファイル...
-
VBA スタック容量が足りない・...
-
直交補空間に関する問題です。
-
EXCELで
-
OM-4の今の値段
-
この問題の解き方と答えを教え...
-
1次システムのゲイン特性について
-
線形代数の次元の問題です。 ぜ...
-
Excel 関数ifについて
-
MATLAB &OCTAVEの文字列操作
-
ゴルフのティーチングプロにな...
おすすめ情報