Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

ActiveCell - Target


Betrifft: ActiveCell - Target von: Andy
Geschrieben am: 31.01.2018 13:34:18

Hallo alle zusammen,

folgenden Code verwende ich, um gewisse Zellen aus einer Tabelle auszulesen...

Sub Termin_eintragen()

'Variablen einlesen, die benötigt werden
    Dim a As String
    Dim d As String
    Dim h As String
        
    If Cells(2, ActiveCell.Column) = Cells(2, 4) Then
        a = Cells(2, ActiveCell.Column).Value
    Else
        a = Cells(2, ActiveCell.Column).Value & Cells(2, ActiveCell.Column - 1).Value & Cells(2, _
 _
 ActiveCell.Column - 2).Value
    End If

        d = Cells(ActiveCell.Row, 2).Value      ' Beamter
          

'Abfrage, ob der Dienst tatsächlich übernommen werden soll
     
        Dim Wert As Integer
    
        Wert = MsgBox("Soll ein Termin am " & a & " für " & d & " eingetragen werden?", vbYesNo  _
 _
Or vbQuestion Or vbDefaultButton1, "Hinweis")
    
        If Wert = vbNo Then
            ActiveCell.Value = ""
        Exit Sub
        Else
            UserForm2.Show

        
End If
End Sub


Jetzt habe ich allerdings das Problem, dass der oft den Eintrag eine Zelle weiter verwnedet, wenn ich die aktive Zelle mit dem Cursor verlasse. Wie muss ich den Code umschreiben, damit er auch tatsäöchlich in der zuerst ausgewählten Zelle den Eintrag ausliest.

Dachte daran, dass ActiveCell wohl nicht das Richtige ist und da irgendwas mit TARGET rein muss.....

  

Betrifft: AW: ActiveCell - Target von: Rudi Maintaire
Geschrieben am: 31.01.2018 13:43:11

Hallo,
wie wird der Code denn aufgerufen?


Gruß
Rudi


  

Betrifft: AW: ActiveCell - Target von: Andy
Geschrieben am: 31.01.2018 13:59:50

Der Code wird aufgerufen, sobald jemand in einer Tabelle in einem entsprechenden Feld das kürzel "T" eingibt (bevorzugt über ein Dropdown). wenn jemand das dropdown verwendet, klappt es auch. Wenn er aber dann mit dem Cursor das Feld verlässt, dann haben wir den salat :)


If Target.Text = "T" Then Termin_eintragen


  

Betrifft: AW: ActiveCell - Target von: Andy
Geschrieben am: 31.01.2018 15:00:08

Jemand eine Idee, wo der Fehler liegt?


  

Betrifft: AW: ActiveCell - Target von: Andy
Geschrieben am: 31.01.2018 15:08:53

Der Fehler tritt immer dann auch auf, wenn man den Buchstaben "T" in das Feld eingetragen hat und dieses dann nicht mit Enter verlässt. Also zb durch klicken in eine andere Zelle - Dann wird als Grundlage die neu angeklickte Zelle verwendet und nicht die, in der eigentlich das "T" eingetragen wurde.


  

Betrifft: AW: ActiveCell - Target von: Werner
Geschrieben am: 31.01.2018 15:16:44

Hallo Andy,

also mir ist nicht wirklich klar, was du vor hast bzw. was dein Makro erledigen soll. Vielleicht beschreibst du mal genau.

Was klar ist, dass bei Auswahl eines Dorpdown-Wertes in einer bestimmten Zelle etwas passieren soll, nur was?

Am besten mal eine kleine Beispielmappe - aber bitte ohne Makros.

Hört sich für micht jetzt erst mal nach einem Worksheet_Change Event an.

Gruß Werner


  

Betrifft: AW: ActiveCell - Target von: Andy
Geschrieben am: 31.01.2018 16:06:23

Auf einem Tabellenblatt ist ein Kalender hitnerlegt. Und viele nahmen in den Zeilen in spalte 1. Wenn man quasi bei Mitarbeiter 11 am 10.2 in der dortigen Zelle ein T einträgt, soll er mir den namen vom Mitarbeiter auslesen und das Datum, an dem das T eingetragen wurde. Ich muss also quasi wissen, in welcher Spalte und in welcher Zeile das T eingetragen wurde.....


  

Betrifft: Target nicht ActiveCell ... von: Matthias L
Geschrieben am: 31.01.2018 16:17:50

Hallo

Nicht nachvollziehbar

Tabelle1

 EF
4hier "T" eingeben 
5 Name1
6 Name2
7 Name3
8 Name4
9 Name5


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Code in die Tabelle:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Value = "T" Then MsgBox Target.Offset(, 1).Value
End Sub
Egal wie Du die Zelle nun verlässt, wird Dir der Inhalt der Nachbarzelle ausgegeben.

Gruß Matthias


  

Betrifft: AW: Target nicht ActiveCell ... von: Andy
Geschrieben am: 31.01.2018 17:29:05

https://www.herber.de/bbs/user/119448.xlsm


  

Betrifft: AW: Target nicht ActiveCell ... von: Andy
Geschrieben am: 31.01.2018 17:30:16

Ich hoffe, dasss es jetzt deutlicher wird. Wenn man das T auswählt und dann in eine andere leere Zelle klickt, kommt leider nicht der name und das datum des mitarbeiters, wo eigentlich normal das T eingetragen wurde


  

Betrifft: nochmal: Target nicht ActiveCell ... von: Matthias L
Geschrieben am: 31.01.2018 17:41:23

Hallo

Die Formatierung vom Code ist wünschenswert. Da braucht man erstmal 3 Minuten
das Lesbar darzustellen.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wert&
Dim a$
Dim d$
Dim h$
If Target.Text = "T" Then
  'Variablen einlesen, die benötigt werden
   a = Cells(1, Target.Column).Value
   d = Cells(Target.Row, 1).Value
   Wert = MsgBox("Soll der Termin am " & a & " für " & d & " eingetragen werden?", vbYesNo Or  _
vbQuestion Or vbDefaultButton1, "Hinweis")
   If Wert = vbNo Then
      Target.Value = ""
      Exit Sub
   Else
   'mach was
   End If
End If
End Sub
Gruß Matthias


  

Betrifft: AW: nochmal: Target nicht ActiveCell ... von: Andy
Geschrieben am: 31.01.2018 23:46:33

Hey Matthias ... das klappt schon mal... Danke :)

Jetzt ist nur die Frage : warum funktioniert Target im Worksheet-Change und nicht als extra sub ?


  

Betrifft: AW: nochmal: Target nicht ActiveCell ... von: Andy
Geschrieben am: 01.02.2018 09:57:57

Kann man die Variablen denn auch irgendwie über ein Modul allgemein zur Verfügung stellen?

ICh benötige die Werte nämlich auch noch über ein Userform - Da funktioniert aber Target leider nicht .....


  

Betrifft: AW: nochmal: Target nicht ActiveCell ... von: Werner
Geschrieben am: 01.02.2018 10:31:11

Hallo Andy,

dann muss die Deklaration der Variablen aus deinem Worksheet_Change raus und in ein allgemeines Modul -dort aber außerhalb einer Prozedur- und dort als Public deklariert werden.

Annahme:
Eine Userform mit zwei Textboxen. Du brauchst die Variablen a und d auch noch in der Userform in TextBox1 und in TextBox2.

Die Variablendeklaration dieser Variablen aus dem Worksheet_Change raus.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wert&

If Target.Text = "T" Then
  'Variablen einlesen, die benötigt werden
   a = Cells(1, Target.Column).Value
   d = Cells(Target.Row, 1).Value
   Wert = MsgBox("Soll der Termin am " & a & " für " & d & " eingetragen werden?", vbYesNo Or _
vbQuestion Or vbDefaultButton1, "Hinweis")
   If Wert = vbNo Then
      Target.Value = ""
      Exit Sub
   Else
   'mach was
   End If
End If
End Sub
Die Variablendeklaration in ein allgemeines Modul, außerhalb einer Prozedur
Public a$
Public d$

Public Sub aaa()
UserForm1.Show
End Sub
Übergab der Variablen in die Textboxen
Private Sub UserForm_Initialize()
TextBox1 = a
TextBox2 = d
End Sub
Du mußt dann natürlich als erstes dein "T" auf dem Blatt eintragen, damit die Variablen befüllt werden.

Gruß Werner


  

Betrifft: AW: nochmal: Target nicht ActiveCell ... von: Andy
Geschrieben am: 01.02.2018 12:45:13

Werner perfekt - das war die Lösung. Danke allen nochmal !


  

Betrifft: Gerne u.Danke für die Rückmeldung. o.w.T. von: Werner
Geschrieben am: 01.02.2018 13:05:10