Avatar billede Klaus W Guru
26. september 2022 - 13:29 Der er 16 kommentarer og
1 løsning

VBA koden der er gået iudu

Hej, jeg har denne kode jeg normalt bruger til at printe forskellige faneblade med. Den er af en eller anden grund gået i udu.
Kort beskrivelse.
I fanebaldet Stamdate kolonne B3 og ned efter sætter jeg X efter hvilke Fanebalde jeg veil have udskrevet. Navnet står i kolonne A3 og ned efter.
Antallet af sider står i hvertenkelt Faneblade G1.
Nogle der kan hjælpe.
Klaus W

Sub Rektangelafrundedehjørner4_Klik()


Dim intRaekke As Integer
Dim SidsteSide As Integer
Dim SiderUdskrevet As Integer

SiderUdskrevet = 0

On Error GoTo fejl:

If Worksheets.Count < 2 Then
MsgBox "Der er ingen sider at udskrive?"
End If

    For intRaekke = 2 To Worksheets.Count
 
            If Cells(intRaekke, 2).Value = "x" Or _
                Cells(intRaekke, 2).Value = "X" Then
       
        SidsteSide = Sheets(intRaekke).Range("G1")
   
            Sheets(intRaekke).PrintOut From:=1, To:=SidsteSide
            SiderUdskrevet = SiderUdskrevet + 1
         
            End If
    Next
 
If SiderUdskrevet = 0 Then
MsgBox "Ingen sider valgt til udskrift."
End If
 
fejl:

    If Err.Number = 1004 Then
        MsgBox "Du skal indtaste et tal på Fane" & intRaekke & " celle G1"
  End If
   
End Sub
Avatar billede claes57 Ekspert
26. september 2022 - 15:17 #1
hvad sker der? prøv evt at lave en msgbox undervejs i forløbet med position inkl en msgbox som første linje i kaldet så du ved, at rutinen er kaldt.
Avatar billede Klaus W Guru
26. september 2022 - 15:26 #2
Hej Claes hvor skal jeg sætte den ind siger du ?
Avatar billede Klaus W Guru
26. september 2022 - 15:29 #3
Der kommer denne fejl meddelse op
"Du skal indtaste et tal på Fane3 Celle G1"
Der er tastet i den celle på de forskellige ark. Det kommer fra en fomel.
KW
Avatar billede kim1a Ekspert
26. september 2022 - 17:35 #4
Det ligner noget jeg har hjulpet med, kombineret med en fejlsøgning jeg ikke lige genkender.

Kan det træffe at G1 ikke er et heltal? Altså at din formel skaber et kommatal?
Husk på at fane x ikke nødvendigvis i Excel vba verdenen er den rækkefølge dine faner står i. Har du været inde og se hvad fane3 er i vba editoren?
Avatar billede Klaus W Guru
26. september 2022 - 17:55 #5
Hej kim1a det kunne meget vel være kikke på det. Og tak
Avatar billede store-morten Ekspert
26. september 2022 - 19:30 #6
Prøv denne test:
Sub Rektangelafrundedehjørner4_Klik()


Dim intRaekke As Integer
Dim SidsteSide As Integer
Dim SiderUdskrevet As Integer

SiderUdskrevet = 0

On Error GoTo fejl:

If Worksheets.Count < 2 Then
MsgBox "Der er ingen sider at udskrive?"
End If

    For intRaekke = 2 To Worksheets.Count

            If Cells(intRaekke, 2).Value = "x" Or _
                Cells(intRaekke, 2).Value = "X" Then
     
        SidsteSide = Sheets(intRaekke).Range("G1")
       
                If Not (IsNumeric(SidsteSide)) Or SidsteSide = 0 Then
                MsgBox Worksheets(intRaekke).Name & " Celle G1 Er ikke et tal eller > 0?"
                Exit Sub
                End If

 
            Sheets(intRaekke).PrintOut From:=1, To:=SidsteSide
            SiderUdskrevet = SiderUdskrevet + 1
       
            End If
    Next

If SiderUdskrevet = 0 Then
MsgBox "Ingen sider valgt til udskrift."
End If

fejl:

    If Err.Number = 1004 Then
        MsgBox "Du skal indtaste et tal på Fane" & intRaekke & " celle G1"
  End If
 
End Sub
Avatar billede Klaus W Guru
26. september 2022 - 23:06 #7
#4Hej kim1a
Jeg tror ikke G1 er et heltal, Excel skriver at tallet skal være mellem 1 og 2147483647 så det kunne meget godt være. Jeg har prøvet at formater cellen g1 i de forskellige Fanebalde men lige meget hjælper det.
Avatar billede Klaus W Guru
26. september 2022 - 23:15 #8
#6Hej store-morten
Jeg for følgende melding.
Stamdata Celle G1 Er ikke et tal eller > 0?
Og den køre når jeg sætter et tal i.
Avatar billede Klaus W Guru
26. september 2022 - 23:16 #9
Godaften begge 2, kunne mit problem ligge i at cellen G1 er formatert forkert?
Avatar billede Klaus W Guru
26. september 2022 - 23:48 #10
D'herre jeg tror jeg har fundet problemet, når jeg sætter X i kolonne B i Stamdata, starter jeg i B3 og ned efter da navnet på fanebladet står fra A3 og nedefter der skal udskrives. 
Men sætter jeg kryds i B3 sker der intet, sætter jeg det i B4 for jeg meddelsen Stamdata Celle G1 Er ikke et tal eller > 0?.  Så hvordan ændre jeg hvor Excel skal staret med at tælle Fanebladene fra?
Det første Faneblads navn der skal printes stå i B3. Og det er faneblad nr. 2 fra Stamdata mod højre.

KW
Avatar billede kim1a Ekspert
27. september 2022 - 07:48 #11
Formattering hjælper ikke. Hvis din formel f.eks. får tallet til at være 2,1 så vil Excel ikke forstå det som Integer (heltal mellem 1 og 2xxx du selv skriver). Du kunne evt. rette din formel til at runde ned/op til heltal hvis det viser sig at være udfordringen.

I koden:
If Cells(intRaekke, 2).Value = "x" Or _ (og mere)
Tager den netop i kolonne B (2 tallet) intRaekke starter ved 2 og går en række ned hvor gang - det vil sige den kigger i B2 først, så B3 og efterfølgende B4 etc.

Jeg nævnte før at du nemt kan ændre på rækkefølgen på dine faner, selvom de ikke ændrer nummer i Excel vba terminilogi. Altså.
Ark1, Ark2, Ark3 når Excel åbner op hedder Sheet1, Sheet2, Sheet3. Hvis du flytter Ark3 før Ark2 vil sheet3 stadig være 3, selvom det nu står 2 i rækkefølgen.

Måske det var bedre at henvise til arknavnet? Således at der i A2-Ax står arknavnet og den så bruger dette? Men lad os først løse udfordringen med heltallet så kan vi kigge på det andet.

Har du mulighed for at uploade arket (evt. med data fjernet) så vi kan se om det er udfordringen?
Avatar billede Klaus W Guru
27. september 2022 - 08:00 #12
Godmorgen kim1a
Hermed linket.

OPS der er rigtig mange VBA koder der ikke bruges mere, skal lige have ryddet op i dem.
KW
https://1drv.ms/x/s!AmLaaGiC5LdoidAFig6uzgAJG2TeXQ?e=0rBXMG
Avatar billede store-morten Ekspert
27. september 2022 - 18:03 #13
Jeg har lige skimmet arket igennem.

1. Det første ark der skal printes er 5 ikke 4
2. Du kan trække Bur nr. ned på arket Stamdata så det passer til koden, eller
3. Du kan til passe koden uden at ændre layout i arkene.
Avatar billede kim1a Ekspert
27. september 2022 - 19:15 #14
Udfordringen var netop det med navngivningen af arkene.
Dit ark navngivet 1 står på plads 5, og er sat i række 3 på stamdata.

Jeg har rettet så den printer korrekt, men husk at du får udfordringer ved at sætte flere ark ind. Du kan gøre det mere robust ved at referere til arknavnet fremfor at bruge rækkenr som oversæt for arknummer.

Anyway her er den rettede makro (bemærk jeg rettede +2 flere steder, og "For intRaekke = 3"

Sub Rektangelafrundedehjørner4_Klik()
Dim intRaekke As Integer
Dim SidsteSide As Integer
Dim SiderUdskrevet As Integer

SiderUdskrevet = 0

On Error GoTo fejl:

If Worksheets.Count < 1 Then
MsgBox "Der er ingen sider at udskrive?"
End If

    For intRaekke = 3 To Worksheets.Count

            If Cells(intRaekke, 2).Value = "x" Or _
                Cells(intRaekke, 2).Value = "X" Then
   
        SidsteSide = Sheets(intRaekke + 2).Range("G1")
     
                If Not (IsNumeric(SidsteSide)) Or SidsteSide = 0 Then
                MsgBox Worksheets(intRaekke + 2).Name & " Celle G1 Er ikke et tal eller > 0?"
                Exit Sub
                End If

            Sheets(intRaekke + 2).PrintOut From:=1, To:=SidsteSide
            SiderUdskrevet = SiderUdskrevet + 1
     
            End If
    Next

If SiderUdskrevet = 0 Then
MsgBox "Ingen sider valgt til udskrift."
End If

fejl:

    If Err.Number = 1004 Then
        MsgBox "Du skal indtaste et tal på Fane" & intRaekke & " celle G1"
  End If
End Sub
Avatar billede store-morten Ekspert
27. september 2022 - 19:41 #15
Du får også min tilpasning:
Sub Rektangelafrundedehjørner4_Klik()
Dim intRaekke As Integer
Dim SidsteSide As Integer
Dim SiderUdskrevet As Integer

SiderUdskrevet = 0

On Error GoTo fejl:

If Worksheets.Count < 1 Then
MsgBox "Der er ingen sider at udskrive?"
End If

    For intRaekke = 5 To Worksheets.Count '<--Rettet til 5. Print første
           
            'Tilføjet - 2 for at læse X fra række 3 i Stamdata
            If Cells(intRaekke - 2, 2).Value = "x" Or _
                Cells(intRaekke - 2, 2).Value = "X" Then
   
        SidsteSide = Sheets(intRaekke).Range("G1")
     
                If Not (IsNumeric(SidsteSide)) Or SidsteSide = 0 Then
                MsgBox Worksheets(intRaekke).Name & " Celle G1 Er ikke et tal eller > 0?"
                Exit Sub
                End If

            Sheets(intRaekke).PrintOut From:=1, To:=SidsteSide
            SiderUdskrevet = SiderUdskrevet + 1
     
            End If
    Next

If SiderUdskrevet = 0 Then
MsgBox "Ingen sider valgt til udskrift."
End If
Avatar billede Klaus W Guru
27. september 2022 - 19:50 #16
1000 tak for hjælpen til jer begge, og de gode forklaringer, det giver mig et bedre indsigt i VBA.
Forsat god aften
Klaus W
Avatar billede Klaus W Guru
27. september 2022 - 19:50 #17
PS begge løsninger fungere til UG+
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