Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
724to728
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fragen zu Userform

Fragen zu Userform
26.01.2006 12:57:17
Reinhard
Hallo Wissende,
der Code meiner UF in der Datei
https://www.herber.de/bbs/user/30407.xls
ist nachfolgend gelistet. Ich habe dazu Fragen.
Userform1.SetFocus geht nicht.
a) Wie erreiche ich es, dass bei Start der Datei die UF sichtbar ist und den Focus hat? Am besten nur die UF sichtbar und die Tabelle minimiert falls das möglich ist.
b) Wie werte ich den Klick auf das Kreuz oben rechts aus? Ein Ereignis Userform1_Exit gibt es leider nicht und UserForm_QueryClose ist wohl nicht ganz das Richtige um bei Verlassen der UF die Exceldatei zu schliessen.
c) Wie entferne ich das Kreuz oben rechts damit die UF nur über CommandButtons verlassen werden kann?
d) Wie kann ich den Code der UF "beschleunigen"?
Danke ^ Gruß
Reinhard
Die UF wird mit

Option Explicit
Sub start()
Worksheets("Tabelle1").Columns.Hidden = True
UserForm1.Show 0
End Sub
gestartet.
Ihr Code:
Option Explicit
Private Sub SpinButton1_Change()
Dim zei As Long, sp As Byte, n As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
TextBox1 = SpinButton1
sp = CInt(TextBox1)
Worksheets("Einstellungen").Range("a1") = SpinButton1
zei = Worksheets("Punktevergabe").Cells(65536, sp).End(xlUp).Row
With UserForm1.Spreadsheet1
For n = 1 To 100
.Cells(n, 1) = ""
Next n
'.Range("A1:A500").ClearContents 'scheint bei Spreadsheets nicht zu gehen
For n = 2 To 100 'end(xlup).row scheint bei Spreadsheets nicht zu gehen
.Cells(n - 1, 1).Value = Worksheets("Punktevergabe").Cells(n, sp).Value
Next n
TextBox2 = Worksheets("Punktevergabe").Cells(1, sp).Value
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
Dim sp As Integer, zei As Long, n As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
TextBox1 = Worksheets("Einstellungen").Range("a1")
SpinButton1 = TextBox1
sp = CInt(TextBox1)
Worksheets("Einstellungen").Range("a1") = SpinButton1
zei = Worksheets("Punktevergabe").Cells(65536, sp).End(xlUp).Row
With UserForm1.Spreadsheet1
For n = 2 To 100 'end(xlup).row scheint bei Spreadsheets nicht zu gehen
.Cells(n - 1, 1).Value = Worksheets("Punktevergabe").Cells(n, sp).Value
Next n
TextBox2 = Worksheets("Punktevergabe").Cells(1, sp).Value
End With
zei = Worksheets("Stammkwizzerliste").Cells(65536, 1).End(xlUp).Row
With UserForm1.Spreadsheet2
For n = 1 To zei
.Cells(n, 1).Value = Worksheets("Stammkwizzerliste").Cells(n, 1).Value
Next n
TextBox2 = Worksheets("Punktevergabe").Cells(1, sp).Value
End With
OptionButton1 = True
UserForm1.Spreadsheet1.ViewableRange = "A:A"
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ThisWorkbook.Close
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fragen zu Userform
26.01.2006 13:08:40
Rene
Hallo!
Das kann auch nicht gehen, da der Befehl "Userform1.SetFocus" nicht existiert.
Entferne die entsprechende Codezeile aus Deinem Code. Füge dann den folgenden Code "hinter" der Userform ein.

Sub UserForm_Initialize()
On Error Resume Next
Application.WindowState = xlMinimized
TextBox1.SetFocus 'ist wichtig, sonst funktioniert es nicht
End Sub

Gruß, Rene
AW: Fragen zu Userform
26.01.2006 13:27:40
Rene
Hab noch etwas vergessen. Damit das Excelfenster beim Schließen der UF wieder eingeblendet wird, musst Du noch folgenden Code hinter der UF einfügen.

Private Sub UserForm_Terminate()
Application.WindowState = xlNormal
End Sub

Gruß, Rene
Anzeige
AW: Fragen zu Userform
26.01.2006 13:45:31
Rene
Und jetzt zu b und c. Das Kreuz lässt sich nicht entfernen. Wenn Du möchtest, das bei einem Klick auf das Kreuz die Arbeitsmappe geschlossen wird, dann kannst Du den folgenden Code verwenden.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Application.WindowState = xlNormal
ThisWorkbook.Close savechanges:=False
End If
End Sub

oder Du sperrst das Kreuz, das geht aber nur mit "QueryClose", der Code dafür:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel=True
End If
End Sub

Mit diesem Code sperrst Du das Kreuz, dann kann man die UF nur noch über CommandButton verlassen. Füge dafür, falls noch nicht geschehen, bei der OK-Schaltfläche am Schluß des Codes "Unload Me" ein, z.B.

Private Sub CommandButton1_Click()
Dein Code
Unload Me
End Sub

Anzeige
Dankeschön, das hilft mir weiter o.w.T.
26.01.2006 18:29:41
Reinhard
Gruß
Reinhard
ps:Das Forum lebt auch von Rückmeldungen.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige