[英]How do I convert these Sub procedures to work on two worksheets?
我正在使用桌面游戲MERP的字符表的工作簿版本。 它最初是由其他人(大約15年前)編寫的,因此其中大部分沒有針對現代用途進行優化,因此我一直在對其進行全面的改進。 我對這些公式很滿意,並且獲得了基本的編程概念,但是我對Virtual Basic並不熟悉。
作為大修的一部分,由於相關信息發生了顯着變化,因此我將原始頁面分成了打印頁面並計算了每個頁面的版本。 一頁使用宏隱藏未更改值的行,另一頁使用宏顯示所有行。 我正在嘗試修改宏,以便它影響兩個頁面而不是一個頁面,但是我顯然不了解所需的結構。
如何修改此設置,使其在“技能”表和“打印技能”表上執行相同的功能? 如果需要,我可以在“打印技能”上添加參考列,但我希望它與“技能”上的內容完全匹配,而無需再次檢查。 兩張紙上的相關數據相同。
這是原始代碼:
' HideSkills Macro
' This macro hides any line on the Skills sheet that doesn't
' have a 1 in the Display column.
Sub HideSkills()
SkillsHidden = True
Sheets("Skills").Select
ActiveSheet.Unprotect
Computation_Off
For Each rw In Range("SkillsList").Rows
If ActiveSheet.Cells(rw.Row, 21) = 0 Then
Rows(rw.Row).Select
Selection.EntireRow.Hidden = True
End If
Next rw
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Computation_On
End Sub
' ShowSkills Macro
' This macro shows all lines on the Skills sheet.
Sub ShowSkills()
SkillsHidden = False
Sheets("Skills").Select
ActiveSheet.Unprotect
Range("SkillsList").Rows.Select
Selection.EntireRow.Hidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.Cells(4, 2).Select
End Sub
這是優化方法並允許它們在多張紙上起作用的一種方法
Option Explicit
' This Sub hides any line on the sheet that doesn't have a 1 in the Display column.
Public Sub HideSkills(ByRef ws As Worksheet, Optional ByVal colID As Long = 21)
SkillsHidden = True
Computation_Off
With ws
.Unprotect
If .UsedRange.Rows.Count > 1 Then .UsedRange.AutoFilter Field:=colID, Criteria1:="1"
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Computation_On
End Sub
' This Sub shows all lines on the sheet
Public Sub ShowSkills(ByRef ws As Worksheet)
SkillsHidden = False
With ws
.Unprotect
.UsedRange.EntireRow.Hidden = False
If Not .AutoFilter Is Nothing Then .UsedRange.AutoFilter
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
.Activate
.Cells(4, 2).Activate
End With
End Sub
要為2個不同的圖紙調用Subs:
Public Sub testSheets()
HideSkills ThisWorkbook.Worksheets("Skills"), 21
HideSkills ThisWorkbook.Worksheets("Print Skills")
ShowSkills ThisWorkbook.Worksheets("Skills")
ShowSkills ThisWorkbook.Worksheets("Print Skills")
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.