Pausa macro i excel
Hej,
Har ett långt macro/VBA i excel som jag skulle vilja ha ett tillägg i. Tillägget är att jag vid en angiven rad skulle jag vilja att det pausar och ger mig tillåtelse att fylla i siffror i 3olika celler i excel. När jag gjort detta vill jag att macrot fortsätter.
Någon som kan hjälpa mig med detta? Det spelar ingen roll om jag skriver direkt i cellerna eller om det kommer upp en dialogruta som jag gör denna manuella inmatningen i.
Tack på förhand
//Max
Svara
Sv: Pausa macro i excel
Skapa en dialogruta med tre textboxar,
en OK knapp och en Avbryt knapp.
Om du vill läsa in värdet i de tre cellerna innan dialogrutan
visas kan du göra det i eventet nedan
1 2 3 4 5 6 7 | Private Sub UserForm_Initialize() TextBox1.Text = Cells(1, 1).Value TextBox2.Text = Cells(1, 2).Value TextBox3.Text = Cells(1, 3).Value End Sub |
För att hantera ifall du vill stoppa makrot
när du klickar på knappen Avbryt i dialogrutan
måste du skapa en publik variabel som du sätter till True/False
beroende på vilken knapp som klickats
kod för knapparna blir då
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Private Sub Avbryt_Click() Stoppa = True Me .Hide End Sub Private Sub OK_Click() Cells(1, 1).Value = TextBox1.Text Cells(1, 2).Value = TextBox2.Text Cells(1, 3).Value = TextBox3.Text Stoppa = False Me .Hide End Sub |
makrot blir så här
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Option Explicit Public Stoppa As Boolean ' publik variabel för att hantera vad som skall hända efter dialogrutan Sub Testar() '' Kod före dialogrutan UserForm1.Show ' Om du klickar avbryt i dialogrutan stannar makrot If Stoppa Then Exit Sub ' Kod efter dialogrutan End Sub |
OBS ingen felhantering i detta
hoppas det hjälper
Svara
Sv:Pausa macro i excel
Nu lyser nog min okunskap igenom, men menar du att jag först skapar något i excel eller ska jag lägga in allt som en kod i VBA?
mvh
//Max
Svara
Sv: Pausa macro i excel
Du skapar dialogrutan i VBA editorn
Där har du väl redan ditt makro
Vill du ha min testfil får du ge mig din epostadress
Svara
Sv:Pausa macro i excel
Stort tack Thommy, det fungerar perfekt nu!
Jag har en sista fråga angående min VBA-kod.
Kort beskrivning:
Kolumn "H" i fliken "postnummer" innehåller 3-sifriga koder upp till 999 samt 5-siffriga koder som egentligen är postnummer. En del celler är tomma och innehåller enbart ett blanksteg.
Jag har fösökt få till en VBA-kod som gör följande;
1. Tar bort alla blanksteg i de "tomma" cellerna i angiven kolumn "H"
2. Kontrollerar att alla 5-siffriga postnummer i kulumn "H" har ett mellanslag efter de tre första siffrorna och lägger till det om det saknas. Dessa cellerna ska sedan vara som text.
3. Viktigt att den enbart kör dessa justeringar i angiven kolumn i angiven flik.
Är som Ni förstår nybörjare och försöker hitta lösningar själv men stöter på denna typen av problem som jag hopas kunna få assistans med.
Tack!
Svara
Sv: Pausa macro i excel
Nåt sånt här
Om du har en rubrikrad i kolumn H får du starta loopen på första
rad med postnummer ex inx = 2 för rad 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Sub Rensa_Postnr() Dim LastRow As Long Dim inx As Long Dim CurrNo As String ' ' Rensa_Postnr Makro ' Columns( "H:H" ).Replace What:= " " , Replacement:= "" , LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:= False , SearchFormat:= False , _ ReplaceFormat:= False 'LastRow = Range("H65000").End(xlUp).Row ' XL 2010 antal rader på ett blad ca 64000 LastRow = Range( "H1048576" ). End (xlUp).Row ' XL 2013 antal rader på ett blad 1048576 For inx = 1 To LastRow CurrNo = Cells(inx, 8).Value Cells(inx, 8).Value = Mid(CurrNo, 1, 3) & " " & Mid(CurrNo, 4) Next End Sub |
Svara
Sv:Pausa macro i excel
Jag lyckades halvvägs tror jag.
Alla mellanslag försvann, bra! :-)
När det var ett 5-siffrigt nummer försvann mellanslagen också, vilket inte var syftet. Här ville jag att det alltid skulle vara ett mellanslag efter tredje siffran samt att den cellen blev text istället för tal. Sorry om jag var otydlig med detta.
Eller är det något annat som jag gör knasigt tror du?
Svara
Sv: Pausa macro i excel
Tror jag upptäckte ett misstag jag gjorde när jag testade detta. Det var en kolumnmiss av mig och jag har justerat denna nu.
Ska göra ett par skarpa tester innan jag återkopplar igen.
Tack så länge!
Svara
Sv: Pausa macro i excel
makrot tar bort alla mellanslag innan loopen startar
Sen loopas alla celler och de 3 första siffrorna + ett mellanslag + resten av siffrorna
skrivs in som en text i resp cell
OBS beroende på vilken version av XL du har får
du använda lämplig rad före loopen
I exemplet används XL 2013 där bladen innehåller
över 1 miljon rader
Makrot utgår från en rad väldigt lång ned och hittar
sista rad uppåt i den kolumnen
Om du har XL 2010 och använde koden rakt av så blev
kanske sista rad fel och då kördes inte loopen korrekt
Svara