Avatar billede Hmmm…. Mester
13. april 2023 - 15:20 Der er 18 kommentarer og
1 løsning

VBA

Hej
Jeg er klart ikke nogen ørn til VBA men forsøgte alligevel med hjælp fra AI at få lavet en kode der skulle gøre dette:
Slette første række i faneblad Page001 kolonde A der indeholder "Serial number" og hvor cellen i kolonde C ikke er tom. Derefter gå til faneblad "Verificering" celle A1.
Desværre kommer der en boks op når jeg forsøger at køre koden.
Boksen hedder Gå til: Page001 og spørger efter en reference???
Der er 2 faner: Page001, og Verificering. Hvad har jeg gjort galt?
Koden ser sådan her ud:

Sub SlettFørsteRadOgGåTilA1()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
   
    'Sletter første linje i Page001 som oppfylder kriterierne
    Set ws = ThisWorkbook.Worksheets("Page001")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
   
    For i = 1 To lastRow
        If InStr(ws.Cells(i, "A"), "Serial number") > 0 And Not IsEmpty(ws.Cells(i, "C")) Then
            ws.Rows(i).Delete
            Exit For
        End If
    Next i
   
    'Gå til A1 i Verificering
    ThisWorkbook.Worksheets("Verificering").Activate
    Range("A1").Select
End Sub
Avatar billede ebea Ekspert
13. april 2023 - 16:19 #1
Jeg har prøvet din kode, og får ingen fejl. Har du lagt koden i dit "Page001" Ark?
Avatar billede Hmmm…. Mester
13. april 2023 - 16:23 #2
Hej Ebea.
Nej. Jeg har lavet et modul der ligger i "Verificering" ark.
Prøver lige at lægge det i "Page001" og vender tilbage..
Tak.
Avatar billede Hmmm…. Mester
13. april 2023 - 16:30 #3
Det hjalp desværre ikke.
Øv
Avatar billede store-morten Ekspert
13. april 2023 - 16:35 #4
Prøv at rette:
Set ws = ThisWorkbook.

Til at henvise til navnet på regnearket ala:
Set ws = Workbook.("Mappe1").
Avatar billede ebea Ekspert
13. april 2023 - 16:42 #5
#3 - fjernede du modulet ?
Avatar billede Hmmm…. Mester
13. april 2023 - 18:54 #6
Ja, jeg fjernede modulet og satte koden ind i arket "Page001"
Avatar billede ebea Ekspert
13. april 2023 - 19:03 #7
#6 - Jeg kan kun sige som jeg gjorde i #1. Uden at have set dit Ark, er det svært at sige, hvorfor det ikke virker hos dig.
Avatar billede Hmmm…. Mester
13. april 2023 - 19:04 #8
Hej Store-Morten
Mener du som her:
  Set ws = Workbook.("Verificering.xlsm").Worksheets("Page001")
?
Det vil den ikke accepterer.
Så for jeg en fejl der hedder compile error
Avatar billede ebea Ekspert
13. april 2023 - 19:21 #9
Hvorfor uploader du ikke det du har. Så skal vi ikke skrive uendelige lange “gætterier” her i tråden.
Avatar billede Hmmm…. Mester
13. april 2023 - 19:44 #10
https://www.dropbox.com/s/gvyhcidc0qv4fll/Verificering.xlsm?dl=0
Jeg håber at dette link kan bruges.
-Og tusind tak for at I gider. :-)
Avatar billede store-morten Ekspert
13. april 2023 - 19:47 #11
Prøv denne:
Sub SlettFørsteRadOgGåTilA1()

    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
   
    Set wb = ActiveWorkbook
 
    'Sletter første linje i Page001 som oppfylder kriterierne
    Set ws = wb.Worksheets("Page001")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
 
    For i = 1 To lastRow
        If InStr(ws.Cells(i, "A"), "Serial number") > 0 And Not IsEmpty(ws.Cells(i, "C")) Then
            ws.Rows(i).Delete
            Exit For
        End If
    Next i
 
    'Gå til A1 i Verificering
    wb.Worksheets("Verificering").Activate
    Range("A1").Select
End Sub
Avatar billede ebea Ekspert
13. april 2023 - 22:20 #12
Din fil virker egentlig godt nok, men det der stopper den, er din selection på verificerings arket. Se på den uploadede fil herunder.

https://www.dropbox.com/scl/fi/yzwim56ztg9s8b2o8ur3s/Verificering.xlsm?dl=0&rlkey=8u9r2auprcq8pkds3nna40elh
Avatar billede store-morten Ekspert
13. april 2023 - 22:51 #13
ebea, har fundet og ud kommenteret en fejl ;-)

