1
さまざまなシステムでポンプヘッドの値を計算するマクロを開発しようとしています。私はゴールシークを策定する方法を理解できません。私は初めてのVBAユーザーであり、これはコースの割り当てのためのものです。コードを以下に示します:GoalSeekを使用したエラー
Global NameEngr As String
Global Dateinput As String
Global Location As String
Global k As Double
Global g As Double
Global visc As Double
Global f As Double
Global L As Double
Global D As Double
Global Kminor As Double
Global Q As Double
Global Z As Double
Sub PumpHead()
UserForm1.Show
'Calculate the pump head based on desired flow rate.
Range("A1").Select
ActiveCell.Value = "Engineer's Name"
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = NameEngr
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Date"
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Dateinput
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Location"
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Location
Range("A5").Select
v = (Q)/((3.14159/4) * (D^2))
ActiveCell.Value = v
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = "Velocity"
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Reynold's Number"
ActiveCell.Offset(0, 1).Select
Re = (v * D)/(visc)
ActiveCell.Value = Re
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "LHS Colebrook Equation"
ActiveCell.Offset(0, 1).Select
LHSCole = 1/((f)^(1/2))
ActiveCell.Value = LHSCole
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "RHS Colebrook Equation"
ActiveCell.Offset(0, 1).Select
RHSCole = (-2) * Log(((k/D)/3.7) + (2.51/(Re * (f^(1/2)))))
ActiveCell.Value = RHSCole
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Difference"
ActiveCell.Offset(0, 1).Select
Diff = LHSCole - RHSCole
ActiveCell.Value = Diff
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Friction Factor"
ActiveCell.Offset(0, 1).Select
**f = (Range("B7:B9").GoalSeek(Goal:=0, ChangingCell:=("B10")))**
ActiveCell.Value = f
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Major Head Loss"
ActiveCell.Offset(0, 1).Select
hf = f * (L/D) * ((v^2)/(2 * g))
ActiveCell.Value = hf
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Minor Head Loss"
ActiveCell.Offset(0, 1).Select
hm = Kminor * ((v^2)/(2 * g))
ActiveCell.Value = hm
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Total Head Loss"
ActiveCell.Offset(0, 1).Select
hl = hm + hf
ActiveCell.Value = hl
ActiveCell.Offset(1, -1).Select
ActiveCell.Value = "Pump Head"
ActiveCell.Offset(0, 1).Select
hp = hl + Z
ActiveCell.Value = hp
End Sub