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

Macro laten stoppen na de laatst gevulde cel

Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.183
Beste,

Ik wil het volgende voor elkaar krijgen.
Ik heb in kolom Z een BTW nummer staan NL802446346B01.
Om deze goed in te lezen moet deze gesplitst worden naar NL 802446346B01
Dit geld ook voor BE, DE IT enz
Doormiddel van onderstaande code splits hij de BTW nummer naar NL 802446346B01.
Enkel hij stop niet na de laatste actieve regel.

Code:
Sub Samenvoegen()
On Error Resume Next
   Dim nRow As Integer
   nRow = 1
   Do Until IsEmpty(Cells(nRow, 29))
    Cells(nRow, 29) = Cells(nRow, 29) & " " & Cells(nRow, 30)
      Cells(nRow, 30).ClearContents
      nRow = nRow + 1
   Loop
   Columns(29).AutoFit
End Sub

Hoe bouw ik in dat hij stop bij de laatste regel in kolom 29.
In de bijlage vind u het terug hoe ik het nu in totaal heb opgebouwd.
Ivm dat in dit bestand meerdere kolomen zijn gevuld na kolom 26 ( Z )
Moet ik eerst een aantal regels invoegen dit doe ik met de macro INVOEGEN
dan split ik de BTW nummer met de macro SPLIT Om er nu voor te zorgen dan er een spatie komt na de NL moet ik eerst de getallen omzetten naar tekst dit doe ik met de macro GetalNaarTekst en dan met de macro Samenvoegen wil ik het eindresultaat hebben : NL 802446346B01

Concreet nu mijn vragen :

- Hoe stop ik op de laatste active cel in een kolom
- hoe kan ik inbouwen als er een BE nummer staat dat er dan een 0 bij komt
- Ik heb de macro`s nu opgebouwd uit verschillende , kan dit anders ?

Groet HWV
 

Bijlagen

  • Voorbeeld - macro laten stoppen na de laatst gevulde cel.xls
    43,5 KB · Weergaven: 51
Redeneer eens andersom: alleen een bewerking uitvoeren op gevulde cellen.
Kijk eens bij specialcells.
 
specialcells

Beste,

Ik heb gekeken naar de optie specialcells, maar voor mij onduidelijk hoe ik dit moet toepassen. Er wordt wel over geschreven op het internet, maar kan niet voor mij de juiste toepassing vinden.
Code:
Cells.SpecialCells(xlCellTypeLastCell).Activate
Met deze code word de laatste cel aangewezen maar hoe te gebruiken

Kunt u mij op weg helpen

groet HWV
 
De uitdrukking IsEmpty wordt gebruikt om te kijken of een variabele is geïnitialiseerd. Om te kijken of een cel leeg is kan best een andere expressie gebruiken. Bv.

Code:
Do Until Len(Cells(nRow, 29))=0

Best is ook doorheen heel de code aan te duiden op welke sheet je wil gaan werken. Bv.

Code:
Do Until Len(Sheets(1).Cells(nRow, 29))=0
 
Kjik eens in dit forum op specialcells of op officeforum.
 
Een stap verder ?

Code:
Sub Samenvoegen()
On Error Resume Next
   Dim nRow As Integer
   
   Dim LastRow As Long
   LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

   Dim r As Range
   nRow = 1
   Do Until Range("AC1:AC" & LastRow)
    Cells(nRow, 29) = Cells(nRow, 29) & " " & Cells(nRow, 30)
      Cells(nRow, 30).ClearContents
      nRow = nRow + 1
   Loop
   Columns(29).AutoFit
End Sub

Met de volgende code kom ik er nog steeds niet uit, gaat nu langzamer en stop nog steeds niet bij de laatst gevulde cel.
Gaat nu wel wat te veel tijd in zitten dus moet ik dit maar even laten rusten.
Ik heb de optie van Finch geprobeerd maar ook zonder resultaat. ik zal hoogwaarschijnlijk wel iets forut doen, maar goed.

Bedankt jullie tijd zover, mischien kom ik er nog wel achter

groet HWV

Gevonden.

En Finch ik heb inderdaad wat verkeerd gedaan want nu doet hij het wel met de volgende code:
Code:
Sub Samenvoegen()
On Error Resume Next
   nRow = 1
  Do Until Len(Sheets(1).Cells(nRow, 29)) = 0
    Cells(nRow, 29) = Cells(nRow, 29) & " " & Cells(nRow, 30)
      Cells(nRow, 30).ClearContents
      nRow = nRow + 1
   Loop
   Columns(29).AutoFit
End Sub

Groet HWV
 
Laatst bewerkt:
Een andere aanpak misschien, maak een dynamisch bereik van je kolom Z en benoem dit. Gebruik deze naam dan in een For Each loop om het volledige bereik te doorlopen. Aangezien dit dynamisch is kan je nummers toevoegen of verwijderen en toch worden steeds alle cellen doorlopen.

Mvg

Rudi
 
Andere aanpak

Rudi,

Bedankt voor het meedenken in deze case.
Helaas gaat mijn kennis niet zo ver dat ik je ga snappen.
Ik ben al blij met het geen wat nu bereikt is, maar leer graag bij.

groet HWV
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan