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

Excel macro bereiken van kolommen benoemen

Status
Niet open voor verdere reacties.

SanderH20

Gebruiker
Lid geworden
25 okt 2019
Berichten
11
Ik zit met een klein probleem.
Ik heb een Excel-bestand met 10 kolommen, iedere kolom is gevuld tussen het bereik 7 en 8766.
In cel 1 van iedere kolom staat een bepaalde variabele naam.
Ik zou graag in iedere kolom (1 tot en met 10) het bereik (7 tot en met 8766) benoemen met deze variabele naam (gegeven in cel 1) met behulp van een macro.
Tevens is er een voorbeeldbestand toegevoegd om meer duidelijkheid te geven.
Alvast veel dank voor de moeite!
 

Bijlagen

  • voorbeeld_bestand.xlsx
    281,8 KB · Weergaven: 32
Zo?

Code:
Sub VenA()
  ar = Cells(1).CurrentRegion
  For j = 1 To UBound(ar, 2)
    Cells(7, j).Resize(8760).Name = ar(1, j)
  Next j
End Sub
 
@VenA,

De macro werkt naar behoren in het voorbeeldbestand. Echter als de laatste celwaarde van iedere kolom van 8760 verandert naar een willekeurige waarde, werkt de macro niet meer. Tevens zijn de kolommen nu 10 kolommen opgeschoven, de eerste kolom met waarden begint nu bij kolom 11. Hoe ziet de macro er dan uit? Hoe werkt Ubound eigenlijk?
 
Laatst bewerkt:
zo?

Code:
Sub VenA()
  ar = Cells(1).CurrentRegion
  For j = 1 To UBound(ar, 2)
      LR = Columns(j).SpecialCells(xlCellTypeLastCell).Row
      Cells(7, j).Resize(LR - 6).Name = ar(1, j)
  Next j
End Sub

of zonder de variabele LR:

Code:
Sub VenA()
  ar = Cells(1).CurrentRegion
  For j = 1 To UBound(ar, 2)
      Cells(7, j).Resize(Columns(j).SpecialCells(xlCellTypeLastCell).Row - 6).Name = ar(1, j)
  Next j
End Sub
 
Laatst bewerkt:
@SjonR
De willekeurige waarde (in de laatste rij) werkt, echter wanneer de data pas in kolom 11 begint, werkt de macro niet meer. Graag zou ik dit toch verholpen zien.
 
Maak van de 7 een 11. En van de 6 een 10.
 
@SjonR
Wanneer ik de 7 in een 11 verander en de 6 in een 10, dan krijg ik de foutmelding dat de typen niet overeen komen met elkaar.
 
plaats je aanpassing dan eens, want ik krijg die melding niet.

moet er zo uitzien:

Code:
Sub VenA()
  ar = Cells(1).CurrentRegion
  For j = 1 To UBound(ar, 2)
      Cells(11, j).Resize(Columns(j).SpecialCells(xlCellTypeLastCell).Row - 10).Name = ar(1, j)
  Next j
End Sub

staan de namen nog wel in rij 1? Ik gok dan van niet.

Deze wanneer de namen in rij 11 staan en daaronder de data:

Code:
Sub VenA()
  ar = Cells(11, 1).CurrentRegion
  For j = 1 To UBound(ar, 2)
      Cells(11, j).Resize(Columns(j).SpecialCells(xlCellTypeLastCell).Row - 10).Name = ar(1, j)
  Next j
End Sub
 
Laatst bewerkt:
Maak er een tabel (listobject) van.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan