Username in erster Zelle einer bearbeiteten Zeile

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Username in erster Zelle einer bearbeiteten Zeile
von: Manuel E.
Geschrieben am: 03.09.2015 10:07:27

Guten Morgen ins Forum
Ich heiße Manuel und bin hier neu.
Erstemal vorneweg: Ich hab als Gast hier schon so einiges an Nützlichkeiten gefunden und möchte allen die hier so rumgeistern einen Dank aussprechen!
Nun zu meinen zwei Problemen. Das erste konnte ich zumindest durch diesen Beitrag


https://www.herber.de/forum/archiv/708to712/710469_Aktuelles_Datum_plus_Username_in_Zelle.html

halbwegs lösen konnte...
Ich möchte dass in einer Mappe (von Januar bis Dezember einzelne Blätter) immer in der ersten Zelle einer Zeile der Username eingetragen wird. Diese Zelle wird dann ausgeblendet, soll nur eine Hilfsspalte werden. Also wenn Kollege 1 in Zeile 5 seine Eintragungen macht, soll in A5 der Username stehen. Kollege 2 macht in Zeile 6 seine Eintragung, dann also in A6 der nächste Username...usw usw.
Der nächste Knackpunkt ist dann folgender:
Anhand vom Usernamen in der Hilfsspalte soll im selben Blatt in Zelle "Sowieso" eine Vermittlernummer eingetragen werden. Die Nummern habe ich in einem Hilfsblatt eingetragen.
Ich bin gespannt und VIELEN DANK vorab!!!

Bild

Betrifft: AW: Username in erster Zelle einer bearbeiteten Zeile
von: Werner
Geschrieben am: 03.09.2015 10:55:17
Hallo Manuel,
Versuch mal

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 And Target.Column < 5 Then 'Überwacht Spalte B bis D ggf. anpassen
   If Not Target is Nothing Then
   .Cells(Target.Row, 1) = Environ("UserName")
   End If
End If
End Sub
Code gehört in den Codeteil des Tabellenblattes auf dem er sich auswirken soll. Rechtsklick auf Tabellenblattreiter -- Code anzeigen -- Code ins Code Fenster rechts kopieren
Ungetestet.
Gruß Werner

Bild

Betrifft: AW: Username in erster Zelle einer bearbeiteten Zeile
von: Manuel E.
Geschrieben am: 03.09.2015 11:12:14
Servus Werner,
danke für die schnelle Rückmeldung!
Hat leider nicht funktioniert, es wird auf einen nicht ausreichenden Verweis hingewiesen.
Mir würde eine Lösung für die komplette Mappe natürlich am Besten passen ;-)

Bild

Betrifft: AW: Username in erster Zelle einer bearbeiteten Zeile
von: Jack_d
Geschrieben am: 03.09.2015 12:26:19
Hallo Manuel,
Werner hat leider das Parent vergessen.
Entweder so (ohne With)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 And Target.Column < 5 Then 'Überwacht Spalte B bis D ggf. anpassen
   If Not Target Is Nothing Then
   ActiveSheet.Cells(Target.Row, 1) = Environ("UserName")
   End If
End If
End Sub
Oder so (mit with)
Private Sub Worksheet_Change(ByVal Target As Range)
With ActiveSheet
    If Target.Column > 1 And Target.Column < 5 Then 'Überwacht Spalte B bis D ggf. anpassen
       If Not Target Is Nothing Then
        .Cells(Target.Row, 1) = Environ("UserName")
       End If
    End If
End With
End Sub
Eine Lösung für die komplette Mappe ist über das WS_Change Ereignis nicht zielführend.
Da das Change ereignis ja eine Änderung bedingt. Du aber nur in einem Blatt was änderst.
Grüße

Bild

Betrifft: AW: Username in erster Zelle einer bearbeiteten Zeile
von: Manuel E.
Geschrieben am: 03.09.2015 12:54:39
Bombastisch...dafür schon mal vielen Dank!!!
Darauf aufbauend hätte ich noch eine Frage!
Das "Projekt" ist eine Umsatztabelle.
Userbild
Ich möchte folgendes erreichen: Durch den VBA-Befehl wird in Spalte A der Benutzername eingetragen. Anhand der Daten werden Report-Listen automatisch befüllt. Nur für die Agenturnummer hab ich das nicht hinbekommen. Diese soll sich die Liste anhand des Nutzernamens holen.
Per Formel hab ich das nicht hinbekommen...wie man m Bild sieht. Die Agenturnummer steht in einem anderen Blatt der Mappe neben dem jeweiligen "Real Namen" des Mitarbeiters

Bild

Betrifft: Versteh ich nicht.
von: Jack_d
Geschrieben am: 03.09.2015 13:56:26
Bitte eine Mustermappe dazu hochladen. (die aus dem initialen Post funktioniert nicht)
Grüße

Bild

Betrifft: AW: Versteh ich nicht.
von: Manuel E.
Geschrieben am: 03.09.2015 14:17:40
https://www.herber.de/bbs/user/100002.xlsm

Bild

Betrifft: AW: Versteh ich nicht.
von: Manuel E.
Geschrieben am: 03.09.2015 14:27:32
Hoffe die geht jetzt. Kurze Erläuterung: Habe aufgrund der Größe alle Monate von Feb.-Dez. rausgeworfen. Januar als Testmonat und Tabelle 1 ist die Quelle für die Dropdowns.
Aufbau: Die beiden linken Tabellen werden durch die Mitarbeiter befüllt. Die 4 Listen rechts daneben sind das Reporting und werden automatisch gezogen.
Mein Problem: Die Agenturnummer muss da noch rein! Die Namen und Nummern finden sich in der "Tabelle1" (sind fiktiv im Beispiel).

Bild

Betrifft: AW: Versteh ich nicht.
von: Jack_d
Geschrieben am: 03.09.2015 15:01:54
Hallo Manuel,
Ich glaub ich hab verstanden was du willt, aber ich erkenne keinen Zusammenhang.
Ist es richtig das du versuchst über des environt deen Nutzer ausfindig zu machen, und anschliessend seine Agenturnummer (auf Basis des Environt) in die Tabelle einzubinden?
Dann bräuchtest du eine "Matchtabelle"
Also
EnvirontUserName = Agenturnummer
Bei dir also in Tabelle 1
Grüße

Bild

Betrifft: AW: Versteh ich nicht.
von: Manuel E.
Geschrieben am: 03.09.2015 16:12:09
genau das will ich erreichen Jack_d. Bei den restlichen Bezügen bin ich immer vom "Konto" ausgegangen als Bezugspunkt und habe auf der Basis alle übrigen Daten in die Reports gebracht. Bei der Agenturnummer will mir das nur nicht gelingen...

Bild

Betrifft: AW: @Jack
von: hary
Geschrieben am: 03.09.2015 13:12:08
Moin
"Eine Lösung für die komplette Mappe ist über das WS_Change Ereignis nicht zielführend. "
Man kann doch das Workbokk_SheetChange nehmen und die nicht betr. Blaetter rausnehmen.
Oder taeusch ich mich.
gruss hary

Bild

Betrifft: AW: @Jack
von: Jack_d
Geschrieben am: 03.09.2015 13:54:08
Moin Hary,
Also,
Man kann doch das Workbokk_SheetChange nehmen und die nicht betr. Blaetter rausnehmen.
Du meinst sicher das Change() Ereignis. SheetChange kenn ich zumindest nicht.
Was man machen kann:
1. Das Change Ereignis muss Codeseitig immer hinter dem entsprechenden Blatt liegen. (Also wenn man das Change ereignis aus Tab1 aufrufen will muss es VBA seitig im "Blattmodul 1" liegen.
Das heisst, ich kann dieses Ereignis nicht aus Tab2 aus aufrufen, Es sei denn ich hinterlege dort analog die gleiche Routine
2. Übergebe ich den Targetparameter aus dem Blatt aus dem ich den Code aufrufe. Ich kann somit nicht prüfen ob die Änderung in anderen Blättern überhaupt an den relevanten Stellen durchgeführt wurde.
3. Kann man zwar über das Change Event andere Blätter steuern, dann muss man aber wissen, was man da tut.
Ich hoffe das beantwortet deine Frage.
Grüße

Bild

Betrifft: AW: @Jack
von: Case
Geschrieben am: 03.09.2015 18:58:14
Hallo, :-)
es gibt unter "DieseArbeitsmappe" das "Private Sub Workbook_SheetChange". Dieses Ereignis greift für alle Tabellenblätter - auch neu hinzugefügte:

Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ' Dein Code...
End Sub
Soll es nur auf bestimmten Tabellenblättern greifen, dann kannst Du es z. B. so einschränken:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Select Case Sh.Name
        Case "Tabelle1", "Tabelle2", "Tabelle3"
            MsgBox "Los!"
    End Select
End Sub
Bzw. mit dem Codenamen der Tabellenblätter:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Select Case Sh.CodeName
        Case "Tabelle1", "Tabelle2", "Tabelle3"
            MsgBox "Los!"
    End Select
End Sub
Wie gesagt - Code gehört unter "DieseArbeitsmappe".
Servus
Case


Bild

Betrifft: Wieder was dazu gelernt
von: JACK_D
Geschrieben am: 03.09.2015 23:25:00
.. wie schon erwähnt kannte ich den Code noch nicht.
Ich bleib allerdings bei der Meinung, dass die Verwendung (in meiner Welt zumindest) schwer praktikabel ist.
Mir Fällt zumindest grad kein Beispiel für eine Sinnvolle Verwendung ein :-D
Aber ich bin nicht der Maßstab =)
Beste Grüße

Bild

Betrifft: AW: Wieder was dazu gelernt
von: hary
Geschrieben am: 04.09.2015 08:02:10
Moin Jack
Der Vorteil liegt doch auf der Hand. Ich brauch den Code nur einmal schreiben und/oder je nach Blattnamen unterschiedliche Codes ausfuehren lassen.
In den Workbookcode.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Sh.Name
  Case "Tabelle1" '--erweiterbar durch ,"Tabelle2" immer durch Komma getrennt
   '--bei Blattname "Tabelle1" tu nix
  Case Else '-- bei allen anderen Blaettern
      If Target.Column > 1 And Target.Column < 5 Then
        If Not Target Is Nothing Then
         Cells(Target.Row, 1) = Environ("UserName")
        End If
      End If
  End Select
End Sub

gruss hary

Bild

Betrifft: AW: Username in erster Zelle einer bearbeiteten Zeile
von: Manuel E.
Geschrieben am: 03.09.2015 18:24:53
hab alles was ich brauche. Besten Dank an alle und Thread erledigt!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Username in erster Zelle einer bearbeiteten Zeile"