Anzeige
Archiv - Navigation
252to256
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
252to256
252to256
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Absturz in Worksheet_Activate()

Absturz in Worksheet_Activate()
07.05.2003 14:48:34
Tobias
Hallo,

meine Excelmappe enthält einige Makros. Leider stürzt sie immer ab. Den Fehler habe ich in der Sub Worksheet_Activate() ausgemacht. Hier mal der Code:

Private Sub Worksheet_Activate()
Dim col As New Collection
Dim iRow As Integer
Dim sVal As String

'generieren der Gültigkeitsliste

iRow = 2
On Error Resume Next
With Worksheets("Tabelle2")
Do Until IsEmpty(.Cells(iRow, 1))
col.Add .Cells(iRow, 1).Value, .Cells(iRow, 1).Value
iRow = iRow + 1
Loop
End With
On Error GoTo 0
For iRow = 1 To col.Count
If iRow = 1 Then
sVal = col(iRow)
Else
sVal = sVal & "," & col(iRow)
End If
Next iRow
'Worksheets("Tabelle1").Unprotect
With Range("C8").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=sVal
.IgnoreBlank = True
.InCellDropdown = True
End With
Worksheets("Tabelle1").Protect
End Sub

Insbesondere der Teil...:

Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=sVal

macht Probleme. Hat jemand eine Idee wie ich diesen Fehler beheben kann oder die ganze Sub so umschreiben kann, das es funzt? Vielen Dank für eure Tipps.

Grüße
Tobias


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Absturz in Worksheet_Activate()
07.05.2003 14:56:32
Nike

Hi,
der _ Underscore ist ein Zeilenumbruch im Code,
vrsuchs mal so:

Add Type:=xlValidateList
AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:=sVal

Bye

Nike

Re: Absturz in Worksheet_Activate()
07.05.2003 15:08:10
Tobias

Hi Nike,

habs probiert aber so will er den Code nicht. Fehlt vielleicht irgendwas?

Gruß
Tobias

Re: Absturz in Worksheet_Activate()
07.05.2003 15:20:52
Nike

Hi,
ooops, ich hab da ein bischen überlesen...
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:=sVal

ob die Formula stimmt, müßte man mal nachstellen,
ich könnte mir da eher List1:= oder so was vorstellen,
denn sVal is ja ein Array...
Lass mal den Makrorecorder mitlaufen und stelle diese
Gültigkeitsregel nach...

Bye

Nike

Anzeige
Re: Absturz in Worksheet_Activate()
07.05.2003 15:29:10
Tobias

Hi,

also der Code in einer Zeile bringt nun "nur" noch einen Laufzeitfehler '1004'. Wie meinst Du das mit dem Makrorecorder? Wie kann ich den denn mitlaufen lassen und die Gültigkeitsliste nachstellen??? Bin kein VBA-Profi.

Gruß
Tobias

Re: Absturz in Worksheet_Activate()
07.05.2003 15:42:16
Nike

Hi,

ersetze mal die Zeile:

sVal = sVal & "," & col(iRow)

hiermit:

sVal = sVal & ";" & col(iRow)

Blende dir die VBA Symbolleiste mit rechtem Mausklick auf
die Symbolleiste ein und wähle dann den Makrorecorder aus
und wähle dann eine Zelle aus, dann das Menü Daten/Gültigkeit
und stelle dann Liste ein und in dem Bereich ein paar
Werte mit ; getrennt oder einen Zellbereich.
Anschließend den Recorder stoppen und dann mal den
entstandenen Code anschaun ...

Bye

Nike

Anzeige
Re: Absturz in Worksheet_Activate()
07.05.2003 15:57:45
Tobias

Hi,

danke für die Anleitung. ;) Habs mal gemacht und er hat folgenden Code fabriziert:

With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Tabelle2!G3:G12"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

Die .Add Type Anweisung sieht ja fast identisch aus. Aber auch mit dem Code kommt ein Laufzeitfehler. Was kann man noch machen?

Gruß
Tobias

Anzeige
Re: Absturz in Worksheet_Activate()
07.05.2003 16:09:37
Nike

Hi,
hm, so auf die Ferne is das nich so easy ;-)

Vielleicht mal Worksheet1 mit activesheet ersetzen...

activesheet.unprotect
With activesheet.Range("C8").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Worksheets("Tabelle2").Range("G3:G12").address
.IgnoreBlank = True
.InCellDropdown = True
End With
activesheet.Protect
'Worksheets("Tabelle1").Protect
End Sub


Bye

Nike

Re: Absturz in Worksheet_Activate()
07.05.2003 16:18:04
Tobias

Hi,

also mit dem Code scheint es zu gehen. Leider taucht aber an einer anderen Stelle dann wieder ein Problem auf. (Eigenschaft List konnte nicht aufgerufen werden...) :(

Ich kann Dir die Mappe ja auch mal kurz senden, wenn Du möchtest. Es ist in der Tat sehr schwieig aus der Ferne das zu beurteilen. Was ich noch vergessen hatte zu erwähnen. Der Laufzeitfehler bzw. der Absturz kam zustande, wenn ich unten zwischen den Blättern hin und her geschalten habe.

Gruß
Tobias

Anzeige

132 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige