今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

A 回答 (4件)

無限ループの一番内側に


DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。
    • good
    • 11
この回答へのお礼

何とかなりました。 ありがとうございました。

お礼日時:2001/06/20 09:19

No2.さんの回答でいいと思います。


Ctrl + Pause を 押すと Break になりますよ。
    • good
    • 11
この回答へのお礼

Breakにならないです。どこかで変なコードを記述してるかも知れません。
ちょっとつらいです。

お礼日時:2001/06/20 09:21

コンパイル語ではなく、デバッグ中に、ということですよね。


その場合は、ctrl + Break で一時停止になります。
    • good
    • 2
この回答へのお礼

それが、ならないのです・・・・

お礼日時:2001/06/20 09:19

強制終了でも良いのではないでしょうか?


というか、私はいつも強制終了なので、
それ以外は方法を知りません ^^;
    • good
    • 1
この回答へのお礼

早速のお返事ありがとうございます。
VBを強制終了する以外方法はないのでしょうかねぇ・・

お礼日時:2001/06/15 10:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

QVisualBasicのよるBASICプログラムの実行の可否

初心者な質問ですが、VBでBASICのプログラムを動かすことは可能ですか?VC++でC言語は動かせるようなんですが今度BASICのプログラムを動かすことになってVBを買う予定なんですが、果たして動くのかわかりません。よろしくお願いします。

Aベストアンサー

#1の補足に関して。
DOS-Basicらしいですね。3行では判らないが、素朴な初期のものらしい。あるいは、旧い時代の教科書や解説書のようなものを見ているのかな。
幸い「数値計算して値を計算するというものです」ということなので、あまり入出力は使ってないように予測するので、置換を使って変更すれば、後は
手数的にはそんなに、変更しなくてもよいとおもう。
たとえばInput-->Inputbox()
Printーーー>Msgbox
など対応表を考えてやったことあり。SIN、COSや関数はそのまま使えるでしょう。
ただプログラムは1文字違っても、全く動かない不融通の世界なので、甘く考えないこと。上記はVB程度のことなのだが、VB.NETだと様子が
変わるかも。
それに「VBを買う予定」の私の質問に答えていませんね。これが大事ですよ。
エクセルが使える環境なら、エクセルVBAで、本件Basicプログラムを移植し、動かせるケースもあるかもしれない。
XX.BASはテキスト形式だと思うので、メモ帳に読み込めるか、読み込めるなら、コピーして、VBEの標準モジュールの画面に貼り付け、そこから、悪戦苦闘開始ですね。 

#1の補足に関して。
DOS-Basicらしいですね。3行では判らないが、素朴な初期のものらしい。あるいは、旧い時代の教科書や解説書のようなものを見ているのかな。
幸い「数値計算して値を計算するというものです」ということなので、あまり入出力は使ってないように予測するので、置換を使って変更すれば、後は
手数的にはそんなに、変更しなくてもよいとおもう。
たとえばInput-->Inputbox()
Printーーー>Msgbox
など対応表を考えてやったことあり。SIN、COS...続きを読む

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

QVB5にてコンパイルしたプログラムをWin98にて実行すると極端に遅くなるのを何とかしたい

長文で申し訳ないのですが、かなり困っており、Microsoftにもインシデントを
発行して調査依頼しております。その部分を抜粋して掲載します。
何でもいいので何か教えて頂けると幸いです

<プログラム概要>
大量CSVデータ(複数ファイル合計約100MB)を配列に読み込み、その配列を使用してプログラムを
動作させるが、テキストデータ読み込み時に途中から急激に速度が低下する。

Win2kやWinXPマシンでは問題なく動作し、約数2分半で読み込み処理が終了するが、
Win98マシンでは読み込み処理が終了するまでに2時間半を要する。(Pen(4) 実メモリ256MB)

<プログラム詳細>

  ReDim gtypCDRコメント(30000)
  intFileNumber = FreeFile

' ***ファイルOPEN*****
Open CstrCsvPass & gstrファイルCD & CstrCDRコメント For Input As #intFileNumber
lngDataCnt = 0
Do While Not EOF(intFileNumber)
With gtypCDRコメント(lngDataCnt)
Input #intFileNumber, .gstr健診種別, .gstrセットコード, _
.gstr短文, .gstr略文, .gstr長文1, .gstr長文2, .gstr長文3
lngDataCnt = lngDataCnt + 1
End With
DoEvents
Loop
'***ファイル閉じる****
  Close #intFileNumbe

<質問内容>
上記現象は、大量データをメモリに格納するWin9×系OSとWinNT系OSの仕組みの違いに
よるものではないかと推測しているが、ユーザへの説明上、OSにより上記の動作が異なる
理由をご回答頂ければ幸いです。

また、VB5プログラムをWin9×系OS上にて動作させる際に、上記配列の宣言
方法では読み込みデータサイズの推奨上限値がどの位になるのか、また別の
メモリ格納方法であれば更に大きなサイズのデータをメモリに格納できるなど、
回避策は存在するのかご回答頂ければ幸いです。

長文で申し訳ないのですが、かなり困っており、Microsoftにもインシデントを
発行して調査依頼しております。その部分を抜粋して掲載します。
何でもいいので何か教えて頂けると幸いです

<プログラム概要>
大量CSVデータ(複数ファイル合計約100MB)を配列に読み込み、その配列を使用してプログラムを
動作させるが、テキストデータ読み込み時に途中から急激に速度が低下する。

Win2kやWinXPマシンでは問題なく動作し、約数2分半で読み込み処理が終了するが、
Win98マシンでは読み込み処理が終了する...続きを読む

Aベストアンサー

このレベルになると、普通DBを使用するのが当然と思われます。

CSV等のテキストではどのようにやっても無理でしょう。

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QVisual Basic 2008 で複数のうちのいずれかのイベントが発生した時のプログラムの実行方法について、

例えば、フォームに複数のボタンが貼り付けていて、その中のいくつかのボタンは同じ処理をする。

これを1つのプログラムで記述したいのだが、Handlesの所を次のように記述しても、同じ処理をするボタンが多すぎると冗長のような気がします。

Handles Button1.Click, Button2.Click

どうすれば同じ処理をするボタンをグループ化して1つのプログラムで記述することが出来るでしょうか?

Aベストアンサー

原則的にはHandles句へ追加するものを増やしていくしかないです。

コレクションに既に一覧があるのであれば,AddHandlerを使う事でループによるイベントハンドラの追加は可能ですが。

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

QVisual Basic Net のプロジェクトの削除

使い出したばかりなので、簡単な事ですが教えて下さい。
今、入門書を参考に試用していますが、その時に仮に作った不要なプロジェクトがたくさん出来てしまっています。これを削除するのはどうしたらいいのでしょう?VBエディタの画面から出来ると思うのですが、入門書はこういうような事は何も書いてないのですよね。

Aベストアンサー

ソリューションエクスプローラーというウインドウが画面右上の方にあるので(なかったら表示メニューから選んで下さい)、そこで表示されてる該当のプロジェクトを選択して右クリックで削除を選べばいいです。

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

QVisual Basicの実行フォーム時について

●フォームに3つの入力用テキストボックスがあるのですがTabキーではなくEnterキーで2つ目、3つ目のテキストボックスへ移動させるにはどう書けばよいでしょうか?

●またその3つの値を一つのラベルに一行にではなくそれぞれ改行させて表示させたいのですがどう書けばよいでしょうか?

Aベストアンサー

こんばんは。

Enterで移動する方法ですが、VBのバージョンは?バージョンによって方法が違います。

とりあえずここに.NettとVB6の方法があります。
http://jeanne.wankuma.com/tips/form/cobolerform.html

もうひとつの方は

TextBox1.Text & vbLf & TextBox2.Text & vbLf & TextBox3.Text

でどうでしょうか


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報