4.5k Aufrufe
Gefragt in Tabellenkalkulation von dommel Mitglied (361 Punkte)
Hallo zusammen,

ich bastle wieder bisschen mit Excel und habe als VBA Laie wieder mal ein kleines Problem, welches ich mit einfachen Aufzeichnungen von Makros oder einfachen Formeln nicht bewerkstelligen kann.

Ich habe die Datei mal hochgeladen.

Es geht um folgendes:
Ich habe eine Tabelle mit Vorgangsnummern.
Die die bearbeitet sind haben hinter der Nummer ein X alle unbearbeiteten haben hingegen keinen vermerk,
Diese sind auch nicht Grün (habe eine bedingte Formatierung hinterlegt)
Ich möchte, dass auf dem Tabellenblatt AA durch ein Klick auf ein Makro ab Zeile A4 alle unbearbeiteten Vorgangsnummern untereinander ausgegeben werden.

Wie kann ich das am besten in ein VBA Code umsetzen?

Hier kann man die Datei herunterladen: max 25 mal und 48 std lang.

http://www.materialordner.de/LDxzpX4ltTowyzflmQCPGuf2IPfLg3SS.html

Vielen Dank für eure Hilfe und eure Vorschläge.

Gruß Dominik

9 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Dominik,

Probier's mal so.
Option Explicit

Private Sub CommandButton1_Click()
Dim rngc As Range, intZ As Integer
For Each rngc In Worksheets("FA").Range("A6:A" & Worksheets("FA").Cells(Rows.Count, 1).End(xlUp).Row)
If rngc.Offset(0, 1).Value = "" Then
intZ = intZ + 1
Worksheets("AA").Cells(3, intZ).Value = rngc.Value
End If
Next
End Sub



Feedback wäre nett
Gruss Rainer
_____________________
Windows 7 Ultimate (x64)
Office 2007 Ultimate
Office 2003 Professional
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
Das sieht sehr sehr gut aus!.
Und läuft sehr gut.

Zwei Fragen dazu noch

Wie kann ich das machen, dass er Sie untereinander schreibt?
wo muss ich im VBA Code was ändern?
weil das einfach ändern von cells in column reicht da ja nicht


Wenn ich weitere Spalten durchsuchen lassen möchte, z.b. die ab E6 bis E 35.
Wie kann ich das dann hinzufügen? reicht es wenn ich das hier ergänze?
Range("A6:A35" & "E6:E35" & Worksheets("FA")). (das funktioniert schonmal nicht, wie ich getestet habe)
oder muss ich die ganze Schleife kopieren?
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Dominik,

Option Explicit

Private Sub CommandButton1_Click()
Dim rngc As Range, intZ As Integer
For Each rngc In Worksheets("FA").Range("A6:A" & Worksheets("FA").Cells(Rows.Count, 1).End(xlUp).Row)
If rngc.Offset(0, 1).Value = "" Then
intZ = intZ + 1
Worksheets("AA").Cells(intZ + 2, 1).Value = rngc.Value
End If
Next
End Sub



Feedback wäre nett
Gruss Rainer
_____________________
Windows 7 Ultimate (x64)
Office 2007 Ultimate
Office 2003 Professional
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
so einfach das Problem gelöst.

Jetzt bräuchte ich nur noch deine kompetente Hilfe diesbzgl.
Trotz rumexpimentiererei meinerseits läuft des noch net

Wenn ich weitere Spalten durchsuchen lassen möchte, z.b. die ab E6 bis E 35.
Wie kann ich das dann hinzufügen? reicht es wenn ich das hier ergänze?
Range("A6:A35" & "E6:E35" & Worksheets("FA")). (das funktioniert schonmal nicht, wie ich getestet habe)
oder muss ich die ganze Schleife kopieren?
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Dominik,

warum stellst Deine Frage nicht gleich im Zusammenhang, das würde das Herangehen erleichtern und spart Zeit.
Muss leider jetzt weg und weiss nicht, wann ich wieder online sein kann.



Feedback wäre nett
Gruss Rainer
_____________________
Windows 7 Ultimate (x64)
Office 2007 Ultimate
Office 2003 Professional
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
kein Problem, wenn du jetzt keine Zeit hast ich probiere einfach mal noch ein wenig aus,
hab Zeit^^

------------------------------

Das Makro durchsucht ja aktuell die Spalte B (ab B6) nach leeren Feldern und gibt dann den Wert aus dem zugehörigen A- Feld aus.

Das Makro soll dies aber auch bei der Spalte E , Spalte H, Spalte K machen und immer den Wert der davor steht ausgeben. Wie er es aktuell auch bei der A- Spalte macht.
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
Habs Herausgefunden.. WOW.

danke für deine Hilfe Rainberg.
Wünsche dir noch ein gutes neues Jahr

So sieht er meiner MEinugn anch aus, wenn ich auch andere Spalten durchsuchen möchte

Option Explicit

Private Sub CommandButton1_Click()
Dim rngc As Range, intZ As Integer
For Each rngc In Worksheets("FA").Range("A6:A" & Worksheets("FA").Cells(Rows.Count, 1).End(xlUp).Row)
If rngc.Offset(0, 1).Value = "" Then
intZ = intZ + 1
Worksheets("AA").Cells(intZ + 3, 1).Value = rngc.Value
End If
Next
For Each rngc In Worksheets("FA").Range("D6:D" & Worksheets("FA").Cells(Rows.Count, 1).End(xlUp).Row)
If rngc.Offset(0, 1).Value = "" Then
intZ = intZ + 1
Worksheets("AA").Cells(intZ + 3, 1).Value = rngc.Value
End If
Next
End Sub
0 Punkte
Beantwortet von
Hi,

Wenn Du Zeit hast, dann teste mal ob folgende Anpassung in rainbergs Makro Deinen Vorstellungen entspricht. (nicht getestet)

Private Sub CommandButton1_Click()
Dim rngc As Range
Dim rngS As Range
Dim intZ As Integer
With ThisWorkbook.Worksheets("FA")
Set rngS = .Range("A6:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
Set rngS = Union(rngS, .Range("D6:D" & .Range("D" & .Rows.Count).End(xlUp).Row))
Set rngS = Union(rngS, .Range("G6:G" & .Range("G" & .Rows.Count).End(xlUp).Row))
Set rngS = Union(rngS, .Range("J6:J" & .Range("J" & .Rows.Count).End(xlUp).Row))
End With
For Each rngc In rngS
If rngc.Offset(0, 1).Value = "" Then
intZ = intZ + 1
Worksheets("AA").Cells(intZ + 2, 1).Value = rngc.Value
End If
Next
Set rngS = Nothing
End Sub


bye
malSchauen
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
ich probier deins auch mal aus. Vielen Dank!

das funktioniert ja richtig gut SUPER!!!

Danke für euer Beider Hilfe
...