[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルのダブルクリックでブックをアクティブにするには』(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 >
(γ) 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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.