Ik heb een Excel met enkele VBA functies, waarin een variabel aantal sheets aanwezig zijn en het belangrijk is dat deze een specifieke naam hebben. Ik heb echter ontdekt dat, zelfs als je de sheets renamed in Excel, ze in VBA nog steeds "Sheet1", "Sheet2", etc noemen. Zie screenshot hieronder:
:fill(white):strip_exif()/f/image/vGL2Scz8SDNlEUI99EswxY0s.png?f=user_large)
De gele naam is de naam die je in VBA kan gebruiken, terwijl de rode naam de naam is die je in Excel gebruikt.
Is het mogelijk om de naam VBA-sheet-naam te renamen, of de Excel-sheet-naam te gebruiken in VBA?
Ik gebruik momenteel volgende functie als workaround, maar deze is niet echt performant:
Deze roep ik dan als volgt aan:
Set specificationsTable = findTableByName("Specifications")
Alvast bedankt!
:fill(white):strip_exif()/f/image/vGL2Scz8SDNlEUI99EswxY0s.png?f=user_large)
De gele naam is de naam die je in VBA kan gebruiken, terwijl de rode naam de naam is die je in Excel gebruikt.
Is het mogelijk om de naam VBA-sheet-naam te renamen, of de Excel-sheet-naam te gebruiken in VBA?
Ik gebruik momenteel volgende functie als workaround, maar deze is niet echt performant:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| Private Function findTableByName(ByVal tablename As String) As ListObject Const ProcName As String = "findListObject" On Error GoTo ClearError Dim lo As ListObject Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets On Error Resume Next Set lo = ws.ListObjects(tablename) On Error GoTo 0 If Not lo Is Nothing Then Set findTableByName = lo Exit For ' stop looping, it is found End If Next ws ProcExit: Exit Function ClearError: Debug.Print "'" & ProcName & "': Unexpected Error!" & vbLf _ & " " & "Run-time error '" & Err.Number & "':" & vbLf _ & " " & Err.Description Resume ProcExit End Function |
Deze roep ik dan als volgt aan:
Set specificationsTable = findTableByName("Specifications")
Alvast bedankt!