16. februar 2006 - 20:24Der er
59 kommentarer og 2 løsninger
Hvem kan chiptune en sløv løkke ?
Følgende sub skjuler rækker med 0-værdier så de ikke vises på udskriften. Selv om 5 sek. ikke er meget, så virker det lidt iriterende at vente på. Jeg har på fornemmelsen, at løkken skjuler, eller forsøger at skjule rækker som allerede er skjulte. Så hvis rækken stadig har 0 værdi ved udskriften behøver subben jo ikke at ændre på rækkens tilstand.
Public Sub Skjul() 'Regnskab
Application.ScreenUpdating = False Worksheets("Regnskab").Activate For Each c In Range("e5:e15").Cells If c.Value <> 0 Then Rows(c.Row).Hidden = False Else Rows(c.Row).Hidden = True End If Next
For Each c In Range("e20:e30").Cells If c.Value <> 0 Then Rows(c.Row).Hidden = False Else Rows(c.Row).Hidden = True End If Next For Each c In Range("e38:e41").Cells If c.Value <> 0 Then Rows(c.Row).Hidden = False Else Rows(c.Row).Hidden = True End If Next
For Each c In Range("e45:e49").Cells If c.Value <> 0 Then Rows(c.Row).Hidden = False Else Rows(c.Row).Hidden = True End If Next
jeg ved ikke om den er hurtigere, men den er kortere
Public Sub Skjul() 'Regnskab
Application.ScreenUpdating = False For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value <> 0 Then Rows(c.Row).Hidden = False Else Rows(c.Row).Hidden = True End If Next Application.ScreenUpdating = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Public Sub Skjul() Dim c As Range Application.ScreenUpdating = False For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value <> 0 Then c.Rows.Hidden = False Else c.Rows.Hidden = True End If Next Application.ScreenUpdating = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Public Sub Skjul() 'Regnskab Worksheets("Regnskab").Activate Application.ScreenUpdating = False For Each c In Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value <> 0 Then Rows(c.Row).Hidden = False Else Rows(c.Row).Hidden = True End If Next Application.ScreenUpdating = True ActiveWindow.SelectedSheets.PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Public Sub Skjul() Dim c As Range Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then c.Rows.Hidden = True Next Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Application.ScreenUpdating = False Worksheets("Regnskab").Cells.EntireRow.Hidden = False For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then Rows(c.Row).Hidden = True End If Next Application.ScreenUpdating = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Application.ScreenUpdating = False Worksheets("Regnskab").Cells.EntireRow.Hidden = False For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then Worksheets("Regnskab").Rows(c.Row).Hidden = True End If Next Application.ScreenUpdating = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Public Sub Skjul() Dim c As Range Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then c.Rows.Hidden = True Next 'Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
prøv denne, du har måske nogen automatiske makroer, der kører
Public Sub Skjul() 'Regnskab
Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual Worksheets("Regnskab").Cells.EntireRow.Hidden = False For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then Worksheets("Regnskab").Rows(c.Row).Hidden = True End If Next Application.ScreenUpdating = True Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Her er et alternativ, men om det er hurtige ved jeg ikke. Jeg synes faktisk at den game var kvik nok
Public Sub Skjul() Worksheets("Regnskab").Range("E4:E51").AutoFilter Field:=1, Criteria1:="<>0", Operator:=xlAnd Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select End Sub
Jeps, det er autofilter. Prøv lige at fjerne det og test denne her i stedet (bare for sjov)
Public Sub Skjul() Dim sc As Range Dim c As Range Set sc = Worksheets("Regnskab").Range("e65") Application.ScreenUpdating = False For Each c In Worksheets("Regnskab").Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then Set sc = Union(sc, c) Next sc.Rows.Hidden = True Worksheets("Regnskab").PrintPreview Worksheets("Forside").Activate Range("m7").Select Application.ScreenUpdating = True End Sub
Private Sub Worksheet_Activate() Cells.EntireRow.Hidden = False For Each c In Range("e5:e15,e20:e30,e38:e41,e45:e49").Cells If c.Value = 0 Then Rows(c.Row & ":" & c.Row).Hidden = True End If Next Application.ScreenUpdating = True
her er en anden af dine makroer, som er kortet ned
Sub SletAlle() Response = MsgBox("", vbYesNo, " Skal Alle sider slettes ? ") If Response = vbYes Then
Application.ScreenUpdating = False For i = 1 To 10 Worksheets("Side " & i).Range("B5:H27").ClearContents Next Worksheets("Forside").Range("m7").Select Application.ScreenUpdating = True Else End If End Sub
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.