Hej, Skapa en dialogruta med tre textboxar, 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? Du skapar dialogrutan i VBA editorn Stort tack Thommy, det fungerar perfekt nu! Nåt sånt här Jag lyckades halvvägs tror jag. 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. makrot tar bort alla mellanslag innan loopen startarPausa macro i excel
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
//MaxSv: Pausa macro i excel
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
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å
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
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
Sv:Pausa macro i excel
mvh
//MaxSv: Pausa macro i excel
Där har du väl redan ditt makro
Vill du ha min testfil får du ge mig din epostadressSv:Pausa macro i excel
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!Sv: Pausa macro i excel
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
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
Sv:Pausa macro i excel
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?Sv: Pausa macro i excel
Ska göra ett par skarpa tester innan jag återkopplar igen.
Tack så länge!Sv: Pausa macro i excel
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