« first day (1378 days earlier)      last day (1802 days later) » 
00:00 - 16:0016:00 - 00:00

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 21 commits. 1 opened issue. 2 closed issues. 2 issue comments. 3540 additions. 1990 deletions.
 
12:49 AM
@FreeMan Be proud of how much I'm failing right now. Slowly I'm cobbling this project together. #ItllBeGreat
 
 
2 hours later…
2:25 AM
0
Q: Speedup on Copy/Paste values on two sheets

0m3rI'm trying to copy values from one sheet to another sheet if value exist, code run great on around 500 rows but very slow on 5000 rows. I was wondering if there is any way I can speed it up my code? Option Explicit Public Sub FlashCycleCount() ' updating off With Application ....

 
I formally applied for the job.
3
 
@Hosch250 nice!!
 
I'll feel a little bit bad about leaving my current place. I'm just getting set to really change some of their processes for the better.
And I have some proof of concept's to redesign one of our core widgets that's horrible to use and maintain.
But then, I doubt I'll make it past the first interview or two, if I even make it that far, so not much risk of having to leave, LOL.
 
:+1:
I hope I can get a wee bit of help.... I'm mocking an object. But when I access the instance of the mocked object, it returns null which then throws. What I'm missing?
 
2:42 AM
@this code?
 
public class MockVbeEvents
{
    public static Mock<IVBEEvents> CreateMockVbeEvents(Mock<IVBE> vbe)
    {
        var result = new Mock<IVBEEvents>();
        result.SetupReferenceEqualityIncludingHashCode();
        return result;
    }
}
        [Category("Code Explorer")]
        [Test]
        public void AddUserForm()
        {
            var builder = new MockVbeBuilder();
            var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
                .AddComponent("Module1", ComponentType.StandardModule, "");

            var components = project.MockVBComponents;

            var vbe = builder.AddProject(project.Build()).Build();
            var vbeEvents = MockVbeEvents.CreateMockVbeEvents(vbe);
public RubberduckParserState(IVBE vbe, IProjectsRepository projectRepository, IDeclarationFinderFactory declarationFinderFactory, IVBEEvents vbeEvents)
        {
            _vbe = vbe ?? throw new ArgumentNullException(nameof(vbe));
            _projectRepository = projectRepository ?? throw new ArgumentException(nameof(projectRepository));
            _declarationFinderFactory = declarationFinderFactory ?? throw new ArgumentNullException(nameof(declarationFinderFactory));
            _vbeEvents = _vbeEvents ?? throw new ArgumentNullException(nameof(vbeEvents));
it throws on the _vbeEvents = vbeEvents
The sad thing is that it's not even under test. I'm just satisfying the new ctor parameters....
i thought maybe because i must do a Setup but the class doesn't even have a method / properties to be setup, so I tried setting up the events but that got me farther down the rabbit hoe.
 
2:57 AM
even added a method on the class, then did Setup. still returns null. i'm going to stash that and worry about it later.
 
[rubberduck-vba/Rubberduck] build for commit b6cc24ed on unknown branch: 55.95% (target 0%)
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3823?src=pr&el=h1) Report
> Merging [#3823](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3823?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/7a05cc4d4a99fe8a0d514e5027fdc982edfb7ecf?src=pr&el=desc) will **decrease** coverage by `0.04%`.
> The diff coverage is `22.45%`.


```diff
@@ Coverage Diff @@
## next #3823 +/- ##
=========================
[rubberduck-vba/Rubberduck] build for commit 606f8288 on unknown branch: AppVeyor build succeeded
 
3:20 AM
@this shouldn't that be _vbeEvents = vbeEvents ?? throw new ArgumentNullException(nameof(vbeEvents));
?
 
4:13 AM
.... blargh.
I are dumb
 
now i can sleep a bit happier albeit a lot more dumber. Night!
 
'night!
 
thanks again!
 
:)
 
4:29 AM
[rubberduck-vba/Rubberduck] build for commit 195684d7 on unknown branch: AppVeyor build succeeded
 
4:43 AM
> I believe with Wayne's work we are now in a position to fix this bug correctly.
 
5:08 AM
 
posted on March 15, 2018 by Rubberduck VBA

The key to writing clear, unambiguous code, is rather simple: Do what you say; say what you do. VBA has a number of features that make it easy to not even realize you’re writing code that doesn’t do what it says it does. One of the reasons for that, is the existence of default members – under the guise… Continue reading VBA Trap: Default Members →

 
Indonesian????
 
lol
bing.languages.pickatrandom
 
@Mat'sMug haven't read it yet, but did you get into set coercion and default members?
 
lil' bit yeah
also linked to the relevant issues
TTGTB
 
5:21 AM
Peltier Tech has been named #2 among Excel Blogs by http://RankedBlogs.com. I'm in good company! http://www.rankedblogs.com/excel
VBA Trap: Default Members https://rubberduckvba.wordpress.com/2018/03/15/vba-trap-default-members/
 
6:13 AM
Inspired by this SO answer: https://stackoverflow.com/a/49287784/1188513
 
@TweetingDuck My reading material for tomorrow.
@FreeMan Did you ever need to access the next element that followed an element with an ide? ...<h4 id="Foo">Foo Description</h4><p>Some text you wanted to grab</p>...
I can grab the id easy enough but the element following contains info I want to pair with Foo. I get the feeling that SeleniumBasic isn't the right fit for this.
 
7:03 AM
@IvenBach do you want the next sequential element or the next sibling element?
And, have you considered using regex to parse HTML?
4425
A: RegEx match open tags except XHTML self-contained tags

bobinceYou can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool th...

</sarcasm>
 
7:28 AM
@this Why are the guard clauses no longer explicit for the RubberduckParserState?
 
 
2 hours later…
9:28 AM
@ThunderFrame most of the time it’d be the next sequential element.
I recall at least once where it was the next sequential which contained childElement1, text, child element2, childElement3.
Is this best done with DOM and innerHTML and/or innerText?
It’s been near a decade since I had to think anything about html.
 
> I’m sorry that this went unanswered for so long.
We’ve removed the experimental source control feature per #3758.

You can use the “Export All” feature to export your source files to the local file system and use whichever VCS you chose. This turned out to be the simplest way for us to support as many users as possible.
> #3758
> #3758
> #3758
> Per #3758 we’ve removed the source control feature. The “correct” workflow now would be to “Export All” to the file system, edit with VS Code, then “Import All” back into the workbook.

@contributors also a reminder to be mindful of Rubberduck’s accessibility. Please take the time to fill in UI element attributes properly.
> Removing Source Control label per #3758.
Please consider whether exporting needs consideration if/when this is worked on.
 
9:56 AM
@PeterMTaylor it might be nearing the end of it's life, if it's always at 100%. You should look into some disk health stats and consider replacing that one
@IvenBach IIRC there should be something like nextSibling in selenium
@IvenBach DOM traversal is the most robust way of doing it, hands down
if you just want to scrape stuff quickly and really dirty and probably with some errors in it, you can go for RegEx
 
 
1 hour later…
11:14 AM
@Mat'sMug a few thoughts on your latest post:
1. The default member of Range is _Default not Value. But it gets weird when enumerating a Range - see stackoverflow.com/a/32997154/5757159
2. You don't want the default member to return an instance of itself (or you'll crash the host at runtime and design-time - stackoverflow.com/a/42077042/5757159
4. You didn't mention the bang operator for accessing the default member and passing a string argument
5. The discussion (rather than the bug) in Issue 3153 still confuses me as to what the default member of Cells is, when using parentheses immediately after Cells. But there are some good links towards the bottom of the issue.
6. The default member can be an array (upon which you can use a WorksheetFunction - stackoverflow.com/a/42148229/5757159)
7. Many default members are prefixed with an underscore, but you can still call them explicitly with square brackets around the member name.
3. You can demonstrate 2 identical expressions, with different treatments, in a single collection.Add ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, 1) statement - stackoverflow.com/questions/37866303/…
 
Yeah I tried making a more "level 1" post...
Still I need to edit it. Thanks for the inputs =)
 
there are too many Excel articles that try to state that Value is the default member of Range......
 
@IvenBach No, I knew exactly which elements I was after. I've used it on 2 sites to log in, navigate to a download page, fill in some download parameters, click "download now", wait for the processing to finish, rename/move the DL'd file (as necessary), then log out gracefully.
after writing each process in one large module, just to figure out where I was and what I was doing, I was able to extract an Interface from that and wrote 2 implementations of it. So I'm good(ish) to go if/when we add a 3rd site.
I just uninstalled .2929 and it warned that "some elements weren't uninstalled - they can be removed manually" or something similar.
Do I need to jump through all the hoops described yesterday to unregister bits and pieces?
N.B.: I usually don't uninstall between .pre releases, despite warnings to do so, so I may have FUBAR'd myself in that department...
 
@ThunderFrame hmm you got me there
@FreeMan likely just the %appdata%\rubberduck stuff
 
11:35 AM
@Mat'sMug ah, yes, I do see that there. Since there's still a rubberduck.config that means that when I install .2947, it will pick up my existing config?
 
@M.Doerner I took the recommendation from the R#. If that's not preferable I can revert that part.
 
@FreeMan yup
 
@FreeMan except when the default aren't the default values. Like CompileBeforeParse for instance. ;)
 
I'll keep an eye out, @this
@ThunderFrame You'd mentioned something about the bang operators not being the best way to go about doing things a while back, but I've lost track of the conversation and forgotten what you'd said. Any good references to read up on that? (Or want to give a brief dissertation on the topic again?)
 
11:52 AM
@FreeMan Just don't do rs!SomeField or Forms!someForm. It makes me sad. I prefer the more explicit rs.Fields("SomeField").Value or Forms("someForm")
2
 
@FreeMan and this is where I regret not mentioning the bang operator in that article..
 
@Mat'sMug I think that has to be its own blog article
 
@this hehe.. Implicitly accesses Fields.Item
 
because writing unverifiable code is too easy to write.
 
@this good idea! I'll make a "part 2" or something
 
11:54 AM
it really gets my goat when people get lazy and mash some expressions together that I can't even be sure.
I don't know how it'd work out for Excel but in Access, specifically, people love to do this.... Me.MySubForm.Form.SomeControlOnSubform.Value = 1
 
@this that. Or worse, on both sides of the = operator
 
this is unverifiable.
 
@this thank you. I've starred so, hopefully, I can find it again in the future.
 
I insist on writing it so:
 
makes note to edit code so @this isn't sad anymore
 
11:56 AM
Dim subForm As Form_MySubForm

Set subForm = Me.MySubForm.Form
subForm.SomeControl.Value = 1
this version now will enable the compiler to tell you that there ain't no control SomeControl on that subform.
 
any particular reason the installer creates 4 processes?
 
@FreeMan don't you normally "bookmark", instead of start?
 
hm, did you run it twice by mistake?
i think 2 processes are expected but not 4
disclaimer: I know zilch about innosetup
 
@this ummm...no....? how do I bookmark a particular comment in chat?
 
12:01 PM
it's on the room menu
 
@this ah. no, I've done that only once. I star, then look at all stars and filter for the ones I've starred. eventually, with enough paging and Ctrl-F, I'll come across it again.
I suppose if we only starred things that were really useful (like the "don't use bangs" comment), that would be more efficient.
but it's more fun to star funny, interesting and snarky comments, too.
 
@FreeMan huh had no idea
 
me neither. I usually just install over the top of the previous version (I know, it breaks the rules, hasn't bitten me yet! ;) ). This time, with all the warnings, I did an uninstall. When I reinstalled, the installer paused & warned that I had Excel open, offering to close it for me. I made sure I saved what I was working on, then TM appeared once the Excel window closed and I happened to notice it.
*TM was running, it was just at a lower Z order... it didn't magically start running itself. Just to be clear™
 
@FreeMan It's late-bound, but looks like it's early bound.
 
^ and that's what make it so evil.
 
12:16 PM
@ThunderFrame tyvm - more reading material
 
@this It's even more efficient to Set myField = Rd.Fields("SomeField") and then use myField.Value inside your loop.... That way you only resolve the field(s) once. I'll see if I can find the article.... Tomorrow....
 
Yes that's true, but I think it's more likely a micro-optimization. (looping in a recordset is generally a code smell to me)
I try to encourage them to write SQL queries first so they don't even have to loop in the first place.
 
@this Cursors are a code smell...
 
yep
 
has horrible Sybase flashbacks
 
12:20 PM
Cleaning up some obsolete issues for @rubberduckvba and I stumble across this... #LongLiveTheCucumber
I am convinced implicit conversions in pretty much all forms are evil
 
@TweetingDuck yes, it is.
TBH, I've yet to have an occasion to say, "Thank God! Implicit conversion saved my bacon!"
 
@ThunderFrame inspires horrible Btrieve flashbacks...
 
12:36 PM
Hmm the latest next seems to be crashing whenever I doubleclick a item in CE....
hmm. looks like the IndenterCommand is null: public bool CanExecuteIndenterCommand => IndenterCommand.CanExecute(SelectedItem);
in fact, all commands seems to be null.
OK, i need to correct a bit -- those NREs aren't crashing.
this is the crashing code:
private void TreeView_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (ViewModel != null && ViewModel.OpenCommand.CanExecute(ViewModel.SelectedItem))
            {
                ViewModel.OpenCommand.Execute(ViewModel.SelectedItem);
            }
            e.Handled = true;
        }
specifically the OpenCommand
 
12:54 PM
> Since the merge of PR #3739, the Code Explorer is now crashing because it has `null` for all of its commands.

Note that simply having `null` doesn't crash, but rather a lack of handler:

```
private void TreeView_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (ViewModel != null && ViewModel.OpenCommand.CanExecute(ViewModel.SelectedItem))
{
ViewModel.OpenCommand.Execute(ViewModel.SelectedItem);
}
 
1:13 PM
@this Do you ever prefer rs.Collect("SomeField") over rs.Fields("SomeField").Value? It's supposed to be faster if you're only concerned with the values.
it might even be worthy of an inspection...
 
@ThunderFrame I don't have a use case for that, TBH. It's very rare for me to want the data in an array or something like that. More generally, I'm just using the recordset as a binding for form or dumping it into some other format (excel file, text file, a report)
but yes, I've read that it's better to use Collect if you want the values -- there is also a method in C++ for transforming the recordset into a data structure but that's not exposed in VB. It's described in the old book for hte Jet Engine's Programmer Reference.
 
@this Collect doesn't return an array, it just returns the field value without the overhead of the entire field object, so in theory, it is faster than setting/getting the field object's value.
 
Hmm sounds like i"m conflating different methods.
 
IKR - it's at the rs level, so it seems like it works on the entire rs, but it just works on the CurrentRecord
but Collect is a terrible name for a property.
 
we need to consider the readability.
if I'm looking at the code, no way in hell, i'm going to see rs.Collect("SomeField") and go "oh, yeah, I'm reading this one value at the current position"
 
1:23 PM
> Do what you say; say what you do.
 
Honestly, this might be a micro-optimization....
 
30% faster could be meaningful in places
 
if it's inside a loop, I suppose but again the whole loop is a code smell....
there are time where we really need to loop, though but I've yet to have a situation where it was that crucial.
 
I'm thinking about a UDF that returns a DB value to an Excel sheet.
 
yeah, if you abstract it away, no problem. Then they won't have to see the fugly Collect being used
 
1:26 PM
call the UDF enough times, and you start to get faster calcs with Collect
 
but....
why can't you CopyFromRecordset
or create a table linked to the DB?
(to be clear table = ListObject
 
because each UDF has unique inputs, and must return a single value...
 
so? If you going to access that data often, better to cache it somewhere on Excel via the table
and you cna simply refresh the table when you need to get up to date values from the DB
 
#ItDepends on the generation of the data
some sprocs are fairly involved, just to determine a single value. Returning 10000 values, when in reality, only 5 are needed, would be expensive.
 
ah they're sprocs, OK.
I was thinking of a table or a view in dB
just checkin g- they are' actually sprocs and not scalar-valued function?
 
1:31 PM
sprocs
 
AIUI, you get better performance using ADO because you can execute the function more directly without a overhead of recordset
With sprocs, I guess it won't matter.
You going to deal with recordsets either way
 
hmm, I seem to remember some ADO specific optimization for that
 
if the sprocs returns a OUTPUT, then ADO would be better
gbut if the sprocs returns the data as a resultset, well, you're stuck with a recordset
 
@this yep, with adExecuteNoRecords
 
right and take the value from the parameters. more code but less magic / overhead
 
1:38 PM
I've always preferred more magic and less overhead.
a bit like vbWatchdog Rubberduck
 
sure. that's a big part of why VBA is so ubiquitous. #GetItDone
 
@ThunderFrame Thanks - I remember reading that a while back, but didn't do anything with it. I've got it bookmarked now, too.
 
2:18 PM
@SonGokussj4 darn WP app.. I thought your comment was on the default members post lol
 
2:31 PM
@Mat'sMug re: you comment about expression evaluation -- would using typelib api suffice or is it more than that?
 
it's more than that
we need to leverage our resolver for that
but there's no convenient API to resolve ad-hoc expressions AFAIK
 
oh so you aren't really interested in the results but that there's an expression
 
correct. we need to resolve the type of the expression, and figure out if that type has a default member
 
Hm. Bear with me a bit. what expression we can't resolve statically?
I was thinking of silly stuff like Eval("1 + 2") which would not be an object anyway.
 
we can resolve it statically
we're just not doing it
 
2:49 PM
oh gotcha then
 
e.g. RHS of Set subFrm = frm.Controls(subformName) needs to resolve to type Control
the resolver passes currently resolve the Controls member call and create an IdentifierReference against that member
what we need is another pass to specifically resolve expressions like this...
 
that does imply that you know the Access.Control can be cast to Access.Subform, though.
(and only particular instances of Access.Control -- not all Access.Controls are Access.Subform but all Access.Subform are Access.Controls....)
 
hmm, well if the COM resolution is correct then we'll resolve frm.Controls(subformName) to Access.SubForm, ...which hopefully inherits Access.Control
 
nope
 
fml
 
3:00 PM
Controls returns an Access.Control
 
ok
 
if one had to be safe....
 
#FunFact: it all goes to hell as soon as what we get is an Object or a Variant
 
Dim ctl As Access.Control
Dim sub As Access.SubForm

For Each ctl In Me.Controls
  If TypeOf ctl Is Access.SubForm
    Set sub = ctl
    ...
  End If
Next
 
e.g. Application.Worksheets("Sheet1").Range("A1") will not resolve to anything
 
3:02 PM
(there's also the Type property common to all Access.Control but the above is more generic to all VBA OMs)
Yeah, that's that, too. and I don't think you can even have a guard for that at all
other than an error handling
 
I guess we can pick up that the expression resolves to e.g. a Variant, and run with that
Resolution.Latebound
 
here's a wacky idea, though....
typically, those Variant calls should return only specific subtypes
e.g. in the Excel's case, it'll be always either a String or Double.... right?
 
Pilchie said to apply!
 
nope
 
so if the LHS is not assignable as a string/double, then we can flag that as "suspicious cast"?
 
3:04 PM
@Hosch250 MS staffer?
 
#FML
 
The guy who's tweet you linked.
 
nice!
 
@Hosch250 Great! I'm sure you'll do well, and even if you don't get it, it'll be good experience.
 
He said they want call me and discuss the position and my experience.
 
3:05 PM
@this Range.Value2 gets you a Currency or a Date given proper cell formatting. Otherwise you get a String or a Double, but there's no way to statically know this.
 
No, no, there isn't. I was thinking it'd be user-maintained (e.g. we document somewhere that we expect those and these to return so and so)
 
ugh
 
I know.
 
hmm... a user-maintainable list of late-bound types...
 
mind you - that has to be mapped to certain methods for each OM
and there's.... a lot
 
3:07 PM
yep
 
and then again, what documentation say is sometime wrong. #FunTimes
a more generic solution would be to ask for a error handling whether there's a potentially suspicious cast
 
we could have the resolver "expression" pass flag variant/object expressions as such, and then have a UI tool to "manually map late-bound expression..."
then default members are still a problem though
where do you click to map an implicit call to Worksheets.Item?
...in the subscript, I guess
 
we take the same assumption as VBA does
if it's a Let and the object has a default member, then it means default member
 
hmm
except we need to outsmart VBA here
knowing/assuming that there's a default member isn't enough
 
why?
 
3:13 PM
because we need to know what default member we're looking at
 
AIUI, it's recursive
if the object's default member is an object, we then check for its default member until we hit a value
 
yeah
so, say we right-click the "1" in Worksheets(1).Range("B22"), and RD knows we're in the arglist of an implicit member call; we could have a UI to map Worksheets.Item to the Excel.Worksheet type, and with that "manual hint/nudge" the resolver is now equipped to resolve the .Range("B22") call to a Range object
currently we get stuck on Worksheets(1) returning a Variant, and resolution ends there
once we get to the Range object, we can look at LHS and determine whether the expression is a Range (given a Set keyword) or a Variant (given an implicit default member call on Range)
 
and suppose it was maintained in a central repo? That way users can contribute?
May be going overboard, tho.
 
lol, I was thinking of just another XML file :)
 
sure but it won't fill up if it's not crowdsourced.
Again. there's a lot to fill.
 
3:28 PM
and this is where a web API on rubberduckvba.com could come handy
 
Why?
 
i.e. have users opt-in into automatically pushing new entries to some web API where we collect this data
and automatically pull it at startup
 
yeah better. that way there's no lag when they do their usual inspections
@Hosch250, mainly as a hack to help us identify whether a cast is in fact not suspicious
 
needs a sanitation/vetting mechanism though
 
Generally speaking, if you look at MSDN doc for majority of Variant-returning method, the doc will tell you it only returns a particular subtype of the Variant
Crowdsourcing this kind of data would help track whether someone is making a funny cast or not.
 
3:31 PM
e.g. Foo.Bar returns an Apple, and someone pushes Orange, we need to be able to go in and fix that
 
Agreed. Not everyone know all the legal subtypes / object types.
 
or, Worksheets.Item returns a Worksheet, but Wroksheet was pushed
 
> There's some unit tests that check for certain bindings. We might want to expand those... We should take care to not lock ourselves into some structure though.

It's somewhat interesting that this only applies for some commands.

The Command Bindings did change in the PullRequest, relevant diff starts at [RubberduckIoCInstaller.cs#Line 525](https://github.com/rubberduck-vba/Rubberduck/pull/3739/files#diff-1d0ced34d32061d419523ca7feaeda97L525)
 
@Mat'sMug we can't really have users push that to a webservice. After all if we could automatically determine it, we don't need to specially maintain it
 
@Vogel612 no it's not automatically determined
 
3:38 PM
then we don't need an opt-in setting for pushing it to a webservice
because it needs to be performed manually anyways.
 
it's basically users saying "I know this method is OK to cast to whatever"
otherwise, we can't really have a inspection for a suspicious cast
 
oh... soo like a "Remember that this cast is A-Okay" as a QuickFix?
 
sorta of, yeah
 
@Vogel612 kinda
and then optionally centralize that knowledge
 
the web service idea was so that we can crowdsource that data
because there's.... too much.
 
3:40 PM
sounds like a plan
like one for a later stage of implementation, though...
 
I do have to agree, though.
We need to bash some bugs.
 
Yup
 
Ahh, makes sense.
 
like the one I introduced on the CE commands...
~hangs head in shame
 
So we got a vision of RD 8.0 lol
2
 
3:42 PM
:dream:
 
at least we won't run out of weird ideas to implement and challenge ourselves with...
 
@Vogel612 :) To be honest, I was surprised. I don't think anyone could have seen that coming.
so don't feel ashamed.
 
FWIW, I wouldn't be surprised at all if MS tried to absorb RD soon-ish.
Or rather, they'd probably write a new IDE around it and steal most of RD's features.
 
@Hosch250 could they? (thinking of licensing)
 
@Vogel612 I'm the one that merged it without actually pulling it even though I said thrice that I would
 
3:43 PM
@Hosch250 mission effing accomplished
 
@this If Mat changed the licensing, yes. At least parts of it.
The only things that force us to be GPL are the ANTLR grammar and Smart Indenter.
awgaya rewrote the first and Comintern rewrote the second.
So we should be in the clear legally.
 
meh,.
we'd need awgaya and comintern to waive their license to something else
same applies for all the contributions from basically everyone
 
TBH as much as the original grammar was helpful, the current one has little to do with it. I wonder if it can even be called a derivative, given the rewrite it went through
 
MS might be much better off with replacing the VBE and reimplementing RDs features in a clean-room process
 
They'd need to anyway to integrate with their parser/compiler.
 
3:45 PM
IOW rewrite VBA
 
much less likely to result in anybody sueing them
 
But they can heavily use our experience.
 
#NotGonnaHappen
 
the trouble is that if MS does that, they end up tying themselves to supporting VBA for XX more years
I think MS just wants VBA to die.
 
Me too, but #NotGonnaHappen
They need to provide an alternative system first.
I'd guess they leave that as the "legacy" system and use VB.NET for v2.
 
3:52 PM
ppffftt.
not going to happen either.
 
Nope.
 
"The best way to predict the future is to implement it." - Alan Kay
Any Kiwis seriously planning to attend should contact Liam Bastick this morning at liam.bastick@sumproduct.com https://twitter.com/PeltierTech/status/974288092579467266
 
which I think was a major bone-headed move on their part
 
VB.NET will die before VBA does lol
 
^
 
3:53 PM
Hmmm. Maybe.
 
they could have had pushed implementation of .NET with.... what was that project/ Project Orcas? whatever it was for interoperating VBA / .NET
 
A lot of systems are written in VB.NET.
 
sorta like VSTA. It was pushed heavily last decade then they suddenly pulled the plug because.....
 
Just ask Elliott, or the other monkey (whatever his name is).
 
don't know who he's.
 
3:56 PM
202_accepted
E.Brown
 
oh!
yeah
 
@Hosch250 and they can all be recompiled to C# from IL =)
@this hey I like VSTA. It's what allows be to script in C# in my SSIS packages!
 
@Mat'sMug dont' get me wrong - what I'm saying is that Office should have gotten VSTA
but they choked because.... mumble mumble I don't know
if they were dead serious about killing VBA, that was their chance, I think.
 
00:00 - 16:0016:00 - 00:00

« first day (1378 days earlier)      last day (1802 days later) »