« first day (1875 days earlier)      last day (1305 days later) » 
00:00 - 19:0019:00 - 00:00

12:01 AM
RELOAD!
[rubberduck-vba/Rubberduck] 4 opened issues. 1 closed issue. 18 issue comments.
[Minesweeper] Games Played: 74, Bombs Used: 53, Moves Performed: 8993, New Users: 11
 
@IvenBach no :)
I had a phase like that as well, but with my PC falling further and further behind I'm beginning to get back into video games
 
12:56 AM
> Thanks in advance!

**Rubberduck version information**
Rubberduck version [2.4.1.4627]
Operating System: [Microsoft Windows NT 10.0.17763.0 x64]
Host Product: [Microsoft Office x64]
Host Version: [16.0.11328.20368]
Host Executable: [EXCEL.EXE]

**Description**
I created a macro-enabled spreadsheet with simple buttons that run particular macros when clicked on. I am trying to add unit tests to these functions I wrote. To do so, I added one function at a time to a n
> I am trying to use Rubberduck to write unit tests for Excel VBA code, and I will eventually need to connect those tests to Travis CI. I was wondering if Rubberduck can run headless.

Thank you very much!

P.S. I tried emailing this question, but delivery keeps failing to contact@rubberduckvba.com.
 
@Vogel612 Very much no when RNJeesus hates you...
 
@IvenBach Yeah, I had that period too.
Now, I'm just bored from programming, and don't even want to open my IDE much anymore. I blame work.
 
1:33 AM
So much like a bad case of visiting in-laws this feeling of coding enjoyment shall eventually pass? I hope not for a while.
 
1:50 AM
store.steampowered.com/app/269210/Hero_Siege may keep me entertained for a while. $5 for a 4 pack isn't bad.
 
> Poke @retailcoder re email delivery failure.

So long as there is an existing office installation Rubberduck theoretically could be run headless. Note that there is no existing support for that usecase implemented here.

If my leaky memory serves, this already came up two or three years back. A look at the forks that are actively diverging from the mainline might be useful as I recall there was at least one fork that added headless capabilities.

Additionally useful might be the observat
 
Ttgtb
 
 
2 hours later…
4:10 AM
[rubberduck203/VBEX] ggroh starred us
2
 
 
2 hours later…
6:31 AM
@Duga do we actually need the real host or does it sufficient just to mock the entire environment?
 
 
2 hours later…
8:16 AM
0
Q: Brute for Looping & formatting Or Create Union range & Format? Which is efficient and when?

Ahmed AUMay be my question is not up to the standard for Code Review, but of upmost importance for reassessing methods used in my VBA coding . While preparing/testing answer for a SO post (thought to simplest of simplest questions) VBA cell format that contain a specific percentage value, I came to a jol...

 
 
2 hours later…
 
2 hours later…
12:04 PM
This is fun:
for item, price in zip(ws.Range("BP3:BP9").Value, ws.Range("BT3:BT9").Value):
    if (not item[0] == '??') and price[0] > 0:
        print(str(item[0])[:-2], "{:.2f}".format(price[0]).replace(".", ","))
That's Python 3 reading data from an Excel worksheet.
 
how do you get an array out of a single cell?
 
@Vogel612 It gets a tuple where only the first item is filled for some reason.
 
ew
 
So, they're all like (1234.0, )
@Vogel612 Yea, not entirely sure why it does that, but it does, so I work around it. Not pretty at all.
 
could use a comment. Also decimal separator replacement being locale-dependent is a pain, right :)
 
12:13 PM
@Vogel612 Yes, and since I'll be using this on 2 different machines with 2 different locales, it's going to be a heck of a lot of fun.
Next step is finding out whether the locale is stored somewhere in the COM to be accessed. I'm having a little trouble with accessing those constants so far.
I'll probably just test for it one way or another.
 
12:43 PM
:nudge: Is my PR mergeable?
 
@mansellan you referring to the "Exclude from project" one?
 
This one I think.
Only open PR with his name.
 
ah sorry yes
:blush:
 
@mansellan You haven't responded yet to MDoerner's comment, right?
 
Hmm, I responded to his individual ones but not the summary. Will update.
 
12:48 PM
@mansellan Not visibly in the PR anyway. So the status on that probably won't change.
 
> > I get why the removal from the repository is necessary and thanks for figuring this out. However, please keep the number of classes that can access the removal method to a minimum.
>
> Moreover, please do not put upgradable locks into a method that clearly states that it evaluates in a read lock.

Thanks, should be all sorted now.
 
@M.Doerner ^^
 
@Mast The individual ones are in the "show resolved" sections. It wouldn't let me reply directly to the summary so I've posted a new reply at the end.
 
Ok
 
 
1:05 PM
@Hosch250 Good on ya!
 
Thanks.
 
@IvenBach of all the sites our firewall blocks, that ain't one of 'em. weird...
 
Speaking of PR reviews:
Jul 13 at 14:07, by this
yesterday, by this
Speaking of PRs, the ComCommand PR needs a bit of reviewing eyes....
 
Thanks @Vogel612, will fix those up after work.
 
@this that one is so much beyond my ability :D
 
1:06 PM
^^ mine too, even more so
 
@this I can try to take a look, but if Vogel can't...
 
Fine... I'll look at it. Won't have a clue, but I'll look at it! :)
 
Vogel's better than I am at such things.
 
LOL - look at it way - reviewing a PR that's beyond the ability is a learning experience. That's why I review all PRs even if I don't actually understand them. :)
Besides, we all need the insurance against stupid boneheaded mistakes....
 
That's why I volunteered :)
I'm looking to finish a task I'm working on in a few hours. Maybe I'll get to it after lunch or so.
 
1:15 PM
cool. It doesn't have to be RIGHT NOW, though. Just in few more days is fine. I have another PR to attend to...
 
Be sure and remind me on the weekend if I forget.
 
k
 
1:37 PM
LOL.
 
Just wondering - you know how xml docs only works on elements like classes or methods, but not on say, a namespace, right? How would you document things like namespace and its intended scope?
 
/// <summary>
/// doc here
/// </summary>
namespace thing
{
}
 
1:52 PM
That works?
 
@this They work, they just don't have special support.
 
I thought it didn't.
 
define "works"?
 
Oh
 
You can really put it on anything.
 
1:52 PM
"picked up by intellisense" != "works" ;-)
 
IIRC, that got green squiggles from R#, hence my assumption it doesn't "work"
(for some value of "work")
hmm interesting.
1
A: XML-documentation for a namespace

Adrian LopezYou can do it in doxygen using: /// <summary> /// description /// </summary> namespace name{}; Also, it's a good practice to declare your namespaces in a NameSpaces.cs file, and comment them only in this file.

 
indeed. the problem is more about how a 3rd-party tool reading the xml-doc needs to work in order to "merge" the docs across all files in a given namespace.
IMO namespace docs belong in a dev wiki though
come to think of it, xml-doc for everything belongs in a dev wiki
 
FWIW, that's how I did it with my prototype at work.
I have one set of docs for the users, and a second set for devs.
 
2:13 PM
My main problem with keeping docs out of source code is that it is easier to fall out of sync. When it's right there next to the signature, you can see if they are wrong or not.
But that's usually not the case for documentation of namespace or something like that.
 
@Hosch250 Wat
 
@Mast Nested ducks.
 
Matrduckshka
2
 
@this oh, agreed! I was thinking of generating dev wiki docs off xml-docs, using something like SandCastle (or doxygen? need to research..)
 
2:15 PM
Yeah, seems that doxygen does namespace thing a bit better -- sandcastle requires a static class which I think is a bit too weird and a bit too intrusive.
 
^
if it outputs github-markdown, we have a clear winner :)
 
saw this today...
 
@KySoto saw this yesterday ;-) ...funny as hell though!
 
@MathieuGuindon pretty sure I saw a nuget for that.
 
@MathieuGuindon posted it as a pro tip on the VBA reddit :P
 
If I don't yet have data in a table to test against, then I need to write test cases for my methods to prove that they work as intended. Right? This gives the added bonus that I'll have test cases for my methods so I can be sure that future changes don't break anything. And it's just the right way of doing it (writing tests, that is).
 
Finished my task, but QA is getting slammed with bugs due to some late changes by the architects without consulting the devs about subsequent work to clean up everything that would break.
Can't review just now.
 
not clear - methods that does data access on a database?
If you are dealing with SQL stuff, you would use tSQLt framework instead.
If you are dealing with validating that a method does X for a given data entry, you need to work with abstraction of the table.
 
2:23 PM
@this googles duck duck goes
ah...
 
#Todo: Create aSQLa for Access....
 
well, that was super clear and easy in my head. Guess it wasn't so in other's heads.
If I'm writing GetPersonIDBySSN but don't yet have any persons, then I can write the code and write a bunch o'tests... yeah, I can throw an existing SSN and a non-existing SSN at it, but the method itself has to query something to see if it exists.
well, it was clear in my head - clearly wrong
 
that's a database concern.
therefore, need to be tested in that layer, not in application.
 
and that would be the abstraction?
 
To clarify you'd need a method in whatever language that does the actual query - because it's at the seams, it cannot be tested.
But you can make it return an abstraction of the object
e.g. Enumerable<IPerson>
or whatever
and then you can test your methods that acts upon the Enumerable<IPerson>
 
2:29 PM
and... this is why I keep struggling with getting started on this project.
 
but to test the correctness of your query, you need to use tSQLt so you can set up fake tables and put in data
and hten assert that your stored procedure? functions? whatever will return correct result
then you can be confidentt hat your method that does the query will do the right thing.
Makes sense?
 
> Headless might possibly work for VB6, but for VBA it requires a headless install of the host application, which isn't a recommended or supported scenario - one single pop-up dialog (from Excel, from the VBE, or from the VBA code itself) would "freeze" the CI server forever! But assuming everything works and there aren't any popups and there's a macro in the host document that runs on open and tells Rubberduck to parse the project / discover all tests, run them, and then publish the results to
 
It feels like everywhere I turn there's something new and foreign to learn and before I can start on A, I have to have B in place, but B is new to me and relies on having C in place and that's new too...
 
@FreeMan Yup, that's software.
 
welcome to the fun world that is software development.
it's kind of ridiculous how many acronyms you need to know just to be a "programmer"
 
2:31 PM
@this seems easier to just create the actual tables in a Dev instance and insert 2 or 3 known records to test against.
I guess that's not repeatable, though...
 
Esp. not if your stuff mutates the table
tSQLt basically helps with setting up the table so that they can be 100% repeatable
 
blerg
 
sorry, man!
 
yeah, well, if I'm gonna be better, I gotta start learning something sometime...
 
the domain of SQL is very different from the domain of application programming
 
2:33 PM
holds nose, dives in
 
which is why I always cringe when I see an application programmer apply imperative logic to their SQL procedures....
 
Sometimes you just want to make it work.
 
^
 
SO is weird with what it thinks is related. The #1 related question for a question about TypeOf vs. TypeName was "how do I crack Excel password".
 
2:47 PM
@MathieuGuindon Had a chat with Yvette earlier today in The 2nd about a rejected migration.
Not all of their moderators handle migration requests equally it would seem.
 
in the "signs the apocalypse is coming" category...
 
LOL.
 
@this On a bloody airplane? During launch? Wat...
Oh, it needs to reboot only every 149 hours.
 
3:24 PM
Probably running Windows.
 
Windows ME
 
-1
Q: Printing only the sheets I want. It hides and unhides after printing

MushiesmuDim Good_Sheets As Variant Good_Sheets = Array( "Sheet4", "Sheet2", "Sheet1") Worksheets(Good_Sheets).Select Sheets(Good_Sheets).Visible = False ActiveWorkbook.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False Sheets("Sheet4").Visible = True Sheets("Sheet2").Visible = True Sheets("She...

 
@QuackExchange wut??? That's not even a good SO question. Actually, that's not a question at all. It's a very short code dump
 
3:42 PM
1 day in, and Boris has managed to avoid accidentally pressing The Button. Reassuring!
 
This Boris?
 
^ exactly what I think of every time I hear the name Boris. No matter who it's referring to...
"Must get moose and skverrel "
 
Good ol' Boris?
Maybe something will finally happen now :)
 
3:55 PM
At this point, almost anything is better than the limbo you are in.
 
He's already replaced over half the cabinet
with brexiteers
 
Dang. He's getting right to work.
 
Amusingly, Parliament breaks for a month for summer after today...
 
It'll give him a month to plan his attack.
 
muwahaha
 
3:58 PM
Well, if were me, I'd definitely be thinking through that month. And likely going and talking to various foreign leaders and trying to negotiate deals and getting their concerns (especially around the Irish border issues).
Depending on whether that would be allowed.
 
I'm thinking that my best bet is to write GetPersonID(firstName, lastName, DOB, SSN) (and others like it) as a stored procedure to be called from VBA, but part of me wants to write it in VBA.
I think the "wants to write it in VBA" part comes from not having written anything beyond some simple queries in tSQL for a while...
thoughts?
 
@FreeMan You firewall is like a strange swiss cheese. Random holes throughout it.
 
4:18 PM
@FreeMan so you'd rather write t-sql in a VBA string literal? .......question: how would GetPersonID yield more than a single ID for a given SSN value?
 
@MathieuGuindon because SS does give out duplicate values.
which is why it's crappy as a natural key
 
@this Funny, I just had to explain this to my sister.
 
...so, SSN+DoB then
 
Might not be good enough.
 
Theoretically, SSN + DoB + FullName should be unique
 
4:21 PM
dang your SSN system is borked
 
IKR?
 
in any case, T-SQL in SSMS with syntax highlighting and shitty intellisense, is better than T-SQL in a VBA string literal, with string literal syntax highlighting and no intellisense or validation whatsoever.
 
^
 
In the United States, a Social Security number (SSN) is a nine-digit number issued to U.S. citizens, permanent residents, and temporary (working) residents under section 205(c)(2) of the Social Security Act, codified as 42 U.S.C. § 405(c)(2). The number is issued to an individual by the Social Security Administration, an independent agency of the United States government. Although its primary purpose is to track individuals for Social Security purposes, the Social Security number has become a de facto national identification number for taxation and other purposes.A Social Security number may be...
 
at very minimum, copy and paste from SSMS but that's only if you are dealing with a database that for #reasons is so locked down tight that you can only run ad hoc queries.
 
4:23 PM
> The number is divided into three parts: the first three digits, known as the area number because they were formerly assigned by geographical region; the middle two digits, known as the group number; and the final four digits, known as the serial number.
 
i bet you they ran out of the numbers with the original implementation and now it's all borked.
 
IKR?
 
That's the problem with a natural key, you always end up running out of the available digits.
 
OTOH, you can't really assign them sequentially.
 
Nope.
 
4:25 PM
That would be too easy to brute-force attack a person's number.
 
SSN, IPv4: same struggle
 
As a computer person, I'd say use a guid, but who wants to memorize a hexadecimal number with 32 characters?
 
one thing they should have had done was to make it easy to add digits. Say we run out of XXX-XX-XXXX; add a new 3 digits XXX-XX-XXXX-XXX, and assume everyone with XXX-XX-XXXX is now just XXX-XX-XXXX-000.
That's more or less what they did for IPv6.
@Hosch250 I do! I do!
 
Requires anticipation and planning. I don't think Uncle Sam plans everything out.
 
Heh, I should change my username to a guid.
 
4:27 PM
that'd be fun to reply to.
 
Make it nearly impossible to reference me :D
 
@IvenBach No. He just wants you.
 
23fc9a62-56de-47fb-97b4-737890c64c50
 
@Hosch250 you don't even have to.. the first couple bytes could be encoding country/state, and there would still be more than enough combos to barcode-ID everyone on Earth for the next million years or so
 
Ok, but the other problem is that when you encode stuff like that, it kind of breaks down when things change.
Suppose Texas secedes again? Then Mexico and Canada joins US?
 
4:29 PM
bwahahaha
 
Essentially what happened with the Soviet Union countries.
 
<bugs-bunny-sawing-florida-off-usa-map.gif>
 
lather & rinse few more time and you eventually run out of the encoding digits.
LOL
That'd be fine with me. We don't need Florida.
 
@this wait... Canada isn't part of the US?
ducks
 
Not yet.
 
4:30 PM
:grr:
 
LOL.
OK, it's done. My username is now a guid :D
 
The US SSN is garbage, even for it's original purpose
it doesn't even have an internal checksum
 
huh, so VB6 OEM was more "secure" than SSN
 
which means you can take your SSN, increment the serial number by 1 and you probably have a valid SSN for some person around your age from your general area
which is ... hooo boy
 
4:38 PM
Someone should start a Have I Been PWNed for SSNs.
 
kind of like license plates
 
@Hosch250 the answer is always yes
 
That would get people's attention. Names and SSNs publicly available.
 
Equifax didn't really get that much attention, did it?
 
It kind of did.
It was all over the media for a few weeks.
And my parents credit cards got leaked.
Mine wasn't, for some reason.
I'd only had it for a little bit, though, IIRC.
 
4:40 PM
@Vogel612 was it even a thing back then when it was invented?
 
@this the SSN is not that old
 
Apparently 1935. Not sure if anyone else was doing the equivalent of checksum for non-military uses...
 
money?
though that would probably be a cool question for History of Science and Mathematics
 
yeah, i'm not coming up with my googling. I'm a bit uncertain because from what I understood, cryptography really changed a lot when the computers became commonplace.
 
e.g. this paragraph:
 
@this checksumming is not really something that needs computers
 
Cryptography or cryptology (from Ancient Greek: κρυπτός, romanized: kryptós "hidden, secret"; and γράφειν graphein, "to write", or -λογία -logia, "study", respectively) is the practice and study of techniques for secure communication in the presence of third parties called adversaries. More generally, cryptography is about constructing and analyzing protocols that prevent third parties or the public from reading private messages; various aspects in information security such as data confidentiality, data integrity, authentication, and non-repudiation are central to modern cryptography. Moder...
 
Welcome @23fc9a62-56de-47fb-97b4-737890 to the pond new visitor.
 
~sigh
 
GUID.newGuid?
 
@Vogel612 No no, it's not really, but I think the mindset for doing checksums wasn't there back then.
 
I'll just stick to @23f 3-character handle for phone pings :)
 
LOL
 
@MathieuGuindon the mobile chat does suggest @expansions
 
I don't mind being two-three-eff.
It makes me sound like a star wars robot.
 
's that actually even ping you?
 
Yes.
Three-digits is enough to ping if it can uniquely identify someone in the room.
 
come Christmas, you'll be two-three-elf
 
4:53 PM
BBIAB, lunch time. I read your PR, @this.
 
back to checksums - I'm fairly sure that accountants were in habit of double-checking their books for long time before, however. I bet they came up with some way to do the equivalent.
Thanks, @23fc9a62-56de-47fb-97b4-737890!
 
It seems most of it is just namespace changes and injecting a new value into the base class.
 
-1
Q: Adding image from workbook to userform dynamically

TomI'm trying to write a script that will allow me to load pictures contained in my workbook into my userform dynamically in an attempt to make the workbook completely portable. I've come up with the following that seems to work but there is one line which I don't understand why it doesn't work with...

 
yeah, that's basically it, really!
 
Read about checksum but the content didn't ring anything for me. Can someone offer a layman's explanation for it.?
 
4:54 PM
there is hwoever, 2 scope creeps -
1) the fix for the ShowIntellisenseCommand ShowQuickInfoCommand and 2) test cleanups
those could have been their own PRs but.... I got carried away?
@IvenBach basically, it tells you that the content you have weren't altered.
e.g. if I sent you a message Get me bats but due to faulty transmission, it came to you as Get me mats
how do you know I actually meant Get me mats? In that case, I have to send you something that you can do the calculations from the Get me mats.
 
a very simple checksum for a number is to literally sum it's digits
 
Could be something stupid like assigning a digit to a letter, then summing up the digit. (that's not good one but ges the idea).
Or what Vogel said. :)
 
that way 321 and 123 have the same checksum, but usually the order of digits is not affected when transmitting them over the wire
more elaborate checksum mechanisms have something like "multiply each digit by it's position, sum them up and take the remainder of a prime number"
 
guessing "position" is 1-based ;-)
 
@MathieuGuindon Well... not really. I'm thinking I'll have a FindBySSN, FindByFirstLastDOBSSN4, and FindByFirstLastDOB encompassed within GetPersonID that will look based on the different combinations available (called in that order until a match is found). The question is should GetPersonID be in tSQL or VBA.
 
5:01 PM
@MathieuGuindon checksum is at 0 :)
 
@this I make sure everything I post here is double-ROT13 encrypted.
5
 
@FreeMan it'll be TSQL whether it's a stored procedure or plain VBA...
 
My vote is to write a T-SQL stored procedure and wrap it in a VBA method.
 
^ seconded
 
the VBA method should only retrieve the result and know nothing.
 
5:02 PM
Public Function JonSnow(ByVal ssn As String) As Object
 
if you don't want to deal with the model/abstraction, you could return ADODB.Recordset but that means dirtier downstream code due to all the stringifying
 
Thanks for the suitable checksum explanation for derpy-Ol-me.
 
A checksum is a small-sized datum derived from a block of digital data for the purpose of detecting errors that may have been introduced during its transmission or storage. It is usually applied to an installation file after it is received from the download server. By themselves, checksums are often used to verify data integrity but are not relied upon to verify data authenticity. The actual procedure which yields the checksum from a data input is called a checksum function or checksum algorithm. Depending on its design goals, a good checksum algorithm will usually output a significantly different...
That looks pretty in-depth too.
 
But ultimately, you really do want something like Enumerable<Person> which in VBA, I guess would be... PersonCollection or something.
 
Follow the links for more details.
 
5:04 PM
That was what a I read. I need the idea first before I can proceed.
 
@MathieuGuindon I could have a VBA method that calls each of the FindBy until a > zero value is returned (envisioning negatives for error codes).
@this I think this is what you mean?
 
hm
usually, those kind of methods are one-one
you can have another VBA method that abstract further by calling various VBA methods to do find OR even better, call a single stored procedure that calls other stored procedures to find the result.
 
@FreeMan consider throw-ing from the SP instead; ADO should forward a run-time error to VBA
i.e. avoid magic values
 
^
the seam methods should do as little as possible
we should call them know-nothing methods.
 
@this yeah, that was the dilemma I was getting at (very poorly, obviously). The FindBys being individual stored procs, being called by either a VBA method or a tSQL "manager" method.
 
5:10 PM
doing it all in T-SQL is probably better.
You don't need to drown out the gossipy gabby over the wire, you know?
 
and, with tSQLt, I can have some nice testing.
"gossipy gabby"... interesting turn of phrase... :)
wanders off to invent some code
 
5:30 PM
ooeurf... Why does like have to put workplace-work in when I want to code for RD?
 
6:17 PM
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5051?src=pr&el=h1) Report
> Merging [#5051](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5051?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/ece4060b54f69e6101809c042592b5faf4d20792?src=pr&el=desc) will **decrease** coverage by `0.2%`.
> The diff coverage is `46.59%`.


```diff
@@ Coverage Diff @@
## next #5051 +/- ##
==========================
 
@mansellan trolololol
 
lol
 
Is it reasonable to have a single return value from a stored proc where negative is an error code, 0 (zero) is not found and > 0 is the PK of the item being searched for. (Presumes that 0 is not a valid PK...)
 
IMO, no.
use a OUTPUT parameter.
or a function.
a return code from the stored procedure should be basically 0 => OK, anything else this is fine
 
"0 => OK, anything else this is fine" - can you refine that somewhat?
:)
 
6:26 PM
sure. If it's non-zero, you die in a fire.
 
so return code = 0 all is well, look at the OUTPUT parameter for your value, <0 something failed (including, possibly -1 = Not Found)
^^ ah...
took that a bit too literally
 
sure. I usually throw the error number at the return code
but in that case, it's a bit redundant because it's going to return with an error
which is more explicit.
 
ok... my way is simpler, but, far be it from me to buck convention & tradition when I'm trying to learn something new and do it the right way...
;)
 
it's more about making it dumbly blindingly obvious what your code is doing.
"here's some magical number" => "wtf do I do now?"
 
yeah, just getting to that. What's the best way to specify return codes so they're not magical pulled out of the air numbers?
some sort of "global" list of return codes to be used across a suite of stored procs.
 
6:31 PM
well, in my code, I typically just define a constant like SQLSuccess = 0
 
save 'em in a table?
 
and just do If Not SQLSuccess Then ThisIsFine
but remember that if the stored procedure throws an error, VBA will receive it as a runtime error, so technically that is even redundant.
I only put this in because #BeltsNSuspenders
 
@IvenBach I will review your PR when I am back from my vacation. I have nearly no internet here at all.
 
ah, I see what you mean. but... If I want to be able to log the errors, I need to define them in tSQL and VBA
 
not necessarily.
IF someCondition = 0
BEGIN
  SET @errMessage = CONCAT(N'ZOMG, did not find the id', @id, N', you lose!');
  THROW 50001, @errMessage, 1;
END;
VBA (rather, ADO) will get it as 50001 with the message you specify.
I don't bother with defining error numbers, TBH.
 
6:35 PM
ah, I see what you mean. In this case, the number is really irrelevant, it's the message that I'm after and I can put the descriptive message in the Stored Proc and just log it in VBA and be done with it.
 
yep
 
6:47 PM
[rubberduck-vba/Rubberduck] build for commit ae447f5e on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5051?src=pr&el=h1) Report
> Merging [#5051](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5051?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/ece4060b54f69e6101809c042592b5faf4d20792?src=pr&el=desc) will **decrease** coverage by `0.21%`.
> The diff coverage is `45.56%`.


```diff
@@ Coverage Diff @@
## next #5051 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit ae447f5e on unknown branch: 64.01% (target 0%)
 
00:00 - 19:0019:00 - 00:00

« first day (1875 days earlier)      last day (1305 days later) »