From 0be91dd6f85f19e458c845f12837299d58e588e7 Mon Sep 17 00:00:00 2001 From: Trowbridge Date: Fri, 22 Mar 2019 02:02:39 -0400 Subject: [PATCH] deal with text box issues, div0 and escaping --- fpvt.frm | 27 ++++++++++++++++++++++----- fpvt.frx | Bin 19992 -> 19992 bytes handler.bas | 20 +++++++++++++++++--- months.cls | 7 ++++++- pivot.cls | 19 ++++++++++++------- 5 files changed, 57 insertions(+), 16 deletions(-) diff --git a/fpvt.frm b/fpvt.frm index cbb5da4..b7c30ba 100644 --- a/fpvt.frm +++ b/fpvt.frm @@ -1,10 +1,10 @@ VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} fpvt Caption = "Forecast Adjustment" - ClientHeight = 7260 + ClientHeight = 7590 ClientLeft = 120 ClientTop = 465 - ClientWidth = 7215 + ClientWidth = 7095 OleObjectBlob = "fpvt.frx":0000 StartUpPosition = 1 'CenterOwner End @@ -75,6 +75,8 @@ Private Sub butAdjust_Click() Me.Hide + Set adjust = Nothing + End Sub Private Sub butCancel_Click() @@ -256,6 +258,7 @@ Private Sub tbFcVal_Change() End Sub Private Sub tbFcVol_Change() + If load_tb Then Exit Sub If opEditPrice Then calc_price End Sub @@ -313,11 +316,16 @@ Private Sub UserForm_Activate() fpvt.mod_adjust = False pVol = 0 pVal = 0 + pPrc = 0 bVol = 0 bVal = 0 + bPrc = 0 aVol = 0 aVal = 0 aPrc = 0 + fVal = 0 + fVol = 0 + fPrc = 0 For i = 1 To sp("package")("totals").Count Select Case sp("package")("totals")(i)("order_season") @@ -350,6 +358,9 @@ Private Sub UserForm_Activate() Else pPrc = (pVal + bVal) / (bVol + pVol) - bVal / bVol End If + If aVal <> 0 Then + MsgBox (aVal) + End If Me.load_mbox_ann '---------------------------------------populate monthly------------------------------------------------------- @@ -645,8 +656,9 @@ Sub calc_val() End Sub Sub calc_price() - - If IsNumeric(tbFcPrice.value) And tbFcPrice.value <> 0 And IsNumeric(tbFcVol.value) And tbFcVol.value <> 0 Then + + 'If IsNumeric(tbFcPrice.value) And tbFcPrice.value <> 0 And IsNumeric(tbFcVol.value) And tbFcVol.value <> 0 Then + If IsNumeric(tbFcPrice.value) And IsNumeric(tbFcVol.value) And tbFcVol.value <> 0 Then 'capture currently changed item fVol = tbFcVol.value fPrc = tbFcPrice.value @@ -657,9 +669,14 @@ Sub calc_price() If nomonth Then aPrc = fVal / fVol - bPrc Else - aPrc = fVal / fVol - ((bVal + pVal) / (bVol + pVol)) + If (bVol + pVol) = 0 Then + aPrc = 0 + Else + aPrc = fVal / fVol - ((bVal + pVal) / (bVol + pVol)) + End If End If Else + fVol = co_num(tbFcVol.value, 0) fVal = 0 aVal = fVal - bVal - pVal End If diff --git a/fpvt.frx b/fpvt.frx index a6bc2d7959871431a5db5ebd58afefe9185da95d..1510b500f8a0c2987813b96abff186b116080856 100644 GIT binary patch delta 1260 zcmZ8fZ%A8L6uIBlb;iRnvXHU4Sx(#=F;Osv*upUH4!DuuP|nZ6p=G|!s& zp_`1ra3e5SbV^Xaf7NFB_D78ui2M2WR(}G1(tRp@WX@yw_-HF5G*5 z_ndow_jk^@*KX2lH)&&h$VA9XWOuCD3HkHzXN@MtY9}6a?<1rztuCAwlJjy(;Y-^* zeBx?_Gt3(+1#Yi?Z<&_hd!`wA^zq#RpzQ0-VT2s1C#jiHHJMhFJnk2p3HiaSEwdU| z^P@;e{6#Hdig9}eXIobDT5y|$Tz)88Ths-L?^WU)_JCi zxY%4p47{z%qZMuc&}xM(Rfm9gRC%bK8Qd7_0F$ zkf$&#XH!Z>gpXWqD#E)R{kZzMMs1_xWe#DNw;k7{vA*f;WNn)fxaI9&lpNgk{=xVWJ13&xFKqY<=?nHWFLmUQs zsGh}4;M0-Qj7;GD(B~+3r2is&!Rv=||0-4CwQx7hKz;Bad>C#*R1RZ1w5{+t3U5Wi zz(|FPED=scm)SMcb3ZyoW#}E8Mpc&we>UnTiUU*~)D}n7Na?&b@p-H{S zM(PTfV?|VTIqHOR>^Y?TDrRKeH#*5C_!6v)PGeXOAB6u#hf(11u}+ko8S6&x^|1$* zp51clzXIE{ctPob-+gZQ`ed&@8=junDL53QHuxiQfPEp5fo-1)RwdtV+ZAlPKzrb^ waARruZ0lb0 zYSW2Ul!8`>IJSBOJLm@cVD-b8%0q1if(U*Psjxp^`eo}t9YY5b5fr9)?&~%%c;TIU z&$;*f?(dx6u8`qY#OA4p7$wgw%4q~Nv5DU;6L?>|Zu#ms zAv+qO;O%prnkM81>hW+;T!ffIC*gaq$J(Khk5~+T^OhORMPKLEY@3hFYlU-(Pv^*!^YiMh4MmuEM*VO~IDPUTfGAdcwT zGHhl%a7k%~jfjrS2czd{9*+0yGX9RfLU~Mwd%aQG1;2#-Xb=>2J zGcuf(bZpgo%F||ZBxQIz5-{23a8vmlJMc{ROJ?om?p2d$2p;d+1s8hiaj)DHpt7;q z^8)3@WLStRkcrE1IbMTYW&E00cu9!B;l!c|aw{={V#vu+YJoG!pLjBL6(lLnnNu&X z=Vs6qjfTEq4yL6haLTR+a}r_G2-yNh6eqY9huIcMIf^u@QzdN1nS>Y0sU7&RzD> 0 Then sh.Cells(i + 1, 7) = sh.Cells(i, 7) Else - sh.Cells(i + 1, 7) = (pkg(13, 5) + pkg(13, 6)) / (pkg(13, 1) + pkg(13, 2)) + If pkg(13, 1) + pkg(13, 2) = 0 Then + sh.Cells(i + 1, 7) = 0 + Else + sh.Cells(i + 1, 7) = (pkg(13, 5) + pkg(13, 6)) / (pkg(13, 1) + pkg(13, 2)) + End If End If Else sh.Cells(i + 1, 7) = pkg(i, 6) / pkg(i, 2) End If '--adjust-- - If (pkg(i, 3) + pkg(i, 2)) = 0 Then + If (pkg(i, 3) + pkg(i, 2)) = 0 Or pkg(i, 2) = 0 Then sh.Cells(i + 1, 8) = 0 Else sh.Cells(i + 1, 8) = (pkg(i, 7) + pkg(i, 6)) / (pkg(i, 3) + pkg(i, 2)) - (pkg(i, 6) / pkg(i, 2)) @@ -414,7 +423,11 @@ Sub month_tosheet(ByRef pkg() As Variant, ByRef basket() As Variant) If sh.Cells(i, 10) <> 0 Then sh.Cells(i + 1, 10) = sh.Cells(i, 10) Else - sh.Cells(i + 1, 10) = (pkg(13, 5) + pkg(13, 6)) / (pkg(13, 1) + pkg(13, 2)) + If pkg(13, 1) + pkg(13, 2) = 0 Then + sh.Cells(i + 1, 10) = 0 + Else + sh.Cells(i + 1, 10) = (pkg(13, 5) + pkg(13, 6)) / (pkg(13, 1) + pkg(13, 2)) + End If End If Else sh.Cells(i + 1, 10) = pkg(i, 8) / pkg(i, 4) @@ -441,6 +454,7 @@ Sub month_tosheet(ByRef pkg() As Variant, ByRef basket() As Variant) months.load_sheet + End Sub Function co_num(ByRef one As Variant, ByRef two As Variant) As Variant diff --git a/months.cls b/months.cls index 02a6942..8ad030a 100644 --- a/months.cls +++ b/months.cls @@ -325,6 +325,7 @@ Sub load_sheet() Call Me.crunch_array Call Me.set_sheet Call Me.print_basket + Call Me.set_format End Sub @@ -843,6 +844,10 @@ Sub new_part() part.Show + If Not part.useval Then + Exit Sub + End If + dumping = True Worksheets("month").Range("B33:Q10000").ClearContents @@ -863,7 +868,7 @@ Sub new_part() i = i + 1 Loop i = i - 1 - + If i = -1 Then i = 0 ReDim b(i, 3) i = 0 Do Until Worksheets("month").Cells(33 + i, 2) = "" diff --git a/pivot.cls b/pivot.cls index 4f42315..927e2c4 100644 --- a/pivot.cls +++ b/pivot.cls @@ -14,9 +14,9 @@ Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean If Intersect(target, ActiveSheet.Range("b7:v100000")) Is Nothing Then Exit Sub End If - + On Error GoTo nopiv - + If target.Cells.PivotTable Is Nothing Then Exit Sub End If @@ -46,7 +46,6 @@ Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean Set rd = target.Cells.PivotTable.RowFields Set cd = target.Cells.PivotTable.ColumnFields - ReDim handler.sc(ri.Count, 1) Set pt = target.Cells.PivotCell.PivotTable @@ -56,19 +55,17 @@ Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean For i = 1 To ri.Count If i <> 1 Then handler.sql = handler.sql & vbCrLf & "AND " If i <> 1 Then handler.jsql = handler.jsql & vbCrLf & "," - handler.sql = handler.sql & rd(piv_pos(rd, i)).Name & " = '" & ri(i).Name & "'" - jsql = jsql & """" & rd(piv_pos(rd, i)).Name & """:""" & ri(i).Name & """" + handler.sql = handler.sql & rd(piv_pos(rd, i)).Name & " = '" & escape(ri(i).Name) & "'" + jsql = jsql & """" & rd(piv_pos(rd, i)).Name & """:""" & escape(ri(i).Name) & """" handler.sc(i - 1, 0) = rd(piv_pos(rd, i)).Name handler.sc(i - 1, 1) = ri(i).Name Next i - scenario = "{" & handler.jsql & "}" Call handler.load_config Call handler.load_fpvt - nopiv: End Sub @@ -100,6 +97,14 @@ Function piv_fld_index(field_name As String, ByRef pt As PivotTable) As Integer End Function +Function escape(ByVal text As String) As String + + text = Replace(text, "'", "''") + text = Replace(text, """", """""") + escape = text + +End Function +