Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Aus einer Tabelle prüfen, ob eine Datei gespeichert wurde, dieses dann farblich markieren





Frage

Hallo, ich brauch mal wieder Eure Hilfe!!!!! Ich hab mir eine Tabelle aufgebaut wo ich Ausgänge protokollieren möche. In der Spalte A ab Zeile 10 werden die Auftragsnummern (untereinander) eingegeben in Zeile B das Ausgangsdatum und in Spalte C sollen Bemerkungen eingegeben werde können. Zusätzlich wird noch ein Warenausgangsschein aus einer anderen Datei gedruckt und in ein gleichbleibendes Verzeichnis unter der Auftragsnummer gespeichert z.B. D:Alles.... Jetzt das meine Frage: Ist es möglich, wenn ich in der Spalte A eine Auftragsnummer eingebe, das ein VBA Code in das Verzeichnis schaut und überprüft ob ein Warenausgangsschein gespeichert wurde? Wenn die Datei mit der Auftragsnummer vorhanden ist, soll die Zeile dann (von A bis C) grün markiert wird und wenn die Datei nicht vorhanden ist, dann Soll die Zeile rot markiert werden. für Eure Mühe bedanke ich mich schon im voraus!!!! Gruß Elhamplo

Antwort 1 von coros

Hi Ellhamplo,

mit nachfolgendem Makro wird in einem Verzeichnis die Nummer in Spalte A geprüft. Existiert eine Datei mit der Nummer, wird der Bereich A:C grün, ansonsten rot gefärbt. Kopiere das Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.

Option Explicit

Sub Prüfen()
Dim i As Long
For i = 1 To Range("A65536").End(xlUp).Row
If Dir("C:\" & Cells(i, 1) & ".xls") <> "" Then
Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 4
Else
Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 3
End If
Next
End Sub

In der Zeile

If Dir("C:\" & Cells(i, 1) & ".xls") <> "" Then


musst Du noch den Pfad ändern.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Elhamplo

Hallo Coros,

vielen vielen dank für die Hilfe.

Der Code klappt super.

Kann man den Code so umformen, sobald man was in Spalte A eingibt eine automatische Prüfung durchläuft??

Funktioniert das auch mit Ordner?? Hätten Ordner die gleichen Nummern wie in Spalte A, kann dann geprüft werden ob ein Ordner mit der Nummer vorhanden ist???

Vielen Dank für Deine Mühe die Du Dir immer machst!!!!!!!

Gruß

Elhamplo

Antwort 3 von Elhamplo

Hallo,

Sorry!!!


kurzer Nachtrag. Der Code müsste auch den Ordner wie in der Spalte A suchen und in dem Ordner die Datei mit dem Nummer aus der Spalte A. So das für jeden Auftrag ein eigener Ordner angelegt werden kann.

Danke!!!

Gruß

Elhamplo

Antwort 4 von coros

Hallo Elhamplo,

kopiere nachfolgenden Code in das VBA Projekt des Tabellenblattes, in dem die Daten in Spalte A geprüft werden sollen.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Dim i As Long
For i = 1 To Range("A65536").End(xlUp).Row
If Not IsEmpty(Cells(i, 1)) = True Then
If Dir("C:\Daten\Müll\" & Cells(i, 1) & "\" & Cells(i, 1) & ".xls") <> "" Then
Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 4
Else
Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 3
End If
End If
Next
End If
End Sub


Ich hoffe, Du meintest das so? Wenn nicht, melde Dich wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von Elhamplo

Hallo,

Super Sache!!! Danke!

Noch eine Frage dazu, kann man auch nich einen Rahmen darum machen? Wenn er eine Zeile farblich makiert, das auch noch ein Rahmen erstelllt wird???

Vielen Dank

Gruß

Elhamplo

Antwort 6 von Shaori

dann füge einfach nach der Zeile

Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 4

noch die Zeile

Range(Cells(i, 1), Cells(i, 3)).BorderAround 1

ein. Die 1 steht für die Linienart (1 = durchgezogen)
kann beliebig verändert werden

Antwort 7 von Elhamplo

Hallo,

danke für die Hilfe!!!

Wie bekomme ich das hin das links und rechts einer Zelle auch ein Rand ist??

Vielen Dank für die Mühe!!!

Gruß

Elhamplo

Antwort 8 von coros

Hi Elhamplo,

tausche die Zeile

Range(Cells(i, 1), Cells(i, 3)).BorderAround 1


gegen die Zeilen

With Range(Cells(i, 1), Cells(i, 3))
.BorderAround 1
.Borders(xlInsideVertical).LineStyle = 1
End With


aus.

Dann solltest Du Dir, bevor Du hier gleich wieder die nächste Frage stellst, was Du noch alles haben möchtest, und das dann mal gesammelt hier hinschreiben und nicht immer Stück für Stück.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von Elhamplo

Hallo,

sorry das ich mich erst jetzt melde, war krank!!!!!

Vielen, vielen Dank für Deine Hilfe!!!!

Eine Sache hätte ich noch.

Ist es Möglich das man mit Hilfe eines Codes nur nach den roten Zeilen abfiltern und ein weiterer Code nur nach den grünen Zeilen abfiltern, so das man eine Übersicht erstellen kann? Ebenso bräuchte ich einen Code, der dann wieder in die Gesamtübersicht führt.

Vielen Dank!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Gruß

Elhamplo

Antwort 10 von coros

Hi Elhamplo,

nachfolgende drei Makros machen dass, was Du Dir vorgestellt hast. Kopiere sie in ein StandardModul.

Option Explicit

Sub Filtern_rot()
Dim Zelle As Range
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False
For Each Zelle In Range("A2:A" & Range("A65536").End(xlUp).Row)
If Zelle.Interior.ColorIndex <> 3 Then
Zelle.EntireRow.Hidden = True
End If
Next
End Sub

Sub Filtern_grün()
Dim Zelle As Range
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False
For Each Zelle In Range("A2:A" & Range("A65536").End(xlUp).Row)
If Zelle.Interior.ColorIndex <> 4 Then
Zelle.EntireRow.Hidden = True
End If
Next
End Sub

Sub Filter_aus()
Cells.EntireRow.Hidden = False
End Sub


Makro 1 blendet alle Zeilen, in denen die Zelle in Spalte A nicht die Hintergrundfarbe rot hat aus. Bei Makro 2 geschieht das gleiche, nur wird hier nach der Farbe grün gefiltert. Mit Makro 3 werden alle Zeilen wieder eingeblendet.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von Elhamplo

Hallo Coros,

Super Sache, vielen Dank für die Hilfe!!!!!!!!!

Funktioniert alles Super!!!!!!




Ich bräuchte nochmal einen allgmeinen Tipp. Kann man per VBA den Benutzerdefinierten Autofilter in einer Bestimmten Spealte aufrufen?

Vielen Dank für die Hilfe!!!!

Gruß

Elhamplo

Antwort 12 von fedjo

Hallo Elhamplo,
der Autofilter filtert Spalte "A" der gesuchte Begriff wird in eine InputBox eingegeben.

Gruß
fedjo


Option Explicit

Sub Autofilter()
Dim Name As String
Name = InputBox("Bitte Namen eingeben!")
Range("A1").Autofilter Field:=1, Criteria1:=Name
Range("A2:B65536").Cells.SpecialCells(xlCellTypeVisible)(1).Select ´findet zweite Zelle in A
If ActiveCell.Value = "" Then
Selection.Autofilter ´Autofilter aus
End If
End Sub


Public Sub Filteraus()
Selection.Autofilter
End Sub

Antwort 13 von Elhamplo

Hallo fedjo,

der Code ist Super.

Kann man das so Ändern das der Code in Spalte B (Überschrift ist in B5) ab B6 nach Datum suchen kann, Einzeldatum und von bis??

Vielen, vielen Dank!!!

Gruß

Elhamplo

Antwort 14 von coros

Hi Elhamplo,

dann trage in dem Makro dort wo die Zellbezeichnung A1 steht B5 und dort wo A2 steht B6 ein. Bei "Field:=" muss die 1 gegen eine 2 getauscht werden

Also dann bis zur nächsten Frage in AW15.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 15 von Elhamplo

Hallo,

Vielen, vielen Dank für Eure Arbeit und Mühe!!!!!!!!!! Alles Super


Vielen, vilen Dank nochmal!!!


Gruß

Elhamplo

Antwort 16 von fedjo

Hallo Elhamplo,
Datum filtern:

Sub Autofilter()
Dim Name As Date
Name = InputBox("Bitte Datum eingeben TT.MM")
Range("B5").Autofilter Field:=2, Criteria1:=Name
Range("B6:B65536").Cells.SpecialCells(xlCellTypeVisible)(1).Select
If ActiveCell.Value = "" Then
Selection.Autofilter
End If
End Sub

Public Sub Filteraus()
Selection.Autofilter
End Sub

Gruß
fedjo

Antwort 17 von Elhamplo

Hallo,

orry das ich mich erst jetzt melde. War nicht zu Hause und habmal keinen Rechner mitgenommen. Ist mal eine Erfahrung wert!!!:)

Vielen Dank für die Hilfe!!!!!

Hat super geklappt!!!! Danke!!!!

Gruß

Elhamplo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: