Excel 循环遍历从1到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

我正在尝试通过多个列进行循环计算,最大值为31列(一个月31天)。
从“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
我想指出,我已经解决了自己的问题。