Informationen zum Überprüfen der Informationen in die Zelle werden nur angezeigt, wenn die angrenzende Zelle nicht leer ist. Excel VBA

392
J Doe

Ich habe zwei Spalten, eine (B) mit einem Namen und die andere (A) mit einer Nummer. Ich versuche es so zu gestalten, dass eine Fehlermeldung mich daran hindert, Excel zu schließen, wenn die Zellen in Spalte A leer sind, die angrenzenden Zellen in Spalte B jedoch nicht leer sind.

Wenn zum Beispiel in Zelle B2 ein Name eingetragen ist, MUSS die benachbarte Zelle A2 auch eine entsprechende Nummer haben ... Andernfalls wird der Benutzer daran gehindert, Excel zu schließen.

Ich möchte auch, dass die Zellen, in denen Informationen in Spalte A fehlen, rot hervorgehoben werden.

Die Idee ist, zu verhindern, dass Benutzer die Informationen in Spalte A eingeben, wenn in Spalte b ein Name vorhanden ist.

Könnte mir jemand dabei helfen?

Vielen Dank

1
Um zu verdeutlichen, dass die Hervorhebung nicht für fehlende Informationen ist (alle leeren A-Zellen sind anfänglich hervorgehoben), sondern nur für fehlende Informationen, wenn B einen Wert hat, oder? Sie sagen auch, dass eine sichtbare Warnung nicht ausreicht. Sie möchten das Schließen tatsächlich verhindern? fixer1234 vor 5 Jahren 0
Ja, auf beiden Fronten richtig. Vielen Dank J Doe vor 5 Jahren 0

1 Antwort auf die Frage

3
BruceWayne

Sie können dies in das ThisWorkbookModul im Projekt einfügen:

enter image description here

Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim lastRow As Long Dim ws As Worksheet  Set ws = ThisWorkbook.Worksheets("Sheet1") ' Change this to the sheet you need to check! lastRow = ws.Range("B" & Rows.Count).End(xlUp).Row  Dim rng As Range, cel As Range Set rng = ws.Range(ws.Cells(1, 2), ws.Cells(lastRow, 2))  For Each cel In rng If cel.Offset(0, -1).Value = "" And cel.Value <> "" Then MsgBox (cel.Address & " is empty. Please populate before closing file.") cel.Offset(0, -1).Interior.Color = RGB(255, 0, 0) Cancel = True ' Exit Sub End If Next cel  End Sub 

Bevor Sie ein Blatt schließen, überprüft es den Bereich A1:A[last row in col. B]und prüft, ob Zellen in Spalte A leer sind, in denen Spalte B nicht vorhanden ist. Es wird dann eine Nachricht mit der Adresse angezeigt, um Informationen einzugeben. im.

Vielen Dank dafür, es ist sehr nah an was ich gesucht habe. Könnten Sie es so machen, dass A-Zellen nur hervorgehoben werden, wenn sich Informationen in der benachbarten B-Zelle befinden, aber nicht in der A-Zelle. Wenn z. B. ein Name in der B-Zelle vorhanden ist, eine benachbarte Zelle jedoch leer ist, wird die Zelle hervorgehoben. Sobald diese Zelle jedoch gefüllt ist, wird sie nicht mehr hervorgehoben. Wenn dies nicht zu schwierig ist, können Sie es so einrichten, dass die Warnmeldung auf den Namen aus der Spalte B neben der fehlenden Zelle A verweist. Wenn J Smith also in Zelle B2 war und A2 leer war, würde die Nachricht lauten: "J Smith fehlt uns" J Doe vor 5 Jahren 0
@JDoe, wenn man darüber nachdenkt, muss man nur das Meldungsfeld behalten und es kann einfach sagen: "Bitte füllen Sie die leeren Zellen aus." Verwenden Sie dann Bedingte Formatierung, um leere Zellen zu markieren, in denen die nächste Spalte nicht leer ist. Das andere Zeug ist ziemlich selbsterklärend, probiere es zuerst und Google herum. BruceWayne vor 5 Jahren 0