明白了,那个check就是用来控制阴转阳与阳转阴的,yl一定要声明为string,返回的是十二天干地支,sx是返回生肖,也必须声明为string,
如果不加入何控件,想在程序的任意位置调用,则如下做:
比如用一个按钮得到当前日期的阴历时间:
Private Sub Command1_Click()
Dim ty As Integer, tm As Integer, td As Integer, yl As String, sx As String, yOn As Boolean
yOn = False
yy=date()
xx = FunGetDate(CInt(Year(yy)), CInt(Month(yy)), CInt(Day(yy)), yl, sx, yOn) & " " & yl & " " & sx
MsgBox xx, vbOKOnly, "今天阴历为:"
End Sub
当然,如果须要把阴历转为阳历,则把上面的yOn值设为True即可。上面的yy也可替换成text控件内的日期字符串。
Dim ty As Integer, tm As Integer, td As Integer, yl As String, sx As String, yOn As Boolean
yOn = False
If Check1.Value = 1 Then
yOn = True
End If
lb.Caption = FunGetDate(Combo1.Text, Combo2.Text, Combo3.Text, yl, sx, yOn) & " " & yl & " " & sx
End Sub
Private Sub Combo2_Click()
com11 = Combo3.Text
Combo3.Clear
Select Case Combo2.Text
Case 1
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 2
If Combo1.Text Mod 4 <> 0 Then
For i = 1 To 28
Combo3.AddItem i, i - 1
Next
Else
For i = 1 To 29
Combo3.AddItem i, i - 1
Next
End If
Case 3
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 4
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 5
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 6
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 7
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 8
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 9
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 10
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 11
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 12
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
End Select
Combo3.Text = com11
Dim ty As Integer, tm As Integer, td As Integer, yl As String, sx As String, yOn As Boolean
yOn = False
If Check1.Value = 1 Then
yOn = True
End If
lb.Caption = FunGetDate(CInt(Combo1.Text), CInt(Combo2.Text), CInt(com11), yl, sx, yOn) & " " & yl & " " & sx
End Sub
Private Sub Combo3_Click()
Dim ty As Integer, tm As Integer, td As Integer, yl As String, sx As String, yOn As Boolean
yOn = False
If Check1.Value = 1 Then
yOn = True
End If
lb.Caption = FunGetDate(CInt(Combo1.Text), CInt(Combo2.Text), CInt(Combo3.Text), yl, sx, yOn) & " " & yl & " " & sx
End Sub
Private Sub Form_Load()
For i = 1900 To 2011
Combo1.AddItem i, i - 1900
Next
For i = 1 To 12
Combo2.AddItem i, i - 1
Next
Select Case Combo2.Text
Case 1
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 2
If Combo1.Text Mod 4 <> 0 Then
For i = 1 To 28
Combo3.AddItem i, i - 1
Next
Else
For i = 1 To 29
Combo3.AddItem i, i - 1
Next
End If
Case 3
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 4
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 5
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 6
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 7
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 8
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 9
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 10
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
Case 11
For i = 1 To 30
Combo3.AddItem i, i - 1
Next
Case 12
For i = 1 To 31
Combo3.AddItem i, i - 1
Next
End Select
Combo1.Text = Year(Now)
Combo2.Text = Month(Now)
Combo3.Text = Day(Now)
Function FunGetDate(tYear As Integer, tMonth As Integer, tDay As Integer, YLyear As String, YLShuXing As String, Optional IsGetGongLi As Boolean) As String
On Error Resume Next
Dim dateList(1900 To 2011) As String * 18
Dim conDate As Date, setDate As Date
Dim AddMonth As Integer, AddDay As Integer, AddYear As Integer, getDay As Integer
Dim RunYue As Boolean
If tYear > 2010 Or tYear < 1901 Then Exit Function '如果不是有效有日期,退出