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

Gegevens uit een werkblad overschrijven

Status
Niet open voor verdere reacties.

toverkamp

Gebruiker
Lid geworden
11 sep 2006
Berichten
403
Beste forumleden. Ik probeer mijn probleem even zo duidelijk mogelijk uit te leggen:

Ik heb 2 formulieren. Met 1 formulier worden storingen gemeld. Deze storingen worden opgeslagen in 2 werkbladen, namelijk "reactietijden" en "openstaande storingen". Met het andere formulier moeten de storingen worden gereedgemeld. Dit gebeurd d.m.v. het opvragen van een ordernummer uit het werkblad "openstaande storingen" en aan de hand daarvan komen de gegevens tevoorschijn.
Het probleem is echter dat wanneer ik de storing wil gereed melden de gegevens uit het werkblad reactietijden wil overschrijven met de gegevens die ik invul in het tweede formulier. Dus de gegevens moeten niet op een nieuwe regel worden opgeslagen. Tevens moeten de gegevens uit het werkblad "openstaande storingen" worden verwijderd wanneer de storing is gereedgemeld.

Ik hoop dat iemand mij hiermee kan helpen, want ik ben er al enkele dagen mee bezig, maar kom er niet uit...

Ik heb een bestandje toegevoegd.
 

Bijlagen

Hoi toverkamp,

Met onderstaande functie kun je een rij, kolom of cell terug krijgen.

De Range (vet gedrukt) kun je zelf wel aanpassen (denk ik:rolleyes: )
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
    
    Sheets(sSheet).Select
    Range("A1").Select
    [B]FilledRows [/B]= Range(Selection, ActiveCell.SpecialCells(xlLastCell)).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) = "r" 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) = "rc" Then FindOnSheet = RowCol ' Geeft als resultaat de Rij en kolom

End Function

Deze functie kun je denk ik voor zowel het overschijven als voor het verwijderen gebruiken
 
Spiderman,

De code die je hebt gegeven snapte ik niet echt. Ik heb nu uit een ander topic wat codes gehaald van Demeter. Maar nu kom ik nog niet echt uit.
Ik heb een module aangemaakt die de gegevens moet opslaan (wat nog niet wil lukken). Deze moet de gegevens overschrijven die al in het werkblad "reactietijden" staan.
Ik zal eerst beschrijven wat er precies de bedoeling is:
1) Je klikt op de commandbutton "meld storing gereed". Nu opent zich een formulier waar je een ordernummer kan aanklikken in een combobox. Deze ordernummers met de bijbehorende gegevens worden opgehaald uit het werkblad "openstaande storingen".
2) Wanneer de gegevens tevoorschijn komen, kun je de storing gereed melden. Je moet nu eerst nog de datum, tijd en omschrijving van de storing invullen.
3) Wanneer je de gegevens (2) hebt ingevuld klik je op de commandbutton "opslaan". Dit werkt nog niet. Het is dus de bedoeling dat alle gegevens die je in het formulier hebt ingevuld worden opgeslagen in het werkblad "reactietijden". De gegevens moeten de oude gegevens overschrijven die overeenkomen met deze gegevens. Vervolgens moeten de gegevens uit het werkblad "openstaande storingen" worden verwijderd, omdat de storing immers is gereed gemeld.

Ik hoop dat iemand mij hiermee kan helpen! Alvast bedankt!
 

Bijlagen

Spiderman dat is inderdaad wat ik bedoel!!:thumb: Helemaal super!
Ik heb de code iets aangepast, maar dat heeft niets te maken met een probleempje wat ik ben tegengekomen. De begin- en eindtijd slaat hij op als :12 terwijl dit dit tijd moet zijn die je invoerd in de 2 textboxen. Ik heb in de module nog wel staan:
storinggereedbegintijd = storingsformuliergereedstoringgereedtijdrepuur & ":" & storingsformuliergereedstoringgereedtijdrepmin
storinggereedeindtijd = storingsformuliergereed.storinggereedeindtijdrepuur & ":" & storingsformuliergereed.storinggereedeindtijdrepmin

storinggereedbegintijd = Format(storinggereedbegintijd, ":mm")
storinggereedeindtijd = Format(storinggereedeindtijd, ":mm")

Klopt er dan misschien toch iets niet aan deze code?

En dan heb ik nog een vraag:
in de module heb je de volgende code toegevoegd:
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) = "r" 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) = "rc" Then FindOnSheet = RowCol ' Geeft als resultaat de Rij en kolom

End Function

Je hebt hier als sheet aangegeven "sSheet". Heeft deze code dan wel nut, want de sheet bestaat namelijk niet?

In ieder geval al hardstikke bedankt, ik kan weer een mooi stukje verder:thumb: :D :thumb: :D
 
Hoi toverkamp,

sSheet bestaat wel :)

Als je kijkt bij Sub storinggereed_module() dan zie je daar de volgende regels staan.

Code:
Dim Rij As Integer
    Rij = FindOnSheet("reactietijden", storinggereedordernummer, "r")

Wat deze sud doen is het volgende:

Rij wordt van tabblad 'reactietijden' , het storinggereedordernummer, en geef het rijnumer terug.

Met deze module kun je dus van elke tabblad in je project, de rij (of kolom of cell) geretouneerd krijgen, die aan een bepaalde waarde voldoet.

Je tijd format zou ik zo oplossen

Code:
    [B]Dim Tempstoringgereedbegintijd As Date
    Dim Tempstoringgereedeindtijd As Date[/B]
    'wat gaan we opslaan
    storinggereeddatmelding = storingsformuliergereed.storinggereeddatmelding.Value
    storinggereedtijdmelding = storingsformuliergereed.storinggereedtijdmelding.Value
    storinggereedfiliaalnummer = storingsformuliergereed.storinggereedfiliaalnummer.Value
    storinggereedkassanummer = storingsformuliergereed.storinggereedkassanr.Value
    storinggereedordernummer = storingsformuliergereed.storinggereedordernummer.Value
    storinggereedidnummer = storingsformuliergereed.storinggereedidnummer.Value
    storinggereeddatumgereed = storingsformuliergereed.storinggereeddagrep & "-" & storingsformuliergereed.storinggereedmaandrep & "-" & storingsformuliergereed.storinggereedjaarrep
    storinggereedsoortstoring = storingsformuliergereed.storinggereedsoortstoring.Value
    [B]Tempstoringgereedbegintijd[/B] = storingsformuliergereed.storinggereedtijdrepuur & ":" & storingsformuliergereed.storinggereedtijdrepmin
    [B]Tempstoringgereedeindtijd[/B] = storingsformuliergereed.storinggereedeindtijdrepuur & ":" & storingsformuliergereed.storinggereedeindtijdrepmin
    storinggereedcode = storingsformuliergereed.storinggereedcode.Value
    storinggereedomschrijving = storingsformuliergereed.storinggereedomschrijving.Value
    
    storinggereeddatumgereed = Format(Tempstoringgereedbegintijd, "mm-dd-yy")
    storinggereedbegintijd = [B]FormatDateTime(Tempstoringgereedbegintijd, vbShortTime)[/B]
    storinggereedeindtijd = [B]FormatDateTime(Tempstoringgereedeindtijd, vbShortTime)[/B]


Suc6
 
Bedankt voor de uitleg spiderman:D
Het werkt nu in principe goed, alleen wanneer je een storing meldt (dus niet gereed meld), dan slaat hij de gegevens op op 2 werkbladen. Dit gaat allemaal goed, maar op het werkblad "openstaande storingen" worden de kolommen G, AA, AP en AY niet naast de andere gegevens weggeschreven maar een aantal regels eronder.

Voorbeeld.
Datum, tijd melding, Filiaalnummer en ordernummer worden weggeschreven op regel 1 en de kolommen G (kassa-nr), AA (soort storing), AP (beschikbaar) en AY (ID-nr) worden weggeschreven op regel 6.

Ik weet niet waar het aan ligt, misschien dat iemand anders kan zien waar de "fout" zit?
 

Bijlagen

Hoi toverkap,

Zoek de 2 verschillen:
Code:
Worksheets("openstaande storingen").Range("b" & [COLOR="red"]legeregel1[/COLOR]) = datummelding1
    Worksheets("openstaande storingen").Range("e" & [COLOR="red"]legeregel1[/COLOR]) = tijdmelding1
    Worksheets("openstaande storingen").Range("f" & [COLOR="red"]legeregel1[/COLOR]) = CInt(filiaalnummer)
    Worksheets("openstaande storingen").Range("h" & [COLOR="red"]legeregel1[/COLOR]) = ordernummer1
    Worksheets("openstaande storingen").Range("ay" & legeregel) = idnummer1
    Worksheets("openstaande storingen").Range("aa" & legeregel) = soortstoring1
    Worksheets("openstaande storingen").Range("ap" & legeregel) = beschikbaar
    Worksheets("openstaande storingen").Range("g" & legeregel) = kassanummer1

Ik zal je en tip geven, het is niet de kleur :cool:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan