VBA: zoeken in kolom D (vanaf D8) naar het grootste nummer + 1

Status
Niet open voor verdere reacties.
Voor de geïnteresseerden.
Kon het toch niet laten en heb het UF wat aangepast. Je kan nu gebruik maken van de oude methode (km standen invullen bij begin en eind) of je kan enkel vertrek- en aankomstplaats invullen en de afstand wordt automatisch berekent. Je kan het zelfs verfijnen door de straatnamen (en nummers) ook in te vullen en dan automatisch te berekenen (geeft iets fijner resultaat).
Naargelang de methode die je gebruikt wordt het resultaat opgeslagen.
 

Bijlagen

  • Rittenadministratie(5).xlsm
    99,6 KB · Weergaven: 28
Aangenaam verrast

Beste Rudy,

Ik was aangenaam verrast toen ik toch nog even keek of er wellicht nog een reactie was (krijg ik helaas geen mail meer van). Maar wat heb je dat ontzettend kundig gemaakt. Ik ben gelijk aan het experimenteren gegaan.

Wat mij wel opviel was wanneer je één kenteken in het werkblad "Data" zet (dus de rest weghaalt) dat het systeem dan een foutmelding geeft. In mijn geval heb ik één voertuig waar ik mijn zakelijke ritten in maak, wellicht dat ik in de toekomst ook zo nu en dan een voertuig huur.

Ik vind jouw idee van de straatnaam zo goed dat het misschien ook mooi zou zijn dat je deze later kan wijzigen, de straatnamen staan nu niet vermeld in het overzicht van de UF. Zou het mogelijk zijn denk je dat om de alternatieve route ook mee te nemen?

Tot slot zou het ook super zijn dat hij - net zoals bij "Plaats van vertrek" ook de "straat van vertrek" standaard vermeld.

Mocht het veel werk zijn dan laten we het zo hoor, ben hier al heel erg blij mee.

Nogmaal heel hartelijke bedankt.

Groeten, Robert
 
Hi Rudi,

ik ben het helemaal eens met Robert heel knap gedaan. Zou je mischien een uitleg willen geven hoe dat code technisch werkt.

alvast bedankt
Rob
 
@ Robert
Hiervoor moet je wijzigingen aanbrengen op het werkblad, userform alsook moet alle code om de gegevens te laden, op te slaan, te wijzigen aangepast worden.
Dit zal niet voor morgen zijn. Zal proberen in de loop van volgende week iets klaar te hebben.

@ Rob
Code:
Public Function GoogleMapsXMLDistance(rngOrigin As String, rngDestination As String) As Double
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" & rngOrigin & "&destination=" & rngDestination & "&alternatives=false&units=metric&sensor=false", False
    .send
    GoogleMapsXMLDistance = CDbl(.responseXML.SelectSingleNode("//leg/distance/value").Text) / 1000 'am_2012
  End With
End Function
Bovenstaande code maakt verbinding met GoogleMaps, waarbij je de argumenten van vertrek en aankomst meegeeft.
De berekening wordt gemaakt door GoogleMaps en de resultaten worden uit de XML-pagina gehaald.
Dit is in grote lijnen wat er gebeurt.
 
Hoi Rudi,

Is geen enkel probleem dat het later wordt, ik snap heel erg goed dat dit veel werk met zich mee brengt en vind het al super dat je het Überhaupt wil doen.

Omdat ik geen mail krijg wanneer iemand in deze topic een reactie geeft, zal ik vanaf volgende week zo nu en dan even kijken of jij gereageerd hebt.

Alvast een goed weekend.

Groeten,
Robert
 
Hoi Rudi,

Heb jij nog een wijziging aan kunnen brengen? Als het niet lukt begrijp ik dat ook heel goed hoor.

Groeten, Robert
 
Mea culpa :eek:

Eerlijkheidshalve moet ik bekennen dat ik het gewoonweg vergeten was. Ik denk dat ik alles aangepast heb wat nodig was maar test het zelf eens uitgebreid en laat dan maar weten waar het nog fout loopt.
Nogmaals mijn verontschuldigingen voor het wachten.:eek:
 

Bijlagen

  • Rittenadministratie(6).xlsm
    98,8 KB · Weergaven: 28
Dag Rudi,

Heel erg bedankt dat je dat alsnog wou doen. Ik krijg helaas geen melding via de mail wanneer iemand reageert op mijn oproep, vandaar dat ik nu wat laat reageer en daar wil ik dan graag mijn verontschuldiging voor aanbieden.

Volgens mij ziet het er perfect uit, ik heb het omwille van de tijd nog niet tot in de treure kunnen testen. Het enige wat mij is opgevallen is dat je minimaal twee voertuigen (kentekens) moet invoeren (in sheet "Data"), bij 1 voertuig (kenteken) krijg ik een foutmelding.

Zie je een mogelijkheid om dat te wijzigen?

Nogmaals heel erg bedankt.

Groeten, Robert
 
Beste Rudi,

Helaas heb ik nog niets vernomen.

Misschien dat je op de volgende vraag gauw een antwoord kan geven. Ik wil nl. de codes graag zelf begrijpen.

Mijn eerste vraag is:

Hoe moet ik onderstaande code wijzigen wanneer ik de gegevens in sheet "Data" 10 regels naar onderen wil zetten?
Code:
        .List = Sheets("Data").Cells(1).CurrentRegion.Columns(2).Offset(1).SpecialCells(2).Value
        .Value = kenteken.List(1, 0) 'positie eerste regel
    End With
    ritcode.List = Sheets("Data").Cells(1).CurrentRegion.Columns(1).Offset(1).SpecialCells(2).Value
    vertrek.Text = GetKey

Mijn tweede vraag is:
Welk deel van de code is verantwoordelijk voor het gedeelte dat de plaatsnaam (wanneer deze meerdere malen is ingevoerd) standaard in de UF zet. Ik wil dit nl. ook voor het adres maken.

Ik hoop dat je nog heel even de tijd hebt om hier antwoord op te geven.

alvast heel erg bedankt.

M.vr.gr.
Robert Smidt
 
Code:
Sub UserForm_Initialize()
    Lijstbestemmingen
    FillListbox
    TextBox1.Value = ListBox1.ListCount + 1
    datum = FormatDateTime(Date, 2)
    With kenteken
        .List = Sheets("Data").Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).row).Value
        .ListIndex = 0
    End With
    ritcode.List = Sheets("Data").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).row).Value
    vertrek.Text = GetKey
    CommandButton4.Visible = False
End Sub

Robert,

Gebruik bovenstaande, dan is je probleem minimaal 2 kentekens te moeten invullen ook ineens opgelost. Wil je 10 rijen naar onder beginnen wijzig dan de A2 en B2 in de rij waarop je wil beginnen.

Voor je 2de vraag moet je maar eens kijken bij de functie GetKey helemaal onderaan de code.
 
Laatst bewerkt:
kenteken.listindex=0 i.p.v. kenteken.Value = kenteken.List(0, 0) ?
 
Het resultaat is toch hetzelfde. :p:p
 
Een listbox/combobox kan een 1-dimensionele of 2-dimensionale array bevatten.
In het ene geval moet je dan .value=.List(0) gebruiken, in het andere .Value=.list(0,0); in beide gevallen werkt .Listindex=0.
Als het resultaat het enige criterium is kan het nog veel gecompliceerder geschreven worden :rolleyes:
 
Beste Rudi,

Gedurende een lange periode uitproberen lukt het mij niet om het adres (net zoals plaats van vertrek) standaard in de userform te krijgen. Ik heb hier de volgende code aan toegevoegd maar werkt helaas niet:

Code:
Private Function GetKeys()
    With Sheets("Rittenadministratie")
        sq = .Cells(.Rows.Count, "J").End(xlUp).Offset(-5).Resize(5) 'Standaard straatnaam wanneer deze 5 keer wordt genoemd
    End With
    With CreateObject("Scripting.Dictionary")
        .CompareMode = TextCompare
        For i = 1 To UBound(sq)
            If .Exists(sq(i, 1)) Then
                .Item(sq(i, 1)) = .Item(sq(i, 1)) + 1
            Else
                .Add sq(i, 1), 1
            End If
        Next
        For Each key In .Keys
            If .Item(key) = Application.Max(.Items) Then
                GetKeys = CStr(key): Exit Function
            End If
        Next
    End With
End Function

Bovendien lukt het mij niet om de lay-out in de sheet "Data" naar de 15e positie te verplaatsen. Het probleem zit in het feit dat het kenteken en ritcode popup meerdere lege regels laat zien alvorens de kentekens en de ritcodes zichtbaar worden. Welk stuk van de code is hiervoor verantwoordelijk?

Graag zie ik een antwoord tegemoet.

Met vriendelijke groet,
Robert
 
Hier kan je weer mee verder.
 

Bijlagen

  • Rittenadministratie(7).xlsm
    98 KB · Weergaven: 16
Rudi,

Heel hartelijk bedankt.

Ik heb even gestoeid met het programma en heb een paar kleine puntjes:
- Wanneer ik alle ritten verwijder en opnieuw wil beginnen, geeft deze een foutmelding, er moet minimaal één rit in staan. Kan dat ook gewijzigd worden?
- Het systeem geeft een melding wanneer de straatbestemming en bestemming niet gevuld is. Deze foutmelding (de andere zijn overigens goed) wil ik er graag uit hebben omdat het soms volstaat met alleen: het kenteken, datum, ritcode, ritnummer, beginstand, eindstand en totaal.

Wederom alvast heel erg bedankt.

Groeten, Robert
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan