« first day (718 days earlier)      last day (2462 days later) » 

00:00
RELOAD!
[rubberduck-vba/Rubberduck] 2 commits. 1 opened issue. 5 closed issues. 17 issue comments. 153 additions. 94 deletions.
[skiwi2/SEDENNInput] 7 commits. 358 additions. 278 deletions.
00:17
Wow! That clipboard HTML even renders in Lotus Notes. falls off chair
@Comintern It would be host specific, but we could possibly create our own Outlook PIA and edit the PIA to add a member that is implemented in Outlook.Application? That might let interop call a method defined in ThisOutlookSession VBA?
Also an angle to check. I actually tried to create a PIA for VBE7.dll earlier, but it gave me a bunch of statics with no members.
00:42
@Mat'sMug Is it OK if clicking anywhere on the page after it is open closes it?
OK, @Mat'sMug, I'm at the point where you should be able to just start putting info in.
Basically, we need a lot of new images and text now.
8:10. TTYL.
 
2 hours later…
02:35
So you have a menu item and a new page for each feature, that's just waiting for updated shots and content? Sounds good to me! ...I think I should hook up @Duga to that repo now...
03:18
What is the ad for RD that @awgaya mentioned, I'm curious what it said.
03:29
@Mat'sMug I've only been working in my repo.
@Mat'sMug Basically, yeah. We need to make thumbnails and new pictures and GIF's of the stuff still, and write about it.
I'm going to look at connecting to the project now.
Basically, I'm going to need to make a test stub and run the refactorings against the code.
Gaaahhh, I'm working with a 60MB slightly malformed HTML file. I need to use Replace to turn it into valid XML, but I run out of String space/memory when using VBA.Replace or Regex Replace. Any ideas?
03:45
Use string replace in multiple passes with C#?
Then manually go through and fix any problems (which, if done correctly, shouldn't take too long).
All the fixes are automatable. C# probably not an option here.
Why not?
C# is much more powerful than VBA, and from the sounds of it, you have a stand-alone file...
Or, if you don't know C#, try VB.NET. Still more powerful than VBA, but less of a learning curve.
Code runs everyday on user PC, where deployment/ registration is hard.
How many users?
Oh, you mean you have to distribute the code for them to run?
A few dozen users, global locations.
03:51
You could always package the C# thing as an executable with the file location hardcoded (or ask them for it). They would just have to double-click to run it.
Hmm, maybe.
I was thinking of using byte arrays and CopyMemory, which I'm hoping is a lot faster than Mid statement
How much memory do you have anyway?
If it is really that much of a problem, I'd probably only load part of the file at a time and save it to the disk every time I make a change.
8gb, but only 32-bit Office. But some of the Replace calls do 60,000 replacements each.
Read it in one line at a time with C# and make any relevant changes. Then rewrite it to disk and read the next line.
Hmm, when you suggested multiple passes in C#, is that because C# would also struggle with a file that size?
03:56
No. I thought you were running on something like 2GB.
If I were you, I'd read it into an array of strings and iterate over each string making replacements and putting the changed one back into the array.
Then save the lines into the file.
Yeah, I think I'll try that, or something like it.
I've never done that with a 60MB file, but it should work and only take a minute or so, tops.
Yeah, a minute is kind of expensive :-/. Another 15MB file is almost instant using Replace, but it falls under the memory threshold.
I'd guess it could handle it in 10 seconds.
I've only done it with files around 50-60KB tops, so...
I can do about 50 of them in about 50milliseconds, and opening/closing is the most expensive operation, so...
Yeah, the reason I need it as XML, is because after a transform, it's about 30% of the size, without losing any important info.
I already wrote a SafeReplace function, using Mid statement, but it is sloooow.
04:21
[rubberduck-vba/Rubberduck] retailcoder pushed 24 commits to next (only showing some of them below)
[rubberduck-vba/Rubberduck] retailcoder pushed commit a68be5fa to next: made inspection resource tests independent of current culture
Merge pull request #96 from rubberduck-vba/next

sync with main repo
Merge pull request #97 from rubberduck-vba/next

sync with main repo
[rubberduck-vba/Rubberduck] retailcoder pushed commit 9690fbc8 to next: made TestRunEventArgs a class, derived from EventArgs.
[rubberduck-vba/Rubberduck] retailcoder pushed commit fb86e372 to next: put all inspection tests in "Inspections" test category
Merge pull request #98 from rubberduck-vba/next

sync with main repo
[rubberduck-vba/Rubberduck] retailcoder pushed commit 0d241d45 to next: resolved merge conflicts
[rubberduck-vba/Rubberduck] retailcoder pushed commit f1537439 to next: Merge branch 'pull101' into next
[rubberduck-vba/Rubberduck] retailcoder pushed commit 71fcacdf to next: resolved conflicts
bookmark:
3900
A: Force Git to overwrite local files on pull

RNAImportant: If you have any local changes, they will be lost. With or without --hard option, any local commits that haven't been pushed will be lost.[*] If you have any files that are not tracked by Git (e.g. uploaded user content), these files will not be affected. I think this is the right w...

Ohh, that has a lot of votes.
wait what just happened here
[rubberduck-vba/Rubberduck] build for commit 71fcacdf on next: AppVeyor build succeeded
that's great but IIUC these commits were already in [next]
04:31
@Mat'sMug Probably because you force-committed.
IIUC, rebasing and force-merging, or whatever, rewrite the entire history of the branch.
Duga probably just posted the last few, or something.
976 passing, 21 skipped? do I have all tests?
Sounds about right.
We passed up VSD.
2
I remember not so long ago when VSD had 200 more than us.
D'oh. Stupid vbTextCompare was stupidly slow. VbBinaryCompare runs super fast.
04:50
> 39 dead crocs
> As I’ve already said, guard duck blew up all the neighboorhood’s crocs, so it’s really 58, 57 if you don’t count larry, who undied.
Night.
night!
> Member calls inside `With` blocks shouldn't create an identifier reference for the parent - e.g. here `L41C10-L41C20` is the `With` block variable, the *parent context* of all member calls in the `With` block:

![image](https://cloud.githubusercontent.com/assets/5751684/15492387/d1df7bae-2148-11e6-8718-04c5b0eeccf6.png)

For the compiler, yes, that dot is a member call on the *parent context* - but for the user it looks funny. Either make the selection on the dot, or don't make With block
> This will trip the *implicit reference to ActiveSheet* inspection:

Public foo As Range

That's a false positive, this instruction is using `Range` as a type, not as a global/static method.

Fix is easy: the inspection shouldn't look at *classes*, but at *functions*.

Problem is, it resolves to a `Class` here too:

Range("B1").Select

...which makes `.Select` resolve to nothing.

I think things be easier if `Range` resolved to the function when it's in a function call con
> doesn't see the $ signs at least: the inspection is tripped regardless of whether a call is made to Format or Format$.
05:17
I'm out
[retailcoder/Rubberduck] retailcoder pushed 14 commits to next (only showing some of them below)
[retailcoder/Rubberduck] retailcoder pushed commit 1dbe676e to next: translation: added translation for "Parser Errors", one typo fix in German translation (#1559)
Speed up parsers (#1560)

* clean up file statements (fixes #1487)

* consider members in supertypes as members of enclosing module (fixes #1489)

* remove temp fix (should be fixed with #1489)

* add support for Circle and Scale special forms (fixes #1498)

* fix foreign names (#1521)

* speed up all parsers by using the "two-stage parsing" approach

* reenable "function return value not used" inspection

* clean up
Fix TypeOfIs expression resolver (#1562)

* clean up file statements (fixes #1487)

* consider members in supertypes as members of enclosing module (fixes #1489)

* remove temp fix (should be fixed with #1489)

* add support for Circle and Scale special forms (fixes #1498)

* fix foreign names (#1521)

* speed up all parsers by using the "two-stage parsing" approach

* reenable "function return value not used" inspection

* clean up

* fix typeof expression resolver
Configure logging (#1563)

* clean up file statements (fixes #1487)

* consider members in supertypes as members of enclosing module (fixes #1489)

* remove temp fix (should be fixed with #1489)

* add support for Circle and Scale special forms (fixes #1498)

* fix foreign names (#1521)

* speed up all parsers by using the "two-stage parsing" approach

* reenable "function return value not used" inspection

* clean up

* fix typeof expression resolver

* configure logging
Changes for #1225 ExtractMethodRefactoring (#1564)

* Wrap CodeModule. Add RD Interface

* Run AutoFormatter over file

* fix xml comments

* Add a method for ParseString for a module.

* Heavy refactoring of ExtractMethodRefactoring #1225.
Provisionally remove GUI interaction as it's not required. Add stubs for tests.

* Marker for needing to validate the MEthodName and increment.

* #1225 : Add checking for Multiple NewMethod signatures. Start work on ExtractMethodSelectionValid
#1225 fix the IExtractMethod for InSelection (#1567)

* Wrap CodeModule. Add RD Interface

* Run AutoFormatter over file

* fix xml comments

* Add a method for ParseString for a module.

* Heavy refactoring of ExtractMethodRefactoring #1225.
Provisionally remove GUI interaction as it's not required. Add stubs for tests.

* Marker for needing to validate the MEthodName and increment.

* #1225 : Add checking for Multiple NewMethod signatures. Start work on ExtractMethodSelectionVal
[retailcoder/Rubberduck] retailcoder pushed commit 257257c6 to next: fix documents/forms not marked as default instance variables (#1570)
[retailcoder/Rubberduck] retailcoder pushed commit f4d7638e to next: replace debug with logger (#1571)
[retailcoder/Rubberduck] retailcoder pushed commit 71fcacdf to next: resolved conflicts
[retailcoder/Rubberduck] retailcoder pushed commit bd09a9b0 to next: added AsTypeName to the context-sensitive commandbar
05:56
@ThunderFrame FSO... FileStream... I've used it often for massive files.
just read part, then replace, then write to a different file.
06:49
hi @PeterMTaylor
@Chris a game ninja no less
nice
Yo @Gareth nice to see you shortened your profile name. You look more causal. Shame we couldn't join you for a VBA housewarming though. :)
Zak
Zak
Monking @all
Good late afternoon here heading home on the public train system. A good morning to you @Zak
@PeterMTaylor thanks. Yes, was thinking about it.. could shorten further to @GnT
But T is the initial of my ex...
now @zak is nice and short but \
z is bottom left keyboard... you must have a nice strong left pinky @Zak
:_
:)
hi @zak
Zak
Zak
Hi @Gareth
06:57
@PeterMTaylor last night I first went swimming. Then had to go over to the old house, empty out a ton of boxes, and vacuum the whole ground floor. This is england, so that isn't so big... maybe 4x6m^2
Just a thought @ThunderFrame is loading a 60mb file crazy to upload into a database that either a c# or a temporary table with SQL queries could do? The end result that modified before writing to a file. Just a long way around than @Hosch250 suggests
VBA can handle that with a filestream.
just read and write line for line. of if it's just a long string, read Byte Arrays
Day job calls. Cheers all
Zak
Zak
What is your day job?
c#/sqlserver/excel developer. Currently working on Market Data system
and now learning MongoDB
07:15
Well my train ride is over, may pop in for a browse later. See ya
07:35
@Gareth @PeterMTaylor it's driving me crazy. I'm throwing all my tricks at it, including file streams, chunking, byte arrays. My office just upgraded from 2010 to 2013, and everybody is getting out if memory issues. I'm beginning to think there's a buggy install.
@Gareth do you ever use the ADO Stream? Like FSO, except they work with binary too.
I'm going to try my code on 2010 tomorrow, and sanity check.
07:57
As Frankie goes to Hollywood once said..."relax! Relax! If you want to do it!" I am sure you will find a solution. If your takin the ado approach, you're either a) likely you have this large file linked to to a OODB connection which either an SQL query could fetch those statements you a mid$ a lot. B) Or allow a loaded database can be resolved thru a number of easier SQL statements for VBA or c# processing for Xml statements
All the best on that one. 👍🏻
08:20
hmmm, no, the document is coming over XMLHttpRequest. I save a copy of the Response stream, but then I do replaces on a copy of the ResponseText.... I'll dropi it until 2010 gives me some hints...
08:42
classic!
if you ever get out of memory issues and are using excel in any of these ways....
LOL
including : copy and paste ??
 
2 hours later…
11:07
LOL - yeah, I fixed a copy..paste issue the other day. Worked for years under 2010, didn't work under 2013.
Microsoft used to recommend 32-bit office, but I think they must have turned a corner at some point. It finally feels like 64-bit should be the preferred version...
I guess now that SmartIndenter works in a 64-bit host, 64-bit office should be considered the standard.
11:31
oh sorry @ThunderFrame, right! completely mis understood, processing XMLHttpRequests from the browser into the program.
@PeterMTaylor I'm using the MSXML.XMLHTTPRequest from VBA, so no browser in sight.
11:50
@Gareth Or simply open a workbook. :/
12:08
@FreeMan answer the question. don't suggest an anlternative :)
12:19
@FreeMan why didn't I think of it, or a word document even
13:00
@Gareth U+1F601 and U+1F620 must be specifically for teenagers - they look like they're wearing braces
13:42
0
Q: VBA Optimization, 5 Second Run time, efficiency suggestions?

Sam BufordCurrently working with this code to be a quick automation of some tasks for senior staff members that are not very adept in Excel. Wondering if VBA is simply not a very quick code or if my code is clunky and slow. Thanks for any help in Advance! Sub Paste() '---Paste Macro '---2016-05-23 D...

> Sorry if stupid/already exist - I am beginner.

I have to review some big application to calculate train performance so it is not a basic one and I need to extract that what is useful - some part of big main routine with these subroutines that are still in use.

However as it is really big I would be happy to be able to trace all variables like I have in Locals but in some more useful form. Possible extract to new worksheet.

Also great would be to have possibility to mark which part of
@Duga uh, if we could do that then we could also give you a stack trace and a test coverage report
13:58
soo... I hear we're going to do test coverage?
lol... yeah, when we have a compiler :)
Aight. Let me write the RegEx thingie first though
which reminds me.. I should get started on this thing
morning !
it's been lonely here,
hello!
14:43
What's up for today?
busy dealing with a filled-up transaction log file on my SQL instance.. wearing my DBA hat today
@Hosch250 I noticed a number of issues with some inspections yesterday, you could start with that ;-)
OK.
Someone in the Bridge needs to cool down.
15:00
I'm doing the Move Closer to Usage thing first.
15:13
@Mat'sMug I'm in a bit of a pickle now.
I made it always reparse and update all calls correctly.
Thing is, I still haven't figured out how to make the test wait for the parser event.
Should I PR this to Next anyway? Do you have any idea how to make it wait?
[Hosch250/Rubberduck] Hosch250 pushed 14 commits to Next (only showing some of them below)
[Hosch250/Rubberduck] retailcoder pushed commit 1dbe676e to Next: translation: added translation for "Parser Errors", one typo fix in German translation (#1559)
@Hosch250 where is this bit of code, would you mind if I looked at it quickly. I might not be able to help anyway.
Speed up parsers (#1560)

* clean up file statements (fixes #1487)

* consider members in supertypes as members of enclosing module (fixes #1489)

* remove temp fix (should be fixed with #1489)

* add support for Circle and Scale special forms (fixes #1498)

* fix foreign names (#1521)

* speed up all parsers by using the "two-stage parsing" approach

* reenable "function return value not used" inspection

* clean up
Fix TypeOfIs expression resolver (#1562)

* clean up file statements (fixes #1487)

* consider members in supertypes as members of enclosing module (fixes #1489)

* remove temp fix (should be fixed with #1489)

* add support for Circle and Scale special forms (fixes #1498)

* fix foreign names (#1521)

* speed up all parsers by using the "two-stage parsing" approach

* reenable "function return value not used" inspection

* clean up

* fix typeof expression resolver
Configure logging (#1563)

* clean up file statements (fixes #1487)

* consider members in supertypes as members of enclosing module (fixes #1489)

* remove temp fix (should be fixed with #1489)

* add support for Circle and Scale special forms (fixes #1498)

* fix foreign names (#1521)

* speed up all parsers by using the "two-stage parsing" approach

* reenable "function return value not used" inspection

* clean up

* fix typeof expression resolver

* configure logging
@Gareth Move Closer To Usage tests.
Changes for #1225 ExtractMethodRefactoring (#1564)

* Wrap CodeModule. Add RD Interface

* Run AutoFormatter over file

* fix xml comments

* Add a method for ParseString for a module.

* Heavy refactoring of ExtractMethodRefactoring #1225.
Provisionally remove GUI interaction as it's not required. Add stubs for tests.

* Marker for needing to validate the MEthodName and increment.

* #1225 : Add checking for Multiple NewMethod signatures. Start work on ExtractMethodSelectionValid
15:18
????
#1225 fix the IExtractMethod for InSelection (#1567)

* Wrap CodeModule. Add RD Interface

* Run AutoFormatter over file

* fix xml comments

* Add a method for ParseString for a module.

* Heavy refactoring of ExtractMethodRefactoring #1225.
Provisionally remove GUI interaction as it's not required. Add stubs for tests.

* Marker for needing to validate the MEthodName and increment.

* #1225 : Add checking for Multiple NewMethod signatures. Start work on ExtractMethodSelectionVal
@duga
[Hosch250/Rubberduck] retailcoder pushed commit 257257c6 to Next: fix documents/forms not marked as default instance variables (#1570)
[Hosch250/Rubberduck] retailcoder pushed commit f4d7638e to Next: replace debug with logger (#1571)
[Hosch250/Rubberduck] Hosch250 pushed commit a0add0cc to Next: Merge branch 'next' of github.com/rubberduck-vba/Rubberduck into Next
[Hosch250/Rubberduck] Hosch250 pushed commit 61e51667 to Next: Fix Move Closer To Usage refactoring
I tried doing a task with ContinueWith like you said. Apparently, however, the parser state event is run on a different thread with level Background.
So, it correctly waits for the parse to finish, but exits at the same time the Ready state is fired.
15:21
:0
Sigh
ok, well, I'm at work, so I'll look at it on the train home. I wanted to look at that anyway
I think I'm going to implement the blocking parse call that returns a state now.
but it's a threading issue, so probably have to look into the guts of parse
Still after that @InternalsVisibleTo
The blocking parse call will be in the parser.
It will be just like a normal parse, but it won't return until the state is either ready or an error.
I can block with a semaphore.
15:30
Put the semaphore in your test setup, not in the parser. Nothing in the app needs a blocking parse, doing that would be writing code just for testing.
It would make everything in the app a lot easier.
And I can't put it in the test setup because I wouldn't know when the release it.
If I knew when to release it, I wouldn't need it.
Fine, but call it BlockingParse or something that makes it easy to spot where a blocking parse is happening then
private readonly SemaphoreSlim _blockingParserSemaphore = new SemaphoreSlim(0, 1);
public ParserState BlockingParse(object requestor, VBComponent component = null)
{
    StateChanged += RubberduckParserState_StateChanged;
    OnParseRequested(requestor, component);
    _blockingParserSemaphore.Wait();
    StateChanged -= RubberduckParserState_StateChanged;

    return Status;
}

private void RubberduckParserState_StateChanged(object sender, ParserStateEventArgs e)
{
    if (e.State == ParserState.Ready || e.State >= ParserState.Error)
why double-register StateChanged?
won't that make the handler run twice?
15:47
Whoops. That is meant to be an unregister.
Oh, it is.
but the event is already registered, in the constructor. you don't need to re-register it
why do you use a semaphore in the first place?
so walk me through Release.
This is in the parser state.
@Gareth It releases it so another object can claim it.
you should be able to wait on the ParseInternalAsync
15:49
So when it's ready it releases.. I get that.
@Vogel612 I don't have access to the parser through the parser state.
We don't expose the parser, and I don't want to inject it everywhere.
if state > Error.. what' s on either side of Error
maybe that is the problem
I just put this in the state.
@Gareth ResolverErrror is > Error
15:50
@Gareth Resolver error.
ParserState.Error should really be named ParserState.SyntaxError
not strictly true
or ParseError... whatever
There is a possiblity for COMExceptions during the Parse process
"Error" is just too vague
15:52
true that
Would require adjusting the Localization, right?
this is just for dev? or to go into production?
yeah the keys are named after the enum values
@Gareth I think it's intended to go into production. Refactorings sometimes require a Reparse
@Gareth what is?
The other option is to just leave them not tested until I get around to doing the tree editing thingie.
15:55
wait so we're doing this for Testing only?
Pretty much.
It would make things simpler to have it, but it isn't required other than for testing.
Unless we can figure out how to properly block the test until everything is finished, event handlers and all.
why are you writing code for testing outside of tests?
I call screw it. (waits for @Gareth to slap me)
Because it needs to block in the refactoring.
You can just register a listener to the ParserState and use the same principle
15:56
Basically, I can block the parser until Ready.
20 secs ago, by Vogel612
You can just register a listener to the ParserState and use the same principle
@Hosch250 so it is required other than for testing ...
Not really.
This is what we currently do:
We handle the state in the refactoring and do what we need. All fine and good.
When we test, though, I can't have the asserts running until after the event handler in the refactoring runs.
we handle StateChanged, and it works. can't the tests handle StateChanged and work?
@Mat'sMug No.
How am I supposed to ensure the test StateChanged runs after the refactoring StateChanged?
15:58
you can't, it's a multicast delegate
If the refactoring used a blocking call, I could just wait until the refactoring finishes and returns control to the test.
@Mat'sMug Exactly.
but when it runs you know the state is "Ready"
@Mat'sMug That isn't good enough.
@Hosch250 then it is required.
No. It runs perfectly fine as it is--with no tests.
Yes, it is required to correctly test things.
I don't care about the state being ready in the tests--I care about the refactoring state changed handler finishing after the handler says Ready.
16:02
wait, can you rephrase that a bit clearer?
Basically, I need to wait until after the refactoring handles state changed to run my Asserts.
so... why are you not locking through a semaphore in the refactoring?
^
or in the tests
if (e.State == ParserState.Ready || e.State >= ParserState.Error)
{
    _blockingParserSemaphore.Release();
}
I'm currently doing one in the refactoring.
Or rather, I just decided to do it in this discussion.
@Mat'sMug doesn't work in the tests, because it doesn't guarantee the code under test is executed before the asserts
16:05
On the other hand, why not just implement it in a single place for everyone to use.
@Vogel612 Exactly.
6 mins ago, by Mat's Mug
@Hosch250 then it is required.
For testing, yes.
@Mat'sMug the problem is that it's only required because of testing
because we're happy with handling StateChanged. just pretend we're not.
if there were no testing, the refactoring would just bind an event listener to continue execution when they are notified
16:08
OK, so why doesn't the resolver run when I have the semaphore blocking execution?
Does the resolver try to run on the same thread?
The resolver runs on Ready
No, the resolver runs on Parsed.
I noticed that a while back and thought it might be a problem eventually... the resolver runs on whichever thread the last parse task was running on
@Vogel612 Ready is after the resolver finished ;-)
It should be its own task.
oups...
if (_state.Status == ParserState.Parsed)
{
    _logger.Debug("(handling OnStateChanged) Starting resolver task");
    Resolve(_central.Token); // Tests expect this to be synchronous
}
hmm... so that's not necessary anymore? Because the tests went and broke when it wasn't synchronous
16:15
...nothing like trying and seeing I say.
16:32
It isn't working.
I tried putting the resolver in its own task and waiting for it, and it just deadlocks or something.
oh, sorry I missed all that. I er was chatting to my boss.... standing in front of my monitor... Got to stop this
off to the pub for a pub quiz... Call me sober tonight. I'll be working on that async code on the train home. So watch out for my merge and PR tonight :)
braces for 1000 broken tests
3
Ok, just catching up on that.... The refactor calls on state change.... @Hosch250 problem is that he wants to check things are finished only after the state change has completed.
@Gareth pro tip: read up first. Else there's danger of redundancy :)
I'm just repeating up above. yet
yes
so my point. passing the state object in is where the problem happens.
Is stateParser was wrapped during testing couldn't intercept the calls on onstatechange and state.readh
16:46
Looks like a caching bug.
16:58
-1
Q: vba code to show text in text box from a given range

AmitI am new to VBA world, i have assignment to short text according to alphabet, like if i type a then it will populate all words starting from letter A. It will pick these items from Range(A1). Can be use text box or can we use Drop down. Please suggest and help me to write a code. Thanks

17:09
1
Q: Copy, Paste and Format 2.0

Sam BufordThis is a follow up with revised code, see the original question and subsequent answer in the following link (Copy, Paste And Format) This is a full version of all three "Macros" or subs within the workbook that I'm currently working with. I hope to use much of this as a reference in future auto...

0
Q: Excel VBA - Copy multiple worksheets to other existing worksheets

charlie_bI have 10 subsidiary company P&Ls that I report on a weekly basis. At the end of each week I want to rollover the file into a new week by copy-pasting each of the P&Ls into already existing separate sheets (i.e. I copy the sheet named "company1" to an existing sheet named "company1-prior week", ...

17:45
> I agree it would be great, but unfortunately Rubberduck doesn't have access to the runtime or call stack, which is burried inside the VBA runtime library. Of all available add-ins and tools out there, I only know **VBWatchDog** that's able to tap into the runtime (using C and ASM/hex code injection if I understand correctly) - which is pure black magic as far as I can tell.

Maybe one day Rubberduck will get to the point where it can actually "compile" and *simulate execution* of VBA code (w

« first day (718 days earlier)      last day (2462 days later) »