Hi Rico,
so würde es funktionieren, allerdings sollte es nur dahin
hüpfen, wenn ich auf einen butten drücke, dem das makro
zugeordnet ist.
dann lösche es wieder. Im Editor auf Einfügen—Modul, dorthinein diesen Code:
Sub Huepfen()
Dim Zei As Long
' Verlasse die Sub wenn mehr als eine zelle markieet
If Selection.Cells.Count \> 1 Then Exit Sub
' Verlasse die Sub wenn nicht in Spalte B (=2)
If Selection.Column 2 Then Exit Sub
' Verlasse die Sub wenn markierte zelle leer
If Selection.Value = "" Then Exit Sub
With Worksheets("Tabelle2")
' Wenn es das Zählen der Personr in Spalte A (=1) mehr als 0 ergibt dann...
' (also personr existiert in Spalte A)
If Application.WorksheetFunction.CountIf(.Columns(1), Target.Value) \> 0 Then
' Zei = Zeile der personnr in Spalte A
Zei = Application.WorksheetFunction.Match(Selection.Value, .Columns(1), 0)
' Blatt 2 aktivieren
.Activate
'Zelle Jx markieren
.Cells(Zei, 10).Select
Else
MsgBox Selection.Value & " nicht gefunden."
End If
End With
End Sub
heißt das in dem fall überhaupt makro? oder nennt man das
anders?
Nein, es heißt weiter Makro oder Prozedur. Excel-Vba kennt einige festgelegte Ereignis-Makros/Ereignisprozeduren.
D.h. diese makros/prozeduren haben festgelegte namen und festgelegte Orte wo sie stehen müssen. Dann werden sie vollautomatisch, also ohne Buttondrücken, aufgerufen wenn das Ereignis eintritt.
Ereignisse sind bei jedem Blatt z.B manuelle Zellenwertänderung, Zellenanklicken,Blattberechnen u.ä.
Für die Gesamtmappe gibt es z.B das Öffnen und Schließen-Ereignis usw.
In meinem Beispiel hatte ich
Private Sub Worksheet_Change(ByVal Target As Range)
benutzt, was dem Zellenwertänderung-Ereignis entspricht.
In der Variablen target steckt die Info in welcher Zelle (Zellenbereich) eine Zelle geändert wurde.
Target kann ich dann im Code auswerten.
Da das Makro losläuft sobald eine Zellwertänderung stattfand muß ich anfangs des Codes abklären ob nur eine einzige Zelle in B geändert wurde, erst dann soll der weitere Code laufen.
Hintergrund ist, wenn du durch Copy/Paste gleichzeitig mehrere zellen änderst würde der weitere Code crashen (nix Schlimmes, er bricht halt ab *gg*) denn ein Zellbereich hat keinen Zellwert, den haben nur einzelne Zellen.
Doppelklicke im Editor auf „Tabelle1“, dann wähle im mittigen Drop-Down „Worksheet“ aus, dann kannst du im rechten Dropdown alle Erignisse sehen/auswählen.
Anallog dazu doppelklick auf „DieseArbeitsmappe“, mittig „Workbook“, rechts dann analog sind die Ereignisse der mappe zu sehen.
kannst du mir aber zu dem bisherigen text ne kleine erklärung
geben, wie das funkt? würde da gern mal bisschen rum
experimentieren.
Daurch daß die Prozedur nicht den festgelegten Namen hat, ist es eine ganz normale Prozedur/Makro.
D.h. nach Drücken des Buttons wird sie gestartet. Nun steht mir target nicht mehr zur Verfügeung. Also greife ich mit Selection auf die markierte Zelle zu
Insofern ist Target und Selection das Gleiche in gewisser Weise.
Scrolle hier im Brett nach ganz unten, da steht ein Beitrag von mir zu Vba-Code, vielleicht hilft er dir weiter.
Gruß
Reinhard