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

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

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
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!
Anzeige
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige