Avatar billede prinsib Seniormester
16. juli 2023 - 14:30 Der er 26 kommentarer og
1 løsning

Rydde flere rækker.

Hej.
Jeg vil gerne kunne rydde indhold af flere rækker på en gang ved at sætte et kryds i en bestemt celle.
Ib
Avatar billede kim1a Ekspert
16. juli 2023 - 17:22 #1
Rydde så cellerne bliver tomme? Står der formler i dem? Er det ok med VBA?
Avatar billede prinsib Seniormester
16. juli 2023 - 18:45 #2
Hej Kim.
Ja cellerne skal stå tomme bagefter, og der står ingen formler i dem.
Nej det må ikke være med VBA.
Ib
Avatar billede kim1a Ekspert
16. juli 2023 - 19:26 #3
Så tror jeg ikke det kan lade sig gøre desværre.

Jeg tænkte ellers at hvis du udfyldte rækkerne med formler så kunne du snige det andet med ind.

En metode kan være at stedet du udfylder er blot en henvisning.

Eksempel:
Hvis du har de rækker som indimellem skal være tomme i A1:C10 så kunne der hvor du udfylder være i K1:M10 og der hvor du sætter x er så A11, B11 og C11

Så formlen i A1 =hvis(A$11="x";"";K1)

Det ville gøre at du kan vælge om tallene skal vises, men selve udfyldningen er et andet sted.
Avatar billede store-morten Ekspert
16. juli 2023 - 19:31 #4
Avatar billede prinsib Seniormester
16. juli 2023 - 20:14 #5
Ja store-Morten. Jeg har skrevet før, men da det er mig meget påliggende, prøvede jeg igen.
Kim tak for forsøget.
Ib
Avatar billede prinsib Seniormester
17. juli 2023 - 21:52 #6
Hej igen.
Jeg ved ikke om jeg kan fortsætte her, eller jeg skal lave et nyt spørgsmål.
Jeg har opgivet at rydde rækker uden VBA, så jeg har lavet en sådan, men den virker ikke.
Sub RydLigeRækker()
    Dim rng As Range
    Dim i As Long
    Set rng = Range("B2:B40") ' Juster området efter behov
    For i = 2 To rng.Rows.Count Step 2
        If Range("A40").Value = "x" Then
            rng.Cells(i).ClearContents
        End If
    Next i
End Sub
Er der nogen som vil hjælpe mig?
Hvad gør jeg forkert?
Ib
Avatar billede store-morten Ekspert
17. juli 2023 - 22:26 #7
Se ud til den virker, bortset fra de sletter ulige rækker
Avatar billede prinsib Seniormester
17. juli 2023 - 22:44 #8
Hej Morten.
Det forstår jeg ikke, for det er jo netop rækkerne B2 til B40 den skal slette.
De ulige rækker er låste.
Hvordan skal det så se ud? Har du et forslag?
Ib
Avatar billede store-morten Ekspert
17. juli 2023 - 23:00 #9
Du starter din løkke i B2:B40 og starter i anden række, altså B3, og tager så hver anden række.

Har lavet en ny kode, som starter med at tjekke A40 for: x
Og hvis der er: x så slettes hver anden række i kolonne 2, med start i række 2 og slutter med 40

Sub RydLigeRækker2()
    Dim i As Integer
    If Range("A40").Value = "x" Then
        For i = 2 To 40 Step 2
            Cells(i, 2).ClearContents
        Next i
    End If
End Sub
Avatar billede prinsib Seniormester
17. juli 2023 - 23:31 #10
Det ser rigtigt godt ud, men hvordan skal den se ud, hvis det er kolonne A til og med K.
Er det For i = 1 To 40 step 2
Men så kan jeg ikke lige gennemskue hvordan man får de andre kolonner med.
Ib
Avatar billede store-morten Ekspert
17. juli 2023 - 23:42 #11
Så slettes A40 med x også 🙂
Avatar billede store-morten Ekspert
17. juli 2023 - 23:47 #12
Sub RydLigeRækker3()
    Dim i As Integer
    If Range("A40").Value = "x" Then
        For i = 2 To 40 Step 2
            Range(Cells(i, 1), Cells(i, 11)).ClearContents
        Next i
    End If
End Sub
Avatar billede prinsib Seniormester
18. juli 2023 - 14:02 #13
Det virker desværre ikke helt rigtig Morten.
Jeg har sat koden ind i et modul, og derefter skal jeg ind og trykke på RUN i macros.
Kan det laves så jeg ikke skal ind og køre RUN hver gang det skal køre.
Det er rigtigt som du siger, at den sletter A40 også, men det er helt ok.
ib
Avatar billede prinsib Seniormester
18. juli 2023 - 14:04 #14
Koden fungerer helt rigtig.
Ib
Avatar billede store-morten Ekspert
18. juli 2023 - 14:29 #15
Du behøver ikke at gå ind i macros og vælge RUN

Du finder fanen: Kode og vælger: Makroer
Vælg: makro navn og tryk afspil.

Du kan lægge koden på en knap.

Du kan kode så makroen køre hver gang du ændre celle A40
Avatar billede store-morten Ekspert
18. juli 2023 - 15:07 #16
"Du kan kode så makroen køre hver gang du ændre celle A40"

Koden kunne se sådan ud :-)
Skal ikke i et Modul men lægges på Arket/Fanen det skal bruges på:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim SletSvar As Long

    If Not Intersect(Target, Range("A40")) Is Nothing Then
        If Range("A40").Value = "x" Then
   
        SletSvar = MsgBox("Du har anmodet om slette lige rækker området B2:K40 " & _
        vbCrLf & " Ønsker du det?", vbYesNo + vbQuestion, "Bekræft udskrift")
   
        If SletSvar = vbYes Then
            For i = 2 To 40 Step 2
                Range(Cells(i, 1), Cells(i, 11)).ClearContents
            Next i
        End If
           
        Else
            Exit Sub
        End If
    End If
End Sub
Avatar billede prinsib Seniormester
18. juli 2023 - 16:46 #17
Hej Morten.
Tusind tak for hjælpen endnu en gang. Det virker perfekt.
Et side spørgsmål behøver man at den kommer og spørger om man vil slette.
Ib
Avatar billede store-morten Ekspert
18. juli 2023 - 17:07 #18
Næ... :-)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

    If Not Intersect(Target, Range("A40")) Is Nothing Then
        If Range("A40").Value = "x" Then

            For i = 2 To 40 Step 2
                Range(Cells(i, 1), Cells(i, 11)).ClearContents
            Next i
           
        End If
        Else
            Exit Sub
    End If
End Sub
Avatar billede store-morten Ekspert
18. juli 2023 - 17:09 #19
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

    If Not Intersect(Target, Range("A40")) Is Nothing Then
        If Range("A40").Value = "x" Then

            For i = 2 To 40 Step 2
                Range(Cells(i, 1), Cells(i, 11)).ClearContents
            Next i
           
        End If
    End If
End Sub
Avatar billede prinsib Seniormester
18. juli 2023 - 17:53 #20
Tak igen Morten.
Det kan jeg ikke få til at fungere, men det er også ok. Jeg bruger den kode hvor jeg bliver spurgt om jeg vil slette.
Ib
Avatar billede store-morten Ekspert
18. juli 2023 - 17:57 #21
Det forstår jeg ikke!
Det er jo samme kode, dog uden advarsel.
Avatar billede prinsib Seniormester
18. juli 2023 - 19:58 #22
Du sendte to koder til sidst. Hvad er forskellen?
Avatar billede store-morten Ekspert
18. juli 2023 - 20:30 #23
Havde ikke slettet

Else
            Exit Sub

Men de virker begge to.

Og husk man kan kun have en:
Private Sub Worksheet_Change(ByVal Target As Range)
Avatar billede prinsib Seniormester
18. juli 2023 - 21:16 #24
Hej Morten.
Som du nok kan fornemme er jeg ikke særlig god til VBA programmering, så jeg forstår  ikke det sidste du skrev. Hvad betyder det?
Ib
Avatar billede store-morten Ekspert
18. juli 2023 - 21:36 #25
At du kun må have en:
1.
Private Sub Worksheet_Change(ByVal Target As Range)
Noget kode
End sub

2.
Private Sub Worksheet_Change(ByVal Target As Range)
Noget andet kode
End sub

Enten 1 eller 2 aldrig begge 🙂
Avatar billede prinsib Seniormester
18. juli 2023 - 22:21 #26
Det du mener, er det at jeg har lagt begge koder ind?
Det syns jeg ikke jeg har, men nu laver jeg et forsøg i morgen, med et tomt ark.
Ib
Avatar billede store-morten Ekspert
18. juli 2023 - 22:38 #27
Det kan jeg ikke vide om du har 🙂
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

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