Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
560to564
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Code wird nicht richtig getriggert :-(

VBA-Code wird nicht richtig getriggert :-(
04.02.2005 17:35:59
Eugenie
Hallo,
ich beiß heute noch meinen Tisch ganz zu Kleinholz - wäre nett, wenn ihr meinen Tisch retten könntet :-)
Folgendes Problem:
Ich habe diesen (siehe etwas weiter unten) Code, der nicht ganz so will wie ich - gedacht ist, daß dieser Code durchlaufen wird, wenn im Tabellenblatt 'Master' was geändert wird.
Die MessageBox erscheint auch brav, wenn ich auf einem beliebigen Tabellenblatt was ändere - im Gegensatz zum Rest der Routine: der wird nur durchlaufen, wenn ich im Tabellenblatt 'Sprachen' irgendwo einen Zellinhalt ändere. Was mir zumindest zeigt, daß der Code an sich so durchgeht ....
Was läuft da schief und weswegen wird die Routine nicht getriggert, wenn ich außerhalb des Tabellenblattes 'Sprachen' eine Änderung habe?
Nach der langen Vorrede hier der Code

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim bLand As Byte
Dim bSprache As Byte
Dim lgRow As Long
Dim lgZiel As Long
MsgBox Sh.Name & ", " & Target.Address
If IsEmpty(Sheets("Master").Range("Land").Value) Or IsEmpty(Sheets("Master").Range("Sprache").Value) Then Exit Sub
Application.EnableEvents = False
Range("U152:U65536").ClearContents
lgZiel = Sheets("Sprachen").Range("ErgebnisListe").Row
bLand = Sheets("Master").Range("Land")
bSprache = Sheets("Master").Range("Sprache")
Cells(lgZiel - 1, 19) = Sheets("Master").Range("Land").Value
With Sheets("Sprachen")
If bSprache = 1 Then
For lgRow = .Range("Gegenstand").Row To .Cells(Rows.Count, bLand * 2 + bSprache + 5).End(xlUp).Row
If .Cells(lgRow, bLand * 2 + bSprache + 5) <> "" And .Cells(lgRow, 6) <> "" Then
Cells(lgZiel, 21) = .Cells(lgRow, 6)
lgZiel = lgZiel + 1
End If
Next
Else
For lgRow = .Range("Gegenstand").Row To .Cells(Rows.Count, bLand * 2 + bSprache + 4).End(xlUp).Row
If .Cells(lgRow, bLand * 2 + bSprache + 4) <> "" Then
Cells(lgZiel, 21) = .Cells(lgRow, bLand * 2 + bSprache + 4)
lgZiel = lgZiel + 1
End If
Next
End If
End With
Application.EnableEvents = True
End Sub


Ich hoffe, irgendwer sieht, was da (nicht) abläuft ....
MfG
Eugenie

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code wird nicht richtig getriggert :-(
PeterW
Hallo Eugenie,
der Code läuft bei mir auch bei Änderungen auf einem anderen Blatt. Was sind denn deine benannten Bereiche "ErgebnisListe" und "Gegenstand"? In dieser Zeile
Cells(lgZiel, 21) = .Cells(lgRow, 6)
wird mit Cells(lgZiel, 21) die Zelle des Blattes angesprochen, das den Code ausgelöst hat.
Gruß
Peter
AW: VBA-Code wird nicht richtig getriggert :-(
Eugenie
Hallo Peter!
der Code läuft bei mir auch bei Änderungen auf einem anderen Blatt. Was sind denn deine benannten Bereiche "ErgebnisListe" und "Gegenstand"?
Wie Du sicher erkannt hast, ist das Ganze eine Variation Deines Codes, den Du mir vor ein paar Tagen freundlicherweise gepostet hattest - der Bereich 'Ergebnisliste' ist der Spaltenbereich, an dem die extrahierten Werte eingetragen werden sollen (in Deinem Original mit B9:B65536 definiert) und der Bereich "Gegenstand" ist einfach der umbenannte ehemalige Bereich 'Bezeichnung'.

In dieser Zeile
Cells(lgZiel, 21) = .Cells(lgRow, 6)
wird mit Cells(lgZiel, 21) die Zelle des Blattes angesprochen, das den Code ausgelöst hat.

Aaaaahhh - da fehlt der Punkt!!!
Denn es soll ja in einem anderen Tabellenblatt eingetragen werden als in dem, das den Code auslöst.
Was so ein winziger Punkt ausmachen kann ....
Sorry für diesen dummen Fehler :-(
MfG
Eugenie
Anzeige
AW: VBA-Code wird nicht richtig getriggert :-(
Jens_Pu
Hallo Eugenie,
Das steht nach der MsgBox:
If IsEmpty(Sheets("Master").Range("Land").Value) Or IsEmpty(Sheets("Master").Range("Sprache").Value) Then Exit Sub
Ist etwa einer der Bereiche Land oder Master leer?
Gruß Jens
AW: VBA-Code wird nicht richtig getriggert :-(
Eugenie
Hallo Jens!
Das steht nach der MsgBox:
If IsEmpty(Sheets("Master").Range("Land").Value) Or IsEmpty(Sheets("Master").Range("Sprache").Value) Then Exit Sub
Ist etwa einer der Bereiche Land oder Master leer?

Nein, ist genau genommen die Ausgabeverknüpfung einer Listbox(?), die zum Triggern ausgewertet werden soll.
Aber Peter hat mich auf meinen blöden Fehler aufmerksam gemacht - in der Zeile
Cells(lgZiel, 21) = .Cells(lgRow, bLand * 2 + bSprache + 4)
fehlt ganz vor dem ersten Cells der Punkt *ganzrotwerd*
MfG
Eugenie
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige