[Excel VBA] Sheets in VBA hebben andere naam dan in Excel

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Mastakilla
  • Registratie: Februari 2001
  • Laatst online: 16-05 14:01
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:

Afbeeldingslocatie: https://tweakers.net/i/uMuxaRzU0cbdgXJfCX3ogXtpjtI=/full-fit-in/4000x4000/filters:no_upscale():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!

Beste antwoord (via Mastakilla op 03-11-2022 11:41)


  • pagani
  • Registratie: Januari 2002
  • Niet online
Je kunt een sheet gewoon refereren met:
code:
1
Worksheets("IWDA")

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • pagani
  • Registratie: Januari 2002
  • Niet online
Je kunt een sheet gewoon refereren met:
code:
1
Worksheets("IWDA")

Acties:
  • 0 Henk 'm!

  • Mastakilla
  • Registratie: Februari 2001
  • Laatst online: 16-05 14:01
Ah, vreemd... Enkele dagen geleden, toen ik de VBA code aan het maken was, was de "Name" property nog readonly en kon ik deze niet aanpassen, maar nu dus wel...

Afbeeldingslocatie: https://tweakers.net/i/UnwC8eq6U-bIQUivbBDrS1iYf4o=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/GbDiWp4DN6R2LPbq8Ic7zQOI.png?f=user_large

Ik vermoed dat dit komt omdat ik de Excel nog moest opslaan als xlsm ipv xls...

Maar dit kunnen renamen, is eigenlijk al een oplossing voor mijn probleem :)

Acties:
  • 0 Henk 'm!

  • Mastakilla
  • Registratie: Februari 2001
  • Laatst online: 16-05 14:01
pagani schreef op donderdag 3 november 2022 @ 11:22:
Je kunt een sheet gewoon refereren met:
code:
1
Worksheets("IWDA")
Edit:
Op het eerste zicht, heb je gelijk en kan je gewoon de sheet bereiken met de Excel-sheet-naam, zonder het object te renamen in VBA. Toen ik dit eerder probeerde, lukte me dit niet... Ik vermoed dat ik iets verkeerd heb gedaan, aangezien ik nog niet zoveel VBA ervaring heb...

[ Voor 43% gewijzigd door Mastakilla op 03-11-2022 11:39 ]