Announcement

Collapse
No announcement yet.

CustomDocumentProperties als Integer / value

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CustomDocumentProperties als Integer / value

    Servus Community,

    ich bin gerade am verzweifeln. Versuche mit CustomProperties ein Integer Wert
    festzulegen. Dieser soll je nach Userformsteuerung sich ändern, so dass ich mit diesen Wert später rechnen kann.

    Wenn ich die Userform öffne kommt "Laufzeitfehler 5 Ungültiger Prozeduraufruf oder ungültiges Argument". Ich weiß aber, das ich das so ähnlich schon mal gelöst hatte.

    Code:
    Sub UserForm_Activate()
    Dim AnZahl As Integer
     AnZahl = ActiveWorkbook.CustomDocumentProperties("Anz").Value
     
     Select Case AnZahl
     Case 1
     UgH.Opt = True
     
     Case 2
     UgH.Opt = False
     End Select
    End Sub
    
    Sub CMD_CLOSE_click()
    UgH.Hide
    
    If UgH.Opt = True Then
     ActiveWorkbook.CustomDocumentProperties("Anz").Value = 1
    Else
     ActiveWorkbook.CustomDocumentProperties("Anz").Value = 2
    End If
    Cells(Anz, 3).Select
    End Sub

    Evtl. hat ja jemand eine Idee :?: wäre sehr dankbar.

    Viele Grüße
    Martin
    Attached Files

  • #2
    Das Problem tritt auf, weil die benutzerdefinierte Eigenschaft noch nicht definiert ist.

    Ich habe in meinen Vorlagen diese Eigenschaft immer zunächst mal 'ganz normal' (Datei / Eigenschaften -> Hinzufügen) angelegt.
    Danach klappt der Zugriff wie von dir programmiert.

    Mit CustomDocumentProperties.Add() kann man die Eigenschaft auch per VBA anlegen.
    Vorher ggf. mit foreach prüfen, ob die schn gibt (2. Aufruf)

    Grüße
    Tino

    Code:
    Sub UserForm_Activate()
    Dim AnZahl As Integer
    Dim dp As DocumentProperty
    Dim gefunden As Boolean
     
     gefunden = False
     
     For Each dp In ActiveWorkbook.CustomDocumentProperties
        If dp.Name = "Anz" Then
            gefunden = True
            Exit For
        End If
     Next dp
     
     If Not gefunden Then
        ActiveWorkbook.CustomDocumentProperties.Add "Anz", False, msoPropertyTypeNumber, 0
        AnZahl = 0
     Else
        AnZahl = ActiveWorkbook.CustomDocumentProperties("Anz").Value
     End If
     
     Select Case AnZahl
     Case 1
     UgH.Opt = True
     
     Case 2
     UgH.Opt = False
     End Select
    End Sub
    Zuletzt editiert von tinof; 09.03.2009, 20:26.
    Ich habs gleich!
    ... sagte der Programmierer.

    Comment


    • #3
      Hallo Tino,

      Danke erst mal für deine Antwort, nun weiß ich das ich Customproperty erstmal vorher "generieren" muss. Allerdings mache ich das nun wie in deinen VBA code beschrieben, da ich es manuell nicht finden kann .

      Nun habe ich aber dennoch ein Problem wenn ich nun diesen Customproperty gesetzt habe nimmt dieser ( bei mir "AnZ") einfach nicht den Intefer Wert in der If Funktion an.

      Ich wollte eigentlich nur eine Userform erstellen in der man übe Optionbuttom Text datein einfügen kann diese je nach Auswahl in unterschiedlichen Ranges eingefügt werden. Bei diesen Ranges ändert sich allerdings nur die Spalte (vorher hatte ich Zeile war falsch), somit könnte ich doch die Spaltenanzahl einfach mit einer If Funktion bestimmen.

      Ich glaube das ich es schlecht oder gar nicht erklären kann, aber wenn Du nichts dagegen hast schau dir bitte nochmal die neue Datei im Anhang an, dort bleibt der Code genau beim Customproperty stehen wenn er diesen verwenden soll.

      Dankeschön & Viele Grüße
      Martin
      Attached Files

      Comment


      • #4
        Ups Tino,

        war wieder die falsche, das ist die richtige Datei

        Grüße
        Martin
        Attached Files

        Comment


        • #5
          Code:
          Sub HieR()
          Dim Importdatei$, Verzeichnis$
          Dim BereichN As Range          ' Dieser Bereich soll mit Customproperty errechnet werden, je nach Auswahl im Userform
           
          With Worksheets("Tabelle1")
           Set BereichN = Cells(AnZ, 5)
          End With
          Während die Variablen Importdatei$ und BereichN schön deklariert sind, fehlt jede Deklaration für AnZ.

          Woher soll Excel wissen, das AnZ == CustomDocumentProperties("Anz").value ist?

          Ungetestet:
          Code:
          With Worksheets("Tabelle1")
           Set BereichN = Cells(ActiveWorkbook.CustomDocumentProperties("Anz").Value, 5)
          End With
          Für die reine Parameterübergabe ist aber ein Funktionsparmeter dem CustomDocumentProperties() vorzuziehen:

          Sub Hier(AnZ As Integer)
          ....
          With Worksheets("Tabelle1")
          Set BereichN = Cells(AnZ, 5)
          End With[/CODE]

          Und der Aufruf z.B.

          Code:
          Hier(6)
          Die Dokumenteigenschaften würde ich nur nutzen, um wirklich etwas bleibendes im Dokument zu speichern, nicht um Werte von einem Modul ins andere zu bringen.
          Ich habs gleich!
          ... sagte der Programmierer.

          Comment


          • #6
            Hallo Tino,

            dein ungetesteter Code funktioniert,
            Vielen Dank, das ist das was ich wollte.

            Du schlägst vor die AnZ als direkte Variabel zu deklarieren, diese setzt sich aber nach Beendigung des Codes auf Null. Später will ich aber über anderen Buttoms die Property AnZ wieder nutzen, diese sollte sich ja erst wieder ändern wenn der Nutzer die Userform UgH öffnet und dem entsprechend ändert.

            Aber egal es funktioniert jetzt. Sorry das ich da noch nett so durchblicke bin noch ganz weit am Anfang von VBA .

            Grüße & ein schönen Abend noch
            Martin

            Comment

            Working...
            X