質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

498閲覧

コーディングのエラーを解決したい

dokkanohito

総合スコア1

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2025/06/10 01:40

編集2025/06/10 03:44

イメージ説明### 実現したいこと
コーディングした箇所(主に下のほう)にエラーが沢山出てデバックしても開けないので、デバックしたら開いて正常に動作する状態にしたいです。

発生している問題・分からないこと

構文エラーや宣言が必要などのエラーが出ています。宣言を書いても消えなかったので何かが間違ったままなのだろうと思いました。

エラーメッセージ

error

1構文エラーです 2宣言が必要です 3エラー 2 メソッド本体や複数行ラムダの外側では使用できないステートメントです。 4エラー 6 'End If' の前には、対応する 'If' を指定しなければなりません。 5エラー 14 'MENUK' は宣言されていません。アクセスできない保護レベルになっています。 6エラー 17 コンマ、')'、または有効な式の継続文字が必要です。 7エラー 44 派生クラスで基底クラスのイベントを発生させることはできません。 8 9 10

該当のソースコード

VB.NET

1Imports 画面遷移図_メニュー定義構造体4.Form1 2 3Public Class UCTL 4 5 Property TagNo As Object 6 Property MenuCT As Object 7 8 Public MENUK() As MenuKoumoku = New MenuKoumoku() { 9 New MenuKoumoku(1, 0, "サブメニュー1", 1, 0), 10 New MenuKoumoku(2, 0, "サブメニュー2", 1, 0), 11 New MenuKoumoku(99, 0, "終了", 9, 99999), 12 New MenuKoumoku(101, 1, "サブメニューAA", 1, 0), 13 New MenuKoumoku(102, 1, "区切り", 2, 0), 14 New MenuKoumoku(103, 1, "サブメニューAB", 1, 0), 15 New MenuKoumoku(104, 2, "サブメニューBA", 1, 0), 16 New MenuKoumoku(105, 2, "サブメニューBB", 1, 0), 17 New MenuKoumoku(106, 2, "プログラムBC", 0, 23), 18 New MenuKoumoku(201, 101, "プログラムAAA", 0, 111), 19 New MenuKoumoku(202, 101, "プログラムAAB", 0, 112), 20 New MenuKoumoku(203, 103, "プログラムABA", 0, 121), 21 New MenuKoumoku(204, 103, "プログラムABB", 0, 122), 22 New MenuKoumoku(205, 104, "プログラムBAA", 0, 211), 23 New MenuKoumoku(206, 104, "プログラムBAB", 0, 212), 24 New MenuKoumoku(207, 105, "プログラムBBA", 0, 221), 25 New MenuKoumoku(208, 105, "プログラムBBB", 0, 222)} 26 27 28 29 30 Sub MenuShow() 31 Dim MenuNo(0 To 6) As TextBox 32 33 MenuNo(0) = MenuNo1 34 MenuNo(1) = MenuNo2 35 MenuNo(2) = MenuNo3 36 MenuNo(3) = MenuNo4 37 MenuNo(4) = MenuNo5 38 MenuNo(5) = MenuNo6 39 MenuNo(6) = MenuNo7 40 41 Dim MenuButton(0 To 6) As Button 42 43 MenuButton(0) = MenuButton1 44 MenuButton(1) = MenuButton2 45 MenuButton(2) = MenuButton3 46 MenuButton(3) = MenuButton4 47 MenuButton(4) = MenuButton5 48 MenuButton(5) = MenuButton6 49 MenuButton(6) = MenuButton7 50 51 Dim KugiriPanel(0 To 6) As Panel 52 53 KugiriPanel(0) = KugiriPanel1 54 KugiriPanel(1) = KugiriPanel2 55 KugiriPanel(2) = KugiriPanel3 56 KugiriPanel(3) = KugiriPanel4 57 KugiriPanel(4) = KugiriPanel5 58 KugiriPanel(5) = KugiriPanel6 59 KugiriPanel(6) = KugiriPanel7 60 61 Dim LP As Integer 62 LP = 0 63 64 'Dim MenuNo.Text As String 65 'Dim MenuNo.Visible As Boolean 66 'Dim MenuButton.Text As String 67 'Dim MenuButton.Visible As Boolean 68 'Dim MenuButton.Tag As Integer 69 'Dim KugiriPanel.Visible As Boolean 70 Do 71 MenuNo(LP).Text = "" 72 MenuNo(LP).Visible = False 73 MenuButton(LP).Text = "" 74 MenuButton(LP).Visible = False 75 KugiriPanel(LP).Visible = False 76 77 LP = LP + 1 78 Loop While LP < MenuNo.Length 79 80 LP = 0 81 Dim LP1 As Integer 82 LP1 = 0 83 MenuCT = 0 84 'Dim UCTL As UserControl 85 86 'Dim MENUK() As MenuKoumoku 87 88 89 Do Until LP1 >= MENUK.Length 90 If MENUK(LP1).Tagno = TagNo Then 91 If MENUK(LP1).Kubun = 0 Or 1 Then 'サブメニュー or プログラム 92 MenuCT = MenuCT + 1 93 MenuNo(LP).Text = MenuCT 94 MenuButton(LP).Text = MENUK(LP1).MenuName 95 MenuButton(LP).Tag = MENUK(LP1).Index 96 97 MenuNo(LP).Visible = True 98 MenuButton(LP).Visible = True 99 KugiriPanel(LP).Visible = False 100 101 LP = LP + 1 102 LP1 = LP1 + 1 103 104 ElseIf MENUK(LP1).Kubun = 9 Then '終了 105 MenuNo(LP).Text = 99 106 107 MenuButton(LP).Text = "終了" 108 MenuButton(LP).Tag = MENUK(LP1).Index 109 110 MenuNo(LP).Visible = True 111 MenuButton(LP).Visible = True 112 KugiriPanel(LP).Visible = False 113 114 LP = LP + 1 115 LP1 = LP1 + 1 116 117 ElseIf MENUK(LP1).Kubun = 2 Then '区切り線 118 MenuNo(LP).Visible = False 119 MenuButton(LP).Visible = False 120 KugiriPanel(LP).Visible = True 121 122 LP = LP + 1 123 LP1 = LP1 + 1 124 125 End If 126 Else 127 LP1 = LP1 + 1 128 End If 129 130 Loop 131 132 133 End Sub 134 135 'RaiseEvent Click MenuButton event 136 137 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles MenuButton1.Click 138 'MenuButton1.Tag = MenuButton_Click(sender As Object, e As EventArgs)UCTL.Index 139 'MenuButton1.Text = MENUK(1).MenuName 140 RaiseEvent Click() 141 End Sub 142 143 144 145 146 147 Private Sub MenuButton2_Click(sender As Object, e As EventArgs) Handles MenuButton2.Click 148 'MenuButton2.Tag = MenuButton_Click(sender As Object, e As EventArgs)UCTL.Index 149 'MenuButton2.Text = MENUK(2).MenuName 150 RaiseEvent Click() 151 End Sub 152 153 Private Sub MenuButton3_Click(sender As Object, e As EventArgs) Handles MenuButton3.Click 154 'MenuButton3.Tag = MenuButton_Click(sender As Object, e As EventArgs)UCTL.Index 155 'MenuButton3.Text = MENUK(3).MenuName 156 RaiseEvent Click() 157 End Sub 158 159 160 Private Sub MenuButton4_Click(sender As Object, e As EventArgs) Handles MenuButton4.Click 161 RaiseEvent Click() 162 End Sub 163 164 Private Sub MenuButton5_Click(sender As Object, e As EventArgs) Handles MenuButton5.Click 165 RaiseEvent Click() 166 End Sub 167 168End Class 169Public Class Form1 170 171 Public Structure MenuKoumoku 172 Public Index As Integer 173 Public Tagno As Integer 174 Public MenuName As String 175 Public Kubun As Integer 176 Public PRGID As Integer 177 178 Sub New(Index As Integer, Tagno As Integer, MenuName As String, Kubun As Integer, PRGID As Integer) 179 180 End Sub 181 182 End Structure 183 184 185 'Private Property UCTL1 As UserControl1 186 187 Dim sender As Object 188 Dim e As Object 189 Dim LP As Integer 190 Dim MessabeBox As MessageBox 191 Public Property MenuCT As Integer 192 193 194 195 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 196 UCTL1.TagNo = 0 197 UCTL1.MenuName.Text = "メインメニュー" 198 UCTL1.MenuCT = 0 199 UCTL1.MenuShow() 200 UCTL1.Visible = True 201 End Sub 202 203 Public UCTL As UserControl 204 205 Public Event MenuClick() 206 RaiseEvent MenuClick() 207 208 If Button_Click(sender As Object, e As EventArgs)UCTL.TagNo=0 Then 209 UCTL=UCTL2 210 Else 211 UCTL=UCTL3 212 End If 213 214 215 LP = 0 216 217 Do Until MENU(LP).Index=Button_Click(sender As Object, e As EventArgs)MenuButton.Tag 218 LP=LP+1 219 Loop 220 221 If MENUK(LP).Kubun=0 Then 222 MessageBox.Show("「menuname」のプログラムが選択されました。".OK) 223 224 Else If MENUK(LP).Kubun=1 Then 225 Sub MenuShow() 226 If MENUK(LP).Tag = 0 Then 227 UCTL2.Visible = True 228 UCTL3.Visible = False 229 UCTL2.TagNo = MenuButton_Click(sender As Object, e As EventArgs).Tag 230 UCTL2.MenuName = MenuButton_Click(sender As Object, e As EventArgs).Text 231 UCTL2.MenuCT = MenuButton_Click(sender As Object, e As EventArgs)UCTL1.MenuCT 232 233 234 Else 235 UCTL2.Visible = True 236 UCTL3.Visible = True 237 UCTL3.TagNo = MenuButton_Click(sender As Object, e As EventArgs).Tag 238 UCTL3.MenuName = MenuButton_Click(sender As Object, e As EventArgs).Text 239 UCTL3.MenuCT = MenuButton_Click(sender As Object, e As EventArgs)UCTL1.MenuCT 240 End If 241 End Sub 242 Else If MENUK(LP).Kubun=9 Then 243 MessageBox.Show("終了してもよろしいですか。","終了の確認",MessageBoxButtons.YesNo) 244 If Yes Click Then 245 Me.Close() 246 Else 247 MessageBox.Close() 248 End If 249 End If 250End Class

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Googleでイベントの発生やMeの構文について調べてそれらを参考に記述しましたがエラーが出ました。
ソースコードを調べながら自分なりにソースコードを変更しましたがエラーが出ました。
父親にソースコードを変更してもらいましたが、時間が少なかったのもあり、上記の状態で終わりました。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2025/06/10 02:37

提示されてるコードは1つのファイルに該当のコードがすべて書かれているのでしょうか? そうじゃなくUCTL.vbとForm1.vbの2つのファイルに書かれているのでしょうか? もし分かれているのであればそれを分かるように質問を編集したほうがいいと思います。 もし分かれていないのであればちょっと大変なことになりそうです。
meg_

2025/06/10 03:18

> コーディングのエラーを解決したい 質問タイトルはもっと具体的に書きましょう。 > プログラミング言語 質問タグは対象の言語を設定しましょう。今回の質問は”プログラミング言語”はこうあるべき、のような質問ではないですよね?
dokkanohito

2025/06/10 03:21

もっと具体的書いたら長過ぎになるかと思いました。何か良いお考えがあるのでしたらお願いいたします。 VB、VB.NETのタグが出てこなかったのでプログラミング言語のタグにしました。
fiveHundred

2025/06/10 03:40

> VB、VB.NETのタグが出てこなかったのでプログラミング言語のタグにしました。 どちらもありますよ。 (https://teratail.com/tags で「VB」と検索)
meg_

2025/06/10 05:12

"メニュー定義の構造体"を作成する課題ですか?メニュー定義の構造体を使用して何かプログラムを作成する課題ですか?
dokkanohito

2025/06/10 05:34

メニュー定義の構造体を使用してメニュー項目のアプリを作成する課題です。
YAmaGNZ

2025/06/10 11:50 編集

再度聞きます。 提示されているコードは1つのファイルに全部記述しているのですか? それともUCTL.vbとForm1.vbに分かれているのですか? またForm1のほうは関数ではなく直接ステートメントを書いていますがそのあたりは理解されていますか? また構造体MenuKoumokuの定義がForm1にあって使用しているのがUCTL内などスコープもおかしいことになっていますし問題が多すぎてどう指摘すればいいのか、指摘して理解してもらえるのかが不明です。
dodox86

2025/06/11 00:37

@質問者 dokkanohitoさん 質問の件名が「コーディングのエラーを解決したい」であるのと、過去のご質問から想像すると 「VB.NETの文法とか基本的なことはまだよくわかってないんだけど、とにかくコンパイルエラーを直したい。」と言うことなのであれば、そのように説明した方が良いですよ。たぶんその方が質問者、回答者共に負担が減ります。(質問者本人が理解できないであろうコンパイルエラーを直すだけとか、デバッグの代行は回答が避けられがちです) あと、当たり前なのですが、コンパイルエラーが解消されたからと言って実行したときに想定した通りに 動作するとは限りませんので、質問の範囲は狭めた方が良いです。たくさんのコメントをされると混乱されるでしょうから、私はこの辺で。
guest

回答1

0

VBは詳しくしりませんが、if文の中に Sub が入っているように見受けられます。
このような書き方は構文エラーになりそうです。

vb

1 Else If MENUK(LP).Kubun=1 Then 2 Sub MenuShow()

Sub として定義するならロジックの中には書けないので、外側に定義したうえで Call MenuShow() などで呼び出す形になるかと思います。

投稿2025/06/10 01:57

Eggpan

総合スコア3287

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dokkanohito

2025/06/10 02:10

Call MenuShow()とすると、構文エラーですというエラーが出てしまいました。
fiveHundred

2025/06/10 03:44

> Call MenuShow()とすると、構文エラーですというエラーが出てしまいました。 構文エラーが出るということは、書くところや順序が間違っています。 少なくとも「エラーが出た」だけでは、どのように書き換えたかすら分からないので、それが分かるように記載してください。
dokkanohito

2025/06/10 04:10

Else If MENUK(LP).Kubun=1 Then If MENUK(LP).Tag = 0 Then UCTL2.Visible = True UCTL3.Visible = False UCTL2.TagNo = selected.UCTL1.MenuButton.Tag UCTL2.MenuName = selected.UCTL1.MenuButton.Text UCTL2.MenuCT = UCTL1.MenuCT Call MenuShow() Else UCTL2.Visible = True UCTL3.Visible = True UCTL3.TagNo = selected.UCTL2.MenuButton.Tag UCTL3.MenuName = selected.UCTL2.MenuButton.Text UCTL3.MenuCT = UCTL1.MenuCT Call MenuShow() End If と記述したところ、Callの部分は構文エラーになりました
Eggpan

2025/06/10 06:32

MenuShowは別途定義してあるんですかね? 構文エラーの詳細がわからないと誰もわからないのでは無いかと思います 泥臭い方法ですが、ロジックをコメントアウトしたりすれば、どの部分がエラーなのかは特定は出来て、修正可能なのではないでしょうか
roytaman

2025/06/10 09:40 編集

こんにちは。 とりあえず以下の4箇所が意味不明なので、削除したらどうなりますか? 該当のソースコードの、 178行目 Sub New(Index As Integer, Tagno As Integer, MenuName As String, Kubun As Integer, PRGID As Integer) 180行目 End Sub 225行目 Sub MenuShow() 241行目 End Sub ※ほかにエラーが無ければUCTL1の未定義でエラーになりそうな気がしています。
dodox86

2025/06/11 00:23

@roytamanさん > 該当のソースコードの、 > 178行目 > Sub New(Index As Integer, Tagno As Integer, MenuName As String, Kubun As Integer, PRGID As Integer) > > 180行目 > End Sub これは構造体のコンストラクタの定義で、まだ中身が無く未完成なだけだと思われます。(まぁ、仮引数の名前と構造体メンバーの名前が同じで、追ってまた混乱を呼びそうではありますが) 質問者さんの過去のご質問からも考えて、「分からないけど、こうやってみたら?」と言うかんじの回答やコメントは、「やってみたけどダメでした、何故かは分りません」で終わってしまう気がするので少し心配です。基本的な文法を理解してから、少しずつコーディング、コンパイル、実行して確認、とのように進めるべきだと思うのですけれどね。
roytaman

2025/06/11 10:06

@dodox86 さま >これは構造体のコンストラクタの定義で、 なんと!ご指摘ありがとうございます。誤った認識をしておりました。大変勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問