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

Rekommendera Poster

Postad (redigerade)

Jag har en matrikel där jag har infogat en tidstämpelfunktion som har funkat hyggligt men nu krånglar. 

Har prövat lite olika varianter men får vid varje uppdatering upp en dialogruta med "Ogiltigt proceduranrop eller argument". (Se bifogad bild.)
Det är ett enkelt skript men jag blir inte klok på vad som felas - någon som vet bättre än mig? 

Bifogar skriptet som txt-fil!

 

error.png

VBA Timestamp.txt

 

Infogar texten direkt, förenklar kanske lite:

Private Sub Worksheet_Change(ByVal Target As Range)

    Call Modul1.TaBortSkydd
    
    Application.EnableEvents = False
    ActiveSheet.ListObjects("Tabell2").Range.Select
        With Selection
            If Target.Column <= 13 Or Target.Column >= 15 Then
            Range("N" & Target.row).Value = Date
            End If
        End With
    Application.EnableEvents = True
    Call Modul1.Skydd
    
End Sub

/Mikael63, moderator

Redigerad av Mikael63
Visar koden direkt

Dela detta inlägg


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

Jag tar för givet att du har säkerställt att subbarna TaBortSkydd och Skydd finns i Modul1.

 

Testa att göra din Worksheet_Change publik genom att ta bort ordet Private.

Sub Worksheet_Change(ByVal Target As Range)

 

 

Dela detta inlägg


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

Hej!
Tack för svar. Ja, jag har testat olika varianter inklusive att ta bort "Private"...

 

Dela detta inlägg


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

Inga direkta svar men lite förslag på felsökning. 

Jag misstänker starkt att det är något fånigt fel, t.ex att tabell2 inte heter tabell2 längre, eller att du döpt om Modul1. Det där felmeddelandet är ganska luddigt och den typen av fel är löjligt svåra att hitta (fråga inte hur jag vet det...).

 

annars:

Kan du visa "Huvudet" på TaBortSkydd  respektive Modul1.Skydd?  dvs motsvarigheten till:

Private Sub Worksheet_Change(ByVal Target As Range)

 

 

Du kan även testa att göra en kopia av din "Worksheet_Change" och köra den som en vanlig SUB  (med manuell target). Typ:

Sub test()
Set Target = ActiveCell
    Call Modul1.TaBortSkydd
    Application.EnableEvents = False
    ActiveSheet.ListObjects("Tabell2").Range.Select
        With Selection
            If Target.Column <= 13 Or Target.Column >= 15 Then
            Range("N" & Target.Row).Value = Date
            End If
        End With
    Application.EnableEvents = True
    Call Modul1.skydd
End Sub

Då borde du kunna stega igenom med [F9] och se var felet uppstår

 

 

För övrigt: Undvik gärna Select. Det har en förmåga att ge skumma fel. Om jag tolkar din kod rätt så är syftet att "Selecta" tabell2 bara att du vill vara säker på att du står i tabellen när koden körs?  Eller?  Annars vet jag inte varför du har en selection.

 

Om du vill kolla att du står i tabellen så är det bättre att köra en Intersect. Dvs kolla om och Table2  och Target (cellen som ändrades och satte igång makrot) har någon cell gemensam.

 

Exempel

 

'skapa testvariabeln test (Kreativt...)

Dim test As Variant

'Kolla vilka celler Target och tabell2 har gemensamma:
Set test = Application.Intersect(Target, _
ActiveSheet.ListObjects("Tabell2").Range)

 

'Om svaret blir Nothing så ligger target utanför tabell2 

 

'If-satset körs INTE om (Kolumnen=14 eller Target ligger utanför tabell2)


If Not (test Is Nothing Or Target.Column = 14) Then
    Range("N" & Target.Row).Value = Date
End If

 

 

Dela detta inlägg


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

Tack för svar!

Jag har prövat det mesta inklusive de tips du kommer med men utan framgång...
När jag gjort föreslagna ändringar så antingen skapas ingen tidstämpel alls eller så skapas en men med dialogrutan "Ogiltigt proceduranrop..." som pop-up!

Redigerad av MvS

Dela detta inlägg


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

Testade du att göra om till en vanlig SUB (utan Worksheet_Change)?

Vad händer när du stegar igenom koden med [F8]? Kan du se var det går fel?

Om du kan se var det går fel så är det lättare att identifiera problemet.

 

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



×