« first day (823 days earlier)      last day (2357 days later) » 
00:00 - 22:0022:00 - 00:00

12:01 AM
RELOAD!
[Phrancis/StackExchangeDataToMicrosoftSQLServer] 2 commits. 69 additions. 20 deletions.
[retailcoder/Rubberduck] 9 commits. 334 additions. 136 deletions.
[rubberduck-vba/Rubberduck] 14 commits. 1 opened issue. 5 closed issues. 5 issue comments. 599 additions. 182 deletions.
[Zomis/Brainduck] 7 commits. 1 opened issue. 1 closed issue. 1 issue comment. 34 additions. 40 deletions.
 
 
5 hours later…
4:51 AM
@Jelly you certainly sprinkle wonderlust and kept us inspired all over town when you drop in. :)
 
 
3 hours later…
7:43 AM
> We've all done it... You're debugging and you want to skip or enter an `If` block.... Only you forget to reinstate the condition, so next time the code runs in *PROD*, the nukes either fail to launch, or they're all launched at once....

Rubberduck should have an inspection for code like:

```vb
If True Then
'...

If False Then
'...

If Not False Then
'...

If Not True Then
`...

If LaunchNukes Or True Then
`...

Select Case True
Case False
'Unreachable Code
 
7:59 AM
> In comparison conditions, code is more readable when the operands are in a *readable* order, unlike the following:

```vb
Dim widget As Long
widget = 5

If 5 = widget Then
Beep
End If

If 4 + 2 = widget Then
Beep
End If

While 10 > widget
widget = widget + 1
Wend

Select Case True
Case 15 > widget
Beep
Case Else
End Select
```

Granted, some might argue that this is a matter of
> Comparing True to True just adds operations, and makes the code less readable.

```vb
If Foo = True Then
'If Foo Then
End If

If Foo = False Then
'If Not Foo Then
End If

If Foo = Not True Then
'If Not Foo Then
End If

If Not Foo = False Then
'If Foo Then
End If

If Not Foo = Not True Then
'If Foo Then
End If

While Foo = True
'While Foo
Wend

Do While Foo = False
> (example):

```vb
If (foo = True) Then
'If Foo Then
End If

If (foo = False) Then
'If Not Foo
End If

If (bar = 2) Then
'If Bar = 2 Then
End If

Dim widget As Long
widget = (5 + 7)
widget = ((((((((((((((((((((((((((((((((0))))))))))))))))))))))))))))))))
```
 
8:31 AM
> VBA allows for multiple negative signs. In most cases, they can be simplified.

```vb
Dim bankBalance As Double

bankBalance = -----1 ' -1
bankBalance = ----1 ' 1
bankBalance = ---1# ' -1#
bankBalance = ----1& ' 1&
```
> lol - #2222 for an issue about repeated characters :smile:
 
 
1 hour later…
9:49 AM
@PeterMTaylor That's what my moose's instructor said.
 
10:27 AM
0
Q: Generate Orders from Matrix and save as CSV

Denik GorbunovI had a task to create a VBA macros which will take a matrix data set with products in rows and persons as a columns (on intersection we have an ordered qty for each material for each person) and convert it into a CSV file for Advantix to load. As I'm new to VBA, I spent a couple of days investig...

 
 
3 hours later…
1:34 PM
> Might also be worth checking any literal that will be cast to Boolean literal:

```vb
If "TRUE" Then
'This runs
Beep
End If

If "FALSE" Then
'Unreachable
Beep
End If

If "1E23" Then
'This runs
Beep
End If

If 10 And 11 Then
'This runs
Beep
End If

If 42 Then
'This runs
Beep
End If

If -42 Then
'This runs
Beep
End If

If 0 Then
'
 
2:02 PM
> The good news is that there's already a `ParseTreeListener` walking the parse trees and picking up empty string literals - here it's simply a matter of looking at the node's `Parent` and verifying if it's an `If` or a `Case` statement. The listener is issuing the inspection results directly though (the inspection itself merely fetches the results from the parser state) - we're looking at something with similar mechanics here.

The problem might be with performance: literals are [literally] e
> I think this inspection needs to be a bit broader - it's going to have to analyze *expression trees*, and doing that only to issue an inspection result the odd time a double negative sign is encountered seems a bit of a waste. Let's make it about redundant signs, parentheses and operators - and make it trip when it encounters convoluted expressions such as:

If Not (foo <> 42) Then

..which would simplify/fix to:

If foo = 42 Then
> This would be a duplicate of #2222
> ref. #2222
> In other words, a Yoda Condition inspection?
> [This line](https://github.com/rubberduck-vba/Rubberduck/blob/next/RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs#L32) is in the stack trace:

var formEventHandlerScopes = State.FindFormEventHandlers().Select(handler => handler.Scope);

The offending code is an extension method:

var items = state.AllDeclarations.ToList();
var forms = items.Where(item => item.DeclarationType == DeclarationType.ClassModule
&& item.QualifiedName.Q
 
3:27 PM
Subliminal advertising... stackoverflow.com/a/39352694/4088852
 
4:13 PM
@Comintern Visual FoxPro??? I knew you enjoyed pain man, but wow
 
@Mat'sMug - Guess I kind of spilled the beans about all the ancient software I have installed on this machine there, didn't I.
 
:)
 
I had to crack open a VFP database a couple months ago, so I installed it for the drivers. I keep forgetting to uninstall it.
 
4:32 PM
As for what to use in VBA in place of .net WebRequest and HTTPWebRequest, there are currently 165 questions tagged [vba]+[web-scraping] that might help. A quick search for [vba] is:question httprequest turns up a number of results, too. — Mat's Mug 5 mins ago
I think I'm getting fed up with VBA+HTTP questions on SO
 
I generally try to ignore them. They usually fall into 2 categories - internal or password protected web applications that have to be scraped because they won't implement needed functionality (no page source), or pages with a REST API that should be used directly.
 
still, googling up "vba http request" turns up everything anyone ever wanted to know about making an http request in VBA
sometimes I wish I had a gold VBA tag badge on SO, so I could dupe-hammer the whole lot of 'em
 
I thought about suggesting that the OP use the .NET code to compile a COM .dll and then reference it, but the snarkiness probably would have gone over the OP's head...
 
lol
ugh. #SoMuchCrap
I have... I've provided you with two SO search links, and a Google search string that yields results containing everything you've ever dreamed to know about making an http request in VBA. — Mat's Mug 1 min ago
 
4:55 PM
@Mat'sMug Damnit, you made me pull the trigger.
@GameBuilder - If the .NET code works, why not just compile it as a COM .dll and reference it from VBA if you need to use it there? My guess is that would be much easier than trying to re-invent your own wheel. — Comintern 31 secs ago
 
mwahahaha
> How do I compile as a COM .dll and reference it in VBA?
 
:̶r̶u̶s̶h̶e̶s̶ ̶o̶f̶f̶ ̶t̶o̶ ̶f̶i̶n̶d̶ ̶l̶i̶n̶k̶s̶:̶ :yawns:
 
these people want to be spoonfed, and they won't even be bothered to fetch a goddamn spoon
 
Maybe while (mouth.Open) mouth.Insert(spoon); is beyond their comprehension.
I'd simplify it to something like:
if (spoon.Offered)
{
     spoon.Accept();
     mouth.Open();
     mouth.Insert(spoon);
}
 
needs a GoTo jump to be complete :)
 
5:05 PM
if (!spoon.Accepted) goto hell;
Like that?
 
yep!
gosh, the SO feed is terrible today (again!)
 
5:19 PM
@Comintern so I've been thinking about removing all COM objects from Declaration and IdentifierReference and QualifiedSelection and everywhere else - and then use the VBIDE API to fetch the references when they're needed. I think this would dramatically improve RD's stability.. thoughts?
I'd use the ProjectId along with the component's name to get the VBComponent from the API.
 
Speaking of SO, some of the people with high PR in SO airforce one class of a-holes. They down vote any newbie question.
 
I'm starting to think I'm slowly turning into one
 
You're not.
For NOW
 
lol
 
I'm going to be doing a course on SolidWorks VBA
for a company
Everything has to be compacted down to one hour.
I devoted 5 mins to show how to record a macro.
 
5:34 PM
and that 5 minutes starts with "ok guys, take notes - the next 5 minutes will give you tools to answer every question you've ever had about how to do something with the API, so you won't need to ask on Stack Overflow and get downvoted into oblivion for lack of research"?
 
Do you know what?
it actually does take 5 mins to show someone how to record a macro
I was surprised myself
 
@Mat'sMug I think that would be an excellent idea. I'd actually go a bit further and wrap all of the VBE classes with managed ones, including the IDE.
 
6:10 PM
the sad part is that it's going to wreck the whole VBIDE mocking and about a thousand tests will break
but I think a stable RD has more value than a thousand working unit tests
4
#PragmaticMe
 
@Mat'sMug I tried that.
It got incredibly slow.
 
ugh. that was my greatest fear
 
6:31 PM
Use a Dictionary instead of a Collection. That way you can test to see if it's a duplicate before adding it. — Comintern 2 mins ago
@Comintern totally X-Y problem
problem: I need to remove dupes from a collection.
solution: don't add dupes to your collection.
6
 
I suppose I should actually make that an answer. Otherwise it's going to drag out in the comments for days.
 
BTW Dim foo, bar As Whatever only declares a type to the last variable in the list (e.g. bar As Whatever), leaving everything else an implicit Variant (e.g. Dim foo) - so bucket is a Collection and Concat is a Variant. And VBA comments are made using a single quote. And your use of extraneous parentheses will eventually make you run into weird runtime error 424 "Object required" ...oh, wait. — Mat's Mug 1 min ago
 
@Mat'sMug We've got a guest.
 
hi @kr099! You've got 20 rep on CR now, just hit F5 to reload the page and you'll be able to talk
@Comintern someone beat you to it. see, that's what you get for answering in comments ;-)
 
6:47 PM
Woot! Off my plate now.
 
@Mat'sMug # instead of ' is for the purpose of clarity. the runtime error is in regards to the line w/o the parenthesis — user23960 44 secs ago
Ironic that it confused me. I almost posted a python answer
#Not
@Hosch250 had you tracked down the cause? all the extra COM calls were bringing it down to its knees?
There has to be a way to temporarily cache the references without storing them in all these thousands of objects.
 
There are two issues that I identified.
Number one is the extra COM calls during parsing.
Oh boy, did that take forever.
Number two is all the extra COM exceptions during parsing...
 
Hmm
 
See the answer below. I was going to post one similar to it. BTW, "for the purpose of clarity" it wouldn't hurt to get in the habit of explicitly calling default members (i.e. Concat.Items(a) instead of Concat(a)). That would give you an instant hint that something was wrong with your declaration because the IntelliSense wouldn't have popped up after the .. — Comintern 39 secs ago
 
Saw that :)
@Hosch250 would the COM exceptions be caused by concurrent access to the VBIDE API by any chance?
 
7:00 PM
Perhaps.
 
A thread-safe wrapper might be the answer
 
On the whole, though, it there weren't enough for that to be the cause.
It was mostly trying to check the properties.
When we figure out what type a document type module is.
 
it just can't be right that we're duplicating the VBComponent and VBProject references in ~40K objects
 
^^^That.
The biggest problem is that the GC treats all of them independently. Not an issue for managed objects, big issue for COM objects.
 
7:27 PM
The difference between VB6 and VBA is that in VBA you would have a host application and a global Application object variable waiting to be used - your answer would simply be "use the global Application object instead of making a new instance". VB6 only looks like VBA. If your code is VB6, tag with VB6; if it's VBA, tag with VBA. As for your variables, if they only live while the function is running, then they should be scoped to that function. Are you calling .Close or just setting it to Nothing? — Mat's Mug 7 secs ago
hi @user6576015!
 
hello
 
no Code Review profile? :-(
;-)
 
Me no?
no!
why do i need one
 
lol
you're asking the wrong guy haha ....IMO all programmers need a CR account
 
I'm fairly new to SA so i haven't dived into it too much
what did you think about my question? with vb6 and declarations for excel extracts - any idea what I might be doing wrong?
 
7:33 PM
wait a sec, are you @Bobski?
0
Q: VB6 extracts in Excel 2013

BobskiI have a few applications writting in legacy VB6 that have extract code built into to create EXCEL extracts. We are moving from Excel 2007 to Excel 2013 and I've run into some issues. In 2007, this is my declarations and Set statements that used to work just fine... Option Explicit Dim xlApp As ...

^ this one?
 
Howdy, @all! I'm back. Well, physically, mentally I'm still shot.
Looks like plenty of rabble has been roused in my absence...
 
I should change my screen name to "all" just to see how often it gets pinged.
 
LOL
 
@Comintern Not necessarily. I'm pretty sure we just have a pointer there pointing to the same object for all of them.
 
yesss!
Mat's Mug
Help a brotha out - im losing my mind over this
 
7:41 PM
in Discussion between Bobski and Mat's Mug on Stack Overflow Chat, 8 mins ago, by Mat's Mug
@Bobski I think I'd try GetObject instead of Newing up an instance directly
I was in the chatroom that got created for your question lol
 
Yeah i clicked it by accident - sorry
 
have you tried GetObject?
 
i clicked on ur profile and then came here
 
that would take you here yeah
 
set xlapp = getobject("Excel.Application")?
 
7:42 PM
yeah.. wait no, GetObject would get the active instance. you need to be working off a new one, right?
 
yeah!
i tried CreateObject("Excel.Application") but that didn't work
 
I don't think it matters then. except I really don't think the module-scoped variables are helping - the scope needs to be narrowed down
actually... you should be able to new it up in a With block
Dim xlApp As Excel.Application
With xlApp = New Excel.Application
    '...
    .Quit
End With
 
WTF:
OK, so I busted open the typelib and verified that it really doesn't have an Enter event, hidden or otherwise. The events are extended on the MdcTextEvents dispinterface, and there aren't any Enter or Exit events. I wonder if VBA is doing some sort of forwarding based on the message pump (i.e. simulating an "event" when it gets a WM_SETFOCUS message or something like that). — Comintern 54 secs ago
 
I'm using them for many different Functions - that's why I set it at modular level so I don't retype it - i have about 15 extracts
 
that's lazy coding, will bite you in the rear end sooner than later ;-)
like I said, a Function should not have side-effects on global state - anything else is asking for trouble
it should take input, do its thing and return a value, leaving global state unchanged
but that's why Code Review exists - to take working code to the next level
 
7:47 PM
These are legacy apps - they started with one or two, but over the years they've added a bunch
 
I feel your pain
actually scratch that With example - I meant to do this:
With New Excel.Application
    '...
    .Quit
End With
that way the With block is holding the object reference, and there's no object variable involved - outside the With block, the object doesn't exist.
cleanest way to go IMO
does Excel actually open when you run the code?
 
in the processes it does
I think what might cause the issue is that when EXCEL opens, it doesn't go right to the spreadsheet page like it does when you open 2007 - it goes to recent documents, where I can choose to select Blank Document, calendar, etc
could that be it? the fact the i haven't gotten to the spreadsheet part yet to create a workbook?
 
@user6576015 That shouldn't make a difference. The UI is a separate layer on top of Excel's COM server.
 
it shouldn't matter really. I'm just wondering what Excel might be "busy" with
that would be some dialog pop-up?
 
I actually like TimWilliam's suggestion to set it .Visible and see what happens.
 
7:54 PM
^
With New Excel.Application
    .Visible = True
    '...
    .Quit
End With
 
that didn't do anything - tried it
same Error :(
 
but Excel is showing up, is it?
 
in processes it does - it doesn't actually open - it's coded to ask user to show extract if they'd like to - if they don't want to see it then it just gets saved - but it's not visible in the background
 
I know. but you're trying to find out what Excel is "busy" with - making it visible should help diagnosing the problem
 
still gives me the same error I get otherwise
 
8:00 PM
Does RD just assume that everything in the form of Sub Object_Foo() is an event handler?
 
@Comintern not at all. we actually iterate the referenced COM libraries and extract the events.
...so if Object is of type Object, RD won't be able to tell that Foo is an event and thus that Object_Foo is an event handler
 
I was referring to the inspections. I thought that this weirdness would trigger a procedure not used inspection, but apparently it doesn't.
 
but if Object is of type Something and Something has an event named Foo, Sub Object_Foo() will be considered an event handler
 
I found something interesting, says VB6 based add-ins have a dependency on the Add-In designer object Library (msaddndr.ddl), which is no longer shipped with office 2013
 
@user6576015 - That's only for .dlls IIR.
I think I might know the problem though. I'm just trying to remember what the setting is...
 
8:04 PM
@Comintern a TextBox on a UserForm does have an Enter event, I'm not getting a repro on Excel 2010 here, with a userform+textbox+button where the button has TagStop 0 and TextBox has TagStop 1 (so it doesn't have focus immediately after showing the form) - I get my "test" msgbox as soon as the textbox gets focus. ...but it's not a dynamic control though.
 
Check out the Object Browser though. This also gives true: Debug.Print TypeOf Me.TextBox1 Is MSForms.TextBox
We read this out of the fm20.dll typelib:
coclass TextBox {
    [default] interface IMdcText;
    [default, source] dispinterface MdcTextEvents;
};
Of which neither interface has either an Enter or Exit event.
 
huh, I just pasted OP's code into a new class module, I'm on RD 2.0.8.26848 here, and the handlers do trip up a procedure not used inspection result...
 
I probably have an older build loaded here at work.
 
well your build has it right
 
It looks like VBA does some hackery behind the scenes to extend those "events" to controls on the UserForm.
 
8:09 PM
I've come to the conclusion a while ago already, that VBA itself is just a messy hack
 
lol
You'd think it would have been easier to just update the damn common dialog controls to 64bit...
 
my theory is that all MS' ActiveX devs committed suicide at once, leaving the .net team alone in the dark.
then the guy that wrote the VBA specs took off and founded Stack Overflow
 
@user6576015 - Try going into the Excel Options. Under Advanced, in the General section, change the setting for "Ignore other applications that use Dynamic Data Exchange (DDE)".
 
huh, could very well be it
 
I don't think it is impacting here, but I had a MailMerge problem the other day where Word's DDE would fail to interact with a new installation of Excel 2013 because of the Start Screen in Excel 2013. I had to uncheck the Show the start screen when the application starts option for Excel. (which you should do anyway). — ThunderFrame 26 secs ago
He almost beat me to it.
 
8:14 PM
I believe the correct term is "splash screen". gosh they did call it "start screen". nevermind.
 
Slash?
 
oops
 
That's kind of ominous sounding. I might have to use that somewhere...
 
it was unchecked so I check it in - to no avail :(
i'm gonna cry
who came up with excel i swear
I know microsoft but what are their names
 
lol
 
8:16 PM
Somebody better than whoever came up with Word?
 
^^
 
right lol
 
The other thing I'd try is putting a Sleep call in between connecting to the COM server and actually adding the Workbook. The error message looks like something is going wrong in the apartment threading - Hosch demonstrated a couple times that COM requests can actually do something similar to timing out.
 
except it's VB6 so he's COM-side anyhow
client-server though, ...wait so COM blows up not just through interop?
 
Right, but STA's manage access to the COM server's thread with a FIFO message queue. It doesn't matter how the client is implemented - it's a threading model thing.
Interop makes it worse because MS intentionally ignored some of the STA contract assumptions when they implemented it.
 
8:23 PM
is the COM spec Mr.Gates' work?
the Win95 demo bluescreen was just the beginning...
 
> (properly unit-tested thanks to RubberDuck for VBA)
11
Q: Shouldn't unit tests use my own methods

carlossierraToday I was watching a "JUnit basics" video and the author said that when testing a given method in your program, you shouldn't use other of your own methods in the process. To be more specific, he was talking about testing some record creation method that took for arguments a name and last nam...

 
@Hosch250 woot! that just made my day!
 
9:02 PM
thanks fellas for your help @Comintern & @Mat'sMug - I'll be back tomorrow :)
 
@Mat'sMug got a minute?
 
@user6576015 come back anytime! oh, and your code is yet another reminder that we need to figure out a way to make Rubberduck work in Visual Studio 6 =)
@Jelly maybe :)
 
can you give the asyncmethod in my com dll a shake in your excel
here's the download to the dll and tlb
it worked on @Comintern's system
 
hmm mind if I wait till I'm home to do that? I'm still at work
 
Dim a As Solidy.Solidy
Sub Test()
    Dim Address As LongLong
    Address = GetAddress(AddressOf somemethod)
    Set a = New Solidy.Solidy a.PerformActionAsync 0, Address
    Debug.Print ("Sub ended")
End Sub

Function GetAddress(AddressOfMethod As LongLong) As LongLong
    GetAddress = AddressOfMethod
End Function

Sub somemethod()
    Debug.Print ("Async Action begin")
    For i = 1 To 1000
        Debug.Print ("Step " & i)
    Next
    Debug.Print ("Async Action end")
End Sub
Here's the test method
pas de problème!
 
9:06 PM
ah, much better
:)
 
oh formatting yeah
doesn't bite the eye as much now does it
i think there's a problem with my sys
or SolidWorks
 
I don't have SolidWorks though
 
Yes.
It did crash my excel too
That's a noy problem.
 
a noy problem?
 
not a problem
sorry
 
9:22 PM
@Vogel612
got a minute?
 
hmm? sure
 
if you read above i'd like to test an async method from a com dll
there's a dropbox link
and the test method
it seems to crash my excel but doesn't crash @Comintern's one
 
waaaiit stahp
I just joined this room and I haven't even checked the GH issues for the day
let alone read up on conversation here.
also I don't have EXCEL so there's that
Do I need excel?
 
@Vogel612 lol, it's about some freakishly low-level COM hack to get some VBA code to work asynchronously ...I think. him and Comintern had quite a chat about it yesterday (or the day before... or was it Friday?)
 
sat night
 
9:27 PM
lol async VBA
 
it does work you know @Vogel612
 
^^ this room's tags are sooooo appropriate :)
 
^^^ @jelly - I still think you're better off with the threading APIs.
 
vb6?
 
Yeah, the code will port pretty easily though.
 
to honest with you i have never touched vb6 in me life
where do i start?
 
Keep in mind that what I was running was only stable if I didn't mess with the VBE at all when the callback fired.
 
@Vogel612 you excel or anything that vba in it
 
> Shouldn't be too hard to implement, I'd say it's nothing we should be interfering with though. The only thing where this could be useful IMO is in some "inconsistent conditional ordering" inspection, which would evaluate all conditionals and flag all that don't follow the majority. That's something I could get behind
 
9:30 PM
@Jelly access
 
still does it @Vogel612
 
@Jelly kk.. let me just try to find out why GH doesn't update for me anymore
 
@Jelly I would bet that if you know VBA you could literally just crack open a VB6 source and read it. They're essentially the same language.
 
ok
where do i get the vb6 editor?
 
> We need to be careful, as `Select Case True` is a *valid* usage, and sometimes the *only* way of expressing a Select Case statement that meets the needs of the conditions - particularly where the conditions relate to different variables. For example:

```vb
Sub foo()
Dim ignoreResults
ignoreResults = True

