2016-06-13 9 views
1

どこでも尋ねられませんでした。 Visual Basic(Excel)では、F8キーを押して各行を循環させることができます。しかし、私はサブプロシージャを開始したいとし、最初の2行を実行した後、私は200行にスキップしたいと思います。今まで、私はいつも黄色の矢印を目的の行にドラッグしました。これは本当に時間がかかり、単に「選択された場所で現在の行を実行する」と言うコマンドがあるのだろうかと思っていました。特定の行vbaを実行します

さらに、行単位で実行しても、選択した黄色の矢印を目的の行にすばやく移動することもできます。

+0

'黄色の選択された矢印を目的の行にすばやく移動すると、それでも問題は解決しません。私が知っている限り、それがあなたが求めるものを行う唯一の方法です。 – cybermonkey

+0

実行したくないコード行をコメント化してみませんか? –

+0

@cybermonkey Hm ...私の質問にどのように答えているか完全に理解していない。 「遅い抗力」はまったく速くはないので、私が最初にこれを求めている理由です。 –

答えて

1

残念ながら、直接お聞きすることはできません。

ただし、コメントアウトあなたは、たとえば、実行したいコード上記のコードの行があります。

Sub Workbook_Open() 
    'Application.DisplayFullScreen = True 
    'Application.DisplayFormulaBar = False 
    'ActiveWindow.DisplayWorkbookTabs = False 
    ''ActiveWindow.DisplayHeadings = False 
    Application.EnableEvents = True 
    Password = "1234" 
    ActiveWorkbook.Protect 
    ThisWorkbook.Protect (Password = "1234") 
End Sub 

あなたGoTo Sを使用することができるが、しかし、これは良い習慣と見なされていません

Sub Workbook_Open() 
    GoTo ExecuteCode 
    Application.DisplayFullScreen = True 
    Application.DisplayFormulaBar = False 
    ActiveWindow.DisplayWorkbookTabs = False 
    ActiveWindow.DisplayHeadings = False 
    Application.EnableEvents = True 
    ExecuteCode: 
    Password = "1234" 
    ActiveWorkbook.Protect 
    ThisWorkbook.Protect (Password = "1234") 
End Sub 
+0

downvoteの理由は? – cybermonkey

+1

あなたはたぶん、別の人がやるようなことをしなかった、競合する代替の答えを与えたでしょう。確かにあなたの答えは有効かもしれませんが、彼らの有効な答えではありません!ここでは、多くの可能な有効なソリューションの1つにアップヴォートを持っています。 – AndASM

+0

あなたは彼が求めたことはできませんが、スクロール中に矢印をドラッグするのではなく、デバッグモードになっているときに右クリックして「次のステートメントの設定」を押すことで、選択した行を実行することはできません? – AndASM

0

通常、私はアポストロフィで実行したくないコード行をコメントアウトします。また、コードを小さなプロシージャに分割して、テスト/実行するものを簡単に選択して選択することもできます。

+0

私は、私がOPに投稿するよう具体的に求められた答えに対してdownvotedされていますか? –

+0

私は同じ回答(あなたがする前に約30秒前に投稿されました)のためにdownvotedされました...ユーザーは 'あなたが実行したくないコードをコメントアウト'の解決が気に入らないようです。 – cybermonkey

+1

時には私はこのサイトで人々が引き金を引くように感じることがあります。 –

3

ジャンプ先の行を右クリックします。メニューのSet Next Statementオプションを押します。これは、矢印をその行にドラッグすることと同じです。

すべての行を特定の行まですばやく実行したい場合は、ブレークポイントを設定してから、コードを1行ずつ進めるのではなく、実行してください(実行をヒットします)。これを行うには、黄色の矢印が表示されている左側の灰色のバーをクリックします。暗い赤の点が現れ、線が濃い赤で強調表示されます。これは、ビジュアルベーシックがそのラインに当たると停止するように指示します。

アポストロフィで開始して行をコメントアウトすることもできます。

最後に、コードをサブルーチンに分解し、互いに独立して実行することができます。

Sub Subroutine1() 
    'This is a commented out line. It does nothing. 
    MsgBox "Do stuff here" 
End Sub 

Sub Subroutine2() 
    Subroutine1 'This will run all the code in subroutine 1 
    MsgBox "Do more stuff here" 
End Sub 

上記の例では、Subroutine1を実行すると1つのメッセージボックスが表示されます。 Subroutine2を実行すると、2つのメッセージボックスが表示されます。

6

多くのことをスキップしたい200のライナー手順がある場合、少しリファクタリングする必要があるように見えます。

プロシージャが処理しているものを自分のSubプロシージャとFunctionスコープに抽出します。 '*** do something ***のようなバナーのようなコメントをお持ちの場合は、すでにそれ自体の手順に抽出するチャンクです。その後、(Shiftキー+ F8)一つのことを行う小さな手続き上ステッピングを伴う、または壊し、完全に呼び出しをスキップできそのプロシージャのステップ実行

+0

しかし、テスト目的のために200行が必要であり、役立ちます。新しい「テストサブ」を作成しないで、その一部を検証したいだけです。 –

+6

私はそれを強く疑うことができます。堅牢なコードは、手動でテストするのではなく、専用のテストモジュールに 'Sub'プロシージャを書くことで、テストしたい*コードだけを実行します。プロシージャが20の他の処理を行う場合、それをきれいに自動的にテストする方法はありません。なぜ私は基本的なOOPとクリーンなコードの原則がVBAコードについて話しているときはいつでもウィンドウの外に投げ捨てられるのか分からない、AFAIK VBAはJavaやC#と同じようにSOLIDとOOPコードが可能です。 –

+3

さて、VBAにはOOPに関して多くの癖があります。しかし、それらの欠点はあなたのコードを壊してそれをきれいに書くことを妨げるものではありません!私は実際にスーパーロングサブルーチンの正当な理由を見たことがありません。弱い人工理論的状況のみ。一日の終わりには、一連のサブルーチンをまとめて1つのセントラルサブルーチンから呼び出すことができ、1つの大きなサブルーチンより読みやすく持続可能なものになります。 – AndASM

1

これは私が行うことです - 基本的に私のコードが200行まで正常に動作していることを知っていますが、200-300の間にエラーがあり、コンパイルする前に - 200行目までスクロールしてマークしてください(コードの左側)。コンパイルしてF5をクリックすると、行200までのすべてが実行されます。その後、各行を個別にステップ実行できます。

関連する問題