Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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

Codelösung

Codelösung
12.02.2015 14:10:25
Horst
Hallo,suche Lösung für diesen Code. Macro startet wenn Zelle d116=0 und die Zellen c116 bis c131 mit Entern enferne.
Macro soll aber starten wenn d116=0 und in Spalten R und S sich irgendeine Zelle ändert die =>0 ist, wenn alle zellen leer soll nichts starten.
nun hoffe ich es verständlich beschrieben habe und bin gespannt wie die Lösung sein wird. Muss dazusagen , bin vollkommen Amateur.
+++++++++++++
Private Sub Worksheet_Change(ByVal Target As Range)
If [d116] = 0 Then Exit Sub
'wenn keine Änderung erkannt wird, wird das Makro nicht ausgeführt
af = [b116:b131] 'Indizes der für das AF qualifizierten Teams
pfad = ThisWorkbook.Path & "\" 'Pfad dieser Datei = Pfad zu den Bilddateien
For i = 1 To 16 'Schleife von 1 bis 16; die 16 Bildobjkete (clt1 bis clt16)  abarbeiten
bildnr = af(i, 1) 'Ermittelt die Nummer das anzuzeigenden Wappens
bilddatei = "clt" & bildnr & ".gif" 'Name der Grafikdatei
If Dir(pfad & bilddatei) = "" Then 'Überprüfen, ob die Datei vorhanden ist
p = "" 'Datei kann nicht gefunden werden, kein Bild laden
Else
p = pfad & bilddatei 'Datei vorhanden, Bilddatei laden
End If
'die Objekte heißen clt1  bis clt16; entsprechend muss im Makro auch af für den Namen genutzt  _
werden
'das 'i' als Schleifenvariable durchläuft, während das Makro abgearbeitet wird, die Werte von 1  _
bis 16
'es wird also zunächst das Objekt "clt" & 1 = clt1, dann "clt" & 2 = clt3  usw. abgearbeitet
'insgesamt wird der folgende Befehl damit 16 mal ausgeführt, wobei  i  die Werte von  1 bis 16  _
durchläuft
' den einzelnen Objelkten clt1  bis clt16 wird dabei immer das durch den Bereich b116:b131  _
vorgegebene Wappen zugeordnet
ActiveSheet.OLEObjects("clt" & i).Object.Picture = LoadPicture(p) 'Grafik dem Bildobjekt  _
zuweisen
Next 'nächstes Bildobjekt = nächstes 'i'
'aktuellen Stand (Indizes) in den Zellen c116:c131 speichern
'b116:b131 ist der aktuelle Stand, der in c116:c131 für einen spätern Vergleich als TEXT  _
gespeichert wird
[c116:c131].Value = [b116:b131].Value
'Die Zelle f20  wird durch diesen Eintrag automatisch zu 0, weil nun der aktuelle (b107:b131)  _
und der zuletzt gespecherte Stand (c107:c131) identisch sind
'Wenn Änderungen bei den Gruppenergebnissen die für das AF qualifizierten Teams ändern, ändert  _
sich auch Zelle d115
'das Makro wird dann beim Aufruf des Blattes wieder ausgeführt und die grafik angepasst
'Nebeneffekt:
'Eine Änderung der qualifizierten AF-horde kann sich auch auf die für das VF qualifizerten  _
horde auswirken
'Beim Schreiben der Werte in den Bereich c116:c131  registriert Excel eine Änderung am  _
Tabellenblatt und startet automatisch
'das Makro 

Private Sub Worksheet_Change für dieses Blatt
'Sollten sich Änderungen bei den für das VF qualifizierten horde ergeben haben, werden diese  _
dadurch automatisch erkannt und die grafik angepasst
End Sub

Bis bald Horst

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codelösung
17.02.2015 11:52:13
fcs
Hallo Horst,
das Ereignismakro
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
startet automatisch, wenn im Tabellenblatt manuell oder per Makro in einer Zelle ein Wert geändert wurde.
Es reagiert nicht auf Änderungen von Formelergebnissen.
Target ist dabei die Zelle/der Zellbereich, die/der geändert wurde.
Üblicher Weise prüft man zunächst, ob Target im relevanten Zellebereich liegt, d.h. die Zelladresse oder auch die Spalte/Zeile der geänderten Zelle werden geprüft. Zusätzlch prüft man Nebenbedingungen, um den Ablauf im Makro zu steuern.
Ein eine Beispieldatei wäre sehr hilfreich, wenn dir hier weiter geholfen werden soll.
Da du auch externe Bilddateien einbindest ware es sinnvoll, wenn du alles in eine ZIP-Datei packts und hier hochlädst.
Gruß
Franz

Anzeige
AW: Codelösung
19.02.2015 18:49:38
Horst
Userbild
Hallo Frans
habe mal ein bild dazu eingefügt, vielleicht kann ich es besser erklären.
Private Sub Worksheet_Change(ByVal Target As Range)
If [d116] = 0 Then Exit Sub
'wenn keine Änderung erkannt wird, wird das Makro nicht ausgeführt
af = [b116:b131] 'Indizes der für das AF qualifizierten Teams dies ist die gelbe spalte
diese gelbe Spalte entferne ich immer mit entern und dadurch starte das macro, nun wollte ich z.B A1 die Zelle anklicken oder auch mit button und das dann das macro startet.
Gruß Horst
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige