@theVBE-it'srightforme Builder isn't a very common or particularly useful pattern - it does make pretty cool, fluent code. The trick is that all builder methods except Build (it returns your IThing) return this (C#) / Me (VB*)

@MathieuGuindon the weird thing is that I didn't find any documentation and kind of half-expected that param object[] wouldn't work across COM but to my surprise, it does.

(at least as reported by @theVBE-it'srightforme, anyway)

That said, VBA/VB6 never had strong-typed ParamArray, so that would be a new feature in C#/VB.NET and thus not directly translatable.

Maybe one can write it as public Add([MarShalAs(UnManagedTypes.SafeArray, typeof(object))] params int[] Items) but that'd just mean you get a Add([Items() As Variant]) in VBA/VB6 -- no compile-time validation.

I've found this explanation on Wiki on how to validate an IBAN.. Since the number generated from the transformation can cause overflow with all data type available in vba I've worked with string and I'd like to have someone else review.. Thanks in advance!
From Wiki:
Check that the total IBAN l...

> I kind of like this idea very much, but the multiple-cells address string makes me wonder.. I think we'll need a regex that can find cell addresses in a string literal. How thorough do we want this to be? What if `D$27` is used as an argument to some worksheet function or UDF? Are we only looking at string literal arguments passed to `Worksheet.Range`, or anything that could possibly *contain* cell references? Should we also validate the value argument to a `Range.Formula` assignment?

Normally I would use vbNullString for ZLS. However I Have a lame API where I must pass in a ""

and I thought to make it a variable... I don't think I even can make it a constant since that might just end up being like vbNullString (e.g. a null pointer, which will _not_work. The lame API wants a initialized pointer to a zero-length string)

When I change the logic to get the document name by first looking at the file name and using the caption as a fallback, should I add a new property DocumentName or simply change the implementation of ProjectDisplayName?

@MathieuGuindon in regard to your blog/writing, have you ever given a thought about having guest writers and doing a layman, intermediate, and expert, format for a topic?

my wife has been really tuning into the "explain science" or something on youtube, which has been trending quite a bit. they have a low level explanation, an intermediate explanation, and an expert explanation, of the same topic.

Trying to add intellisense to a function... changing the member properties doesn't appear to save. any immediate thoughts? process->find member, right click, select properties, type into the prompt, hit OK.