Excel 循环遍历从1到31的列
我正在尝试通过多个列进行循环计算,最大值为31列(一个月31天)。Excel 循环遍历从1到31的列,excel,vba,loops,Excel,Vba,Loops,我正在尝试通过多个列进行循环计算,最大值为31列(一个月31天)。 从“B8”开始,下一列将是“C8” Excel模板 我设法计算出了第一个范围 我想添加一个循环来计算每个现有列的小时数:根据使用excel模板的人的不同,小时数可能从1天到31天不等 项目的数量也可能因“代码OTP”而异,从1个项目到10个项目 更新我的代码: Sub CalculHeuresTravail() Application.ScreenUpdating = False Dim i As Integer, first
从“B8”开始,下一列将是“C8” Excel模板
我设法计算出了第一个范围 我想添加一个循环来计算每个现有列的小时数:根据使用excel模板的人的不同,小时数可能从1天到31天不等 项目的数量也可能因“代码OTP”而异,从1个项目到10个项目 更新我的代码:
Sub CalculHeuresTravail()
Application.ScreenUpdating = False
Dim i As Integer, firstDate As Date, secondDate As Date, n, rng As Range
Set ws = ThisWorkbook.Sheets("Feuil1")
MaSomme = 0
i = 8
f = 8
firstDate = ws.Range("E2")
secondDate = ws.Range("E3")
n = DateDiff("d", firstDate, secondDate)
n = n + 1
While ws.Range("A" & i).Value <> ""
i = i + 1
Wend
While f < i
MaSomme = MaSomme + ws.Range("B" & f).Value
f = f + 1
Wend
If MaSomme = "8,8" Then
MsgBox "OK"
Else: MsgBox "NON"
End If
End Sub
Sub-calcultheurestravail()
Application.ScreenUpdating=False
Dim i为整数,firstDate为日期,secondDate为日期,n,rng为范围
Set ws=ThisWorkbook.Sheets(“Feuil1”)
马索姆=0
i=8
f=8
firstDate=ws.Range(“E2”)
secondDate=ws.Range(“E3”)
n=DateDiff(“d”,第一个日期,第二个日期)
n=n+1
而ws.Range(“A”&i).Value“”
i=i+1
温德
而f
以上是对我有效的解决方案:
它循环遍历变量范围中指定的每一列,该变量存储在一个名为“e”的变量中,该变量计算要开始的第一列以及用户指定的天数
Sub CalculHeuresTravail()
Application.ScreenUpdating = False
Dim i As Integer, firstDate As Date, secondDate As Date, nombreDeJours, rng As Range, e
Set ws = ThisWorkbook.Sheets("Feuil1")
nombreDeProjets = 8
firstDate = ws.Range("E2")
secondDate = ws.Range("E3")
nombreDeJours = DateDiff("d", firstDate, secondDate)
nombreDeJours = nombreDeJours + 1
While ws.Range("A" & nombreDeProjets).Value <> ""
nombreDeProjets = nombreDeProjets + 1
Wend
IndiceDeColomne = 2
e = IndiceDeColomne + nombreDeJours
While IndiceDeColomne < e
caseDebutHeures = 8
MaSomme = 0
While caseDebutHeures < nombreDeProjets
MaSomme = MaSomme + ws.Cells(caseDebutHeures, IndiceDeColomne).Value
caseDebutHeures = caseDebutHeures + 1
ws.Cells(6, IndiceDeColomne).Value = MaSomme
Wend
If MaSomme = "8,8" Then
MsgBox "Colomne " & IndiceDeColomne & " OK"
Else: MsgBox "Colomne " & IndiceDeColomne & " NON OK"
End If
IndiceDeColomne = IndiceDeColomne + 1
Wend
End Sub
Sub-calcultheurestravail()
Application.ScreenUpdating=False
Dim i为整数,firstDate为日期,secondDate为日期,nombreDeJours,rng为范围,e
Set ws=ThisWorkbook.Sheets(“Feuil1”)
nombreDeProjets=8
firstDate=ws.Range(“E2”)
secondDate=ws.Range(“E3”)
nombreDeJours=DateDiff(“d”,第一个日期,第二个日期)
nombreDeJours=nombreDeJours+1
而ws.Range(“A”和nombredprojets).Value“”
nombreDeProjets=nombreDeProjets+1
温德
指示Colomne=2
e=指示列+标称列
而指示Colomne
我想指出,我已经解决了自己的问题。