Registriert seit: 28.05.2017
Version(en): 365
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ß
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hi,
so?
Code:
If Environ("username") = "chef" Then
MsgBox "Willkommen chef!"
End If
LG
Alexandra
Registriert seit: 28.05.2017
Version(en): 365
26.04.2019, 12:25
(Dieser Beitrag wurde zuletzt bearbeitet: 26.04.2019, 12:30 von EasY.)
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.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
26.04.2019, 13:23
(Dieser Beitrag wurde zuletzt bearbeitet: 26.04.2019, 13:27 von MisterBurns.)
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.
Schöne Grüße
Berni
Registriert seit: 29.09.2015
Version(en): 2030,5
Code:
Sub M_snb()
MsgBox Join(Application.Transpose(Columns(1).SpecialCells(2)), vbLf)
End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• EasY
Registriert seit: 28.05.2017
Version(en): 365
26.04.2019, 14:52
(Dieser Beitrag wurde zuletzt bearbeitet: 26.04.2019, 14:56 von EasY.)
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?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
jein
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.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)