Private Sub btnMoveFirst_Click() tbl.MoveFirst End Sub Private Sub btnMoveLast_Click() tbl.MoveLast End Sub Private Sub btnMoveNext_Click() tbl.MoveNext End Sub Private Sub btnMovePrevious_Click() tbl.MovePrevious End Sub
Excel Stuff
Wednesday, 5 October 2016
Data Entry UserForm linked to table with Classes
Decided to make a UserForm and link it to a table with a Class object. The code behind the navigation buttons is expressed very simply as the code is obscured by encapsualion.
Thursday, 29 September 2016
The Scripting Dictionary
Just recently discovered the scripting
dictionary which comes as part of the Windows family of operating systems, so unfortunately
this can't be levered by VBA on Macs.
Dictionaries are a common enough feature
of various languages, but something that VBA lacks natively. The closest VBA
has is collections, but these are read-only. You can add or remove items from a
collection, but you can't change an item's value. You could use an array, but
the index is always a number in an array. In a dictionary, the key (index) can
be anything you like, as long as it's unique. The value can be anything too
(even objects).
This is great for looping through lists
and finding unique values, assigning them to a key and adding the value in a
related column. You can even set the item equal to a range that you can do
something with later.
This script finds unique values in
Column A, uses Union to create a multiple range object encompassing each of the
unique values, then colours each of the ranges in a different colour.
Sub foo()
Dim c As Range, sKey As String, i As Long
With CreateObject("Scripting.Dictionary")
For Each c In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
sKey = c.Value
If Not .exists(sKey) Then
Set .Item(sKey) = c.Resize(1, 2)
Else
Set .Item(sKey) = Union(.Item(sKey), c.Resize(1, 2))
End If
Next
For i = 0 To .Count - 1
Debug.Print "Values :" & .Keys()(i) & ", with Range(" & _
.Items()(i).Address & ") has " & .Items()(i).Cells.Count & " cells"
.Items()(i).Interior.ColorIndex = 34 + i
Next i
End With
End Sub
Sunday, 25 September 2016
Date Picker with classes
Almost there! One or two quirky bugs to sort out but looking good at the moment.
Please feel free to download it and try it out! If you have any comments or suggestions, please let me know. I'm still learning and would appreciate any advice you may have.
The idea behind this project was to create a date picker that lived on the form with the other controls that didn't need an add in. I know DTPicker does the same thing, but was shocked to find that Office 2016 at home was missing the reference to it. After a bit of Googling it turns out that DTPicker is becoming increasingly depreciated. It was also an excuse to finally dip my toe in the waters of writing class objects. My first effort, so be kind!
Please feel free to download it and try it out! If you have any comments or suggestions, please let me know. I'm still learning and would appreciate any advice you may have.
The idea behind this project was to create a date picker that lived on the form with the other controls that didn't need an add in. I know DTPicker does the same thing, but was shocked to find that Office 2016 at home was missing the reference to it. After a bit of Googling it turns out that DTPicker is becoming increasingly depreciated. It was also an excuse to finally dip my toe in the waters of writing class objects. My first effort, so be kind!
Download: DatePicker
Subscribe to:
Posts (Atom)