Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1032to1036
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
VBA Fehler ? Schwierig!
12.12.2008 09:43:00
Angela
Hallo Excelprofis,
möchte gern ein Bereich einfärben, habe hierfür was im Forum gefunden,

Private Sub ComboBox1_Change()
If Cells(1, 1).Value = "P" Then
Range("A2:Z22").Select
With Selection.Interior
.ColorIndex = 37
End With
ElseIf Cells(1, 1).Value = "A" Then
Range("A2:Z22").Select
With Selection.Interior
.ColorIndex = 36
End With
End If
Range("r1").Select
End Sub


Desweitern ist noch der Befehl drin.


Private Sub Worksheet_Activate()
Sortieren
End Sub


Wenn nun das Tab aufgerufen wird, wird ja unter


Private Sub Worksheet_Activate() mit Sortieren eines anderen Tab aufgerufen, diese Tab wird  _
auch sortiert, aber das Makro läuft nicht bis zum Ende, sondern springt zwischendurch in die ComboBox1 und gibt logischerweise eine Fehlermeldung aus.
Es gibt in dem Makro kein Befehl in die ComboBox zu springen.
Anbei das Makro SORTIEREN
Sortieren()
Application.ScreenUpdating = False
With Worksheets("SCHÜLERDATEN")
.Unprotect Password:="test"
.Range("Datenbank").Sort Key1:=Range("Name"), Order1:= _
xlAscending, Key2:=Range("Name1"), Order2:= _
xlAscending, Key3:=Range("Name2"), Order3:= _
xlAscending, Header:=xlGuess, OrderCustom:=1 _
, MatchCase:=False, Orientation:=xlTopToBottom
.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:="test"
End With
Application.ScreenUpdating = True
End Sub


Wer hat einen Rat für mich ?
Denke es müßte was an der ComBoBox geändert werden.
Ich kann auch andere Makros mit der Hand ausführen, und jedesmal geht er in die KomboBox und gibt ein Fehler aus.
Gruß Angela

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Fehler ? Schwierig!
12.12.2008 10:28:32
Wenderhold
hi und moin
kannst du mal diesen file auf den server laden ?
ich habe deinen code kopiert und bei mir laufen lassen,
da wird nicht in den combobox event code gesprungen !!!
das muss was anderes sein !!!!
greeze
e
AW: VBA Fehler ? Schwierig!
12.12.2008 10:49:38
Luschi
Hallo Angela,
mache es so:

Private Sub Worksheet_Activate()
Application.EnableEvents = False
Sortieren
Application.EnableEvents = True
End Sub

Damit wird die Ereignis-Aktivierung vorrübergehend ausgeschalten.
Gruß von Luschi
aus klein-Paris
PS: bei größeren Tabellen sollte man zusätzlich noch die Bildschirmaktualisierung und die automatische Berechnung ausschalten. Suche hierzu mal bei Google nach 'getMoreSpeed'.

Anzeige
AW: VBA Fehler ? Schwierig!
12.12.2008 11:08:00
Angela
Hallo
Danke das Ihr beiden Euch gemeldet habt.

Private Sub Worksheet_Activate()
Application.EnableEvents = False
Sortieren
Application.EnableEvents = True
End Sub


Habe es auch so versucht, aber keine Besserung.
Die Datei ist riesengroß, das geht wohl nicht.
Die Fehlermeldung ist LAUFZEITFEHLER 1004.
Die Select Methode des Range Objekt konnte nicht ausgeführt werden.
Gruß Angela

Eine Frage...
12.12.2008 11:33:00
Tino
Hallo,
…, bekommt die ComboBox1 eventuell Daten aus einem Zellbereich, der verändert wird?
Gruß Tino
AW: Eine Frage...
12.12.2008 11:40:00
Angela
Hallo Tino
Danke das Du so schnell geantwortest hast.
Ich gehe in das Tab1, dort wird ja das SORTIEREN in einem anderen Tab2 ausgelöst.
Nun habe ich in der ComBoBox die ja in Tab1 ist, eine andere Sortierung.
Gruß Angela
Anzeige
AW: Eine Frage...
12.12.2008 12:00:22
Tino
Hallo,
nochmal, bekommt die Combobox Daten aus dem Bereich der Sortiert wird (ListFillRange)?
Ersetze mal das Change Ereignis der Combo durch das Click Ereignis.
Gruß Tino
AW: Eine Frage...
12.12.2008 12:16:04
Angela
Hallo Tino
Genau so ist es. ListFillRange ist als Name definiert.
Aber wo finde ich das Change Ereignis.?
GRUß Angela
AW: Eine Frage...
12.12.2008 12:27:42
Tino
Hallo,
aktiviere den Entwurfsmodus und mach einen doppelklick auf die Combo.
Wie in der Grafik kannst du ein Ereignis aus der Liste auswählen.
Userbild
Gruß Tino
AW: Eine Frage...
12.12.2008 12:55:00
Angela
Hallo Tino,
Natürlich, wo denn sonst. Nee diese Datei macht mich noch Wahnsinnig.
Ich Denke es ist ein ganz anderes Problem, nur welches kann es sein.
Versuche nun schon auf einem anderen Tab den Spezialfilter zum laufen zu bringen, wenn ich es manuel mit der Hand mache, geht es, sobald ich es aber über VBA laufen habe gehts nicht.
Selbst das SORTIEREN mit der Hand geht, wenn ich das Tab SCHÜLERDATEN öffne, dann im Basic mit der Hand das Makro laufen lasse, sortiert er, nur er macht es nicht wenn es automtisch gehen soll.
Wie kommt denn sowas? Ich bin fertig.

Sub Sortieren()
Application.ScreenUpdating = False
With Worksheets("SCHÜLERDATEN")
.Unprotect Password:="test"
.Range("Datenbank").Sort Key1:=.Range("Name"), Order1:= _
xlAscending, Key2:=.Range("Name1"), Order2:= _
xlAscending, Key3:=.Range("Name2"), Order3:= _
xlAscending, Header:=xlGuess, OrderCustom:=1 _
, MatchCase:=False, Orientation:=xlTopToBottom
.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:="test"
End With
Application.ScreenUpdating = True
End Sub


Gruß Angela

Anzeige
AW: Eine Frage...
12.12.2008 12:58:33
Tino
Hallo,
kannst Du nicht eine abgespeckte Version hochladen? (Eventuell auch als .zip)
Sonst wird dies nur lustiges Rätselraten!
Gruß Tino
AW: Eine Frage...
12.12.2008 12:50:23
Tino
Hallo,
befinden sich alle Deine Codeteile in einem Tabellenblatt, könnte es so auch funktionieren.
Microsoft Excel Objekt Tabelle1
Option Explicit 
 
Dim bolSort As Boolean 
 
Private Sub ComboBox1_Change() 
If boSort Then Exit Sub 
   If Cells(1, 1).Value = "P" Then 
       With Range("A2:Z22").Interior 
           .ColorIndex = 37 
       End With 
   ElseIf Cells(1, 1).Value = "A" Then 
       With Range("A2:Z22").Interior 
           .ColorIndex = 36 
       End With 
   End If 
Range("r1").Select 
 
End Sub 
 
Private Sub Worksheet_Activate() 
 Sortieren 
End Sub 
 
 
Sub Sortieren() 
 Application.ScreenUpdating = False 
 boSort = True 
 With Worksheets("SCHÜLERDATEN") 
     .Unprotect Password:="test" 
     .Range("Datenbank").Sort Key1:=Range("Name"), Order1:= _
         xlAscending, Key2:=Range("Name1"), Order2:= _
         xlAscending, Key3:=Range("Name2"), Order3:= _
         xlAscending, Header:=xlGuess, OrderCustom:=1 _
         , MatchCase:=False, Orientation:=xlTopToBottom 
     .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:="test" 
 End With 
 boSort = False 
 Application.ScreenUpdating = True 
 End Sub 
 


Sollte dies nicht der Fall sein, verschiebe die Zeile
Dim bolSort As Boolean
in ein Modul und mach aus dieser
Public bolSort As Boolean
Gruß Tino

Anzeige
AW: Eine Frage...
12.12.2008 13:11:23
Angela
Hallo Tino
geht beides nicht.
Bekomme denFehler beim kompilieren Variable nicht defeniert.
Ausserdem läuft er automatisch wieder in die ComboBox, da ich es wieder mit F8 versucht habe.
Gruß Angela
AW: Eine Frage...
12.12.2008 13:13:00
Tino
muss überall bolSort heißen ;-) !!!! sorry
Referenzierung fehlt
12.12.2008 11:42:00
Christian
Hallo,
die Referenzierung fehlt.
schreibe in die Sortier-Routine jeweils einen Punkt vor "Range(...", vorausgesetzt, die Bereiche "Name", "Name1" und "Name2" sind alle im Tabellenblatt "SCHÜLERDATEN" definiert.
also so

With Worksheets("SCHÜLERDATEN")
.Unprotect Password:="test"
.Range("Datenbank").Sort Key1:=.Range("Name"), Order1:= _
xlAscending, Key2:=.Range("Name1"), Order2:= _
xlAscending, Key3:=.Range("Name2"), Order3:= _
xlAscending, Header:=xlGuess, OrderCustom:=1 _
, MatchCase:=False, Orientation:=xlTopToBottom
.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:="test"
End With
'...

Gruß
Christian

Anzeige
AW: Referenzierung fehlt
12.12.2008 11:59:00
Angela
Hallo Christian
vielen Dank für die Rückmeldung.
Wenn Du mein ersten Beitrag schaust, sind dort Punkte vorhanden.
Oder habe ich was falsch verstanden?
Die Namen sind definiert.
So sieht das Makro aus.

Sub Sortieren()
Application.ScreenUpdating = False
With Worksheets("SCHÜLERDATEN")
.Unprotect Password:="test"
.Range("Datenbank").Sort Key1:=Range("Name"), Order1:= _
xlAscending, Key2:=Range("Name1"), Order2:= _
xlAscending, Key3:=Range("Name2"), Order3:= _
xlAscending, Header:=xlGuess, OrderCustom:=1 _
, MatchCase:=False, Orientation:=xlTopToBottom
.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:="test"
End With
Application.ScreenUpdating = True
End Sub


Gruß Angela

Anzeige
AW: Referenzierung fehlt
12.12.2008 12:11:03
Christian
schau mal genau hin...
bei dir:
Key1:=Range("Name") --- kein Punkt vor Range
bei mir:
Key1:=.Range("Name") --- mit Punkt vor Range
ebenso bei Key2 und Key3.
Gruß
Christian
AW: Referenzierung fehlt
12.12.2008 12:26:41
Angela
Hallo Christian,
danke das Du Dir soviel Mühe machst, aber leider das war es nicht.
Nur Schade das die Datei so groß ist, sonst hätte ich sie schon hochgeladen.
Ihr Profis seht schneller was da los ist.
Vielen Dank erstmal.
Gruß Angela
AW: Referenzierung fehlt
12.12.2008 14:12:00
robert
hi,
man kann doch die datei unter einem anderen namen speichern und dann nur ein paar daten drin lassen, damit sie kleiner wird.
gruß
robert
Anzeige
AW: VBA Fehler ? Schwierig!
14.12.2008 17:47:00
Dani

Private Sub ComboBox1_Change()
If Cells(1, 1).Value = "P" Then
Range("A2:Z22").Interior.ColorIndex = 37
ElseIf Cells(1, 1).Value = "A" Then
Range("A2:Z22").Interior.ColorIndex = 3
End If
End Sub


AW: VBA Fehler ? Schwierig!
12.12.2008 14:51:00
Jürgen
Hallo Angela,
zuerst der Hinweis, dass das Einfärben der Zellen auch einfach über eine bedingte Formatierung erreicht werden könnte.
Die Kombination irgendwas.Select + Selection.Tuwas kostet unnötig Zeit und nervt mit Bildschrimflackern - dann besser direkt irgendwas.Tuwas.
Dein Problem mag auch daher rühren, dass in dem Code für das Change-Event der Combobox keine eindeutige Referenzierung enthält. Versuche es doch mal so (wenn die bedingte Formatierung keine Lösung ist):

Private Sub ComboBox1_Change()
With Sheets("Tabelle1")
If .Cells(1, 1).Value = "P" Then
.Range("A2:Z22").Interior.ColorIndex = 37
ElseIf Cells(1, 1).Value = "A" Then
.Range("A2:Z22").Interior.ColorIndex = 36
End If
.Range("r1").Select
End With
End Sub


"Tabelle1" muss natürlich noch auf den richtigen Tabellennamen angepasst werden.
Wenn das nicht hilft: in welcher Zeile genau erhälst Du den Laufzeitfehler?
Herzlichen Gruß
Jürgen

Anzeige
bedingt OT: Frage am Rande
12.12.2008 17:12:57
Luc:-?
Hast du das nur dort her, Angela,
oder gar was mit ihm zu tun...? ;-)
Gruß Luc :-?

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige