Vb6 如何根据日期显示msgbox

Vb6 如何根据日期显示msgbox,vb6,Vb6,[第一部分-原问题] 我有30、31、28或29等值,它们是一个月的总天数 我想做一个for循环 如果我选择28,它将显示msgbox 28次 如果我选择31,它将显示msgbox 31次 我尝试的代码: Dim dayst As Variant Dim tot1 As Variant tot1 = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011")) tot1 = Split(tot1, ",") For Each dayst In tot1

[第一部分-原问题]

我有30、31、28或29等值,它们是一个月的总天数

我想做一个for循环

如果我选择28,它将显示msgbox 28次

如果我选择31,它将显示msgbox 31次

我尝试的代码:

Dim dayst As Variant
Dim tot1 As Variant
tot1 = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011"))
tot1 = Split(tot1, ",")
For Each dayst In tot1
   MsgBox dayst
Next
上面的代码在msgbox中显示31次,而不是像1、2、。。。三十一

我想显示一个msgbox,它是从1递增到31的31倍

[第2部分-更新请求]

默认列值示例

ID 1 2 ..... 31  totaldays

001 Yes Yes .... Yes 31
002 Yes Yes .... Yes 31
003 Yes Yes .... Yes 31
.....

001 is coming from table
Yes is the default column value for 1 to 31 or 1 to 28
totaldays should be no of days permonth.

如何使用vb6实现这一点。

您可以使用这样一个简单的循环-尽管我不明白为什么您希望一行有28-31个MsgBox提示

Dim tot1 As Long
Dim lngDays As Long
tot1 = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011"))
For lngDays = 1 To tot1
    MsgBox lngDays
Next
更新版本-添加早期退出选项


tot1从DateDiff返回一个数字。为什么您希望它以数组形式出现以进行拆分?为什么拆分而DateDiff返回长值。使用simple for loop@brettdj,还有什么可能…?@AVD,如果我没有使用split,我会得到类型为mimastch的错误…@Gopal你会得到一个类型不匹配的错误,因为你试图对一个非数组执行for-each,基本上你使它比需要的更复杂。检查brettdj的答案,因为我认为这将解决您的问题。@BREETDJ,谢谢您的回答,我如何在28或31列中添加默认列值。例如,如果显示31列标题,则应在列值中将默认值显示为“是”。如何做到这一点……@Gopal列值与您的问题有何关联?这是第一次提到列标题。@gopal一旦我知道你的意思,我会的-你能给我一个例子吗?我不清楚这篇专栏文章,这可能是因为我是一个VBA的家伙,我想你指的是一个VB表。您必须获得这个附加部分,该部分可能是其他人提出的一个新问题。如果他们想在ListView中添加列,请填写他们的[上一个问题]。
Dim tot1 As Long
Dim lngDays As Long
Dim lngExit As Long
tot1 = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011"))
For lngDays = 1 To tot1
   lngExit = MsgBox(lngDays, vbOKCancel, "Press Cancel to exit")
   If lngExit = vbCancel Then Exit Sub
Next