Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1776to1780
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
Inhaltsverzeichnis

Laufschrift in (verbundener) Zelle

Laufschrift in (verbundener) Zelle
31.08.2020 19:37:28
Rolf
Hallo Experten,
ich hoffe ich könnt mir da weiterhelfen.
Im Netz habe ich folgenden Code gefunden:
In einer leeren Exceldatei habe ich diese mal ausprobiert.

Sub Rotieren()
Dim C As Range
Dim i%
Set C = AvtiveCell
For i = 1 To 25000
C = Right(C, Len(C.Value) - 1) + Left(C,1)
Application.Wait Now + TimeSerial(0 ,0, 0.5)
Next i
End Sub

(Steht C eigentlich für die Zelle, in der die Laufschrift aktiv sein soll?)
Ordne ich den Code einem Modul zu und hinterlege es einer Schaltfläche, funktioniert es grundsätzlich.
Die Schrift läuft jedoch viel zu schnell. Unterbrechen kann ich die Laufschrift nicht . Weitere Eingaben im Tabellenblatt sind nicht möglich, da der Mauszeiger nur rotiert. Zum Schluss stürzt Excel komplett ab.
Könnt Ihr mir da gegebenenfalls einen richtigen und funktionsfähigen Code nennen?
In meinem zutreffenden Tabellenblatt habe ich die Zellen U9 bis AA9 verbunden.
Dort soll die Laufschrift hinterlegt werden.
Funktioniert es eigentlich mit verbundenen Zellen?
Besteht ggf. auch die Möglichkeit die Dauer der Laufschrift zu begrenzen.
D.h.: Sobald in der Zelle C17 das Wort "Ende" steht, soll die Laufschrift enden.
Wenn die Laufschrift läuft, sollen auch weiterhin Eintragungen im Tabellenbaltt möglich sein.
Ich habe noch einen anderen Code gefunden, der jedoch nur für 32Bit Systeme geeignet sind.
Mein System hat 64Bit. Funktionierte ebenfalls nicht.
Mit freundlichen Grüßen
Rolf

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufschrift in (verbundener) Zelle
31.08.2020 19:42:52
Hajo_Zi
Hallo Rolf,
verbundene Zellen lehne ich ab, darum dazu keine Testtung.
http://hajo-excel.de/gepackt/vba/laufschrift_in_zelle.zip
Falls Link nicht ausgeführt wird:
1. Link kopieren
2. rechte Maustaste neues Fenter.
3. Umschaltstaste drücken und Klick auf den Link

AW: für Hajo
31.08.2020 21:00:14
Rolf
Hallo Hajo,
Danke für Deine Zip-Dateien.
Habe die mal ausprobiert.
Funktioniert.
Danke Danke
Grüße
Rolf
AW: eine Nachfrage
01.09.2020 12:16:11
Rolf
Hallo Hajo,
noch eine Nachfrage.
Ich habe Deinen Code für die Laufschrift mit Makro eingegeben. Funktioniert auch.
Auf meinem Tabellenblatt habe ich eine Schaltfläche mit einer Löschfunktion für das Tabellenblatt mit einer abfrage-MsgBox hinterlegt.
Wenn die Schaltfläche bei laufender Laufschrift anklicke, wird diese nicht ausgeführt.
Ich erhalte zwei Fehlermeldungen:
1.) Fehler beim Kompilieren - Variable nicht definiert und
2.) Code kann im Haltemodus nicht ausgeführt werden.
Muss ich den Code in meiner Schaltfläche aufgrund der Laufschrift anpassen, damit dieser bei laufender Laufschrift ausgeführt wird?
Folgenden Code habe ich hinterlegt:
Private Sub CommandButton103_Click()
' löschen3 Makro
abfrage = MsgBox("Sämtliche Daten des Spieles 3 werden gleöscht! Eine Wiederherstellung ist  _
dann nicht mehr möglich. Datenblatt gegebenenfalls vorher durch speichern sichern.", 289, "Achtung - Löschhinweis")
If abfrage = 2 Then
End
End If
abfrage = MsgBox("Endgültige Löschung erfolgt durch drücken der OK Schaltfläche!", 289, " _
Achtung - Letzte Chance")
If abfrage = 2 Then
End
End If
Range("C48:C53").Select
ActiveCell.FormulaR1C1 = "1"
Range("E48:E53").Select
ActiveCell.FormulaR1C1 = "2"
Range("G48:G53").Select
ActiveCell.FormulaR1C1 = "3"
Range("I48:I53").Select
ActiveCell.FormulaR1C1 = "4"
Range("K48:K53").Select
ActiveCell.FormulaR1C1 = "5"
Range("M48:M53").Select
ActiveCell.FormulaR1C1 = "6"
Range("O48:O53").Select
ActiveCell.FormulaR1C1 = "7"
Range("Q48:Q53").Select
ActiveCell.FormulaR1C1 = "8"
Range("S48:S53").Select
ActiveCell.FormulaR1C1 = "9"
Range("AC48:AC53").Select
ActiveCell.FormulaR1C1 = "1"
Range("AE48:AE53").Select
ActiveCell.FormulaR1C1 = "2"
Range("AG48:AG53").Select
ActiveCell.FormulaR1C1 = "3"
Range("AI48:AI53").Select
ActiveCell.FormulaR1C1 = "4"
Range("AK48:AK53").Select
ActiveCell.FormulaR1C1 = "5"
Range("AM48:AM53").Select
ActiveCell.FormulaR1C1 = "6"
Range("AO48:AO53").Select
ActiveCell.FormulaR1C1 = "7"
Range("AQ48:AQ53").Select
ActiveCell.FormulaR1C1 = "8"
Range("AS48:AS53").Select
ActiveCell.FormulaR1C1 = "9"
Range("U48:U57").Select
Selection.ClearContents
Range("Y48:Y57").Select
Selection.ClearContents
Range("C55:S55").Select
Selection.ClearContents
Range("N59:P61").Select
Selection.ClearContents
Range("AN59:AP61").Select
Selection.ClearContents
Range("C5:G7").Select
End Sub
Grüße
Rolf
Anzeige
AW: eine Nachfrage
01.09.2020 16:27:25
Hajo_Zi
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
Select, Activate usw. ist in VBA zu 99,8% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
Hinweise zu select usw. Hajo-Excel.de
Hinweise zu select usw. Online-Excel.de
Hinweise zu select usw. Online-Excel.de
Der Cursor ist kein Hund, der überall rum geführt werden muss.
Gruß Hajo
Anzeige
AW: Beispielmappe anbei
01.09.2020 20:56:06
Rolf
Hallo Hajo,
als Anlage habe ich Dir die Arbeitsmappe hochgeladen.
https://www.herber.de/bbs/user/139980.xlsm
Die Laufschrift funktioniert.
Wenn ich jetzt auf die Schaltfläche "Spiel 1 löschen" drücke kommt es zur Fehlermeldung.
Worin liegt der Fehler?
Vielen Dank für das Prüfen.
Rolf
P.S.: Da ich nicht soviel mit Excel mache, wusste ich nicht das der Makrorecorder so unbeliebt ist.
Habe aber Deine Hinweise aufgenommen und den Code im Makro umgeschrieben.
AW: Beispielmappe anbei
01.09.2020 21:07:45
Hajo_Zi
Halo Rolf,
ich kann Leider nicht helfenn, was wohl daran liegt das ich den Schalter "Spiel 1 löschen" nicht finden kann,
Gruß Hajo
Anzeige
AW: Schaltfläche
01.09.2020 21:32:08
Rolf
Hallo Hajo,
die Schaltfläche befindet sich rechts unter dem langen blauen Feld.
Gruß
Rolf
AW: Schaltfläche
02.09.2020 05:31:11
Hajo_Zi
Hallo Rolf,
Du schreibst Beiträge, also kannst Du lesen. Waruzm liest Du die Fehlermeldung nicht komplett?
Dim abfrage
Gruß Hajo
AW: Schaltfläche
02.09.2020 13:00:00
Rolf
Hallo Hajo,
Danke für Deine Hinweise und Deinen Zeitaufwand.
Gruß
Rolf
AW: Laufschrift in (verbundener) Zelle
31.08.2020 20:06:54
volti
Hallo Rolf,
Ich habe noch einen anderen Code gefunden, der jedoch nur für 32Bit Systeme geeignet sind.
Diese Aussage deutet darauf hin, dass die andere, von Dir leider nicht gezeigte Version, ggf. über den Windows-Timer geht.
Das Umsetzen auf 64 Bit ist hierbei kein Problem. Hier zwei Beispiele:
Private Declare PtrSafe Function KillTimer Lib "user32" ( _
        ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
Private Declare PtrSafe Function SetTimer Lib "user32" ( _
        ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, _
        ByVal lpTimerFunc As LongPtr) As LongPtr
Const WM_TIMER = &H113
Global hTimer As LongPtr
Für 64 Bit sind neben dem Schlüsselwort PtrSafe noch die Handle auf LongPtr zu setzen.
Letztendlich muss ich natürlich den Code des Beispiels sehen.
viele Grüße
Karl-Heinz
Anzeige
AW: für volti
31.08.2020 20:58:19
Rolf
Hallo volti,
habe mal den Code aus dem Internet hierher kopiert:
Option Explicit
Declare

Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
Public Sperre As Boolean

Sub Laufschrift_starten()
Dim Bereich As Range
Dim Wiederholungen As Integer
'Variable "Sperre" den boolschen Wert False zuweisen
Sperre = False
'Makro kann auch mit der Tastenkombination "Strg Untbr" gestoppt werden
Application.EnableCancelKey = xlErrorHandler
'Der Variablen "Bereich" den Bereich D12 zuweisen
Set Bereich = Range("D12")
'Bei Auftreten eines Fehlers zur Sprungmarke "errorhandler" springen
On Error GoTo errorhandler
'For/Next-Schleife zur Wiederholung der Anordnung des Textes in Zelle D12
For Wiederholungen = 1 To 10000
'Mit Variable "Sperre" wird das Makro gestoppt, wenn diese den boolschen Wert "True" hat
If Sperre = False Then
Bereich.Value = Right(Bereich.Value, Len(Bereich.Value) - 1) + _
Left(Bereich.Value, 1)
'Steuerung an das Betriebssystem zurückgeben
DoEvents
'Wartezeit von 100 Millisekunden
Sleep 100
Else
Exit Sub
End If
Next Wiederholungen
errorhandler:
End Sub

Sub Laufschrift_stoppen()
'Variable "Sperre" den boolschen Wert True zuweisen um das Makro _
"Laufschrift_starten" zu stoppen
Sperre = True
End Sub
Bei mir hat der Code aufgrund des 64Bit Systems nicht funktioniert, gab sofort eine Fehlermeldung.
Grüße Rolf
P.S.: Der Code von Hajo hat funktioniert
Anzeige
AW: für volti
31.08.2020 21:40:47
volti
Hallo Rolf,
Du bist ja jetzt fündig geworden und zufrieden...
Als Nachtrag dennoch mal:
Im Beispiel wurde kein Timer verwendet, sondern lediglich die Function Sleep, die die Ausführung um x mSec verzögert.
Für 64 Bit wäre folgende Anpassung erforderlich gewesen:
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
viele Grüße
Karl-Heinz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige