• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Define name in VBA

Status
Niet open voor verdere reacties.

knackje

Gebruiker
Lid geworden
9 sep 2002
Berichten
563
Wanneer ik handmatig de onderstaande actie1 handmatig doe en verrvolgens de range opgeef. Wordt de range op deze wijze genoteerd: =Sheet1!$A$6:$O$18

Actie1:
insert --> name --> define

Wanneer ik de range aanmaak doormiddel van een VBA script (zie hieronder), wordt de range op deze wijze genoteerd: ="Sheet1!$A$6:$O$18". Zoals je kan zien zitten er nu quote's omheen. Hoe zorg ik er voor dat die quote's er niet bij komen en de range dus genoteerd wordt zoals dit gedaan wordt als ik handmatig aanmaak. Wanneer ik in VBA de quote's weg haal gaat ie zeuren dat die er bij moeten staan.

VBA script:
ActiveWorkbook.Names.Add Name:="oreadetest", RefersToR1C1:= _
"Sheet1!$A$3:$O$15"
 
Laatst bewerkt:
Als je de quotes weglaat ziet VBA het als een variabele. VBA zal het niet niet herkennen als bereik.
Maar waarom zou je de quotes weglaten :shocked:

Met vriendelijke groet,


Roncancio
 
De sheet wordt al input gebruikt voor een Datawarehouse. Het programma Oracle warehouse builder kan niet overweg met een bereik waar die quotes omheen staan. hij gebruitk dan de hele sheet. Wat dus niet de bedoeling is.

Hiervoor moet de range doormiddel van een VBA script zo genoteerd worden: =Sheet1!$A$6:$O$18
 
Laatst bewerkt:
Zo moet het lukken:

ActiveWorkbook.Names("oreadetest").RefersTo = "=" & Mid(ActiveWorkbook.Names(oreadetest).RefersTo, 3, Len(ActiveWorkbook.Names(oreadetest).RefersTo) - 4)
Met vriendelijke groet,


Roncancio
 
Een aanvulling op mijn vorige reactie.

Code:
For Each NM In ActiveWorkbook.Names
    If Right(NM, 1) = Chr(34) Then
        ActiveWorkbook.Names(NM.Name).RefersTo = "=" & Mid(ActiveWorkbook.Names(NM.Name).RefersTo, 3, Len(ActiveWorkbook.Names(NM.Name).RefersTo) - 4)
    End If
Next
Bovenstaande code gaat elke naam in het bestand langs. Eindigt de referentie op een " dan wordt de referentie aangepast.

Met vriendelijke groet,


Roncancio
 
Wanneer ik handmatig de onderstaande actie1 handmatig doe en verrvolgens de range opgeef. Wordt de range op deze wijze genoteerd: =Sheet1!$A$6:$O$18

Actie1:
insert --> name --> define

Wanneer ik de range aanmaak doormiddel van een VBA script (zie hieronder), wordt de range op deze wijze genoteerd: ="Sheet1!$A$6:$O$18". Zoals je kan zien zitten er nu quote's omheen. Hoe zorg ik er voor dat die quote's er niet bij komen en de range dus genoteerd wordt zoals dit gedaan wordt als ik handmatig aanmaak. Wanneer ik in VBA de quote's weg haal gaat ie zeuren dat die er bij moeten staan.

VBA script:
ActiveWorkbook.Names.Add Name:="oreadetest", RefersToR1C1:= _
"Sheet1!$A$3:$O$15"

Doe gewoon:

Code:
Sub naam()
Dim r As Range
Set r = Sheets("Blad1").Range("A3:O15")
ActiveWorkbook.Names.Add Name:="oreadetest", RefersToR1C1:=r
End Sub

Wigi
 
hoi beide..bedankt voor jullie hulp. Helaas geen tijd meer om de oplossingen te bekijken. Ik ga hier morgen weer mee verder. Ik laat morgen even weten hoe het gegaan is

bedankt
 
Hallo,

Ik heb eerst de code van Wigi uitgetest, omdat dat wat simpeler leek. Deze code werkt prima. De range wordt genoteerd zonder de" er om heen.

top bedankt
 
Laatst bewerkt:
Ik heb eerst de code van Wigi uitgetest
De codes wijken af omdat ik mijn code gekeken wordt naar alle namen in het bestand.
Bij Wigi gaat het om 1 naam.

Het belangrijkste is dat je tevreden bent met het antwoord en dat daarmee dus je vraag is opgelost.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan