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!
:fill(white):strip_exif()/f/image/GbDiWp4DN6R2LPbq8Ic7zQOI.png?f=user_large)