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

lastrow

Status
Niet open voor verdere reacties.

knabbie

Gebruiker
Lid geworden
20 feb 2009
Berichten
45
In een stukje macro code heb ik staan

Dim lVolgendeRij As Long

lVolgendeRij = Sheets("log").Range("A" & Rows.Count).End(xlUp).Row + 1

ActiveSheet.Select

a = Range("C58") 'DATUM
Sheets("log").Cells(lVolgendeRij, 1).Value = a
B = Range("C57")
Sheets("log").Cells(lVolgendeRij, 2).Value = B
c = Range("C3")
Sheets("log").Cells(lVolgendeRij, 3).Value = c
d = Range("C9")
Sheets("log").Cells(lVolgendeRij, 4).Value = d
e = Range("F9")
Sheets("log").Cells(lVolgendeRij, 5).Value = e

Hetgeen perfect werkt
a.b.c.d.en e worden keurig weggeschreven op een lege regel in het werkblad log

Maar wat als het werkblad log vol is dus rij is 65535 ?

hoe krijg ik het voor elkaar dat dan een volgend werkbald log1 aangemaakt word.

of dat een andere kolom gekozen gaat worden.

of dat het aantal regels die weggeschreven worden beperkt blijft to 250
en dan telkns de bovenste regel verwijdert word, zodat de ondersteregel alijd de nieuwe gegevens krijgt
 
Laatst bewerkt:
Welke suggestie van je heeft de voorkeur?

Ik wil geen spelbreker zijn maar je code kan overigens wel wat korter.

Met vriendelijke groet,


Roncancio
 
Welke suggestie van je heeft de voorkeur?

Ik wil geen spelbreker zijn maar je code kan overigens wel wat korter.

Met vriendelijke groet,


Roncancio

dit heeft toch mijn voorkeur
of dat het aantal regels die weggeschreven worden beperkt blijft to 250
en dan telkns de bovenste regel verwijdert word, zodat de ondersteregel alijd de nieuwe gegevens krijgt

dat de code korter kan dat zei mijn gevoel ook al maar kom er niet achter hoe het korter kan.
 
In bijgevoegde code worden de gegevens in Log1 (wordt automatisch aangemaakt) geplaatst als Log vol is.

Code:
Sub Loggen()
Dim lVolgendeRij As Long
Dim WS As Worksheet
Dim sWSNaam As String
    sWSNaam = "Log"
    On Error Resume Next
    Set WS = Sheets("log1")
    If Sheets("Log").Range("A65536").Value <> "" And Not WS Is Nothing Then
        sWSNaam = "Log1"
        Worksheets.Add().Name = sWSNaam
        lVolgendeRij = 2
    Else
        lVolgendeRij = Sheets(sWSNaam).Range("A" & Rows.Count).End(xlUp).Row + 1
    End If

[B]    Worksheets(sWSNaam).Range("A" & lVolgendeRij) = ActiveSheet.Range("C58").Value
    Worksheets(sWSNaam).Range("B" & lVolgendeRij) = ActiveSheet.Range("C57").Value
    Worksheets(sWSNaam).Range("C" & lVolgendeRij) = ActiveSheet.Range("C3").Value
    Worksheets(sWSNaam).Range("D" & lVolgendeRij) = ActiveSheet.Range("C9").Value
    Worksheets(sWSNaam).Range("E" & lVolgendeRij) = ActiveSheet.Range("F9").Value[/B]

End Sub

Het vetgedrukte gedeelte is grotendeels je code die wat korter is weergegeven.

Met vriendelijke groet,


Roncancio
 
Helaas blijft de door jouw gegeven code werkbladen toevoegen in plaats van dat de gevens weg geschreven worden op werkbald log1
 
Zoiets dan, al heb ik de hele vraag niet in detail doorgespit.

Code:
Sub Loggen()

    Dim WS As Worksheet
    
    On Error Resume Next
    Set WS = Sheets("log1")
    On Error GoTo 0
    
    If Not WS Is Nothing Then
    
        WS.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 5).Value = _
            Array(Range("C58").Value, Range("C57").Value, Range("C3").Value, Range("C9").Value, Range("F9").Value)
            
    End If
    
End Sub

Graag in het vervolg ook even code tags gebruiken voor code op het forum aub. Thx.

Wigi
 
Code:
Sub Loggen1()
Dim WS As Worksheet
Set WS = Sheets("Log1")
    On Error Resume Next
    If WS.[A65536].Value <> "" Then
        WS.Rows(1).EntireRow.Delete
    End If
    WS.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 5).Value = _
        Array([C58].Value, [C57].Value, [C3].Value, [C9].Value, [F9].Value)
End Sub

Mvg

Rudi
 
opgelost

De code die ik ga gebruiken is als volgt

Sub Wegschrijven() 'dit werkt gecreeerd met behulp Helpmij forum
Dim sWSNaam As String
sWSNaam = "Log"
If Sheets(sWSNaam).Range("A65536").Value <> "" Then
Sheets(sWSNaam).Rows(2).EntireRow.Delete Shift:=xlUp

End If
lVolgendeRij = Sheets(sWSNaam).Range("A" & Rows.Count).End(xlUp).Row + 1

Worksheets(sWSNaam).Range("A" & lVolgendeRij) = ActiveSheet.Range("C58").Value
Worksheets(sWSNaam).Range("B" & lVolgendeRij) = ActiveSheet.Range("C57").Value
Worksheets(sWSNaam).Range("C" & lVolgendeRij) = ActiveSheet.Range("C3").Value
Worksheets(sWSNaam).Range("D" & lVolgendeRij) = ActiveSheet.Range("C9").Value
Worksheets(sWSNaam).Range("E" & lVolgendeRij) = ActiveSheet.Range("F9").Value

End Sub

Mogelijk dat .Range("A65536").
in If Sheets(sWSNaam).Range("A65536").Value <> "" Then
aangepast word met een lagere waarde

U allen bedankt voor het meedenken
 
Waarom de lange versie ? Maar goed het is jouw keuze
Zet je de vraag dan nog even op opgelost(rechts onderaan de pagina)

Mvg

Rudi
 
Waarom de lange versie ? Maar goed het is jouw keuze
Zet je de vraag dan nog even op opgelost(rechts onderaan de pagina)

Mvg

Rudi

Helemaal gelijk Rudi

het moet de korte versie van jou zijn

Sub Loggen1() 'werkt ook van het warme bakkertje
Dim WS As Worksheet
Set WS = Sheets("Log2")
On Error Resume Next
If WS.[A15].Value <> "" Then
WS.Rows(2).EntireRow.Delete
End If
WS.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 5).Value = _
Array([C58].Value, [C57].Value, [C3].Value, [C9].Value, [F9].Value)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan