Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
544to548
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
544to548
544to548
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten ermitteln und Eintragen

Daten ermitteln und Eintragen
14.01.2005 20:51:18
BigWoelfi
Hallo,
ich versuche hier mit nachfolgendem Worksheet_Change, dass nach Eingabe einer Zeichenkombination in einer Tabelle (Beispielsweise "LT") diese Angabe durch ein Makro weiterverarbeitet wird, so dass man unter Berücksichtigung aller infrage kommenden Kürzel entsprechende Daten in andere Zellen des aktiven Tabellenblattes vornimmt.
Das Problem ist, dass ich von dem Worksheet_Change, befindet sich in der Tabelle, das Kürzel nicht an das Makro übergeben bekomme, so dass das Makro eben auch nicht arbeitet.
Ich weiß, dass man das gelich im Worksheet_Change weiter verarbeiten könnte. Ich brauche das aber in 12 Tabellenblättern, so dass ich über das Makro (und es müssen weitere folgen) so vereinfachen wollte, dass die Worksheet_Change von allen Tabellenblättern diese Makros dann nutzen.
Bisher:
Option Explicit
Public TBD As Object, TBA As Object, Zeile As Integer, DART

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C11:C41")) Is Nothing Then GoTo ZWEI
If Target.Cells.Count <> 1 Then Exit Sub
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Set TBD = Worksheets("Daten")
Set TBA = ActiveSheet
Zeile = Target.Row
DArt = Target.Value       (In DArt steht jetzt auch der richtige Wert)
Call DatenHolen
Application.EnableEvents = True
End Sub

Der Beginn des Makro:
Option Explicit
Public TBD As Object, TBA As Object, DArt, PST, PVon, PBis, Pause, Zeile As Integer
Public Sub DatenHolen()
Set TBD = Worksheets("Daten")
Set TBA = ActiveSheet
MsgBox "im Makro mit DArt: " & DArt
Und hier hakt es bereits, weil DArt leer ist.
Woran kann es liegen?
Danke vorab, Wolfgang

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten ermitteln und Eintragen
Volker
N'abend Wolfgang,
ich versteh zwar nicht, warum das nicht geht.
Aber entweder mußt Du die Var als Global deklarieren, oder du benutzt statt einer Prozedur eine Funktion mit Parameterübergabe.
Ich laß die Frage mal offen. Vielleicht kommt ja noch einer, der sagt, dass ich einen Haufen Blödsinn verzapft hab.
Gruß
Volker
AW: Daten ermitteln und Eintragen
14.01.2005 23:23:02
Josef
Hallo Wolfgang!
Erstens müssen Public Variablen in einem allgemeinen Modul stehen um
in allen Prozeturen zur verfügung zu stehen.
Zwietens kannst du die Parameter direkt an die Prozetur übergeben, was
eleganter und sicherer ist.
zB.:

Public Sub DatenHolen(TBD as Worksheet, TBA as Worksheet, .....)

Drittens kannst du das Ereignis

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub

im Modul "DieseArbeitsmappe" benutzen, um nicht in jeder einzelnen
Tabelle den Code zu wiederholen.
Gruß Sepp
Anzeige
AW: Daten ermitteln und Eintragen
17.01.2005 18:40:56
BigWoelfi
Hallo,
war am Wochende nicht hier.
"Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)"
benutzte ich jetzt und klappt auch prima, incl. des Ausschluses von Tabellenblättern, für die diese Abfrage nicht gelten soll.
Es ist aber ein neues Problem aufgetaucht:
Es geht um die Eingabe von Uhrzeiten in einem Arbeitszeitnachweis. So wie es jetzt ist, wird ausschließlich die Eingabe von zum Besipiel "07:00" akzeptiert, da die entsprechenden Zellen mit Format "hh:mm" formatiertiert sind.
Das ist mir so aber nichts. Ich möchte gern, dass die Eingaben ausgewertet und in das gleiche Format umgesetzt und in die Zelle zurückgeschrieben wird.
Wie das Zurückschreiben funktioniert, weiß ich.
Das Problem liegt offenbar in etwas ganz Spezillem.
Mein bisheriger Code dazu lautet:
Dim Inhalt
If Intersect(Target, Range("E11:F41")) Is Nothing Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
Application.EnableEvents = False
Inhalt = Target.Value
If Len(Inhalt) = 1 Then
Target.Value = Format("0" & Inhalt & ":00", "hh:mm")
ElseIf Len(Inhalt) = 2 Then
Target.Value = Format(Inhalt & ":00", "hh:mm")
ElseIf Len(Inhalt) = 3 Then
Target.Value = Format("0" & Left(Inhalt, 1) & ":" & Right(Inhalt, 2), "hh:mm")
ElseIf Len(Inhalt) = 4 Or Len(Inhalt) = 5 Then
Target.Value = Format(Left(Inhalt, 2) & ":" & Right(Inhalt, 2), "hh:mm")
Else
End If
Das funktioniert in der Regel, egal, ob ich das Formatieren beim Zurückschreiben durchführen oder nicht, egal, ob ich führende Nullen abfrage oder nicht, außer, wenn bestimmte Zeiten in die Zellen eingegeben werden.
Folgendes passiert bzw. wird gewandelt:
Eingabe - Variable Inhalt - Zurückgeschrieben
06:00 - 0,25 - 0,:25
12:00 - 0,5 - 00:,5
18:00 - 0,75 - 0,:75
24:00 - 1,0 - 01:00
Fällt jemandem was ein dazu?
Bei der Gelegenheit: Was muss man machen, damit auch 00:00 und 24:00 korrekt angezeigt werden? Das geht nämlich nicht, wenn man das Makro ganz weglässt.
Gruß, Wolfgang
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige