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

Zelle, die elbst aktualisiert / Makro periodisch

Zelle, die elbst aktualisiert / Makro periodisch
Holger
Guten Morgen,
neues Problem. Oder zwei neue Probleme.
1 Wenn in Zelle A1 ein Wert steht, wird per Makro in Zelle B1 (je nach Wert von A1) etwas reingeschrieben. Soweit so gut. Allerdings muss dazu der User das Makro ausführen.
Kann ich die Zelle B1 so programmieren, dass der Code quasi ständig ausgeführt wird, so dass sich die Zellen selber aktualisieren ohne dass das Makro laufen muss?
2 Für eine andere Geschichte. Kann man ein Makro in festgelegten Zeitabständen laufen lassen?
Beide Probleme konnte ich durch Internetrecherche nicht mal eingrenzen, wie man es angehen könnte.
AW: Zelle, die elbst aktualisiert / Makro periodisch
07.05.2010 08:52:26
Hajo_Zi
Hallo Holger,
zu 1 Warum ständig, er ist doch von A1 abhängig
Ist A1 eine Eingabe oder Formel?
zu 2 ontime

AW: Zelle, die elbst aktualisiert / Makro periodisch
07.05.2010 09:09:41
Holger
Es ist so:
Du gibst in Zelle A1 etwwas ein. Dann erscheint in Zelle B1 z.B ein "OK".
Dies aber erst sobald das Makro gestartet wird. Ich möchte, dass in Zelle B1
sofort das "OK" erscheint sobald in Zelle A1 etwas eingegeben wird.
Habe es probiert, inddem ich eine Funktion geschrieben haben.
Dann habe ich in Zelle B1 eingegeben =FUNCTION
Funktioniert aber nicht, es erscheint #NAME. Lasse ich die Function aus dem VBA laufen, wird
die Zelle B1 ordentlich gefüllt.
Heul, wie geht sowas denn?
Anzeige
AW: Zelle, die elbst aktualisiert / Makro periodisch
07.05.2010 09:14:19
Hajo_Zi
Hallo Holger,
warum machst Du das mt einem Makro?
Benutze das Change Ereignis unter der Tabelle.
Dein Makro sehe ich nicht.
Gruß Hajo
Change Ereignis?
07.05.2010 09:22:48
Holger
Change ereignis? Nie gehört, wie geht das?
Ich habe bei mir in VBA nur alle möglichen Workbook Ereignisse zur Auswahl, aber kein einziges, welches sich auf eine Tabelle bezieht. Kannst du mir da bitte einen Tip geben?
AW: Change Ereignis?
07.05.2010 09:27:52
Hajo_Zi
Hallo Holger,
unter die Tabelle.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Select Case Target.Value
Case 1
Range("B1") = "sehr gut"
Case 2
Range("B1") = "gut"
Case Else
Range("B1") = "keine Auswahl"
End Select
End If
End Sub
Gruß Hajo
Anzeige
AW: Change Ereignis?
07.05.2010 09:41:14
Holger
AH, das klingt interessant.
Allerdings verstehe ich die drei Cases nicht so ganz.
Wird eine 1 eingegeben, dann ...m wird eine 2 eingegebe, dann ...,
und bei allem anderen, dann ... ! So richtig?
Wie kann ich das nicht nur auf die Zelle A1 beziehen, sondern auf alle Zellen der Spalte A?
AW: Change Ereignis? -> Noch was
07.05.2010 09:44:02
Holger
Was meinst du mit unter die Tabelle?
WorkSheet_Change ist doch der Name des Makros, oder nicht?
Wo ist da das Feature, dass es ausgeführt wird, wenn sich in der Tabelle etwas verändert?
*Verwirrung*
Habs kapiert!!! Klappt!!!! DANKE HAJO
07.05.2010 09:50:27
Holger
Klasse, ein Doppelklick auf die Tabelle und dort den Code eingeben.
Dann einmalig das Makro starten und die Sache läuft! Perfekt!
Danke Dir!!!!
Anzeige
@HAJO aber für eine ganze SPalte?
07.05.2010 09:54:54
Holger
Die Frage bleibt noch, wie ich das für eine ganze Spalte programmieren kann?
Also nicht nur für A1 sondern für die ganze Spalte A oder einen Range A1 A200 zum Beispiel.
AW: für eine ganze Spalte?
07.05.2010 10:02:09
Hajo_Zi
Hallo Holger,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Select Case Target.Value
Case 1
Target.Offset(0, 1) = "sehr gut"
Case 2
Target.Offset(0, 1) = "gut"
Case Else
Target.Offset(0, 1) = "keine Auswahl"
End Select
End If
End Sub
Gruß Hajo
Anzeige
Klappt auch, aber warum?
07.05.2010 10:13:02
Holger
Der Code klappt. Die zweite Ziffer im Offset gibt wohl an, um wieviel weitergezählt wird von dem ursprünglichen TARGET.COLUMN = 1.
Aber was ist OFFSET genau und was macht Target.Count = 1 ?
Will den Code gerne auch verstehen, aber echt Tausend Dank für deine Hilfe,
ich hätte den ersten Code wahrscheinlich in eine Schleife durch die Zellen gepackt :-/
AW: Offset, Count
07.05.2010 10:32:05
Hajo_Zi
Hallo Holger,
Target.count =1 es wurde nur eine Zelle geändert, in Excel kannst Du ja auch mehrere Zellen mit einmal ändern.
Das Offset hast Du richtig verstanden Erste Zeilen dann Spalten. 0 Zeilen nach unten und 1 Spalte nach rechts -1 eine Spalte nach Links.
Gruß Hajo
Anzeige
Noch eine Frage zu COUNT
07.05.2010 10:42:25
Holger
Der User hat die Möglichkeit über einen cmd Button, mehrere Zellen der Spalte A mit einem Wert zu versehen. Muss ich dann das Target.count einfach weglassen, damit es weiterhin funktioniert?
Mann, was ich heute alles lerne :-)
AW: Noch eine Frage zu COUNT
07.05.2010 10:45:16
Hajo_Zi
Hallo Holger,
dan läuft der Code nicht. Das ist dannn ein andere Ansatz.
so in der Art.
Option Explicit             ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 04.08.09                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/
' Füllfarbe
' für Schrift RaZelle.Font.ColorIndex
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("L22:M39, O21:O26")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17 , C19:AG19 ,  C21: _
AG21 , C27:AE27 , C29:AE29, C31:AE31, C33:AE33"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49 ,C51:AG51 , C53: _
AG53 , C59:AF59 , C61:AF61 , C63:AF63 , C65:AF65"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81 , C83:AG83 ,  _
C85:AG85 ,C91:AF91 , C93:AF93 , C95:AF95 , C97:AF97"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111 , C113:AG113 , C115: _
AG115 , C117:AG117 , C123:AG123 , C125:AG125"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139 , C141:AF141 ,  _
C143:AF143 , C145:AF145 , C147:AF147 , C149:AF149"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163 , C165:AG165 ,  _
C171:AF171 , C173:AF173 , C175:AF175 , C177:AF177 "), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191 , C193:AG193 ,  _
C195:AG195 , C197:AG197"))
' ab Vesion XP braucht der Schutz nicht aufgehoben werden
' Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
' Zelle die in dem Bereich liegen auf die Varible schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
Select Case UCase(.Value) ' UMWANDLUNG DER Eingabe in Großbuchstaben
Case "1"
.Interior.ColorIndex = 1
' schwarz
.Font.ColorIndex = 2
' Schriftfarbe weiß
'.NumberFormat = "General"
' Zellenformat Standard
Case "2"
.Interior.ColorIndex = 6
' gelb
.Font.ColorIndex = 0
' Schriftfarbe automatisch
'.NumberFormat = "General"
' Zellenformat Standard
Case "3"
.Interior.ColorIndex = 3
' rot
.Font.ColorIndex = 2
' Schriftfarbe Weiß
'.NumberFormat = ";;;"
' nicht sichtbar
Case "4"
.Interior.ColorIndex = 4
' grün
.Font.ColorIndex = 0
' Schriftfarbe automatisch
'.NumberFormat = "General"
' Zellenformat Standard
Case "KLAUS"
.Interior.ColorIndex = 5
' blau
.Font.ColorIndex = 15
' Schriftfarbe automatisch
'.NumberFormat = "General"
' Zellenformat Standard
Case Else
.Interior.ColorIndex = xlNone
' Keine
.Font.ColorIndex = 0
' Schriftfarbe automatisch
'.NumberFormat = "General"
' Zellenformat Standard
End Select
End With
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing
End Sub
Davon war bisher nicht die Rede.
Gruß Hajo
Anzeige
AW: Noch eine Frage zu COUNT
07.05.2010 10:50:16
Holger
Ja, dieses Detail hatte ich am Anfang vergessen *schäm*, habe eben selber gemerkt, dass VB einen Fehler bringt.
Wie muss ich denn den RaBereich aus deinem Makro in meinem Fall setzen?
Funktioniert das Makro dann sowohl bei Auswahl nur einer als auch bei Auswahl mehrerer Zellen?
Was macht denn diese Zeile hier?
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
AW: Noch eine Frage zu COUNT
07.05.2010 10:52:50
Hajo_Zi
Hallo Holger,
diese Zeile bildet die Schnittmenge aus dem überwachten Bereich und den geänderten Zellen.
Gruß Hajo
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige