Menu

Excel VBA-Profi gesucht

blaue*lagune

Mitglied seit
30.08.2005
Beiträge: 673
Hilfreich: 0

@ Keksemitmilch
Ich weiß, aber Makros können (wenn es denn funktioniert) einem das Leben so richtig schön einfach machen.

@ Ute-s
Warum einfach, wenn es auch kompliziert ist. Die "Team-Kalender-Funktion" ist von unseren Administratoren gesperrt und trotz Gummibärchen etc. lassen sie sich nicht davon überzeugen, diese freizuschalten :twisted:
Ich habe es inzwischen aufgegeben, und nach einer anderen Lösung gesucht, die irgendwie total scheitert

Du bist Herr deiner Worte, doch einmal gesprochen, beherrschen sie Dich.

[img:59a5764521]http://www.cosgan.de/images/smilie/haushalt/g015.gif[/img:59a5764521]

Dieser Beitrag wurde 0 mal als hilfreich markiert.

blaue*lagune

Mitglied seit
30.08.2005
Beiträge: 673
Hilfreich: 0

Ich glaube, ich sollte vor dem programmieren erst noch ein paar VBA-Vokabeln lernen ops:

Du bist Herr deiner Worte, doch einmal gesprochen, beherrschen sie Dich.

[img:59a5764521]http://www.cosgan.de/images/smilie/haushalt/g015.gif[/img:59a5764521]

Dieser Beitrag wurde 0 mal als hilfreich markiert.

Dennis

Mitglied seit
26.06.2003
Beiträge: 1232
Hilfreich: 0

Kommentare zum Makro Ereignisse prüfen.

Die rot markierte Zeile enthält vermutlich einen Fehler (Kommentar in grün). Da ich den Aufbau der Tabelle nicht genau kenne, mag das Löschen von H7 ja gewünscht sein, aber nachdem H7 gelöscht wurde, wird "Termin_anzeigen" aufgerufen, welches den Text von H7 (jetzt leer)benutzen will. Erst später wird H7 wieder gefüllt.
Ich vermute, daß ein Missverständnis bei der Nummerierung aufgetreten ist. Ein wenig durcheinander geht nämlich, was H7 direkt referenziert wird und wann Cells(Nummer,7) benutzt wird.
Möglicherweise entsteht dabei ein Durcheinander, welche Spalte G und welche Spalte H ist. Die Nummerierung der Spalten beginnt evtl. bei 0, so daß mit Cells(Nummer,7) evtl. G gemeint ist, aber H angesprochen wird.
Hast Du das Makro selbst geschrieben oder ein funktionierendes abgeändert?

Sub EreignissePrüfen()
Dim Inhalt As Worksheet
Set Inhalt = ThisWorkbook.Sheets("Tabelle1&quot
Inhalt.Calculate
HeutTag = Inhalt.Range("g7&quot.Value
[color=red]Inhalt.Range("h7&quot.Formula = ""[/color:1a51a2669f] [color=green]Hier wird H7 gelöscht[/color:1a51a2669f]
Set Inhalt = Workbooks("a AM-Termin-'Erinnerungsliste' - 2006&quot.Sheets("Tabelle1&quot
With Inhalt
'Termine der Vergangenheit
While (.Cells(7, 7).Value < HeutTag) And (.Cells(7, 7) <> "&quot
TerminAnzeigen (1)
Inhalt.Calculate
Wend
x = 1
TerminAnzeigen (x)
Inhalt.Calculate
Set Inhalt = ThisWorkbook.Sheets("Tabelle1&quot
Inhalt.Range("h7&quot.Formula = .Cells(7, 7).Text
End With
End Sub

LG Thomy....hier kommt der Genuß

Dieser Beitrag wurde 0 mal als hilfreich markiert.

blaue*lagune

Mitglied seit
30.08.2005
Beiträge: 673
Hilfreich: 0

Wir haben eine Abteilungsinterne Erinnerungsliste, in der wir alle wichtigen Termine (meist Behördentermine) eintragen. Hin und wieder vergessen aber so ein paar Pappenheimer in diese Liste reinzuschauen, weshalb schon der eine oder andere Termin nicht eingehalten werden konnte.

Jetzt habe ein VBA entdeckt, welches an Termine erinnert. Am Ende soll mich Excel sofort an den Termin erinnern, sobald ich eine x-beliebiege Excel-Datei öffne. Habe mich also gleich mal an die Arbeit gemacht, nur dummerweise macht Excel alles, nur nicht das was ich will

Kurzgefasst habe ich folgenden Befehl gegeben:

Wenn G7 = Heute, dann öffne Fenster mit Inhalt von A7 und H7.

Wenn ich jetzt auf Makro gehe, und sage "ErgebnissePrüfen" ausführen, passiert folgendes. Der Inhalt von H7 wird gelöscht, danach öffnet sich ein Fenster namens Erinnerung welches allerdings bis auf eine OK-Schaltfläche völlig leer ist. Wenn ich jetzt auf OK klicke, wird Zeile 1 völlig gelöscht und Zeile 2 wird zur Zeile 1 usw. usw.

Kennt sich jemand hier damit aus? Ich kann den Fehler einfach nicht finden Ich muss aber allerdings auch zugeben, dass ich mich VBA-technisch nicht wirklich gut auskenne

Du bist Herr deiner Worte, doch einmal gesprochen, beherrschen sie Dich.

[img:59a5764521]http://www.cosgan.de/images/smilie/haushalt/g015.gif[/img:59a5764521]

Dieser Beitrag wurde 0 mal als hilfreich markiert.

blaue*lagune

Mitglied seit
30.08.2005
Beiträge: 673
Hilfreich: 0

Ich habe ein funktionierendes Makro abgeändert ops:

Dank Dir, weiß ich jetzt auch, warum der Inhalt von H7 gelöscht und durch G7 ersetzt wird. Werde mir das jetzt nochmal genau anschauen.

Oh man, was hätte ich nur ohne Dich gemacht.

[size=18][color=blue]TAUSEND DANK [/color:7367897e6c][/size:7367897e6c]

Du bist Herr deiner Worte, doch einmal gesprochen, beherrschen sie Dich.

[img:59a5764521]http://www.cosgan.de/images/smilie/haushalt/g015.gif[/img:59a5764521]

Dieser Beitrag wurde 0 mal als hilfreich markiert.

keksemitmilch

Mitglied seit
20.04.2006
Beiträge: 130
Hilfreich: 0

in großbuchstaben (größe 1.000): "i hate makros"

ich würd dir ja sooo gern helfen, aber weißt ja.... *glucks*

sonnige grüße - keksemitmilch

Dieser Beitrag wurde 0 mal als hilfreich markiert.

Dennis

Mitglied seit
26.06.2003
Beiträge: 1232
Hilfreich: 0

Hallo,
aufgrund Deiner Beschreibung ist nicht erkennbar, warum das Makro bestimmte Zellen löscht.
Die von Dir hier reingestellte Wenn-Bedingung ist jedenfalls nicht dafür verantwortlich.
Um den Fehler zu finden, müsstest Du das komplette Makro hier reinstellen, dann kann ich Dir sicherlich sagen, welcher Befehl das verursacht.

LG Thomy....hier kommt der Genuß

Dieser Beitrag wurde 0 mal als hilfreich markiert.

blaue*lagune

Mitglied seit
30.08.2005
Beiträge: 673
Hilfreich: 0

Hallo Dennis,

hier ist das Makro, aber bitte sehe mir den oder die Fehler nach Danke

Hi, bitte durch 8 ) ersetzten.

Sub TerminAnzeigen(Nummer As Integer)
Dim Inhalt As Worksheet
Dim Titeltext, Hauptext As String
Set Inhalt = Workbooks("a AM-Termin-'Erinnerungsliste' - 2006&quot.Sheets("Tabelle1&quot
With Inhalt
Titeltext = "Erinnerung: " + .Cells(Nummer, 7).Text
Haupttext = .Cells(Nummer, 1 + .Text
If .Cells(Nummer, .Formula = "" Then
Hole = MsgBox(Haupttext, vbOKOnly, Titeltext)
Else
Haupttext = Haupttext + Chr(10) + "Soll" + .Cells(Nummer, 1 + + "geöffnet werden?"
Hole = MsgBox(Haupttext, vbOKCancel, Titeltext)
If Hole = vbOK Then
On Error GoTo Ladefehler
Workbooks.Open (.Cells(Nummer, 1 + .Text)
Ladefehler:
Hole = MsgBox("Fehler beim öffnen von" + Chr(10) + .Cells(Nummer, 1 + .Text, vbCritical, "Fehler beim Laden&quot
On Error Resume Next
End If
End If
If .Cells(Nummer, 7) <> "" Then Application.OnTime .Cells(Nummer, 7), "TerminErreicht", , False
.Cells(Nummer, 1).EntireRow.Delete
End With
End Sub

Sub auto_open()
ThisWorkbook.Saved = True
Termindateiauf
EreignissePrüfen
On Error GoTo 0
Application.OnTime "00:00:00", "TagesWechsel", , True
Termindateizu
End Sub

Sub Termindateiauf()
Application.ScreenUpdating = False
On Error GoTo nichtda
Workbooks.Open (ThisWorkbook.Path + "a AM-Termin-'Erinnerungsliste' - 2006&quot
Windows("a AM-Termin-'Erinnerungsliste' - 2006&quot.Visible = False
GoTo da
nichtda:
A = MsgBox("Die Termindatei a AM-Termin-'Erinnerungsliste' - 2006 wurde nicht gefunden!", vbCritical)
da:
On Error GoTo 0
Application.ScreenUpdating = True
End Sub

Sub Termindateizu()
Application.ScreenUpdating = False
Windows("a AM-Termin-'Erinnerungsliste' - 2006&quot.Visible = True
Workbooks("a AM-Termin-'Erinnerungsliste' - 2006&quot.Close (True)
Application.ScreenUpdating = True
End Sub

Sub EreignissePrüfen()
Dim Inhalt As Worksheet
Set Inhalt = ThisWorkbook.Sheets("Tabelle1&quot
Inhalt.Calculate
HeutTag = Inhalt.Range("g7&quot.Value
Inhalt.Range("h7&quot.Formula = ""
Set Inhalt = Workbooks("a AM-Termin-'Erinnerungsliste' - 2006&quot.Sheets("Tabelle1&quot
With Inhalt
'Termine der Vergangenheit
While (.Cells(7, 7).Value < HeutTag) And (.Cells(7, 7) <> "&quot
TerminAnzeigen (1)
Inhalt.Calculate
Wend
x = 1
TerminAnzeigen (x)
Inhalt.Calculate
Set Inhalt = ThisWorkbook.Sheets("Tabelle1&quot
Inhalt.Range("h7&quot.Formula = .Cells(7, 7).Text
End With
End Sub

Sub erinner()
Termindateiauf
ThisWorkbook.Sheets("Tabelle1&quot.Range("a7&quot.Formula = ""
TerminAnzeigen (1)
EreignissePrüfen
Termindateizu
End Sub

Sub TagesWechsel()
Termindateiauf
EreignissePrüfen
Termindateizu
Application.OnTime "00:00:00", "TagesWechsel", , True
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime "00:00:00", "TagesWechsel", , False
Set tw = ThisWorkbook.Sheets("Tabelle1&quot.Range("a7&quot
If tw.Text <> "" Then
Application.OnTime tw.Text, "erinner", , False
tw.Formula = ""
End If
On Error GoTo 0
ThisWorkbook.Saved = True
End Sub

Du bist Herr deiner Worte, doch einmal gesprochen, beherrschen sie Dich.

[img:59a5764521]http://www.cosgan.de/images/smilie/haushalt/g015.gif[/img:59a5764521]

Dieser Beitrag wurde 0 mal als hilfreich markiert.

Dennis

Mitglied seit
26.06.2003
Beiträge: 1232
Hilfreich: 0

Ok, zunächst mal kommt das Löschen der Zellen durch die letzte Zeile im ersten Makro zustande:

[color=red] .Cells(Nummer, 1).EntireRow.Delete [/color:0a260b14eb]

Vermutlich sollte damit ursprünglich erreicht werden, daß abgelaufene Termine gelöscht werden.
Auf jeden Fall kann die Makro-Zeile komplett eliminiert werden.

Warum nur "OK" in der Erinnerung steht muss ich noch herausfinden, die Antwort kommt dann gleich.

LG Thomy....hier kommt der Genuß

Dieser Beitrag wurde 0 mal als hilfreich markiert.

Ute-S

Mitglied seit
09.01.2006
Beiträge: 873
Hilfreich: 0

Hallo Blaue Lagune,

dazu reichen meine VBA-Kenntnisse leider auch nicht, um so etwas zu programmieren. Ich frage mich aber, warum Du etwas in Excel programmieren willst, was eigentlich Aufgabe eines Kalenders ist. Nutzt Ihr Outlook? Dann wäre ein Team-Kalender das geeignetere Instrument.

Viele Grüße
Ute

Dieser Beitrag wurde 0 mal als hilfreich markiert.
Hinweis: Sie müssen sich einloggen um antworten zu können. Noch kein Login? Hier registrieren.