• ベストアンサー

【VB】超初歩的な質問

2,3日前からVB6を勉強しています。 大変初歩的な質問となりますがお許しください。 コマンドボタンを一つ貼り付けた状態で、以下のプログラムを書いて実行した場合、処理が終わらなくなりますよね。 Private Sub Command1_Click() test: MsgBox "test" GoTo test End Sub それを終了するのはやはり強制終了するしかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Ulrika
  • ベストアンサー率45% (59/129)
回答No.2

どういうことをしたいのかナゾなので。(笑) 単にメッセージボックスを出すだけなら Private Sub Command1_Click() MsgBox "test" End Sub ですね。 GoTo文の練習ですか? メッセージボックスのボタンの種類を指定して、処理を分けてみるとかはどうですか? Private Sub Command1_Click() test: If MsgBox("test", vbOKCancel) = vbOK Then GoTo test' 処理の繰り返し End If End Sub 繰り返し処理を行いたいなら、その部分を関数化した方が良いですね。

rappaozisan
質問者

お礼

別にしたいことはありません。 どういう動きをするのかいろいろやっているだけです。 どうもありがとうございます。

その他の回答 (1)

  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

このコードでは無限ループで強制終了するしかないと思いますが。 プログラムする場合、GoToは使わないようにするべきです。GoToを使うとスパゲッティプログラムになりやすいので、GoTpなしのほうが洗練されたプログラムになります。

rappaozisan
質問者

補足

やはりそうですか。 どうもありがとうございます。がんばります。

関連するQ&A

  • 標準モジュールとイベントの質問

    初めて質問します。 ビジュアルベーシックで標準モジュールで ボタンのクリックイベントを実行したいのですが どうやってプログラムすればいいんでしょうか? 今の会社に入っていきなりVBの仕事させられて とっても困っています。 Private Sub Frm1Command1_Click() Call Module1.Frm1Command1_Click End Sub こんな書き方じゃなくて、標準モジュール内で Public Sub Command1_Click() MsgBox "sine" End Sub って書いて実行できるようにしなくてはダメなんです。 どうすればいいんでしょうか? もしかして無理なんでしょうか? これ、上司の嫌がらせだったらイヤですね・・・。

  • VBで、このようなことはどうやっら出来るのでしょうか?

    こんばんは。単刀直入のこんなことです。 Private Sub Command1_Click() Dim a As Double a = a + 1 Text1.Text = a End Sub このプログラムを実行して、、コマンドボタン1を押すと テキスト1には、1が表示されます。 で、やりたいことは、またコマンドボタン1を押すと、テキスト1には2{a=1(一回目によって代入された値)+1}が表示されるようにしたいのですが、どうすればよいのでしょうか?

  • [VB6]オーナーウィンドウを設定したShowメソッド

    こんにちは。 XP(SP2),VB6(SP6)で 親フォーム -> 子ダイアログ -> 孫ダイアログを表示する処理を作成し実行すると、 子ダイアログを閉じた際、親フォームが他のアプリケーションの下 にもぐってしまいます。 (例えばメモ帳上で実行して、子ダイアログを閉じた時にメモ帳の下に隠れてしまう、デバッグ時ならばVBの下に隠れる) 孫ダイアログを表示させずに、子を閉じるとこの様に減少は起こりません。 なぜこの様になるのでしょうか? 又、回避策はあるでしょうか?ご存じの方、教えてください。 以下、現象再現用のテストプログラムです。 親フォーム Private Sub Command1_Click() dlg1.Show vbModeless, Me End Sub 子ダイアログ(dlg1) Private Sub Command1_Click() dlg2.Show vbModal, Me End Sub Private Sub CancelButton_Click() Unload Me End Sub 孫ダイアログ(dlg2) Private Sub CancelButton_Click() Unload Me End Sub

  • VB6.0 PowerPointの開閉

    VB6.0からPowerPointファイルの開閉を行っています。 問題なく動作するのですが、一点問題があります。 OPENの前に、別のPowerPointファイルが開いていた場合に、 QUITを実行すると、元々開いていたファイルも一緒に終了してしまうことです。 別のプロセスでPowerPointのアプリケーションを実行すれば、 解決できるのではないかと考えているのですが、 具体的にどのようにすればよいか分からず困っております。 大変恐縮ですが、アドバイスを頂ければ助かります。 環境:VB6.0(SP5) PowerPoint2002 ------------------------------------------------------------- Option Explicit Private WithEvents PPTApp As PowerPoint.Application '■パワポを開く Private Sub Command1_Click() Set PPTApp = New PowerPoint.Application PPTApp.Visible = True PPTApp.Presentations.Open (App.Path & "\test.ppt") End Sub '■パワポを閉じる Private Sub Command2_Click() PPTApp.Quit Set PPTApp = Nothing End Sub

  • VB6.0でPowerPoint上のイベントを取得したい

    VB6.0からPowerPointのファイルを開き、 PowerPoint上のイベントを取得したいのですが、 方法が分からず困っております。 具体的には、ツールバーのプレビューボタンが クリックされたことをVBで検知したいと考えています。 現状では下記のように、Applicationの閉じるイベントは 取得できたのですが、そこからどうして良いか分からない状態です。 良きアドバイスをお願い致します。 ---------------------------------------------------- Option Explicit Private WithEvents PPTApp As PowerPoint.Application '■パワポを開く Private Sub Command1_Click() Set PPTApp = New PowerPoint.Application PPTApp.Visible = True PPTApp.Presentations.Open (App.Path & "\test.ppt") End Sub '■パワポを閉じる Private Sub Command2_Click() PPTApp.Quit Set PPTApp = Nothing End Sub '■閉じるイベントを取得 Private Sub PPTApp_PresentationClose(ByVal Pres As PowerPoint.Presentation) MsgBox "閉じる" End Sub ----------------------------------------------------

  • VB6でWSH(vbs)を起動できる方法を教えてください。

    visual Basic 6でアプリケーションを開発していますが、 このアプリケーション(exe)から、test.vbsを起動したいと考えています。 ====vbのコード===== 'ボタンクリックしたら、test.vbsが実行される Private Sub Command1_Click() shell("test.vbs") End Sub ==== test.vbs ==== MsgBox("test.vbs起動しました。") です。 上記のようにコードを書きましたが、Shell関数で 「実行時エラー'5' プロシージャの呼び出し、または引数が不正です。」 のメッセージが出力されて、vbsが起動できません。 VB6でWSH(vbs)を起動できる方法を教えてください。 環境は以下の通りです。 OS:WIN2000 アプリ:VB6 ブラウザ:IE5.0

  • (VB初心者) VB起動時既に起動されているExcelの情報

    VisualBasic 6.0 初心者です。 既に起動しているExcelの後にVisualBasicを立ち上げた場合、 既に起動しているExcelの情報を得ることが出来るのでしょうか? やりたい事は Excel起動⇒VB起動⇒Excelのセルを選択⇒そのセルに入力されている値 を取得。 VB起動⇒Excel起動の場合はActiveCellの値を取得出来たのですが 既に起動しているExcelの場合 エラー になってしまいます。 お手数ですが、ご教授願います。 Private Sub コマンド1_Click() MsgBox ActiveCell End Sub 'Form_Load時にこれを実行しないと開いたExcelのアクティブセル値を得られない?? Private Sub Form_Load() MsgBox ActiveCell End Sub

  • VBについて教えてください。初心者です。

    日系ソフトウェアの参考書で勉強しているのですが、FORMのLOADイベントは動作を開始するとほぼ最初に発生するイベントって書かれているのですが、どうやったら発生するのか解らないのです。 Private sub form_load() Dim i% DIm J$ J% = weekday(date$) if J% = 1 then d$ = "(日)" elseif J% = 2then と、言うようにend subのところまで最後まで参考書にのってるプログラムをきちんと書いたのですが、実行してもなんにもおこらずなのです。 このプログラムはタイトルバーに日付け、曜日、時刻を表示するプログラムらしいのですが、いったいどうしたらよろしいのでしょうか・・?。 そもそも、Private sub form_load()は、自分で打ち込むものですか?コマンドボタンを押してウィンドウを開くと自動的にPrivate sub command1_click()って出てきますが、それといっしょじゃないのですか? ご存知の方はぜひぜひお教えください。よろしくお願いいたします。ちなみにツールはXPのエクセルの中に入ってるVBツールです。フォームをダブルクリックすると Private sub userform_Clickって出てきます。

  • VB6のバグか?

    VB6のバグか? 下記のように、 文字列「278754742940.733」を数値に変更し、1000倍にすると、278754742940732になったんですよ。 Private Sub Command1_Click() Dim s As String s = "278754742940.733" Dim d As Double d = Val(s) * 1000 MsgBox Fix(d) 'intも同じ End Sub 結果: 278754742940732 どうすれば、解決できますか?

  • 初心者の質問です。VBA

    ボタンを使ったプログラムの作成なんですが、VBEウィンドウで動作を実行することはできるのですが、コマンドボタンを押しても動作せず、文章が黄色に反転するだけなのですが。どういうふうに文章を変えたらよいかおしえてください。 Private Sub 設定_Click() MsgBox "ボタンをクリックしました" End Sub

専門家に質問してみよう