Just nu i M3-nätverket
Gå till innehåll
Tommy H

Körfel '1004' i Excel VBA

Rekommendera Poster

Hej!

Jag får felmeddelande 4enligt bifogad fil då jag försöker att anropa en modul ifrån ett Userform.

Både modulen och Userformen ligger i samma arbetsbok.

Makrona ärr aktiuverade, och finns ju i arbetsboken!

Det fungerar på andra liknande anrop i samma arbetsbok....

 

Vad är det som blir fel?

/TH

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ingen fil bifogad, för att kunna bifoga VBA-aktiverade filer måste dessa först zippas.

 

Men kolla referenserna i projektet, någon essentiell som fallit bort?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

"någon essentiell som fallit bort?"

 

Hmmm...

Vad skulle det kunna innebära i makrovärlden?

 

Försöker att bifoga skärmdumpen igen, zippad...

 

/TH
 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

I mitt Userform:

Private Sub CommandButton24_Click()
Run "Bladhantering"
End Sub

I "Bladhanteringsmodulen":

Sub Bladhantering()
Range("O3:O5000").Select
Selection.ClearContents
Range("O2").Select
Dim AntalRader As Integer
Dim i As Integer
Dim counter As Variant 'räkning av rader
Dim counter2 As Variant 'bladnumreringen
Set counter2 = Sheets("RULES").Range("E2")
'Sätter in första bladnumret i cell "O2"
    counter2 = counter2 + 1
    ActiveCell = Sheets("RULES").Range("D2") & "___" & "0" & counter2 - 1
'Antal rader för X1 innan sidbrytning
    AntalRader = 65
10  ActiveCell.Offset(0, 0).Select
    Do Until counter = AntalRader
       counter = counter + 1
       ActiveCell.Offset(1, 0).Select
            If ActiveCell.Offset(0, -13).Value = "-X3" Then
            Exit Sub
            End If
    Loop
       
        counter = 0
30  If ActiveCell.Offset(0, -13).Value = "-X1" And ActiveCell.Offset(-1, -13) = "" Then
        counter2 = counter2 + 1
        ActiveCell = Sheets("RULES").Range("D2") & "___" & "0" & counter2 - 1
        Else: ActiveCell.Offset(-1, 0).Select
            GoTo 30
    End If
GoTo 10
End Sub

Ja, jag vet att jag inte får ha mina "GoTo" men jag klarar mig inte utan dem :-)

 

/TH

Redigerad av Monshi
KOD-taggar!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

1: Vilket blad adresserar du i

Range("O3:O5000")

 

2: Select-satser är av nästan lika mycket ondo som GoTo, helt onödiga i normal kod

 

 

3: goto... no comment

 

Städat din kod, vette tusan om den gör det du önskar men tror det.

Sub Bladhantering()
    Dim rnTarget As Range
   
    Dim AntalRader As Integer
    Dim i As Integer
    Dim counter2 As Integer 'bladnumreringen
    With Sheets("RULES")
        .Range("O3:O5000").ClearContents
        Set rnTarget = .Range("O2")
    
    
        counter2 = .Range("E2")
    'Sätter in första bladnumret i cell "O2"
        counter2 = counter2 + 1
        rnTarget = .Range("D2") & "___" & "0" & counter2 - 1
    'Antal rader för X1 innan sidbrytning
        AntalRader = 65
    
        Do While True 'något mer villkor rekommenderas!
            For i = 0 To i = AntalRader
                Set rnTarget = rnTarget.Offset(1, 0)
                If rnTarget.Offset(0, -13).Value = "-X3" Then
                    Exit Sub
                 End If
            Next i
         
            Do While Not (rnTarget.Offset(0, -13).Value = "-X1" And rnTarget.Offset(-1, -13) = "")
                If rnTarget.Row = 1 Then Exit Sub 'annars felvärde
                Set rnTarget = rnTarget.Offset(-1, 0)
            Loop
            
            If rnTarget.Offset(0, -13).Value = "-X1" And rnTarget.Offset(-1, -13) = "" Then 'torde alltid vara uppfyllt men..
                counter2 = counter2 + 1
                rnTarget = Sheets("RULES").Range("D2") & "___" & "0" & counter2 - 1
            End If
        Loop
    End With
End Sub

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Så då fick jag en läxa...

Intressant att se hur du löser mina GoTo-satser!

Det ska jag verkligen ta till mig...

 

Range("O3:O5000") refererar till Ws "Prenad"...

Menar du att det är där jag har mitt problem?

 

Gjorde några snabba testkörningar och nu är det i koden jag fastnar!

Det innebär att det var lösningen..

 

Stort tack för det!!!!

 

/TH

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du ska ALLTID se till att unikt adressera det blad du vill arbeta med. Arbeta ALDRIG med Activesheet i en bok om nu det inte är direkt motiverat.

 

Se

//eforum.idg.se/topic/220943-riktlinjer-f%C3%B6r-bra-vba-kod/

 

Du har uppdaterat referenserna i koden ovan? Alla, i min version, refererar till samma blad i boken.

 

och notera att du har en Do While True-sats, denna bör ha ett villkor för att brytas. Nu har du iofs en Exit sub i koden men det gäller då att koden når dit.

Denna sats skulle kunna läggas som villkor i loopen eventuellt.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...