Just nu i M3-nätverket
Gå till innehåll

Tillägg i makro ??


pefra
 Share

Go to solution Solved by Monshi,

Rekommendera Poster

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

Ove Söderlund

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

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

Ove Söderlund

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

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

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

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

  • Solution

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 av Monshi
Buggfix av koden
Länk till kommentar
Dela på andra webbplatser

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

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

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

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!

  • Gilla 1
Länk till kommentar
Dela på andra webbplatser

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

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.

  • Gilla 2
Länk till kommentar
Dela på andra webbplatser

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

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

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

 Share

×
×
  • Skapa nytt...