Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
924to928
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
924to928
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro durch Enter laufen lassen ?

Makro durch Enter laufen lassen ?
17.11.2007 16:35:30
Petra
Hallo
Ich verwende hier in einem Modul folgendes Makro :

Sub Groß2()
'* H. Ziplies                                                                                 *
'* 16.05.07                                                                                  *
'* erstellt von Hajo.Ziplies@web.de                                            *
'* http://Hajo-Excel.de/
'   alles in groß
Dim RaZelle As Range
Application.EnableEvents = False                ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False              ' Bildschirmaktualisierung aus
For Each RaZelle In Range("A1:A40")            ' Schleife über einen definierten Bereich
RaZelle = UCase(RaZelle)                    ' Inhalt umwandeln in groß
Next RaZelle
Application.EnableEvents = True                 ' Reaktion auf Eingabe ein
Application.ScreenUpdating = True               ' Bildschirmaktualisierung ein
End Sub


Ist es irgendwie möglich das dieses Makro nach einer Eingabe in einer Zelle durch drücken der Entertaste
gestartet werden kann ?
Würde mich über Ratschläge freuen
Gruß
Petra

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 16:48:00
Petra
Hallo Hajo
Das verstehe ich nicht ganz, daraus geht aber doch nicht hervor wie ich das mit der Entertaste zum laufen bringe.
Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 16:51:00
Hajo_Zi
Hallo Petrta,
das Ereignis Change wird bei Enter ausgeführt.
Gruß Hajo

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 16:53:19
Daniel
HI
da ich mal davon ausgehe, daß du nur in der gerade eingebeben Zelle alle Buchstaben gross geschrieben haben willst, kannst du dieses Makro verwenden, es muß ins Modul des betroffenen Tabellenblatts.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Not Intersect(Target, Range("A1:C25")) Is Nothing Then
'Hier Zellbereich angeben, für den die Funktion gelten soll
For Each Zelle In Target
If Not Zelle.Value = "" Then
If Not Zelle.HasFormula Then
Zelle.Value = UCase(Zelle.Value)
End If
End If
Next
End If
End Sub


Gruß, Daniel

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 17:07:37
Petra
Hallo Daniel
Danke für deine Antwort, aber das Makro soll schon unter Modul bleiben. Ansonsten habe ich Probleme mit meinen Bezügen und Berechnungen im Tabellenblatt wenns da mit rein kommt. Hatte ich schon alles Probiert.
Möchte das übers Tabellenblatt nach Enter irgendwie Aktivieren ohne noch eine Tastenkombination zu tätigen damit es eben läuft zum Aktuallisieren.
Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 17:12:00
Hajo_Zi
Hallo Petra,
dazu ist nunmal in Excel das Change Ereignis da. Welche Probleme entstehen dadurch?
Gruß Hajo

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 17:21:38
Petra
Hallo Hajo
Wenn ich das in meine Arbeitsmappe mit einbeziehe, dann wird mir aus Uhrzeiten wie z.B 12:00 Uhr ein Wert ermittelt von xxxxx,xx. und haste nicht gesehen, jedenfalls alles irgendwie durcheinander dann. Das einzige was geht ist die Großschreibung dann.
Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 17:26:16
Hajo_Zi
Halo Petra,
das Problem war mir nicht bekannt, das bekommt man aber gelöst.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'* H. Ziplies                                     *
'* 16.05.07                                       *
'* erstellt von Hajo.Ziplies@web.de               *
'* http://Hajo-Excel.de/
'   alle Buchstaben groß in einem bestimmten Bereich
'   Spalte 3 und 4 (C:D)
Dim RaZelle As Range
Application.EnableEvents = False            ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False          ' Bildschirnaktualisierung aus
For Each RaZelle In Range(Target.Address)   ' Schleife über alle geänderten Zellen
If RaZelle.Column = 3 Or RaZelle.Column = 4 Then
If Not IsNumeric(RaZelle) Then RaZelle = UCase(RaZelle)             ' Inhalt  _
umwandeln in groß
End If
Next RaZelle
Application.ScreenUpdating = True           ' Bildschirmaktalisierung ein
Application.EnableEvents = True             ' Reaktion auf Eingabe ein
End Sub


Gruß Hajo

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 17:26:27
Daniel
Hi
dann musst du es so schreiben:
dieses Makro ins Modul der Tabelle

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:C25")) Is Nothing Then Call Gross(Target)
End Sub


und dieses Makro ins allgemeine Modul


Public Sub Gross(rngBereich as range)
dim Zelle as range
For Each Zelle In rngBereich
If Not Zelle.Value = "" Then
If Not Zelle.HasFormula Then
Zelle.Value = UCase(Zelle.Value)
End If
End If
Next
End Sub


Anders gehts nicht.
allerdings kann ich icht ganz nachvollziehen, wo da die Probleme liegen sollen.
Gruß, Daniel

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 18:19:15
Petra
Hallo
So habe den Code wie fogt im Modul der Tabelle :
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iStd   As Integer
Dim iMin   As Integer
If Target.Count > 1 Then Exit Sub     ' nur eine Zelle markiert ?
If Not Intersect(Target, Range("F10:N45")) Is Nothing Or _
Not Intersect(Target, Range("T9:U24")) Is Nothing Then
If Not Intersect(Target, Range("F10:F40")) Is Nothing Then Call Gross(Target)
With Cells(Target.Row, Target.Column)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
.NumberFormat = "[h] : mm"
If Len(.Value) > 2 Then
iStd = Left(.Value, Len(.Value) - 2)
iMin = Right(.Value, 2)
Else
iStd = 0
iMin = .Value
'iStd = .Value
'iMin = 0
End If
.Value = iStd & ":" & iMin
End If
End With
End If
End Sub


Und im Modul


Public Sub Gross(rngBereich As Range)
Dim Zelle As Range
For Each Zelle In rngBereich
If Not Zelle.Value = "" Then
If Not Zelle.HasFormula Then
Zelle.Value = UCase(Zelle.Value)
End If
End If
Next
End Sub


Warum Rattert das Makro nach eingabe einer Uhrzeit los und läuft eine weile, zeigt mir wärend des laufens 14400:00 an und wenn das Makro durch ist dann erst die eingegebene Uhrzeit ? Wenn ich Buchstaben eingebe die werden sofort groß geschrieben.
Das ist das Problem was ich meinte, ich habe jetzt mal ein Muster mit Hochgeladen um sich das anzu schauen was da Passiert.
https://www.herber.de/bbs/user/47821.xls
Gruß
Petra

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 18:39:05
Tino
Hallo,
da fehlt der geschickte Einsatz von Application.EnableEvents
Gruss
Tino

AW: Makro durch Enter laufen lassen ?
17.11.2007 18:42:00
Petra
Hallo Tino
Wie und wo muß ich Application.EnableEvents mit zusetzen in meinem Code ?
Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 18:51:00
Tino
Hallo,
brauche etwas Zeit, bin am gerade am essen.
Gruss
Tino

AW: Makro durch Enter laufen lassen ?
17.11.2007 18:52:00
Daniel
Hm,
anscheinend werden Uhrzeiten verändert, wenn man versucht sie Gross zu schreiben.
außderdm wird dann, weil ja eine Veränderung des Zellwertes stattfindet, daß Worksheet_Chance-Makro rekursiv aufgerufen (dh, das Makro ruft sich quasi selbst auf, wodurch eine längere Schleife entstehen kann)
das kann man verhindern, in dem man Application.EnabelEvents = FALSE setzt.
allerdings darf man nicht vergessen, den Wert am Makro-Ende wieder auf TRUE zu setzen, sonst bleibt es abgeschaltet, und die EVENT-Gesteuerten Makros laufen nicht mehr.
Um die Events wieder einzuschalten, muss man dann im Direktfenster von Hand den Befehl Application.EnabelEvents = TRUE eingeben.
Dies ist auch der Fall, wenn das Makro vorzeitig mit einem Fehler abbricht.
änder mal das Makro Gross(Target) so ab, dann werden Uhrzeiten und Zahlen nicht mehr Gross geschrieben:

