如何在excel的单元格中为下一个循环放置日期

时间:2015-01-10 00:41:12

标签: vba excel-vba for-loop excel

我目前正在尝试为excel中的下一个循环做一个简单的操作。我正在处理日期,所以我宣布一个开始日期和结束日期。我只需要在不同的单元格中显示这两个日期中包含的日期。

我只用整数来得到这个,但是我还没有得到它。

我使用MsgBox进行了测试并且它正常工作(按回车键)直到到达最后一个日期(结束日期)但我无法将其放入一系列单元格中,可能解决方法很简单但是我花了很多时间在这...... 请帮帮我

这在我的代码中

Sub looping()

Dim fecha_ini As Date
Dim fecha_fin As Date
Dim conteo As Date
Dim rango_inicio As Range


fecha_ini = #1/1/2015#
fecha_fin = #1/15/2015#

Set rango_inicio = Sheets("Sheet1").Range("a1")

For conteo = fecha_ini To fecha_fin

    Range("A" & 1).Value = conteo

Next conteo

4 个答案:

答案 0 :(得分:1)

这应该这样做:

Sub looping()

Dim fecha_ini As Date, fecha_fin As Date, conteo As Variant, rango_inicio As Range, i As Integer

fecha_ini = #1/1/2015#
fecha_fin = #1/15/2015#
i = 1
Set rango_inicio = Sheets("Sheet1").Range("a1")
For conteo = fecha_ini To fecha_fin
    Cells(i, 1).Value = conteo
    i = i + 1
Next conteo

End Sub

我添加了一个计数器“i”,并使用Cell(行,列)而不是Range(...)将For循环赋值给单元格。

答案 1 :(得分:1)

尝试这样的事情......

不要将Range设置为A1,只需使用带有变量的.Cells循环而不是当前使用的数字来设置值。
即.Cells(row,col)而不是.Range(“A”& 1)

sub Looping()
Dim lRow As Long
Dim fecha_str As String
Dim fecha_date As Date

    For lRow = 1 to 15 

        fecha_str = "1/" & lRow & "/2015"
        fecha_date = CDate(fecha_str)
        Sheets("Sheet1").Cells(lRow, "A").Value = fecha_date

    Next lRow
End Sub

答案 2 :(得分:1)

'=============================================================
'using for each

    Sub looping()
        Dim fecha_ini As Date, fecha_fin As Date, conteo As Date
        Dim rango_inicio As Range, D As Long
        fecha_ini = #1/1/2015#
        D = DateDiff("d", #1/1/2015#, #1/15/2015#) + 1
        For Each rango_inicio In Range("A1:A" & D)
            rango_inicio.Value = fecha_ini
            fecha_ini = fecha_ini + 1
        Next
    End Sub
'=============================================================
'using while wend or do while loop 

   Sub looping2()
        Dim fecha_ini As Date, fecha_fin As Date, conteo As Date
        Dim D&, i&
        fecha_ini = #1/1/2015#
        D = DateDiff("d", #1/1/2015#, #1/15/2015#) + 2
        i = 1
        While i <> D
            Cells(i, 1).Value = fecha_ini
            fecha_ini = fecha_ini + 1
            i = i + 1
        Wend
    End Sub

答案 3 :(得分:1)

如果日期是连续的,.DataSeries将比循环更有效。

Sub no_looping()
    Dim fecha_ini As Date, fecha_fin As Date

    fecha_ini = #1/1/2015#
    fecha_fin = #1/15/2015#

    With Sheets("Sheet1").Range("A:A")
        .Cells(1, 1) = fecha_ini
        .DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
          Date:=xlDay, Step:=1, Stop:=fecha_fin, Trend:=False
    End With
End Sub

.Cells(1, 1)指的是您正在处理的任何范围内的第一个单元格。这需要播种,并带有第一个值来启动系列。如果您正在使用Z99:Z999,则.Cells(1, 1)将引用Z99。