VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} fpvt Caption = "Forecast Adjustment" ClientHeight = 7275 ClientLeft = 120 ClientTop = 465 ClientWidth = 13695 OleObjectBlob = "fpvt.frx":0000 StartUpPosition = 1 'CenterOwner End Attribute VB_Name = "fpvt" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Public mod_adjust As Boolean Public month() As Variant Option Explicit Private Sub cbCancel_Click() tbAdjVol.value = 0 tbAdjVal.value = 0 tbAdjPrice.value = 0 fpvt.Hide End Sub Private Sub cbOK_Click() 'MsgBox (handler.scenario) End Sub Private Sub chbPlug_Change() opvolume.Enabled = Not chbPlug.value opprice.Enabled = Not chbPlug.value End Sub Private Sub opprice_Click() tbFcVal = Format(CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value) + CDbl(tbAdjVal.value), "#,###") tbFcVol = Format((CDbl(tbPadjVol.value) + CDbl(tbBaseVol.value)), "#,###") tbFcPrice = Format(CDbl(tbFcVal.value) / CDbl(tbFcVol.value), "#.000") End Sub Private Sub opvolume_Click() Dim pchange As Double '---------calculate percent change---------------------------------------------------------------------- pchange = 1 + CDbl(tbAdjVal.value) / (CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value)) '---------add the adjustments together to get the new forecast------------------------------------------ tbFcVal = Format(CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value) + CDbl(tbAdjVal.value), "#,###") tbFcVol = Format((CDbl(tbPadjVol.value) + CDbl(tbBaseVol.value)) * pchange, "#,###") tbFcPrice = Format(CDbl(tbFcVal.value) / CDbl(tbFcVol.value), "#.000") End Sub Private Sub tbAdjVal_Change() Dim pchange As Double If IsNumeric(tbAdjVal.value) Then '---------calculate percent change---------------------------------------------------------------------- pchange = 1 + CDbl(tbAdjVal.value) / (CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value)) '---------add the adjustments together to get the new forecast------------------------------------------ tbFcVal = Format(CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value) + CDbl(tbAdjVal.value), "#,###") '---------if volume adjustment method is selected, scale the volume up---------------------------------- If opvolume Then tbFcVol = Format((CDbl(tbPadjVol.value) + CDbl(tbBaseVol.value)) * pchange, "#,###") Else tbFcVol = Format((CDbl(tbPadjVol.value) + CDbl(tbBaseVol.value)), "#,###") End If tbFcPrice = Format(CDbl(tbFcVal.value) / CDbl(tbFcVol.value), "#.000") Else tbFcVal = Format(CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value), "#,###") tbFcVol = Format((CDbl(tbPadjVol.value) + CDbl(tbBaseVol.value)), "#,###") tbFcPrice = Format(CDbl(tbFcVal.value) / CDbl(tbFcVol.value), "#.000") End If End Sub Private Sub tbAdjVol_Change() If IsNumeric(tbAdjVol.value) Then tbFcVol = Format(CDbl(tbAdjVol.value) + CDbl(tbBaseVol.value), "#,###") Else tbFcVol = Format(CDbl(tbBaseVol.value), "#,###") End If End Sub Private Sub UserForm_Activate() Dim sp As Object Dim i As Long Dim ok As Boolean Set sp = handler.scenario_package(handler.scenario, ok) If Not ok Then fpvt.Hide Application.StatusBar = False Exit Sub End If '---show existing adjustment if there is one---- fpvt.mod_adjust = False For i = 1 To sp("package")("totals").Count Select Case sp("package")("totals")(i)("order_season") Case 2020 Select Case sp("package")("totals")(i)("iter") Case "copy" fpvt.tbBaseVol.Text = Format(sp("package")("totals")(i)("units"), "#,###") fpvt.tbBaseVal.Text = Format(sp("package")("totals")(i)("value_usd"), "#,###") If sp("package")("totals")(i)("units") <> 0 Then fpvt.tbBasePrice.Text = Format(sp("package")("totals")(i)("value_usd") / sp("package")("totals")(i)("units"), "#.000") Case "adjustment" fpvt.tbPadjVol.Text = Format(sp("package")("totals")(i)("units"), "#,###") fpvt.tbPadjVal.Text = Format(sp("package")("totals")(i)("value_usd"), "#,###") End Select End Select Next i fpvt.tbFcVol.value = Format(CDbl(fpvt.tbBaseVol.value) + CDbl(fpvt.tbPadjVol.value), "#,###") fpvt.tbFcVal.value = Format(CDbl(fpvt.tbBaseVal.value) + CDbl(fpvt.tbPadjVal.value), "#,###") fpvt.tbFcPrice.value = Format(CDbl(fpvt.tbFcVal.value) / CDbl(fpvt.tbFcVol.value), "#.000") '---------------------------------------populate monthly------------------------------------------------------- '--parse json into variant array for loading-- Application.StatusBar = False End Sub