2017-01-10 15 views
0

アクティブなワークシートがブックの最初のワークシートであるかどうかを確認する必要があります。このコードはまったく動作していませんが、正しい軌道に乗ることを期待しています。Excel VBA - アクティブなワークシートが最初のワークシートであるかどうかを確認します

Sub CheckFirstSheet() 
If Sheets(1) = ActiveSheet Then MsgBox "This is the first worksheet." 
If Sheets(1) <> ActiveSheet Then MsgBox "This is not the first worksheet." 
End Sub 
+5

ActiveSheet.Index? – cyboashu

答えて

3

これは、あなたが行くここ

Sub test() 
If ActiveSheet.Index = 1 Then MsgBox "This is the first worksheet." 
If ActiveSheet.Index <> 1 Then MsgBox "This is not the first worksheet." 
End Sub 
+0

複数のブックが開いている場合、これは機能しません。 – Comintern

+1

あなたが提供した例(ちょうどテスト済み)についても同じことが当てはまります。両方のコードがアクティブなワークブックで動作しているようです。 –

+1

これは、「シート」(非適合)がグローバルであるためです。これは修飾された(または 'ThisWorkbook'モジュールから使用されている)' Worksheet'参照には絶対になりません。 – Comintern

1

あなたは=<>と参照型を比較す​​ることはできません - あなたはIsを使用する必要があります。

Sub CheckFirstSheet() 
    If Sheets(1) Is ActiveSheet Then 
     MsgBox "This is the first worksheet." 
    Else 
     MsgBox "This is not the first worksheet." 
    End If 
End Sub 
1

単純です:

Sub CheckFirstSheet() 

If ActiveSheet.Index = 1 Then 
    MsgBox "This is the first worksheet." 
Else 
    MsgBox "This is not the first worksheet." 
End If 

End Sub 
+0

複数のブックが開いている場合、これは機能しません。 – Comintern

+0

完全な引数ではありませんが、複数のワークブックが開いている場合は動作します – Jeremy

+0

その点ですが、引数はない完全な資格はありません。 'ActiveSheet'はグローバルですが、完全なシート参照は特定のワークブックに属していなければなりません。 – Comintern

関連する問題