Avatar billede pethiknu Nybegynder
08. juli 2013 - 10:14 Der 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
Avatar billede supertekst Ekspert
08. juli 2013 - 10:36 #1
Cellen har indhold når der står en formel (indholdets længde er ikke 0)
Avatar billede supertekst Ekspert
08. juli 2013 - 10:42 #2
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
Avatar billede pethiknu Nybegynder
08. juli 2013 - 10:56 #3
Det virkede faktisk.
Bortset fra at den også sorterer de kolonner væk, hvor der er et resultat vist - hvad skyldes det?
Avatar billede supertekst Ekspert
08. juli 2013 - 11:14 #4
Har testet med en formel med værdi - kolonnen slettes ikke!

Du er velkommen til at sende filen - @-adresse under min profil.
Avatar billede supertekst Ekspert
08. juli 2013 - 15:17 #5
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester