Userform Position angeben und Menü deaktiviert

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Userform Position angeben und Menü deaktiviert
von: Lars
Geschrieben am: 06.10.2003 10:12:25

Guten Morgen,

habe ein Prob mit einer Userform. Leider kenne ich mich in VBA noch nicht so gut aus.

Meine Userform startet wie gewollt nach dem Öffnen der Datei. Leider habe ich es:

1. noch nicht geschafft die Position zu bestimmen (geht immer in der Mitte des
Fensters auf, soll aber entweder oben am Anfang der Tabelle oder rechts im
Tabellenbereich angeordnet sein).

2. Nach dem Start ist das Excel-Menü nicht voll einsatzbereit. muss erst
doppelt in die Menüleiste klicken.

Wie kann ich diese beiden Dinge in mein bisheriges Makro einbauen?

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, ByVal bEnable As Long) As Long


Private Sub UserForm_QueryClose _
   (Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        MsgBox "Die Navigation kann nicht geschlossen werden."
        Cancel = True
    End If
    Application.CellDragAndDrop = True
End Sub


Private Sub UserForm_Activate()
   Dim hwndXL&
   hwndXL = FindWindow("XLMAIN", Application.Caption)
   If hwndXL <> 0 Then
       EnableWindow hwndXL, 1
       Application.CellDragAndDrop = False
   End If
End Sub



Private Sub CommandButton1_Click()
Sheets("Deckblatt").Select
End Sub



Wichtig, hab wenig Ahnung von VBA, also möglichst einfach erklären!

Vielen Dank!

Lars
Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Sabine
Geschrieben am: 06.10.2003 11:44:25

Hi Lars,

wie hast du denn die UF erstellt?
Falls im VBE-Editor, dann auf Eigenschaften der Userform; StartupPosition - manuell
und bei Left und Top die entsrechenden Werte eintragen, vielleicht ein wenig probieren, welche WErte optimal sind.
Zur zweiten Frage kann ich dir leider nicht helfen

Viele Grüße

Sabine


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Lars
Geschrieben am: 06.10.2003 12:10:54

Vielen Dank Sabine, hat geklappt. Hätte ich auch gut selber drauf kommen können! :-)

Hast Du auch eine Idee, wie man in einer Userform, die als Navi dienen soll eine "Vor"- bzw. "Zurück"-Schaltfläche einbauen kann, mit der man zwischen den Tabellenblättern blättern kann?

Gruß Lars


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Andi_H
Geschrieben am: 06.10.2003 13:46:39

Hi Lars,

sheets blättern in Userform geht, du brauchst halt 2 Buttons( entweder CommandButtons mit "vor" und "zurück" oder einen Spinbutton)

dann würde ich das ganze über den index des sheets lösen, sieht wie folgt aus:

Bei Klick auf Vor:
'auslesen des Index des aktiven sheets
x = Sheets.Count
i = ActiveSheet.Index
If i = x Then
MsgBox ("Nicht möglich")
Else
Sheets(i + 1).Select
End If

bei Zurück genau umgekehrt:
x = Sheets.Count
i = ActiveSheet.Index
If i = 1 Then
MsgBox ("Nicht möglich")
Else
Sheets(i - 1).Select
End If
Hoffe das hilft dir weiter,

Gruß
Andi


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Lars
Geschrieben am: 06.10.2003 14:26:39

Hi Andi,

vielen Dank für Deine Hilfe! Hab das ganze eben getestet. Leider bekomme ich eine Fehlermeldung, dass Variable x nicht definiert ist. Muss ich für x etwas anderes einsetzten? Wäre nett, wenn Du mir nochmal helfen könntest!

Sorry, dass ich wahrscheinlich ziemlich blöde Fragen stelle, bin aber nicht so der Held in VBA!

Gruß Lars


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Andi_H
Geschrieben am: 06.10.2003 14:57:52

Hi lars,
kann sein das bei dir in den Optionen Variablendeklaration erforderlich aktiviert ist,
schreib mal dim x,i as integer an den anfang beider Codes.
dann müßte es laufen.
Variablen sollte man eigentlich immer deklarieren, ich laß des nur recht gerne weg - Faulheit!

Gruß


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Lars
Geschrieben am: 06.10.2003 15:10:08

Hi Andi,

super, jetzt läuft die Sache. Leider ist ein weiteres Prob aufgetreten und zwar hab ich ein Tabellenblatt verborgen. Wenn ich jetzt also bei dem "fast" letzten Blatt angekommen bin und auf "VOR" klicke, bricht das Makro ab und bringt folgende Fehlermeldung: "Die Select-Methode des Worksheet-Objektes ist fehlerhaft".

Und nu? kann man das letzte Blatt ausnehmen? Oder besser gleich mehrere, wer weiß was noch kommt! :-)

Gruß
Lars


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Andi_H
Geschrieben am: 06.10.2003 15:19:38

ja , kann man. Am einfachsten ist es, alle sichbaren und selectierbaren sheets an den Anfang zu verschieben, dahinter alle versteckten.
Die Variable x in dem Code zählt die anzahl der sheets (x = sheets.count)
Mal angenommen du hast 5 sichbare Tabellenblätter (die ersten 5 deiner Mappe da es ja um den Index der sheets geht), dahinter folgen 3 versteckte
dann schreibe statt x = sheets.count einfach x = 5, jetz kann nur zwischen den ersten 5 sheets geblättert werden.


Bild


Betrifft: AW: Userform Position angeben und Menü deaktiviert
von: Lars
Geschrieben am: 06.10.2003 15:28:05

Danke Andi!

Bist "Hero of the Day"!! ;-) Endlich läuft alles so wie es soll!!! Hätte ich alleine nie geschafft.

Gruß Lars


Bild


Betrifft: Bitteschön :-) o.t.
von: Andi_H
Geschrieben am: 06.10.2003 15:30:56




 Bild

Beiträge aus den Excel-Beispielen zum Thema " Userform Position angeben und Menü deaktiviert"