【问题标题】:Stream Lining a long code流式处理长代码
【发布时间】:2016-10-06 18:17:08
【问题描述】:

我有以下代码通过多个命令按钮运行。只是想知道是否有任何方法可以流线。每个按钮都在具有某些特征的流程中工作。我相信有办法切断多余的垃圾。

Private Sub CommandButton1_Click()
ActiveSheet.Unprotect "bir@2016"
 Range("A17").Select
    ActiveCell.FormulaR1C1 = "Research"
    Sheets("Questionnaire").Select
    Sheets("Questionnaire").Range("A1").Select
    Sheets("Analyst Score").Select
    Sheets("Questionnaire").Select
ActiveSheet.Protect "bir@2016"
End Sub

Private Sub CommandButton10_Click()
ActiveWorkbook.Unprotect "bir@2016"
Sheets("Investigation Comments Input").Visible = False
Sheets("Analyst Score").Visible = False
Sheets("Questionnaire").Select
ActiveWorkbook.Protect "bir@2016"
End Sub

Private Sub CommandButton11_Click()
ActiveWorkbook.Unprotect "bir@2016"
Sheets("Report Template").Visible = True
Sheets("Report Template").Select
Sheets("Report Template").Range("B4").Select
ActiveSheet.Protect "bir@2016"
End Sub

Private Sub Commandbutton2_Click()
ActiveSheet.Unprotect "bir@2016"
Range("A17").Select
    ActiveCell.FormulaR1C1 = "Quality Check"
    Sheets("Questionnaire").Select
    Sheets("Questionnaire").Range("A1").Select
    Sheets("Analyst Score").Select
    Sheets("Questionnaire").Select

Sheets("Questionnaire").Range("W1").Select
    ActiveCell.Value = Time
Sheets("Questionnaire").Range("A1").Select

ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton3_Click()
ActiveSheet.Unprotect "bir@2016"
Range("A17,B17,B1,C1,B3:B5,B7,H19:I127,O19:O127,K19:K127,L19:L127").Select
    Range("H19").Activate
    Selection.ClearContents
Sheets("Questionnaire").Select
Sheets("Questionnaire").Range("W1:X1,Z1:AE1").Select
ActiveSheet.Unprotect "bir@2016"
Selection.ClearContents
Sheets("Analyst Score").Select
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton4_Click()
ActiveSheet.Unprotect "bir@2016"
ActiveSheet.Unprotect "bir@2016"
Range("I19:I127").Select
    Range("I19").Activate
    Selection.ClearContents
    Range("N7").Select
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton5_Click()
ActiveSheet.Unprotect "bir@2016"
ActiveWindow.ScrollRow = 9
Range("A19").Select
ActiveWindow.FreezePanes = True
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton6_Click()
ActiveSheet.Unprotect "bir@2016"
ActiveWindow.FreezePanes = False
    ActiveWindow.SmallScroll Down:=-33
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton7_Click()
ActiveSheet.Unprotect "bir@2016"
ActiveSheet.Unprotect "bir@2016"
Range("H19:H127").Select
    Range("H19").Activate
    Selection.ClearContents
    Range("N7").Select
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton8_Click()
ActiveSheet.Unprotect "bir@2016"
Rows("17:127").Select
    Selection.EntireRow.Hidden = True
    Range("H5").Select
Range("Z:Z,AA:AA,AB:AB").Select
    Range("AB9").Activate
    Selection.EntireColumn.Hidden = True
    Range("M14").Select
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub CommandButton9_Click()
ActiveSheet.Unprotect "bir@2016"
Rows("17:127").Select
    Selection.EntireRow.Hidden = False
    Range("H5").Select
    Range("Z:Z,AA:AA,AB:AB").Select
    Range("AB9").Activate
    Selection.EntireColumn.Hidden = False
    Range("M14").Select
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub DEWS_Click()
ActiveSheet.Unprotect "bir@2016"
 Range("A17").Select
    ActiveCell.FormulaR1C1 = "Dews"
    Sheets("Questionnaire").Select
Sheets("Questionnaire").Range("W1").Select
    ActiveSheet.Unprotect "bir@2016"
    ActiveCell.Value = Time
    Range("W2").Value = Date
Sheets("Questionnaire").Range("A1").Select
ActiveSheet.Protect "bir@2016"
End Sub
Private Sub Worksheet_Calculate()
If Range("E5").Value < 1 Then Me.Shapes("CommandButton2").Visible = False
If Range("E5").Value > 1 Then Me.Shapes("CommandButton2").Visible = True
End Sub

【问题讨论】:

  • 摆脱所有.Select 将是第一个开始的地方。尝试阅读this
  • 如果你的代码有效,那么你的问题不应该在这里发布,而是在http://codereview.stackexchange.com/

标签: vba excel macros


【解决方案1】:

有很多方法可以缩短你的代码:

1) 从 Kyle 的评论开始,减少你的 select 语句。

2) 如果您希望直观地整理代码,请更好地利用空白。

3) 在 commandbutton4、commandbutton7 中,您取消保护同一张工作表两次。

除了上述之外,如果您需要这些按钮中的每一个,就没有什么可做的了。你确定你不能组合按钮?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2018-01-11
    • 2014-11-07
    • 1970-01-01
    相关资源
    最近更新 更多