Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zelle aktivieren ? | Herbers Excel-Forum


Betrifft: Zelle aktivieren ? von: Walter
Geschrieben am: 16.11.2009 10:07:34

Guten Morgen zusammen,
ich kopiere Zahlen aus einer CSV Datei in meine Excel Tabelle.
In der Tabelle habe ich ein Change-Ereignis hinterlegt,
die Zelle hat eine bestimmte Farbe.
Ich kann nur dieses Ereignis auslösen wenn ich jetzt Händig in die
Zelle gehe/anklicke mit F2 und mit Enter verlasse.

Kann man diesen Prozess per Makro ausführen ?

mfg Walter

  

Betrifft: AW: Zelle aktivieren ? von: hary
Geschrieben am: 16.11.2009 10:11:48

Moin Walter

Teste mal Deinen Code im:

Private Sub Worksheet_Calculate()

Ereigniss.

Hilft's, ich weiss ja nicht ob Du das Change Ereigniss anderweitig brauchtst.

gruss hary


  

Betrifft: Geht nicht... von: Walter
Geschrieben am: 16.11.2009 10:45:31

Guten Morgen Hary,
geht leider nicht mein Makro sieht so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Column = 12 And Not Target.Column = 13 Then Exit Sub
If Cells(Target.Row, 12) <> "" Then
Range(Cells(Target.Row, 1), (Cells(Target.Row, 10))).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
Cells(Target.Row, 12).Select
' MsgBox "Wert drin"
' Application.Calculation = xlCalculationAutomatic
Else
...

mfg walter


  

Betrifft: AW: Geht nicht... von: JogyB
Geschrieben am: 16.11.2009 11:07:35

Hi.

Wenn Du kopierst, dann ist das Target der komplette kopierte Bereich. Du mußt die Zellen schon einzeln prüfen.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim zeLLe As Range
    Dim pruefRng As Range
    
    ' Die Prüfung auf Spalte 13 ist nur sinnvoll, wenn in Spalte 12 eine Formel steht
    ' die sich auf Spalte 13 bezieht
    Set pruefRng = Intersect(Target, Range("L:M"))
    
    If pruefRng Is Nothing Then Exit Sub
    
    ' Pruefung nur in den relevanten Spalten
    For Each zeLLe In pruefRng
        If Cells(Target.Row, 12) <> "" Then
            With Range(Cells(Target.Row, 1), (Cells(Target.Row, 10))).Interior
                .ColorIndex = 15
                .Pattern = xlSolid
            End With
            Cells(Target.Row, 12).Select
            ' MsgBox "Wert drin"
            ' Application.Calculation = xlCalculationAutomatic
        Else
            ' ...
        End If
    Next
End Sub
Gruss, Jogy


  

Betrifft: AW: Geht nicht... von: Walter
Geschrieben am: 16.11.2009 11:58:37

Hallo JogyB,
leider das GLEICHE wie vorhin.
Kann man den nicht Zelle für Zelle die Aktion
durchlaufen lassen ?
Wenn ich mit F2 in die Zelle gehe, wird anschließend z.b. die Zelle, das Datum
ROT angezeigt.
Ich finde es umständlich, wenn ich das in den 230 Zellen einzeln tun muß.

mfg Walter


  

Betrifft: AW: Geht nicht... von: JogyB
Geschrieben am: 16.11.2009 12:12:20

Hi.

Seltsam, bei mir läuft das. Nur rot wird zumindest mit dem Code ganz sicher nichts, ColorIndex 15 ist grau.

Der Fehler scheint mir in einem Codeteil zu hängen, der hier nicht vorhanden ist.

Gruss, Jogy


  

Betrifft: Leider immer noch nicht --)) von: Walter
Geschrieben am: 16.11.2009 12:45:31

Hallo Jogy,
das lass ich es so. Bei mir klappt es nicht.
Wenn ich die Datumswerte reinkopiere, keine Änderung, ist nicht so
tragisch.

mfg Walter


  

Betrifft: AW: Leider immer noch nicht --)) von: JogyB
Geschrieben am: 16.11.2009 12:52:00

Hi.

Sorry, hatte nen blöden Fehler drin und es immer nur mit einer Zeile probiert... mach es mal so:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim zeLLe As Range
    Dim pruefRng As Range
    
    If Target.Address = Range("rID").Address Then Me.Range("C12") = "Top"
    
    ' Die Prüfung auf Spalte 13 ist nur sinnvoll, wenn in Spalte 12 eine Formel steht
    ' die sich auf Spalte 13 bezieht
    ' UsedRange tut der Laufzeit gut, sonst macht das beim Kopieren/Löschen
    ' von ganzen Spalten diese bis Zeile 65536
    Set pruefRng = Intersect(Target, Range("L:M"), UsedRange)
    
    If pruefRng Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    
    ' Pruefung nur in den relevanten Spalten
    For Each zeLLe In pruefRng
        If Cells(zeLLe.Row, 12) <> "" Then
            With Range(Cells(zeLLe.Row, 1), (Cells(zeLLe.Row, 10))).Interior
                .ColorIndex = 15
                .Pattern = xlSolid
            End With
            ' MsgBox "Wert drin"
            ' Application.Calculation = xlCalculationAutomatic
        Else
            ' ...
        End If
    Next

    Application.ScreenUpdating = True
End Sub

Gruss, Jogy


  

Betrifft: Colorindex von: Rudi Maintaire
Geschrieben am: 16.11.2009 12:52:55

Hallo Jogy,

ColorIndex 15 ist grau

das muss nicht so sein. Die Farbpalette kann man anpassen.

Gruß
Rudi


  

Betrifft: AW: Colorindex Ja Rot ist... von: Walter
Geschrieben am: 16.11.2009 14:10:53

Hallo Rudi und Jogy,
ist alles RICHTIG. Ich habe die Zelle als Rot über Bedingte Formatierung,
makiert.
Grau ist die Zeile komplett wenn man in der Zelle der Spalte "L" ein Datum
eingegeben hat.
Wenn ich aber aus einer CSV Tabelle die Datumswerte einfüge, werden die Zellen
nicht ROT makiert, wenn das Datum > als das akt. Datum ist.
Wenn ich also dann in die Zelle gehe mit "F2" und drücke dann ENTER,
wird die Zelle Rot, sofern die Bedingung erfüllt wurde.

mfg Walter


  

Betrifft: AW: Colorindex Ja Rot ist... von: JogyB
Geschrieben am: 16.11.2009 14:46:22

Hi.

Entschuldige bitte, aber lies Dir mal durch, was Du bisher geschrieben hast... steht da irgendwas davon, dass Du eine bedingte Formatierung verwendest? Wi sollen wir helfen, wenn Du das Problem nicht richtig beschreibst?

Ich kann Dein Problem unter Excel 2003 nicht nachvollziehen, da wird es gleich korrekt eingefärbt.

Hast Du uns eine Beispieldatei?

Gruss, Jogy


  

Betrifft: Du hast leider RECHT ... von: Walter
Geschrieben am: 16.11.2009 15:45:08

Hallo Jogy,
Du hast leider RECHT, ich habe das ganze Falsch geschildert.
Ich versuche es nochmals. Bitte vergiss das andere vorher, war blöd von mir.
Ich habe mal aufgezeichnet:
Range("L8").Select
ActiveCell.FormulaR1C1 = "11/13/2009"
Range("L9").Select
also bin in die Zelle L8 gegangen, habe "F2" gedrückt u. mit Enter bestätigt.
Mehr nicht, da es vorher eine Textzahl war (aus CSV ) wird jetzt eine Zahl.

mfg Walter


  

Betrifft: AW: Du hast leider RECHT ... von: JogyB
Geschrieben am: 16.11.2009 16:13:08

Hi.

Dann scheint wohl das Problem zu sein, dass es das nicht als Datum erkennt.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim testRng As Range
    Dim zeLLe As Range

    Set testRng = Intersect(Target, Columns(12), UsedRange)

    If testRng Is Nothing Then Exit Sub
    ' Bildschirmupdate aus, sonst flackert es
    Application.ScreenUpdating = False
    ' Events aus, da jede Änderung unten das wieder
    ' aufrufen würde
    Application.EnableEvents = False
    For Each zeLLe In testRng
        If IsDate(zeLLe) Then
            zeLLe.Value = CDate(zeLLe.Value)
        End If
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    ' Noch berechnen, das passiert aufgrund der
    ' ausgeschalteten Events sonst nicht
    Me.Calculate
End Sub

Teste das mal.

Gruss, Jogy


  

Betrifft: Leider von: Walter
Geschrieben am: 16.11.2009 16:42:31

Hey JogyB,
habe so reingesetzt, in die Tabelle (Makro) leider keine Reaktion
auch F9 gedrückt, nichts.
Kann man sowas nicht mit einem Makro durchführen, welches im
Modul liegt, ich habe kein Problem damit, ein Commandbutton zu drücken.

Wie gesagt, wenn ich die Zelle aktiviere und dann Enter drücke, ist es so
wie ich es brauche,
mfg Walter


  

Betrifft: AW: Leider von: JogyB
Geschrieben am: 16.11.2009 17:13:46

Hi.

Ist jetzt alles schwer nachzuvollziehen... kannst Du mal zwei Beispieldateien hochladen, also die Zieltabelle inkl. bedingter Formatierung und eine CSV, bei der das Problem auftritt?

Gruss, Jogy


  

Betrifft: Danke für die Hilfe -) von: Walter
Geschrieben am: 18.11.2009 15:38:49

Hey Jogy,
danke für die Hilfe. Habe jetzt überlegt ob ich es Händig eintrage, ist zwar etwas arbeit,
na ja mach es einfach.

mfg walter


Beiträge aus den Excel-Beispielen zum Thema "Zelle aktivieren ?"