Knap til at afspille VBA kode
Jeg har denne VBA kode:
Const startRæk = 3
Const slutRæk = 500
Private Sub worksheet_activate()
Rem Når arket "Liste" aktiveres - udføres testen
Dim række As Integer, ræk As String
Application.ScreenUpdating = False
For række = startRæk To slutRæk
ræk = række
If Range("B" & ræk) = 0 Then
ActiveSheet.Rows(række).Hidden = True
Else
ActiveSheet.Rows(række).Hidden = False
End If
Next række
Application.ScreenUpdating = True
End Sub
Jeg vil gerne have denne kode ind i en knap hvor man aktivere den når man selv har lyst ti det. Lige nu er den tildele et ark, hvor den starter når man aktivere arket.
PS: Er der nogen der kan omskrive min VBA kode så den ikke sletter tomme linjer, men kun dem der står 0(nul) i...?
Skrevet tir. d. 01. september 2009 kl. 20:06:20| #1
Indsæt nedenstående kode i et almindeligt modulark.
Koden virker på en vilkårlig kolonne. Hvis du for eksempel har dine data i kolonne B aktiverer du bare en celle et eller andet sted i kolonne B der indeholder et nul. Kør makroen og alle rækker med 0 i kolonne B vil blive sletttet. (marker en celle med "1", hvis du ønsker at slette alle rækker, hvor kolonne B indeholder "1", osv.). Jeg går ud fra du er bekendt med at knytte en makro til en knap - ellers kom igen.
Sub DeleteIf()
On Error Resume Next
x = ActiveCell.Value
Set region = ActiveCell.CurrentRegion
Set col = ActiveCell.EntireColumn
Set checkrange = Intersect(region, col)
For Each cell In checkrange
If cell.Value = x Then
If n = 0 Then
Set delrange = cell.EntireRow
n = 1
Else
Set delrange = Union(delrange, cell.EntireRow)
End If
End If
Next
delrange.Delete
End Sub
Hilsen
Hans
Skrevet ons. d. 02. september 2009 kl. 09:36:47| #2
dkhanknu
Den virker ikke som jeg gerne vil have den til...
Den du har sendt sletter kun den aktive linje også selvom der er andet tal end 0. fx. 1.236,35 sletter den også. og det skal den ikke.
Den VBA kode jeg har i forvejen virker som den skal, vil bare gerne have den tilføjet en knsp. Men når jeg sætter den ind i en knap, melder den fejl.
Skrevet ons. d. 02. september 2009 kl. 10:34:45| #3
Ved mig gør den makro jeg sendte det du skriver, at du gerne vil have gjort. Din makro sletter ikke, men skjuler rækker med nul eller blanke fra B3 og nedefter. Hvis du er interesseret i en projektmappe med makroen (+ knap), så fortæl mig hvor jeg skal sende det til.
Hans
Skrevet ons. d. 02. september 2009 kl. 12:16:16| #4
dkhanknu
Sådan ligger landet.
Jeg har et ark ved navn balance hvor jeg taster regnskabstal ind i. Disse tal overføres til et andet ark ved navn rapport. Når disse tal er overført, er der nogle regnskabsposter som udgør saldo 0. Disse vil jeg gerne have en knap til fjerne på hele arket på en gang (sidder og sletter dem enkeltvis lige nu)hvilke den macro du har sendt også gør.
Ville gerne spare tiden på at slette/skjule dem enkeltvis.
Har det problem med den VBA jeg har, at den også sletter de tomme mellemrums rækker og dem vil jeg ikke have slettet. samt at når jeg aktivere det ark hvor VBA'en er på, så køre VBA'en med det samme og det ville jeg gerne selv styre ved at aktivere/deaktivere VBA'en ved hjælp af en knap.
Ved ikke om dette giver mere mening vedr. mit spørgsmål.
Skrevet ons. d. 02. september 2009 kl. 12:18:24| #5
Skrevet ons. d. 02. september 2009 kl. 13:41:22| #6
Denne her skjuler, og hvis jeg forstår dig ret er det også det, du ønsker.
Sub Hiderows()
Dim lr As Long, i As Long
Application.ScreenUpdating = False
With ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 3 To lr
If Not IsEmpty(Cells(i, 2)) And Cells(i, 2) = 0 Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub
Vigtigt - koden skal indsættes i et almindeligt modul!
Gå tilbage til Excel. Hvis du har en ældre version end 2007 så tryk på Format, Forms. Find det der hedder Button. Tryk den ind. Tegn op på regnearket (så lille elller så stor du ønsker knappen skal være). Når du slipper så dukker Assign Macro dialogboksen op. Tryk på HideRows og tryk på OK. Nu kan du afvikle makroen ved at trykke på knappen. Jeg går ud fra du selv kan oversætte ovennævnte begreber (button mv.), hvis du har dansk Excel.
Skrevet tir. d. 22. september 2009 kl. 11:34:55| #7
Hej dkhanknu.
Kan sku ikke få det til at virke som jeg gerne vil... Men læg et svar så kan du få point for forsøget...
Vil starte et indlæg istedet for...
Skrevet tir. d. 22. september 2009 kl. 11:57:06| #8
I stedet for point ville jeg egentlig hellere have haft en forståelse af, hvordan du ikke kan få det til at virke, men OK.
Hans
Skrevet tir. d. 22. september 2009 kl. 12:11:43| #9
Jamen det er at når jeg insætter den kode du har skrevet, så virker det kun på en linje af gangen.
Det jeg har er en excelfil hvor jeg hvor jeg skriver nogle balance tal ind i et ark. Disse tal bliver så overført til en balance. Da det sjældent at alle poster i balancen bliver brugt, vil der være nogle linjer tilbage med saldo 0. Det er disse linjer jeg gerne vil have skjult på en gang.
Hvorfor jeg gerne vil have dette VBA på en knap, er grunden at jeg gerne vil kunne slå det til og fra igen. Dette er mere for at kunne tjekke om alt er med, da excel også tager tal fra skjulte celler med i den samlet beregning.
Ved ikke om dettte giver nogen mening for dig, men måske du har en udvej til dette.
Skrevet tir. d. 22. september 2009 kl. 14:06:52| #10
Undskyld - koden duede ikke. Hvad med følgende:?
Sub Hiderows()
Dim lr As Long, i As Long
Application.ScreenUpdating = False
With ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 3 To lr
If Cells(i, 2) = 0 Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next
End With
With ActiveSheet
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 3 To lr
If IsEmpty(Cells(i, 2)) Then
Cells(i, 1).EntireRow.Hidden = False
End If
Next
End With
Application.ScreenUpdating = True
End Sub
Hans
Skrevet ons. d. 23. september 2009 kl. 06:18:04| #11
Hvis du stadigvæk ikke kan få det til at virke er du velkommen til at sende en kopi af filen til mig, så kigger jeg på det. Adresse under profil.
Hans