Function 将If语句例程转换为函数
也许你能帮我解决这个问题。ckuhn203建议我将所有重复的Function 将If语句例程转换为函数,function,excel,if-statement,office-2013,vba,Function,Excel,If Statement,Office 2013,Vba,也许你能帮我解决这个问题。ckuhn203建议我将所有重复的if语句分解为函数。我正在努力,但我不知道我做错了什么。 我有一艘潜艇: Sub st_verdelen() Worksheets("totaallijst").Activate lastRtot = Sheets("totaallijst").Cells.SpecialCells(xlCellTypeLastCell).row counter_all = 0 For a = 1 To lastRtot
if语句
分解为函数
。我正在努力,但我不知道我做错了什么。
我有一艘潜艇:
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
我不知道我做错了什么。有什么建议吗
需要计数器\u all
,这样它就不会再次重复此部分。如果我不使用它,则无法激活noneactief
,这样在激活If语句之后,If语句就不会被激活。函数扫描slb(value1、value2、row、col、noneactief)似乎有一些问题,或者上下文不够。使用“row”作为参数名不是好的做法,因为它是一个属性名。有时会修改传递给函数的noneactief的值。这很好,因为excel vba默认值是通过引用传递的;但是调用代码并没有使用noneactief,所以您需要编写代码来处理它。我将做一些假设,并尝试一下:
counter_all = 0
For a = 1 To lastRtot
slbkoppeling = Sheets("totaallijst").Cells(a, 8).Value
slbAanwezig = Sheets("totaallijst").Cells(a, 9).Value
If scan_slb(sheets("totaallijst").Cells(a, 7).Value, "2A2", _
SLBers, "Mvs", slbstdperklas, Sheets("StdntKlas").Cells(15, 5).Value, _
slbkoppeling, "", 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 scan_slb(Sheets("totaallijst").Cells(a, 7).Value, "1B4C", _
SLBers, "htp", slbstdperklas, Sheets("StdntKlas").Cells(16, 5).Value, _
slbkoppeling, "", 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 scan_slb(Sheets("tot_list").Cells(a, 7).Value, "2G4", _
blsers, "htp", blsstdperklas, Sheets("StdntKlas").Cells(16, 6).Value, _
blskoppeling, "", 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
function scan_slb(a1,a2,b1,b2,c1,c2,d1,d2)
scan_slb = (a1 = a2 and b1 = b2 and c1 = c2 and d1 = d2)
End Function
计数器\u all=0
对于a=1至lastRtot
slbkoppeling=Sheets(“totaallijst”).单元格(a,8).值
slbAanwezig=Sheets(“totaallijst”).单元格(a,9).值
如果扫描slb(表(“totaallijst”)。单元格(a,7)。值,“2A2”,则
SLBers,“Mvs”,slbstdperklas,Sheets(“StdntKlas”)。单元格(15,5)。值,\u
slbkoppeling,“,slbAanwezig,”)然后
如果counter\u all我正在努力理解你的counter\u all
应该做什么?
counter_all = 0
For a = 1 To lastRtot
slbkoppeling = Sheets("totaallijst").Cells(a, 8).Value
slbAanwezig = Sheets("totaallijst").Cells(a, 9).Value
If scan_slb(sheets("totaallijst").Cells(a, 7).Value, "2A2", _
SLBers, "Mvs", slbstdperklas, Sheets("StdntKlas").Cells(15, 5).Value, _
slbkoppeling, "", 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 scan_slb(Sheets("totaallijst").Cells(a, 7).Value, "1B4C", _
SLBers, "htp", slbstdperklas, Sheets("StdntKlas").Cells(16, 5).Value, _
slbkoppeling, "", 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 scan_slb(Sheets("tot_list").Cells(a, 7).Value, "2G4", _
blsers, "htp", blsstdperklas, Sheets("StdntKlas").Cells(16, 6).Value, _
blskoppeling, "", 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
function scan_slb(a1,a2,b1,b2,c1,c2,d1,d2)
scan_slb = (a1 = a2 and b1 = b2 and c1 = c2 and d1 = d2)
End Function