2016-10-14 118 views
1

Iプリプロセッサを使用していくつかのコードは、コマンドを持っている:#If#Elseと基本的に私が持っている#End If使用してVBAのapplication.statusbarは、実行時エラーが発生し

#If Mac then 
    msgbox "Can't update the list when running on a mac" 

#Else 
    Application.StatusBar = "updating names..." 

    ***other code here****   

    Application.StatusBar = false 
#End if 

コード作品私のマシンでは問題ありませんが、スプレッドシートを開いてコードをコンパイルすると、エラーメッセージが表示されます。

Method 'StatusBar' of object '_Application' failed

保護されたビューでスプレッドシートを開くときに発生するエラーです。保護されていないビューでは、エラーは表示されません。それは、それが開かれた後にサブが呼び出された後に開かれた時点でコンパイルされるとうまく動作します。

ステータスバーのコマンドを削除してもエラーは発生しません。

「On Error Resume Next」を追加しようとしましたが、エラーを停止しません。

したがって、私はプリプロセッサルーチン内でステータスバーを使用することはできないと思われ、動作することを確認してください。

私はExcel 2013を使用していますが、Excel 2013でエラーが発生しました。どちらのマシンも64ビットWindows 8.1で、実際には両方のマシンがコアMプロセッサ搭載のASUS UX305Fと全く同じ仕様です。

誰でも何が起こっているのかも知れませんか?

+0

"コンパイル時のランタイムエラー" - コンパイルエラー* * - エラーメッセージがある場合、これはコンパイルエラーではありません。 VBAがプリプロセッサディレクティブを実行するときに実行時に発生します。関連する '#If'プリプロセッサの条件が何であるかを含めると良いでしょう。 –

+0

私の混同した用語を訂正してくれてありがとう。私は使用されたディレクティブを表示するように更新しました。私はThisWorkbook.Application.statusbarを試してレポートを返します。私はエラーを引き起こしたPCを持っていないので、試してみようと電子メールを送ります。 – MrPea

+1

@Slaiエラーメッセージ中の '_Application'オブジェクトは' Application'を正しく認識しています。 'ThisWorkbook'で修飾すると何かが変更された場合、それはまったく同じオブジェクトポインタであるため、私は驚いています。 –

答えて

1

私は、問題を再現するが、と仮定することはできません。

  • プリコンパイラ・ディレクティブは、マクロを無効にするために使用されています

    • Application.StatusBarは細かい外プリコンパイラ・ディレクティブ

    との作品Mac環境の場合

ただ、再編成のものビット、Windows環境で実行する運命コードはプリコンパイラ・ディレクティブで囲まれならないように:

Public Sub Macro1() 
    #If Mac Then 
     MsgBox "Can't update the list when running on a Mac" 
     Exit Sub 
    #Else 
     DoSomething 
    #End If 
End Sub 

そしてDoSomethingに実際のロジックを移動し、実際を残しますプリコンパイラ・ディレクティブの無料コード:

Private Sub DoSomething() 
    Application.StatusBar = "updating names..." 

    '***other code here****   

    Application.StatusBar = false 
End Sub 

ワーストケース、あなたのボタンをクリックするMacユーザーは、コンパイルエラーになりますし、コードが実行されません...しかし、そう、とにかく実行することになっていません...

+0

ああいいアイデア!それはあなたの方法を使用して私のセットアップでも動作するので、それが失敗したもので動作していることを確認し、月曜日に報告します。興味深いことに、最初に失敗する原因になるのは興味深いですが、ステータスバーを心配するより大きなことがあります! – MrPea

関連する問題