2014-05-06 200 views
-1

我對VBA相當陌生,所以我想知道是否有人能對我一直在努力的東西伸出援助之手。這是一個相當簡單的概念,我相信其中大部分工作除了我似乎無法工作的一項功能之外完成。Excel中的宏VBA

到目前爲止,我已經創建了一個書籤功能,其中當前選定的一個或多個單元格被突出顯示,並在第一次調用VBA腳本時將該範圍命名爲「書籤」。通過使用VBA腳本,用戶周圍的第二次被從先前高亮顯示的單元格中取出,範圍名稱以及高亮區被刪除。但是,此功能僅適用於一個工作簿及其中的相應工作表。

我希望能夠將此功能用於當前打開的所有工作簿,或者可能是所有特定文件夾中的Excel文檔。我的代碼如下:

Sub setBookmark() 

    Dim rRangeCheck As Range 
    Dim myName As Name 

    On Error Resume Next 
    Set rRangeCheck = Range("bookmark") 
    On Error GoTo 0 
    If rRangeCheck Is Nothing Then 

     ThisWorkbook.Names.Add "bookmark", Selection 
     With Selection.Interior 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .Color = 65535 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 
     End With 
    Else 
     Application.Goto Range("bookmark") 

     With Selection.Interior 
      .Pattern = xlNone 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 
     End With 

     For Each myName In ThisWorkbook.Names 
      If myName.NameLocal = "bookmark" Then myName.Delete 
     Next 
    End If 

End Sub 

回答

0

修改這樣的:

Dim rRangeCheck 
Dim myName As Name 

On Error Resume Next 
rRangeCheck = "" 
rRangeCheck = Application.Names("bookmark") 
On Error GoTo 0 
If rRangeCheck = "" Then 

    ActiveWorkbook.Names.Add "bookmark", Selection 
    With Selection.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = 65535 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
Else 
    Application.Goto Range("bookmark") 
    Application.Goto Range("bookmark") 

    With Selection.Interior 
     .Pattern = xlNone 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 

    For Each myName In ActiveWorkbook.Names 
     If myName.NameLocal = "bookmark" Then myName.Delete 
    Next 
End If 

雙Applicatio.Goto這是必須的工作簿的選擇+牀單和細胞...
如果刪除,只有它被選中的工作簿。