Microsoft Excel

Herbers Excel/VBA-Archiv

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

VBA Range Wert....

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

  

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


  

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


  

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


  

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


  

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


  

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


  

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


  

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

Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: gelöst von: Malte Ludwig
Geschrieben am: 24.06.2015 08:32:13

Vielleicht nicht für euch Gurus ;-)

LG
Malte


  

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




  

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


  

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