Microsoft Excel

Herbers Excel/VBA-Archiv

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

Fehler bei Ereignisprozeduren | Herbers Excel-Forum


Betrifft: Fehler bei Ereignisprozeduren von: mpb
Geschrieben am: 10.02.2012 12:35:56

Hallo,

im Klassenmodul der Tabelle "Übersicht" befinden sich folgende Ereignisprozeduren:

Private Sub ComboBox1_Change()
'On Error Resume Next
Application.ScreenUpdating = False
For j = 6 To 28
If Rows(j).EntireRow.Hidden = True Then
    Range("A6:A28").EntireRow.Hidden = False
    Exit For
End If
Next j

z = Range("F3") - 1984
Range(Cells(7, 1), Cells(z, 1)).EntireRow.Hidden = True
For i = 2 To 14 Step 2
    Cells(z + 1, i) = Cells(z + 1, 2)
    Cells(z + 1, i + 1) = "x"
Next i
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Range("A6:A28").EntireRow.Hidden = False
Worksheets("Original").Range("A7:O28").Copy Destination:=Range("A7")
Application.ScreenUpdating = True
End Sub

Über die Auswahl in der ComboBox wird eine Zeile im Bereich 7:28 ausgewählt. Sodann werden die Zeilen von 7 bis z ausgeblendet und bestimmte Werte innerhalb der Zeile z+1 in die verschiedenen Spalten kopiert. Das funktioniert alles.

Über den CommandButton soll dieser Vorgang rückgängig gemacht werden, d.h. einblenden der Zeilen 6:28 und Kopie ursprünglichen Inhalte aus einer Tabelle "Original". Das funktioniert nur bedingt:

1. Bei Verwendung des obigen Codes wird zwar alles wie vorgesehen rückgängig gemacht. Ich erhalte jedoch den "Laufzeitfehler 1004: Die Hidden-Eigenschaft des Range-Objektes kann nicht zugeordnet werden", wobei beim Debuggen für mich nicht nachvollziehbar die Code-Zeile

If Rows(j).EntireRow.Hidden = True Then

in der
Private Sub ComboBox1_Change()-Ereignisprozedur markiert ist.

2. Wenn ich dies umgehe, indem ich die Codezeile

On Error Resume Next

hinzufüge, werden bei einem Klick auf den CommandButton zwar die Zeilen wieder eingeblendet,  _
der Kopiervorgang wird aber nicht durchgeführt.


Hat jemand eine Idee, woran das liegt? Irgendetwas übersehe ich, aber was?


Gruß
Martin


  

Betrifft: AW: Fehler bei Ereignisprozeduren von: Dirk
Geschrieben am: 10.02.2012 20:15:10

Hallo Martin,

wenn ich die von dir geposteten Makros laufen lasse erhalte ich keine Fehlermeldung.

Kannst du nicht mal ne Beispieldatei hochladen, das man das Prüfen kann?
Die Daten kannst ja austauschen

Gruß
Dirk


  

Betrifft: AW: Fehler bei Ereignisprozeduren von: fcs
Geschrieben am: 11.02.2012 08:01:20

Hallo Martin,

das Zurückkopieren startet bei dir bei dir auch die Changeprozedur der Combobox. Um das zu verhindern solltest du die Ereinismakros zeitweise deaktivieren.

Gruß
Farnz

Private Sub CommandButton1_Click()
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
  End With
  Range("A6:A28").EntireRow.Hidden = False
  Worksheets("Original").Range("A7:O28").Copy Destination:=Range("A7")
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
  End With
End Sub



  

Betrifft: AW: Fehler bei Ereignisprozeduren von: mpb
Geschrieben am: 15.02.2012 12:58:06

Hallo Franz,

vielen Dank, wieder etwas dazugelernt.

Gruß
Martin


Beiträge aus den Excel-Beispielen zum Thema "Fehler bei Ereignisprozeduren"