Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

UserForm Position, Code für alle Blätter

Betrifft: UserForm Position, Code für alle Blätter von: rieckmann
Geschrieben am: 18.10.2014 09:35:55

Hallo und guten Morgen,

dieser Code den ich gefunden habe, bestimmt die Position einer UserForm durch Eingabe der Spalte und Zeile in den Zellen A1 + A2.
O.K. die eingegebene Position stimmt nicht so ganz, aber zum feintunen finde ich die Lösung ganz toll.

Wie kann ich den Code anwenden, wenn ich die Einstellung im Blatt "Menü" vornehmen möchte, und die Anwendung in den Blättern 1 - 9 stattfinden sollen.

Also die Position im Blatt "Menü" einstellen so dass sich dann die UserForm in den Blättern 1 bis 9 dann in dieser eingestellten Position, beim öffnen des jeweiligen Blattes öffnet.

Oh Man, ich hoffe das ich es verständlich erklärt habe !

Gruß
Fred

Hier die Beispielmappe:

https://www.herber.de/bbs/user/93225.xls

  

Betrifft: AW: UserForm Position, Code für alle Blätter von: Crazy Tom
Geschrieben am: 18.10.2014 09:46:53

Hallo Fred

wo ist das Problem?
die Userform öffnet sich doch in jedem Tabellenblatt an gleicher Stelle

MfG Tom


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: rieckmann
Geschrieben am: 18.10.2014 13:27:41

Hallo Tom,

da diese Tabelle auf verschiedenen PC`s läuft, verschiebt sich schon mal die Ansicht der UserForm.
Zumindest wirkt es so, wenn die Monitore unterschiedliche Formate haben.
Deshalb möchte ich das beim öffnen eines der 11 Tabellenblätter die Position der UserForm so anpasst, wie es im Tabellenblatt "Menü" eingestellt wurde.

Oder gibt es eine einfachere Lösung, wie ich die UserForm in Zeile 1 links oben platzieren kann ?


Gruß
Fred


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: Daniel
Geschrieben am: 18.10.2014 13:50:28

Hi

das Grundsätzliche Problem ist, dass du die Startposition der Userform immer bezogen auf den gesamten Bildschirm angibst.

die Koordinaten einer Zelle beziehen sich aber immer auf die Position innerhalb einer Tabelle.

wenn du jetzt eine Userform genau bei einer Zelle platzieren willst, musst du, um die Bildschirmkoordinaten für die Userform zu erhalten, folgende Werte berücksichtigen bzw zusammenaddieren:
- Position des Excelfensters auf dem Bildschirm
- Rahmenbreite des Excelfensters
- für die y-Koordinate Höhe der Menüleiste und Bearbeitungszeile
- Position des Mappenfensters innerhalb des Excelfensters
- Rahmenbreite des mappenfensters
- Breite und Höhe der Zeilen/Spaltenköpfe
- Position der Zelle im Blatt

also nicht so ganz einfach, google man "Userform an Zelle ausrichten", du solltest genügend finden.

Gruß Daniel


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: rieckmann
Geschrieben am: 18.10.2014 14:01:30

Hallo Daniel,
danke für die Info.

UserForm an Zelle ausrichten ist ein guter Tipp.

Die andere Sache habe ich es hinbekommen.

Private Sub Worksheet_Activate()
Tabelle1.Cells.Interior.ColorIndex = xlNone
UserForm1.Show
End Sub
Gruß
Fred


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: Ewald
Geschrieben am: 20.10.2014 15:45:41

Hallo Fred,

teste mal so

Private Sub UserForm_Initialize()
Dim zeile, spalte, mytop, myleft, x, y
On Error GoTo fehler
zeile = Tabelle1.Cells(1, 1)
spalte = Tabelle1.Cells(2, 1)
y = Application.Height - ActiveWindow.Height + 14
x = Application.Width - ActiveWindow.Width + 20
mytop = Tabelle1.Cells(zeile, spalte).Top + y
myleft = Tabelle1.Cells(zeile, spalte).Left + x
Tabelle1.Cells(zeile, spalte).Interior.ColorIndex = 3
UserForm1.StartUpPosition = 0
UserForm1.Left = myleft
UserForm1.Top = mytop
Exit Sub
fehler:
MsgBox "Programm kann nicht vollständig ausgeführt werden", , "Ein Fehler ist aufgetreten"
End Sub
Bedenke aber das die anderen Tabellen auch das gleiche Layout wie Tabelle1 haben muß,ansonsten mußt du außer der Zeilen. und Spaltenvorgabe in Tabelle1, "Tabelle1" durch "ActiveSheet" ersetzen.

Gruß Ewald


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: rieckmann
Geschrieben am: 20.10.2014 17:45:58

Hallo Ewald,

danke für deine Mühe,
und die farbige Markierung in der Zelle wird im Tabellenblatt7 in richtiger Position angezeigt,
aber die Userform1 öffnet sich nicht !

Ich habe die Eingabe-Zellen auf dem Tabellenblatt7 in A1 und A2.

Der CommandButton2, der die UserForm auslösen soll, ist auf Tabellenblatt "Menü".

Private Sub CommandButton2_Click()
Dim zeile, spalte, mytop, myleft, x, y
On Error GoTo fehler
zeile = Tabelle7.Cells(1, 1)
spalte = Tabelle7.Cells(2, 1)
y = Application.Height - ActiveWindow.Height + 14
x = Application.Width - ActiveWindow.Width + 20
mytop = Tabelle7.Cells(zeile, spalte).Top + y
myleft = Tabelle7.Cells(zeile, spalte).Left + x
Tabelle7.Cells(zeile, spalte).Interior.ColorIndex = 3
UserForm1.StartUpPosition = 0
UserForm1.Left = myleft
UserForm1.Top = mytop
Exit Sub
fehler:
MsgBox "Programm kann nicht vollständig ausgeführt werden", , "Ein Fehler ist aufgetreten"
End Sub

Gruß
Fred


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: rieckmann
Geschrieben am: 20.10.2014 18:27:05

Hallo Ewald,

danke für deine Mühe,
und die farbige Markierung in der Zelle wird im Tabellenblatt7 in richtiger Position angezeigt,
aber die Userform1 öffnet sich nicht !

Ich habe die Eingabe-Zellen auf dem Tabellenblatt7 in A1 und A2.

Der CommandButton2, der die UserForm auslösen soll, ist auf Tabellenblatt "Menü".

Private Sub CommandButton2_Click()
Dim zeile, spalte, mytop, myleft, x, y
On Error GoTo fehler
zeile = Tabelle7.Cells(1, 1)
spalte = Tabelle7.Cells(2, 1)
y = Application.Height - ActiveWindow.Height + 14
x = Application.Width - ActiveWindow.Width + 20
mytop = Tabelle7.Cells(zeile, spalte).Top + y
myleft = Tabelle7.Cells(zeile, spalte).Left + x
Tabelle7.Cells(zeile, spalte).Interior.ColorIndex = 3
UserForm1.StartUpPosition = 0
UserForm1.Left = myleft
UserForm1.Top = mytop
Exit Sub
fehler:
MsgBox "Programm kann nicht vollständig ausgeführt werden", , "Ein Fehler ist aufgetreten"
End Sub

Gruß
Fred


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: Ewald
Geschrieben am: 20.10.2014 19:00:28

Hallo Fred,

dann schau mal

https://www.herber.de/bbs/user/93252.xls

Gruß Ewald


  

Betrifft: AW: UserForm Position, Code für alle Blätter von: rieckmann
Geschrieben am: 20.10.2014 19:08:39

Na super,
so klapps das ja sehr gut.

Danke und Gruß
Fred


 

Beiträge aus den Excel-Beispielen zum Thema "UserForm Position, Code für alle Blätter"