• 締切済み

Excel VBA ステップインが途中で通常実行になってしまう

VBEでF8キーを一回ずつ押して一行ずつステップインでコードを実行していくと、 Workbooks.openの行を実行した途端、 それ以下のすべての行が通常実行されてしまいます。 すべての行をステップインで実行するにはどうすればよいのでしょうか。 例)Workbooks.Openの行でF8を一回押すと、すべて通常実行されてしまう。   (2行目以下も一行ずつ動作を確認したい) ---- Sub test() Workbooks.Open ("C:\test.xls") Range("A1").Value = 1 Range("A2").Value = 2 Range("A3").Value = 3 End Sub ---- よろしくお願いいたします。

みんなの回答

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

回答ではないですが、2行目にブレークポイント入れたらどうでしょうか?

Snupee
質問者

お礼

ご意見ありがとうございます。 [ヘルプ]→[アプリケーションの自動修復]を実施後、 再度ためしたところ、普通にステップインできました。 結局原因は不明ですが。

関連するQ&A

  • ステップインで実行しても中断させない方法を教えてく

    エクセルでOLEObjectを削除するコードを、 ブレークポイントを設置して実行すると、 デバッグモードでやると「中断モードでは入力できません」となります。 (エクセル2007です) 例えば、 Sub オブジェクト削除() ActiveSheet.OLEObjects.Delete Selection.Value = "a" End Sub で、「Selection.Value = "a"」の部分にブレークポイントを設置して、 F8で一行ずつ実行していこうとすると画像のようになります。 なぜなのでしょうか? 今サンプルで提示したコードは短いのでいいのですが 実際のコードはもっと長いので、 ステップインでコードの動きを見ていきたいのですが ActiveSheet.OLEObjects.Delete の部分で、エラーになってしまいます。 その際、「継続」と「終了」のどちらを選んでもOLEObjectsは削除されます。 「終了」の場合はその次のコードの、 Selection.Value = "a" は実行されません。 ブレークポイントを設置せず、F5で一気に実行する場合はエラーになりません。 コードの中に、 ActiveSheet.OLEObjects.Delete があってもステップインで実行しても中断させない方法を教えてください。

  • VBA 実行時エラーで、"プロパティまたはメソッド

    ・Sheet1(コード) Private Sub CommandButton1_Click() Call aaa End Sub ・Module1(コード) Sub aaa() Dim wb As Workbook Dim ws As Worksheet Workbooks.Open ("c:\test.xls") Set wb = Workbooks("test.xls") Set ws = wb.Worksheets("Sheet1") wb.ws.Range("A2").Value = "CCC" End Sub wb.ws.Range("A2").Value = "CCC"の部分で 以下の実行エラーが出ます。 ------------------------------------------------------------------------ 実行時エラー'438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ------------------------------------------------------------------------ Set wb = Workbooks("test.xls") Set ws = wb.Worksheets("Sheet1") の部分で特にエラーも出ないので、オブジェクトの取得は成功していると 思うのですが、WorkSheetオブジェクトのwsからRangeメソッドを呼ぶことが できません。 動かない原因と対策を教えてください!!

  • エクセルVBAで他のbookのセルcellsで参照

    エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value  '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value  '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value  '(5) ok End Sub

  • VBAについて

    VBAで本を見ながら以下の構文を記述してステップインで実行してみました。 Sub 同じ条件でデータ検索() Dim myRange As Range, srcRange As Range, _ myAddress As String, i As Integer Set srcRange = Range("F2:F10") Set myRange = srcRange.Find(What:=Range("C13").Value, _ LookIn:=xlValues) If Not myRange Is Nothing Then myAddress = myRange.Address i = 16 Do Cells(i, "C").Value = myRange.Offset(, -4).Value Set myRange = srcRange.FindNext(After:=myRange) i = i + 1 Loop Until myRange.Address = myAddress Else MsgBox "該当者がいません" End If End Sub これはテストの中間・期末の合計数により評価を「A」「B」「C」と分けている表の中からC13に入力した「A」「B」「C」いずれかに該当する人を表示します。VBEを起動させながらステップインして実行してみると、「A」「B」「C」いずれもきちんと検索して結果を表示してくれました。そこでボタンを作成して登録してみたところ、「A」はきちんと検索結果をだすのに「B」、「C」は”該当者なし”とでてしまう。(該当者がいるのに)ステップインで実行してもう一度見てみるとボタンに登録するまえは「A」「B」「C」きちんと格納されているのが確認できたのに登録後は「A」以外は格納されていないのです。なぜこのような状態になるのでしょうか?何がいけないのかさっぱりわかりません。VBAはまだ初めて2週間くらいでちんぷんかんぷんな状態ではあります。初心者にもわかるよう教えていただけたらありがたいです。よろしくお願いします

  • エクセルVBA

    Sub PlusA001() Dim a As Range Dim b As Integer Range("e1").Value = "氏名" Range("e2").Value = "甲" Range("e2").AutoFill Destination:=Range("e2:e10"), Type:=xlFillDefault Range("f1:j1").Value = Array("国", "数", "理", "社", "英") Set a = Range("f2") For i = 1 To 5 Do Until b = 9 a.Value = Int(100 * Rnd) + 1 b = b + 1 Set a = a.Offset(1, 0) Loop b = 0 Set a = a.Offset(-9, 1) Next i End Sub サンプルコードの例ですが、どうも実行しても納得できない部分があります。それはSet a=a.offset(-9,1)の部分です。Set a = Range("f2")においてf2を始点としているのは判りますが、f2からであればa=a.offset(-9、5) とすればいいのかと思い実行したのですが、ぐちゃぐちゃになります。なぜ(-9、5)ではなく(-9、1)何ですか?いくら読み解いても判りません。教えてください。

  • エクセルVBAで65536レコードを超えるCSVファイルの読み込み

    エクセル2000です。 現在CSV形式のファイルをもらい、エクセルVBAで1行づつエクセルに取り込み、加工しています。(CODEは、かなり省略していますが下記の通り) データは将来的には何万件におよぶことも考えられます。 ためしに65536を超えるデータを読み込ませたところ65536を超えたところでやはりエラーになりました。Workbooks.Openでエクセル形式で開いているので65536を超える部分は無視されるからだと思います。 このような場合には、どうやってCSVファイルからデータを読み込めばよいのでしょうか?(なお、エクセルは当分2007にはなりそうもありません。アクセスはまったく使えません。) Sub TEST01() Set cf = Workbooks.Open(Filename:=ThisWorkbook.Path & "\test.csv") Set zerro = cf.Sheets(1).Range("A1:AX1") ThisWorkbook.Sheets("Sheet1").Activate Do Until zerro.Cells(1).Value = "" ThisWorkbook.Sheets("Sheet1").Range("A1:AX1").Value = zerro.Value '処理マクロ省略 Set zerro = zerro.Offset(1) Loop End Sub

  • エクセルVBEについて

    VBE初心者です。以下のプログラムを実行すると「testが見つかりません」とエラーが出てしまいます。application.ontimeの使い方がよく分かりません。どこが違うんでしょうか?よろしくお願いします。 Sub test() Range("D10").Value = Second(Time) If Range("D10").Value >= 55 Then Exit Sub End If Application.OnTime Now + TimeValue("00:00:01"), "test" End Sub

  • VBA ある条件を満たしてからの実行

    Sub 登録() ActiveSheet.Range("F650:T650").Copy r = Range("M1").Value + 4 Worksheets("データ管理").Range("F" & r).PasteSpecial Paste:=xlPasteValues End Sub 上記を実行する前に条件を入れたいのですが、 セルA1に名前(もしくはなんからの文字)が入っていなかったら、MsgBox ("名前を入力してください")、 セルA2に住所(もしくはなんからの文字)が入っていなかったら、MsgBox ("住所を入力してください")、 この条件をみたしてから上記をマクロを実行したいんですが・・・ アドバイスお願いします

  • VBA_マクロ内でマクロ実行

    独学でVBAをやってる初心者です。 よろしくお願いします。 EXCEL2003を使ってます。 例) <A.xlsファイル> Sub File_A () Workbooks.Open Filename:="B" Call File_B Range("A1").Select Selection.Paste End Sub <B.xlsファイル> Sub File_B () Range("A2:T5").Select Selection.Copy End Sub A.xlsファイルを開きマクロFile_Aを実行させると B.xlsファイルのマクロFile_Bを実行することができません。 どうしたらうまく実行できますか? 教えてください。

  • 【vba】フォームに書いてあるコードをステップインすることは不可能でしょうか?

    エクセルもアクセスも同じなんですが フォームのモジュール?に書いてあるコードを 「F8」のステップインすることは不可能でしょうか? 標準モジュールなら 「F8」で少しずつVBAコードを試すことが可能なのですが、 フォームに書いてあるほうはできません。 ひとつひとつ試したいので Private Sub コマンド1_Click() Call test End Sub とフォームのところに書き、 標準モジュールには Sub test() ・・・ End Sub と書いて 標準モジュールのほうを F8で少しずつデバッグしています。 こうするしかないのでしょうか? よろしくお願いします。

専門家に質問してみよう