02. december 2005 - 15:40Der er
8 kommentarer og 1 løsning
Makro som sletter rækker indeholdende specifik data?
Hej Eksperter,
Ved dataimport fra en tekstfil til excel får jeg desværre sidehovedet for for hver side. Det vil side at der er nogle rækker med data og derefter et sidehoved og så noget data osv. Er der nogle af jer der kan vinkle at hjælpe mig med en makro som kan slette disse sidehoved-rækker? Sidehovedet består af 12 rækker hvoraf der er data i 4 af dem det ser ud som følger:
Firmanavn A/S ---------- --------------------- KUNDE/VARE STATISTIK PR DEBITOR ---------- ---------------------
Stregerne fremgår også andre steder i arket og må helst ikke slettes derfra....
' Fjern overskriftslinier Dim lngRow As Long, lngLastRow As Long lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row 'Husk at rette til den kolonne med de sidste data er For lngRow = lngLastRow To 1 Step -1 If Cells(lngRow, "A").Value = "Firmanavn A/S" Then Cells(lngRow, "A").EntireRow.Delete End If If Cells(lngRow, "A").Value = "----------" Then Cells(lngRow, "A").EntireRow.Delete End If If Cells(lngRow, "A").Value = "KUNDE/VARE" Then Cells(lngRow, "A").EntireRow.Delete End If Next lngRow ActiveSheet.UsedRange End Sub
Men altså... Du er jo genial!! Jeg har selv en makro som sletter alle tomme rækker så det er jo bare i vinkel... Jeg har dog yderligere nogle rækker jeg ønsker at slette hvori der fx. står sælger eller lign. Jeg har fundet denne her makro som burde slette en række hvis den indenholder data magen til det man indtaster, men den virker ikke... Jeg får en Run-time '6' Error.... Overflow. :-( Dengår åbenbart galt i linien: NumRows = rngSrc.Rows.Count
Kan du måske hjælpe med at debugge?
Sub DeleteRowsTrigger() Dim strToDelete As String Dim rngSrc As Range Dim NumRows As Integer Dim ThisRow As Integer Dim ThatRow As Integer Dim ThisCol As Integer Dim J As Integer Dim DeletedRows As Integer
strToDelete = InputBox("Value to Trigger Delete?", "Delete Rows") Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)
For J = ThatRow To ThisRow Step -1 If Cells(J, ThisCol) = strToDelete Then Rows(J).Select Selection.Delete Shift:=xlUp DeletedRows = DeletedRows + 1 End If Next J MsgBox "Number of deleted rows: " & DeletedRows
Du tilføjer bare efter den sidste sletteblok, endnu en sletteblok f.eks. If Cells(lngRow, "C").Value = "SÆLGER" Then Cells(lngRow, "C").EntireRow.Delete End If Her har jeg rettet til at Sælger står i kolonne "C"
Jeg ved ikke om det er smartere, men det er en lille addin, der gør det nemmere at importere mange af xal's tekstfiler/rapporter. Vi har haft meget glæde af den, men den løser sansyligvis ikke lige dit specifikke problem. den læser et lille stykke af tekstfilen ind og beder dig om at udpege overskrift, samt de linie-typer du ikke ønsker at importere, dvs at du får en fil ind, der ligner en database eller liste. Send mig en mail, så skal jeg lige finde den til dig.
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.