Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketSlette er række med makro eller vba

 Besvar Besvar
Forfatter
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Emne: Slette er række med makro eller vba
    Sendt: 12.Nov.2010 kl. 17:38
Hej findes der en haj der vil hjælpe.
Jeg har to ark, hvor det ene ark indeholder data (Navne) over hvilke rækker, som skal slette i det andet ark. Hvordan laver jeg noget VBA-kode, så jeg kan få slettet rækkerne i mit Excel-ark?
 
De to ark indeholder følgende:

Ark ved navn sheet2 indeholder 25 kolonner:
A              B            C            D 
NavnID    Nr      tlf        Yderligere oplysninger
bo som eksempel

 
Ark ved navn sheet4 indeholder 1 kolonne:
A
NavnID
bo når jeg skriver bo her og trykker på en knap skal den slette
der er 5 ark ialt mappen. ark1, ark2, ark3, sheet2, sheet4, sheet5
Ud fra Arks navn. skal tilsvarende navn nr. slettes i Sheet 2(hele rækken skal slettes).
Til top



Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 12.Nov.2010 kl. 22:53
Hej Gusbaby,
 
Jeg er ikke helt sikker på at jeg forstår, men jeg prøver.
Denne kode kigger på Sheet4 og registrerer alle værdier i cellerne A1:A25
Efterfølgende kigger koden på Sheet2, og for hver gang værdien findes på Sheet4, slettes hele rækken på Sheet2.
 
Hvis det er korrekt, så burde denne kode virke hos dig. (Du skal måske rette arknavne og Range for at den virker helt som den skal)
 
Option Explicit
Sub SletRaekker()
Dim Navneliste As Range
Dim Dataliste As Range
Dim res As Variant
Dim Celle As Range
Dim Fundet As Range
Set Navneliste = Sheet4.Range("A1:A25") 'Din Originalliste med navne
Set Dataliste = Sheet2.Range("A1:A100") 'Liste hvor navnene skal slettes
For Each Celle In Dataliste.Cells
    res = Application.Match(Celle.Value, Navneliste, 0)
        If IsNumeric(res) Then
            If Fundet Is Nothing Then
                Set Fundet = Celle
            Else
                Set Fundet = Union(Celle, Fundet)
            End If
        End If
Next Celle
If Fundet Is Nothing Then
Else
    Fundet.Select
    Fundet.EntireRow.Delete
End If
End Sub

 
//Allan
Til top
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Sendt: 12.Nov.2010 kl. 23:52
okay jeg prøver. takker
ps. jeg prøvede med denne her men kunne ikke få det til at virke.
 
Sub SletRaekke()
    Dim a As Variant
    For Each c In Sheets(2).Range("a:a").Cells
        If c.Value = "" Then Exit Sub
            a = c.Value
            For Each x In Sheets(1).Range("a:a").Cells
                If x.Value = a Then
                    x.EntireRow.Delete shift:=xlUp
                End If
            Next x
    Next c
End Sub
 
i sheet2 kolonne a er der A2:A300 ville gerne kunne indtaste den tekstbjeg ville slette i en usenform
Til top
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Sendt: 13.Nov.2010 kl. 00:04
hej Allan
 
staver lige det ordentlig
i sheet2 kolonne a er der A2:A300. jeg ville gerne kunne indtaste den tekst jeg ville slette i en usenform.
eks. i sheet 2 kolonne A række 2 står der Bo.
       i sheet 2 kolonne A række 3 står der Ib
Hvis jeg indtaster Bo i en userform, skal den slette hele rækken Bo i sheet 2
Hvis jeg indtaster Ib i en userform, skal den slette hele rækken Ib i sheet 2
 
Håber du forstår hvad jeg menerSmile
 
 
 
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 14.Nov.2010 kl. 21:58
Citat: Gusbaby Gusbaby skrev:

i sheet2 kolonne a er der A2:A300. jeg ville gerne kunne indtaste den tekst jeg ville slette i en usenform.
eks. i sheet 2 kolonne A række 2 står der Bo.
       i sheet 2 kolonne A række 3 står der Ib
Hvis jeg indtaster Bo i en userform, skal den slette hele rækken Bo i sheet 2
Hvis jeg indtaster Ib i en userform, skal den slette hele rækken Ib i sheet 2
 
OK,
Som jeg læser ovenstående, har du en Userform som ved indtastning i et felt, skal slette matchende tekst i området A2:A300
I dette eksempel antager jeg at du indtaster i en Textbox i din Userform, og dennes navn er 'Textbox1' (Du kan ændre dette i linjen: Vaerdien = ?
 
Sub SletRaekke()
 
Vaerdien = Textbox1.Value
 
Range("A2:A300").Select
For Each c In Selection.Cells
    If c.Value = Vaerdien Then c.Value = ""
Next c
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("A1").Activate
End Sub

 
//Allan
 
Til top
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Sendt: 14.Nov.2010 kl. 22:30
tak for hjælpen. kanon god side man lærer meget her.
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 10:33
Velbekomme og tak for din tilbagemelding Wink
Super du kunne bruge det.
 
//Allan
Til top
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 11:13
Hej Allan der er noget galt.
 
den sletter en del rækker i ark1 hvis jeg indtaster et navn sletter den flere rækker.
den skulle slette matchende tekst i sheet2. kan du fikse det.
 
 
Tonny
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 12:56
Hej Tonny,
 
Mener du: Hvis du taster 'Bo', skal koden så både slette 'Bo' fra sheet1 og fra sheet2 eller?
(jeg laver det så du selv kan styre arknavnene)
 
//Allan
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 14:23
Hej Tonny,
 
Nu tager jeg chancen og antager at rækker som indeholder teksten fra din Userform skal slettes på begge ark.
 
Koden vil så blive:
 
Sub SletRaekke()
 
Arknavn1 = "sheet1"
Arknavn2 = "sheet2"
Omraade = "A2:A300"
Vaerdien = Textbox1.Text
 
For Each c In Sheets(Arknavn1).Range(Omraade).Cells
    If c.Value = Vaerdien Then c.Value = ""
Next c
For Each d In Sheets(Arknavn2).Range(Omraade).Cells
    If d.Value = Vaerdien Then d.Value = ""
Next d
Sheets(Arknavn2).Range(Omraade).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Sheets(Arknavn1).Range(Omraade).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("A1").Activate
End Sub

 
Lad mig lige høre om det er helt skævt
 
Det kunne også være du mente at den kun skal slette forekomster på sheet2, hvis de forekommer på sheet1, men jeg er ikke sikker. Giv lyd hvis det er tilfældet.
 
//Allan
Til top
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 16:14
Hej Allan
Jeg har måske udtrykket mig forkert.
hvis jeg taster Bo skal den slette Bo fra sheet2. da det er der listen ligger.
 
den du lavede slettede fra min ark1 og ikke sheet2.
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 16:20
Ja, Tongue nu tror jeg at jeg forstår.
Så skal du bare rette Arknavn = "sheet2" efter hvad du ønsker.
Jeg har på forhånd sat det til sheet2, men du kan som sagt bare rette det som du lyster.
 
 
Sub SletRaekke(Medarb As String)
 
ArkNavn = "sheet2"
Omraade = "A2:A300"
 
For Each c In Sheets(ArkNavn).Range(Omraade).Cells
    If c.Value = Medarb Then
        c.Value = ""
        MsgBox Medarb & " er nu slettet fra arket " & ArkNavn, vbInformation
    End If
Next c
On Error Resume Next
Sheets(ArkNavn).Range(Omraade).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("A1").Activate
End Sub
 
//Allan
Til top
Gusbaby Se dropdown
Bronze bruger
Bronze bruger


Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 16:42
tak tak har lidt problem med hvor jeg skal ligge koden er det i userform eller?
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 15.Nov.2010 kl. 19:11
Hej,
 
Det optimale er at du ligger koden i et modul og bare henviser til din fra din userform.
Under knappen i din userform, skal du kalde makroen sådan her:

 
Call SletRaekke(TextBox1.Text)
 
På denne måde fortæller du makroen at det er fra TextBox1 den skal hente data. (det kan du naturligvis ændre hvis din textbox hedder noget andet)
Men hvis du er tvivl, så send filen til mig via knappen Fil foroven når du skriver denne besked.
Jeg lægger gerne koden ind for dig.
 
//Allan
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk