Print side | Luk vindue

VBA Fejl (hjælp)

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=5103
Udskrevet den: 16.Sep.2024 kl. 21:11


Emne: VBA Fejl (hjælp)
Besked fra: Tor4Every1
Emne: VBA Fejl (hjælp)
Posteringsdato: 15.Jul.2024 kl. 10:45
Hej Alle, 

Jeg sidder og skal hjælpe en kollega, hvor der i excel filen er lavet nogle VBA koder.  
Disse virker upåklageligt på hans computer, men når en anden kollega  inkl. mig selv bruger den virker den ikke, så hopper den over i "fejl msg".  

Jeg har testet den ved en del andre kollegaer, nogen virker den ved, andre gør den ikke.

Jeg har tjekket opsætningen inde i indstillinger i Excel.  (Alle er ens)  

Nogen der har et forslag til dette, eller kender problemet ? 

P.S lige nu virker den ved 6 kollegaer og 8 virker den ikke ved 



Svar:
Besked fra: Bjarnehansen
Posteringsdato: 15.Jul.2024 kl. 11:17
det er svært at se når man ikke har arket eller koden så man kan se hvad den skal lave


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Tor4Every1
Posteringsdato: 15.Jul.2024 kl. 11:29
Hej Bjarne Hansen, 

Excel kan downloades her:  
https://we.tl/t-vLWe2l6UWK" rel="nofollow - https://we.tl/t-vLWe2l6UWK

Step 1.  tryk på Sheet "Bukkeliste" derefter knappen "slet Bukkeliste"
step 2. gå til Sheet "Skema" og tryk så knappen "Beregn" 
step 3 tryk derefter på knappen "Bukkeliste" 

Så laver den en fejl i at udføre den sidste "Bukkeliste" 


Besked fra: Bjarnehansen
Posteringsdato: 15.Jul.2024 kl. 11:40
her laver den en ny bukkeliste når man følger dine step


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Tor4Every1
Posteringsdato: 15.Jul.2024 kl. 11:43
Jep det gør den bare ikke på min computer :) 
Der stopper den  med


Besked fra: H_sønderskov
Posteringsdato: 16.Jul.2024 kl. 15:21

Hej
Det er højst sandsynligt at det er lavet på en nyere version af Excel,
eller Excel 365 som altid er det nyeste, hvis man prøver at køre det
på Eks. Excel 2019 vil der komme fejl, hvis der bruges nye formler.

Og der ikke er brugt VBA der kan bruges på ældre versioner,
men makroer der bruger nye indbyggede formler.


Besked fra: Tor4Every1
Posteringsdato: 17.Jul.2024 kl. 07:36
Det er lavet i en excel 97.  
og vi køre alle 365


Besked fra: H_sønderskov
Posteringsdato: 18.Jul.2024 kl. 13:47
Hej
Jeg får hellere ingen fejl, når jeg prøver det, så det eneste jeg kan komme på, kan være at dem der virker er Danske versioner, og dem der ikke virker er Engelske.
VH Dead


Besked fra: maxzpad
Posteringsdato: 21.Jul.2024 kl. 08:53
Min anbefaling vil være at debugge VBA-koden trin for trin med F8 i Visual Basic Editor. Så kan du finde frem til den eksakte kodelinje, der trigger fejlen hos de brugere, som oplever den.


Besked fra: Tor4Every1
Posteringsdato: 22.Jul.2024 kl. 09:39
hej maxzpad, 

Det har jeg gjort, men så gennemfører den bare macro som om det virker :)  


Besked fra: maxzpad
Posteringsdato: 22.Jul.2024 kl. 09:46
Ok. Det lyder lidt mystisk, må jeg indrømme.

Hvis du debugger på én af de pc'ere, hvor fejlen opstår, burde du som minimum kunne finde den kodelinje, som trigger, at der vises en MsgBox med fejlbeskeden.

Har du evt. prøvet at vælge indstillingen "Break on All Errors" via menupunktet Tools | Options ... og herefter vælge fanebladet "General" (Error Trapping)? Dette vil få debuggeren til at stoppe uanset, om der et sted i koden står "On Error Resume Next".

Mvh Max


Besked fra: Tor4Every1
Posteringsdato: 22.Jul.2024 kl. 09:56
Hej  Max, 

Det gav mig da en besked der var mere brugbar.  (Tak for den information) 

Der kommer en: 

Run-time error 1004 
Metoden Paste for klassen Worksheet mislykkedes.  

Hvis jeg trykker F8 efter error . virker det fint med kopieringen den stopper bare der.

Nogen ide om hvad det kan være 


Besked fra: maxzpad
Posteringsdato: 22.Jul.2024 kl. 11:00
Der må være en kodelinje, som forsøger at indsætte (paste) et kopieret område et sted.

Jeg ville forsøge mig med at udføre denne copy/paste manuelt i Excel og se, om der kommer en fejlbesked.

Det kan måske være noget med skjulte rækker eller kolonner, som "forstyrrer" paste-funktionen, men det kan også være andre ting, som forårsager, at paste ikke kan gennemføres korrekt.


