プログラムの組み方について

解決


あいうえお  2005-10-24 19:30:30  No: 126783

プログラムの組み方について質問です。
案①と案②どちらのほうがよいでしょうか?
よろしくお願いいたします。
案①

Private Sub H_Up_Click()
  Timer_Start
  If (Setting < 5) Then
    msgbox "aa"
  End If
End Sub

Private Sub S_Up_Click()
  Timer_Start
  If (Setting < 5) Then
    msgbox "bb"
  End If            
End Sub

Private Sub I_Up_Click()  
  Timer_Start
  If (Setting < 5) Then
    msgbox "cc"
  End If 
End Sub

Private Sub Timer_Start()
    If (Timer1.Enabled = False) Then
        Timer1.Enabled = True
    End If
End Sub

案②
Dim Setting as Textbox

Private Sub H_Up_Click()
    Set Setting = High
    One_Up
End Sub

Private Sub S_Up_Click()
    Set Setting = Speed 
    One_Up              
End Sub

Private Sub I_Up_Click()  
    Set Setting = Interval
    One_Up  
End Sub

Private Sub One_Up()
  Timer_Start
  If (Setting < 5) Then
    Select Case(Setting)
      case High
        msgbox "aa"
      case Speed
        msgbox "bb"
      case Interval
        msgbox "cc"
    End Select
  End If
End Sub

Private Sub Timer_Start()
    If (Timer1.Enabled = False) Then
        Timer1.Enabled = True
    End If
End Sub


あいうえお  2005-10-24 19:48:20  No: 126784

案①間違えてました。正しくはこちらです。
案①

Private Sub H_Up_Click()  
  If (High.text < 5) Then
    Timer_Start
    msgbox "aa"
  End If
End Sub

Private Sub S_Up_Click()
  If (Speed.text < 5) Then
    Timer_Start
    msgbox "bb"
  End If            
End Sub

Private Sub I_Up_Click()  
  Timer_Start
  If (Interval.text < 5) Then
    Timer_Start
    msgbox "cc"
  End If 
End Sub

Private Sub Timer_Start()
    If (Timer1.Enabled = False) Then
        Timer1.Enabled = True
    End If
End Sub


LESIA  2005-10-24 20:28:01  No: 126785

ケースバイケースのような気がします。

もし、すべての条件が、変更するとしても10未満と常に同じになるならば、
メンテナンスの面からいって案(2)がいいだろうし、また、条件が、Highが
10未満で、Speedは8以下という風に、個別に変更になる可能性があるなら、
案(1)の方がいいですね。


我龍院忠太  2005-10-24 20:50:12  No: 126786

テキストボックスとコマンドボタンを配列にしておけば、
Private Sub Command1_Click(Index As Integer)
    Dim d() As String
    d = Split("Height,Speed,Interval", ",")
    If Val(Text1(Index).Text) < 5 Then
        MsgBox d(Index) & "エラー"
    End If
End Sub
これだけで済む気もするが。(Timerは省略)


あいうえお  2005-10-24 23:34:17  No: 126787

配列にしたらプログラムがとても短くなりました!
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加