08. juli 2013 - 10:14Der er
4 kommentarer og 1 løsning
Sortering af kolonner der indeholder formel
Hej Eksperter Jeg har lavet et regneark, hvor jeg lister forskellige ting op, og når jeg så er færdig med at udfylde cellerne, kan jeg trykke på et kontrolelement med en makro (vist nedenfor) som så sorterer regnearket, så det kun er kolonner, hvor der er skrevet noget i, der bliver vist. Og den virker! (Den er jo også hentet herinde :-)) Problemet opstår så, hvis jeg i en celle indtaster en formel (f.eks gang B4 med C8) så vil den ikke sortere den pågældende kolonne væk, selv om der ikke er noget resultat i cellen (altså 0). Hvad er der galt med makroen? Er der nogen der kan hjælpe?
Sub Sorterkolonner()
Dim rCell As Range Dim rTest As Range Dim lCol As Long On Error GoTo Fejl
Application.ScreenUpdating = False
For lCol = 0 To 2000 Step 1 'rCell sættes = cellen lCol til højre 'for celle A1. Set rCell = Range("B3").Offset(0, lCol) 'Hvis cellen er tom If Len(rCell.Value) = 0 Then Set rTest = rCell.End(xlDown) If rTest.Row = Rows.Count And Len(rTest.Value) = 0 Then Columns(rCell.Column).Hidden = True End If End If Next BeforeExit: Set rCell = Nothing Set rTest = Nothing Application.ScreenUpdating = True Exit Sub Fejl: MsgBox Err.Description & " Procedure SkjulTommeKolonner" Resume BeforeExit
Hvis der kun indsættes en formel i en kolonne, kan denne skjules med denne tilføjelse:
If Len(rCell.Value) = 0 Then Set rTest = rCell.End(xlDown) If rTest.Row = Rows.Count And Len(rTest.Value) = 0 Or (rTest.HasFormula = True And rTest.Value = 0) Then Columns(rCell.Column).Hidden = True Else End If End If
Sub Sorterkolonner() 'Gennemløber de første 26 kolonner og 'skjuler dem, hvis de er tomme. Dim rCell As Range Dim rTest As Range Dim lCol As Long On Error GoTo Fejl 'Skærmopdatering slås fra for at øge hastigheden. Application.ScreenUpdating = False
'Vi gennemløber nu kolonnerne fra venstre mod højre. For lCol = 0 To 2000 Step 1 'rCell sættes = cellen lCol til højre 'for celle A1. Set rCell = Range("B3").Offset(0, lCol) 'Hvis cellen er tom If Len(rCell.Value) = 0 Then 'Gå til første celle nedefter, som har 'et indhold. Hvis der ikke er nogen '"på vejen," havner vi i den nederste celle. Set rTest = rCell.End(xlDown) If rTest.Row = Rows.Count And Len(rTest.Value) = 0 Or (Cells(75, rCell.Column).Value = 0) Then '<-- justeret 'Kolonnen skjules. Columns(rCell.Column).Hidden = True End If End If Next BeforeExit: Set rCell = Nothing Set rTest = Nothing 'Skærmopdatering slås til igen Application.ScreenUpdating = True Exit Sub Fejl: MsgBox Err.Description & " Procedure SkjulTommeKolonner" Resume BeforeExit End Sub
Rem Revideret: Sub sorterrækker() Dim CheckRange As Range, cc As Object, ræk As String With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With
Set CheckRange = ActiveSheet.Range("BLF4:BLF75")
For Each cc In CheckRange.Cells If cc.Value = 0 Then ræk = cc.Row Rows(ræk & ":" & ræk).Select Selection.EntireRow.Hidden = True End If Next cc
With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub
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.