Forfatter |
Emne Søg Emne funktioner
|
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
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).
|
 |
|
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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
|
 |
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
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
|
 |
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
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 mener 
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 14.Nov.2010 kl. 21:58 |
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
|
 |
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
Sendt: 14.Nov.2010 kl. 22:30 |
tak for hjælpen. kanon god side man lærer meget her.
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 15.Nov.2010 kl. 10:33 |
Velbekomme og tak for din tilbagemelding
Super du kunne bruge det.
//Allan
|
|
 |
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
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
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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
|
 |
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
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.
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 15.Nov.2010 kl. 16:20 |
Ja,  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
|
 |
Gusbaby
Bronze bruger
Medlem: 01.Nov.2010
Land: Danmark
Status: Offline
Point: 63
|
Sendt: 15.Nov.2010 kl. 16:42 |
tak tak har lidt problem med hvor jeg skal ligge koden er det i userform eller?
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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  foroven når du skriver denne besked.
Jeg lægger gerne koden ind for dig.
//Allan
|
 |