Public Sub Gross(rngBereich As Range)
Dim Zelle As Range
Application.EnableEvents = True
For Each Zelle In rngBereich
If Not Zelle.Value = "" Then
If Not Zelle.HasFormula Then
If Not IsNumeric(Zelle.Value) Then
Zelle.Value = UCase(Zelle.Value)
End If
End If
End If
Next
Application.EnableEvents = True
End Sub


Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 19:03:00
Petra
Hallo Tino
Das geht nun soweit, allerdings rattert er nun lange wenn ein Buchstabe eingegeben wurde.
Mann kann dann nicht gleich in der nächsten Zelle etwas eintragen. Es ist im Enddefekt nun genau umgekehrt wie vorher.
Lässt sich das auch noch abändern ?
Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 19:40:00
Petra
Hallo Daniel
Habe nun Festgestellt das der Fehler nur in meiner Arbeitsmappe auftritt den ich zuvor gepostet habe.
In der Datei die ich Hochgeladen hatte geht es alles ohne Probleme mit dem neunen Code.
Nun meine Frage, kann es in meiner Arbeitsmappe irgendwie mit Bezügen und Formeln zusammenhängen das der Fehler da auftritt ? Die Originaldatei kann ich leider nicht Hochladen, da mir dieses aus Datenschutztechnischen Gründen nicht möglich ist. Und es wäre nun zuviel die Daten und Tabellenblätter zu Entfernen.
Gruß
Petra

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 19:41:00
Tino
Hallo,
geht’s so?
Es ist aber keine Fehlerbehandlung eingebaut, kommt es zu einem Fehler (Code vorzeitig unterbrochen)
siehe Beitrag von Daniel.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iStd   As Integer
Dim iMin   As Integer
Application.EnableEvents = False
If Target.Count > 1 Then
Application.EnableEvents = True
Exit Sub     ' nur eine Zelle markiert ?
End If
If Not Intersect(Target, Range("F10:N45")) Is Nothing Or _
Not Intersect(Target, Range("T9:U24")) Is Nothing Then
If Not Intersect(Target, Range("F10:F40")) Is Nothing Then Call Gross(Target)
With Cells(Target.Row, Target.Column)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
.NumberFormat = "[h]:mm"
If Len(.Value) > 2 Then
iStd = Left(.Value, Len(.Value) - 2)
iMin = Right(.Value, 2)
Else
iStd = 0
iMin = .Value
'iStd = .Value
'iMin = 0
End If
.Value = iStd & ":" & iMin
End If
End With
End If
Application.EnableEvents = True
End Sub
Public Sub Gross(rngBereich As Range)
Dim Zelle As Range
For Each Zelle In rngBereich
If Not Zelle.Value = "" Then
If Not Zelle.HasFormula Then
Zelle.Value = UCase(Zelle.Value)
End If
End If
Next
End Sub


Gruss
Tino

Anzeige
AW: Makro durch Enter laufen lassen ?
17.11.2007 19:59:00
Petra
Hallo Tino
So geht das jetzt soweit.
Nun ist aber das Problem wenn ich Versehentlich eine Falsche Zeit eingegeben habe und diese dann aus der Zelle lösche nachdem ich schon Enter gedrückt habe, dann erscheint nach neuer eingabe wieder ein Wert von 1400:00 anstatt der Uhrzeit.
Gibs dafür auch noch ne Lösung, wäre gut !
Danke schon einmal im Vorraus
Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 20:09:49
Daniel
HI
ne Lösung dafür gibst sicherlich, aber sie findet sich leichter, wenn du ne Datei hochlädst, in der der Fehler kontrekt auftritt, und wo man im Einzelstep-Modus genau nachvollziehen kann, was das Makro gerade macht.
Theoretische Fehlersuche nach irgendwelchen Logik-Fehlern ist dann nur was für absolute Profis.
Btw. das mit dem Einzelstep-Modus kannst du ja selber ausprobieren, dazu einfach im code am Anfang auf den Graunen Balken am linken Rand tippen, es erscheint ein brauner Punkt. (auf die gleiche Weise geht er auch wieder weg)
wenn das Makro später läuft, wird es an dieser Stelle anhalten und du kannst das Makro Zeile für Zeile durchgehen und dabei immer beoachten, was gerade passiert.
vielleicht findest du ja so den Fehler.
Mach auch die Menüleiste "Debuggen" dazu auf.
hier findest du auch die Buttons zum weiterschalten oder normalen durchlauf.
Gruß, Daniel

AW: Makro durch Enter laufen lassen ?
17.11.2007 20:26:53
Petra
Hallo Daniel
Habe hier nochmal die Muster Tabelle mit Hochgeladen wo ich nun die Code von Tine drine habe.
Hier Passiert das mit dem löschen der Uhrzeit und dem xxxxx,xx Wert nach einer Neueingabe.
Kannste ja einmal selber an der Datei Testen.
Werde aber auch nach deinem Schema gleich nach dem Essen mal schauen ob ich nen Fehler finde.

Die Datei https://www.herber.de/bbs/user/47823.xls wurde aus Datenschutzgründen gelöscht


Gruß
Petra

AW: Makro durch Enter laufen lassen ?
17.11.2007 21:03:00
Petra
Hallo Tino @ Daniel
Bestens :-)
Vielen Dank für deine Bemühungen jetzt ist es in Ordnung und Funzt alles denke ich einmal.
@Tino Sorry für die Namensänderung zu (Tine)
Ich wünsche Euch noch ein schönes WE
Grüße aus dem Kalten Norden
Petra

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige