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

Auto aanvullen - Range

  • Onderwerp starter Onderwerp starter tamvo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

tamvo

Gebruiker
Lid geworden
26 sep 2007
Berichten
6
Goedemiddag,

In Excel wil ik een kolom hebben met daarin een formule. Middels auto-aanvullen is het mij gelukt om een formule over de juiste 'Range' van de kolom te krijgen. Deze 'Range' varieert maandelijks, wanneer er weer nieuwe data aangeleverd wordt.

Hoe kan ik VBA automatsich laten bepalen, dat de 'Range' van kolom J even groot moet zijn als de Range van voorgaande kolom I ?

Hopelijk kan iemand mij hiermee helpen.

Onderstaande heb ik:

Code:
 Range("J1").Select
    ActiveCell.FormulaR1C1 = "AkkRoute"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-6]),"""",0)"
    Range("J2").Select
    Selection.AutoFill Destination:=Range("J2:J100"), Type:=xlFillDefault
    Range("J2:J100").Select
 
Laatst bewerkt door een moderator:
Uit de losse pols en niet getest dus:

Code:
With Range("I2", Range("I2").End(xlDown))
   .Offset(,1).Formula = "=IF(ISBLANK(RC[-6]),"""",0)"
End With

Wigi
 
Uit de losse pols en niet getest dus:

Code:
With Range("I2", Range("I2").End(xlDown))
   .Offset(,1).Formula = "=IF(ISBLANK(RC[-6]),"""",0)"
End With

Wigi

_______________________________________

Bedankt voor de supersnelle reactie.

Het werkt goed nu heb ik nog maar één probleem met wat ik er nu van gemaakt heb:

De Range van cellen I;J;K moeten net zo lang zijn als H. Ik heb ze naar elkaar gerefereert ipv naar H omdat ik niet uitkwam.

Nu kom ik met onderstaande code tot een extra kolom G die voor mij ongewenst is, ik kan deze natuurlijk gewoon verwijderen maar doe ik hier iets fout waardoor er een kolom G verschijnt?

Gr Tam

Code:
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "Betalingskenmerk"
       
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "PercentageCode"
    With Range("I2", Range("H2").End(xlDown))
    .Offset(, 1).Formula = "=IF(ISBLANK(RC[-3]),"""",""03"")"
    End With
 
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "AkkRoute"
    With Range("J2", Range("I2").End(xlDown))
    .Offset(, 1).Formula = "=IF(ISBLANK(RC[-6]),"""",""0"")"
    End With
        
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "Blokkering"
    With Range("K2", Range("J2").End(xlDown))
    .Offset(, 1).Formula = "=IF(ISBLANK(RC[-5]),"""",""J"")"
    End With
    
    Cells.Select
    Range("N5").Activate
    Selection.Columns.AutoFit
End Sub
 
Zoiets

Code:
    Range("H1").Value = Array("Betalingskenmerk", "PercentageCode", "AkkRoute", "Blokkering")
    
    With Range("I2", Range("I2").End(xlDown))
       .Offset(, 0).Formula = "=IF(ISBLANK(RC[-3]),"""",""03"")"
       .Offset(, 1).Formula = "=IF(ISBLANK(RC[-6]),"""",""0"")"
       .Offset(, 2).Formula = "=IF(ISBLANK(RC[-5]),"""",""J"")"
    End With
    
    Columns.AutoFit

En probeer ook iets op te steken van hoe de code in elkaar steekt, je hoeft bv. geen Select te gebruiken.

Wigi
 
_______________________________________

Bedankt voor de supersnelle reactie.

Het werkt goed nu heb ik nog maar één probleem met wat ik er nu van gemaakt heb:

De Range van cellen I;J;K moeten net zo lang zijn als H. Ik heb ze naar elkaar gerefereert ipv naar H omdat ik niet uitkwam.

Nu kom ik met onderstaande code tot een extra kolom G die voor mij ongewenst is, ik kan deze natuurlijk gewoon verwijderen maar doe ik hier iets fout waardoor er een kolom G verschijnt?

Gr Tam

Code:
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "Betalingskenmerk"
       
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "PercentageCode"
    With Range("I2", Range("H2").End(xlDown))
    .Offset(, 1).Formula = "=IF(ISBLANK(RC[-3]),"""",""03"")"
    End With
 
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "AkkRoute"
    With Range("J2", Range("I2").End(xlDown))
    .Offset(, 1).Formula = "=IF(ISBLANK(RC[-6]),"""",""0"")"
    End With
        
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "Blokkering"
    With Range("K2", Range("J2").End(xlDown))
    .Offset(, 1).Formula = "=IF(ISBLANK(RC[-5]),"""",""J"")"
    End With
    
    Cells.Select
    Range("N5").Activate
    Selection.Columns.AutoFit
End Sub

Foutje

Ik bedoelde dat "L" ongewenst is!
 
Zoiets

Code:
    Range("H1").Value = Array("Betalingskenmerk", "PercentageCode", "AkkRoute", "Blokkering")
    
    With Range("I2", Range("I2").End(xlDown))
       .Offset(, 0).Formula = "=IF(ISBLANK(RC[-3]),"""",""03"")"
       .Offset(, 1).Formula = "=IF(ISBLANK(RC[-6]),"""",""0"")"
       .Offset(, 2).Formula = "=IF(ISBLANK(RC[-5]),"""",""J"")"
    End With
    
    Columns.AutoFit

En probeer ook iets op te steken van hoe de code in elkaar steekt, je hoeft bv. geen Select te gebruiken.

Wigi



Helaas ben ik nog niet helemaal thuis met VBA en probeer dan ook nog veel te leren. Select komt door het in gebruik nemen van de macro recorder, op die manier probeer ik codes te ontfutselen.

Niet gelukt om die namen in bovenste cellen te krijgen dus alsnog via onderstaande code

Dankjewel hij werkt nu prima, misschien zijn de stukjes code van mij niet allemaal kort en bondig geschreven maar daar ga ik me nog in verdiepen.

Code:
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "Betalingskenmerk"
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "PercentageCode"
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "AkkRoute"
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "Blokkering"
        
    Range("I2").Value = Array("Betalingskenmerk", "PercentageCode", "AkkRoute", "Blokkering")
    
    With Range("H2", Range("H2").End(xlDown))
       .Offset(, 1).Formula = "=IF(ISBLANK(RC[-3]),"""",""03"")"
       .Offset(, 2).Formula = "=IF(ISBLANK(RC[-6]),"""",""0"")"
       .Offset(, 3).Formula = "=IF(ISBLANK(RC[-5]),"""",""J"")"
    End With
    
Columns.AutoFit
 
Laatst bewerkt:
Sorry, het moest wat rap daarstraks.

Code:
Range("H1").[B]Resize(1, 4).[/B]Value = Array("Betalingskenmerk", "PercentageCode", "AkkRoute", "Blokkering")

Succes en veel plezier op je ontdekkingstocht van VBA in Excel ;)

Bij vragen klop je nog maar eens aan op het forum.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan