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

Opslaan in juiste regel (rij) m.b.v. VBA

Status
Niet open voor verdere reacties.

toverkamp

Gebruiker
Lid geworden
11 sep 2006
Berichten
403
Juiste regel vinden en verwijderen

Beste forumleden,

Ik heb een VBA code waarmee ik gegevens uit een userform op het werkblad kan plaatsen. Dezelfde gegevens worden van een ander werkblad verwijderd. Deze code heb ik met dank aan wigi, demeter en spiderman gekregen. Ik wil nu enkele wijzigingen hierin brengen:

De regel (rij) waar moet worden opgeslagen wordt gezocht aan de hand van 1 voorwaarde (ordernummer) deze moeten overeenkomen. Nu wil ik echter een 2e voorwaarde toevoegen, dus dat de juiste regel wordt gezocht aan de hand van het ordernummer én kassanummer.

de code die ik hervoor gebruik is:
Code:
  'waar gaan we opslaan
    Dim Rij As Integer
    Rij = FindOnSheet("reactietijden", storinggereedordernummer, storinggereedkassanummer, "rt) [B]in deze regel moet volgens mij een wijziging worden gebracht[/B]    If Rij = -1 Then Rij = LastRow
    With Sheets("reactietijden")
        .Range("s" & Rij) = storinggereeddatumgereed
        .Range("w" & Rij) = storinggereedbegintijd
        .Range("y" & Rij) = storinggereedeindtijd
        .Range("ax" & Rij) = storingsformuliergereed.TxtHerhaalStoring.Text
        .Range("ay" & Rij) = storingsformuliergereed.CmbbStoringGereedMonteur.Text
        .Range("az" & Rij) = storingsformuliergereed.storinggereedcode.Text
        .Range("ba" & Rij) = storingsformuliergereed.storinggereedomschrijving.Text
        .Range("bb" & Rij) = storingsformuliergereed.storinggereedcode1.Text
        .Range("bc" & Rij) = storingsformuliergereed.storinggereedomschrijving1.Text
    End With

    MsgBox "De storing is gereed gemeld"

 Application.ScreenUpdating = True
End Sub

Code:
Function RemoveOnCondition(sSheet As String, Condition As String, RowColOrCell As String) As Boolean

    Dim ToRemove As String
    ToRemove = FindOnSheet(sSheet, Condition, RowColOrCell)
    Select Case LCase(RowColOrCell)
        Case "rt"
            Sheets(sSheet).Range("A" & ToRemove).EntireRow.Delete xlShiftUp
        Case "c"
            Sheets(sSheet).Range("A" & ToRemove).EntireColumn.Delete xlShiftToLeft
        Case "rtc"
            Sheets(sSheet).Range(ToRemove).Value = ""
    End Select
End Function


Code:
Function FindOnSheet(sSheet As String, ByVal Zoek As String, RowOrCol As String) As String
            
    Dim Row, column As Long
    Dim FilledRows, RowCol As String
    FindOnSheet = -1
    FilledRows = Sheets(sSheet).UsedRange.Address
    With Sheets(sSheet).Range(FilledRows)
        Set c = .Find(Zoek, LookIn:=xlValues, MatchCase:=False)
        If Not c Is Nothing Then
            Row = c.Row
            col = c.column
            RowCol = c.AddressLocal
        End If
    End With

    If LCase(RowOrCol) = "rt" Then FindOnSheet = CStr(Row) ' Geeft als resultaat de Rij
  If LCase(RowOrCol) = "c" Then FindOnSheet = CStr(col) ' Geeft als resultaat de kolom
    If LCase(RowOrCol) = "rtc" Then FindOnSheet = RowCol ' Geeft als resultaat de Rij en kolom

End Function

overal waar rt staat was oorspronkelijk alleen een r, maar omdat er aan 2 voorwaarden voldaan moet worden heb ikzelf de t toegevoegd. Hopelijk kan iemand mij helpen zodat de ingevoerde velden op het userform in de juiste rij wordt geplaatst.
 
Laatst bewerkt:
Ik heb mijn vraag misschien niet helemaal duidelijk gesteld. Ik zal proberen het iets duidelijker te maken.
Ik heb een formulier waar ik een storing meld. Hier voer ik enkele gegevens in (filiaalnr, ordernr, kassanr, soort storing, datum enz.) De storing wordt weggeschreven naar het werkblad "openstaande storingen" en het werkblad "reactietijden".
Met een ander formulier kan ik de storing gereed melden. Hier voer ik dan gegevens in als datum reparatie, begin- en eindtijd. Deze gegevens worden dan bijgeschreven in de juiste regel (rij) van het werkblad "reactietijden".
Het probleem is nu echter het verwijderen van de juiste regel in het werkblad "openstaande storingen". Voorheen werd de juiste regel opgezocht aan de hand van het ordernummer. Het kan echter ook voorkomen dat er dezelfde ordernummers in staan, dus moet er ook worden gekeken naar het kassanummer.

Hoe kan ik de code in de bovenstaande post aanpassen dat de juiste regel wordt opgezocht aan de hand van 2 voorwaarden (dus ordernummer én kassanummer)?

Alvast bedankt voor jullie hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan