05. november 2007 - 17:51Der er
8 kommentarer og 1 løsning
Hjælp til fejlmeddelse
Hej! Jeg har på ark1 en listbox og en komand knap. Jeg har lavet en makro så når brugeren vælger noget i listbox og trykker på knap så indsættes 3 rækker fra andre ark på ark1. Makroen består af mange blokke som er næsten identiske, men efterhånden har jeg lavet mange blokke så jeg får fejlmeddelelse :" Compile error-Procedure too large. Hvad kan jeg gøre? If ListBox1.Value = "Delta" Then
Worksheets("vj").Range("4:4").Copy
With Worksheets("Ark1").Range("24:24") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With Worksheets("vj").Range("5:5").Copy With Worksheets("Ark1").Range("26:26") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With Worksheets("vj").Range("6:6").Copy With Worksheets("Ark1").Range("27:27") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With End If
If ListBox1.Value = "Dba" Then Worksheets("vj").Range("8:8").Copy
With Worksheets("Ark1").Range("24:24") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With Worksheets("vj").Range("9:9").Copy With Worksheets("Ark1").Range("26:26") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With Worksheets("vj").Range("10:10").Copy With Worksheets("Ark1").Range("27:27") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With End If
Du kan bryde din procedure ned i enkeltdele, så hver kopieringsblok bliver en selvstændig procedure. Derefter kan du lave en ekstra procedure med Select Case, der testet på, hvad der vælges i Listbox'en, og så kalder den relevante procedure.
Jeg har brudt min procedure i flere sub og indsæt dem i module 1 og 2, men når jeg kalder proedure så får jeg fejlmeddelse:"object required og den første linie i nedenstående procedure bliver markeret gult.
Sub data()
If listbox1.Value = "Ragna" Then
Worksheets("vj").Range("4:4").Copy
With Worksheets("Ark1").Range("24:24") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End With End If End Sub
Select Case listbox1.value Case is = "Ragna" Call .... (navn på procedure, der kopierer det relevante") Case is = "Delta" Call .... (navn på procedure, der kopierer det relevante") osv. End Select
End sub
og så ingen IF listbox.value = i de enkelte procedurer.
With Worksheets("Ark1") If .ListBox1.Value = "Delta" Then Worksheets("vj").Range("4:4").Copy .Range ("24:24") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments Worksheets("vj").Range("5:5").Copy .Range ("26:26") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments Worksheets("vj").Range("6:6").Copy .Range ("27:27") .PasteSpecial xlPasteValues .PasteSpecial xlPasteComments End If End With
With Worksheets("Ark1") If .ListBox1.Value = "Delta" Then Worksheets("vj").Range("4:4").Copy .Range("24:24").PasteSpecial xlPasteValues .Range("24:24").PasteSpecial xlPasteComments Worksheets("vj").Range("5:5").Copy .Range("26:26").PasteSpecial xlPasteValues .Range("26:26").PasteSpecial xlPasteComments Worksheets("vj").Range("6:6").Copy .Range("27:27").PasteSpecial xlPasteValues .Range("27:27").PasteSpecial xlPasteComments End If End With
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.