Avatar billede Klaus W Ekspert
28. september 2021 - 16:22 Der er 19 kommentarer og
1 løsning

VBA fungere ikke

Hej allesammen
Jeg bruger denne VBA-kode til at printe forskellige ark, og efter hvilket tal der står i G1 på de forskellige ark kommer det antal sider ud. Jeg sætter kryds ud for navnene på de ark der skal printes.
Men nu duer den ikke mere. Nogle der kan hjælpe.
Hilsen Klaus
Jeg for en fejl i denne linje
Sheets(intRaekke).PrintOut From:=1, To:=SidsteSide

Sub Rektangelafrundedehjørner4_Klik()


Dim intRaekke As Integer
Dim SidsteSide As Integer

    For intRaekke = 3 To Worksheets.Count
            If Cells(intRaekke, 2).Value = "x" Then
           
        SidsteSide = Sheets(intRaekke).Range("g1")
       
            Sheets(intRaekke).PrintOut From:=1, To:=SidsteSide
            End If
    Next
   
End Sub
Avatar billede kim1a Ekspert
29. september 2021 - 07:26 #1
Er det fra start den fejler? Altså printer den noget, men går i stå, eller printer den slet ikke?
Har du kontrolleret at G1 altid er et tal - måske prøv

SidsteSide = sheets(intRaekke).range("G1").value
Avatar billede Klaus W Ekspert
29. september 2021 - 08:44 #2
Hej Kim 1a
Det er lige som om jeg ikke kan køre koden, der er en anden kode til at oprette ark i samme ark, den køre.
Fatter det ikke

KW
Avatar billede kim1a Ekspert
29. september 2021 - 11:07 #3
Det er svært at fejlsøge for dig når du ikke kan fortælle hvad den skriver eller ikke skriver :-)

Prøv i dit immidiate vindue at skrive:
?sheets(3).range("G1")
vs
?sheets(3).range("G1").value

hvis de to spørgsmål skriver det samme, så er det i hvert fald ikke den.

En fejlsøgning kan også være at "steppe" ind i koden ved at eksekvere hver linje en ad gangen - man bruger F8 inde i VBA editoren til det.
Avatar billede Klaus W Ekspert
29. september 2021 - 14:42 #4
Hej Kim1a

Jeg har prøvet at køre med F8 som du skrev og den springer simpelthen de 2 linjer over.
sheets(3).range("G1")
Og
sheets(3).range("G1").value
Hvis jeg skriver dem i immidiate vindue
?sheets(3).range("G1")
vs
?sheets(3).range("G1").value
Og taster Enter sker der intet.  Så det virker som om den ikke køre de 2 linjer.
KW
Avatar billede kim1a Ekspert
29. september 2021 - 18:14 #5
Altså du skriver dem i immidiate vinduet en af gangen? Springer cursor et par linjer ned?
Har du checket at der står tal i G1 i de faner du ønsker at printe?
Avatar billede Klaus W Ekspert
29. september 2021 - 21:52 #6
Ja det gør jeg, de springer begge 2 linjer ned. Der er tal i alle G1
Avatar billede Jan K Ekspert
29. september 2021 - 22:56 #7
Hvad sker der, hvis du tilføjer

Debug.Print Sidsteside efter linjen, hvor du tildeler værdien ?

Er dit 'x' indtastet med småt?
Avatar billede store-morten Ekspert
30. september 2021 - 08:23 #8
Prøv:
Sub Rektangelafrundedehjørner4_Klik()


Dim intRaekke As Integer
Dim SidsteSide As Integer

On Error GoTo fejl:

If Worksheets.Count < 3 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).Range("G1")
     
            Sheets(intRaekke).PrintOut From:=1, To:=SidsteSide
            End If
    Next
   
fejl:

    If Err.Number = 13 Then
        MsgBox "Du skal indtaste et tal på Fane" & intRaekke & " celle G1"
  End If
 
End Sub
Avatar billede store-morten Ekspert
30. september 2021 - 09:07 #9
Fik et andet fejl nummer, så prøv denne:
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 < 3 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).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 Klaus W Ekspert
30. september 2021 - 12:49 #10
Hej Alle hjælpere, tak for jeres svar og spørgsmål, som jeg har lært af. Jeg må sige at Store-Mortens løsning var bare alletiders.

Hilsen og tak Klaus W

@Store-Morten hvis jeg gerne vil have at jeg sætter kryds i celle B3 for at få printet det første ark. Hvad skal jeg så ændre? Som det er nu skal jeg sætte kryds i celle B7 for at få printet første ark.
Avatar billede store-morten Ekspert
30. september 2021 - 16:23 #11
Ark1 og Ark2 udskrives ikke.
Hvis der er x i B3 udskrives Ark3 som det første.
Hvis der er x i B4 udskrives  Ark4 som det andet... osv.
Avatar billede Klaus W Ekspert
30. september 2021 - 18:10 #12
Det giver god mening, men sætter jeg et x i B3 for jeg denne fejl "Du skal indtaste et tal på Fane3 celle G1" Hvilket jeg ikke forstår da der er et tal i alle de faner der skal kunne udskrives i celle G1.
Sætter jeg x i B5 udskrives Ark3 og gør jeg det samme i B6 udskrives Ark4 osv
Avatar billede store-morten Ekspert
30. september 2021 - 19:46 #13
Måske det er forkert fejl nr.

Kan du evt. sende arket til mig?
Avatar billede store-morten Ekspert
30. september 2021 - 19:56 #14
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 < 3 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).Range("G1")
           
            MsgBox "Nu udskrives fanen: " & Worksheets(intRaekke).Name _
            & " med " & SidsteSide & " Sider i alt."
           
            '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 Ekspert
30. september 2021 - 19:57 #15
Avatar billede store-morten Ekspert
30. september 2021 - 20:09 #16
Har lige testet,
og hvis G1 ikke indeholder et tal fejler den. (fejl nr. 13)
og hvis G1 er tom eller 0 fejler den. (fejl nr. 1004)
Avatar billede store-morten Ekspert
30. september 2021 - 20:20 #17
Du vil udskrive fra: Stamdata
Og udskrive fane: 1 til 7
Avatar billede store-morten Ekspert
30. september 2021 - 20:47 #18
Så går det jo galt ;-)

Stamdata er Ark nummer 3
1 er Ark nummer 7
2 er Ark nummer 8..... osv.
Avatar billede store-morten Ekspert
30. september 2021 - 20:51 #19
Prøv denne, hvor du kan sætte X hvor du ønsker B3 og ned:
Sub Rektangelafrundedehjørner4_Klik()


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

SiderUdskrevet = 0

On Error GoTo fejl:

If Worksheets.Count < 3 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 + 4).Range("G1")
           
MsgBox "Nu udskrives fanen: " & Worksheets(intRaekke + 4).Name & " med " & SidsteSide & " Sider." '<-- Kan evt. slettes
           
            Sheets(intRaekke + 4).PrintOut From:=1, To:=SidsteSide
            SiderUdskrevet = SiderUdskrevet + SidsteSide
            FanerUdskrevet = FanerUdskrevet + 1
         
            End If
    Next
 
If SiderUdskrevet = 0 Then
MsgBox "Ingen sider valgt til udskrift."
End If
 
fejl:

    If Err.Number = 13 Then
        MsgBox "Du skal bruge et tal på Fanen: " & Worksheets(intRaekke + 4).Name & " i celle G1"
    End If
   
        If Err.Number = 1004 Then
        MsgBox "Du skal bruge et tal >0 på Fanen: " & Worksheets(intRaekke + 4).Name & " i celle G1"
    End If

        MsgBox "Udskrevet " & FanerUdskrevet & " faner og " & SiderUdskrevet & " sider i alt." '<-- Kan evt. slettes
End Sub
Avatar billede Klaus W Ekspert
30. september 2021 - 21:08 #20
Godaften Store-Morten

1000 tak den er lige i skabet.
Har testet og det ser rigtig godt ud.

KW
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
Kategori
Excel-kurser for alle niveauer og behov – find det kursus, der passer til dig

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