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

Fout 13 tijdens uitvoering 'Typen komen niet overeen'. Ik kan dit niet vinden, Help!

Status
Niet open voor verdere reacties.

vibor

Gebruiker
Lid geworden
25 mrt 2016
Berichten
45
Hoi,

Ik heb een formulier met veel keuze menu's en invul velden. Als ik handmatig 2 onder elkaar liggende cellen selecteer en leeg maak (Delete knop) komt deze fout, los van de plaats in het document. Als ik losse velden leeg maak, of met de cntr knop meerdere uit elkaar staande velden leegmaak gaat het goed.
De fout wordt gegeven op de 3e regel van een stukje programma waar ik G6 uitlees en aan de hand van die waarde een deel van het formulier afdek. Het afdekken doe ik met een afbeelding (een kleurvlak met dezelfde kleur als de achtergrond). Eenvoudiger zou het zijn om dit met een voorwaardelijke opmaak te doen, maar die dekt geen keuze menu's af. Vandaar deze oplossing die op zich goed werkt. In de bijlage het bestand.

De fout komt overigens niet als de ontwerpmodus aan staat.


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$6" And Target = "6" Then
ActiveSheet.Shapes.Range(Array("Object 324")).Visible = True
Else
ActiveSheet.Shapes.Range(Array("Object 324")).Visible = False
End If

If Target.Address = "$G$6" And Target = "5" Then
ActiveSheet.Shapes.Range(Array("Object 326")).Visible = True
Else
ActiveSheet.Shapes.Range(Array("Object 326")).Visible = False
End If

If Target.Address = "$G$6" And Target = "4" Then
ActiveSheet.Shapes.Range(Array("Object 327")).Visible = True
Else
ActiveSheet.Shapes.Range(Array("Object 327")).Visible = False
End If

If Target.Address = "$G$6" And Target = "3" Then
ActiveSheet.Shapes.Range(Array("Object 328")).Visible = True
Else
ActiveSheet.Shapes.Range(Array("Object 328")).Visible = False
End If

If Target.Address = "$G$6" And Target = "2" Then
ActiveSheet.Shapes.Range(Array("Object 329")).Visible = True
Else
ActiveSheet.Shapes.Range(Array("Object 329")).Visible = False
End If
If Target.Address = "$G$6" And Target = "1" Then
ActiveSheet.Shapes.Range(Array("Object 330")).Visible = True
Else
ActiveSheet.Shapes.Range(Array("Object 330")).Visible = False
End If
End Sub


Weet iemand waarom dit fout gaat?

Grtr. Vibor
 

Bijlagen

Als je Target uit meerdere cellen bestaat, dan zal Target = "....." inderdaad een fout geven.
Begin je macro daarom met:
Code:
If Target.Count = 1 Then

End If
 
Laatst bewerkt:
Ideetje @emields?

Code:
Rows("30:209").Hidden = True
     Select Case [g6].Value
        Case 1 To 7
          Rows("1:" & (Target.Value - 1) * 30 + 29).Hidden = False
     End Select

Of:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("g6")) Is Nothing And Target.Count = 1 Then
 If Target > 0 And Target < 8 Then
     Rows("30:209").Hidden = True
     Rows("1:" & (Target.Value - 1) * 30 + 29).Hidden = False
 End If
End If
 
Is dit geen betere oplossing? en verwijder alle nutteloze macro's.

Ja dat klopt Emields, maar het probleem bij het verbergen van rijen is dat de keuze menu's niet verborgen worden, in jouw bestandje zie je ook nog dat een regel blijft hangen.
Als die ook nog kan wegvallen is dit een prachtige oplossing.
Zou dat kunnen denk je?
Bedankt zover voor het mee denken en doen.

Grt. Vibor
 
dat kan je oplossen door geen keuze menu's te gebruiken maar gegevensvalidatie
 

Bijlagen

Laatst bewerkt:
Hoi Emields,

Dat zou mooi zijn en had ik ook al aan gedacht maar bij gegevens validatie moet iemand iets intikken, het is juist de bedoeling dat ze een keuzelijst krijgen en de waarde dus niet zelf hoeven te verzinnen, maar dat kiezen wat ik aangeef.
Het zou mooi zijn als gekoppelde keuze menu's weg vallen als de cel waar hij mee verbonden is verborgen wordt.

Grt. Vincent
 
Klik eens op zo'n cel en bewonder de drop-down die dan verschijnt... :-P
 
Excuus, ik had niet goed gekeken. Het staat ook exact over de oude pull-down, en is een mooie oplossing die ik nog niet kon.

Voor de uitleg had ik het bestand wat uitgekleed, maar blijkbaar had ik dat niet moeten doen. De reden van de manier van het afdekken komt niet alleen door de gebruikte pull-down menu's maar ook door afbeeldingen waarmee ik de installatie wil visualiseren moeten wegvallen.
Bij de onzichtbaar maken van de regels worden de plaatjes op een rij geplaatst want die worden niet mee afgedekt. Zie voorbeeld bestand.
Is daar nog iets op te verzinnen?

Grt. Vibor
 

Bijlagen

Als je Target uit meerdere cellen bestaat, dan zal Target = "....." inderdaad een fout geven.
Begin je macro daarom met:
Code:
If Target.Count = 1 Then

End If

Hoi Conseclusie,

Met deze toevoeging is het idd stabiel geworden ThX.
Met de andere voorstellen kan ik het bestand mogelijk nog vereenvoudigen.
In ieder geval weer wat geleerd. (maar daar ben ik dan ook een Junior voor :-) )

Heel veel dank
Grt. Vibor
 
Oh jee, toch nog een probleempje waar ik al weer enige uren in gestopt heb en er niet uitkom:
het toevoegen van 'If Target.Count = 1 Then' werkt wel stabiel, maar als ik nu een willekeurig invulveld bewerk, vallen alle afdekkingen weg. De hele sub wordt dus ongedaan gemaakt.
Is daar nog een oplossing voor?
Bij voorbaat dank.

Grt. Vibor
 
Plaats het bestand dan maar weer even en deze keer graag zonder koppelingen naar een extern bestand.

Code:
If Not Intersect(Target, Range("g6")) Is Nothing Then
zorgt ervoor dat de code alleen uitgevoerd wordt als je G6 wijzigt.
 
Geen antwoord op de vraag, maar ik zie dit herhaaldelijk voorkomen.

Met een change-event hoef je geen activesheet te gebruiken.
De code staat immers in het blad van toepassing en is het actieve blad.


De rode tekst is dus totaal overbodig.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Not Intersect(Target, Range("g6")) Is Nothing Then
[COLOR=#ff0000]ActiveSheet.[/COLOR]Rows("30:209").Hidden = True
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan