Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
580to584
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
580to584
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Range geht nicht unter Worksheet_Change

Range geht nicht unter Worksheet_Change
08.03.2005 13:25:26
Fred
Muß noch mal Fragen !
Habe folgendes Makro, nur kommt es immer bei
Range("B3").Select
zum Fehler.
Hat das was mit Target zu tun ?
Was muß ich alles ändern damit das Makro läuft ?
Wo genau muß das Makro eingeführt werden ?
Das Makro soll immer nach einer Eingabe in der Tabelle ausgeführt werden.
Vielen Dank im voraus.
Gruß Fred
Hier nun das Listing:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Samstage As Worksheet
Dim Ergebnis As Worksheet
Dim Name As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim Anzahl As Integer
Dim Heute As Date
'Damit kann ich einfacher auf die Arbeitsblätter zugreifen
Set Samstage = ThisWorkbook.Worksheets("Samstage")
Set Ergebnis = ThisWorkbook.Worksheets("Ergebnis")
'Das Arbeitsblatt "Ergebnis" wird angezeigt
Ergebnis.Select
'Zelle B3 wird markiert
Range("B3").Select
'i, j und k sind Zählvariablen und werden zu Anfang mit 0 initialisiert
i = 0
j = 0
k = 0
'Anzahl ist die Zahl die ermittelt werden soll. Sie ist zu Anfang auch 0
Anzahl = 0
'Das heutige Datum wir ermittelt
Heute = Range("A3").Value
'Der erste Name der Ergebnisliste wird ermittelt
Name = Range("B3").Cells.Offset(i, 0).Value
'Die Namensliste wird durchgegangen, bis kein Name mehr dasteht
While Name <> "" And Name <> "usw."
'Jetzt wird in der Namensliste bei den Samstagen gesucht
Samstage.Select
Name2 = Range("C3").Cells.Offset(0, j).Value
While Name2 <> ""
'Wenn der gleiche Name gefunden wird
If Name2 = Name Then
'Jetzt wird die Spalte nach unten durchgegangen bis zum Datum, das Heute am nächsten ist
While Range("B4").Cells.Offset(k, 0) < Heute
'Wenn in der Spalte ein x gefunden wird, wird die Anzahl auf 0 zurückgesetzt
'ansonsten wird die Anzahl um 1 erhöht.
If Range("C4").Cells.Offset(k, j) = "x" Then
Anzahl = 0
Else
Anzahl = Anzahl + 1
End If
'Der Zähler wird um 1 erhöht, damit die nächste Zelle in der Spalte gelesen werden kann
k = k + 1
Wend
'k muss neu initialisiert werden
k = 0
End If
'Der Zähler wird um 1 erhöht, damit der nächste Name bei den Samstagen ermittelt werden kann
j = j + 1
'Der nächste Name bei den Samstagen wird ermittelt
Name2 = Range("C3").Cells.Offset(0, j).Value
Wend
'Die Anzahl wurde ermittelt und wird jetzt eingetragen
Ergebnis.Select
Range("B3").Cells.Offset(i, 1).Value = Anzahl
'Der Zähler wird um 1 erhöht, damit der nächste Name in der Ergbniliste ermittelt werden kann
i = i + 1
'j muss neu initialisiert werden
j = 0
'Anzahl muss auch zurückgesetzt werden
Anzahl = 0
'Der nächste Name in der Ergebnisliste wird ermittelt
Name = Range("B3").Cells.Offset(i, 0).Value
Wend
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nur mal auf den ersten Blick
08.03.2005 13:41:43
Franz
Hallo Fred,
muss denn B3 zwingend selektiert werden? Lass doch diese Zeile einfach mal raus. Wenn ich nicht was übersehen habe, ist es nicht nötig!
Grüße
Franz
AW: und auf den zweiten Blick...
08.03.2005 13:56:46
Matthias
Hallo,
...finde ich es nicht unproblematisch, innerhalb einer Ereignisprozedur des Tabellenblattes zu einem anderen Blatt zu wechseln.
Gruß Matthias
AW: und auf den zweiten Blick...
08.03.2005 14:03:16
Franz
Hallo Matthias,
stimmt. Du meinst, er soll das ganze Selektieren rauslassen, alles sauber referenzieren und im Blatt bleiben? A la:
With Worksheets("Ergebnis")
Grüße
Franz
so geht es auch nicht !
08.03.2005 14:50:04
Fred
Hallo Leute, danke für eure Mühe,
aber ich bekomme es nicht hin.
Wenn ich die Zeile Range("B3").Select weglasse,
hängt sich das Makro beim nächsten Range wieder auf.
Da ich keinerlei Ahnung von der Programmierung habe, würde ich mich
sehr darüber freuen, wenn mir jemand das Makro umschreibt.
Wie gesagt unter
Sub Samstage_zaehlen()
funktioniert das Teil.
Nur nicht mit
Private Sub Worksheet_Change(ByVal Target As Range)
Gruß
Fred
Anzeige
AW: so geht es auch nicht !
08.03.2005 14:58:31
Matthias
Hallo Fred,
versuch doch mal selbst:
Im Prinzip solltest z.B. du statt
Ergebnis.Select
Range("B3").Cells.Offset(i, 1).Value = Anzahl
so schreiben:
Sheets("Ergebnis").Range("B3").Cells.Offset(i, 1).Value = Anzahl
oder so, wenn mehrere Bezüge da sind:
With Sheets("Ergebnis")
.Range("B3").Cells.Offset(i, 1).Value = Anzahl
End With
Das Makro ist ja nicht so hoppladihopp zu durchschauen, und du willst ja auch was lernen! ;-)
Wenn noch Fragen da sind, gerne.
Viel Erfolg,
Matthias
Böhmische Dörfer
08.03.2005 15:26:40
Fred
Hallo Matthias,
das ganze Listing ist für mich nichts anderes als ein Buchstaben-Zahlen-Wirrwarr !
Ich habe absolut keine Ahnung von VBA.
Bis jetzt kann ich gerade mal ein Makro aufzeichnen, aber das war`s dann auch schon.
Dieses Makro hat mir jemand aus dem Forum erstellt.
Aber wie bitte soll ich das mit meinen Nicht-VBA-Kenntnissen umschreiben ?
Kann das ganze Problem nicht am Target Befehl liegen, also das sich Target mit
Range nicht versteht ?
Gibt es nicht eine andere Möglichkeit, ein Makro automatisch zu starten wenn
man eine Eingabe gemacht hat ?
Gruß
Fred
Gruß
Fred
Anzeige
AW: Böhmische Dörfer
08.03.2005 15:31:38
Matthias
Hallo Fred,
kannst du dann wenigstens mal eine Beispielmappe hochladen, damit ich sehen kann, was in den Blättern "Samstage" und "Ergebnis" überhaupt drinsteht?
Gruß Matthias
AW: @Matthias...
08.03.2005 16:04:17
HermannZ
Hallo Matthias,
schau dir einmal den Beitrag vom 07.03.2005 11:06:59 an da wirst du auch das Makro finden und sehen das die ganze schose schon einmal durchgekaut wurde nur unter anderem Namen.
Gruß hermann
Genau !
08.03.2005 16:11:02
Fred
Hallo leute, genau da habe ich das her.
Muß es aber für meine Zwecke ein wenig abändern !
Gruß
Fred
Ich bin raus
08.03.2005 16:17:09
Matthias
Hallo,
Sorry, ich bin raus.
Sollen sich die damit beschäftigen, die das Problem schon kennen.
@Hermann: Danke für den Hinweis!
Gruß Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige