VBA Range Wert....

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

Betrifft: VBA Range Wert....
von: Malte Ludwig
Geschrieben am: 23.06.2015 10:18:34

....einer Zelle derselben Zeile einer anderen Spalte ausgeben
Dim rngZelle As Range
XXX = rngZelle.Value
Das sieht ja als Ergebnis so aus, dass der Inhalt der Range wiedergegeben wird.
Ich hätte gerne, dass stattdessen der Inhalt einer anderen Zelle wiedergegeben wird, und zwar der Zelle B in derselben Zeile wie Range.
XXX = rngZelle(ActiveCell.Row, 2).Value
scheint nicht zu funktionieren, habe aber nichts anderes gefunden (oder die falschen Suchbegriffe eingegeben)
Vielen Dank im Voraus!
Malte

Bild

Betrifft: Cells(ActiveCell.Row, 2)
von: Matthias L
Geschrieben am: 23.06.2015 10:27:00
Hallo
probiers mal so

ActiveCell = Cells(ActiveCell.Row, 2).Value
Wobei ActiveCell auch ne belibig andere Zelle sin kann.
Gruß Matthias

Bild

Betrifft: AW: Cells(ActiveCell.Row, 2)
von: Malte Ludwig
Geschrieben am: 23.06.2015 10:45:01
Hm das gibt mir den Wert FALSCH in der Zelle raus,
aber das liegt wahrscheinlich daran, dass das ganze ein wenig komplexer ist und ich einfach dachte ich könne es ohne posten von Zusammenhängen lösen...
Also hier der Zusammenhang:
Ich habe eine Liste in die alle Änderungen ausgelesen werden (freundlicherweise gecoded von einem anderen Forenmitglied)


Private Sub Workbook_SheetChange(ByVal Sh As Object, _
                                 ByVal Target As Range)
Dim lngLZ As Long
Dim rngZelle As Range
On Error GoTo Fehler
'Zellwertänderungen aller Tabellen in Tabelle 'wksDoku' eintragen
'Ausnahme: Zelländerung in wksDoku
If Sh.CodeName <> "wksDoku" Then
  'damit DIESE Prozedur durch Eingaben in wksDoku
  'NICHT gestartet wird
  Application.EnableEvents = False
  With wksDoku
    'erste freie Zeile in wksDoku ermitteln
    lngLZ = .Cells(1, 1).End(xlDown).Row + 1
    'wenn wksDoku voll dann alte Inhalte löschen
    If lngLZ > Rows.Count Then
      Call NeuesProtokoll
      'erste freie Zeile in wksDoku ermitteln
      lngLZ = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    End If
    .Cells(lngLZ, 2) = ActiveSheet.Name
    .Cells(lngLZ, 3) = ActiveSheet.Name 'Hier soll der Personenname rein,
                                        'zu finden in derselben Zeile Spalte B wie rngZelle
    .Cells(lngLZ, 6) = Environ("Username")
    .Cells(lngLZ, 7) = Environ("Computername")
    .Cells(lngLZ, 8) = ThisWorkbook.FullName
    'falls gleichzeitige Eingabe in mehreren Zellen
    For Each rngZelle In Target
      .Cells(lngLZ, 1) = Now
      .Cells(lngLZ, 4) = rngZelle.Value 'Hier soll der Modulname rein,
                                        'zu finden in derselben Spalte, Zeile 7 wie rngZelle
      If rngZelle.Value = "" Then
        .Cells(lngLZ, 5) = "< Inhalt entfernt >"
      Else
        .Cells(lngLZ, 5) = rngZelle.Value
      End If
      lngLZ = lngLZ + 1
      If lngLZ > Rows.Count Then
        Call NeuesProtokoll
        'erste freie Zeile in wksDoku ermitteln
        lngLZ = .Cells(Rows.Count, 1).End(xlUp).Row + 1
      End If
    Next
  End With
  Application.EnableEvents = True
End If
Exit Sub
Vielen Dank fürs Helfen!
Malte

Bild

Betrifft: das ist aber auch nicht komplett
von: Matthias L
Geschrieben am: 23.06.2015 10:59:32
Hallo
Da fehlt aber immer noch Einiges.
Fehlersprungmarke ist z.B. nicht vorhanden
End Sub fehlt
wo steht den der einzutragende Name?
Bei mir sieht das so aus.

 ABCDEFGH
1        
223.06.2015 10:57Tabelle2Tabelle2HalloHallogeändertgeändertMappe2
323.06.2015 10:57Tabelle3Tabelle3TestTestgeändertgeändertMappe2


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Bild

Betrifft: AW: das ist aber auch nicht komplett
von: Malte Ludwig
Geschrieben am: 23.06.2015 11:18:02
ich Hänge dir einfach die ganze Mappe an, dann besteht auch nicht die Chance, dass ich wieder was vergesse.
https://www.herber.de/bbs/user/98399.xlsm

Bild

Betrifft: ich hab gerade nochmal geantwortet
von: Matthias L
Geschrieben am: 23.06.2015 11:23:36
Hallo
Schau mal bitte in meinen letzte Beitrag, ob das Dein Problem schon löst.
Gruß Matthias

Bild

Betrifft: Du musst in die Schleife rein!
von: Matthias L
Geschrieben am: 23.06.2015 11:21:35
Hallo
Du musst die Zeilen innerhalb der For Each-Schleife schreiben!

    For Each rngZelle In Target
      .Cells(lngLZ, 1) = Now
      .Cells(lngLZ, 2) = ActiveSheet.Name
       MsgBox rngZelle.Row 'Test
      .Cells(lngLZ, 3) = Cells(rngZelle.Row, 2) 'Hier soll der Personenname rein,
' usw
Gruß Matthias

Bild

Betrifft: AW: Du musst in die Schleife rein!
von: Malte Ludwig
Geschrieben am: 23.06.2015 11:32:35
Juhu!
Hat super geklappt!
Danke dir vielmals!
Auf geht's zum nächsten Problem...
LG
Malte

Bild

Betrifft: ...das nicht wirklich eines ist (s.ob)... ;-) orT
von: Luc:-?
Geschrieben am: 23.06.2015 12:49:16
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: AW: gelöst
von: Malte Ludwig
Geschrieben am: 24.06.2015 08:32:13
Vielleicht nicht für euch Gurus ;-)
LG
Malte

Bild

Betrifft: AW: VBA Range Wert....VBA? Als Formel "=A2" oT
von: JoWE
Geschrieben am: 23.06.2015 10:27:36


Bild

Betrifft: AW: VBA Range Wert....
von: Daniel
Geschrieben am: 23.06.2015 10:39:55
Hi
entweder:
xxx = rngZelle.worksheet.Cells(rngZelle.Row, 2).Value
oder:
xxx = rngZelle.Offset(0, 2 - rngZelle.Column).Value
die 2 steht für Spalte B
Gruß Daniel

Bild

Betrifft: AW: VBA Range Wert....
von: Malte Ludwig
Geschrieben am: 23.06.2015 10:54:19
Habe ich ausprobiert,
funktioniert in dem Zusammenhang nicht, siehe Antwort mit Code weiter oben.
Trotzdem Danke!
Malte

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Y-Achse Min-Wert definieren"