« first day (998 days earlier)      last day (2182 days later) » 
00:00 - 21:0021:00 - 00:00

9:00 PM
@ThunderFrame Finally a use for my fn key!
 
@ThunderFrame How big do you think my forehead is?
It's really hard to use modifier keys...
 
Since I've installed RD I can't seem to use ESC to exit out of the Fn key or Search box. Does anyone else have this issue?
 
I think we have an issue for that too.
 
fixed in .12 by either @Comintern or @ThunderFrame
That's been bugging me since 2.x was released, @IvenBach!
 
Thanks, mouse click to Esc a window isn't feasible for me.
 
9:03 PM
IF Shift+F10 is too hard, Try Alt+F4, Or Ctrl+Shift+Escape... Ctrl+Tab...Ctrl+Tab...Ctrl+Tab...Ctrl+Tab...Tab...Tab...Alt+E...Enter
 
yeah, mildly irritating... :) I like the rest of RD enough to keep it around, though...
I think someone's mocking me.
 
@IvenBach fixed in current build / next release :)
 
The Esc bug is already reason enough for me to be anxious for it.
 
@FreeMan It was all @Comintern - I just verified that is was fixed.
 
eh, I knew it was one of the two of you. I figured there was enough credit to spread it around.
 
9:06 PM
Part me, part @Mat'sMug - we also needed cancel buttons on our forms.
 
eh, I did so little
only the about box actually
 
Is there a more appropropriate way to list a parameters datatype for functions?
Public Function GetColor(ByVal Cell As Range, Optional boolGetFontColor As Boolean = False) As Long
If boolGetFontColor Then
GetColor = Cell.Font.Color
Else
GetColor = Cell.Interior.Color
End If
End Function
 
@IvenBach - just give credit to the RD dev team and call it a day... :)
Public Function GetColor (ByVal cell as Range, Optional useFontColor As Boolean = False) As Long
If useFontColor then...
 
Skip the function call entirely and use cell.Font.Color or cell.Interior.Color?
 
What if that function is used mainly from the spreadsheet instead of VBA?
 
9:09 PM
Why would you duplicate the object model with your own naming?
 
also, Cell is a reserved word and a bad idea for a variable
 
I do it because I have a bad memory
 
@FreeMan Cell is a reserved word?
 
Is cell reserved?
Cells is.
 
^^
cell is perfectly fine a name. ideal even.
 
9:10 PM
^^
 
unless cell is a range of more than once cell
 
crap, it's cell_s_
 
then it's not meaningful
 
@Comintern Code inheritance. It's used on worksheets to get color.
 
@ThunderFrame Debug.Assert cell.Rows.Count = 1 And cell.Columns.Count = 1
 
9:12 PM
@ThunderFrame Debug.Assert cell.Count = 1, "dafuq u think ur doin' mon?"
 
@IvenBach Why not use Conditional Formats to assign color from data, rather than getting color data from cell?
 
@Comintern ok this is creepy lol
 
Makes more sense than Debug.Assert foo.Rows.Count = 1 And foo.Columns.Count = 1
 
wait does Debug.Assert have a message parameter?
I'm mixing it up with .net's I think
 
@Mat'sMug I like @Mat'sMug's Assert more
 
9:13 PM
Debug.Assert has isn't a function - the condition isn't even a parameter.
 
and there goes 20 years of asserting the wrong thing
 
Sub SnarkyAsset(assertion As Boolean, snark As String)
 
@ThunderFrame Cleaning up an inherited workbook. Trying to make sense of some things.
 
Maybe it should be renamed Debug.PassiveAggressive.
 
9:16 PM
My understanding is Cells with an s is a container or ?interface which VBA allows me to select which index to it. Cell would be a method which usi within a WITH block allows accessing a property of that type.
Cells(1:1) etc...
 
Cells with an s is a Range; Cell is a WorksheetFunction ;0)
 
Container = Range (datatype) I meant the same thing.
 
with ToDo Items. Is there any case sensitivity option so that REMOVAL will be listed but removal or Removal will not?
 
Yeah - you can specify that with ToRemove. :-P
I'd support a setting for that though.
 
me too
 
9:19 PM
Should I create an issue/request for it?
 
yep. otherwise we'll end up forgetting!
 
^
What were we discussing?
 
lol
'HERE BE DRAGONS
^ best todo marker ever
 
whenever the Github repository is updated with issues @duga will list them, correct?
 
9:22 PM
@IvenBach wait, you haven't starred Rubberduck yet? wink wink, nudge nudge
@IvenBach if she feels like it, yeah
 
You might have to give her a nudge if she's asleep
 
@Mat'sMug how do I star it? I'm entirely new to this collaboration environment...
 
@IvenBach Eventually. Github will send notification emails too if you're subscribed.
 
@Comintern how do you subscribe?
 
@IvenBach contributing to an issue auto-subscribes you.
 
9:26 PM
Only to that issue. If you want all of them, hit the little notification bell on the toolbar at the top.
Then go to the watching tab - you can fine tune them from there.
You can watch at the repo level or the issue level, or pretty much however you want to configure it.
 
¿little bell?
 
I'd put up a screenshot, but i.stack.imgur won't upload it lol
 
The simple things seem to be the hardest for me
 
basically in the top-right corner, just under GitHub's black nav bar, there's:
[watch | 48] [star | 323] [fork | 95]
^ these are buttons
 
Huh. Is imgur broken right now?
 
9:30 PM
yep
and AWS
 
@Duga woot!
 
Ok
 
Maybe if all of @Mat'sMug's IoT devices weren't DDOSing right now we'd have imgur access :P
That's probably what Duga was up to earlier also :P
 
How does one go about fixing an issue/request? I'm assuming that requires VS and some knowledge of the code base, correct?
 
9:32 PM
so we're only less than 300 stars behind VBA-tools/VBA-Web
@IvenBach you make a pull request that references the issue#, and merging it closes the issue
actually that's wrong
 
"Can you hear the footsteps behind you VBA-tools? Star...star...star..."
4
 
you make a commit with a commit message that references the issue# with the word "closes", e.g. "closes #1234", and when that commit gets merged (via a PR) then the issue gets closed
but yeah, the "making a commit" part is best done in VS :)
you can get VS2013 or VS2015 Community Edition for free
 
PR = PeerReview?
 
and it's 100% legit, because that edition is made for working on OSS projects
PR = pull request
 
and Pull Request means it's "Pulled into the accepted code"?
is there some unofficial contest between RD and VBA-trolls?
2
VBA-Tools
 
9:37 PM
VBA-Trolls? I hope that wasn't a typo.
 
It actually was.
 
LOL
 
In seriousness, they're completely different types of projects - the star count is mainly a measure of visibility\adoption\etc.
 
I'm just happy that we have more stars than the official MS documentation for VBA
 
That should be the other way around on so many levels...
 
9:40 PM
A previous co-worker would benefit greatly from RD. After reviewing more of what it can do I'll introduce him to it.
 
@IvenBach not really. I'm just not-so-secretly hoping for Rubberduck to become the de-facto VBE add-in you can't do VBA without :)
and come up #1 when searching for all repositories mentioning "vba" on GitHub
I think MZ-Tools going behind a paywall helped us tremendously
 
I can see why it would. You are doing what Microsoft should have done. It saddens me to see the VBE so neglected...
 
yet if Microsoft had done it, there's so many things I wouldn't have learned about VBA
 
^^
 
I can't even begin to tell you how many "WTF?!!" moments we've had
 
9:44 PM
Hell, or COM Interop for that matter.
 
    Sub _
        DoSomething()

    End _
        Sub
^ compiles
Enum _
    Foo
    Bar
End _
    Enum
^ doesn't
 
Jul 14 '16 at 23:41, by Comintern
Private Sub Test()
    'Next line is  

End Sub

Private Sub  ()
    Debug.Print "WTH did I go?"
End Sub
 
^^ that was one of the best ones :)
but #1 has to be "Long live the cucumber"
 
^^
Yeah, they hid that one deep.
 
I don't even want to ask about that one...
 
9:47 PM
lol
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
18080, "Tile Horizontally"
18081, "Tile Vertically"
18082, "Arrange Icons"
18083, "Microsoft Visual Basic for Applications Help Topics"
18084, "Search Reference Index..."
18085, "Obtaining Technical Support"
18088, "About Microsoft Visual Basic for Applications..."
18089, "Long Live the Cucumber"
18090, "Break On All"
18091, "Break In Ole Server"
18092, "Break On Unhandled"
}
 
May 26 '16 at 21:16, by Comintern
WTH does the VBE have the string "Long Live the Cucumber" in its string resources?
^^full transcript :-)
 
Has there been a request to improve RD's initialization time? I'm so used to VBE opening immediately.
 
that's a tough one - 2.0.12 pops an optional splash screen
 
I'm not sure how much of that can be improved.
Most of that is the Ninject kernel winding everything up.
 
swapping ninject for a faster IoC container I suppose
 
9:49 PM
IoC = ??
 
Inversion of Control
/dependency injection framework
 
They claim minimal overhead.
And TBH, there is a ton of work to do bringing RD up.
 
^^
 
and Dependency Injection for the layman is asking for stuff instead of you creating it, correct?
 
exactly!
 
9:51 PM
So why then doesn't any tutorial, ever, state it that way?
 
hmm good question
I found the ninject wiki pretty well done in that aspect
 
I've been reading for more than 2 months now about IoC and Dependency Injection and not a single one has stated it in those simple terms...
 
It's more like not having to ask for stuff.
 
"statically declare your dependencies in your constructor" is more of a mouthful ;-)
 
Think of every class constructor as it's own little prima-donna and Ninject as the daddy who makes sure all of its needs are met.
2
 
9:53 PM
@IvenBach Dependency Injection in .NET, by Mark Seemann. Best read I've had about it.
@Comintern yeah. then look at how RD quickfixes relate to inspection results, and how inspection results relate to inspections, and start crying :)
 
Yeah, sometimes daddy has a nervous breakdown when all the kids are screaming at once.
4
 
@Mat'sMug That will have to be after 'sams teach yourself wpf in 24 hours' and about 3 other tomes I need to go through.
 
Pro WPF 2010 is roughly 1000 pages, I can't imagine what the heck someone might claim to be able to cover in 24 hours
 
I seriously just read that as "Sams Teach Yourself WTF in 24 Hours". That one belongs in their "in 15 minutes" collection.
Hell, it took me more than 24 hours to figure out how to hide a damned scrollbar.
 
@Comintern I feel like half the stuff I read makes me say that. Without any CompSci background it's a tough read at times.
I think I've stumbled into a group that has learned things they way I do, the hard way.
 
10:00 PM
WPF literally requires you to unlearn everything you know about UI design, if you come from WinForms
 
Already done since I know nothing of UI design.
 
That gives you a huge leg up on me.
 
Not even VBA forms?
 
Nope. Tried VBA forms once 5 years ago and never tried again.
 
WPF would probably be more natural coming from Java.
 
10:02 PM
Nah, coming from web I'd say
 
Or maybe that's my hatred of Java UI speaking.
 
My understanding of Java UI is that it's basically WinForms without all the automatic control instancing
/partial classes
 
I always find myself yelling something like "Put the damned button THERE, you stupid piece of software!"
 
WPF layouts are awesome... Once you've figured them out :-)
 
@Cominternn so I'm not the only one...
 
10:05 PM
Java UI is probably more like Qt or GTK.
 
Is it by convention that 'Dim' is indented?
Has there been a request to have an option of leaving some lines not indented?
 
Inside a procedure, yes.
There's a setting for that in the indenter settings though.
 
Found it: Indent first declaration block. Lovely toggle!
 
It's lovelier in 2.0.12 - that entire interface got worked over.
 
Not what I was hoping, Indent declarations (not just 1st block).
Please tell me 2.0.12 has that option.
 
10:10 PM
Wait, you mean don't indent any of them?
 
Correct. I do it so I can see immediately where any declaration is, along with a few Application properties.
 
here's a WTF - Add an ActiveX button to a sheet. It will get a default name like "CommandButton1", and there's an invisible WithEvents CommandButton1 As CommandButton declaration in the code-behind and you can wire up events for it....
 
I don't indent them that way I know exactly where something is being declared at a glance.
 
@IvenBach Doesn't that make it really hard to tell where procedures start and end?
The better practice is to declare variables close to where they are used.
 
@Comintern For me, not at all. That's what the horizontal lines are for.
I declare them, now, just above where they are first used.
It's more a preference, rather than anything else for me at this point.
 
10:13 PM
Now, select the button and rename it to any name that is in the list of Worksheet member names, such as Name. The code-behind still uses the previous name for the WithEvents variable, but Sheet1.OLEObjects("Name") returns the object?!?!
 
                        For Each nestedWAYright In someCollection
Dim foo As Long
                            foo = 42
                        Next
 
@Mat'sMug @Comintern I finished helping my coworker with her massive .csv. Thank you both so much for your help! Now I'm on to posting the first of my programs to CR as we talked about. Keeping in mind our earlier conversation about code blocks and sections and your advice that I probably should have broken the module into multiple procedures or functions, how should I go about posting my program to CR? Should I attempt to break it up first, or just divide and commentate ...
 
I find that unreadable.
 
... the sections as best as I can in my question?
 
and Sheet1.CommandButton1 (ie. the old name) still works
 
10:16 PM
Wait, what?
Like it has a local code name and a container name?
 
@ThunderFrame BREAKING: OLE IS BORKED!!
 
What happens the other way around - i.e., change the event handler name.
 
@Comintern Public Sub Resize_Selection(ByVal isRow As Boolean, ByVal isIncrease As Boolean)

Dim Crement As Long
    If isIncrease Then
        Crement = 1
    Else
        Crement = -1
    End If

Dim rSource As Range
    Set rSource = Selection

Dim R2 As Range
    For Each R2 In rSource.Areas

Dim Size As Long
        If isRow Then
            Size = R2.Rows.count + Crement
        Else
            Size = R2.Columns.count + Crement
        End If

        If Size = 0 Then
            MsgBox ("Part of your selection has only 1 Column and/or Row." & Chr$(10) & "You cannot further decrease 
 
@Mat'sMug lol - too bad RD needs to learn to talk OLE to unhook it's freak'n toolwindows.
 
There doesn't seem to be any way of inspecting the Sheet1.OLEObjects("Name") or Sheet1.Shapes("Name")` to discover what the underlying variable name is.
 
10:18 PM
@IvenBach I'd go nuts!
 
^^
I'd be like "Where the hell are all the End Dim statements - Oh wait....".
 
@Comintern Here you go:
Dim bar: End: Dim Buzz
 
I'm used to it... I've done VBA in isolation and without tutelage things kind of just happened.
 
@ThunderFrame Probably works better than End: Dim Bar
 
for Code Inspections is there a list of @Ignore <ThingToIgnore> that can be used?
 
10:28 PM
I think the closest you'll find for now is the directory listing for the Inspections on github.
 
@IvenBach the inspection names are all on the website's /inspections/list page - the annotation will take anything you throw at it, but is meant to be parameterized with inspection names (minus the "Inspection" suffix)
Note that some of the inspections on the website aren't in 2.0.11, the website uses an old .12 build
 
@Mat'sMug Understood
 
huh, explicitly casting the OLEObject.Object gets access to the name property...
  Dim oleobj As OLEObject
  Set oleobj = Sheet1.OLEObjects("Name")

  Debug.Print TypeName(oleobj.Object) 'Prints "CommandButton"
  Debug.Print oleobj.Object.Name 'Runtime error 438 - Object doesn't support this property or method

  Dim cb As CommandButton
  Set cb = oleobj.Object
  Debug.Print cb.Name 'Prints "NameFoo"
 
o_O
WTH? It can't make late bound calls on OLE Objects?
 
10:36 PM
Oh wait, I think that makes "sense".
OLE objects are IAccessible, not IDispatch.
 
the really weird thing is that CommandButton doesn't have a Name property!
it must inherit from Control?
 
Just out of curiosity, try Debug.Print oleobj.accName.
 
Refactor>Move Closer to Usage: Has there been any bug about it adding an <enter> thus causing bad syntax?
 
@Comintern oleObj.accName and oleObj.Object.accName bot throw error 438
 
@IvenBach That might be fixed.
 
10:40 PM
@IvenBach good question.. make it an issue and worst-case we'll close it as a dupe, or no-repro if it's already fixed and we can't find the issue for it
 
ok
 
> When trying to move closer it appears to be breaking with the Type:=8 as it replaces ':' with vbNewLine

Public Sub BreakingOnMove()
Dim ParameterList As Range


Set ParameterList = Application.InputBox("Select the cells that have the input parameters.", Type:=8)
End Sub
 
How is this even possible? If I change the reference collection on the Declarations to be a ConcurrentDictionary<IdentifierReference,byte>, the test TestPlusOperator starts failing whan I run all tests, but not when I debug it. That test only uses the precocessing visitor.
 
how do you refer to a secondary issue from a new issue? I think i found a bug that relates to that one and the reparse
 
@IvenBach just do "#1234", github will give you a dropdown as you type the #
Typically I'd do "ref.#1234" to reference another issue
You can also somewhat use it to search for issues: "#refactor" would list a number of issues with "refactor" in the title
 
10:49 PM
> Tied to #2753. Once you undo to get it back to normal without 'Auto Syntax Check' red you need to resolve the 'Parse Error'. On doing that Dim ParameterList As Range is deleted.
 
@M.Doerner That makes no sense what-so-ever. Isn't it a ConcurrentBag now?
 
> It's possible to add an ActiveX control to a sheet, and name the hosting `Shape` as `Name` which shadows/conflicts with the `Name` property of a Worksheet class. That makes for a disconnect between the shape name and the name of the `WithEvents` object that sources events in the sheet's code-behind.

RD should have an inspection that looks for such naming conflicts.

The VBA to get the real control name requires explicitly casting the `OLEObject.Object` to the underlying type:

```vb
 
It is. I changed it because I wanted to remove references selectively.
 
I needed something like that for the selective reresolving of references.
Now, I simply replace the ConcurrentBag with a new one containing the remaining elements.
 
10:56 PM
> Yep - That's an issue. Pretty sure it's in this section of code.
 
I have to look at all references anyway.
 
Is there any issue with Diming a variabl within a loop?
 
In the end, it is probably faster to keep the ConcurrentBag.
However, I have absolutely no idea how the change could make that test fail.
 
@IvenBach Nope - Closer to usage is good.
 
@IvenBach the smallest scope in VBA is procedure-level, and Dim statements aren't executable, so not really
One could argue that if you have variables that are only ever used inside a loop's body, then the body could be extracted to its own procedure though
 
@Mat'sMug Point noted.
 
gah, an Access control name can shadow a form member name. OB shows the name as the WithEvents object, but VBA usage is the form member, and yet the events still fire.
 
^^ if you hadn't noticed @IvenBach, @ThunderFrame is our "let's see how this could possibly break" guy ;-)
 
I kind of feel like I'm breaking things unintentionally.
 
11:10 PM
@Mat'sMug won't stop until it's breaks...
 
@IvenBach probably because it's already broken :-)
 
for the Move Closer to usage. Should the indentation level be the same as where it's being moved to?
 
IIRC the indentation is just left alone - perhaps we should run indent procedure ...
 
Should I create an issue for it?
 
Nah, we can just roll that into the fix. Just leave a comment on the issue.
 
11:14 PM
@Comintern so the issue I already opened, just add a note about it in there?
 
Yep. I'm actually looking at it right now.
 
gosh I need to pack up and go home
later!
 
11:41 PM
Hm, I got something wrong with the selective resolving of references. 185 tests failing.
Well, that has to wait until tomorrow.
TTGTB
 
00:00 - 21:0021:00 - 00:00

« first day (998 days earlier)      last day (2182 days later) »