簡體   English   中英

隱藏和取消隱藏excel項目的特定部分

[英]Hide and unhide specific parts of excel project

我剛開始使用VBA,目前正在努力尋找解決此問題的方法:

我了解隱藏的工作原理,並且具有隱藏一個范圍的行/列的代碼(Worksheets(“ Sheet3”)。Columns(“ A:G”)。EntireColumn.Hidden = True),但是我希望能夠存儲“列+工作表的列表”和行+工作表的列表。 然后針對兩個列表中的每個范圍循環運行隱藏代碼。

目前,這就是我所擁有的(但是我不知道如何使之工作):

Sub Test()
Application.ScreenUpdating = False
Dim i As Integer
Dim Lastrow As Long
Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To Lastrow
'To hide sheets
Sheets(Cells(i, 1).Value).Visible = False
'To hide row on sheet
Rows(Cells(i, 2).Value).Hidden = True
'To hide row on specific sheet
Sheets(Cells(i, 1).Value).Rows(Cells(i, 2).Value).Hidden = True

Next
Application.ScreenUpdating = True
End Sub

我將在這里發布我對聊天的最后回應,請讓我-和其他人聯系! -知道是否有幫助。

1)存儲要在XML的哪張紙上隱藏哪些行/列的值,如下所示:

<hideme>
  <Sheets>
    <Sheet name="Sheet1">
      <rows>
        <row range="3:3"/>
        <row range="13:13"/>
      </rows>
      <columns>
        <column range="C:C"/>
        <column range="F:F"/>
      </columns>
    </Sheet>
    <Sheet name="Sheet2"/>
    <Sheet name="Sheet3">
      <rows>
        <row range="5:5"/>
      </rows>
    </Sheet>
  </Sheets>
</hideme>

對於宏,您需要設置對Microsoft XML v6.0的引用。 (即在VB編輯器中,工具=>參考)。

Sub HideMe()

Dim xml As DOMDocument60
Dim xmlSheets As IXMLDOMNodeList
Dim n As IXMLDOMNode, r As IXMLDOMNode, c As IXMLDOMNode, xmlRows As IXMLDOMNodeList, xmlColumns As IXMLDOMNodeList
Dim ro As IXMLDOMNode, col As IXMLDOMNode, ran As String
Dim sh As Worksheet

Dim xmlpath As String

xmlpath = "[path to your xml]"

Set xml = New DOMDocument60
xml.Load (xmlpath)

Set xmlSheets = xml.DocumentElement.SelectNodes("//Sheet")

For Each n In xmlSheets 'Sheet nodes
    Set sh = ActiveWorkbook.Sheets(n.Attributes.getNamedItem("name").Text)
    Set r = n.SelectSingleNode("rows")
    If Not r Is Nothing Then
        Set xmlRows = r.SelectNodes("row")
        For i = 0 To xmlRows.Length - 1
            ran = xmlRows.Item(i).Attributes.getNamedItem("range").Text
            sh.Rows(ran).EntireRow.Hidden = True
        Next i
    End If

    Set c = n.SelectSingleNode("columns")
    If Not c Is Nothing Then
        Set xmlColumns = c.SelectNodes("column")
        For i = 0 To xmlColumns.Length - 1
            ran = xmlColumns.Item(i).Attributes.getNamedItem("range").Text
            sh.Range(ran).EntireColumn.Hidden = True
        Next i
    End If
Next n

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM