
如圖所示,輸入2003判斷為a(1)后a(1)+1后判斷為a(9),下標+2后輸出a(11)的值1604。【此前感謝milaoshu1020大神的指導】
問題,如何回圈?
即繼續將1604賦值給text1.text,繼續運行一遍直到陣列結束。
uj5u.com熱心網友回復:
你是要點一次回圈一次,還是自動回圈直到結束?uj5u.com熱心網友回復:
一直回圈到結束uj5u.com熱心網友回復:
寫好了,不知是否滿足你的要求,代碼如下:
Option Explicit
Private a() As Long
Private Sub Command1_Click()
Label1.Caption = ""
Dim strTemp As String
strTemp = Text1.Text
Do
Dim blnFound As Boolean
blnFound = False
Dim i As Integer
For i = LBound(a) To UBound(a)
' 如果陣列中找到Text1中輸入的數字;
If CStr(a(i)) = strTemp Then
Dim j As Integer
j = i + Val(Text2.Text) ' 下標加2
' 如果在陣列中則顯示;
If j <= UBound(a) Then
strTemp = a(j)
blnFound = True
Debug.Print a(j)
End If
' 只要找到就退出回圈;
Exit For
End If
Next
Loop While blnFound
Label1.Caption = strTemp
End Sub
Private Sub Form_Load()
' 初始化資料;
ReDim a(1 To 24)
a(1) = 2003
a(2) = 1803
a(3) = 1603
a(4) = 503
a(5) = 203
a(6) = 703
a(7) = 403
a(8) = 103
a(9) = 2004
a(10) = 1804
a(11) = 1604
a(12) = 504
a(13) = 204
a(14) = 704
a(15) = 404
a(16) = 104
a(17) = 2005
a(18) = 1805
a(19) = 1605
a(20) = 505
a(21) = 205
a(22) = 705
a(23) = 405
a(24) = 105
End Sub
下載地址:
鏈接:https://pan.baidu.com/s/1esLJNB4EqJYbVvT8mnCltw
提取碼:kjq5
運行示例:
uj5u.com熱心網友回復:
更正了一下,補充了 +1,代碼如下:
Option Explicit
Private a() As Long
Private Sub Command1_Click()
Label1.Caption = ""
Dim strTemp As String
strTemp = Text1.Text
Do
Dim blnFound As Boolean
blnFound = False
Dim i As Integer
For i = LBound(a) To UBound(a)
' 如果陣列中找到Text1中輸入的數字;
If CStr(a(i)) = strTemp Then
Dim j As Integer
j = i + Val(Text2.Text) ' 下標加2
' 如果在陣列中則顯示;
If j <= UBound(a) Then
strTemp = Val(a(j)) + 1
blnFound = True
Debug.Print a(j)
End If
' 只要找到就退出回圈;
Exit For
End If
Next
Loop While blnFound
Label1.Caption = strTemp
End Sub
Private Sub Form_Load()
' 初始化資料;
ReDim a(1 To 24)
a(1) = 2003
a(2) = 1803
a(3) = 1603
a(4) = 503
a(5) = 203
a(6) = 703
a(7) = 403
a(8) = 103
a(9) = 2004
a(10) = 1804
a(11) = 1604
a(12) = 504
a(13) = 204
a(14) = 704
a(15) = 404
a(16) = 104
a(17) = 2005
a(18) = 1805
a(19) = 1605
a(20) = 505
a(21) = 205
a(22) = 705
a(23) = 405
a(24) = 105
End Sub
下載地址:
鏈接:https://pan.baidu.com/s/1YhprKRgd9Kc-xISI38geLw
提取碼:f8ln
運行示例:
uj5u.com熱心網友回復:
輸入2003后的車次應該是1604,機2003+1=2004后推兩個為1604;繼續將1604賦值給text1.text計算,為1604+1=1605后推兩位為205.結果運算應該為1604和205兩個。uj5u.com熱心網友回復:
如果這個能實作,那么a(i)如何從excel匯入,而不是我事先輸好,因為我這邊的i可能有幾千uj5u.com熱心網友回復:
鏈接:https://pan.baidu.com/s/1gOhFTPMOMQp3x7jYvBr_zQ提取碼:xx3k
需要從這個excel里匯入里面的車次以及時間
uj5u.com熱心網友回復:
車次可以理解,但你前邊的計算程序沒有用到時間啊?uj5u.com熱心網友回復:
另外,表格很復雜,怎么提取?提取順序是什么?請詳細說一下;
uj5u.com熱心網友回復:
那我來詳細說說我這個軟體的功能吧。這是一個地鐵的算表系統。1、秣周東路和林場站為終點站也為換乘站;南京站、勝太西路站為換乘站。所以需要讀取這四個站的時間來計算下班的點。
2、所有的奇數車次為上行,偶數車次為下行。
3、標黃的時間是需要讀取的。表格里有兩個時間,前一個為到這個站的時間,后一個為離開這個站的時間。這兩個時間的差為車停在這個站的時間。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:

換乘人數也就是上面提到的下標。
uj5u.com熱心網友回復:
車次,目的地碼,站點,時間,上/下行,換乘人數...這些資料哪些是輸入?那些是輸出?
輸入的資料,以什么順序從表中讀取?
輸出資料及顯示方式是什么?
計算程序是什么?舉個例子?
uj5u.com熱心網友回復:
好的。上面還少一個輸入車次。(例如輸入車次3005,林場換乘人數5人,南京站換乘人數4人,勝太西路2人,秣周東路3人)
1、點擊匯入時刻表按鈕后,先讀取匯入excel名稱填入左邊的框里。
2、錄入3005先判斷目的地,也就是讀取目的地碼。(車次在excel里G269,目的地碼在G303;如果車次為偶數,例1704那么車次就是M265,目的地碼在M231)通過目的地碼判斷這列車的終點站是哪里,01開頭的為林場,例012,014;24開頭的為勝太西路,例241,242;29開頭的為秣周東路,例291,292。3005的目的地碼為012,即識別的終點站應該為林場站。此時3005+1=3006(到終點站+1車次改變繼續運營)后讀取3006在excel里的位置為P493,讀取秣周東路的林場人數為5人。即根據3006的位置往后推5個為3704(奇數對應奇數,偶數對應偶數)。顯示為林場接3704次,發車點為:10:02:02。再識別3704次的目的碼為293,終點站秣周東路。那么應該為3704+1=3705次,位置為G497,往后推3個(秣周換乘人數為3),為2407
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/18493.html
標籤:VB基礎類
