Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Gesamtstatusabfrage

Forumthread: VBA Gesamtstatusabfrage

VBA Gesamtstatusabfrage
01.09.2020 18:49:19
LaFu
Guten Abend,
https://www.herber.de/bbs/user/139977.xlsm
ich möchte gern in dem Workbook den Gesamtstatus (A1) abrufen, welcher nach Auswahl der jeweiligen Einzelstatus entweder "Erledigt" (nur wenn auch wirklich alle Einzelstatus auf Erledigt stehen) oder "Offen" (nur wenn auch wirklich alle Einzelstatus auf Offen stehen) anzeigen soll.
Ich habe mich auch schon mal an einem Code probiert, wobei die Betonung leider auf probiert liegt.
Außerdem frage ich mich, ob es möglich ist, eine Range nicht fix (Range("A3:A15") anzugeben sondern variabel je nach Anzahl der Einzelstatus (irgendwie mit xlDown?). Habe dies in der VBA der Excel gekennzeichnet.
Freue mich auf nette und hilfreiche Antworten.
Grüße
LaFu
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Gesamtstatusabfrage
01.09.2020 19:31:57
AlterDresdner
Hallo,
die Formellösung bringt mit
=WENN(ZÄHLENWENN(A3:A1048576;"*")=ZÄHLENWENN(A3:A1048576;"Offen");"Offen"; WENN(ZÄHLENWENN(A3:A1048576;"*")=ZÄHLENWENN(A3:A1048576;"Erledigt");"Erledigt";"Gemischt"))
das gleiche Ergebnis.
Der AlteDresdner
Anzeige
AW: VBA Gesamtstatusabfrage
01.09.2020 19:50:25
LaFu
An beide, vielen Dank! Ich verwende vermutlich Marc's Formel, weil diese schön kurz ist und ihren Zweck erfüllt und mich ärgert, da ich nicht auf sie gekommen bin.
Das Makro erfüllt einen Lernzweck für mich, auch dafür Danke!
AW: VBA Gesamtstatusabfrage
01.09.2020 19:19:31
AlterDresdner
Hallo Lafu,
das Makro sollte so aussehen:
Sub Aufgabenstatus()
Dim rngBereich As Range, rngZelle As Range, lastrow As Long
Dim IsErl As Long, IsOff As Long 'Anzahlen von Offen/Erledigt
With ActiveSheet
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
Set rngBereich = .Range("A3:A" & lastrow)
For Each rngZelle In rngBereich
If rngZelle.Value = "Offen" Then IsOff = IsOff + 1
If rngZelle.Value = "Erledigt" Then IsErl = IsErl + 1
Next
If IsOff = lastrow - 2 Then
.Range("A1") = "Offen"
ElseIf IsErl = lastrow - 2 Then
.Range("A1") = "Erledigt"
Else
.Range("A1") = "Gemischt"
End If
End With
End Sub

Um es auszulösen, in den Codeteil des Blattes noch einfügen
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row > 2 Then Aufgabenstatus
End Sub

Gruß der AlteDresdner
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige