Clever-Excel-Forum

Normale Version: VBA - MsgBox "speichern"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute, 

Ich benötige eure Hilfe bei folgendem Problem: 

Ich habe eine Excelmappe, die von diversen Kollegen genutzt wird (meist in einer aufgrund der Netzwerkstruktur vorgegebenen schreibgeschützen Version).
Die Mappe enthält eine Auflistung von Mitarbeitern. Beim Öffnen wird geprüft, ob ein oder mehrere Mitarbeiter gelöscht wird. 
Bislang wird das Löschen dann per MsgBox ausgegeben, damit man eine Rückmeldung bekommt. 
Das Problem ist jedoch, dass die msgbox dann unzählige Male angezeigt wird, bis ein Speicherberechtigter die Mappe öffnet und speichert. 
Ich habe mir gedacht, dass ich die msgboxes zwischenspeichern möchte, bis der Chef die mappe öffnet - ist das möglich? Das auslesen, Wer die Mappe öffnet bekomme ich hin. Nur müssten die msgboxes gespeichert werden. 
Ich bin gewillt mich in die Materie zunächst selber reinzuarbeiten, brauche nur eine Hilfe in welche Richtung ich schauen muss. 

Danke und Gruß
Hi,

so?

Code:
If Environ("username") = "chef" Then
MsgBox "Willkommen chef!"
End If
LG
Alexandra
Hi alexandra, 

Genau so würde ich den Chef ansprechen. Das Problem ist nur, dass die Mitarbeiter ja gelöscht werden sollen, wenn ein anderer Speicherberechtigter die datei löscht. Die Rückmeldung des Löschens soll dann aber nur der Chef bekommen. 

Habe das Problem wohl nicht richtig erklärt :)

Ich stelle mir das irgendwie in der Art vor, dass, wenn jemand gelöscht wird, speichert die Mappe eine Variable A ab.
Einen Tag später wird noch einer gelöscht und die Mappe speichert dies in Variable B. 
Am gleichen Tag öffnet der Chef die datei und es ploppen zwei msgboxes auf, dass die beiden gelöscht wurden.
Variablen sind da der falsche Zugang, da sie flüchtig sind (deshalb sind sie ja variabel). Sprich, nach Codeausführung sind sie wieder dahin.

Schreibe die entsprechenden Namen doch in eine separate Tabelle, das Tabellenblatt kann ja auch ausgeblendet werden.
Sobald sich der Chef die Mappe öffnet, erscheinen die Boxen und im Anschluss wird der Inhalt der Hilfstabelle gelöscht. Etwa in de Stil
Code:
Dim i As Integer, Name As String
With Sheets("Hilfstabelle")
    If Environ("username") = "chef" Then
        For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            Name = Name & Chr(10) & .Cells(i, 1)
        Next i
        MsgBox Name
        .Range("A1:A100").EntireRow.Delete
    End If
End With

Für mehr Info bräuchte ich aber schon eine Beispielmappe, das bisher Beschriebene ist mir zu wischiwaschi.
Code:
Sub M_snb()
   MsgBox Join(Application.Transpose(Columns(1).SpecialCells(2)), vbLf)
End Sub
Oh mein Gott Berni...manchmal sieht man den Wald vor lauter Bäumen nicht. Dann kann ich auch alle Namen in eine msg Box schreiben anstatt 10 msgboxen nacheinander auszulösen... Danke dir. 

Snb liefert - wie immer - einen Ansatz den ich nicht verstehe ;). Kannst du mir erklären was da passiert? Zwischenzeitlich Google ich schonmal. 

Danke euch schonmal :)

Kann es sein, dass die funktion nen Array erstellt, um die Namen der Hilfstabelle dann nacheinander in einer msgbox darzustellen?
Hallöchen,

jein Smile

Die Funktion von Bernie sammelt die Namen einzeln und bildet eine Zeichenkette.
Die Funktion von snb bildet aus den gefüllten Zellen ein Array und macht daraus mit join eine Zeichenkette, die die Massagebox ausgeben kann.
Mal abgesehen vom kürzeren Code in diesem Fall ist es oft auch performanter, die Daten aus Zellen in einem Rutsch in ein Array zu nehmen und weiterzuverarbeiten bis hin zum Rückschrieben das Array in den Zellbereich, auch wieder in einem Rutsch.