[[20211127092941]] 『セルのダブルクリックでブックをアクティブにする』(jahakas) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルのダブルクリックでブックをアクティブにするには』(jahakas)

 セルにブック名Aが書かれています。
 これをダブルクリックして、ブックAを開きたいのですが、既に開いている時
は、Aをアクティブにしたいのですが、セルの編集になってしまいます。
 ブックAをアクティブにするには、どうすれば良いでしょうか?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Dim Path As String, WSH As Variant

    With ActiveCell
        If Right(.Value, 5) = ".xlsm" _
        Or Right(.Value, 5) = ".xlsx" Then
            '
        Else
            Exit Sub
        End If
    End With

    Set WSH = CreateObject("WScript.Shell")
    Path = WSH.SpecialFolders("MyDocuments")
    Path = Path & "\" & ActiveCell '

    If Dir(Path) = "" Then
        'On Error Resume Next
        Workbooks.Open Path
        'On Error GoTo 0
        MsgBox Path & " WBファイルが存在しません。", vbExclamation '
    End If

    On Error Resume Next
    Open Path For Append As #1
    Close #1

    If Err.Number > 0 Then
        MsgBox "すでに開かれています"
        Workbooks(ActiveCell).Activate
    Else
        'MsgBox "ブックは開かれていません"
        'On Error Resume Next
        Workbooks.Open Path
        'On Error GoTo 0
    End If
    On Error GoTo 0
End Sub

< 使用 Excel:unknown、使用 OS:unknown >


Cancel = True
を入れる。
(通りすがり) 2021/11/27(土) 09:51

(1)適切なところに、 Cancel =True を入れることと、
(2)ActiveCell(というより明示的にTargetを使ったほうが意図が明確になる)の値を
  最初に変数に入れておいて、それを使ってBookをActivateすればよいでしょう。

(γ) 2021/11/27(土) 10:09


 ありがとうございます。

Cancel = True を入れる。  これだけでは、うまくいきませんでした。

(1)適切なところに、 Cancel =True を入れることと、 (2)ActiveCell(というより明示的にTargetを使ったほうが意図が明確になる)の値を   最初に変数に入れておいて、それを使ってBookをActivateすればよいでしょう。  両方、入れました。うまくいきました。
(jahakas) 2021/11/27(土) 12:28

解決済のようですが、ちょいと別案込みで投稿しておきます。
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim WB As Workbook

        '▼セルの内容がブック名を示すものかチェック
        Select Case LCase(Right(Target.Value, 5))
            Case ".xlsm", ".xlsx"
                Cancel = True

            Case Else
                Exit Sub
        End Select

        '▼自分がそのブック名のブックを開いているかチェック
        On Error Resume Next
        Set WB = Workbooks(Target.Value & "") '「& ""」は無くてもよいが、セルの値が数値だったときの対策として
        On Error GoTo 0

        '▼ブックを開いているかどうかで処理分岐
        If WB Is Nothing Then
            Workbooks.Open (CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\" & Target.Value)
        Else
            WB.Activate
        End If

    End Sub

(もこな2) 2021/11/27(土) 15:03


>解決済のようですが、ちょいと別案込みで投稿しておきます。
もう、あれだったので、見過ごしていました。こちらでも出来ました。
ありがとうございます。
(jahakas) 2021/11/28(日) 09:08

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.