2014-12-08 14 views
0

我是解決方案以解決您無法正確選擇(突出顯示)列和行(如果它包含合併的單元格)的限制的解決方案。不幸的是,由於丟失了格式,我無法取消合併單元格。因此我希望創建一個僅適用於「相交」單元格的條件格式規則。然後,我可以在此子項中使用條件格式並根據需要在其他項中刪除它。VBA代碼使用相交來選擇單元格並將條件格式應用於

以下是用於選擇(突出顯示)相交列和行(未合併)的工作代碼。我希望有人知道創建一個條件格式規則的方法,該規則只需將匹配的興趣單元格背景顏色設置爲綠色即可。任何想法都會很棒? :-)

Sub previewSub() 
    Dim ws As Worksheet 

    For Each ws In ActiveWorkbook.Worksheets 
     Call previewDisplayColumnRow(ws) 

    Next 
     MsgBox "Click on each Worksheets to preview columns/rows which will be displayed after clicking on 'UPDATE LAYOUT'" 
End Sub 

Sub previewDisplayColumnRow(ws As Worksheet) 

    Dim DisplayColumns  As Variant 
    Dim DisplayRows   As Variant 
    Dim HideColumnsRows  As Variant 
    Dim SelectColumnsRows As String 
    Dim myrange 

    Set myrange = Worksheets("Settings").Range("range_sheetProperties") 

    'Lookup Worksheet name and identify columns & rows to display 
    HideColumnsRows = Application.VLookup(ws.Name, myrange, 6, False) 

    If Not IsError(HideColumnsRows) Then 'If no error. 

     DisplayColumns = Application.VLookup(ws.Name, myrange, 7, False) 
     DisplayRows = Application.VLookup(ws.Name, myrange, 8, False) 

     SelectColumnsRows = DisplayColumns & "," & DisplayRows 

     'Selects Columns/Rows which will be hidden 
     If HideColumnsRows = "Y" Then 
      'MsgBox ws.Name & " - " & SelectColumnsRows 
      ws.Activate 
      Intersect(ws.Range(DisplayColumns), ws.Range(DisplayRows)).Select 
     End If 

    End If 
End Sub 

回答

0

對於那些將來需要一隻手的人,我得到了這個工作。見下文!

Sub previewSub() 
    Dim ws As Worksheet 

    For Each ws In ActiveWorkbook.Worksheets 
     Call previewDisplayColumnRow(ws) 

    Next 
     Sheets("Settings").Activate 
     MsgBox "Click on each Worksheets to preview columns/rows which will be displayed after clicking on 'UPDATE LAYOUT'" 
End Sub 

Sub previewDisplayColumnRow(ws As Worksheet) 

    Dim DisplayColumns  As Variant 
    Dim DisplayRows   As Variant 
    Dim HideColumnsRows  As Variant 
    Dim SelectColumnsRows As String 
    Dim myrange 

    Set myrange = Worksheets("Settings").Range("range_sheetProperties") 

    'Lookup Worksheet name and identify columns & rows to display 
    HideColumnsRows = Application.VLookup(ws.Name, myrange, 6, False) 

    If Not IsError(HideColumnsRows) Then 'If no error. 

     DisplayColumns = Application.VLookup(ws.Name, myrange, 7, False) 
     DisplayRows = Application.VLookup(ws.Name, myrange, 8, False) 

     SelectColumnsRows = DisplayColumns & "," & DisplayRows 

     'Selects Columns/Rows which will be hidden 
     If HideColumnsRows = "Y" Then 
      'MsgBox ws.Name & " - " & SelectColumnsRows 
      ws.Activate 
      Cells.FormatConditions.Delete 
      ws.Columns.EntireColumn.Hidden = False 
      ws.Columns.EntireRow.Hidden = False 

      With Intersect(ws.Range(DisplayColumns), ws.Range(DisplayRows)) 
       .FormatConditions.Add Type:=xlExpression, Formula1:="=$A$1<>""WHOs GOING TO TYPE THIS NOBODY""" 
       .FormatConditions(1).Interior.PatternColorIndex = xlAutomatic 
       .FormatConditions(1).Interior.Color = 13561798 
       .FormatConditions(1).Interior.TintAndShade = 0 
      End With 
     End If 
    End If 
End Sub 
相關問題