01. september 2009 - 13:53Der er
10 kommentarer og 1 løsning
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...?
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
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.
Synes godt om
Slettet bruger
02. september 2009 - 10:34#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
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.
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.
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.
Synes godt om
Slettet bruger
22. september 2009 - 14:06#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
Synes godt om
Slettet bruger
23. september 2009 - 06:18#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
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.