Microsoft Excel

Herbers Excel/VBA-Archiv

Per Eingabeüberwachung Daten aus anderm Workbook

Betrifft: Per Eingabeüberwachung Daten aus anderm Workbook von: Kai
Geschrieben am: 17.11.2012 09:01:47

Hallo zusammen,

ich möchte bei einem überwachtem Tabellenblatt bei Änderung der Inhalte auf die Daten einer anderen Arbeitsmappe zugreifen.

Hier mein leider nicht Erfolgreicher Versuch:

Private Sub Worksheet_Change(ByVal Target As Range)
    Set Target = Intersect(Target, Range("A1:A600"))
    If Target Is Nothing Then Exit Sub
    pfad = ActiveWorkbook.Path
    If Target.Value <> "" Then
    Workbooks.Open Filename:=pfad & "\tm2"
    For i = 1 To 20
    If Cells(i, 1) = Target.Value Then
    eintrag = Cells(i, 3)
    End If
    Next i
    Workbooks("tm2.xls").Close False
    Cells(Target.Row, 7) = eintrag
    End If
    Set Target = Nothing
End Sub

Bin für jede Hilfe dankbar, vielleicht habe ich ja auch den falschen Ansatz und jemand hat eine bessere Idee.

mfg

Kai

  

Betrifft: AW: Per Eingabeüberwachung Daten von: Hajo_Zi
Geschrieben am: 17.11.2012 10:33:18

Hallo Kai,

Change wirkt nicht bei Formeln, da muss es
Private Sub Worksheet_Calculate()
was aufwendiger ist.
Schaue mal auf diese Seite
http://hajo-excel.de/vba_bild_formel.htm
da werden Bilder mittels Formeln eingefügt.

GrußformelHomepage


  

Betrifft: Im Change-Ereignis Daten aus anderer Mappe von: Erich G.
Geschrieben am: 17.11.2012 10:59:11

Hi Kai,
wo ist das Problem bei deinem Code?
"mein leider nicht Erfolgreicher Versuch" ist als Fehlerbeschreibung wenig hilfreich.
Was genau geht nicht? Fehlermdlungen? Wenn ja - in welcher Zeile?
Sollen wir das, was du schon weißt, erst an einem Nachbau ermitteln?

Schau dir das mal an:

Option Explicit               ' immer zu empfehlen!

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim i As Integer
   If Not Intersect(Target, Range("A1:A600")) Is Nothing Then
      If Target().Value <> "" Then
         Workbooks.Open Filename:=ActiveWorkbook.Path & "\tm2.xls"
         With ActiveWorkbook.Worksheets(1)
            For i = 1 To 20
               If .Cells(i, 1) = Target.Value Then
                  Application.EnableEvents = False
                  Cells(Target.Row, 7) = Cells(i, 3)
                  Application.EnableEvents = True
                  Exit For     ' falls Ende nach 1. Treffer
               End If
            Next i
         End With
         Workbooks("tm2.xls").Close False
      End If
      Set Target = Nothing
   End If
End Sub
Ein Hauptproblem deines Codes:
Wenn du schreibst Cells(i, 1) oder Cells(i, 3) - welche Zellen sind dann gemeint?
VBA nimmt, da der Code zu einem Tabellenblatt gehört, die Zellen aus diesem Blatt.
Du meinst aber die Zellen in der gerade geöffnetenm fremden Mappe. Das musst du VBA dann auch sagen.

Noch eine Bemerkung:
Zellen gehören zu Blättern. Es reicht i. A. nicht aus, eine Mappe zu öffnen und dann Cells(1,1) zu verwenden.
A1 welches Blatts der Mappe soll es sein? Worksheets(1).Cells(1,1) bringt Klarheit.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: Im Change-Ereignis ... korrigiert von: Erich G.
Geschrieben am: 17.11.2012 11:01:39

Hi Kai,
sorry, da fehlte der Punkt vor Cells(i, 3).

Noch mal:

Option Explicit               ' immer zu empfehlen!

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim i As Integer
   If Not Intersect(Target, Range("A1:A600")) Is Nothing Then
      If Target().Value <> "" Then
         Workbooks.Open Filename:=ActiveWorkbook.Path & "\tm2.xls"
         With ActiveWorkbook.Worksheets(1)
            For i = 1 To 20
               If .Cells(i, 1) = Target.Value Then
                  Application.EnableEvents = False
                  Cells(Target.Row, 7) = .Cells(i, 3)
                  Application.EnableEvents = True
                  Exit For     ' falls Ende nach 1. Treffer
               End If
            Next i
         End With
         Workbooks("tm2.xls").Close False
      End If
      Set Target = Nothing
   End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Im Change-Ereignis ... korrigiert von: Kai
Geschrieben am: 17.11.2012 20:40:10

Hallo Erich,

Danke der hilfe, trotz dürftiger Fehlerbeschreibung.
Das Problem war das, das Workbook geöffnet wurde, aber eben nicht auf die Daten zugegeriffen wurde.
Das hast Du richtig erkannt und mit deiner Hilfe funktioniert es jetzt auch.

Also nochmal danke für die schnelle und kompetente hilfe.

@ Hajo, danke auch für deine Mühe, aber es ging nicht um Formeln.


  

Betrifft: AW: Im Change-Ereignis ... korrigiert von: Hajo_Zi
Geschrieben am: 18.11.2012 10:28:29

Es Stand es werden Werte aus andereer Datei übernommen, wie macht man das ohne Formel?
Eine Formel beginnt mit "="

Gruß Hajo


  

Betrifft: Es geht nicht um Formeln von: Erich G.
Geschrieben am: 18.11.2012 10:39:17

Hi Hajo,
ich glaube, da bist du auf einem falschen Gleis.

Stell dir mal vor, in Kais Tabellenblatt steht überhaupt keine Formel.
In diesem ganzen Thread sind Formeln unwichtig.

Er will bei bestimmten Änderungen (z. B. Eingaben) Werte aus einer anderen Mappe übernehmen, aber
nicht per Formel, sondern per einfacher Zuweisung Cells(x,y) = ... in VBA.

Kais Problem ist nicht, dass Change bei Wertänderungen von Formel nicht ausgelöst wurd.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönen Sonntag noch!


  

Betrifft: AW: Es geht nicht um Formeln von: Kai
Geschrieben am: 19.11.2012 00:31:53

Hallo Erich, hallo Hajo,

Erich hat es genau richtig erkannt und jetzt funktioniert es auch.
Aber trotzdem danke der mühe.


 

Beiträge aus den Excel-Beispielen zum Thema "Per Eingabeüberwachung Daten aus anderm Workbook "