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

foutmelding 13 typen niet overeen

Status
Niet open voor verdere reacties.

Gijsbert1960

Gebruiker
Lid geworden
5 jul 2017
Berichten
140
Hallo Allemaal

Ik heb een code uit bijgevoegd bestand in een andere map geplaatst en deze werkt hier niet. Ik krijg de melding typen komen niet overeen en dan is num = Selection.Value geel. Ik gebruik dit voor reisplanner, om uit meerdere route's te kunnen kiezen. Hij zoekt op bv de naam Amsterdam Eurotank - Maastricht Lukoil en geeft da bv 2 route's en na kiezen welke route haalt hij uit een ander blad de gegevens bij die route op.
De code staat hieronder en in de map macro staat hij als Module5.ophalen en niet als ophalen. De code is nog van Cobbe dus misschien dat het is dat hij in de nieuwere versie van excel problemen geeft waar ik niet uitkom met mijn beperkte kennis en is er iemand die me kan zeggen wat er aan de hand is.


[/CODE]Sub ophalen()
Dim rij As Long, firstrij As Long, c As Variant, n%, num%, naam$, rng As Range
Application.ScreenUpdating = False
Sheets("invulblad").Select
Range("B7:J12").ClearContents
ActiveSheet.Range("B4").Select
num = Selection.Value
naam = Selection.List(num)
Sheets("Gegevenslijst").Select
Set rng = Range("A2: A" & Range("A65536").End(xlUp).Row)
n = 7
Set c = rng.Find(naam, LookIn:=xlValues)
If Not c Is Nothing Then
firstrij = c.Row
Do
rij = c.Row
With Sheets("invulblad")
.Cells(n, 2).Value = Cells(rij, 1).Value
.Cells(n, 3).Value = Cells(rij, 2).Value
.Cells(n, 4).Value = Cells(rij, 3).Value
.Cells(n, 5).Value = Cells(rij, 4).Value
.Cells(n, 6).Value = Cells(rij, 5).Value
.Cells(n, 7).Value = Cells(rij, 6).Value
.Cells(n, 8).Value = Cells(rij, 7).Value
.Cells(n, 9).Value = Cells(rij, 8).Value
.Cells(n, 10).Value = Cells(rij, 9).Value
n = n + 1
If n > 13 Then MsgBox (" Tabel te klein! "): Exit Sub
End With
Set c = rng.FindNext(c)
Loop While Not c Is Nothing And c.Row <> firstrij
End If
Application.Run "Ga_Reisplan1"
End Sub
[/CODE]

M vr gr
Gijs


Bekijk bijlage Route namen.xls
 
Cobbe zal je niet meer helpen, die is al eventjes niet meer onder ons. Spijtig.

Num% is een type integer, vermoedelijk staat er in range("B4") iets dat geen getal is, een tekst, een fout, leeg, ... .
Stond daar een getal met cijfers na de komma, dan worden die weggelaten
 
Hallo Cow18

Ik weet dat Cobbe al een tijd geleden is overleden. De code is nog van het vorige forum.
In range("B4") staat Amsterdam Eurotank - Maastricht Lukoil en geen getal. Ik weet dus niet in wat ik moet veranderen maar denk in de volgende code de num maar in wat moet ik die veranderen.

Code:
num = Selection.Value
naam = Selection.List(num)

M vr gr
Gijs
 
Ik weet niet hoe dit vroeger werkte en je macro is ook eventjes anders dan in de bijlage.
Meer naar rechts, in de omgeving van AH18 staat er een besturingselement en een knop "refresh".
Vermoedelijk heb je die vroeger gebruikt in andere omstandigheden en aan de hand van een gemaakte keuze, een getal, de zoveelste bv, de 7e schreef je dan iets weg naar B4 en werkte de macro alles netjes af.
Dat is wat ik opmaak na een snelle inspectie.
Vermoedelijk is dat besturingselement in de vergetelheid of in ongebruik geraakt.
Klopt één en ander ?
 
Hallo Cow18

Dat klopt ik zal dat eens proberen maar zal dat later moeten doen daar we gaan varen. Ik laat dan wel weten wat er is. ik heb hier de % teken weggehaald en nu zit hij de naam maar zonder - ertussen en dan vindt hij ook niets.
Dim rij As Long, firstrij As Long, c As Variant, n%, num, naam$, rng As Range
Ik weet niet of dit aan te passen is.

M vr gr
Gijs
 
het lijkt me anders wel een vrij ingewikkelde constructie om enkel alle startplaatsen = B4 op te lijsten of wat is eigenlijk precies de oorspronkelijke bedoeling ?
Als het dat is, dan kan het vermoedelijk met de helft minder toeters en bellen.
 
Hallo Cow18

Als ik een reis ga beginnen moeten we een reisplan maken, bv bij Amsterdam Eurotank - Maastricht Lukoil heb je meerdere route's waar je dan uit kan kiezen. De route komt van een blad en vandaar uit zoekt hij via gier de mogelijke route's waar je uit kan kiezen. Die komen dan in invulblad te staan. Daar kies je uit en dan worden de andere gegevens van die route ingevuld. In het eerder bijgevoegde bestand maakte refrsh de listbox leeg maar nu heb ik in ("B4") een formule staan die de zoekroute geeft. Als je daar een route uit kolom A in A1 plakt en op invulblad op ophalen drukt werkt he wel zonder refresh te gebruiken

Ik heb in de code hieronder $ en % tekens weggehaalt daar geen foutmelding over. En krijg bij naam "Amsterdam Eurotank Maastricht Lukoil" te zien zonder min teken ertussen

Dim rij As Long, firstrij As Long, c As Variant, n%, num, naam, rng As Range

Bij de code hieronder is num in naam veranderd en gaf eerst op de 1e regel een fout nu krijg ik de foutmelding is de 2e regel geel en de melding van "Deze eigenschap of methode wordt niet ondersteunt door dit object" Ik weet alleen niet in wat ik naam moet veranderen of dat het minteken wel gezien wordt anders alle route's zonder minteken maken. Met Vert.zoeken krijg je alleen de 1e route te zien terwijl er 6 kunnen zijn. Een andere oplossing zou ik niet weten. Ik begrijp niet dat hij in he orginele bestand wel werkt en hier niet.
naam = Selection.Value
naam = Selection.List(naam)

M vr gr
Gijs
 
Hallo Cow18
Ik heb van de 2 regels "naam = Selection" gemaakt en nu krijg ik de melding syntaxisfout op de regel "Set rng = Range("A2:A65536).End(xlUp).Row" en de regel is nu met rode letters en vraagd een lijstscheidingteken of ) alleen welk teken mis ik dan

M vr gr
Gijs
 
Zo?
Code:
Set rng = Range("A2:A65536[COLOR="#FF0000"]"[/COLOR]).End(xlUp).Row
 
Hallo AD1957

Dan krijg ik de melding Typen komen niet met elkaar overeen.

M vr gr
Gijs
 
Code:
Set rng = Range("A2: A" & Range("A65536").End(xlUp).Row)
 
Hallo AD1957

Geeft nu geen foutmelding maar ziet nu met zoeken het min teken niet dus vult hem niet in op invulblad. Ik weet niet of dit in de formule aan te passen is anders bij 9000 regels het min teken weghalen de 1e regel werkt nu de andere 2 geven foutmelding
Dim rij As Long, firstrij As Long, c As Variant, n%, num, naam, rng As Range
Dim rij As Long, firstrij As Long, c As Variant, n%, num, naam$, rng As Range
Dim rij As Long, firstrij As Long, c As Variant, n%, num, naam%, rng As Range

M vr gr
Gijs
 
2 kleine wijzigingen :
* de macro "ophalen2" ipv "ophalen" (die laatste staat er wel nog in, maar best niet meer gebruiken)
* in tabblad "gegevenslijst" een event-macro voor dubbelklik, dus dubbelklik ergens op een cel in die A-kolom.
Daardoor wordt de inhoud van die cel naar A1 gekopieerd en wordt de macro "ophalen2" aangeroepen.
Snel en eenvoudig.
(ook nog option explicit bovenin vervangen door option compare text en onderin de lijst wat dubbels toegevoegd van Andernach E Doetsch - Rotterdam BP 6e Pet)
 

Bijlagen

Hallo Cow18

Ik heb hem gauw even bekeken en ziet er goed uit. Ik ga morgen er mee aan de slag om het in mijn bestaand bestand te zetten. Alvast bedankt Cow18 en AD1957 voor de gegeven oplossing en meedenken ik laat weten of het gelukt is. Nu even varen tot vannacht 03:00 daarna even slapen. Het zal dus niet vroeg zijn eer ik het laat weten.

M vr gr
Gijs
 
Kom op Gijs, je vaart op de Tresco met een beetje kennis van zaken en toch niet op Excel.
wel leuk dat je dit doet, steeds wat nieuws in Excel verzinnen.

Groetjes,
Frits
 
HalloCow18

Ik heb hem met succes kunnen overzetten in mijn bestand. Kreeg eerst wel foutmelding Een variable is niet gedefineerden met zoeken voor oplossing hier, heb ik het aangepast met Dim en na 4x die foutmelding werkte het. De code is nu zoals hier geworden.

Code:
Sub Ophalen2()
   Dim mijnroute, arr, dict, i
   mijnroute = Sheets("invulblad").Range("B4").Value   'gekozen vertrekpunt & aankomst

   arr = Sheets("gegevenslijst").UsedRange.Resize(, 9)   'alle routes
   Set dict = CreateObject("scripting.dictionary")   'aanmaak van dictionary
   For i = 2 To UBound(arr)                      'alle routes aflopen
      If arr(i, 1) = mijnroute Then              'route = mijn route
         dict.Add dict.Count, Application.Index(arr, i, Array(1, 2, 3, 4, 5, 6, 7, 8, 9))   'toevoegen aan dictionary
      End If
   Next

   With Sheets("invulblad").Range("B7:J12")      'uitvoerbereik
      .ClearContents                             'leegmaken
      If dict.Count Then .Resize(Application.Min(dict.Count, .Rows.Count), UBound(arr, 2)).Value = Application.Index(dict.Items, 0, 0)   'resultaten wegschrijven
   End With
Application.Run "Ga_Reisplan1"
End Sub

U Hartelijk dank voor de oplossing en AD1957 voor zijn meedenken. En formatfrits ik vaar op tresco maar we moeten een reisplan apart maken met wat geladen of leeg van, welke route met namen vaarwater en afstanden de te gebruiken marifoonkanalen enz.
en dat gebeurt nu automatisch dus scheelt veel schrijfwerk.

M vr gr
Gijs
 
(ook nog option explicit bovenin vervangen door option compare text
ik had er naar gerefereerd, maar misschien had je het niet zo snel door.

* Geen "Option explicit" bovenaan wil gewoon zeggen dat je het niet nodig vindt om iedere variabele vooraf te declareren. Vroeger was ik daar vrij fanatiek in, nu totaal niet meer. Gooi bovenin die regel overboord en dan hoefde die 4 declaraties in die DIM niet meer.
Wat is het beste ? Daar kunnen we nog een boompje over op zetten.

* die "option compare text" anderzijds, dat is om toch te maken dat "amsterdam" en "AMSTERDAM" als 1 en dezelfde dorp aanzien worden.
Had ik het goed geraden, dat je van Rotterdam was ?
 
Laatst bewerkt:
Hallo Cow18
Ik weet niet hoe je Option explicit of option compare text bovenin maakt dus met dim opgelost. Ik heb het een paar maal geprobeerd en het werkt perfect. Morgen ga ik met schip naar rotterdam en reisplan daarvoor is op de laadgegevens na klaar. Ik heb hier slecht internet maar als ik in rotterdam ben en je wilt het eens zien dan stuur je maar een Pb dan kun je het zien via teamviewer. Ik kom niet van rotterdam maar Tiel. Nogmaals Hartelijk Dank

M vr gr
Gijs
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan