From: Neal Zimm on 3 Jun 2010 13:46 Hi, I have subs and functions that take in and update public type records. No problem when: Sub Name(InRec As uTypaA, more args..... Is there a way to optionally write a public type ? VBA won't allow: Sub Name(Arg1, Arg2, optional uRec As uType = ??? I guess since there's no constant value to assign to the fields. I get the late bound error msg when I tried this: Sub Name(prior args....., optional uRec as variant = "") Dim uWantRec As KnownType uRec = uWantRec I can guess VBA must know the Type to initialize the fields. Is it the same thing by making the public type I want one element of a ParamArray ? It seems a waste to put the "As KnownType" in the argument list, not optionally, and then sometimes update the fields, and sometimes not. Is that the best there is to optionally update and output a public type record from a sub or function ? Thanks, Neal -- Neal Z
From: Peter T on 3 Jun 2010 15:48 Short answer is no. But that said I don't understand what you are trying to do, you suggest - optional uRec As uType = ??? You can't assign a single value to an entire Type in any situation, maybe try and explain the objective. Regards, Peter T "Neal Zimm" <nealzimm(a)yahoo.com> wrote in message news:70F770CF-89D1-487C-A4EF-DED1E8B41C2A(a)microsoft.com... > Hi, > I have subs and functions that take in and update public type records. > > No problem when: Sub Name(InRec As uTypaA, more args..... > > Is there a way to optionally write a public type ? > > VBA won't allow: Sub Name(Arg1, Arg2, optional uRec As uType = ??? > I guess since there's no constant value to assign to the fields. > > I get the late bound error msg when I tried this: > > Sub Name(prior args....., optional uRec as variant = "") > > Dim uWantRec As KnownType > > uRec = uWantRec > > > I can guess VBA must know the Type to initialize the fields. Is it the > same > thing by making the public type I want one element of a ParamArray ? > > It seems a waste to put the "As KnownType" in the argument list, not > optionally, and then sometimes update the fields, and sometimes not. > > Is that the best there is to optionally update and output a public type > record from a sub or function ? > > Thanks, > Neal > > > -- > Neal Z
From: Neal Zimm on 3 Jun 2010 16:59 Thanks for the quick response Peter, the phrase in my post: optional uRec As uType = ??? was ONLY my attempt at illustrating what cannot be done since my understanding of optional arguments is that they must be assigned a constant value, e.g. Optional NumVar As Long = 0 The ??? was my way of trying to say this can't be done with a record. Thanks again, -- Neal Z "Peter T" wrote: > Short answer is no. But that said I don't understand what you are trying to > do, you suggest - > > optional uRec As uType = ??? > > You can't assign a single value to an entire Type in any situation, maybe > try and explain the objective. > > Regards, > Peter T > > > "Neal Zimm" <nealzimm(a)yahoo.com> wrote in message > news:70F770CF-89D1-487C-A4EF-DED1E8B41C2A(a)microsoft.com... > > Hi, > > I have subs and functions that take in and update public type records. > > > > No problem when: Sub Name(InRec As uTypaA, more args..... > > > > Is there a way to optionally write a public type ? > > > > VBA won't allow: Sub Name(Arg1, Arg2, optional uRec As uType = ??? > > I guess since there's no constant value to assign to the fields. > > > > I get the late bound error msg when I tried this: > > > > Sub Name(prior args....., optional uRec as variant = "") > > > > Dim uWantRec As KnownType > > > > uRec = uWantRec > > > > > > I can guess VBA must know the Type to initialize the fields. Is it the > > same > > thing by making the public type I want one element of a ParamArray ? > > > > It seems a waste to put the "As KnownType" in the argument list, not > > optionally, and then sometimes update the fields, and sometimes not. > > > > Is that the best there is to optionally update and output a public type > > record from a sub or function ? > > > > Thanks, > > Neal > > > > > > -- > > Neal Z > > . >
From: Neal Zimm on 3 Jun 2010 17:23 Sorry Peter, I keep forgetting to answer your question re: my objective. Many of my sub's and function's of a "utility" type are written to do more than "one" thing. I was trying to communicate to the proc only the parms for the arguments that are required for the proc to do its 'thing' and to have only those arguments appear in the calling macro. (When debugging it helps me to quickly see what's being asked of the proc being called.) The original post was based on a boolean function that checks to see if a row is devoid of data. One flavor of a result is just a simple true false, If bNullRowF(WrkSht, Row) then .... else ...... 'Note, all possible arguments 'are not shown In my App, if the worksheet is of a certain type (logic in the function figures that out) and the row is NOT null, I want selected data coming back from the function re: the not null cells. The selected data in this case is master file type data contained in hidden columns and it's always in the same columns, so in this case the call would look like: If Not bNullRowF(WrkSht, Row, uRec) then 'process the uRec fields else 'logic for a null row end if I was hoping there might be a way to not show, and not have to Dim the uRec in procs calling bNullRowF that needed only a simple T/F result. Best, Neal -- Neal Z "Peter T" wrote: > Short answer is no. But that said I don't understand what you are trying to > do, you suggest - > > optional uRec As uType = ??? > > You can't assign a single value to an entire Type in any situation, maybe > try and explain the objective. > > Regards, > Peter T > > > "Neal Zimm" <nealzimm(a)yahoo.com> wrote in message > news:70F770CF-89D1-487C-A4EF-DED1E8B41C2A(a)microsoft.com... > > Hi, > > I have subs and functions that take in and update public type records. > > > > No problem when: Sub Name(InRec As uTypaA, more args..... > > > > Is there a way to optionally write a public type ? > > > > VBA won't allow: Sub Name(Arg1, Arg2, optional uRec As uType = ??? > > I guess since there's no constant value to assign to the fields. > > > > I get the late bound error msg when I tried this: > > > > Sub Name(prior args....., optional uRec as variant = "") > > > > Dim uWantRec As KnownType > > > > uRec = uWantRec > > > > > > I can guess VBA must know the Type to initialize the fields. Is it the > > same > > thing by making the public type I want one element of a ParamArray ? > > > > It seems a waste to put the "As KnownType" in the argument list, not > > optionally, and then sometimes update the fields, and sometimes not. > > > > Is that the best there is to optionally update and output a public type > > record from a sub or function ? > > > > Thanks, > > Neal > > > > > > -- > > Neal Z > > . >
From: Peter T on 6 Jun 2010 07:11
u "Neal Zimm" <nealzimm(a)yahoo.com> wrote in message news:F854C026-A154-404F-BCE3-23033DF991F0(a)microsoft.com... > Thanks for the quick response Peter, > > the phrase in my post: optional uRec As uType = ??? was ONLY > > my attempt at illustrating what cannot be done since my understanding of > > optional arguments is that they must be assigned a constant value, e.g. > > Optional NumVar As Long = 0 > > The ??? was my way of trying to say this can't be done with a record. > Thanks again, > -- > Neal Z > > > "Peter T" wrote: > >> Short answer is no. But that said I don't understand what you are trying >> to >> do, you suggest - >> >> optional uRec As uType = ??? >> >> You can't assign a single value to an entire Type in any situation, maybe >> try and explain the objective. >> >> Regards, >> Peter T >> >> >> "Neal Zimm" <nealzimm(a)yahoo.com> wrote in message >> news:70F770CF-89D1-487C-A4EF-DED1E8B41C2A(a)microsoft.com... >> > Hi, >> > I have subs and functions that take in and update public type records. >> > >> > No problem when: Sub Name(InRec As uTypaA, more args..... >> > >> > Is there a way to optionally write a public type ? >> > >> > VBA won't allow: Sub Name(Arg1, Arg2, optional uRec As uType = ??? >> > I guess since there's no constant value to assign to the fields. >> > >> > I get the late bound error msg when I tried this: >> > >> > Sub Name(prior args....., optional uRec as variant = "") >> > >> > Dim uWantRec As KnownType >> > >> > uRec = uWantRec >> > >> > >> > I can guess VBA must know the Type to initialize the fields. Is it the >> > same >> > thing by making the public type I want one element of a ParamArray ? >> > >> > It seems a waste to put the "As KnownType" in the argument list, not >> > optionally, and then sometimes update the fields, and sometimes not. >> > >> > Is that the best there is to optionally update and output a public >> > type >> > record from a sub or function ? >> > >> > Thanks, >> > Neal >> > >> > >> > -- >> > Neal Z >> >> . >> |