Besked fra: Tor4Every1
Posteringsdato: 22.Jul.2024 kl. 12:02
Hej Alle,

Jeg har med hjælp fra maxzpad fundet løsningen.  
Da "Break on All Errors" blev aktiveret kunne jeg se at problemet lå i en ActivateSheets.Paste  
Efter lidt test frem og tilbage. kom resultat til at være at tilføje koden 

Windows("filnavn.xlsm").Activate   før ActivateSheets.Paste


        Case "H"
            ActiveSheet.DrawingObjects("Billede 3599").Copy
            Windows("HAMMER NV.xls").Activate
            ActiveSheet.Paste
            GoSub Flyt_tegning

Tak for hjælpen alle sammen 


Besked fra: maxzpad
Posteringsdato: 22.Jul.2024 kl. 12:39
Super at du fandt frem til problemet og fik det løst Smile

Husk at sætte Error Trapping tilbage til "Break on Unhandled Errors".


Besked fra: Tor4Every1
Posteringsdato: 23.Jul.2024 kl. 13:22
Hej Alle,

Jeg troede igår jeg havde lavet fejlen ved hjælp med at sætte koden ind Windows("filnavn.xlsm").Activate   før ActivateSheets.Paste

Dette hjælper dog ikke idag, får koden en gang i mellem at Activesheet.paste fejler. når den er debugget, kan jeg stadig trykke F8 og så sætter den glædeligt filen ind i og køre videre


Besked fra: maxzpad
Posteringsdato: 23.Jul.2024 kl. 14:13
Hej igen
Ikke for at underkende nogen eller noget, men det lader til, at koden ikke er specielt "kyndigt" skrevet.
Jeg prøver lige at kigge koden igennem (har ikke kigget i filen tidligere) og giver et bud på forbedring Smile


Besked fra: maxzpad
Posteringsdato: 23.Jul.2024 kl. 14:14
Nå ... æv ... dit link er udløbet


Besked fra: Tor4Every1
Posteringsdato: 23.Jul.2024 kl. 14:15
nyt link 
https://we.tl/t-ZtNvO6LOAZ" rel="nofollow - https://we.tl/t-ZtNvO6LOAZ


Besked fra: Tor4Every1
Posteringsdato: 23.Jul.2024 kl. 14:16
Det kunne være super jeg har sendt et nyt link . :) 


Besked fra: maxzpad
Posteringsdato: 23.Jul.2024 kl. 15:15
Jeg har følgende forslag til ændringer:

1) Alle linjer med 'Windows("HAMMER NV.xls").Activate' kan fjernes eller kommenteres væk med en apostrof. Årsag: Koden gør ikke andet end at aktivere et vindue, som allerede er aktivt.

2) Alle linjer med 'excelsheet.Range("A1").Paste' bør fjernes eller kommenteres væk. "excelsheet" genkendes ikke som en variabel, og den er ikke hverken dimensioneret eller sat nogen steder i nogen kodemoduler. Anvend i stedet "ActiveSheet.Paste"

3) Jeg fik - til at starte med - en fejl på kodelinjen med "Selection.Left = 300", fordi "Left" ikke blev genkendt som en kommando eller funktion. Med baggrund i tidligere tilsvarende oplevelse gjorde jeg følgende:

   - Menupunkt Tools | References ...
   - Fjern afkrydsning af "OLE Automation"
   - OK og gem filen
   - Menupunkt Tools | References ...
   - Sæt afkrydsning af "OLE Automation" igen
   - OK og gem filen

Dette fjernede denne specifikke fejl hos mig.


Besked fra: Tor4Every1
Posteringsdato: 23.Jul.2024 kl. 15:24
Hej Dette er prøvet nu, for stadig fejl i Activesheet.paste 

https://we.tl/t-Ad06YlUk4U " rel="nofollow - https://we.tl/t-Ad06YlUk4U  ; (opdateret)


Besked fra: maxzpad
Posteringsdato: 23.Jul.2024 kl. 15:33
Jeg ved ikke, om det gør en forskel, men jeg har gemt filen i .xlsm-format.
Er der en særlig grund til, at I beholder filen i .xls-format, hvis I alle kører Excel-versioner, der understøtter de nyere formater?

Derudover har jeg fjernet den digitale signering af VBA-projektet, fordi Excel blokerede helt for makroerne med den begrundelse, at den digitale signatur (CodeSigning.aarsleff.com) er ugyldig.

Jeg får ikke selv Paste-fejlene, når jeg kører koden.
Kan du fortælle mig hvilken kodelinje, der trigger den senest oplevede fejl?
Dvs. ved hvilken "Case [bogstav]" sker det?


Besked fra: maxzpad
Posteringsdato: 23.Jul.2024 kl. 15:35
Dit opdaterede link melder: 

Yikes, that page can't be found



Besked fra: Tor4Every1
Posteringsdato: 23.Jul.2024 kl. 15:47
HEj Max 

Det gør den allerede ved Case "NX" og alle de andre.  Hvis jeg trykker F8 en gang og så play, så gør den samme ved de fremtidige 
https://we.tl/t-0FEYHjkzrP" rel="nofollow - https://we.tl/t-0FEYHjkzrP


Besked fra: maxzpad
Posteringsdato: 23.Jul.2024 kl. 16:06
Er det stadig Paste-funktionen, der skaber fejlen (hvis du sætter Error Trapping til, så den stopper ved fejlen)?


Besked fra: Tor4Every1
Posteringsdato: 24.Jul.2024 kl. 07:37
Ja den laver stadig den samme fejl, ligegyldigt hvilken af dem der er på, nogen gange kopier den 2 billeder ind. og stopper ved det 3. og andre gange ingen billeder ind. 




Besked fra: maxzpad
Posteringsdato: 24.Jul.2024 kl. 10:45
Jeg er måske - måske ikke - på sporet af noget.

DrawingObjects er åbenbart et gammelt/ældre objekt i VBA.

Prøv at udskifte (alle steder) fx:

     ActiveSheet.DrawingObjects("Billede 3603").Copy

udskiftes med

     ActiveSheet.Shapes("Billede 3603").Copy

Det er lidt et long-shot, for når jeg kører makroen igen og igen, så oplever jeg også, at der sporadisk opstår run-time-fejl (og nogle gange kører den bare igennem). Det opstår både i forbindelse med .Paste og .Copy, og ved debugging kører den bare videre uden fejl, når man trykker F8 eller F5, så det er virkelig meget mystisk.


Besked fra: Tor4Every1
Posteringsdato: 24.Jul.2024 kl. 11:17
Jeg har nu udskiftet den alle steder, og får stadig fejlen ved .paste
Er der en nyere objekt for paste ? 
Det er samme problem her, jeg kan kun få det til at virke meget sporadisk 




Besked fra: Tor4Every1
Posteringsdato: 24.Jul.2024 kl. 12:38
Jeg har prøvet at lave det på en ny måde.  

Så jeg 

Sub KopierBillede3625()
    Dim ws As Worksheet
    Dim pic As Shape
    
    ' Sæt navnet på arket og billedet her
    Set ws = ThisWorkbook.Sheets("Bukkeliste")
    Set pic = ws.Shapes("Billede 3625")
    
    ' Kopier billedet
    pic.Copy
End Sub

Sub IndsætBillede3625()
    
Set wsDest = ThisWorkbook.Sheets("Bukkeliste")
    wsDest.Activate
    wsDest.Paste
End Sub

Og så derefter skriver i min første 
        Case "N"
            'ActiveSheet.Shapes("Billede 3594").Copy
            'ActiveSheet.Paste
            Call KopierBillede3594
            Call IndsætBillede3594
            GoSub Flyt_tegning
    
            ActiveSheet.Range("L16").Offset(l * 4 + sider * 56, 0) = "a= " & a
            ActiveSheet.Range("L17").Offset(l * 4 + sider * 56, 0) = "b= " & b


Virker heller ikke, Paste fejlen fejler igen


Besked fra: Tor4Every1
Posteringsdato: 24.Jul.2024 kl. 12:51
Hej Max, 

Jeg tror jeg fandt løsning / problemet . 
Sub KopierBillede3625()
    Dim ws As Worksheet
    Dim pic As Shape
    
    ' Sæt navnet på arket og billedet her
    Set ws = ThisWorkbook.Sheets("Bukkeliste")
    Set pic = ws.Shapes("Billede 3625")
    
    ' Kopier billedet
    pic.Copy
End Sub

Sub IndsætBillede3625()
 Dim wsDest As Worksheet
   
Set wsDest = ThisWorkbook.Sheets("Bukkeliste")
    wsDest.Activate
Application.Wait Now + TimeValue("00:00:01")
    wsDest.Paste
End Sub

Jeg satte en timervalue på inden paste.  da den ikke kunne nå at kopiere og indsætte så hurtigt, har prøvet det 56 gange og det virker :) nu skal det bare testet  på kollegaers computer også 


Besked fra: maxzpad
Posteringsdato: 24.Jul.2024 kl. 13:49
Jeg var faktisk også selv ude i spekulationer om, hvorvidt det kunne være en løsning (indsætte en pause), netop fordi fejlen opstod så sporadisk. Jeg havde i første omgang forsøgt mig med DoEvents efter Copy og Paste, men det gav ikke noget.
Men super fedt hvis Application.Wait er løsningen. Såre simpelt men svært at gennemskue ved debugging.


Besked fra: Tor4Every1
Posteringsdato: 24.Jul.2024 kl. 13:53
Ja det har også taget sin tid at finde fejlen, men er testet på 6 forskellige computere hvor det ikke virkede og der virker det igen.  

Så tænker fejlen er fixet. 

Men stadig igen tak for hjælpen. 
Havde ikke kommet i mål uden dig 



Print side | Luk vindue