Dim rng As Range
Set rng = Range("A1:C5")

'Execute the first Case that evaluates to true
Select Case True
Case ignoreResults
Beep
Case Not rng Is
 
9:33 PM
okay so at least it's not only for me that GH is wonky today
@Mat'sMug could you grant me RO privs so I can clean the mess up?
 
If it's on an internal SSRS server, why can't you just query the database directly with ADODB? — Comintern 1 min ago
Why would you web-scrape your own SSRS pages? That's absurd.
 
lol page turned into a blizzard lol
@Comintern do you where i can get the visual studio 6?
 
yea we could use an RO for cleanup right now. But the Mug seems to be busy, Hosch, RD and Meehow aren't in here right now
 
a new landlord?
 
9:38 PM
With great power...
 
shit the rent has just gotten higher
 
@Jelly - Not offhand, but you shouldn't really need it. All of the files except the project files (and form binaries) can just be opened in a text editor.
 
hmmm, that was my stupid 4G, and me pressing button a few too many times...
 
oh man, i ma have to write more vba now
 
39 messages moved to Trash
I think I didn't move anything important :)
wonderful. now I can do something productive after I processed my mail of the last year or so
 
9:44 PM
> I wouldn't trip a warning on Select Case True - on Case {bool-literal} is another story though. Right?
 
@Jelly ok bear with me. I'm a total noob at this. I just reference that dll from Access, right?
 
@Vogel612 - Save everything first. ;-)
 
yup
 
@Comintern I ain't doing anything but RD testing anyways
 
9:46 PM
i think hes to register the dll first @Comintern?
maybe he's doing it the right way
 
soo... I need to run that tlb-command from the RD manual with that dll as target (and without the codebase flag)?
 
> Exactly
> So, we have an inspection that says:

> Expression is always [true|false].

What's the quick-fix? Do we suggest implementing the condition as a precompiler directive?
 
@Jelly Pretty sure that's a blocking call from VBA - it won't run asynch like that. I'm actually not exactly sure what the point of that calling structure is off hand.
 
wow... I don't even know how to write these chars...
2
Adding a new Module with Rubberduck loaded seems to do funny things
 
> At the very least I'd implement a constant and give the user the option of its name and scope.
 
00:00 - 22:0022:00 - 00:00

« first day (823 days earlier)      last day (2357 days later) »