From b10a3ac655d174fd0311659f288e5a08f9151578 Mon Sep 17 00:00:00 2001 From: PhilRunninger Date: Fri, 15 Mar 2024 10:09:56 -0400 Subject: [PATCH] Add a function to treat 1x1 ranges as an array, not a scalar value. The Range.Value function does not consistently return a 2-D array. If the range is a single cell, it returns just the value in that cell. When initializing a Userform listbox, it needs to be an array, so this function was born. --- Master Template.xlsm_EXPORTS/Utils.bas | 24 +++++++++++++++++++++++ Master Template.xlsm_EXPORTS/build.frm | 6 +++--- Master Template.xlsm_EXPORTS/build.frx | Bin 3608 -> 3608 bytes Master Template.xlsm_EXPORTS/changes.frx | Bin 3096 -> 3096 bytes Master Template.xlsm_EXPORTS/fpvt.frm | 7 +++++-- Master Template.xlsm_EXPORTS/fpvt.frx | Bin 15896 -> 15896 bytes Master Template.xlsm_EXPORTS/openf.frm | 6 +++--- Master Template.xlsm_EXPORTS/openf.frx | Bin 3608 -> 3608 bytes Master Template.xlsm_EXPORTS/part.frm | 2 +- Master Template.xlsm_EXPORTS/part.frx | Bin 3096 -> 3096 bytes 10 files changed, 36 insertions(+), 9 deletions(-) diff --git a/Master Template.xlsm_EXPORTS/Utils.bas b/Master Template.xlsm_EXPORTS/Utils.bas index 4cc22f3..f872ee3 100644 --- a/Master Template.xlsm_EXPORTS/Utils.bas +++ b/Master Template.xlsm_EXPORTS/Utils.bas @@ -617,4 +617,28 @@ Public Function IntersectsWith(Range1 As Range, Range2 As Range) As Boolean IntersectsWith = Not Application.Intersect(Range1, Range2) Is Nothing End Function +' Credit: https://stackoverflow.com/a/64563408/510067 +Public Function RangeToArray(inputRange As Range) As Variant() + Dim size As Integer + Dim inputValue As Variant, outputArray() As Variant + + ' inputValue will either be an variant array for ranges with more than 1 cell + ' or a single variant value for range will only 1 cell + inputValue = inputRange + + On Error Resume Next + size = UBound(inputValue) + + If Err.Number = 0 Then + RangeToArray = inputValue + Else + On Error GoTo 0 + ReDim outputArray(1 To 1, 1 To 1) + outputArray(1, 1) = inputValue + RangeToArray = outputArray + End If + + On Error GoTo 0 + +End Function diff --git a/Master Template.xlsm_EXPORTS/build.frm b/Master Template.xlsm_EXPORTS/build.frm index 3affa42..0107139 100644 --- a/Master Template.xlsm_EXPORTS/build.frm +++ b/Master Template.xlsm_EXPORTS/build.frm @@ -28,11 +28,11 @@ Private Sub cmdOK_Click() End Sub Public Sub Initialize(part As String, billTo As String, shipTo As String) - cbPart.list = shSupportingData.ListObjects("ITEM").DataBodyRange.Value + cbPart.list = RangeToArray(shSupportingData.ListObjects("ITEM").DataBodyRange) cbPart.Value = part - cbBill.list = shSupportingData.ListObjects("CUSTOMER").DataBodyRange.Value + cbBill.list = RangeToArray(shSupportingData.ListObjects("CUSTOMER").DataBodyRange) cbBill.Value = billTo - cbShip.list = shSupportingData.ListObjects("CUSTOMER").DataBodyRange.Value + cbShip.list = RangeToArray(shSupportingData.ListObjects("CUSTOMER").DataBodyRange) cbShip.Value = shipTo useval = False diff --git a/Master Template.xlsm_EXPORTS/build.frx b/Master Template.xlsm_EXPORTS/build.frx index 614b17d03cfbf9f8fa42c58b09099a4cd701a715..e43441c1f9030d6237ef19b9abe05e8209d7419d 100644 GIT binary patch delta 82 zcmbOsGec%W3k#cp@ip!TWt+QLTv(VGawcEkux8Ae%)@EU$S~Q3(+EhGb2pSp6_(#>5gE-Xw243jT#STizA=HWDF%$e-MX~bAExt!Ah$lk%} m$5fm>*?~)mF=ewhmpLO)RWi3GWAWr(ZUd%#hRyrABbfje)faF8 diff --git a/Master Template.xlsm_EXPORTS/changes.frx b/Master Template.xlsm_EXPORTS/changes.frx index 35e8278bd1fae81bf5da75f6fa59bff013f97087..ae9bceabfb2368e16c10f38da85f4d2ffec82f80 100644 GIT binary patch delta 69 zcmbOsF+*ZQ3kzGp`D@${$~JegykKTzm|V;e10*kS5gFPIsNCKq$W0Lcp+d6TO+Z5UH0TXWh?HfB+oe3vt6 baypmnWD_n~j#P##3=9nOm^U|aO=koEdiNIa diff --git a/Master Template.xlsm_EXPORTS/fpvt.frm b/Master Template.xlsm_EXPORTS/fpvt.frm index 0c4946f..1b30dc1 100644 --- a/Master Template.xlsm_EXPORTS/fpvt.frm +++ b/Master Template.xlsm_EXPORTS/fpvt.frm @@ -315,8 +315,11 @@ Private Sub UserForm_Activate() Next i '-------------load tags------------------------------- - cbTAG.list = shConfig.ListObjects("TAGS").DataBodyRange.Value - + cbTAG.list = RangeToArray(shConfig.ListObjects("TAGS").DataBodyRange) + If cbTAG.ListCount = 1 Then + cbTAG.ListIndex = 0 + End If + '----------reset spinner buttons---------------------- sbpv.Value = 0 sbpp.Value = 0 diff --git a/Master Template.xlsm_EXPORTS/fpvt.frx b/Master Template.xlsm_EXPORTS/fpvt.frx index 1ac76e777dd1aeec4f09c007eaf96816b0836683..26f2dfbe72a56ae847c6fce1551c5e92a8ec1748 100644 GIT binary patch delta 761 zcmah{O=uHA6rPz)f83Nc7Ol0Cq(A0AZnjC-ted0?!JmUj4lT4G;-J0j9(s`kJg6rND?-7GCoiQIM6^|Epa;<+*s}`0-4H3gI56|QdGDKV-kUe`<@xeL z*(OvTzqL2#)@Tcjs!iV|3@$EPzVj1i%-{u`6QpL#mlaJPRQKpY%Uq)^H2B^}9dyok zx__MgV;}3X*!+Mlw9Gaes_5D&aInIt0(YF}SS$*g&L+*nlFLQWcKKM8z+Sf(H%a$9 zmQxJJV6P1kRt|YhaEP)Ar$o6grx4ap{DhDWLMmDP@^oIah(~FyO;${{tzYb!@t^{%UgF5 zSPs-J)fG>AI~qTO7bqhom<-=wpK95iWPyyE(=n)}G+K83V9(up0(XvOJ#K>@cqg12SV1lGmFZ8eBm&(#E-g|BK1*BTpx zspKR#f^YRADPnXZ>17%Ld+KJNtdMJ6gbdrTJ{;rtOjk7p>Zt^3en_398E~fu%tj^C O*HP?c+K20UTKx+?=J2lo delta 752 zcmaJD|36eAsBARel6K8j=2M_LHzV~Lo@0<5#-dt&}v{bSQ z1B(;Ip_>(!S~pOiwiWgZ3++WS*AzB$4xzvcE8|vfuWBGpA1DacvckY=(OggMtgJt4 z9_IeCw_clUM{7Z_mK9brpj6GkLfvs>io{^LQxkdIH=?4BcLl zHgWGe4nS{eci9N>ZKs4TIf8=h!n7>8S|A7jc7Ul=;mWASOv)+J8AR0|F*JGqVf!S& zvIA$;PW&pn8de+tcj=cRHg98IO7f34ztm7qi7MlFK9_MO5F(>jfemg{!$(1h2MusF z7-AZJ4{q!m%b6uLT<@C4H~tQsmAw4KvSmc5?@5=LAx(E1weWp6+3D=~5c_j_kwtM* zKEuH+%t?LtQ=Xx67gZ6LdL-71jY<*cMei<&YDFX&0;V!KB{FE^s2|`N`q>Y%Ve>nhFKP$ zt5G`nw%SY658(jk#tZQ@4>`aWahc_?8W%ZIIurK}g-2r7>H&N1; a>4(Hwir!=^m(OE7d51PHlL3mGN%c3V3i84L diff --git a/Master Template.xlsm_EXPORTS/openf.frm b/Master Template.xlsm_EXPORTS/openf.frm index fe4676e..5a0073d 100644 --- a/Master Template.xlsm_EXPORTS/openf.frm +++ b/Master Template.xlsm_EXPORTS/openf.frm @@ -55,9 +55,9 @@ End Sub Private Sub UserForm_Activate() handler.server = shConfig.Range("server").Value - cbDSM.list = shSupportingData.ListObjects("DSM").DataBodyRange.Value - cbDirector.list = shConfig.ListObjects("DIRECTORS").DataBodyRange.Value - cbSegment.list = shConfig.ListObjects("SEGMENTS").DataBodyRange.Value + cbDSM.list = RangeToArray(shSupportingData.ListObjects("DSM").DataBodyRange) + cbDirector.list = RangeToArray(shConfig.ListObjects("DIRECTORS").DataBodyRange) + cbSegment.list = RangeToArray(shConfig.ListObjects("SEGMENTS").DataBodyRange) End Sub diff --git a/Master Template.xlsm_EXPORTS/openf.frx b/Master Template.xlsm_EXPORTS/openf.frx index 675589fbc244decadddb04b31dd71edfa9e4207e..fa719909ace1a6cb9ffcd3179b1a407cb6cea0d1 100644 GIT binary patch delta 162 zcmbOsGec%W3k#dUq08J4$~JegFtac+Ozz`w0Fvi9UIWS9oZ75P3@*XGljn0vPiEuN z=1$DWcgZYDO)kkVn!JEhiZ#E8fyrR8ysfutRX+?>a=iV*5gEG&#gllwXB85t&@=P+hWoy^Q>F2umVz$C(;0iqZf r8vMO$YbX0~R!=r!5t@9HQ-RT7@-NOPrW}UJVO-jbC7YYLrZEBlJ^>fG