26. september 2022 - 13:29Der 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
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
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?
#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.
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.
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?
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.
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
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.