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

celwaarde aanpassen via VBA in bestaande afstandsformule (routeplanner)

Status
Niet open voor verdere reacties.

xinunix

Gebruiker
Lid geworden
28 dec 2017
Berichten
7
destination Afstand reistijd

zutphen
apeldoorn 22,3 00:32
hengelo 67,1 00:49
dusseldorf 153 01:44
7202CN 152 01:44
ruurlo 24,8 00:28
-1 #N/B
deventer -1 #N/B
-1 #N/B
-1 #N/B
-1 #N/B
-1 #N/B


Mijn probleem ligt in de cel boven deventer : doordat hier geen waarde staat rekent hij in de lijst afstand ook niet door.
Is er een manier om via mijn VBA code ervoor te zorgen dat hij automatisch in de lege cel de waarde van de cel erboven aanneemt??? In dit geval Ruurlo.
En deze dan niet weergeeft in cel???? onderstaand de code, bijvoegen bestand lukt om 1 of andere reden niet. u mag mij ook rechtstreeks mailen.
Elke hulp is welkom. Ben geen programmeur maar kan code redelijk lezen.
Code:
''''''''''''''''''''''''''''''''''
' Reisafstand berekenen
'
' start = startlocatie
' eind = eindlocatie
' vervoer = manier waarop te reizen
' eenheid = mogelijk in meters of kilometers
'
''''''''''''''''''''''''''''''''''

Public Function G_AFSTAND(start As String, eind As String, Optional vervoer As Variant, Optional eenheid As Variant) As Variant

Dim Verv As String
Dim Eenh As String
Dim Link As String
Dim Bestemming As String
Dim Mode As String
Dim Taal As String

   
''' Link opbouw '''
    Link = "https://maps.googleapis.com/maps/api/distancematrix/json?origins="
    Bestemming = "&destinations="
    Mode = "&mode="
    Taal = "&language=nl"

''' Controleren op waarde in vervoer '''
' Openbaar vervoer is een registratienummer voor nodig bij google '
    If IsMissing(vervoer) = True Or IsEmpty(vervoer) = True Then
        Verv = "driving"
    Else
        If vervoer > 2 Then
          Verv = "driving"
        Else
          Select Case vervoer
             Case 0: Verv = "driving"
             Case 1: Verv = "walking"
             Case 2: Verv = "bicycling"
          End Select
        End If
    End If

''' Eenheid display '''
    If IsMissing(eenheid) = True Or IsEmpty(eenheid) = True Then
        Eenh = 0
    Else
        Eenh = eenheid
    End If

''' Oproepen informatie '''
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URL = Link & Replace(start, " ", "+") & Bestemming & Replace(eind, " ", "+") & Mode & Verv & Taal
    objHTTP.Open "GET", URL, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    
''' Als POST tekst niet klopt '''
    If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo Error
    
''' Als eenheid in meters '''
    meters = Right(objHTTP.responseText, Len(objHTTP.responseText) - InStr(objHTTP.responseText, """value"" : ") - 9)
    
''' Als eenheid in kilometers '''
    kilometers = Right(objHTTP.responseText, Len(objHTTP.responseText) - InStr(objHTTP.responseText, """text"" : """) - 9)
    
''' Eindresultaat maken '''
    If Eenh = 1 Then
    G_AFSTAND = CDbl(Replace(Split(meters)(0), ".", ","))
    Else
    G_AFSTAND = CDbl(Replace(Split(kilometers, " km""")(0), ".", ","))
    End If
    Exit Function
    
''' Error uitgang '''
Error:
    G_AFSTAND = -1

End Function
 
Ik denk daar daar niet eens een wijziging in de code voor nodig is.
Plaats je document met bovenstaand voorbeeld hier eens.
 
Laatst bewerkt:
Klik op Ga geavanceerd en gebruik dan de paperclip.
 
heb ik gezien maar kan daar niets uploaden, hij pakt bestand niet. misschien door virusscanner?
zit op werk namelijk en die willen script bestanden nog wel eens blocken
 
Geen idee waarom dat niet zou werken.
 
miscchien even via email???? mijn emailadres is*
als u mij een bericht stuurt reply ik met het juiste bestand
 
Laatst bewerkt:
Doe jezelf een plezier en haal je email adres hier weg.
Je kan me mailen door op mijn naam te klikken.
Ik plaats dan wel je document hier.
 
Sla het bestand op als .xlsb i.p.v. .xlsm en plaats het dan.
 
Edmoor, dank!!
komt inderdaad door virusscanner, blocked macro enabled bestanden.

Nu hopen dat iemand mij hier bij kan helpen!
 
Niet met vba maar met een excel formule.
Als een niet te berekenen afstand een lengte van 1 geeft, pak dan de voorgaande afstand en anders de berekende afstand.

In cel C9
Code:
=ALS(G_AFSTAND(B8;B9)<>1;G_AFSTAND(B8;B9);C8)
Eventueel doorvoeren naar beneden en naar boven
 
Laatst bewerkt:
dank, echter rekent VBA met de gegevens uit kolom B en niet C.
Dus dit is helaas geen oplossing, als ik deze formule in C9 zet, rekent hij nog steeds niet door als ik deventer invul in B10.
Dit komt omdat de formule reisafsrtand kijkt naar B9 en B10, en in B9 staat niets.
Probleem zit hem dus in B9.
Deze cel zou automatisch bovenstaande cel moeten pakken in geval hij leeg is.
 
Deze cel zou automatisch bovenstaande cel moeten pakken in geval hij leeg is.
en wat zou dan in die bovenstaande cel moeten staan? een plaatsnaam? of een afstand?
 
plaatsnaam. heb al gekeken met =B8 en doortrekken naar beneden, maar staat vrij rommelig, krijg je complete lijst met zelfde plaats, tenzij je iets anders invoert en dan trek hij die het hele bestand weer door. Ik heb liever dat er niets zichtbaar is maar hij wel rekent met de waarde uit cel erboven, maar at zal wel niet kunnen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan