VBA einen variablen Wert aus Tabelle auslesen

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

Betrifft: VBA einen variablen Wert aus Tabelle auslesen
von: Annett
Geschrieben am: 18.11.2015 18:46:14

Hallo ihr lieben Profis in Sachen VBA !
Ich habe da mal wieder ein Riesen großes Problem.
Den unten stehenden Code verwende ich und läuft auch Tadellos, dank der tollen Mithilfe hier im Forum.
Nun habe ich mit diesem Code ein Problem.
Es geht um die Zeile(n)


Target.Offset(0, 8) = "8"
Hier ist der Wert {"8"} vordefiniert.
Wie kann man diese Zeile so ändern, das dieser Wert entweder:
aus der selben Mappe Zelle V8 (enthält die Formel =Start!E12)
oder
aus der Mappe "Start" Zelle E12
Hier der Code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then 'prüft auf Spalte 5 = E
    If Target.Row = 8 Or Target.Row = 14 Or Target.Row = 20 Or Target.Row = 26 Or Target.Row =   _
 _
_
32 Then 'prüft auf Zeile
        Select Case Target.Value 'prüft auf Inhalt
            Case "Urlaub"
                Target.Offset(0, 8) = "8" 'P8 stundenberechnung
                Target.Offset(1, -4) = "" 'A9 arbeitsanfang
                Target.Offset(1, -2) = "" 'A11 arbeitszeitende
                Target.Offset(-1, -1) = "" 'D7 rke einsatzort
                Target.Offset(2, -2) = "" 'C10 pausenzeit
                Target.Offset(4, -4) = "" 'A10 rke anfangszeit
                Target.Offset(4, -2) = "" 'A12 rke endzeit
                Target.Offset(-1, 0) = "" 'Spalte1
                Target.Offset(1, 0) = "" 'Spalte3
                Target.Offset(2, 0) = "" 'Spalte4
                Target.Offset(3, 0) = "" 'Spalte5
                Target.Offset(4, 0) = "" 'Spalte6
            Case "verplanter Urlaub"
                Target.Offset(0, 8) = "8" 'P8 stundenberechnung
                Target.Offset(1, -4) = "" 'A9 arbeitsanfang
                Target.Offset(1, -2) = "" 'A11 arbeitszeitende
                Target.Offset(-1, -1) = "" 'D7 rke einsatzort
                Target.Offset(2, -2) = "" 'C10 pausenzeit
                Target.Offset(4, -4) = "" 'A10 rke anfangszeit
                Target.Offset(4, -2) = "" 'A12 rke endzeit
                Target.Offset(-1, 0) = "" 'Spalte1
                Target.Offset(1, 0) = "" 'Spalte3
                Target.Offset(2, 0) = "" 'Spalte4
                Target.Offset(3, 0) = "" 'Spalte5
                Target.Offset(4, 0) = "" 'Spalte6
            Case "Krank"
                Target.Offset(0, 8) = "8"
                Target.Offset(1, -4) = ""
                Target.Offset(1, -2) = "" 'A11 arbeitszeitende
                Target.Offset(-1, -1) = "" 'D7 rke einsatzort
                Target.Offset(2, -2) = "" 'C10 pausenzeit
                Target.Offset(4, -4) = "" 'A10 rke anfangszeit
                Target.Offset(4, -2) = "" 'A12 rke endzeit
                Target.Offset(-1, 0) = "" 'Spalte1
                Target.Offset(1, 0) = "" 'Spalte3
                Target.Offset(2, 0) = "" 'Spalte4
                Target.Offset(3, 0) = "" 'Spalte5
                Target.Offset(4, 0) = "" 'Spalte6
            Case "Feiertag"
                Target.Offset(0, 8) = "8"
                Target.Offset(1, -4) = ""
                Target.Offset(1, -2) = "" 'A11 arbeitszeitende
                Target.Offset(-1, -1) = "" 'D7 rke einsatzort
                Target.Offset(2, -2) = "" 'C10 pausenzeit
                Target.Offset(4, -4) = "" 'A10 rke anfangszeit
                Target.Offset(4, -2) = "" 'A12 rke endzeit
                Target.Offset(-1, 0) = "" 'Spalte1
                Target.Offset(1, 0) = "" 'Spalte3
                Target.Offset(2, 0) = "" 'Spalte4
                Target.Offset(3, 0) = "" 'Spalte5
                Target.Offset(4, 0) = "" 'Spalte6
            Case "Frei"
                Target.Offset(0, 8) = "0"
                Target.Offset(1, -4) = ""
                Target.Offset(1, -2) = "" 'A11 arbeitszeitende
                Target.Offset(-1, -1) = "" 'D7 rke einsatzort
                Target.Offset(2, -2) = "" 'C10 pausenzeit
                Target.Offset(4, -4) = "" 'A10 rke anfangszeit
                Target.Offset(4, -2) = "" 'A12 rke endzeit
                Target.Offset(-1, 0) = "" 'Spalte1
                Target.Offset(1, 0) = "" 'Spalte3
                Target.Offset(2, 0) = "" 'Spalte4
                Target.Offset(3, 0) = "" 'Spalte5
                Target.Offset(4, 0) = "" 'Spalte6
            Case Empty
                Target.Offset(0, 8) = "0"
        End Select
    Else
        'MsgBox "Nicht die richtige Zeile"
    End If
Else
    'MsgBox "Nicht die richtige Spalte"
End If
End Sub

Vielen lieben Dank schon mal im Voraus für Eure Mühe !!!

Bild

Betrifft: AW: VBA einen variablen Wert aus Tabelle auslesen
von: Werner
Geschrieben am: 18.11.2015 18:57:21
Hallo Annette,
das sollte doch mit

Target.Offset(0, 8).Value = Sheets("Start").Range("E12").Value
funktionieren.
Gruß Werner

Bild

Betrifft: AW: VBA einen variablen Wert aus Tabelle auslesen
von: Annett
Geschrieben am: 18.11.2015 19:49:07
Hallo Werner,
vielen lieben Dank für Deine rasche schnelle Antwort :-)
Nun merke ich jedoch das der komplette Code doch nicht so ganz hinhaut wie ich ihn brauche.
Die Zeile


If Target.Row = 8 Or Target.Row = 14 Or Target.Row = 20 Or Target.Row = 26 Or Target.Row = 32  _
Then 'prüft auf Zeile
8 = Montag; 14 = Dienstag; 20 = Mittwoch; 26 = Donnerstag; 32 = Freitag
Von Montag bis Donnerstag sind es die selben Werte.
Der Freitag hat einen anderen Wert.
Ich müßte "Target.Row = 32" einzeln laufen lassen.
Kannst du da auch weiter helfen?

Bild

Betrifft: AW: VBA einen variablen Wert aus Tabelle auslesen
von: Werner
Geschrieben am: 18.11.2015 20:18:58
Hallo Annette,
ich würde da eine Variable einsetzen. So wie ich das sehe, hast du ja nur zwei unterschiedliche Werte. Einmal von Montag bis Donnerstag und einmal den Freitag.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim loWert AS Long
loWert = 0
  If Target.Column = 5 Then 'prüft auf Spalte 5 = E
    If Target.Row = 8 Or Target.Row = 14 Or Target.Row = 20 Or Target.Row = 26 Then loWert = 8
    If Target.Row = 32 Then loWert = 6 'an deine Verhältnisse anpassen
Und dann im Code jeweils die Zeilen
Target.Offset(0, 8) = "8"
ändern in
Target.Offset(0, 8) = loWert
Ist aber ungetestet, sitze am Tablet.
Gruß Werner

Bild

Betrifft: AW: VBA einen variablen Wert aus Tabelle auslesen
von: Annett
Geschrieben am: 18.11.2015 19:32:56
Ich habe es vorerst mal so gelößt:


Target.Offset(0, 8) = "=Start!E12" 'P8 stundenberechnung
Kann man das gelten lassen?
.

Bild

Betrifft: AW: VBA einen variablen Wert aus Tabelle auslesen
von: Hajo_Zi
Geschrieben am: 18.11.2015 19:54:52
wenn Du den Text in der Zelle haben willst ist das richtig. Ansonsten ).Formula


Bild

Betrifft: AW: VBA einen variablen Wert aus Tabelle auslesen
von: Annett
Geschrieben am: 18.11.2015 22:22:30
Ein Riesen großes
D A N K E
für die tolle Hilfe :-)

Bild

Betrifft: AW: Gerne und Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 18.11.2015 23:13:03


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA einen variablen Wert aus Tabelle auslesen"