Bedingte Formatierung bezogen auf User

21/02/2008 - 15:52 von Juergen Denk | Report spam
EXCEL 2007, SP1

Hallo zusammen,

ich möchte gerne eine kleine Tabelle ins Netz stellen, die von zwei
versch. Usern (zwei versch. PCs) bearbeitet werden kann.

Beide User dürfen auf denselben Zellbereich zugreifen und dort
Eintragungen vornehmen. Sobald der
jeweilige User seine Eintragung gemacht hat und diese Eingabe mit
RETURN abschließt oder diese
Zelle verlàsst, soll die für ihn vorgesehene Füllfarbe in dieser Zelle
hinterlegt werden.

Anschließend möchte ich bei Ansicht der Tabelle genau wissen, welcher
der beiden User in welcher Zelle
seine Eingaben gemacht hat, nach dem Motto:

Wenn es User1 war, dann Füllfarbe = grün
Wenn es User2 war, dann Füllfarbe = blau

Wie geht so etwas?

cu

J. D.
 

Lesen sie die antworten

#1 Peter Schleif
21/02/2008 - 16:49 | Warnen spam
Juergen Denk schrieb:

Sobald der
jeweilige User seine Eintragung gemacht hat und diese Eingabe mit
RETURN abschließt oder diese
Zelle verlàsst, soll die für ihn vorgesehene Füllfarbe in dieser Zelle
hinterlegt werden.



Dafür bietet sich das Worksheet_Change-Ereignis an.

Für den Usernamen gibt es mehrere Möglichkeiten, die aber vom
Betriebsystem, der Netzwerkumgebung, etc. abhàngen können. Ich habe in
den Code unten mal zwei Alternativen implementiert.

Der Excel-Usename (Application.UserName) hilft dir hingegen vermutlich
nicht, da er meistens nur den Namen des Admins enthàlt bzw. der
Person, die bei der Installation eingetragen wurde.

Peter


Private Sub Worksheet_Change(ByVal Target As Range)

Dim wsh As Object
Dim net As Object
Dim username As String
Dim colorindex As Variant

Set net = CreateObject("WScript.Network")
username = net.username

If username = "" Then
Set wsh = CreateObject("WScript.Shell")
username = wsh.RegRead("HKEY_CURRENT_USER\Software\Microsoft\" _
& "Windows\CurrentVersion\Explorer\Logon User Name")
End If

Select Case username
Case "User1": colorindex = 10
Case "User2": colorindex = 5
Case Else: colorindex = xlNone
End Select

Target.Interior.colorindex = colorindex

End Sub

Ähnliche fragen