VBA-Code wird nicht richtig getriggert :-(

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

Betrifft: VBA-Code wird nicht richtig getriggert :-( von: Eugenie
Geschrieben am: 04.02.2005 17:35:59

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
Bild


Betrifft: AW: VBA-Code wird nicht richtig getriggert :-( von: PeterW
Geschrieben am: 04.02.2005 17:52:07

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


Bild


Betrifft: AW: VBA-Code wird nicht richtig getriggert :-( von: Eugenie
Geschrieben am: 04.02.2005 18:16:26

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


Bild


Betrifft: AW: VBA-Code wird nicht richtig getriggert :-( von: Jens_Pu
Geschrieben am: 04.02.2005 18:02:57

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


Bild


Betrifft: AW: VBA-Code wird nicht richtig getriggert :-( von: Eugenie
Geschrieben am: 04.02.2005 18:22:06

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


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA-Code wird nicht richtig getriggert :-("