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

Forumthread: Statt "msgbox" Tabelle füllen

Statt "msgbox" Tabelle füllen
19.06.2008 12:54:00
Rainer
Hallo,
ich stehe vor folgenden Problem:
Ich überprüfe in einer großen Tabelle die Werte Farben etc. mittels eines Makros. Die Hinweise/Fehler, die in der Tabelle erkannt werden, werden bislang mittels msgbox-Befehl am Bildschirm angezeigt. (z.B. "Zeile 12: Falscher Zahlenbereich") Das war bislang auch ok so.
Nun habe ich mein Makro nach und nach erweitert und erhalte so viele Hinweise, dass eine Ausgabe am Bildschirm nicht mehr sinnvoll ist. Ich möchte nun genau diese Hinweise, die ich bislang am Bildschirm hatte, in ein Tabellenblatt "Meldungen" in die Spalte A einfügen.
Lässt sich so etwas realisieren?
Gruß
Rainer

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Statt "msgbox" Tabelle füllen
19.06.2008 13:00:27
Rudi
Hallo,
ja.
sheets("Meldungen").cells(rows.count,1).end(xlup).offset(1,0)=Meldungstext
Gruß
Rudi

AW: Statt "msgbox" Tabelle füllen
19.06.2008 13:29:09
Rainer
Hallo,
vielen Dank für die schnelle Antwort. Das funktioniert prima.
Besteht die Möglichkeit, das nur die Meldungen in das Tabellenblatt kopiert werden, die in der A-Spalte noch nicht vorhanden sind und die Meldungen, die in der A-Spalte vorhanden sind, allerdings beim nächsten Makrodurchlauf nicht mehr vorhanden sind gelöscht werden? Sonst wird es nach kurzer Zeit sehr unübersichtlich. Dann könnte ich in der B-Spalte mir Anmerkungen machen und hätte immer einen aktuellen Stand über die Meldungen.
Danke und Gruß
Rainer

Anzeige
AW: Statt "msgbox" Tabelle füllen
19.06.2008 13:01:23
Chris
Servus,
dann schreib doch statt Msgbox "Fehler..." einfach für die Msgbox Sheets("Meldungen").Range("A65536").End(xlUp).Offset(1, 0) = "Fehler..." und das bei allen Msgboxen, die einen Fehler anzeigen. Aber dran denken, irgendwann ist das Blatt voll.
Gruß
Chris

AW: Statt "msgbox" Tabelle füllen
19.06.2008 13:39:09
Rainer
Hallo,
vielen Dank für die schnelle Antwort. Das funktioniert prima.
Besteht die Möglichkeit, das nur die Meldungen in das Tabellenblatt kopiert werden, die in der A-Spalte noch nicht vorhanden sind und die Meldungen, die in der A-Spalte vorhanden sind, allerdings beim nächsten Makrodurchlauf nicht mehr vorhanden sind gelöscht werden? Sonst wird es nach kurzer Zeit sehr unübersichtlich. Dann könnte ich in der B-Spalte mir Anmerkungen machen und hätte immer einen aktuellen Stand über die Meldungen.
Danke und Gruß
Rainer

Anzeige
AW: Statt "msgbox" Tabelle füllen
19.06.2008 13:45:07
Rudi
Hallo,
dann lösche die Spalte doch am Beginn des Makros.
Gruß
Rudi

AW: Statt "msgbox" Tabelle füllen
19.06.2008 13:52:33
Rainer
Hallo Rudi,
an sich eine gute Idee. Ich würde mir in der B-Spalte nur gerne nähere Informationen bzw. Anmerkungen zu den Meldungen machen, bzw. je nach Dringlichkeit farbig markieren. Wenn ich die Spalte lösche und neu aufbauen lasse, geht der Bezug zu diesen Informationen dann verloren.
Wenn man die Meldungen "abgleichen" könnte, würde es mir sehr helfen.
Gruß
Rainer

Anzeige
AW: Statt "msgbox" Tabelle füllen
19.06.2008 14:30:00
Rudi
Hallo,
geht prinzipiell, ist aber recht aufwändig.
Man müsste erst alle Meldungen in einem Araay sammeln und am Schluss des Makros mit den bisherigen Melgungen abgleichen. Dafür müsste man aber deinen Code kennen.
Gruß
Rudi

AW: Statt "msgbox" Tabelle füllen
19.06.2008 14:56:00
Rainer
Hallo Rudi,
anliegend habe ich dir das prinzip meines Codes mitgeschickt. In dieser Schleifenart werden die Daten gegeneinander abgeglichen. Vielleicht nicht elegant gelöst, aber es funktioniert.

Sub test()
Dim psplan As String
Dim psquelle As String
Dim fehler As Boolean
For i = 0 To 800
psplan = Range("F3").Offset(i, 0)
psquelle = Range("F3").Offset(i, 1)
If psplan  psquelle And psquelle  "" Then
Range("F3").Offset(i, 0).Font.ColorIndex = 3
fehler = True
If fehler = True Then MsgBox ("Abweichung!! Zeile " & i + 3)
fehler = False
Else
Range("F3").Offset(i, 0).Font.ColorIndex = 1
End If
Next i
End Sub


Gruß
Rainer

Anzeige
AW: Statt "msgbox" Tabelle füllen
19.06.2008 15:47:00
Rudi
Hallo,
teste mal

Sub test()
Dim i As Integer
Dim psplan As String
Dim psquelle As String
Dim FEHLER As Boolean
Dim arrERRORS(1 To 800, 1 To 2), arrColors(1 To 800), n As Integer
For i = 0 To 800
psplan = Range("F3").Offset(i, 0)
psquelle = Range("F3").Offset(i, 1)
If psplan  psquelle And psquelle  "" Then
Range("F3").Offset(i, 0).Font.ColorIndex = 3
FEHLER = True
'Meldung merken
n = n + 1
arrERRORS(n, 1) = "Abweichung!! Zeile " & i + 3
If WorksheetFunction.CountIf(Sheets("Meldungen").Columns(1), arrERRORS(n, 1)) > 0 Then
'Wenn Meldung vorhanden, Bemerkung merken
With Sheets("Meldungen").Columns(1).Find(arrERRORS(n, 1))
arrERRORS(n, 2) = .Offset(0, 1)
arrColors(n) = .Offset(0, 1).Interior.ColorIndex  'Hintergrundfarbe der Bemerkung
End With
End If
FEHLER = False
Else
Range("F3").Offset(i, 0).Font.ColorIndex = 1
End If
Next i
With Sheets("Meldungen")
.Cells.Clear
.Range(.Cells(1, 1), .Cells(n, 2)) = arrERRORS
For i = 1 To n
.Cells(n, 2) = arrColors(n)
Next i
End With
End Sub


Gruß
Rudi

Anzeige
AW: Statt "msgbox" Tabelle füllen
20.06.2008 08:06:00
Rainer
Hallo Rudi,
das funktioniert schon ganz prima. Allerdings werden die Farbmarkierungen auf dem "Meldungen"-Tabellenblatt gelöscht. Wenn ich das Makro mehrmals durchlaufen lasse, wird in der letzten Zeile in der B-Spalte immer die Zahl -4142 ausgegeben. Kann man das noch ändern?
Da ich mehrere Schleifen meiner Art in dem Makro habe, wie muss ich deinen Code einbauen?
Gruß
Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
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