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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

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

Q&A

解決済

2回答

14936閲覧

VisualStudio でVBを「開始」ボタンクリックしてもウィンドウが表示されない(実行ファイルが実行されない?)

ichiru_seta

総合スコア1

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

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

0グッド

0クリップ

投稿2020/09/20 06:15

編集2020/09/20 07:10

前提・実現したいこと

はじめまして。プログラミング学習初心者です。
Visual Studio Community 2019 をインストール、ネット上のe-Learning講座を見ながら学習しています。

学習内容は、おおよそ次の通りです。
【手順】
1. VisualStudioを立ち上げ、「空のプロジェクト(VBの.NET Framework)」として作成開始。
2. Form1に対して以下のコントロールを追加。
・ボタン2つ
・ラベル1つ
・テキストボックス1つ
3. 各々のコントロールに対して、プロパティを設定
・ボタン、テキストボックス、ラベルにTabindexを設定
・ラベル以外のコントロールに対し、Maximumsize,Minimumsizeを設定
・Form1に対し、(Name)にfrmSub を設定

ここまでを行い、「実行」ボタンをクリックすると、いつもならウィンドウが表示され、各種UIが設定どおりに居どうすることが確かめられるのですが、
今日やってみたら表示されず、出力ウィンドウに、ステータスだけ表示され、ウィンドウは表示されませんでした。
どう設定すれば、実行結果がウィンドウに表示されますでしょうか?
(設定したプロパティやコントロールが、ちゃんと追加され、想定した挙動になるかを確かめながら進めていきたいため)

もしかしたら、何かの設定を変えてしまったかもしれませんが、現時点の記憶では該当する操作は行っていない認識です。

該当のソースコード

VB.NET

1Module mainSub 2 Sub Main() 3 4 End Sub 5End Module 6 7 8Public Class frmSub 9 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtComment.TextChanged 10 11 End Sub 12 13 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 14 15 End Sub 16 17 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 18 19 End Sub 20End Class

試したこと

そもそもなのですが、上記のコードのうち、講座で案内されたものは「Public Class frmSub ~ End Class」までです。
それを実行したら、
「ビルドエラーが発生しました。続行して最後に成功したビルドを実行しますか?」
とアラートが出たので、「いいえ」ボタンをクリック。

エラー一覧を見たら「Sub Mainが'(サンプルコードのプロジェクト名)'に見つかりませんでした」
と記載があったので、フォームに対するコードウィンドウを開き、Module mainModule ~ End Module を追記しました。

補足情報(FW/ツールのバージョンなど)

【ツールのバージョン】
Microsoft Visual Studio Community 2019
Version 16.7.3

【実行環境】
OS 名 Microsoft Windows 10 Pro
バージョン 10.0.19041 ビルド 19041

【】
VisualStudio2019を立ち上げ、新規プロジェクト>空のプロジェクト(.NET Framework)[Visual Basic]で作成。
デザインウィンドウに「Form1.vb」が表示されている状態で、フォーム内にテキストボックス、Label、Buttonを配置。フォームのプロパティ>(Name)を「frmSub」に変更。

という操作を行っていました。
この直後、「実行」ボタンクリックすると、以下のメッセージが出力ウィンドウに表示されました。

'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\advapi32.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\msvcrt.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\sechost.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\rpcrt4.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\shlwapi.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\kernel.appcore.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\version.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\user32.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\win32u.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\ucrtbase_clr0400.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\vcruntime140_clr0400.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\gdi32.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\gdi32full.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\msvcp_win.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\ucrtbase.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\imm32.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\combase.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\combase.dll' がアンロードされました
'Udemy_practice.exe' (Win32): 'C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\a3618d8dcd1f21a09718a75880e4b193\mscorlib.ni.dll' が読み込まれました。
'Udemy_practice.exe' (CLR v4.0.30319: DefaultDomain): 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\ole32.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\combase.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\bcryptprimitives.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\uxtheme.dll' が読み込まれました。
'Udemy_practice.exe' (CLR v4.0.30319: DefaultDomain): 'C:\Users\v08cl\source\repos\Udemy_practice\Udemy_practice\bin\Debug\Udemy_practice.exe' が読み込まれました。シンボルが読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll' が読み込まれました。
'Udemy_practice.exe' (Win32): 'C:\Windows\SysWOW64\oleaut32.dll' が読み込まれました。
スレッド 0x31e8 はコード 0 (0x0) で終了しました。
スレッド 0x2a64 はコード 0 (0x0) で終了しました。
スレッド 0x3224 はコード 0 (0x0) で終了しました。
スレッド 0x3914 はコード 0 (0x0) で終了しました。
スレッド 0x372c はコード 0 (0x0) で終了しました。
スレッド 0x3c98 はコード 0 (0x0) で終了しました。
スレッド 0x3b98 はコード 0 (0x0) で終了しました。
スレッド 0x1624 はコード 0 (0x0) で終了しました。
スレッド 0x3d4 はコード 0 (0x0) で終了しました。
プログラム '[5816] Udemy_practice.exe' はコード 0 (0x0) で終了しました。

上記の通り、出力ウィンドウに表示された、という状況です。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/09/20 07:01

「UdemyのVB.NET講座」と言ったら閲覧者はみんなわかるということはないので(少なくとも自分は初めて聞きました)、それを全く知らない人にもあなたの聞きたいことが分かるように質問を書き直していただけませんか。
ichiru_seta

2020/09/20 07:12

SurferOnWwwさま、ご指摘いただきありがとうございます。 早速、質問内容の文面を書き直しさせていただきました。 また、学習内容をご理解いただけるよう、行った手順も追記してみました。 以上、ご報告申し上げます。
退会済みユーザー

退会済みユーザー

2020/09/20 07:40 編集

問題のプロジェクトはとりあえず置いといて、新たにプロジェクトを作って同じように設定してみるということはやったのですか? それで問題が無ければ「もしかしたら、何かの設定を変えてしまった」ということでしょうし、それでもだめなら Visual Studio とか環境の問題が怪しいとか(ファイルか何かが壊れたとか)、何らかの見当がつくのではないですか? ただ、そこから原因をピンポイントでも見つけて対処するのは難しそうですが・・・ ところで、Windows Forms アプリを作っているようですが、Visual Studio の「Windows フォームアプリケーション (.NET Framework) 」を使わないのは何か理由があるのですか?
ichiru_seta

2020/09/20 08:31

自分が設定したことでおかしくしていたかも、と思い 別のWindowsアカウントを作成し、Visual Studioを再インストールして新たなプロジェクトを同じ手順で作成しました。 実行結果は、「ビルドエラーが発生しました、続行して最後にビルドを実行しますか?」 とダイアログが出ました。 また、ご質問の「Windowsフォームアプリケーション」を使わない理由ですが、当該の講座の手順が、空のプロジェクト>追加:Windowsフォーム を選択し、各コントロールを追加となっていましたもので。。。
退会済みユーザー

退会済みユーザー

2020/09/20 09:28

> 当該の講座の手順が、空のプロジェクト>追加:Windowsフォーム を選択し、各コントロールを追加となっていましたもので。。。 何故その講座が初心者に茨の道を歩かせるようなことをするのか分かりませんが、Windows Forms アプリを作るなら「Windows フォームアプリケーション (.NET Framework) 」を選択するのがお勧めです。一度やってみてはいかがですか? 今回のスレッドの悩みは一気に解消するかもしれません。
ichiru_seta

2020/09/20 09:30

SurferOnWww さんの最後の問いかけの意味が分かりました、指示された手順通りとはいえ、空のプロジェクトからフォーム追加をする、という手順だと、プロジェクトのプロパティ「スタートアップフォーム」が設定されない、だから実行しても「ビルドエラー」になるんですね。。 基本を勉強してまいります。 お忙しいところ、ご教示いただきありがとうございます。 また困ったときは、ここで質問させていただきますので、今後ともよろしくお願いいたします。
ichiru_seta

2020/09/20 09:31

あ、すみません、入れ違いでコメントいただきありがとうございます! 実行したら、うまくいきました!
guest

回答2

0

ベストアンサー

あなたが書いたSub Main()には、「FrmSubのオブジェクトを生成してそれを実行する」に相当するコードが書かれていないため、実行すると何も表示されずに終了します。

VB.NETで作成するWinFormアプリケーションでは、フォームがひとつだけの場合に、(わざわざSub Main()を書かなくても)実行できるような仕組みが導入されており、あなたが視聴した講座でSub Main()を追加するなどの説明がなかったのはそのためでしょう。「Windowsフォームアプリケーション」を選択して作成したプロジェクトではそこらへんが設定済みの状態でコードを書き始められます。

しかし、あなたが視聴した講座では、なぜか「空のプロジェクト」を選択して、後からフォームを追加しています。すると、かならず、

エラー一覧を見たら「Sub Mainが'(サンプルコードのプロジェクト名)'に見つかりませんでした」

というエラーが発生します。この問題をフォローしていないのは、その講座の手抜きにほかなりません

原因ははっきりしていて、

  • プロジェクトのプロパティのスタートアップフォームが設定されていない

ことです。

対策としては、Sub Main()を自分で書くよりも、ソリューションエクスプローラーのリストから、プロジェクトのプロパティを開いて、「スタートアップフォーム」をFrmSubに設定するほうが簡単ですね。すると、実行する際にFrmSubのコードにSub Main()に相当するコード(FrmSubを生成して実行)が自動的に挿入されます。

投稿2020/09/20 07:36

編集2020/09/20 08:58
Daregada

総合スコア11990

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

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

ichiru_seta

2020/09/20 08:36

ご教示いただき、ありがとうございます。 ご指摘の原因ですが 「2つ目のフォームを追加した」ですが、空のプロジェクトを作成して以降は、ソリューションエクスプローラー>右クリックで追加>Windowsフォーム、を選択して作成いたしました。 追加以前のソリューションエクスプローラーには、フォームは無く、 追加以降出来上がったフォーム”Form1”をソリューションエクスプローラーですべて表示、にして確認してみましたが、それ以外のフォームは、ソリューションエクスプローラーでは見当たらなかったので、出来上がったフォームは一つ、と考えます。 自分で書いてしまったSub Main()がまずかったようですので、ご教示いただいた通り、「スタートアップフォームをfrmSubに設定してみます。 この後、夕食を作るので少し時間がかかりますが、実行してみた結果と合わせて、後程ご報告いたします。
Daregada

2020/09/20 09:00 編集

おっと、質問が修正されていたのを見ていなかった。 通常、VB.NETで新しくWinFormプロジェクトを作成するときは、「Windowsフォームアプリケーション」というのを選択しまして、そうすると最初のフォームがすでに含まれた状態でプロジェクトが新規作成されます。「スタートアップフォーム」も設定ずみです。 いっぽう、「空のプロジェクト」を選択して、後からフォームを追加すると、「スタートアップフォーム」は空欄のままなので、「Sub Mainが'(サンプルコードのプロジェクト名)'に見つかりませんでした」というエラーが表示されます。対応策は、回答に書いたとおりです。
ichiru_seta

2020/09/20 09:25

なるほどなるほど! 私も、なぜ空、と「Windowsフォームアプリケーション」という二つがあるのか疑問でしたが、そういう違いがあったんですね。 とても分かりやすいご教示、ありがとうございます! ちょっと、家事の手を休めて試しましたら、実行ボタンクリックで実行ファイル作成、ウィンドウが表示されました。 これからは、特別な理由がない限りは「Windowsフォームアプリケーション」を選択して進めてまいります。 ※VisualStudioの基本操作、のレベルだったかもですね。全くその辺のマニュアルを拾い読みしてもうまく情報が得られなかったので、先に使い方について学んで参ります
退会済みユーザー

退会済みユーザー

2020/09/20 23:30

> VisualStudioの基本操作、のレベルだったかもですね。 VB.NET だからということもあるかもしれませんね。VB.NET の場合「Windowsフォームアプリケーション」で作っても生成されるコードのどこにもエントリーポイントが見つかりません。コンパイラがユーザーの見えないところで自動的に生成するのだそう。そう言う「小さな親切余計なお世話」的なところが多々あって、余計に分かりにくくなっているようです。 VB.NET / C# 選択の余地があるなら、将来性に疑問がある VB.NET ではなくて、C# を選択するのがよさそうです。 VB.NET は初心者に向いているとか言われているようですが、私に言わせてもらえればウソです。
Daregada

2020/09/21 02:29

C#だとProgram.csにMain()があって、フォームを生成して実行するコードが目に見える形で用意されますからね。
ichiru_seta

2020/09/22 05:52

SurferOnWww さん >「小さな親切余計なお世話」的なところが多々あって、余計に分かりにくくなっているようです。 なるほど、見えないものを、分からない段階で理解し分かる、というのは難しいですよね。 御二方がおっしゃるように、C#だと顕在化しているようなので、今の案件では言語の変更はできないのですが、今後は可能ならばC#を選択していこうと思います! (今の案件は、既存の拡張でWindowsフォームアプリケーションを追加する都合上、VB.NETで開発することになっておりますため) 貴重なご教示、ありがとうございます! 今後とも、なにとぞよろしくお願いいたします。
guest

0

ソリューションエクスプローラーで該当のプロジェクトを右クリック→プロパティを選択。
アプリケーションタブのスタートアップオブジェクトを"frmSub"にして再実行でどうでしょうか。

投稿2020/09/20 07:22

編集2020/09/20 07:26
watta

総合スコア68

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

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

ichiru_seta

2020/09/20 08:38

wattaさん、ありがとうございます! 上記のDaregada さんにも同様のアドバイスをいただいてましたが、実際の手順は調べているところでした。 スタートアップオブジェクトの指定方法、ご教示いただき、ありがとうございます。
ichiru_seta

2020/09/20 09:25

再実行しましたら、ちゃんと動きましてウィンドウも表示されました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問