
こんばんわ!
エクセルの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で質問しましょう!
関連するカテゴリからQ&Aを探す
人気Q&Aランキング
-
4
Excelで隣のセルと同じ内容に列...
-
5
関数を教えてください。
-
6
エクセルで二つの数字の小さい...
-
7
PowerPointで表の1つの列だけ...
-
8
エクセル 同じ値を探して隣の...
-
9
エクセルでオートフィルタのボ...
-
10
エクセル(勝手に太字になる)
-
11
VBAで文字列を数値に変換したい
-
12
Excelで2つの条件のうちどちら...
-
13
エクセルの並び変えで、空白セ...
-
14
50人を数回、グループ分けする...
-
15
Word2016でExcelデータを差込し...
-
16
エクセルで、2種類のデータを...
-
17
エクセルの項目軸を左寄せにしたい
-
18
SUMIFとCOUNTIFを合わせたよう...
-
19
2つのエクセルのデータを同じよ...
-
20
Excel関数:「0」を除いた標準...
おすすめ情報
公式facebook
公式twitter