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

Button platzieren

Button platzieren
18.05.2005 09:17:17
ino
Hallo,
ich möchte eine Userform direkt über der aktiven Zellen einblenden.
Wie kann ich genau ermitteln, wo die Userform zu platzieren ist? Mit den koordinaten würde ich die Eigenschften Top und Left ändern. Oder gibt es bessere Möglichkeiten hierfür?
Danke

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button platzieren
18.05.2005 10:09:32
Matthias
Hallo Ino,
setze die Eigenschaft "StartUpPosition" des Userforms auf "manuell" und folgenden Code:

Private Sub UserForm_Initialize()
Me.Left = ActiveCell.Left
Me.Top = ActiveCell.Top
End Sub
evtl. noch ein wenig justieren (Konstanten addieren/subtrahieren).
Gruß Matthias
AW: Button platzieren
18.05.2005 10:17:29
ino
Alles klar, funktioniert soweit. Nur noch eine Frage:
Wie kann ich die Userform ohne Caption-Leiste anzeigen? (in der Userform ist nur ein Button, es soll so aussehen als wäre nur der Button da)
Danke!
AW: UF ohne Titelleiste
18.05.2005 10:37:04
Matthias
Hallo Gordon,
folgenden Code (nicht von mir) ins Userform-Modul kopieren:

Option Explicit
'Userform ohne Titelleiste
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As _
Long, lpRect As RECT) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, _
ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private FensterRegion&, Region&
Private Hauptfensternummer&, Clientfensternummer&
Private dummy As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const GW_CHILD = 5
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub UserForm_Initialize()
Call FensterOhneKopf
End Sub
Sub FensterOhneKopf()
Dim Abmessung  As RECT
Dim Abmessung1 As RECT
Dim Pos1x&, Pos1y&, Pos2x&, Pos2y&
If FensterRegion <> 0 Then Exit Sub
UserForm1.BorderStyle = fmBorderStyleSingle
Call Fensternummer(UserForm1, Abmessung, Abmessung1)
Pos1x = 0
Pos1y = (Abmessung1.Top - Abmessung.Top)
Pos2x = Abmessung.Right - Abmessung.Left
Pos2y = Abmessung.Bottom - Abmessung.Top
Region = CreateRectRgn(Pos1x, Pos1y, Pos2x, Pos2y)
FensterRegion = SetWindowRgn(Hauptfensternummer, Region, True)
End Sub
'Fensterhandles und Infos über Fenster holen
Private Sub Fensternummer(Form As Object, Abmessung As RECT, Abmessung1 As RECT)
Dim Fenstername$, Suchstring$
Suchstring = "UserForm ohne Titelzeile"
Fenstername = Form.Caption
Form.Caption = Suchstring
Hauptfensternummer = FindWindow(vbNullString, Suchstring)
Form.Caption = Fenstername
Clientfensternummer = GetWindow(Hauptfensternummer, GW_CHILD)
dummy = GetWindowRect(Hauptfensternummer, Abmessung)
dummy = GetWindowRect(Clientfensternummer, Abmessung1)
End Sub
Private Sub CoEnde_Click()
Unload Me
End Sub

-----------------------------------------------------------
ABER:
Wieso nimmst du dann überhaupt ein Userform?
Nimm doch einen CommandButton aus der Steuerelement-Toolbox, plaziere ihn auf dem Tabellenblatt und nimm diesen Code im Tabellenblatt:

Private Sub CommandButton1_Click()
CommandButton1.Visible = False
MsgBox "Hier könnte dein Code stehen!"
End Sub
Sub ZeigeButton()
With CommandButton1
.Left = ActiveCell.Left
.Top = ActiveCell.Top
.Visible = True
End With
Cancel = True
End Sub
den Button einblenden kannst du dann vom normalen Modul auf so:
Tabelle1.ZeigeButton

Gruß Matthias
Anzeige
AW: UF ohne Titelleiste
18.05.2005 10:58:10
ino
Danke für den Code.
Ich will dass diese Buttons(es sind mehrere) um die aktive Zelle herum eingeblendet werden.
Und zwar auf jede beliebige Tabelle. (So in etwa wie bei Cinema4D). Es geht um Formatierungen der Zellen, da spare ich mir den Weg zur Symbolleiste, dann habe ich alles was ich brauche in der unmittelbare Nähe der zu bearbeitenden Zelle.
Wenn ich es fertig habe, lade ich mal einen Screenshot auf dem Server..
Vielen Dank nochmal!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige