Oprettet tir. d. 01. september 2009 kl. 13:53:13

kiilerrich
kiilerrich (16.625 point. Point ude: 60)

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

dkhanknu
dkhanknu (35.505 point)
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

kiilerrich
kiilerrich (16.625 point)
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

dkhanknu
dkhanknu (35.505 point)
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

kiilerrich
kiilerrich (16.625 point)
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

kiilerrich
kiilerrich (16.625 point)
Håber det giver mening

Skrevet ons. d. 02. september 2009 kl. 13:41:22| #6

dkhanknu
dkhanknu (35.505 point)
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

kiilerrich
kiilerrich (16.625 point)
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

dkhanknu
dkhanknu (35.505 point)
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

kiilerrich
kiilerrich (16.625 point)
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

dkhanknu
dkhanknu (35.505 point)
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

dkhanknu
dkhanknu (35.505 point)
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

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Datavalidering med anden workbook som referance

Oprettet den 26. maj 2012 kl. 09.05
KenneyD71 giver 60 point for svar | Giv et svar »

Søgeformel i Excel

Oprettet den 25. maj 2012 kl. 23.28
Torben1970 giver 60 point for svar | Giv et svar »

Vopslag imellem projektmapper.

Oprettet den 25. maj 2012 kl. 13.17
KenneyD71 giver 100 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger