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

Regel verplaatsen op waarde, niet kopieeren

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

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.213
Beste,

Ik heb een code die de rijen verplaats op een speciefieke waarde (Ja of ja) in Sheet Database en in kolom AP, naar de Sheet nieuw.
Enkel zou ik willen dat als de regels zijn verplaats, dat dan de regel verwijderd worden die voldoen aan de waarde Ja of ja in de sheet DataBase

Code:
Sub VerplaatsRegels()
   Sheets("DataBase").Select
   Dim c As Range
   For Each c In [AP1:AP10000]
        If c = "Ja" Or c = "ja" Then
            c.Rows.EntireRow.Copy
            ['Nieuw'!A65536].End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End If
    Next
End Sub

Ik dacht met de volgende code dit op te lossen, maar dan pakt hij niet alle regels om te verwijderen in de Sheet DataBase
Code:
   Sheets("DataBase").Select
   Dim c As Range
   For Each c In [AP1:AP10000]
        If c = "Ja" Or c = "ja" Then
            c.Rows.EntireRow.Copy
            ['Nieuw'!A65536].End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
[COLOR="#FF0000"]            c.Rows.EntireRow.Delete[/COLOR]
        End If
    Next
End Sub

Hoe kan ik dit oplossen dat hij nadat hij de regels heb gekopieerd, dat hij deze verwijderd in de Sheet DataBase

Groet Henk
 

Bijlagen

Rijen moet je van beneden naar boven verwijderen.

Alternatief
Code:
Sub VenA()
  With Sheets("Database").Cells(1).CurrentRegion
    .AutoFilter 42, "ja"
    .Offset(1).Copy Sheets("Nieuw").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .Offset(1).EntireRow.Delete
    .AutoFilter
  End With
End Sub
 
Opgelost

VenA thanks,

Dit was hem, even anders denken met de filter.
Werkt perfect!

Henk
 
Beste,

Ik heb niet aan het volgende gedacht:

Deze code heb ik aangepast zodat hij naar een andere workbook de gegevens wegschrijft, vanuit mijn orginele bestand.
Maar als het bestand "Database_Transportprogramma_FPL.xlsx" open staat door een andere gebruiker, zal er een foutmelding komen

Wat ik eigenlijk zou is dat als dit bestand openstaat dat hij dan de gegevens niet wegschrijf naar dit bestand.
Deze gegevens zullen dan bij een volgende poging wel weggeschreven kunnen worden.

Hoe kan ik dit voor elkaar krijgen!

Code:
Sub RegelsVerplaatsen()
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
End With

Workbooks.Open filename:="J:\Logistiek\Transport\Database\Database_Transportprogramma_FPL.xlsx"
  With Workbooks("Transport FPL.xlsm").Sheets("DataBase").Cells(1).CurrentRegion
    .AutoFilter 42, "Ja"
    .Offset(1).Copy Workbooks("Database_Transportprogramma_FPL.xlsx").Sheets("DataBase").Cells(Rows.count, 1).End(xlUp).Offset(1)
    .Offset(1).EntireRow.Delete
    .AutoFilter
  End With
Workbooks("Database_Transportprogramma_FPL.xlsx").Close True

With Application
    .DisplayAlerts = True
    .ScreenUpdating = True
End With
End Sub

Alvast dank
Henk
 
Code:
Sub OpenBestand()
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
End With

Workbooks.Open Filename:="J:\Logistiek\Transport\Database\Database_Transportprogramma_FPL.xlsx", Password:="", ReadOnly:=False

With Application
    .DisplayAlerts = True
    .ScreenUpdating = True
End With
End Sub

Ik heb me er even in verdiept en ik heb het bestand als readonly opgeslagen.
Maar als ik deze open met de code hierboven, dan opent hij als alleen lezen en kan ik de gegevens niet wegschrijven.
Hoe kan ik dit ondervangen, dat ik de gegevens toch met VBA kan wegschrijven!

Heb het volgende nu gevonden, maar werkt nog niet hij vraag nog steeds bij openen voor ja en nee. Als ik dan de display alerts aanzet dan opent hij als alleen lezen.

Code:
Sub VerplaatsenRegels()

    myFile = "J:\Logistiek\Transport\Database\Database_Transportprogramma_FPL.xlsx" 'put filepath here
    SetAttr myFile, vbNormal
    Set wb = Workbooks.Open(myFile)
    
With Workbooks("Transport FPL.xlsm").Sheets("DataBase").Cells(1).CurrentRegion
    .AutoFilter 42, "Ja"
    .Offset(1).Copy Workbooks("Database_Transportprogramma_FPL.xlsx").Sheets("DataBase").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .Offset(1).EntireRow.Delete
    .AutoFilter
End With
    
    wb.Close True 'close and save
    SetAttr myFile, vbReadOnly 'reassign read only

End Sub
Henk
 
Laatst bewerkt:
Je moet het bestand ook niet opslaan als readonly. Je moet de status opvragen.
 
Sorry VenA ik begrijp niet echt wat je hiermee bedoeld.
"Je moet het bestand ook niet opslaan als readonly. Je moet de status opvragen"
 
Code:
  Set wb = Workbooks.Open(myFile)
  If wb.ReadOnly Then
    wb.Close 0
   Else
 
Geweldig

Dank voor je inbreng Ven A.
Ik heb het getest en werkt perfect.

Groet Henk
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan