|
きち さん、こんにちわ。
>私の表記違いの箇所がありました<(__)>
>TextBox100+TextBox300(もしくはTextBox301)
>以下、TextBox100-TextBox200(もしくはTextBox201)以上の間違いでした。
>☆通常はT300とT200で処理したいと思いますが、たまにT100+T301以下、T100+T300以上で計算したい時にそのテキストボックスを使用したいと思います。T300とT301に数値が入っている場合は、T200とT201には何も入りません。
>☆その代わり、T100-T200以下、T100-T201以上の場合もあり、その時はT300とT301には何も入りません。
せっかくなので、貼っておきます。
Private Sub CommandButton1_Click()
Dim II As Integer
Dim tdt(1 To 3, 0 To 1) As String, a1 As String, a2 As String
Dim ldt As Variant, hdt As Variant
'テキストボックスの文字列格納
With Application.ActiveSheet
tdt(1, 0) = .OLEObjects("TextBox100").Object.Value
tdt(2, 0) = .OLEObjects("TextBox200").Object.Value
tdt(2, 1) = .OLEObjects("TextBox201").Object.Value
tdt(3, 0) = .OLEObjects("TextBox300").Object.Value
tdt(3, 1) = .OLEObjects("TextBox301").Object.Value
End With
'条件決定
If Trim(tdt(2, 0) & tdt(2, 1)) = "" Then
'200,201が空白だったら
'T100 + T301以下、T100 + T300以上
hdt = Val(tdt(1, 0)) + Val(tdt(3, 1))
ldt = Val(tdt(1, 0)) + Val(tdt(3, 0))
ElseIf Trim(tdt(3, 0) & tdt(3, 1)) = "" Then
'300,301が空白だったら
'T100 - T200以下、T100 - T201以上
hdt = Val(tdt(1, 0)) - Val(tdt(2, 0))
ldt = Val(tdt(1, 0)) - Val(tdt(2, 1))
Else
'上記以外は通常
'T100 + T300以下、T100 - T200以上
hdt = Val(tdt(1, 0)) + Val(tdt(3, 0))
ldt = Val(tdt(1, 0)) - Val(tdt(2, 0))
End If
'
With Application.ActiveSheet
For II = 1 To 3
a1 = .OLEObjects("TextBox" & II * 5 - 2).Object.Value
'分岐
If a1 = "" Then
a2 = "---" '何も入ってなかった
ElseIf IsNumeric(aa) Then
If Val(aa) >= ldt And Val(aa) <= hdt Then
a2 = "○"
Else
a2 = "×"
End If
Else
a2 = "---" '数値じゃなかった
End If
'結果
.OLEObjects("TextBox" & II * 5).Object = a2
Next
End With
'終了
Erase tdt
End Sub
こんな感じです。
ただ、シート上にテキストボックスをのせるなくても、セルを使えばいいのでは?と思うのですが。
|
|