VBAについての質問です。

ターゲットブックを開けていないと下記のスクリプトはエラーになります。
回避するために、ターゲットブックがあいているかどうか判断する関数教えてください。
Windows("ターゲットブック").Activate

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/02/11 19:42:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント35pt

存在を確認する関数というのは無いと思いますので(あったらすみません)、

一度オブジェクト変数に代入してみれば、確認ができると思います。


下記、サンプルです。

Const winName = "ターゲットブック.xls"

Sub tryActivate()
    Dim win As Window
    
'--- とりあえずセットしてみる
    On Error Resume Next
    Set win = Windows(winName)
    On Error GoTo 0
    
    If win Is Nothing Then
'--- なければ、メッセージを表示
        MsgBox winName & "は存在しません"
    Else
'--- あればアクティブに
        win.Activate
    End If
End Sub

http://hp.vector.co.jp/authors/VA016119/excel/vbafaq11.html

この中では関数を作って汎用的に利用できるようにしていますが、

原理は一緒です。

id:isogaya

え、ないんですか?

2008/02/11 19:42:07
id:ardarim No.2

回答回数897ベストアンサー獲得回数145

ポイント35pt

そのものズバリの定義済み関数は無いと思いますので、作ってみました。

Function IsBookOpen(ByVal bookName As String) As Boolean

    Dim bk As Window

    For Each bk In Application.Windows
        If bk.Caption = bookName Then
            IsBookOpen = True
            Exit Function
        End If
    Next bk

    IsBookOpen = False

End Function

urlはダミー

http://q.hatena.ne.jp/1202720492

id:isogaya

ありがとうございます。

2008/02/11 19:42:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません