フォームを使ったVBAマクロの例
'########################################################################
'
' ラショナル式によるピーク流量算定
' 1)河道の洪水流下時間 Rziha式 or Kraven式
' 2)平均雨量強度式 物部式 or 飯塚式
'########################################################################
Option Explicit
Dim a As Double '流域面積(km^2)
Dim l As Double '流路長(m)
Dim h As Double '高度差(m)
Dim f As Double '流出係数
Dim rd As Double '24時間雨量(mm/day)
Dim rt As Double '降雨強度(mm/hr)
Dim v As Double '速度(m/sec)
Dim t0 As Double , t1 As Double , ta As Double '流入時間、流下時間、到達時間(hr)
Dim q As Double , qa As Double '流量(m3/sec)、比流量(m3/sec/km2)
Private Sub UserForm_Initialize()
'河道内流下時間の計算式
ComboBox1.AddItem "Rziha式"
ComboBox1.AddItem "Kraven式"
'降雨強度式
ComboBox2.AddItem "物部式"
ComboBox2.AddItem "飯塚式"
End Sub
Private Sub CommandButton1_Click()
'======================= 結果ボックスクリア ===============================
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
'========================== 条件読み込み ==================================
a = Val(TextBox1)
l = Val(TextBox2)
h = Val(TextBox3)
f = Val(TextBox4)
rd = Val(TextBox5)
'============== Rziha式 or Kraven式による洪水到達時間の計算 ================
'洪水流入時間
If a > 2 Then
t0 = 30 / 60
Else
t0 = 20 / 60
End If
'洪水流下時間
If ComboBox1 = "Rziha式" Then
'Rziha式(km/hr単位)
v = 20 * (h / l) ^ 0.6
ElseIf ComboBox1 = "Kraven式" Then
'Kraven式(km/hr単位)
If h / l <= 0.005 Then
v = 7.56
ElseIf h / l < 0.01 Then
v = 10.8
Else
v = 12.6
End If
Else
MsgBox "洪水流下時間の算出式を選択してください"
Exit Sub
End If
'
t1 = l / v / 3600
'洪水到達時間=流入時間+流下時間
ta = t0 + t1
'====================== 降雨強度の計算 =================================
If ComboBox2 = "物部式" Then
'物部式(mm/hr)
rt = (rd / 24) * (24 / ta) ^ (2 / 3)
ElseIf ComboBox2 = "飯塚式" Then
'飯塚式(mm/hr)
rt = 34710 / ((ta / 60) ^ 1.35 + 1502) / 100 * rd
Else
MsgBox "降雨強度式を選択してください"
Exit Sub
End If
'==================== ラショナル式によるピーク流量 ======================
'ラショナル式
q = 0.2778 * f * rt * a
'比流量
qa = q / a
'========================= 計算結果出力 ====================================
TextBox6 = Format(v, "#.##") '伝播速度m/sec
TextBox7 = Format(t0, "#.##") '流入時間hr
TextBox8 = Format(t1, "#.##") '流下時間hr
TextBox9 = Format(ta, "#.##") '洪水到達時間hr
TextBox10 = Format(rt, "#.##") '降雨強度mm/hr
TextBox11 = Format(q, "#.##") 'ピーク流量m^3/s
TextBox12 = Format(qa, "#.##") '比流量m^3/s/km^2
End Sub