【发布时间】:2014-10-09 23:13:18
【问题描述】:
也许你可以帮助我解决这个问题。 ckuhn203 建议我将所有重复的if-statement 分解为function。我正在尝试,但我无法弄清楚我做错了什么。
我有这个子:
Sub st_verdelen()
Worksheets("totaallijst").Activate
lastRtot = Sheets("totaallijst").Cells.SpecialCells(xlCellTypeLastCell).row
counter_all = 0
For a = 1 To lastRtot
slbkoppeling = Sheets("totaallijst").Cells(a, 8).Value
slbAanwezig = Sheets("totaallijst").Cells(a, 9).Value
If Sheets("totaallijst").Cells(a, 7).Value = "2A2" And SLBers = "Mvs" And slbstdperklas = Sheets("StdntKlas").Cells(15, 5).Value And slbkoppeling = "" And slbAanwezig = "" Then
If counter_all <= slbstdperklas And UUU = 0 Then
Sheets("totaallijst").Cells(a, 9).Value = SLBers
counter_all = counter_all + 1
If counter_all = slbstdperklas Then
UUU = 1
End If
End If
End If
If Sheets("totaallijst").Cells(a, 7).Value = "1B4C" And SLBers = "htp" And slbstdperklas = Sheets("StdntKlas").Cells(16, 5).Value And slbkoppeling = "" And slbAanwezig = "" Then
If counter_all <= slbstdperklas And VVV = 0 Then
Sheets("totaallijst").Cells(a, 9).Value = SLBers
counter_all = counter_all + 1
If counter_all = slbstdperklas Then
VVV = 1
End If
End If
End If
If Sheets("tot_list").Cells(a, 7).Value = "2G4" And blsers = "htp" And blsstdperklas = Sheets("StdntKlas").Cells(16, 6).Value And blskoppeling = "" And blsAanwezig = "" Then
If counterW <= blsstdperklas And WWW = 0 Then
Sheets("tot_list").Cells(a, 9).Value = blsers
counter_all = counter_all + 1
If counterW = blsstdperklas Then
WWW = 1
End If
End If
End If
next a
end sub
我试图将它们切成碎片,但不幸的是没有成功。我做过这样的事情:
Sub st_verdelen()
Worksheets("totaallijst").Activate
lastRtot = Sheets("totaallijst").Cells.SpecialCells(xlCellTypeLastCell).row
counter_all = 0
For a = 1 To lastRtot
If scan_slb("VCIT2A2", "Mvs", 15, 5, 0) Then
End If
If scan_slb("VCIT2A2", "htp", 16, 5, 0) Then
End If
If scan_slb("VCIT2A2", "htp", 16, 5, 0) Then
End If
next a
end sub
Function scan_slb(value1, value2, row, col, noneactief) As Boolean
scan_slb = (Sheets("totaallijst").Cells(a, 7).Value = value1 And SLBers = value2 And slbstdperklas = Sheets("StdntKlas").Cells(row, col).Value And slbkoppeling = "" And slbAanwezig = "")
counter_all = counter_all + 1
If counter_all = slbstdperklas Then
noneactief = 1
End If
End Function
我不知道我做错了什么。有什么建议吗?
counter_all 是必需的,这样它就不会再重复本节了。如果我把它排除在外,那么我就无法激活noneactief,这样if语句在被激活后就不会被激活。
【问题讨论】:
-
我很难理解你的
counter_all应该做什么?
标签: function excel if-statement office-2013 vba