Supportnet / Forum / Tabellenkalkulation
Makro automatisch starten
Frage
Hallo,
ich arbeite derzeit an einer Excel Datei, wo ich Makros verwende. Ich kenne mich bis jetzt nicht sonderlich gut mit Makros aus deswegen Frage ich nun ob es möglich ist, dass ich durch eine Funktion ein Makro starten kann.
Ich dachte da so an eine Formel wie:
=öffne_makro1
Dies soll z.B. in B2 stehen und dann führt der das Makro aus. Mit auto_open als Makroname ist bei mir nicht machbar, denke ich mal, da ich insgesamt 17 Makros habe und durch einen Sverweis wird die Zahl für das richtige Makro gesucht.
Ich hoffe ihr versteht mich und könnt mir helfen.
Gruß
Dirk
[*][quote][sup][i]Admininfo: bitte vermeide Mehrfachanfragen in verschiedenen, bzw. gleichen Gruppen. Siehe [url=https://supportnet.de/groupfaqs/3][u]FAQ 2.[/u][/url][/i][/sup][/quote]
Antwort 1 von Sven-71
Antwort 2 von JoeKe
Hallo Dirk,
wenn deine Makros alle so: NameZahl heißen, kannst du es mal mit folgendem Code versuchen.
Option Explicit
Private Sub Worksheet_Calculate()
On Error Resume Next
Dim Makro As String
Makro = "makro" & Range("B2")
Application.Run Makro
End Sub
Der Code gehört in das VBA-Projekt deines Tabellenblattes in dem er ausgeführt werden soll. Bei jeder Berechnung in dem Blatt wird das Makro mit dem Namen "makro + dem Wert in B1" ausgeführt.
MfG
JöKe
wenn deine Makros alle so: NameZahl heißen, kannst du es mal mit folgendem Code versuchen.
Option Explicit
Private Sub Worksheet_Calculate()
On Error Resume Next
Dim Makro As String
Makro = "makro" & Range("B2")
Application.Run Makro
End Sub
Der Code gehört in das VBA-Projekt deines Tabellenblattes in dem er ausgeführt werden soll. Bei jeder Berechnung in dem Blatt wird das Makro mit dem Namen "makro + dem Wert in B1" ausgeführt.
MfG
JöKe
Antwort 3 von Dirki
bloß das problem was sich mir jetzt stellt, sieht wie folgt aus:
ich hab keine ahnung wie ich es dann starten kann!
ich habe 17 makros (jedes hat eine eigene farbe)
so sieht z.B. eins aus:
Sub Farbe12()
ActiveCell.Interior.Color = RGB(0, 159, 96)
End Sub
Ist als Modul in der Mappe gespeichert.
Vielleicht erkläre ich mein Problem am besten nochmal.
Es gibt 17 Gruppen, jede Gruppe hat eine eigenes Makro bzw eine Farbe.
Nun will ich es so haben:
eine funktion die das richtige makro abspielt
jedes makro fängt mit dem wort "farbe" an und hört mit einer zahl auf "01, 02, 03, 04,... 17"
es soll immer geguckt werden welche zahl in einem anderen feld steht (ich bezeichne es jetzt mal als D7) und dann soll sich das makro "farbe+D7" öffnen
dies soll halt in den feldern B2 bis B ultimo sein also keine eingrenzung
da würde ich mir halt wünschen, wenn ich mehr haben will, ziehe ich die formel einfach runter
ich weiß nicht ob wir aneinander vorbei reden, ob es nicht möglich ist oder ich es einfach nicht richtig verstehe und somit auch falsch erkläre....
hoffe ihr versteht, wo mein problem liegt
mfg
dirk
ich hab keine ahnung wie ich es dann starten kann!
ich habe 17 makros (jedes hat eine eigene farbe)
so sieht z.B. eins aus:
Sub Farbe12()
ActiveCell.Interior.Color = RGB(0, 159, 96)
End Sub
Ist als Modul in der Mappe gespeichert.
Vielleicht erkläre ich mein Problem am besten nochmal.
Es gibt 17 Gruppen, jede Gruppe hat eine eigenes Makro bzw eine Farbe.
Nun will ich es so haben:
eine funktion die das richtige makro abspielt
jedes makro fängt mit dem wort "farbe" an und hört mit einer zahl auf "01, 02, 03, 04,... 17"
es soll immer geguckt werden welche zahl in einem anderen feld steht (ich bezeichne es jetzt mal als D7) und dann soll sich das makro "farbe+D7" öffnen
dies soll halt in den feldern B2 bis B ultimo sein also keine eingrenzung
da würde ich mir halt wünschen, wenn ich mehr haben will, ziehe ich die formel einfach runter
ich weiß nicht ob wir aneinander vorbei reden, ob es nicht möglich ist oder ich es einfach nicht richtig verstehe und somit auch falsch erkläre....
hoffe ihr versteht, wo mein problem liegt
mfg
dirk
Antwort 4 von JoeKe
Hallo Dirk,
erstmal oben stehender Code läuft automatisch bei jeder Berechnung.
Wenn deine Makros alle mit "farbe" beginnen muss die Zeile:
so geändert werden.
Makro = "farbe" & Range("D7")
Was du damit erreichen willst, dass du von B2 bis Bxy eine Formel haben willst die dann ein Makro startet, versteh ich leider nicht.
Soll z.B. die Formel sich dann immer auf eine Zelle beziehen (in deinem Beispiel auf D7)?
Für mich hört sich das im Moment wie bedingte Formatierung mit mehr als 3 Bedingungen an.
Dazu kannst du dir mal dies ansehen.
Gruß
JöKe
erstmal oben stehender Code läuft automatisch bei jeder Berechnung.
Wenn deine Makros alle mit "farbe" beginnen muss die Zeile:
Makro = "makro" & Range("B2") so geändert werden.
Makro = "farbe" & Range("D7")
Was du damit erreichen willst, dass du von B2 bis Bxy eine Formel haben willst die dann ein Makro startet, versteh ich leider nicht.
Soll z.B. die Formel sich dann immer auf eine Zelle beziehen (in deinem Beispiel auf D7)?
Für mich hört sich das im Moment wie bedingte Formatierung mit mehr als 3 Bedingungen an.
Dazu kannst du dir mal dies ansehen.
Gruß
JöKe
Antwort 5 von JoeKe
ein thread sollte nun aber mal geschlossen werden.
Antwort 6 von Dirki
ich habe eine tabelle 01 bis 99, dies ist die A spalte in der B spalte soll der hintergrund geändert werden je nach dem was in C steht. du hast recht mit bedingte formatierung, doch es sind ja insgesamt 99 fällte müsste man jeden schreiben und dann halt auch mehr als 3 fälle...
Antwort 7 von Dirki
Es soll halt so sein, dass in jeder Zelle von B2:B101 eine Abfrage steht.
In dieser Abfrage soll drin stehen, dass das Makro mit den selben Endziffern wie dem Inhalt in Feld D2:D101.
So in der Art etwas: (ausgedachte Formel)
D2 =öffne Makro"letzten Endziffern von D2"
D3 =öffne Makro"letzten Endziffern von D3"
D4 =öffne Makro"letzten Endziffern von D4"
usw.
In dieser Abfrage soll drin stehen, dass das Makro mit den selben Endziffern wie dem Inhalt in Feld D2:D101.
So in der Art etwas: (ausgedachte Formel)
D2 =öffne Makro"letzten Endziffern von D2"
D3 =öffne Makro"letzten Endziffern von D3"
D4 =öffne Makro"letzten Endziffern von D4"
usw.
Antwort 8 von Dirki
Ich habe jetzt dieses eingefügt:
Option Explicit
Private Sub Worksheet_Calculate()
On Error Resume Next
Dim Makro As String
Makro = "farbe" & Range("D2")
Application.Run Makro
End Sub
Es funktioniert halt auch zum Teil, jedoch klappt es noch nicht so ganz wie ich es mir vorstelle.
Damit es funktioniert muss ich im VBA immer auf play klicken, dies soll nicht der Fall sein. Stattdessen soll es direkt bei einer Wert veränderung oder beim öffnen der Datei gemacht werden.
Das nächste Problem ist, dass es immer nur in der aktuellen Zelle geschieht, also die Zelle, welche makiert ist.
Dies führe ich auf den Teil (ActiveCell.Interior.Color = RGB(159, 96, 0)) des Makros zurück. Wie kann ich sichergehen dass er es immer in die Spalte C2 macht.
Das letzte und ein großes Problem ist, dass es bis jetzt auf das Informationsfeld "D2" zugreift und auf "C2" verändern soll. Jedoch soll auch die Felder D3 - D100 berücktsichtigt werden und die Felder C3 - C100 sollen auch bearbeitet werden.
Hoffe meine Probleme nehmen ein baldiges Ende damit ich mích an den nächsten Schritt wagen kann.
Wäre sehr schön und nett wenn ihr die passenden Lösungen für mich parat hättet!
Gruß
Dirk
Option Explicit
Private Sub Worksheet_Calculate()
On Error Resume Next
Dim Makro As String
Makro = "farbe" & Range("D2")
Application.Run Makro
End Sub
Es funktioniert halt auch zum Teil, jedoch klappt es noch nicht so ganz wie ich es mir vorstelle.
Damit es funktioniert muss ich im VBA immer auf play klicken, dies soll nicht der Fall sein. Stattdessen soll es direkt bei einer Wert veränderung oder beim öffnen der Datei gemacht werden.
Das nächste Problem ist, dass es immer nur in der aktuellen Zelle geschieht, also die Zelle, welche makiert ist.
Dies führe ich auf den Teil (ActiveCell.Interior.Color = RGB(159, 96, 0)) des Makros zurück. Wie kann ich sichergehen dass er es immer in die Spalte C2 macht.
Das letzte und ein großes Problem ist, dass es bis jetzt auf das Informationsfeld "D2" zugreift und auf "C2" verändern soll. Jedoch soll auch die Felder D3 - D100 berücktsichtigt werden und die Felder C3 - C100 sollen auch bearbeitet werden.
Hoffe meine Probleme nehmen ein baldiges Ende damit ich mích an den nächsten Schritt wagen kann.
Wäre sehr schön und nett wenn ihr die passenden Lösungen für mich parat hättet!
Gruß
Dirk
Antwort 9 von JoeKe
Hallo Dirk,
hast du den Code in das VBA-Projekt des Tabellenblattes eingefügt?
Mit rechts auf die Registerkarte des Blattes klicken, dort Code anzeigen auswählen und in das sich darauf öffnende Codefenster den Code hinein kopieren.
An dem Rest deies Problems arbeite ich grade also bitte noch einwenig geduld. ;-)
Gruß
JöKe
hast du den Code in das VBA-Projekt des Tabellenblattes eingefügt?
Mit rechts auf die Registerkarte des Blattes klicken, dort Code anzeigen auswählen und in das sich darauf öffnende Codefenster den Code hinein kopieren.
An dem Rest deies Problems arbeite ich grade also bitte noch einwenig geduld. ;-)
Gruß
JöKe
Antwort 10 von JoeKe
Hallo Dirk,
ich hoffe ich habe es so umgesetzt wie du es möchtest.
In das VBA-Projekt der Tabelle:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Färbung
End Sub
In ein Standartmodul:
Option Explicit
Public Zelle As Range, Makro As String
Sub Färbung()
For Each Zelle In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
Makro = "farbe" & Cells(Zelle.Row, 4)
Application.Run Makro
Next
End Sub
Sub farbe1()
Zelle.Interior.Color = RGB(255, 0, 0)
End Sub
Sub farbe2()
Zelle.Interior.Color = RGB(0, 255, 0)
End Sub
Sub farbe3()
Zelle.Interior.Color = RGB(0, 0, 255)
End Sub
Die Makros farbe1, farbe2 usw. muss du natürlich noch durch deine Codes ersetzen.
MfG
JöKe
ich hoffe ich habe es so umgesetzt wie du es möchtest.
In das VBA-Projekt der Tabelle:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Färbung
End Sub
In ein Standartmodul:
Option Explicit
Public Zelle As Range, Makro As String
Sub Färbung()
For Each Zelle In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
Makro = "farbe" & Cells(Zelle.Row, 4)
Application.Run Makro
Next
End Sub
Sub farbe1()
Zelle.Interior.Color = RGB(255, 0, 0)
End Sub
Sub farbe2()
Zelle.Interior.Color = RGB(0, 255, 0)
End Sub
Sub farbe3()
Zelle.Interior.Color = RGB(0, 0, 255)
End Sub
Die Makros farbe1, farbe2 usw. muss du natürlich noch durch deine Codes ersetzen.
MfG
JöKe
Antwort 11 von Dirki
Erstmal ganz großes Danke schön, aber ich kann leider erst am Freitag testen, wie es funktioniert! Da ich da erst wieder im Betrieb bin! Aber vielen Danke schon mal!
MfG
Dirk
MfG
Dirk
Antwort 12 von Dirki
Also hab es jetzt gerade eingefügt und bearbeitet. Es funktioniert alles, doch es gibt noch ein kleines Problem, der stellt die Färbung nicht in den C Feldern da, sondern in den B Feldern.
Wenn dass dann passt, ist aber leider erst ein Teil geschafft von dem was ich mir vorgenommen habe.
Insgesamt soll es so aussehen:
Spalte A = Postleitzahl
Spalte B = Daten
Spalte C = Färbung
Spalte D = Gruppenbezeichnung
Der Teil wäre damit erledigt. Doch nun möchte ich gerne auf einem weiteren Tabellenblatt eine Deutschlandkarte (die Spalten und Zeilen wurden kleingezogen und durch Färbung einiger Zellen) die in Postleitzahlenregionen unterteilt ist, die Zellen jeweils nach der Gruppe färben. Die einzelnen Zellen habe die zu einer PLZ Region gehören, habe ich bereits mit Namen versehen. So heißt eine z.B. PLZ10. Wie muss ich nun vorgehen bzw. wie lautet der Code, welcher nun gemacht werden muss?
Hoffe ihr könnt mir bei dem Problem auch noch zur Seite stehen. Wäre sehr freundlich von euch!
Gruß Dirk
Wenn dass dann passt, ist aber leider erst ein Teil geschafft von dem was ich mir vorgenommen habe.
Insgesamt soll es so aussehen:
Spalte A = Postleitzahl
Spalte B = Daten
Spalte C = Färbung
Spalte D = Gruppenbezeichnung
Der Teil wäre damit erledigt. Doch nun möchte ich gerne auf einem weiteren Tabellenblatt eine Deutschlandkarte (die Spalten und Zeilen wurden kleingezogen und durch Färbung einiger Zellen) die in Postleitzahlenregionen unterteilt ist, die Zellen jeweils nach der Gruppe färben. Die einzelnen Zellen habe die zu einer PLZ Region gehören, habe ich bereits mit Namen versehen. So heißt eine z.B. PLZ10. Wie muss ich nun vorgehen bzw. wie lautet der Code, welcher nun gemacht werden muss?
Hoffe ihr könnt mir bei dem Problem auch noch zur Seite stehen. Wäre sehr freundlich von euch!
Gruß Dirk
Antwort 13 von CaroS
Hallo Dirki,
zum ersten Teil, den Farben in Spalte C. Du müsstest in der Zeile For Each Zelle In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)) einfach nur die 2en durch 3en ersetzen:
Sub Färbung()
For Each Zelle In Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp))
Makro = "farbe" & Cells(Zelle.Row, 4)
Application.Run Makro
Next
Rem Färbung der Zellgruppen
ActiveSheet.Range("PLZ10").Select
Call farbe1
ActiveSheet.Range("PLZ15").Select
Call farbe2
ActiveSheet.Range("PLZ20").Select
Call farbe3
ActiveSheet.Range("PLZ25").Select
Call farbe4
...
End Sub
Ab "Rem Färbung der Zellgruppen" stehen die Zeilen, mit denen die von Dir angelegten Gruppen gefärbt werden. Mit Call farbe? wird jeweils ein Makro aufgerufen, das ? musst Du so anpassen, dass jede Gruppe durch das richtige Makro die richtige Farbe bekommt. Und natürlich die richtigen Namen PLZ10, PLZ15, ... einsetzen.
Gruß,
CaroS
zum ersten Teil, den Farben in Spalte C. Du müsstest in der Zeile For Each Zelle In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)) einfach nur die 2en durch 3en ersetzen:
Sub Färbung()
For Each Zelle In Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp))
Makro = "farbe" & Cells(Zelle.Row, 4)
Application.Run Makro
Next
Rem Färbung der Zellgruppen
ActiveSheet.Range("PLZ10").Select
Call farbe1
ActiveSheet.Range("PLZ15").Select
Call farbe2
ActiveSheet.Range("PLZ20").Select
Call farbe3
ActiveSheet.Range("PLZ25").Select
Call farbe4
...
End Sub
Ab "Rem Färbung der Zellgruppen" stehen die Zeilen, mit denen die von Dir angelegten Gruppen gefärbt werden. Mit Call farbe? wird jeweils ein Makro aufgerufen, das ? musst Du so anpassen, dass jede Gruppe durch das richtige Makro die richtige Farbe bekommt. Und natürlich die richtigen Namen PLZ10, PLZ15, ... einsetzen.
Gruß,
CaroS
Antwort 14 von Dirki
Also wenn ich aus den 2en 3en mache, dann sagt er mir Fehler und makiert mir diesen Teil gelb:
Application.Run Makro
Dann wenn ich auf den Code des neuen Tabellenblattes deinen Teil rein schreibe, dann und dann play drücke, muss ich ein Makro auswählen und dann sagt er mir:
"Fehler beim Kompilieren:
Außerhalb einer Prozedur ungültig."
und makiert mir den Teil des Namens.
Was mache ich falsch?
Ist es richtig, dass schon gesagt wird welches Makro jeweils färben soll denn woher weiß ich denn im vorraus welches farbe genommen werden, da muss doch wieder etwas sein von wegen gucken was in der zelle von dem code s.o. steht...
oder verstehe ich das falsch?
gruß dirk
Application.Run Makro
Dann wenn ich auf den Code des neuen Tabellenblattes deinen Teil rein schreibe, dann und dann play drücke, muss ich ein Makro auswählen und dann sagt er mir:
"Fehler beim Kompilieren:
Außerhalb einer Prozedur ungültig."
und makiert mir den Teil des Namens.
Was mache ich falsch?
Ist es richtig, dass schon gesagt wird welches Makro jeweils färben soll denn woher weiß ich denn im vorraus welches farbe genommen werden, da muss doch wieder etwas sein von wegen gucken was in der zelle von dem code s.o. steht...
oder verstehe ich das falsch?
gruß dirk
Antwort 15 von JoeKe
Hallo Dirk,
zum ersten Problem:
Den Code im Standart Modul durch diesen ersetzen:
Option Explicit
Public Zelle As Range, Makro As String
Sub Färbung()
For Each Zelle In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
Makro = "farbe" & Cells(Zelle.Row, 4)
Application.Run Makro
Next
End Sub
Sub farbe1()
Cells(Zelle.Row, 3).Interior.Color = RGB(255, 0, 0)
End Sub
Sub farbe2()
Cells(Zelle.Row, 3).Interior.Color = RGB(0, 255, 0)
End Sub
Sub farbe3()
Cells(Zelle.Row, 3).Interior.Color = RGB(0, 0, 255)
End Sub
Das zweite Problem hab ich noch nicht ganz verstanden!
Werde mich aber mal daran versuchen.
MfG
JöKe
zum ersten Problem:
Den Code im Standart Modul durch diesen ersetzen:
Option Explicit
Public Zelle As Range, Makro As String
Sub Färbung()
For Each Zelle In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
Makro = "farbe" & Cells(Zelle.Row, 4)
Application.Run Makro
Next
End Sub
Sub farbe1()
Cells(Zelle.Row, 3).Interior.Color = RGB(255, 0, 0)
End Sub
Sub farbe2()
Cells(Zelle.Row, 3).Interior.Color = RGB(0, 255, 0)
End Sub
Sub farbe3()
Cells(Zelle.Row, 3).Interior.Color = RGB(0, 0, 255)
End Sub
Das zweite Problem hab ich noch nicht ganz verstanden!
Werde mich aber mal daran versuchen.
MfG
JöKe
Antwort 16 von Dirki
Und bei Extras -> Makros
steht jetzt nicht mehr immer nur der makroname und die zahl sondern auch der dateiname und modul1
ist schon bisschen verzwickt glaube ich...
steht jetzt nicht mehr immer nur der makroname und die zahl sondern auch der dateiname und modul1
ist schon bisschen verzwickt glaube ich...
Antwort 17 von JoeKe
Hallo Dirk,
ich habe mal meine Testdatei hochgeladen. Sieh sie dir mal an und sag mir ob sie in etwa so funktioniert wie du es möchtest.
Farbe
Gruß
JöKe
ich habe mal meine Testdatei hochgeladen. Sieh sie dir mal an und sag mir ob sie in etwa so funktioniert wie du es möchtest.
Farbe
Gruß
JöKe
Antwort 18 von dirki
also entweder mache ich was falsch oder ich sehe nur veränderungen, wenn ich die zahl 1 2 oder 3 ändere aber nicht die farbe auf der seite karte....
Antwort 19 von JoeKe
Hallo Dirk,
die Beispieldatei arbeitet nur mit 3 Farben, da ich keine Lust hatte 99 Farbcodes zu schreiben.
Sowohl die Spalte C auf dem Blatt "Daten" als auch die Gruppen auf dem Blatt "Karte" ändern ihre Farbe sobald auf dem Blatt "Daten" eine Änderung stattfindet (im Beispiel dürfen in Spalte D nur die Werte 1-3 stehen).
Wenn du mal auf beiden Blättern die Farbformatierungen löschst, und in "Daten" eine Eingabe machst, siehst du den Ablauf. Wenn alles Felder bereits gefärbt sind findet auch keine Veränderung statt.
Gruß
JöKe
die Beispieldatei arbeitet nur mit 3 Farben, da ich keine Lust hatte 99 Farbcodes zu schreiben.
Sowohl die Spalte C auf dem Blatt "Daten" als auch die Gruppen auf dem Blatt "Karte" ändern ihre Farbe sobald auf dem Blatt "Daten" eine Änderung stattfindet (im Beispiel dürfen in Spalte D nur die Werte 1-3 stehen).
Wenn du mal auf beiden Blättern die Farbformatierungen löschst, und in "Daten" eine Eingabe machst, siehst du den Ablauf. Wenn alles Felder bereits gefärbt sind findet auch keine Veränderung statt.
Gruß
JöKe
Antwort 20 von JoeKe
Kann es sein das ich dich falsch verstanden habe, und du die Farben auf dem Blatt "Karte" vorgeben willst? Also die Spalte C auf "Daten" entsprechend den Vorgaben auf "Karte" gefärbt werden soll?
Besteht eventuell die Möglichkeit, dass du deine Datei mal hochlädst?
Gruß
JöKe
Besteht eventuell die Möglichkeit, dass du deine Datei mal hochlädst?
Gruß
JöKe
Antwort 21 von dirki
aber es verändern sich immer nur der block ganz oben und in der reihe darunter die beiden linken...
die anderen bleiben weiß,
der oberste färbt sich rot, der linke grün und der rechts daneben blau...
oder nicht?
die anderen bleiben weiß,
der oberste färbt sich rot, der linke grün und der rechts daneben blau...
oder nicht?
Antwort 22 von JoeKe
das ist richtig so! Wie gesagt arbeite ich im Beispiel nur mit 3 Farben! Der Block oben ist Grupp1 und erhält die Farbe 1, der zweite Gruppe2 - Farbe 2, der dritte Gruppe3 - Farbe 3.
Der vierte ist Gruppe4, aber eine Farbe 4 habe ich im Beispiel nicht!
Du musst das schon deinen Vorgaben anpassen.
Gruß
Der vierte ist Gruppe4, aber eine Farbe 4 habe ich im Beispiel nicht!
Du musst das schon deinen Vorgaben anpassen.
Gruß
Antwort 23 von dirki
ja bloß bei mir ist ja ungewiss welche farbe der block haben soll, dass soll ja genau so funktionieren wie bei den makros auf der seite daten... deswegen komm ich grad nicht so ganz hinter...
gruß
dirk
gruß
dirk
Antwort 24 von JoeKe
und wonach soll es sich richten welche Farbe der Block bekommt?
Im Moment ist es so, wenn in Spalte D eine 1 steht, bekommt der Block1 die selbe Farbe wie die betreffende Zelle in Spalte C. Das selbe bei 2 und 3.
Im Moment ist es so, wenn in Spalte D eine 1 steht, bekommt der Block1 die selbe Farbe wie die betreffende Zelle in Spalte C. Das selbe bei 2 und 3.
Antwort 25 von dirki
Also es ist ja so:
Tabellenblatt Daten:
Spalte A = die PLZ
Spalte B = die Summe welche die Gruppe bestimmt
Spalte C = die Farbe welche durch D ermittelt wird
Spalte D = die Gruppe welche durch die Summer ermittelt wird
Nun soll auf dem Tabellenblatt Daten die einzelnen Gruppen so dargestellt werden wie die in Spalte C doch halt auf mehrer Felder.
Verstehst du was ich meine?
Gruß
Dirk
Tabellenblatt Daten:
Spalte A = die PLZ
Spalte B = die Summe welche die Gruppe bestimmt
Spalte C = die Farbe welche durch D ermittelt wird
Spalte D = die Gruppe welche durch die Summer ermittelt wird
Nun soll auf dem Tabellenblatt Daten die einzelnen Gruppen so dargestellt werden wie die in Spalte C doch halt auf mehrer Felder.
Verstehst du was ich meine?
Gruß
Dirk
Antwort 26 von dirki
ich meine natürlich bei zweiterem tabellenblatt karte
Antwort 27 von JoeKe
Antwort 28 von dirki
Verstehst du es, wenn ich sage, dass alles so sein soll wie in dem code den ihr mir bis jetzt gegeben habt, bloß das halt die farbe die dabei rauskommt auf einen bestimmten bereich im tabellenblatt karte übertragen wird?
Antwort 29 von JoeKe
macht es jetzt doch!?
Antwort 30 von dirki
So wie ich es sehe (stelle es diagonal vor) passiert immer nur dies:
blau - rot - grün
sonst nichts ich kann eingeben was ich will es bleibt immer bei blau rot grün
wenn ich dann überall 1 eintrage, dann färbt sich nur jede dritte reihe rot und nicht alle, da liegt das problem.
wenn die zahl vorhanden ist, färbt sich die reihe in einer festgelegten farbe, aber ist die zahl nicht vorhanden, bleibt die reihe leer.
verstehst du jetzt was ich meine?
blau - rot - grün
sonst nichts ich kann eingeben was ich will es bleibt immer bei blau rot grün
wenn ich dann überall 1 eintrage, dann färbt sich nur jede dritte reihe rot und nicht alle, da liegt das problem.
wenn die zahl vorhanden ist, färbt sich die reihe in einer festgelegten farbe, aber ist die zahl nicht vorhanden, bleibt die reihe leer.
verstehst du jetzt was ich meine?
Antwort 31 von JoeKe
Ich verstehe immer noch nicht nach welchen Kriterien sich die Zellen auf dem Blatt "Karte" färben sollen.
Wo soll was stehen damit welche Zelle welche Farbe hat.
Richtet sich das nach den PLZ in Spalte A?
Alle Zellen die in "Karte" den Namen "PLZ10" habne erhalten die selbe Farbe wie die Zellen der Spalte C bei den entsprechenden PLZ?
Gruß
Wo soll was stehen damit welche Zelle welche Farbe hat.
Richtet sich das nach den PLZ in Spalte A?
Alle Zellen die in "Karte" den Namen "PLZ10" habne erhalten die selbe Farbe wie die Zellen der Spalte C bei den entsprechenden PLZ?
Gruß
Antwort 32 von dirki
Zitat:
Alle Zellen die in "Karte" den Namen "PLZ10" habne erhalten die selbe Farbe wie die Zellen der Spalte C bei den entsprechenden PLZ?
Alle Zellen die in "Karte" den Namen "PLZ10" habne erhalten die selbe Farbe wie die Zellen der Spalte C bei den entsprechenden PLZ?
so sieht es aus
jetzt verstanden?
Antwort 33 von JoeKe
Hallo Dirk,
nein leider versteh ich das immer noch nicht!
Nach welchen Kriterien sollen die Zellen auf dem Blatt "Karte" gefärbt werden?
Welche Zelle erhält welche Farbe wenn wo, was steht?
Die Zellen hast du den Namen PLZ10, PLZ15 usw. gegeben.
Soll sich die Farbe nach den PLZ richten?
Gruß
nein leider versteh ich das immer noch nicht!
Nach welchen Kriterien sollen die Zellen auf dem Blatt "Karte" gefärbt werden?
Welche Zelle erhält welche Farbe wenn wo, was steht?
Die Zellen hast du den Namen PLZ10, PLZ15 usw. gegeben.
Soll sich die Farbe nach den PLZ richten?
Gruß
Antwort 34 von JoeKe
AW33 hat sich erledigt!!!!!!!!!!!! ;-)
Antwort 35 von JoeKe
Hallo Dirk,
mag sein das es am Wetter liegt, dass ich heute etwas schwer kapiere, aber gehören nicht alle
PLZ:
10100, 10200, 10300 usw. zur Gruppe1
20100, 20200, 20300 usw. zur Gruppe2
usw.?
Wenn ja macht mein Code doch genau das was du möchtest.
Hast du ihn schonmal in deine Datei übernommen und deinen Vorgaben abgepasst?
Gruß
JöKe
mag sein das es am Wetter liegt, dass ich heute etwas schwer kapiere, aber gehören nicht alle
PLZ:
10100, 10200, 10300 usw. zur Gruppe1
20100, 20200, 20300 usw. zur Gruppe2
usw.?
Wenn ja macht mein Code doch genau das was du möchtest.
Hast du ihn schonmal in deine Datei übernommen und deinen Vorgaben abgepasst?
Gruß
JöKe
Antwort 36 von dirki
also die PLZ hat nichts direkt mit der Gruppe zu tun, die schreitet nur dann ein, wenn es um die farbgebung auf der karte steht
die gruppe hat damit zu tun, wie hoch eine bestimmte summe ist wenn diese hoch ist wird die gruppe niedriger wenn die summe klein ist wird die gruppe größer
BSP 1:
Summe = 3 = Gruppe 17 = blau
BSP2:
Summe = 51 = Gruppe 1 = rot
und dann soll halt auf der karte (nach bsp 2) der bereich der PLZ rot gefärbt werden
hoffe du kannst mich jetzt verstehen...
die gruppe hat damit zu tun, wie hoch eine bestimmte summe ist wenn diese hoch ist wird die gruppe niedriger wenn die summe klein ist wird die gruppe größer
BSP 1:
Summe = 3 = Gruppe 17 = blau
BSP2:
Summe = 51 = Gruppe 1 = rot
und dann soll halt auf der karte (nach bsp 2) der bereich der PLZ rot gefärbt werden
hoffe du kannst mich jetzt verstehen...
Antwort 37 von JoeKe
Hallo Dirk,
ich hoffe diesmal passt es! ;-))
der dritte Versuch
Das ganze muss selbstverständlcih noch deiner Datei angepasst werden.
Wenn du noch Fragen hast ruhig melden. Aber ich werde erst Montag wieder hier sein.
Schönes Wochenende
JöKe
ich hoffe diesmal passt es! ;-))
der dritte Versuch
Das ganze muss selbstverständlcih noch deiner Datei angepasst werden.
Wenn du noch Fragen hast ruhig melden. Aber ich werde erst Montag wieder hier sein.
Schönes Wochenende
JöKe
Antwort 38 von Dirki
Also ich habe es jetzt eingebaut und alles, da ich die Datei mit nach Hause genommen habe, konnte ich es machen. Ging zum Glück relativ schnell.
Doch ich habe noch ein Problem.
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Den Teil makiert er mir immer geld, wenn ich auf Debuggen klicke, doch wenn ich auf Beenden klicke ist alles in Ordnung und er färbt die Felder richtig. Scheint wohl nur ein kleiner schönheitsfehler zu sein...
Wünsche dir auch ein schönes Wochenende, bis Montag dann.
Gruß Dirk
Doch ich habe noch ein Problem.
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Den Teil makiert er mir immer geld, wenn ich auf Debuggen klicke, doch wenn ich auf Beenden klicke ist alles in Ordnung und er färbt die Felder richtig. Scheint wohl nur ein kleiner schönheitsfehler zu sein...
Wünsche dir auch ein schönes Wochenende, bis Montag dann.
Gruß Dirk
Antwort 39 von Dirki
Ach ja ein Problem was ich auch noch habe hängt mit einem SVERWEIS zusammen.
Denn damit ermittel ich die Gruppen, doch da passt es nicht so ganz.
Anzahl Gruppe
3 ----------- 1
6 ----------- 2
9 ----------- 3
Wenn jetzt die Anzahl 2 ist müsste er eigentlich in Gruppe 1 doch er zeigt mir #NV. Wenn ich jetzt 4 eintrage ist es Gruppe 1 und nicht Gruppe 2. Wie kann ich sagen, dass er immer bis zur Anzahlsgrenze geht und dann die Gruppe die dazu steht und nicht immer die Zahl die am nächsten dran ist?
Hoffe du verstehst was ich meine!
Gruß Dirk
Denn damit ermittel ich die Gruppen, doch da passt es nicht so ganz.
Anzahl Gruppe
3 ----------- 1
6 ----------- 2
9 ----------- 3
Wenn jetzt die Anzahl 2 ist müsste er eigentlich in Gruppe 1 doch er zeigt mir #NV. Wenn ich jetzt 4 eintrage ist es Gruppe 1 und nicht Gruppe 2. Wie kann ich sagen, dass er immer bis zur Anzahlsgrenze geht und dann die Gruppe die dazu steht und nicht immer die Zahl die am nächsten dran ist?
Hoffe du verstehst was ich meine!
Gruß Dirk
Antwort 40 von CaroS
Hallo!
Der SVERWEIS arbeitet so völlig korrekt, wie in der Hilfe beschrieben. Du kannst verschiedene Dinge tun:
die Verweistabelle am Anfang um eine Zeile erweitern:
-99 . . 0
3 . . . . 1
6 . . . . 2
9 . . . . 3
oder die Verweistabelle so erweitern, dass sie alle vorkommenden Werte enthält, also
1 . . . . 1
2 . . . . 1
3 . . . . 1
4 . . . . 2
5 . . . . 2
usw.
oder Du verwendest statt des SVERWEISes die Formel = GANZZAHL((A1 - 1) / 3) + 1 (bezieht sich auf A1 = 1).
Oder Du liest Dir mal die Hilfe zur Tabellenfunktion VERGLEICH durch, vor allen zu Vergleichstyp = 1.
Gruß,
CaroS
Der SVERWEIS arbeitet so völlig korrekt, wie in der Hilfe beschrieben. Du kannst verschiedene Dinge tun:
die Verweistabelle am Anfang um eine Zeile erweitern:
-99 . . 0
3 . . . . 1
6 . . . . 2
9 . . . . 3
oder die Verweistabelle so erweitern, dass sie alle vorkommenden Werte enthält, also
1 . . . . 1
2 . . . . 1
3 . . . . 1
4 . . . . 2
5 . . . . 2
usw.
oder Du verwendest statt des SVERWEISes die Formel = GANZZAHL((A1 - 1) / 3) + 1 (bezieht sich auf A1 = 1).
Oder Du liest Dir mal die Hilfe zur Tabellenfunktion VERGLEICH durch, vor allen zu Vergleichstyp = 1.
Gruß,
CaroS
Antwort 41 von CaroS
Hallo Dirki,
kleine Korrektur zu meinem ersten Vorschlag: Hinzufügen einer Zeile genügt nicht, man muss die ganze Zuordnung ein klein wenig verschieben:
1 . . . . 1
4 . . . . 2
7 . . . . 3
10 . . . 4
Dann kann die SVERWEIS-Formel so bleiben, wie sie jetzt ist.
Gruß,
CaroS
kleine Korrektur zu meinem ersten Vorschlag: Hinzufügen einer Zeile genügt nicht, man muss die ganze Zuordnung ein klein wenig verschieben:
1 . . . . 1
4 . . . . 2
7 . . . . 3
10 . . . 4
Dann kann die SVERWEIS-Formel so bleiben, wie sie jetzt ist.
Gruß,
CaroS
Antwort 42 von Dirki
Alles klar, damit hätte ich schon mal ein Problem gelöst aber nun ist noch das Problem mit Debuggen oder Beenden.
Gruß
Dirk
Gruß
Dirk
Antwort 43 von CaroS
Das übernimmt dann aber besser wieder JöKe, denn wie man bei AW13-15 gesehen hat, bringt es nicht viel, sich in fremden Code einzumischen. Gruß, CaroS
Antwort 44 von JoeKe
Moin Dirk,
Welche Fehlermeldung erhälst du?
Ich vermute mal:
Excel kann das Makro ´farbexy´ nicht finden!?
Wenn ja bedeutet das, dass in deiner Liste ein Wert berechnet wird, dem kein Makro zugeordnet ist.
Man könnte für solche Fälle eine Fehlermeldung unterdrücken. Aber weil dadurch alle Laufzeit Fehlermeldungen unterdrückt werden, muss man sich sicher sein, dass dadurch die gewünschten Ergebnisse nicht verfälscht werden. Deshalb ist es sinnvoller den Code so zu gestallten das Fehler nicht auftreten können.
MfG
JöKe
Welche Fehlermeldung erhälst du?
Ich vermute mal:
Excel kann das Makro ´farbexy´ nicht finden!?
Wenn ja bedeutet das, dass in deiner Liste ein Wert berechnet wird, dem kein Makro zugeordnet ist.
Man könnte für solche Fälle eine Fehlermeldung unterdrücken. Aber weil dadurch alle Laufzeit Fehlermeldungen unterdrückt werden, muss man sich sicher sein, dass dadurch die gewünschten Ergebnisse nicht verfälscht werden. Deshalb ist es sinnvoller den Code so zu gestallten das Fehler nicht auftreten können.
MfG
JöKe
Antwort 45 von Dirki
Sub Karte()
Dim KBereich As String
Dim bereich As Range, istFarbe As Long
For Each bereich In Worksheets("Daten").Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
istFarbe = Worksheets("Daten").Cells(bereich.Row, 3).Interior.Color
KBereich = "PLZ" & Left(bereich, 2)
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Next
End Sub
da wird immer etwas gelb makiert
laufzeitfehler 1004
Dim KBereich As String
Dim bereich As Range, istFarbe As Long
For Each bereich In Worksheets("Daten").Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
istFarbe = Worksheets("Daten").Cells(bereich.Row, 3).Interior.Color
KBereich = "PLZ" & Left(bereich, 2)
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Next
End Sub
da wird immer etwas gelb makiert
laufzeitfehler 1004
Antwort 46 von JoeKe
Hallo Dirk,
das hilft mir nicht weiter.
Was steht denn in der Fehlermeldung?
das hilft mir nicht weiter.
Was steht denn in der Fehlermeldung?
Antwort 47 von Dirki
Also wie gesagt dieser Satz wird makiert:
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Laufzeitfehler 1004
Anwendungs- oder Objektdefinierter Fehler
mehr steht da nicht...
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Laufzeitfehler 1004
Anwendungs- oder Objektdefinierter Fehler
mehr steht da nicht...
Antwort 48 von JoeKe
Hallo Dirk,
das ist nun leider eine Fehlermeldung, die ich ohne deine original Datei nicht nachvollziehen kann. Da der Fehler bei mir nicht auftriit und du sagst dass, wenn du die Fehlermeldung mit "beenden" bestätigst, der Code funktioniert, füge das fett makiert mal ein:
Sub Karte()
Dim KBereich As String
Dim bereich As Range, istFarbe As Long
On Error Resume Next
For Each bereich In Worksheets("Daten").Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
istFarbe = Worksheets("Daten").Cells(bereich.Row, 3).Interior.Color
KBereich = "PLZ" & Left(bereich, 2)
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Next
End Sub
Gruß
das ist nun leider eine Fehlermeldung, die ich ohne deine original Datei nicht nachvollziehen kann. Da der Fehler bei mir nicht auftriit und du sagst dass, wenn du die Fehlermeldung mit "beenden" bestätigst, der Code funktioniert, füge das fett makiert mal ein:
Sub Karte()
Dim KBereich As String
Dim bereich As Range, istFarbe As Long
On Error Resume Next
For Each bereich In Worksheets("Daten").Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
istFarbe = Worksheets("Daten").Cells(bereich.Row, 3).Interior.Color
KBereich = "PLZ" & Left(bereich, 2)
Worksheets("Karte").Range(KBereich).Interior.Color = istFarbe
Next
End Sub
Gruß
Antwort 49 von Dirki
http://rapidshare.de/files/23470033/Projekt_Landkarte.xls.html
bitte sag mir wenn du die datei hast, damit ich sie löschen kann!
hoffe du kannst damit mehr anfangen!
bitte sag mir wenn du die datei hast, damit ich sie löschen kann!
hoffe du kannst damit mehr anfangen!

