Board logo

標題: 隱藏 [打印本頁]

作者: myleoyes    時間: 2010-6-16 19:27     標題: 隱藏

各位前輩你們好!
        前輩!問題如附檔案說明 
           Leov9是隱藏
           Leov10是差異還原
          請知道的前輩,不吝賜教謝謝再三!!
作者: victorl    時間: 2010-6-17 00:04

本帖最後由 victorl 於 2010-6-17 00:39 編輯

For Leov9
把所有範圍先隱藏再將選取欲呈現的範圍顯示,應該就OK了吧
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 3 Then
        Rows("13:72").Hidden = True   
        Rows(Target.Row - 1 & ":" & Target.Row + 10).EntireRow.Hidden = False
    End If
    Range("B1").Select
End Sub

For Leov10
把Target.Row當引數呼叫程序(Ex. Call 確定差異還原(Target.Row))
下方藍色部分為原程式碼有修改部分.
Sub 確定差異還原(tRow As Integer)
          ...
    ElseIf [A1] = "部份" Then Call 差異部份還原(tRow)
          ...
Sub 差異部份還原(tRow As Integer)
    Range(Cells(tRow - 1, 3), Cells(tRow + 10, 256)).Copy Sheet11.[C65536].End(xlUp).Offset(0, 0)
    Sheet11.Select
End Sub
作者: GBKEE    時間: 2010-6-17 08:03

本帖最後由 GBKEE 於 2010-6-17 08:04 編輯

回復 1# myleoyes
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.      Select Case Target(1).Address(0, 0)
  3.         Case "A1"
  4.             欄
  5.         Case "B1"
  6.             列
  7.     End Select
  8.     If Not Intersect(Target(1), Range("C13:C" & Rows.Count)) Is Nothing Then
  9. 'Love10 同理
  10.     If Target(1).Column = 3 And Target(1) <> "" Then 隱藏
  11.     End If
  12. End Sub

  13. ''''''''''''''''''''''''''''''''''''''''''''''''''''
  14. Sub 隱藏()
  15.     Dim R
  16.     R = (ActiveCell.Row Mod 12)
  17.     If R = 0 Then
  18.         R = ActiveCell.Row - 11 & ":" & ActiveCell.Row
  19.     Else
  20.         R = ActiveCell.Row - R + 1 & ":" & ActiveCell.Row + (12 - R)
  21.     End If
  22.     Rows("13:" & Rows.Count).EntireRow.Hidden = True
  23.     Rows(R).EntireRow.Hidden = False
  24. End Sub
  25. ''''''''''''''''''''''''''''''''''''''''''''''''''''
  26. Sub 差異部份還原()
  27.     Dim R
  28.     R = (ActiveCell.Row Mod 12)
  29.     If R = 0 Then
  30.         R = "C" & ActiveCell.Row - 11 & ":IV" & ActiveCell.Row
  31.     Else
  32.         R = "C" & ActiveCell.Row - R + 1 & ":IV" & ActiveCell.Row + (12 - R)
  33.     End If
  34.     Range(R).Copy Sheet11.[C65536].End(xlUp).Offset(0, 0)
  35.     Sheet11.Select
  36. End Sub
複製代碼

作者: myleoyes    時間: 2010-6-17 10:53

回復 3# GBKEE
victorl 前輩你好!
       前輩謝謝!!
       For Leov9這樣隱藏是對的
       但是只要碰到其他儲存格
       就會執行隱藏,會徒增困擾
       至於For Leov10這段程式
       把Target.Row當引數呼叫程序(Ex. Call 確定差異還原(Target.Row))
       小弟無法理解尚請前備指導謝謝再三!

GBKEE前輩你好!
     良師!問題1,2如附檔說明
               又再麻煩你囉!謝謝再三!!
作者: GBKEE    時間: 2010-6-17 11:46

回復 4# myleoyes
  1. Sub 隱藏()
  2.     Dim R
  3.     R = (ActiveCell.Row Mod 12)
  4.     If R = 2 Then
  5.          R = ActiveCell.Row - R + 1 & ":" & ActiveCell.Row + (12 - R)
  6.         Rows("13:" & Rows.Count).EntireRow.Hidden = True
  7.         Rows(R).EntireRow.Hidden = False
  8.     End If
  9. End Sub
複製代碼
  1. Sub 差異部份還原()
  2.     Dim R, Rng As Range
  3.     R = (ActiveCell.Row Mod 12)
  4.     If R = 0 Then
  5.         R = "C" & ActiveCell.Row - 11 & ":IV" & ActiveCell.Row
  6.     Else
  7.         R = "C" & ActiveCell.Row - R + 1 & ":IV" & ActiveCell.Row + (12 - R)
  8.     End If
  9.     Set Rng = Sheet11.[C65536].End(xlUp).Offset(1)
  10.     If Sheet11.[C65536].End(xlUp).Row = 1 Then Set Rng = Sheet11.[C65536].End(xlUp)
  11.     Range(R).Copy Rng
  12.     Sheet11.Select
  13. End Sub
複製代碼

作者: victorl    時間: 2010-6-17 19:55

感謝GBKEE版大,小弟受教了;竟然忽略掉了 Target=ActiveCell。
作者: GBKEE    時間: 2010-6-18 05:27

回復 6# victorl
   Target.Cells(1) = ActiveCell
   Target = Selection
作者: myleoyes    時間: 2010-6-21 22:11

回復 7# GBKEE
GBKEE前輩你好!
     良師!疑惑這帖明明當天就回覆!
             為何?又不見文章??這樣也好
                另一問題昨日解一整天無法弄成
                附檔請再幫忙謝謝再三!!
作者: GBKEE    時間: 2010-6-22 07:18

回復 8# myleoyes
  1. Sub 多重選取()
  2.     Dim R, A As Range
  3.     Rows("3:" & Rows.Count).EntireRow.Hidden = True
  4.     '隱藏的範圍內如有任何的物件則 -> .Hidden = True 會產生錯誤
  5.    'Sheets("差異備份")第2列的列高 請調高一些 或 [取消] 按鈕 上移 OR 縮小
  6.    '否則 執行上面程式碼會產生錯誤
  7.     For Each A In Selection.Areas  '選取C16+C40+...的範圍
  8.         If A.Row <= 14 Then
  9.             R = 3 & ":" & 14
  10.         Else
  11.             R = Int((A.Row - 3) / 12)
  12.             R = 3 + (12 * R) & ":" & 3 + (12 * (R + 1)) - 1
  13.         End If
  14.         Rows(R).EntireRow.Hidden = False
  15.     Next
  16. End Sub
複製代碼

作者: myleoyes    時間: 2010-6-22 21:10

回復 9# GBKEE
GBKEE前輩你好!
     良師!辛苦囉!!謝謝再三!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)