Excel vba Rijen verwijderen / Tab naam ophalen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Bergenfietsen
  • Registratie: Februari 2008
  • Nu online
Mijn vraag

Ik heb in excel een factureer programmaatje gemaakt.
Dit is mijn eerste VBA project.
Nadat de (PDF) factuur gemaakt is, worden de gegevens opgeslagen in de diverse tabbladen.
Dit zijn de diverse grootboekrekeningen (1100 debiteuren 1500 BTW 21%, 1505 BTW 9% en 8000 Verkopen), een tabblad verkopen, en bij de desbetreffende debiteur. Elke debiteur heeft een eigen tabblad onder zijn eigen naam.

Mijn probleem is als ik een factuur wil verwijderen.
Ik heb een userform gemaakt waarmee ik de Factuurnummer en de Debiteurennaam ophaal.
Deze kopieer ik tijdelijk in het Sheet "Instellingen" .
Deze staan onder cel "T2" (Factuurnummer) en "T3" (Debiteurennaam)

Dan wil ik met een andere knop de regels verwijderen.
Met de tabbladen met een vaste naam is het geen probleem.

Maar het lukt niet met de tabblad met de Debiteuren.
Met
code:
1
K = Sheets("Instellingen").Range("T3").value
Geef ik "K" de naam van de debiteur
Met
code:
1
I = Sheets("Instellingen").Range("T2").value
Geef ik "I" het factuurnummer aan
Met onderstaande code probeer ik de regel te verwijderen
Het factuurnummer is het Tabblad "Debiteurennaam" staat in kolom B

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  Worksheets(K).Activate
     Worksheets(K).Unprotect
     With (K)

    'Zoek de rij op die gebruikt is bij het opzoeken van de debiteur
     Set Zrange = Sheets(K).Columns(2).Find(What:=I, LookIn:=xlValues, LookAt:=xlWhole)
     R = Zrange.Row
    
    'Kopieert de waarden van de  Userform naar het I
    Sheets(K).Cells(R, 2).value = I
    
    'Verwijderd rij
    For A = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
    If Range("B" & A) = I Then
    Rows(A).Delete
    Else
    End If


Bij alle andere tabbladen werkt het dus perfect
Bij het debiteuren tabblad krijg ik een foutcode dat "methode Delete van klasse range is mislukt"


Wat ik al gevonden of geprobeerd heb
Ik heb andere Delete regels geprobeerd (entirerow.delete etc) maar die geven allemaal dezelfde foutmelding.
Nu vermoed ik dat het Sheet (Tabblad)"Debiteurennaam" niet herkend wordt
Ik zie onder "instellingen"Cel"T3" de Debiteurennaam staan.
Volgens mij is K = Debiteurennaam en Sheets(K) dus Sheets("Debiteurennaam")?

Nog een andere vraag:
Via F8 kan ik stap voor stap de code volgen.
Is het ook mogelijk om stap voor stap de code te volgen in het betreffende userform/sheet?
Dan kan ik meteen zien waar het fout loopt


...

[ Voor 0% gewijzigd door g0tanks op 19-05-2020 19:27 . Reden: [code]-tags toegevoegd ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Bergenfietsen
  • Registratie: Februari 2008
  • Nu online
Het is gelukt!

De fout zat in

Sheets(K).Cells(R, 2).value = I
Dat moest worden Sheets(K).Cells(R, 2).value = Me.TxtFactuurnummer.Value
Dit is de opgevraagde waarde van het Userform

Ik snap het niet helemaal waarom I fout is.
Ik heb:
TxtFactuurnummer.Value via het Userform opgevraagd uit de Sheet "Verkopen"
Deze heb ik een vaste plek gegeven onder Sheet "Instellingen" en met
I = Sheets("Instellingen").Range(T2).Value deze toegewezen aan I.

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 00:11

g0tanks

Moderator CSA
Ik heb aan je post even [code]-tags toegevoegd. Handig als je dat in het vervolg ook doet, want dat maakt het een stuk beter leesbaar.

Waar staat de toewijzing van variabele I precies? Dat is niet duidelijk op te maken en ik zou vermoeden dat het daar misgaat.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • Bergenfietsen
  • Registratie: Februari 2008
  • Nu online
Bedankt voor het leesbaarder maken van mijn tekst.
Als je bedoelt wat ik denk staat de toewijzing I in de eerste regels van code onder de knop verwijderen

Ik dacht dat het makkelijker is/ was om een variabel getal (factuurnummer) op een vaste plek (Sheet Instellingen) te zetten.
En dan deze toe te wijzen aan een letter (I)
In de berekeningen werkt het goed.

Het programmaatje is nu klaar.
Zo te zien werkt alles zoals het hoort.
Nu nog goed testen

Volgend plan is om het bankboek te integreren