Error bij sluiten UserForm

Status
Niet open voor verdere reacties.

WillemVO

Nieuwe gebruiker
Lid geworden
28 jan 2016
Berichten
3
Hallo allemaal, ik ben een beetje aan het klunzen geslagen met VBA voor SolidWorks.
Op zich is alles prima werkend, even een korte toelichting: Ik heb meerdere CAD modellen welke ik aan kan passen met verschillende inputforms. Deze input werkt prima. Nu ben ik bezig met het automatisch selecteren van de userforms behorende bij een bepaald document. Dit heb ik op de volgende manier opgelost:

Code:
Dim SwApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim FileName As String
Dim name As Double

Sub main()
Set SwApp = _
Application.SldWorks
Set Part = SwApp.ActiveDoc

FileName = Part.GetTitle

If FileName = "Bicycle Rack.SLDASM" Then
[U][B]LoadForm BicycleRack[/B][/U]
End If
If FileName = "Longboard.SLDASM" Then
[B][U]LoadForm Longboard[/U][/B]
End If

End Sub

Sub LoadForm(name)
Load name
name.Show
End Sub

In de basis werkt bovenstaande code prima. Afhankelijk van het open document wordt er dus een ander form geopend.
Hier gaat het fout: Als het betreffende inputform wordt afgesloten met het kruisje, krijg ik een error:
Code:
Run-time error '13':
Type Mismatch
Debugging geeft aan dat de fouten in de dikgedrukte code zitten (1 van de twee, ligt er dus aan welk form is geactiveerd)
Ik denk dat het gaat om iets simpels, omdat ik eigenlijk zelf maar wat heb geklust.

Al het advies is welkom, en als ik wat meer bestanden mee moet leveren hoor ik dat graag!
 
Welke code heb je nog meer in het formulier staan? Het kruisje aanklikken kan verschillende procedures aanroepen. Bv
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

En als daar wat staat wat niet overeen komt met iets dan kan dat een error opleveren.
 
Dank voor je antwoord. Ik heb in mijn formulier niks staan wat betrekking heeft tot het kruisje. Is het verstandig om dat wel te doen?

En dit snap ik niet:
En als daar wat staat wat niet overeen komt met iets dan kan dat een error opleveren.
 
Het lijkt wel driebanden; dit lijkt me voldoende

Code:
Sub main()
  select case ActiveDoc.Gettitle
  case "Bicycle Rack.SLDASM" 
      BicycleRack.show
  case "Longboard.SLDASM" 
      Longboard.show
  end select
End Sub
 
En dit snap ik niet:
Dat lijkt mij juist het probleem. Als je op het kruisje klikt en er volgt een foutmelding dan gebeurt er blijkbaar iets waar je geen inzage over geeft. En dan is een oplossing verzinnen wel erg lastig. Plaats het bestandje eens. Misschien dat het wat meer duidelijkheid geeft waarom je de error krijgt.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan