checkbox控制其他checkboxINTERMITTENTLY导致Excel崩溃

不胜感激。 我可以从字面上将文本框中的代码减半。 我不知道我是否超过了这个限制,但是如果你有时间浏览它,这里是完整的代码。

其中80%是旧语法中的真/假陈述,但是这可能是因为它是如此之大吗?

Private Sub CommandButton2_Click() Dim irow As Long Dim ws As Worksheet Set ws = Worksheets("Master Data") ' Confirmation of Entry to Form If MsgBox("Have you double checked your data is correct and ALL test points have been selected before entering on the spreadsheet?", vbYesNo) = vbNo Then Exit Sub ' Find first empty cell in Column A after existing data NextFree = Range("A10:A" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row Range("A" & NextFree).Select ' Insert row below active cell ActiveCell.Offset(1).EntireRow.Insert ' Copy Live formula and Out Today formulas down from cells above in Col A, B and C ' Enters the data from the corresponding VBA form into offset cells from active cell reference Dim lstRw As Long Dim Rng As Range lstRw = Cells(Rows.Count, "A").End(xlUp).Row Set Rng = Range("A" & lstRw + 1) Range("A" & lstRw & ":NK" & lstRw).Copy Range("A" & lstRw + 1) With Rng .Offset(, 3) = DateTextBox.Value .Offset(, 4) = GroupComboBox.Value .Offset(, 5) = ProjectTextBox.Value .Offset(, 6) = ReqTextBox.Value .Offset(, 7) = PartTextBox.Value .Offset(, 9) = COSHHTextBox.Value .Offset(, 10) = ContainerComboBox.Value .Offset(, 11) = SampleIDTextBox.Value .Offset(, 14) = TechComboBox.Text .Offset(, 15) = ChemComboBox.Text ' Locations For temperatures .Offset(, 17) = TextBox60Tray.Text .Offset(, 19) = TextBox50Tray.Text .Offset(, 21) = TextBox40Tray.Text .Offset(, 23) = RTTb.Text .Offset(, 25) = Minus15Tb.Text 'Brookfield CheckBox Logic statement If BrookfieldCB.Value = True Then .Offset(, 27).Value = 1 If BrookfieldCB.Value = False Then .Offset(, 27).Value = "" .Offset(, 28) = BrookfieldKitTextBox.Value 'AntonParr CheckBox Logic statement If AntonParrCB.Value = True Then .Offset(, 29).Value = 1 If AntonParrCB.Value = False Then .Offset(, 29).Value = "" 'Filter Index OptionButtons Logic statement If Option1.Value = True Then .Offset(, 30).Value = 1 If Option2.Value = True Then .Offset(, 31).Value = 1 .Offset(, 32) = FilterIndexKitTextBox.Value 'Malvern Dv90 CheckBox Logic statement If MalvernDv90CB.Value = True Then .Offset(, 33).Value = 1 If MalvernDv90CB.Value = False Then .Offset(, 33).Value = "" 'Malvern Dn90 CheckBox Logic statement If MalvernDv90CB.Value = True Then .Offset(, 34).Value = 1 If MalvernDv90CB.Value = False Then .Offset(, 34).Value = "" 'Solvent Malvern CheckBox Logic statement If SolvMalvCB.Value = True Then .Offset(, 35).Value = 1 If SolvMalvCB.Value = False Then .Offset(, 35).Value = "" 'Microscope CheckBox Logic statement If MicroscopeCB.Value = True Then .Offset(, 36).Value = 1 If MicroscopeCB.Value = False Then .Offset(, 36).Value = "" 'Accusizer CheckBox Logic statement If AccusizerCB.Value = True Then .Offset(, 37).Value = 1 If AccusizerCB.Value = False Then .Offset(, 37).Value = "" 'Lumisizer CheckBox Logic statement If LumisizerCB.Value = True Then .Offset(, 38).Value = 1 If LumisizerCB.Value = False Then .Offset(, 38).Value = "" 'Surface Tension CheckBox Logic statement If SurfaceTCB.Value = True Then .Offset(, 39).Value = 1 If SurfaceTCB.Value = False Then .Offset(, 39).Value = "" 'Phase Angle CheckBox Logic statement If PhaseACB.Value = True Then .Offset(, 40).Value = 1 If PhaseACB.Value = False Then .Offset(, 40).Value = "" 'Water Content CheckBox Logic statement If WaterContCB.Value = True Then .Offset(, 41).Value = 1 If WaterContCB.Value = False Then .Offset(, 41).Value = "" 'pH Testing CheckBox Logic statement If pHCB.Value = True Then .Offset(, 42).Value = 1 If pHCB.Value = False Then .Offset(, 42).Value = "" 'Film Properties CheckBox Logic statement If FilmPropsCB.Value = True Then .Offset(, 43).Value = 1 If FilmPropsCB.Value = False Then .Offset(, 43).Value = "" 'Karl Fischer CheckBox Logic statement If KarlFischerCB.Value = True Then .Offset(, 44).Value = 1 If KarlFischerCB.Value = False Then .Offset(, 44).Value = "" 'Panelling CheckBox Logic statement If PanellingCB.Value = True Then .Offset(, 45).Value = 1 If PanellingCB.Value = False Then .Offset(, 45).Value = "" 'Sedimentation CheckBox Logic statement If SedimentationCB.Value = True Then .Offset(, 46).Value = 1 If SedimentationCB.Value = False Then .Offset(, 46).Value = "" '60° CheckBox logic statements If W1T60.Value = True Then .Offset(, 48).Value = 1 If W1T60.Value = False Then .Offset(, 48).Value = "" If W2T60.Value = True Then .Offset(, 50).Value = 1 If W2T60.Value = False Then .Offset(, 50).Value = "" If W3T60.Value = True Then .Offset(, 52).Value = 1 If W3T60.Value = False Then .Offset(, 52).Value = "" If W4T60.Value = True Then .Offset(, 54).Value = 1 If W4T60.Value = False Then .Offset(, 54).Value = "" If W5T60.Value = True Then .Offset(, 56).Value = 1 If W5T60.Value = False Then .Offset(, 56).Value = "" If W6T60.Value = True Then .Offset(, 58).Value = 1 If W6T60.Value = False Then .Offset(, 58).Value = "" If W7T60.Value = True Then .Offset(, 60).Value = 1 If W7T60.Value = False Then .Offset(, 60).Value = "" If W8T60.Value = True Then .Offset(, 62).Value = 1 If W8T60.Value = False Then .Offset(, 62).Value = "" '50° CheckBox logic statements If Wk1T50.Value = True Then .Offset(, 64).Value = 1 If Wk1T50.Value = False Then .Offset(, 64).Value = "" If Wk2T50.Value = True Then .Offset(, 66).Value = 1 If Wk2T50.Value = False Then .Offset(, 66).Value = "" If WK3T50.Value = True Then .Offset(, 68).Value = 1 If WK3T50.Value = False Then .Offset(, 68).Value = "" If WK4T50.Value = True Then .Offset(, 70).Value = 1 If WK4T50.Value = False Then .Offset(, 70).Value = "" If WEEK5T50.Value = True Then .Offset(, 72).Value = 1 If WEEK5T50.Value = False Then .Offset(, 72).Value = "" If WK6T50.Value = True Then .Offset(, 74).Value = 1 If WK6T50.Value = False Then .Offset(, 74).Value = "" If WK7T50.Value = True Then .Offset(, 76).Value = 1 If WK7T50.Value = False Then .Offset(, 76).Value = "" If WK8T50.Value = True Then .Offset(, 78).Value = 1 If WK8T50.Value = False Then .Offset(, 78).Value = "" If WK10T50.Value = True Then .Offset(, 80).Value = 1 If WK10T50.Value = False Then .Offset(, 80).Value = "" If WK12T50.Value = True Then .Offset(, 82).Value = 1 If WK12T50.Value = False Then .Offset(, 82).Value = "" If WK14T50.Value = True Then .Offset(, 84).Value = 1 If WK14T50.Value = False Then .Offset(, 84).Value = "" If WK16T50.Value = True Then .Offset(, 86).Value = 1 If WK16T50.Value = False Then .Offset(, 86).Value = "" '40° CheckBox logic statements If WK1T40.Value = True Then .Offset(, 88).Value = 1 If WK1T40.Value = False Then .Offset(, 88).Value = "" If WK2T40.Value = True Then .Offset(, 90).Value = 1 If WK2T40.Value = False Then .Offset(, 90).Value = "" If WK3T40.Value = True Then .Offset(, 92).Value = 1 If WK3T40.Value = False Then .Offset(, 92).Value = "" If WK4T40.Value = True Then .Offset(, 94).Value = 1 If WK4T40.Value = False Then .Offset(, 94).Value = "" If WK5T40.Value = True Then .Offset(, 96).Value = 1 If WK5T40.Value = False Then .Offset(, 96).Value = "" If WK6T40.Value = True Then .Offset(, 98).Value = 1 If WK6T40.Value = False Then .Offset(, 98).Value = "" If WK7T40.Value = True Then .Offset(, 100).Value = 1 If WK7T40.Value = False Then .Offset(, 100).Value = "" If WK8T40.Value = True Then .Offset(, 102).Value = 1 If WK8T40.Value = False Then .Offset(, 102).Value = "" If WK10T40.Value = True Then .Offset(, 104).Value = 1 If WK10T40.Value = False Then .Offset(, 104).Value = "" If WK12T40.Value = True Then .Offset(, 106).Value = 1 If WK12T40.Value = False Then .Offset(, 106).Value = "" If WK14T40.Value = True Then .Offset(, 108).Value = 1 If WK14T40.Value = False Then .Offset(, 108).Value = "" If WK16T40.Value = True Then .Offset(, 110).Value = 1 If WK16T40.Value = False Then .Offset(, 110).Value = "" If WK20T40.Value = True Then .Offset(, 112).Value = 1 If WK20T40.Value = False Then .Offset(, 112).Value = "" If WK24T40.Value = True Then .Offset(, 114).Value = 1 If WK24T40.Value = False Then .Offset(, 114).Value = "" If WK28T40.Value = True Then .Offset(, 116).Value = 1 If WK28T40.Value = False Then .Offset(, 116).Value = "" If WK32T40.Value = True Then .Offset(, 118).Value = 1 If WK32T40.Value = False Then .Offset(, 118).Value = "" '1 - 104wk CheckBox logic statements If wk1tb.Value = True Then .Offset(, 120).Value = 1 If wk1tb.Value = False Then .Offset(, 120).Value = "" If wk2tb.Value = True Then .Offset(, 122).Value = 1 If wk2tb.Value = False Then .Offset(, 122).Value = "" If wk3tb.Value = True Then .Offset(, 124).Value = 1 If wk3tb.Value = False Then .Offset(, 124).Value = "" If wk4tb.Value = True Then .Offset(, 126).Value = 1 If wk4tb.Value = False Then .Offset(, 126).Value = "" If wk5tb.Value = True Then .Offset(, 128).Value = 1 If wk5tb.Value = False Then .Offset(, 128).Value = "" If wk6tb.Value = True Then .Offset(, 130).Value = 1 If wk6tb.Value = False Then .Offset(, 130).Value = "" If wk7tb.Value = True Then .Offset(, 132).Value = 1 If wk7tb.Value = False Then .Offset(, 132).Value = "" If wk8tb.Value = True Then .Offset(, 134).Value = 1 If wk8tb.Value = False Then .Offset(, 134).Value = "" If wk9tb.Value = True Then .Offset(, 136).Value = 1 If wk9tb.Value = False Then .Offset(, 136).Value = "" If wk10tb.Value = True Then .Offset(, 138).Value = 1 If wk10tb.Value = False Then .Offset(, 138).Value = "" If wk11tb.Value = True Then .Offset(, 140).Value = 1 If wk11tb.Value = False Then .Offset(, 140).Value = "" If wk12tb.Value = True Then .Offset(, 142).Value = 1 If wk12tb.Value = False Then .Offset(, 142).Value = "" If wk13tb.Value = True Then .Offset(, 144).Value = 1 If wk13tb.Value = False Then .Offset(, 144).Value = "" If wk14tb.Value = True Then .Offset(, 146).Value = 1 If wk14tb.Value = False Then .Offset(, 146).Value = "" If wk15tb.Value = True Then .Offset(, 148).Value = 1 If wk15tb.Value = False Then .Offset(, 148).Value = "" If wk16tb.Value = True Then .Offset(, 150).Value = 1 If wk16tb.Value = False Then .Offset(, 150).Value = "" If wk17tb.Value = True Then .Offset(, 152).Value = 1 If wk17tb.Value = False Then .Offset(, 152).Value = "" If wk18tb.Value = True Then .Offset(, 154).Value = 1 If wk18tb.Value = False Then .Offset(, 154).Value = "" If wk19tb.Value = True Then .Offset(, 156).Value = 1 If wk19tb.Value = False Then .Offset(, 156).Value = "" If wk20tb.Value = True Then .Offset(, 158).Value = 1 If wk20tb.Value = False Then .Offset(, 158).Value = "" If wk21tb.Value = True Then .Offset(, 160).Value = 1 If wk21tb.Value = False Then .Offset(, 160).Value = "" If wk22tb.Value = True Then .Offset(, 162).Value = 1 If wk22tb.Value = False Then .Offset(, 162).Value = "" If wk23tb.Value = True Then .Offset(, 164).Value = 1 If wk23tb.Value = False Then .Offset(, 164).Value = "" If wk24tb.Value = True Then .Offset(, 166).Value = 1 If wk24tb.Value = False Then .Offset(, 166).Value = "" If wk25tb.Value = True Then .Offset(, 168).Value = 1 If wk25tb.Value = False Then .Offset(, 168).Value = "" If wk26tb.Value = True Then .Offset(, 170).Value = 1 If wk26tb.Value = False Then .Offset(, 170).Value = "" If wk27tb.Value = True Then .Offset(, 172).Value = 1 If wk27tb.Value = False Then .Offset(, 172).Value = "" If wk28tb.Value = True Then .Offset(, 174).Value = 1 If wk28tb.Value = False Then .Offset(, 174).Value = "" If wk29tb.Value = True Then .Offset(, 176).Value = 1 If wk29tb.Value = False Then .Offset(, 176).Value = "" If wk30tb.Value = True Then .Offset(, 178).Value = 1 If wk30tb.Value = False Then .Offset(, 178).Value = "" If wk31tb.Value = True Then .Offset(, 180).Value = 1 If wk31tb.Value = False Then .Offset(, 180).Value = "" If wk32tb.Value = True Then .Offset(, 182).Value = 1 If wk32tb.Value = False Then .Offset(, 182).Value = "" If wk33tb.Value = True Then .Offset(, 184).Value = 1 If wk33tb.Value = False Then .Offset(, 184).Value = "" If wk34tb.Value = True Then .Offset(, 186).Value = 1 If wk34tb.Value = False Then .Offset(, 186).Value = "" If wk35tb.Value = True Then .Offset(, 188).Value = 1 If wk35tb.Value = False Then .Offset(, 188).Value = "" If wk36tb.Value = True Then .Offset(, 190).Value = 1 If wk36tb.Value = False Then .Offset(, 190).Value = "" If wk37tb.Value = True Then .Offset(, 192).Value = 1 If wk37tb.Value = False Then .Offset(, 192).Value = "" If wk38tb.Value = True Then .Offset(, 194).Value = 1 If wk38tb.Value = False Then .Offset(, 194).Value = "" If wk39tb.Value = True Then .Offset(, 196).Value = 1 If wk39tb.Value = False Then .Offset(, 196).Value = "" If wk40tb.Value = True Then .Offset(, 198).Value = 1 If wk40tb.Value = False Then .Offset(, 198).Value = "" If wk41tb.Value = True Then .Offset(, 200).Value = 1 If wk41tb.Value = False Then .Offset(, 200).Value = "" If wk42tb.Value = True Then .Offset(, 202).Value = 1 If wk42tb.Value = False Then .Offset(, 202).Value = "" If wk43tb.Value = True Then .Offset(, 204).Value = 1 If wk43tb.Value = False Then .Offset(, 204).Value = "" If wk44tb.Value = True Then .Offset(, 206).Value = 1 If wk44tb.Value = False Then .Offset(, 206).Value = "" If wk45tb.Value = True Then .Offset(, 208).Value = 1 If wk45tb.Value = False Then .Offset(, 208).Value = "" If wk46tb.Value = True Then .Offset(, 210).Value = 1 If wk46tb.Value = False Then .Offset(, 210).Value = "" If wk47tb.Value = True Then .Offset(, 212).Value = 1 If wk47tb.Value = False Then .Offset(, 212).Value = "" If wk48tb.Value = True Then .Offset(, 214).Value = 1 If wk48tb.Value = False Then .Offset(, 214).Value = "" If wk49tb.Value = True Then .Offset(, 216).Value = 1 If wk49tb.Value = False Then .Offset(, 216).Value = "" If wk50tb.Value = True Then .Offset(, 218).Value = 1 If wk50tb.Value = False Then .Offset(, 218).Value = "" If wk51tb.Value = True Then .Offset(, 220).Value = 1 If wk51tb.Value = False Then .Offset(, 220).Value = "" If wk52tb.Value = True Then .Offset(, 222).Value = 1 If wk52tb.Value = False Then .Offset(, 222).Value = "" '-15° CheckBox logic statements If WK1T15.Value = True Then .Offset(, 328).Value = 1 If WK1T15.Value = False Then .Offset(, 328).Value = "" If WK2T15.Value = True Then .Offset(, 330).Value = 1 If WK2T15.Value = False Then .Offset(, 330).Value = "" If WK3T15.Value = True Then .Offset(, 332).Value = 1 If WK3T15.Value = False Then .Offset(, 332).Value = "" If WK4T15.Value = True Then .Offset(, 334).Value = 1 If WK4T15.Value = False Then .Offset(, 334).Value = "" If WK5T15.Value = True Then .Offset(, 336).Value = 1 If WK5T15.Value = False Then .Offset(, 336).Value = "" If WK6T15.Value = True Then .Offset(, 338).Value = 1 If WK6T15.Value = False Then .Offset(, 338).Value = "" If WK7T15.Value = True Then .Offset(, 340).Value = 1 If WK7T15.Value = False Then .Offset(, 340).Value = "" If WK8T15.Value = True Then .Offset(, 342).Value = 1 If WK8T15.Value = False Then .Offset(, 342).Value = "" '-15° CheckBox logic statements If WK1TFRIDGE.Value = True Then .Offset(, 344).Value = 1 If WK1TFRIDGE.Value = False Then .Offset(, 344).Value = "" If WK2TFRIDGE.Value = True Then .Offset(, 346).Value = 1 If WK2TFRIDGE.Value = False Then .Offset(, 346).Value = "" If WK3TFRIDGE.Value = True Then .Offset(, 348).Value = 1 If WK3TFRIDGE.Value = False Then .Offset(, 348).Value = "" If WK4TFRIDGE.Value = True Then .Offset(, 350).Value = 1 If WK4TFRIDGE.Value = False Then .Offset(, 350).Value = "" If WK5TFRIDGE.Value = True Then .Offset(, 352).Value = 1 If WK5TFRIDGE.Value = False Then .Offset(, 352).Value = "" If WK6TFRIDGE.Value = True Then .Offset(, 354).Value = 1 If WK6TFRIDGE.Value = False Then .Offset(, 354).Value = "" If WK7TFRIDGE.Value = True Then .Offset(, 356).Value = 1 If WK7TFRIDGE.Value = False Then .Offset(, 356).Value = "" If WK8TFRIDGE.Value = True Then .Offset(, 358).Value = 1 If WK8TFRIDGE.Value = False Then .Offset(, 358).Value = "" End With End Sub Private Sub Gate60Tb_Click() '60° Gate TickBox Control Me.W1T60.Value = Me.Gate60Tb.Value Me.W2T60.Value = Me.Gate60Tb.Value Me.W3T60.Value = Me.Gate60Tb.Value Me.W4T60.Value = Me.Gate60Tb.Value End Sub Private Sub Gate50Tb_Click() '50° Gate TickBox Control If Gate50Tb.Value = True Then Wk2T50.Value = 1 If Gate50Tb.Value = False Then Wk2T50.Value = 0 If Gate50Tb.Value = True Then WK4T50.Value = 1 If Gate50Tb.Value = False Then WK4T50.Value = 0 If Gate50Tb.Value = True Then WK6T50.Value = 1 If Gate50Tb.Value = False Then WK6T50.Value = 0 If Gate50Tb.Value = True Then WK8T50.Value = 1 If Gate50Tb.Value = False Then WK8T50.Value = 0 End Sub Private Sub Gate40Tb_Click() ' Gate 40° Tickbox Control If Gate40Tb.Value = True Then WK4T40.Value = 1 If Gate40Tb.Value = False Then WK4T40.Value = 0 If Gate40Tb.Value = True Then WK8T40.Value = 1 If Gate40Tb.Value = False Then WK8T40.Value = 0 If Gate40Tb.Value = True Then WK12T40.Value = 1 If Gate40Tb.Value = False Then WK12T40.Value = 0 If Gate40Tb.Value = True Then WK16T40.Value = 1 If Gate40Tb.Value = False Then WK16T40.Value = 0 End Sub Private Sub GateRT48wk_Click() If GateRT48wk.Value = True Then wk6tb.Value = 1 If GateRT48wk.Value = False Then wk6tb.Value = 0 If GateRT48wk.Value = True Then wk12tb.Value = 1 If GateRT48wk.Value = False Then wk12tb.Value = 0 If GateRT48wk.Value = True Then wk18tb.Value = 1 If GateRT48wk.Value = False Then wk18tb.Value = 0 If GateRT48wk.Value = True Then wk24tb.Value = 1 If GateRT48wk.Value = False Then wk24tb.Value = 0 If GateRT48wk.Value = True Then wk30tb.Value = 1 If GateRT48wk.Value = False Then wk30tb.Value = 0 If GateRT48wk.Value = True Then wk36tb.Value = 1 If GateRT48wk.Value = False Then wk36tb.Value = 0 If GateRT48wk.Value = True Then wk42tb.Value = 1 If GateRT48wk.Value = False Then wk42tb.Value = 0 If GateRT48wk.Value = True Then wk48tb.Value = 1 If GateRT48wk.Value = False Then wk48tb.Value = 0 End Sub Private Sub GateRT52wk_Click() ' Gate RT Tickbox Control If GateRT52wk.Value = True Then wk4tb.Value = 1 If GateRT52wk.Value = False Then wk4tb.Value = 0 If GateRT52wk.Value = True Then wk8tb.Value = 1 If GateRT52wk.Value = False Then wk8tb.Value = 0 If GateRT52wk.Value = True Then wk12tb.Value = 1 If GateRT52wk.Value = False Then wk12tb.Value = 0 If GateRT52wk.Value = True Then wk16tb.Value = 1 If GateRT52wk.Value = False Then wk16tb.Value = 0 If GateRT52wk.Value = True Then wk20tb.Value = 1 If GateRT52wk.Value = False Then wk20tb.Value = 0 If GateRT52wk.Value = True Then wk24tb.Value = 1 If GateRT52wk.Value = False Then wk24tb.Value = 0 If GateRT52wk.Value = True Then wk28tb.Value = 1 If GateRT52wk.Value = False Then wk28tb.Value = 0 If GateRT52wk.Value = True Then wk32tb.Value = 1 If GateRT52wk.Value = False Then wk32tb.Value = 0 If GateRT52wk.Value = True Then wk36tb.Value = 1 If GateRT52wk.Value = False Then wk36tb.Value = 0 If GateRT52wk.Value = True Then wk40tb.Value = 1 If GateRT52wk.Value = False Then wk40tb.Value = 0 If GateRT52wk.Value = True Then wk44tb.Value = 1 If GateRT52wk.Value = False Then wk44tb.Value = 0 If GateRT52wk.Value = True Then wk48tb.Value = 1 If GateRT52wk.Value = False Then wk48tb.Value = 0 If GateRT52wk.Value = True Then wk52tb.Value = 1 If GateRT52wk.Value = False Then wk52tb.Value = 0 End Sub Private Sub GateRTQ1_Click() ' Gate RT Year 1 Qtly Tickbox Control If GateRTQ1.Value = True Then wk13tb.Value = 1 If GateRTQ1.Value = False Then wk13tb.Value = 0 If GateRTQ1.Value = True Then wk26tb.Value = 1 If GateRTQ1.Value = False Then wk26tb.Value = 0 If GateRTQ1.Value = True Then wk39tb.Value = 1 If GateRTQ1.Value = False Then wk39tb.Value = 0 If GateRTQ1.Value = True Then wk52tb.Value = 1 If GateRTQ1.Value = False Then wk52tb.Value = 0 End Sub Private Sub GateRTQ2_Click() ' Gate RT Year 2 Qtly Tickbox Control If GateRTQ2.Value = True Then wk65tb.Value = 1 If GateRTQ2.Value = False Then wk65tb.Value = 0 If GateRTQ2.Value = True Then wk78tb.Value = 1 If GateRTQ2.Value = False Then wk78tb.Value = 0 If GateRTQ2.Value = True Then wk91tb.Value = 1 If GateRTQ2.Value = False Then wk91tb.Value = 0 If GateRTQ2.Value = True Then wk104tb.Value = 1 If GateRTQ2.Value = False Then wk104tb.Value = 0 End Sub Private Sub Gate158wk_Click() '-15° 8@8 Gate TickBox Control If Gate158wk.Value = True Then WK8T15.Value = 1 If Gate158wk.Value = False Then WK8T15.Value = 0 End Sub Private Sub Gate151wk_Click() '-15° 8@1 Gate TickBox Control If Gate151wk.Value = True Then WK1T15.Value = 1 If Gate151wk.Value = False Then WK1T15.Value = 0 If Gate151wk.Value = True Then WK2T15.Value = 1 If Gate151wk.Value = False Then WK2T15.Value = 0 If Gate151wk.Value = True Then WK3T15.Value = 1 If Gate151wk.Value = False Then WK3T15.Value = 0 If Gate151wk.Value = True Then WK4T15.Value = 1 If Gate151wk.Value = False Then WK4T15.Value = 0 If Gate151wk.Value = True Then WK5T15.Value = 1 If Gate151wk.Value = False Then WK5T15.Value = 0 If Gate151wk.Value = True Then WK6T15.Value = 1 If Gate151wk.Value = False Then WK6T15.Value = 0 If Gate151wk.Value = True Then WK7T15.Value = 1 If Gate151wk.Value = False Then WK7T15.Value = 0 If Gate151wk.Value = True Then WK8T15.Value = 1 If Gate151wk.Value = False Then WK8T15.Value = 0 End Sub Private Sub GateFridge8wk_Click() 'Fridge 8@8 Gate TickBox Control If GateFridge8wk.Value = True Then WK8TFRIDGE.Value = 1 If GateFridge8wk.Value = False Then WK8TFRIDGE.Value = 0 End Sub Private Sub GateFridge1wk_Click() '-15° 8@1 Gate TickBox Control If GateFridge1wk.Value = True Then WK1TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK1TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK2TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK2TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK3TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK3TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK4TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK4TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK5TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK5TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK6TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK6TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK7TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK7TFRIDGE.Value = 0 If GateFridge1wk.Value = True Then WK8TFRIDGE.Value = 1 If GateFridge1wk.Value = False Then WK8TFRIDGE.Value = 0 End Sub 

我发现其他人有经验的forms与许多控制,他们说,一旦你超过200控制,你可能会开始注意到一些奇怪的/间歇性的事件/错误。

看到这里

我会减less窗体上的控件数量。

你也可以简化代码:

 Private Sub Gate60Tb_Click() '60° Gate TickBox Control Me.W1T60.Value = Me.Gate60Tb.Value Me.W2T60.Value = Me.Gate60Tb.Value Me.W3T60.Value = Me.Gate60Tb.Value Me.W4T60.Value = Me.Gate60Tb.Value End Sub 

请注意,插件“我”完全符合控制。 我想知道,如果你不小心在你的表单上用一个和你想象的控件名称相同的名称作为范围对象。

其他可能:

 Private Sub Gate60Tb_Click() '60° Gate TickBox Control with Me.Gate60Tb Me.W1T60.Value = .Value Me.W2T60.Value = .Value Me.W3T60.Value = .Value Me.W4T60.Value = .Value end with End Sub Private Sub Gate60Tb_Click() '60° Gate TickBox Control Dim bln as boolean bln = Me.Gate60Tb Me.W1T60.Value = bln Me.W2T60.Value = bln Me.W3T60.Value = bln Me.W4T60.Value = bln End Sub