Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Bezug auf andere Tabelle herstellen
#1
Hallo, ich habe folgendes Problem. Ich benötige ein Multi Drop Down Menü für eine Tabelle. Das Habe ich soweit auch im Internet gefunden und getest. Es Funktioniert auch alles soweit ich müsste nun aber in dem Code als Bezugstabelle eine andere Arbeitsmappe angeben, könnte mir jemand erklären was ich ändern muss bzw. wie?
Ich habe Fett markiert wie es aktuell aussieht, ich müsste aber die Daten aus der Tabelle von Arbeitsmappe 2 entnehmen und auf Arbeitsmappe 1 Ausgeben.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Not Intersect(Target, Range("A2:C12")) Is Nothing Then
  If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
  Else: If Target.Value = "" Then GoTo Exitsub Else
    Application.EnableEvents = False
    Newvalue = Target.Value
    Application.Undo
    Oldvalue = Target.Value
      If Oldvalue = "" Then
        Target.Value = Newvalue
      Else
        If InStr(1, Oldvalue, Newvalue) = 0 Then
            Target.Value = Oldvalue & ", " & Newvalue
      Else:
        Target.Value = Oldvalue
      End If
    End If
  End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub
Antworten Top
#2
Hallöchen,

in der Zeile mit dem markierten Code prüfst Du lediglich, ob die Zelle mit der Änderung im angegebenen Bereich liegt. Wenn Du auf die Änderung in einem Bereich einer Datei reagieren willst kann es keine Überschneidung mit einem Bereich einer anderen Datei geben.

Eventuell holst Du einen neuen Inhalt in dieser Zeile
Newvalue = Target.Value

z.B. im Prinzip mit
Newvalue = workbooks("AndereDatei.xlsx").Sheets("BlattInAndererDatei").Range("ZelleInAndererDatei")
oder mit variablem Bereich anhand der Zielzelle
Newvalue = workbooks("AndereDatei.xlsx").Sheets("BlattInAndererDatei").Range(Target.Address)

Die AndereDatei sollte dann aber auch offen sein. Bei geschlossener Datei könntest Du eventuell per Formel Daten holen und dann durch den Wert ersetzen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste