Textfeldposition in Tabsheet 'fixieren'
#11
Hallo,

tief in der VBA-Trick-Kiste gibt es ein Event, das beim Scrollen feuert (Danke an maninweb)

Code:
Private Sub Frame1_Layout()
MsgBox "Scroll " & ActiveWindow.VisibleRange.Address
End Sub

mfg


Angehängte Dateien
.xlsm   mit Frame u VisibleRange.xlsm (Größe: 21,55 KB / Downloads: 14)
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Wanderfalke
Antworten Top
#12
Hallo,

mit der Variante von Fennek funktioniert es sehr gut.

Danke auch an alle anderen für ihre Infos.

VG!
Antworten Top
#13
Hallo,

leider ergibt sich doch ein kleines Problem.

Wenn ich das Tabellenblatt wechsle und wieder auf mein Originaltabellenblatt zurückkehre, erscheint die Fehlermeldung: Laufzeitfehler '50290': Anwendungs- oder objektdefinierter Fehler.
Der Debugger verweist auf die Zeile "ActiveSheet.Shapes("TextBox1").Top = Range("F" & Zeile).Top", welche sonst funktioniert.

Ich habe versucht, vor dem den o.g. Aufruf folgende Abfrage einzubauen: "If ActiveSheet.Name = "01_Meine_Original_Test_Tabelle" Then begin ...".
Hier erscheint die Compiler-Fehlermeldung "Sub oder Funktion nicht definiert".

Hat evtl. jemand eine Idee?

Danke und vG!
Antworten Top
#14
Hi,

ohne Deinen genauen Code zu kennen, rate ich mal:

Code:
ActiveSheet.Shapes("TextBox1").Top = ActiveSheet.Range("F" & Zeile).Top


Oder statt ActiveSheet Worksheets("DeinBlattname") oder den Codenamen der Tabelle verwenden.
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • Wanderfalke
Antworten Top
#15
Hallo,

ich stecke fest - der Laufzeitfehler '50290' nach dem Wechsel auf ein anderes Tabellenblatt und zurück besteht noch.
Auch Boris´Tip wurde (leider erfolglos) versucht.

Falls sich jemand mal den Anhang anschauen könnte ...  

VG! 

PS: Ein weiteres Problem tritt sporadisch auf: Prozedur: Aufruf des Workbooks und, ohne Tabellenblattwechsel, scrollen. 
Sobald der Zeilen-Scrollwert größer '15' ist, passiert - nichts mehr. Liegt der Wert darunter, geht es wieder.
Hat das evtl. schon jemand so gesehen? Wie gesagt, passiert nicht immer.


Angehängte Dateien
.xlsm   _edited_mit Frame u VisibleRange_Test_03.xlsm (Größe: 30,96 KB / Downloads: 3)
Antworten Top
#16
Eigenzitat:
(11.02.2022, 13:07)RPP63 schrieb: Da das alles nicht profan ist, wiederhole ich mich.
Ist es das wert?
Was willst Du wirklich bezwecken?
Zeigen, dass Du ein toller Hecht bist?
Das kannst Du auf anderen Gebieten sehr wahrscheinlich viel besser!
Nutze Excel als das, für das es programmiert wurde und nicht als Klicki-Bunti …
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#17
Hallöchen,

so funktionierts. Wenn Du die Zahlen noch in der Tabelle willst, füge es im Makro NaLos ein.

Code:
Dim Zeile As Long

Private Sub Frame1_Layout()
Dim Spalte As Long
Dim Zeile_Buffer As Long
  If ActiveSheet.Name = "Tabelle1_Test" Then
    MsgBox "Scroll " & ActiveWindow.VisibleRange.Address
    Zeile = ActiveWindow.VisibleRange.Row + 3
    If Zeile < 1 Then MsgBox "Zeilennummer kleiner 1"
    On Error Resume Next
    NaLos
  End If
End Sub

Private Sub NaLos()
    Set zelle = Worksheets("Tabelle1_Test")
    Set zelle = zelle.Shapes("TextBox1")
    zelle.Top = Range("F" & Zeile).Top
End Sub

Private Sub Worksheet_Activate()
    NaLos
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Wanderfalke
Antworten Top
#18
Hallo,

André`s Code bringt bei mir nichts.  Undecided

Aber so gibt es keinen Fehler (ebenso wie bei On Error Resume Next Wink ):

Code:
Option Explicit

Dim JetztNicht As Boolean

Private Sub Frame1_Layout()
  If Not JetztNicht Then
    TextBox1.Top = ActiveWindow.VisibleRange.Offset(3).Top
  Else
    JetztNicht = False
  End If
End Sub

Private Sub Worksheet_Deactivate()
  JetztNicht = True
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Wanderfalke
Antworten Top
#19
Hallo zusammen,

@Kuwer: Danke für deinen Tip. Ich habe mehrfach versucht, das umzusetzen. Dies ist mir nicht gelungen. Könntest du evtl., basierend auf Fenneks Projekt, ein Sample zum verifizieren erstellen? 

Grundsätzlich stellt sich mir die Frage, weshalb der Aufruf der TextBox-Komponente auf dem zweiten Tabellenblatt den Fehler verursacht. Und, ganz seltsam, wenn ich vom zweiten zurück auf das erste Tabellenblatt gehe und ich die 50290er-Fehlermeldung mit  "Beenden" quittiere, funktioniert das Scrollen auf dem ersten Tabellenblatt wieder problemlos... Bis zum nächsten Wechsel .....

VG!

PS: @RPP63: Ich bin übrigens für sachdienliche Unterstützung sehr dankbar. Der Rest kann gerne selbst entsorgt werden.
Antworten Top
#20
Hallöchen,
Im Prinzip kann es an der internen Reihenfolge der Aktionen / Ereignisse liegen.
Unter 365 hatte das bei mir ja was gebracht. Irgendwie schien es hier so als wäre das Blatt noch nicht 100% aktiv wenn das Frame - Ereignis eintritt.
Man kann das auch testen indem man bei den verschiedenen Ereignissen mal nur eine Meldung ausgibt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Wanderfalke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste