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

Indent automatisch laten doorvoeren

Status
Niet open voor verdere reacties.

tonissteiner

Gebruiker
Lid geworden
17 sep 2008
Berichten
352
Beste forumgebruikers,

ik had gehoopt dat de zoekfunctie hier mij kon helpen maar vond niet direct een oplossing voor mijn probleem.
wat ik tracht te doen is een code schrijven die bij iedere wijziging in een sheet kijkt naar de waarde in een kolom (bijvoorbeeld kolom B). Afhankelijk van deze waarde (bijvoorbeeld 0 of 1 of 2 of 3 of 4) zouden dan de celeigenschappen van kolom C en H moeten aangepast worden; de "Indent" zou dan deze ingevulde waarde moeten ziin.

zou iemand mij hiermee verder kunnen helpen aub?

ook met een record macro kom ik niet echt verder

alvast bedankt.

Stefan
 
Dit is al een stuk van de code die ik zelf gevonden heb:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If [B27].Value = "" Then
  [C27].IndentLevel = 0
  [H27].IndentLevel = 0
  End If
  
  If [B27].Value = "0" Then
  [C27].IndentLevel = 0
  [H27].IndentLevel = 0
  End If
  
  If [B27].Value = "1" Then
  [C27].IndentLevel = 1
  [H27].IndentLevel = 1
  End If

  If [B27].Value = "2" Then
  [C27].IndentLevel = 2
  [H27].IndentLevel = 2
  End If

  If [B27].Value = "3" Then
  [C27].IndentLevel = 3
  [H27].IndentLevel = 3
  End If

  If [B27].Value = "4" Then
  [C27].IndentLevel = 4
  [H27].IndentLevel = 4
  End If

End Sub

echter is deze beperkt tot de waarde van cel B27. Nu zou er nog iets moeten bijkomen zoals:

For Each row In ....

maar dit lukt me niet
 
al één ander met trial and error zitten uitproberen maar krijg het zelf niet voor elkaar... snif... snotter
 
nog steeds aan het proberen maar loop telkens vast en weet niet waar.

iemand?

denk dat de code moet beginnen met:

Code:
Dim C As Range
    For Each C In Range("B:B")
        If C =

maar dan vraag ik me ook af of er ook nog ergens een voorwaarde moet inkomen als er een error is en of er ergens ook nog een voorwaarde moet inkomen zoals:

Code:
If C = "" Then Exit Sub

ofwel loop ik vast omdat sommige rijen samengevoegde cellen zijn (voorbeeld B tot M zijn samengevoegd)

mijn VBA kennis blijkt te beperkt om er zelf een deftige (eigenlijk werkende) code van te maken

mvg,

Stefan
 
Laatst bewerkt door een moderator:
Deze code zou het kunstje moeten doen..

Code:
Sub IndentInstellen()
    For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
         Cells(i, 3).Resize(, 6).IndentLevel = IIf(WorksheetFunction.IsNumber(Cells(i, 2).Value), Cells(i, 2), 0)
    Next i
End Sub
 
Of:
Voor ingevoerde gegevens.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns(2)) Is Nothing Then
  If WorksheetFunction.And(Target >= 0, Target <= 15) Then
   With Target
    .Offset(, 1).IndentLevel = .Value
    .Offset(, 6).IndentLevel = .Value
   End With
  End If
 End If
Columns.AutoFit
End Sub

Of voor alle bestaande gegevens.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range
 If Not Intersect(Target, Columns(2)) Is Nothing Then
  For Each cl In Columns(2).SpecialCells(2)
  If WorksheetFunction.And(cl >= 0, cl <= 15) Then
    cl.Offset(, 1).IndentLevel = cl.Value
    cl.Offset(, 6).IndentLevel = cl.Value
   End If
  Next cl
 End If
Columns.AutoFit
End Sub
 
Laatst bewerkt:
ONGELOOFLIJK, RESPECT, BEDANKT

Roel, Harry,
ik heb er geen woorden voor. Toen ik vanmorgen wakker werd was het een verrassing te zien dat toen ik al sliep jullie toch nog een code gepost hebben. ik kon niet wachten om ze uit te proberen. maar computer was al afgesloten en ben snel snel naar het werk gereden en mijn eerste werk hier was de codes uitproberen. Uiteraard werken ze allemaal.

Roel, jouw code ga ik niet gebruiken omdat de Indent effect heeft op alle rijen
Harry, jouw tweede code doet er iets langer over. dus ga je eerste gebruiken. had nog wel een klein probleem omdat de kolombreedtes aangepast werden. dat heb ik zelf kunnen aanpassen :thumb: door de Columns.AutoFit er uit te halen

eigenlijk is dit een mooi voorbeeld van het verschil tussen een leek zoals ik en experts zoals jullie. ik zat dus totaal op het verkeerde spoor met mijn code.

Heren, nogmaals mijn welgemeende dank voor jullie hulp
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan