Button fixieren bzw. verankern

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

Betrifft: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 22.03.2005 17:19:21
Hallo zusammen.
Ich möchte gerne einen Button oder auch Spalten so fixieren, dass ich links in mehreren Spalten scrollen kann, der Button bzw. die Spalte/n mit dem Button aber nicht mitscrollen, sondern immer sichtbar sind?
Mit der Fixieren-Funktion klappt das irgendwie nur zeilenweise, also horizontal, nicht aber spaltenweise ;-(.
Deshalb dachte ich, dass man den Button vielleicht irgendwie fixieren kann???
Gruß, Dirk

Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 22.03.2005 18:06:07
Hallo Dirk,
das klappt schon Spaltenweise auch,
klicke in B1 und fixiere...
dann ist Spalte A fixiert...
Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 23.03.2005 09:34:51
Hallo Herbert,
also bei mir funktioniert das irgendwie nicht. Ich kann es nur Zeilenweise machen ;-( ???

Gruß, Dirk
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 23.03.2005 09:41:36
teste mal diese Mappe...
hier ist Spalte "A" fixiert...
https://www.herber.de/bbs/user/20041.xls
Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 23.03.2005 10:24:10
Hallo Herbert,
wenn ich horizontal scrolle hast du recht, aber sie soll nicht scrollen bzw. fixiert bleiben, wenn ich (in den anderen Spalten) nach "unten" scrolle. Das ist nämlich nicht der Fall.
Geht das überhaupt? In der Hilfe steht es auch nur sehr beschräkt und so wie du es gesagt hast.
Gruß, Dirk
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 23.03.2005 11:23:22
asoo meinst du das,
da kannst du dann nur als Alternative "Zeilen fixieren" nehmen,
oder Schaltflächen, die auf einer Userform platziert sind...
da kannst du dann scrollen wohin du willst, die würde immer an der gleichen Stelle stehen bleiben..
Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 23.03.2005 11:27:35
Hallo,
ich glaub die Userform wäre genau das wa sich brauche. Will ja nur einen Button immer sichtbar haben...nur wie funktioniert das genau?
Wäre dir um eine genauere Beschreibung dankbar, aber mach mich schon mal selbst dran ;-)
Gruß, Dirk
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 23.03.2005 12:44:23
Hallo Dirk,
aussehen würde das in etwa so:
Userbild

einfach Button in Userform einfügen und die Größe der Userform
an die Größe des Buttons anpassen...
die Eigenschaft ShowModal der Userform aus "False" setzen...
unter den Eigenschaften "Top" und "Left" die Userform an die richtige Stelle platzieren...die Userform entweder mit Workbook_Open oder
mit Worksheet_Activate aufrufen...
falls du die Mappe zwischendurch auch verläßt mußt du sie mit dem
Workbook_Deactivate-Ereignis ausblenden
mit dem Workbook_activate-Ereignis wieder einblenden
das wäre einmal das wichtigste,damit es funktioniert...
Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 23.03.2005 14:40:39
Danke nochmal, hab's jetzt endlich hinbekommen ;-)
Nur sieht es bei dir so aus, als hättest du sie in der Tabelle fixiert. Bei mir ist ein komplett neues Fenster, das ich zwar mit Top und Left-Eigenschaft setzten kann, es aber danach beliebig rumschieben kann. Ist ds richtig so oder kann ich es noch fest fixieren?
Gruß, Dirk
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 23.03.2005 15:49:02
dazu mußt du die Titelleiste ausblenden...
kopiere diesen Code in die Userform...


Option Explicit
Private Type RECT
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
   ByVal lpClassName As String, _
   ByVal lpWindowName As StringAs Long
Private Declare Function SetWindowLong _
   Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, _
   ByVal nIndex As LongByVal dwNewLong As LongAs Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" _
   (ByVal hwnd As LongByVal nIndex As LongAs Long
Private Declare Function DrawMenuBar Lib "User32" ( _
   ByVal hwnd As LongAs Long
Private Function fncHasUserformCaption(bState As Boolean)
   Dim Userform_hWnd As Long
   Dim Userform_Style As Long
   Dim Userform_Rect As RECT
   Const GWL_STYLE = (-16)
   Const WS_CAPTION = &HC00000
   Userform_hWnd = FindWindow( _
      lpClassName:=IIf(Val(Application.Version) > 8, _
      "ThunderDFrame", "ThunderXFrame"), _
      lpWindowName:=Me.Caption)
   Userform_Style = GetWindowLong(hwnd:=Userform_hWnd, _
      nIndex:=GWL_STYLE)
   If bState = True Then
      Userform_Style = Userform_Style Or WS_CAPTION
   Else
      Userform_Style = Userform_Style And Not WS_CAPTION
   End If
   Call SetWindowLong(hwnd:=Userform_hWnd, nIndex:=GWL_STYLE, _
      dwNewLong:=Userform_Style)
   Call DrawMenuBar(hwnd:=Userform_hWnd)
End Function

Private Sub UserForm_Initialize()
Dim m_hWndXl
Call fncHasUserformCaption(False)
    Application.Caption = "My Unique Caption"
    m_hWndXl = FindWindow("XLMAIN", Application.Caption)
    Application.Caption = Empty
End Sub

     Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 23.03.2005 17:25:42
Hallo,
wie kann ich denn direkt in die UserForm Code einfügen? Die ist doch grafisch und ich rufe sie folgendermaßen auf:


Private Sub Workbook_Open()
  Load UserForm1
  UserForm1.Show
End Sub


In der UserForm befindet sich noch ein Button (mit ausführbarem Code), doch das hat ja damit eigentlich nichts zu tun.
Wenn ich den Code von dir unter dem Aufruf (siehe oben) einfüge, bekomm ich die Meldung, dass nach End Sub nicht mehr stehen darf außer Deklarationen usw.
Ich weiss jetzt nicht, wo genau der Code rein soll?
Gruß, Dirk
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 23.03.2005 17:32:09
Doppelklick auf die Userform und reinkopieren..
Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 24.03.2005 09:06:18
Guten Morgen Herbert,
es ging deshalb nicht, da der Button genau so groß wie dei UserForm war und ich deshalb nichts zum Anklicken hatte ;-/
Tut mir wirklich leid, wenn ich langsam nerve, aber leider bekomm ich immer noch folgende Fehlermeldung:
'Nach End Sub, End Function oder End Property können nur Kommentare stehen.'
Die Meldung bezieht sich auf den Abschnitt
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Mein Code in der UserForm sieht jetzt folgendermaßen aus:

Private Sub UserForm_Click()
Option Explicit
Private Type RECT
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type
-----ab hier Fehlermeldung-----
 
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
   ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong _
   Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, _
   ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" _
   (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" ( _
   ByVal hwnd As Long) As Long

Private Function fncHasUserformCaption(bState As Boolean)
   Dim Userform_hWnd As Long
   Dim Userform_Style As Long
   Dim Userform_Rect As RECT
   Const GWL_STYLE = (-16)
   Const WS_CAPTION = &HC00000
   Userform_hWnd = FindWindow( _
      lpClassName:=IIf(Val(Application.Version) > 8, _
      "ThunderDFrame", "ThunderXFrame"), _
      lpWindowName:=Me.Caption)
   Userform_Style = GetWindowLong(hwnd:=Userform_hWnd, _
      nIndex:=GWL_STYLE)
   If bState = True Then
      Userform_Style = Userform_Style Or WS_CAPTION
   Else
      Userform_Style = Userform_Style And Not WS_CAPTION
   End If
   Call SetWindowLong(hwnd:=Userform_hWnd, nIndex:=GWL_STYLE, _
      dwNewLong:=Userform_Style)
   Call DrawMenuBar(hwnd:=Userform_hWnd)
End Function



Private Sub UserForm_Initialize()
Dim m_hWndXl
Call fncHasUserformCaption(False)
    Application.Caption = "My Unique Caption"
    m_hWndXl = FindWindow("XLMAIN", Application.Caption)
    Application.Caption = Empty
End Sub


???
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 24.03.2005 09:35:41
du mußt natürlich diese Zeile weggeben:
Private Sub UserForm_Click()
die war nicht Teil des Codes...
Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 24.03.2005 10:10:34
Das wird aber automatisch erstellt, wenn ich ein Doppelklick oder Rechtsklick und Eigenschaften auf die UserForm mache. Wenn ich es lösche gehört es nicht mehr zur UserForm sondern zum Button. Ich habe mal ein Dok drangehängt mit Screenshots des Codes in der UserForm (1.Seite) und nach Löschen der Zeile
Private Sub UserForm_Click()
(2.Seite). Dann wird es an den Button gehängt.
https://www.herber.de/bbs/user/20116.doc

Jetzt versteh ich gar nichts mehr ;-(
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Herbert H.
Geschrieben am: 24.03.2005 10:35:40
du mußt den Code vom Button an das Ende
des Moduls kopieren...
zum zweiten mal:
wenn es so steht, löschen:

Private Sub UserForm_Click()
und auch End Sub
löschen
wenn zwischen Sub und End Sub
kein Code steht,
brauchst du es nicht löschen...!

Private Sub UserForm_Click()
End Sub

Gruß Herbert
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 24.03.2005 11:21:35
Es war mir schon klar, dass

Private Sub UserForm_Click()
und auch End Sub

entfernt werden muss (und es somit aber unter "Allgemein"-Code steht), aber halt nicht, dass der Button-Code darunter stehen muss.
Aber jetzt geht es endlich...und ich wollte es schon fast aufgeben!!
Also nochmal vielen Dank für deine lange Gedult, aber bin halt leider (noch) kein VBA-Profi ;-( !!!
Gruß, Dirk
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Ingo
Geschrieben am: 22.03.2005 18:06:39
Mit dem Fixieren klappt das normalerweise auch Spaltenweise. das Fenster wird links von der markierten zelle und oberhalb der markierten zelle fixiert. Wenn du also nur Spalten fixieren willst, in der obersten Zeile rechts neben der Spalte, die nicht mitscollen soll die Zelle markieren und Fenster fixieren.
m f G
Ingo Christiansen
Bild

Betrifft: AW: Button fixieren bzw. verankern
von: Dirk
Geschrieben am: 23.03.2005 09:40:16
Hallo Ingo,
ich habe es Herbert auch schon geschrieben, aber bei mir funtioniert es einfach nicht. Die Spalte wird wie zuvor dann auch mitgescrollt.
Vielleicht gibt es noch eine Einstellung in den Optionen??
Gruß, Dirk
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Button fixieren bzw. verankern"