• 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.

VBA met automatische naam

Status
Niet open voor verdere reacties.

p0wmia

Gebruiker
Lid geworden
8 jun 2015
Berichten
18
Is het mogelijk (waarschijnlijk ja) om een automatische naam aan te maken in Excel door middel van een VBA? Hierbij tevens rekening houdend met het aantal kolommen.

BV:
Ik heb een op blad1 kolom B t/m G gevuld met data, waarbij de 1e cel de naam bevat. Is het mogelijk om door middel van een VBA het aantal kolommen te tellen en vervolgens hiervan een naam te definiëren waarbij hij enkel de data naar onder pakt. Dus zowel horizontaal als verticaal is dynamisch. Overigens is de data naar beneden soms met lege cellen ertussen (om het nog complexer te maken).

Voor de volledigheid een demo in de bijlage.
 

Bijlagen

  • Tester.xlsx
    9,1 KB · Weergaven: 55
Ik snap niet wat je bedoelt; noch met 'namen' noch met 'enkel de data naar onder pakt'. Het had handiger geweest als je een voorbeeldje had gemaakt met de gewenste output.
 
Excuses voor de onduidelijkheid. Zie in de bijlage wat de output moet zijn.
 

Bijlagen

  • Knipsel.JPG
    Knipsel.JPG
    165,9 KB · Weergaven: 96
p0wmia,

ik denk dat je dit bedoelt....
 

Bijlagen

  • Tester (hs).xlsm
    16,1 KB · Weergaven: 63
Denk ik ook:d

Code:
Sub VenA()
For Each cl In Rows(1).SpecialCells(2)
  Names.Add cl, Range(cl.End(xlDown), Cells(Rows.Count, cl.Column).End(xlUp))
Next cl
End Sub
 
@Haije
Wauw dit ziet er wel al goed uit. Ik wil alleen de namen uit Rij 1 gebruiken niet kolom 1 (dus auto, groente, mensen enz.) Bij Auto moet hij dus enkel het bereik eronder pakken.

@VenA... Dit is hem. Alleen als ik nieuwe kolommen toevoeg dat lijkt hij dit niet helemaal te doen...
 
Laatst bewerkt:
Denk dat de fout inderdaad elders zit. In mijn bestand heb ik inderdaad celverwijzingen waar deze data vandaan komt. ALs er geen data naar voren komt geeft hij "" (oftewel leeg) aan. Waarschijnlijk gaat hier iets fout. zie bijlageBekijk bijlage Tester (hs).xlsm
 
Ik zie geen formules onder de klanten. Ook mag in een gedefinieerde naam geen spatie voorkomen. Plaats een representatief voorbeeld.
 
p0wmia,

Oeps, één komma vergeten.

In deze bijlage rechtgezet
 

Bijlagen

  • Tester (hs)2.xlsm
    16,1 KB · Weergaven: 50
Je hebt gelijk. Hierbij representatief voorbeeld (hoop ik :)). Door de formules is hij de weg kwijt....
 

Bijlagen

  • Tester 2.xlsm
    17,3 KB · Weergaven: 38
Laatst bewerkt:
representatief voorbeeld?
 
test deze eens.
Met een paar foutcontroles in. o.a het vervangen van spaties.
en o.a een naam bereik van all uw data die je dan ook kan gebruiken voor draatabellen
 

Bijlagen

  • Tester-1.xlsb
    22,5 KB · Weergaven: 57
of
Code:
Sub VenA()
Dim r1 As Range, r2 As Range
For Each cl In Rows(1).SpecialCells(-4123)
  If cl <> "" Then
    b = True
    Set r1 = Nothing
    Set r2 = Nothing
    For Each cl1 In Range(cl.Offset(1), Cells(Rows.Count, cl.Column).End(xlUp))
      If cl1 <> "" And b Then
        Set r1 = cl1
        Set r2 = cl1
        b = False
        ElseIf cl1 <> "" Then Set r2 = cl1
      End If
    Next cl1
    If cl.Address <> Range(r1, r2).Address Then Names.Add cl, Range(r1, r2)
  End If
Next cl
End Sub
 
of
Code:
Sub VenA()
Dim r1 As Range, r2 As Range
For Each cl In Rows(1).SpecialCells(-4123)
  If cl <> "" Then
    b = True
    Set r1 = Nothing
    Set r2 = Nothing
    For Each cl1 In Range(cl.Offset(1), Cells(Rows.Count, cl.Column).End(xlUp))
      If cl1 <> "" And b Then
        Set r1 = cl1
        Set r2 = cl1
        b = False
        ElseIf cl1 <> "" Then Set r2 = cl1
      End If
    Next cl1
    If cl.Address <> Range(r1, r2).Address Then Names.Add cl, Range(r1, r2)
  End If
Next cl
End Sub

Dit is hem wel..

Zoek alleen naar de toevoeging van de 'spatie correctie' van gast0660
 
Wil je svp niet quoten?

Code:
Names.Add Replace(cl, " ", "_"), Range(r1, r2)
 
Top. En op een ander tabblad beginnen de cellen met een cijfer. Dit leest de "namen beheren" ook niet. Ik wil er graag bv een letter "A" aan toevoegen zodat hij dit wel leest (mag niet beginnen met). Hoe doe ik dit?
 
Code:
Range(r1, r2).Name = Replace(cl, " ", "_")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan