初級19配列 電車 反対方向には
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2022/12/27 15:40:23
> 初級講座19 静的配列にある電車の所要時間での質問です。
VB6/VBA 版の方のコレですね?
http://rucio.o.oo7.jp/main/shokyu/jugyou19.htm
> 下り方向ではどうのように選んでも0分になります。
おそらく、上り/下りの判定処理が不足しているのではないでしょうか。
「初級講座24 デバッグ」の『ステップ実行』を習得すると、
何が問題なのかを追跡しやすくなるかと思います。
> 改訂版を出してください。
るきおさんに代わって、少し書き換えてみました。
ここでは、動的配列の作成に Split 関数や Array 関数を使っています。
VB6/VBA 版の方のコレですね?
http://rucio.o.oo7.jp/main/shokyu/jugyou19.htm
> 下り方向ではどうのように選んでも0分になります。
おそらく、上り/下りの判定処理が不足しているのではないでしょうか。
「初級講座24 デバッグ」の『ステップ実行』を習得すると、
何が問題なのかを追跡しやすくなるかと思います。
> 改訂版を出してください。
るきおさんに代わって、少し書き換えてみました。
ここでは、動的配列の作成に Split 関数や Array 関数を使っています。
Dim Stations() As String
Stations = Split("津田沼 東船橋 船橋 西船橋 下総中山 本八幡 市川")
Dim TrainTimes() As Variant
TrainTimes = Array(3, 2, 3, 2, 4, 4)
Dim StartStation As Integer, EndStation As Integer
''東船橋から本八幡まで
'StartStation = 1
'EndStation = 5
'市川から津田沼まで
StartStation = 6
EndStation = 0
Dim idx As Integer, Jikan As Integer
Jikan = 0
If StartStation <= EndStation Then
For idx = StartStation To EndStation - 1
Jikan = Jikan + TrainTimes(idx)
Next
Else
For idx = EndStation To StartStation - 1
Jikan = Jikan + TrainTimes(idx)
Next
End If
Dim msg As String
msg = Stations(StartStation) & "から" & Stations(EndStation) & "までは" & CStr(Jikan) & "分です"
MsgBox msg, vbInformation
投稿者 あらあらあられ  (社会人)
投稿日時
2023/1/27 15:05:30
ありがとうございます。
原本と訂正文と見比べながら、いろいろと手を加えていますが、初心者の私には理解できず、未だにプログラムを動かすことができません。
Stations = Split("津田沼 東船橋 船橋 西船橋 下総中山 本八幡 市川")で、「プロシージャの外では無効です」(私のPCではInvalid outside procedure)が表示されます。
ここは、もともとの下のような駅名の書き方と同義なのですよね。であれば便利だなーと思っています。お時間があれば、再度ご教授していただけないでしょうか?分からないところが分からなくて、もう泣きそうです(微笑)。
Private Sub Form_Load()
Station(1) = "津田沼" ←訂正文では番号が0~6までのようですね。
Station(2) = "東船橋"
Station(3) = "船橋"
Station(4) = "西船橋"
Station(5) = "下総中山"
Station(6) = "本八幡"
Station(7) = "市川"
End Sub
原本と訂正文と見比べながら、いろいろと手を加えていますが、初心者の私には理解できず、未だにプログラムを動かすことができません。
Stations = Split("津田沼 東船橋 船橋 西船橋 下総中山 本八幡 市川")で、「プロシージャの外では無効です」(私のPCではInvalid outside procedure)が表示されます。
ここは、もともとの下のような駅名の書き方と同義なのですよね。であれば便利だなーと思っています。お時間があれば、再度ご教授していただけないでしょうか?分からないところが分からなくて、もう泣きそうです(微笑)。
Private Sub Form_Load()
Station(1) = "津田沼" ←訂正文では番号が0~6までのようですね。
Station(2) = "東船橋"
Station(3) = "船橋"
Station(4) = "西船橋"
Station(5) = "下総中山"
Station(6) = "本八幡"
Station(7) = "市川"
End Sub
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2023/1/27 15:42:30
> 私のPCではInvalid outside procedure
何故でしょうか。日本語版を使用していない…?
御利用中の開発環境(どのバージョンの Visual Basic なのか)を明記できますか?
> 「プロシージャの外では無効です」が表示されます。
プロシージャーの外に書くのではなく、
プロシージャーの中に書いてください。
プロシージャーとは、「Sub~End Sub」や「Function~End Function」ブロックのことを指します。
何故でしょうか。日本語版を使用していない…?
御利用中の開発環境(どのバージョンの Visual Basic なのか)を明記できますか?
> 「プロシージャの外では無効です」が表示されます。
プロシージャーの外に書くのではなく、
プロシージャーの中に書いてください。
プロシージャーとは、「Sub~End Sub」や「Function~End Function」ブロックのことを指します。
Private Stations() As String
Private Sub Form_Load()
Stations = Split("津田沼 東船橋 船橋 西船橋 下総中山 本八幡 市川")
End Sub
さて、初級講座19 静的配列にある電車の所要時間での質問です。
登り方向(津田沼→市川)ではうまく計算されますが、
下り方向ではどうのように選んでも0分になります。
改訂版を出してください。