Avatar billede Trenddude Praktikant
02. august 2017 - 15:30 Der er 5 kommentarer

Resultat af makro-kørsel i særskilt faneblad

Hej
Jeg har lavet en enkel makro, som er baseret på betinget formatering. De ting,  der skal arbejdes på, kommer således til at stå med rød baggrund. Der er otte kolonner med resultater.

Er der nogen, der ved, om man kan indsætte en funktion i makroen, så de celler fra kolonne 2 markeret med rød, bliver eksporteret til et nyoprettet faneblad (i det samme dokument)?
Det samme er gældende for de andre kolonner med rød baggrund.

På forhånd tak
Avatar billede Jan Hansen Ekspert
02. august 2017 - 15:56 #1
Tja når du har fat i den enkelte cell så kopier du bare den over til den celle du har bestemt

rNewCell.value=rOldCell.value

Jan
Avatar billede Trenddude Praktikant
15. august 2017 - 08:19 #2
Hej Jan.
Tak for dit svar. Jeg kan dog ikke rigtigt få det til at virke. Jeg kan godt være i tvivl om, jeg har formuleret spørgsmålet korrekt. Har lavet denne grafiske illustration https://www.screencast.com/t/3DlRy1HL - håber det giver mening.

Essensen er, at for hver kolonne skal de ønskede celler overflyttes til et nyt faneblad. Det vil sige, at hvis man har 4 kolonner med betinget formatering, skal dataresultaterne for den betingede formatering åbne 4 nye faneblade - KUN med  de data, der bliver markeret på grund af den betingede formatering.

På forhånd tak
Avatar billede Jan Hansen Ekspert
15. august 2017 - 12:42 #3
Mon denne macro ikke kan bruges



Option Explicit

Dim ws As Worksheet, wsKopi_1 As Worksheet, wsKopi_2 As Worksheet, wsKopi_3 As Worksheet, wsKopi_4 As Worksheet
Dim rArea As Range, MyArray(), NewArray()
Dim iRow, iColumn
Dim A, B, C As Integer


Sub MyCopy()
    Set ws = Sheets("Ark1") ' ret Ark1 til hvad dit ark hedder
    Set wsKopi_1 = Sheets("Ark2")
    Set wsKopi_2 = Sheets("Ark3")
    Set wsKopi_3 = Sheets("Ark4")
    Set wsKopi_4 = Sheets("Ark5")
    Set rArea = ws.UsedRange 'Sætter rArea lig det brugte område på arket "ws"
    MyArray = rArea.Value ' Sætter Array'et MyArray lig rArea
    '----- Sætter størelsen på NewArray ------
    C = 2
    B = 1
    For iColumn = LBound(MyArray, 2) To UBound(MyArray, 2) 'Løber kolonnerne igennem
        For iRow = LBound(MyArray, 1) To UBound(MyArray, 1) 'Løber rækker igennem
            Select Case iColumn
                Case 1
                    If MyArray(iRow, iColumn) < 300 Then ' betingelse for kolonne 1 her mindre end 300
                        C = C + 1
                    End If
                Case 2
                    If MyArray(iRow, iColumn) < 200 Then ' betingelse for kolonne 2 her mindre end 200
                        C = C + 1
                    End If
                Case 3
                    If MyArray(iRow, iColumn) < 300 Then ' betingelse for kolonne 3
                        C = C + 1
                    End If
                Case 4
                    If MyArray(iRow, iColumn) < 300 Then ' betingelse for kolonne 4
                        C = C + 1
                    End If
            End Select
        Next iRow
        If C > A Then A = C
        C = 0
        B = B + 1
    Next iColumn
    ReDim NewArray(2 To 2 + A + 1, 1 To 1 + B)
    '-------//-------
    A = 2
    B = 1
    '------- Finder data der skal over -------
    For iColumn = LBound(MyArray, 2) To UBound(MyArray, 2) 'Løber kolonnerne igennem
        For iRow = LBound(MyArray, 1) To UBound(MyArray, 1) 'Løber rækker igennem
            Select Case iColumn
                Case 1
                    If MyArray(iRow, iColumn) < 300 Then ' betingelse for kolonne 1 her mindre end 300
                        NewArray(A, B) = MyArray(iRow, iColumn)
                        A = A + 1
                    End If
                Case 2
                    If MyArray(iRow, iColumn) < 200 Then ' betingelse for kolonne 2 her mindre end 200
                        NewArray(A, B) = MyArray(iRow, iColumn)
                        A = A + 1
                    End If
                Case 3
                    If MyArray(iRow, iColumn) < 300 Then ' betingelse for kolonne 3
                        NewArray(A, B) = MyArray(iRow, iColumn)
                        A = A + 1
                    End If
                Case 4
                    If MyArray(iRow, iColumn) < 300 Then ' betingelse for kolonne 4
                        NewArray(A, B) = MyArray(iRow, iColumn)
                        A = A + 1
                    End If
            End Select
        Next iRow
        A = 2
        B = B + 1
    Next iColumn
    '------//-----
    '----- Overfører data -----
    For iColumn = LBound(NewArray, 2) To UBound(NewArray, 2) 'Løber kolonnerne igennem
        For iRow = LBound(NewArray, 1) To UBound(NewArray, 1) 'Løber rækker igennem
            Select Case iColumn
                Case 1
                    wsKopi_1.Cells(iRow, 1).Value = NewArray(iRow, iColumn)
                Case 2
                    wsKopi_2.Cells(iRow, 1).Value = NewArray(iRow, iColumn)
                Case 3
                    wsKopi_3.Cells(iRow, 1).Value = NewArray(iRow, iColumn)
                Case 4
                    wsKopi_4.Cells(iRow, 1).Value = NewArray(iRow, iColumn)
            End Select
        Next iRow
    Next iColumn
End Sub



Jan
Avatar billede Trenddude Praktikant
15. august 2017 - 15:07 #4
Nå bare det :-D :-D :-D
Det ser virkeligt godt ud. Jeg glæder mig rigtigt meget til at prøve det.
Mange tak :-D
Avatar billede Jan Hansen Ekspert
15. august 2017 - 15:12 #5
Ja forstod første gang at du havde noget vba der udvalgte formateringen og det hele skulle over i et andet ark så havde det bare været som i #1
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