Denne burde virke både på fane og i et Modul.
Med tilføjelser og rette fejlen nederst.
Sub SlettFørsteRadOgGåTilA1()

    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
 
    Set wb = ActiveWorkbook

    'Sletter første linje i Page001 som oppfylder kriterierne
    Set ws = wb.Worksheets("Page001")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastRow
        If InStr(ws.Cells(i, "A"), "Serial number") > 0 And Not IsEmpty(ws.Cells(i, "C")) Then
            ws.Rows(i).Delete
            Exit For
        End If
    Next i

    'Gå til A1 i Verificering
    wb.Worksheets("Verificering").Activate
    wb.Worksheets("Verificering").Range("A1").Select
End Sub
Avatar billede ebea Ekspert
14. april 2023 - 07:30 #14
I tilføjelse til #12 (og #13) så HVIS du vil have A1 valgt (hele dit flettede område), så erstat de 2 sidste linjer før End Sub i din oprindelige kode,  med denne ene linje (markeret med fed).

  Application.GoTo Sheets("Verificering").Cells(1, 1)

Den fører dig til siden "Verificering", OG markerer området A1 (det flettede område).
Avatar billede Hmmm…. Mester
14. april 2023 - 08:00 #15
Tusind tak begge 2
Det virker fint, og det er super godt for en novice som mig at få en fin forklaring på fejlen.
Mange tak, og god weekend.
Avatar billede ebea Ekspert
14. april 2023 - 08:19 #16
#15 - Du er velkommen ;-)
Avatar billede Hmmm…. Mester
20. april 2023 - 11:42 #17
Øv. Jeg er rigtig ked af at ulejlige jer igen med samme problematik.

Jeg fandt senere ud af at jeg ikke havde formuleret mig præcist nok.
Denne gang forsøger jeg at være helt præcis og klar i spyttet.

Vi modtager flere gange om ugen en pdf fil. den hedder noget forskelligt hver gang.
F.eks. "Madsen & Kastberg 30.03.23 Formula.pdf"
Den indeholde data vi skal have over i en Excel fil kaldet: verificering.xlsm
Jeg har markeret de celler hvori de data fra pdf filen skal ind og skrevet formlerne ind i de celler hvor der er flere muligheder og som afhænger af indholdet i en anden celle.

Det der gik galt første gang, var at de data fra pdf filen hentede jeg ind som første fane i "Verificering.xlsm"
Da mine formler og kæder i næste fane så ledte efter dataerne kunne de ikke finde dem næste gang at jeg hentede dataerne ind fra en ny pdf fil.

En anden fejl var også at meningen med det hele er at for hver Maskin ID skal der laves en ny side i "Verificering.xlsm" så man printer et Verificerings Certifikat ud for hver maskine.
I den aktuelle pdf fil er der 4 stk. maskiner, og det betyder at der skal laves 4 stk. certifikater.

Det kunne jeg ikke finde ud af at få lavet.

Begge filer ligger her: https://www.dropbox.com/sh/28qu8koyozuzo0m/AAD560ICBKGaAgKqlctxqxiFa?dl=0

Jeg håber at I har lyst til at hjælpe mig igen, selv om jeg i første omgang formulerede mig mangelfuldt og ikke præcist nok.

Venlig hilsen Steffen
Avatar billede ebea Ekspert
20. april 2023 - 13:27 #18
#17 - Selv om du skriver, at du vil være helt præcis i forklaringen, er det dog uklart (for mig), hvad du egentlig vil.

Du skal hente data fra forskellige PDF filer, og som skal ind i ny faner, eller?

Jeg kan ikke se på dit uploadede eksempel, nogen info, eller andet.
Hvis det du skal, er få data fra PDf filer over i Excel, skal det så først igennem Word, eller vil du gøre det direkte?
Avatar billede Hmmm…. Mester
20. april 2023 - 22:38 #19
Hej Ebea.
Resultatet efter flet eller hvad man kan kalde det med de 2 filer skal i dette tilfælde give 4 certifikater der kan gemmes som en PDF fil, der skal sendes til kunden.
Der kan sagtens i den næste PDF fil vi modtager være færre eller flere end de 4 der er i denne fil

#1  Daterne i den aktuelle PDF skal kun bruges en enkelt gang, og skal så blive til en enkelt Excel fil, der kan gemmes som en PDF fil vi kan sende til kunden. Kunden  kan så selv kan printe eller gemme den.
Grunden til at det skal være en PDF fil vi sender, er at så kan kunden ikke ændre den uden at det kan spores.

#2  Vi behøver ikke at gøre igennem Word, for min skyld. Vi skal bare gøre det s enkelt som muligt, så vi selv kan lave de næste certifikater selv.

#3  I stedet for Word kan man i Excel vælge: Data - Hent data - fra fil - Fra Tekst/CSV og gemme den som en ny Ecxel fil. (hvis det er nemmere)

#4  Hver Maskin ID i PDFén repræsenterer en enkelt maskine.

#5  Jeg har nu kommenteret hver celle hvor dataerne skal ind og håber så at min forklaring bedre kan forstås. jeg har også skrevet kommentarer i PDF filen.

PFT Steffen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester