2016-04-30 6 views
0

Ich arbeite mit einem Excel-Blatt dort in Spalte A irgendwo eine Zelle enthält Arbeitsmappen-Name (angenommen, mein Arbeitsbuch-Name ist abc dann "abc" ist in einer Zelle in Spalte A wahrscheinlich im Bereich "A8 OR A9 "). Ich möchte herausfinden, dass Zeile & löschen Sie alle darüber liegenden Zeile. I unter Verwendung von Code untenZelle mit Arbeitsmappen-Name

Option Explicit 

Sub abc() 
    If Cells(8, 1).Value = ActiveWorkbook.Name Then 
     Range("A1:A7").Delete 
    Else 
     Range("A1:A8").Delete 
    End If  
End Sub 

Pls, wenn jemand kann mir helfen, das Problem zu lösen

+0

Also, was ist das Problem? Der Code sollte funktionieren (vorausgesetzt, Sie meinten "Range (" A1: A8 "). Löschen)' statt 'Range (" A: A8 "). Delete)'. – Leviathan

+0

Setzen Sie '? ActiveWorkbook.Name' in das Direktfenster und drücken Sie [Enter]. Das Problem sollte sofort offensichtlich sein. – Jeeped

+0

Enthält Ihre Zelle etwas wie *** Book1 *** oder *** Book1.xlsm *** ?? –

Antwort

0

Sie Arbeitsmappe Namen finden können und die Zeilen über der Zelle löschen enthält, dass Namen wie:

Sub abc() 
    Dim SearchCol As Long, SearchRow As Long 
    Dim StrName As String 
    Dim FoundCell As Range 

    'get the workbook name after removing the extension 
    StrName = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1)) 

    'search for the workbook name 
    Set FoundCell = Cells.Find(What:=StrName, LookAt:=xlWhole) 
    If FoundCell Is Nothing Then 
     MsgBox "File name not found in Sheet" '---> if workbook name not found in the sheet 
    Else 
     Rows(1 & ":" & FoundCell.Row - 1).EntireRow.Delete '---> delete the rows if name found 
    End If 
End Sub 


BEARBEITEN: ________________________________________________________________________________

Option Explicit 
Sub SearchWrkbookName() 
    Dim oSht As Worksheet 
    Dim lastRow As Long, i As Long 

    lastRow = 22 

    Dim strSearch As String 
    strSearch = Left(ActiveWorkbook.Name, (InStrRev(ActiveWorkbook.Name, ".", -1, vbTextCompare) - 1)) '---> to remove extension from worksheet name 

    Dim aCell As Range 

    Set oSht = Sheets(1) 
    Set aCell = oSht.Range("1:" & lastRow).Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 
    If Not aCell Is Nothing Then 
     Rows("1:10").Select 
    End If 
End Sub 

Editierter Code ist funktionierende Version Ihres Codes in Kommentaren geschrieben.

+0

Gestern habe ich versucht unten Code, aber ich bin verwirrt, warum der Fehler "Variable nicht gesetzt" erscheint. Ich habe viel versucht, es herauszufinden, ich sehe alles richtig aus. Pls gehen mir durch den Code, um den Fehler – Nafis

+0

Option Explicit suchen Sub SearchWrkbookName() Dim oSht Wie Arbeitsblatt Dim LastRow As Long, i As Long LastRow = 22 Dim strSearch As String strSearch = ActiveWorkbook.Name Dim Acell Als Bereich Set oSht = Sheets (1) Setze aCell = oSht.Range ("A1" & lastRow) .Find (Was: = strSearch, LookIn: = xlValues, LookAt: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = False, SearchFormat: = False) Wenn keine Zelle steht, dann Zeilen ("1:10"). Wählen Sie Ende Wenn End Sub – Nafis

+0

@Nafis - Es gibt einige Probleme mit Ihrem Code. – Mrig