pefra Postad 28 januari, 2020 Share Postad 28 januari, 2020 Jag har en knapp till nedanstående makro som gör vad den skall. MEN Nu vill jag flytta den knappen till en annan flik som heter sammanställning men ändå få makrot att köra på EURO1. Vad behöver ändras ?. ' EURO1 Makro ' ' Range("AH23").Select Selection.Copy Range("W42").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("W2:Y41").Select Selection.ClearContents Range("AE40:AH40").Select Selection.Copy Range("AE37:AH37").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub Länk till kommentar Dela på andra webbplatser More sharing options...
Ove Söderlund Postad 28 januari, 2020 Share Postad 28 januari, 2020 Släng in koden i en modul och koppla sedan den till en knapp i det önskade bladet; Sub EURO1() Dim wsEURO1 As Worksheet Set wsEURO1 = Worksheets("EURO1") With wsEURO1 .Range("AH23").Copy .Range("W42").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False .Range("W2:Y41").ClearContents .Range("AE40:AH40").Copy .Range("AE37:AH37").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End With Range("A1").Select End Sub Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 28 januari, 2020 Trådskapare Share Postad 28 januari, 2020 Nedanstående kod körs i fliken sammanställning, medan resten körs i fliken Euro1.Range("W2:Y41").ClearContents Går det att fixa till i koden eller måste jag flytta om i arbetsboken ? Länk till kommentar Dela på andra webbplatser More sharing options...
Ove Söderlund Postad 28 januari, 2020 Share Postad 28 januari, 2020 Då bör det se ut så här i koden; Sub EURO1() Dim wsEURO1 As Worksheet, wsSammanSt As Worksheet Set wsEURO1 = Worksheets("EURO1") Set wsSammanSt = Worksheets("Sammanställning") With wsEURO1 .Range("W42").Value = .Range("AH23").Value .Range("AE37:AH37").Value = .Range("AE40:AH40").Value End With wsSammanSt.Range("W2:Y41").ClearContents Range("A1").Select End Sub Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 28 januari, 2020 Trådskapare Share Postad 28 januari, 2020 Har lagt in koden i en modul och kopplat den till knappen, men får Körfel nr. ´9´.: Indexet är utanför intervall. på alla koderna. har provat med alla. Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 28 januari, 2020 Trådskapare Share Postad 28 januari, 2020 Nu efter en del sökande har jag fått till det som det ska. Tack. Ove S och MH för all hjälp, utan er hade jag inte fixat detta. /pefra Länk till kommentar Dela på andra webbplatser More sharing options...
Monshi Postad 28 januari, 2020 Share Postad 28 januari, 2020 Sista ord i denna tråd: Bort med alla Select och Activate Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 28 januari, 2020 Trådskapare Share Postad 28 januari, 2020 Monshi, ja ovanstående som du hänvisar till är över min kunskap i vba-kodning. Men om du vill skriva en enkel, smidig, säker och snabb kod, så tar jag tacksamt emot en sådan utan activate och Select, om det kan bli enklare. Här nedan är koden som används nu som du i så fall kan skriva om i fall du har lust. /pefra Sub EURO1() Worksheets("EURO1").Range("W42").Value = Worksheets("EURO1").Range("AH23").Value Worksheets("EURO1").Range("AE37:AH37").Value = Worksheets("EURO1").Range("AE40:AH40").Value Worksheets("INMATNING ALLA").Select Worksheets("INMATNING ALLA ").Range("A1").Select Worksheets("INMATNING ALLA ").Range("W2:Y41").ClearContents End Sub Länk till kommentar Dela på andra webbplatser More sharing options...
Solution Monshi Postad 28 januari, 2020 Solution Share Postad 28 januari, 2020 (redigerade) Ett enkel exempel då av koden ovan. Sub EURO1() With Worksheets("EURO1") .Range("W42").Value = .Range("AH23").Value .Range("AE37:AH37").Value = .Range("AE40:AH40").Value End With Worksheets("INMATNING ALLA ").Range("W2:Y41").ClearContents End Sub With - ger att alla funktioner som inleds med . utgår från objektet i With. I detta fall arbetsbladet. Om du ska arbeta på ett bladet behöver du inte aktivera eller välja det, bara att arbeta med referensen. Används Activate och Select enbart om du vill visa ett slutresultat, navigera till något, i slutet av koden. Redigerad 29 januari, 2020 av Monshi Buggfix av koden Länk till kommentar Dela på andra webbplatser More sharing options...
Monshi Postad 28 januari, 2020 Share Postad 28 januari, 2020 Och ja vi dra det ett steg till, säkra mot klåfingriga användare, byt ut Worksheets("EURO1") med det VBA-namn som finns, då bara att skriva exempelvis Blad1.Range("A1:A100") = "My macro f___ed up everything!" Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 29 januari, 2020 Trådskapare Share Postad 29 januari, 2020 Tack Monshi. Länk till kommentar Dela på andra webbplatser More sharing options...
Mikael63 Postad 29 januari, 2020 Share Postad 29 januari, 2020 2 timmar sedan, skrev pefra: Tack Monshi. Bra att tråden är markerad som löst men det vore väl bättre om den gröna bocken (Markera som bästa lösning) hamnade på ett annat inlägg än ditt eget? Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 29 januari, 2020 Trådskapare Share Postad 29 januari, 2020 2 timmar sedan, skrev Mikael63: Bra att tråden är markerad som löst men det vore väl bättre om den gröna bocken (Markera som bästa lösning) hamnade på ett annat inlägg än ditt eget? Hej. Är ny här och kanske missat eller missförstått något. 1. Är det inte jag som vet om det är bästa lösningen och att frågan är löst ?. 2. Var eller vem skall i så fall använda sig av den gröna bocken ?. 3. Hur är den tänkt att den skall användas ?. Länk till kommentar Dela på andra webbplatser More sharing options...
Mikael63 Postad 29 januari, 2020 Share Postad 29 januari, 2020 1. Jo 2. Du eller moderator 3. Man sätter bocken vid det inlägg som besvarade frågan. Som den NU är vid Monshis inlägg med texten "Ett enkel exempel då av koden ovan." Tidigare var bocken vid ditt eget inlägg med texten "Tack Monshi." 8 minuter sedan, skrev pefra: Hej. Är ny här och kanske missat eller missförstått något. Ingen fara! Cecilia reagerade på detta 1 Länk till kommentar Dela på andra webbplatser More sharing options...
Cecilia Postad 29 januari, 2020 Share Postad 29 januari, 2020 Som tillägg och förtydligande till Mikael63s svar: 3. Bocken är till för dem som i framtiden har samma eller likartat problem så att de snabbare kan hitta den lösning som hjälpte dig och förhoppningsvis då något som även löser deras problem. Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 29 januari, 2020 Trådskapare Share Postad 29 januari, 2020 48 minuter sedan, skrev Cecilia: Som tillägg och förtydligande till Mikael63s svar: 3. Bocken är till för dem som i framtiden har samma eller likartat problem så att de snabbare kan hitta den lösning som hjälpte dig och förhoppningsvis då något som även löser deras problem. Tack. Då tänkte jag rätt, fast bocken blev på fel ställe. Mikael63 och Cecilia reagerade på detta 2 Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 29 januari, 2020 Trådskapare Share Postad 29 januari, 2020 15 timmar sedan, skrev Monshi: Ett enkel exempel då av koden ovan. Sub EURO1() With Worksheets("EURO1") .Range("W42").Value = .Range("AH23").Value .Range("AE37:AH37").Value = .Range("AE40:AH40").Value Wend Worksheets("INMATNING ALLA ").Range("W2:Y41").ClearContents End Sub With - ger att alla funktioner som inleds med . utgår från objektet i With. I detta fall arbetsbladet. Om du ska arbeta på ett bladet behöver du inte aktivera eller välja det, bara att arbeta med referensen. Används Activate och Select enbart om du vill visa ett slutresultat, navigera till något, i slutet av koden. Får Kompileringsfel : "Wend utan While" Länk till kommentar Dela på andra webbplatser More sharing options...
pefra Postad 29 januari, 2020 Trådskapare Share Postad 29 januari, 2020 Får Kompileringsfel : "Wend utan While" Länk till kommentar Dela på andra webbplatser More sharing options...
Monshi Postad 29 januari, 2020 Share Postad 29 januari, 2020 Oh, my bad. End With ska det stå, inget annat. Fixar det i inlägget ovan. While - Wend With - End With Länk till kommentar Dela på andra webbplatser More sharing options...
mbgtmari Postad 30 januari, 2020 Share Postad 30 januari, 2020 https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/whilewend-statement eller hur, Monshi? Länk till kommentar Dela på andra webbplatser More sharing options...
Monshi Postad 30 januari, 2020 Share Postad 30 januari, 2020 Japp, ibland blir det fel helt enkelt. With - End With, While - Wend Det är ett mycket simpelt språk VBA. Borde egentligen räcka med ett End på vad för olika startvärden som helst, While, With, For, If... Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster