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

Variabele koppen tabel Excel

Status
Niet open voor verdere reacties.

Smokers

Gebruiker
Lid geworden
10 okt 2011
Berichten
16
LS,

Ik zit met een uitdaging. Misschien dat iemand daar raad mee weet.

In het bijgevoegde bestand wil ik de koppen van de tabel variabel maken, maar hoe krijg ik dat voor elkaar? De tabelkoppen zijn van belang omdat ik in Slicers gebruik in het oorspronkelijke bestand. Ik heb al geprobeerd om de veldnamenrij uit te vinken, echter komt deze weer terug als ik een Slicer toevoeg..

In de bijlage een bestand met daarin wat ik bedoel.

Bedankt alvast!
 

Bijlagen

Hallo Smokers,

Misschien zijn er meerdere oplossingen mogelijk:

1. Je laat het principe van de tabel los en converteert het gebied naar een bereik.
(edit: - ik ken slicers (beperkt), maar zit zelf met een oude versie Excel. Weet dus niet of het een verplichting is dat het dan een tabel moet zijn. Gezien je vraagstelling denk ik het wel..)
2. Zie bijlage: Bekijk bijlage Tabelkop.xlsm
Ik heb in VBA (alt+F11) een worksheet change event ingebouwd. Ik hoop dat je dit kunt gebruiken.

Misschien zijn er nog eenvoudigere oplossingen, maar dan laat ik mij ook graag verrassen :thumb:

Groet, Jos
 
Laatst bewerkt:
Ook met het Worksheet_Change event.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$C$2" Or Not IsNumeric(Target) Then Exit Sub
  For j = 2 To ListObjects(1).ListColumns.Count
    c00 = c00 & Target + j - 2 & " "
  Next j
  ListObjects(1).Range.Cells(1, 2).Resize(, ListObjects(1).ListColumns.Count - 1) = Split(c00)
End Sub
 
Ook zonder lus.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "C2" Then
 Application.EnableEvents = False
    With ListObjects(1)
     .range.cells(1, 2) = format(Target)
     .Range.Cells(1, 2).AutoFill .Range.Cells(1, 2).Resize(, .ListColumns.Count - 1)
    End With
Application.EnableEvents = True
End If
End Sub

edit:
vreemd; gaat tig keer goed, dan maar zo een extra 2 in de cel.
Komt af van kolom2, met format gaat het goed.
 
Laatst bewerkt:
Bedankt voor jullie reactie!

Ik ben echter niet zo thuis in VBA kunnen jullie dit verder toelichten?

Bedankt alvast!
 
Bedankt voor jullie reactie!

Ik ben echter niet zo thuis in VBA kunnen jullie dit verder toelichten?

Bedankt alvast!

In VBA kunt je heel veel zaken automatiseren zo dat je de handelingen niet altijd handmatig hoeft uit te voeren. Ik heb zelf geen studie gevolgd voor VBA, maar leer het mezelf aan door er over te lezen en te leren van tips op het internet (en natuurlijk dit forum!)

Het komt er in jip-en-janneketaal op neer dat wanneer jij nu een jaartal in cel C2 invuld en op enter drukt (dit is de trigger voor Excel) het programma automatisch de koppen van de tabel voor je aanpast.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

If Not Intersect(Target, Range("C2")) Is Nothing Then
'Als je cel C2 aanpast dan zal Excel onderstaande code gaan uitvoeren


'Als in de tabel een kolomkop zich al een keer heeft voorgedaan dan ze Excel een 2 erachter.
'Op deze manier voorkom je dat
Range("C5").Value = 0 'Verander cel c5 in 0
Range("D5").Value = 1 'Verander cel d5 in 1 etc etc
Range("E5").Value = 2
Range("F5").Value = 3

'Dit is de code die de kolomkoppen aanpast
Range("C5").Value = Target.Value 'Verander cel c5 in de waarde van cel c2
Range("D5").Value = Target.Value + 1 'Verander cel c5 in de waarde van cel c2 + 1
Range("E5").Value = Target.Value + 2
Range("F5").Value = Target.Value + 3
Else

End If

Application.ScreenUpdating = True

End SubPrivate Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

If Not Intersect(Target, Range("C2")) Is Nothing Then
'Als je cel C2 aanpast dan zal Excel onderstaande code gaan uitvoeren


'Als in de tabel een kolomkop zich al een keer heeft voorgedaan dan ze Excel een 2 erachter.
'Op deze manier voorkom je dat
Range("C5").Value = 0 'Verander cel c5 in 0
Range("D5").Value = 1 'Verander cel d5 in 1 etc etc
Range("E5").Value = 2
Range("F5").Value = 3

'Dit is de code die de kolomkoppen aanpast
Range("C5").Value = Target.Value 'Verander cel c5 in de waarde van cel c2
Range("D5").Value = Target.Value + 1 'Verander cel c5 in de waarde van cel c2 + 1
Range("E5").Value = Target.Value + 2
Range("F5").Value = Target.Value + 3
Else

End If

Application.ScreenUpdating = True

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan