Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何从Find Last Column函数中排除特定行_Vba_Excel - Fatal编程技术网

Vba 如何从Find Last Column函数中排除特定行

Vba 如何从Find Last Column函数中排除特定行,vba,excel,Vba,Excel,我已经创建了一个创建库存列表的电子表格。我正在编写的宏打开我的内部网搜索页面,在a行中输入目录号(图中未显示)。并将信息返回到excel工作表。当它输入位置(装备)时,它在第2行中创建一个标题。我创建了第二个宏,用于删除非活动位置。在这个过滤器之后,我留下了一个更干净的列表,但我想删除第2行中不再包含信息的标题(即AH、AI、AJ等列)。我知道我可以找到工作表中最后使用的列,但我想做的是在第3到最后一行为空时清除第2行中的格式、边框和内容 有没有办法调整此选项以将行2从搜索中排除 Dim Las

我已经创建了一个创建库存列表的电子表格。我正在编写的宏打开我的内部网搜索页面,在a行中输入目录号(图中未显示)。并将信息返回到excel工作表。当它输入位置(装备)时,它在第2行中创建一个标题。我创建了第二个宏,用于删除非活动位置。在这个过滤器之后,我留下了一个更干净的列表,但我想删除第2行中不再包含信息的标题(即AH、AI、AJ等列)。我知道我可以找到工作表中最后使用的列,但我想做的是在第3到最后一行为空时清除第2行中的格式、边框和内容

有没有办法调整此选项以将行2从搜索中排除

Dim LastColumn As Integer

Set LastColumn = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByColumns, _ 
SearchDirection:=xlPrevious).Column

Cells(2,LastColumn).Select
ActiveCell.Offset(0,1)
 Do
 If not ActiveCell = "" Then
  ActiveCell.EntireColumn.Delete(xlToLeft)
  DoEvents
 Else
  Exit Do
 End If
 Loop

合并Gary学生回答后的最终代码。谢谢

 'Find last used column below header row
Dim wf As WorksheetFunction
Dim N As Long
Dim rCol As Range

Set wf = Application.WorksheetFunction
Cells(1, 1).EntireRow.Hidden = True
Cells(2, 1).EntireRow.Hidden = True

Do
For N = Columns.Count To 1 Step -1
    Set rCol = Cells(1, N).EntireColumn
    If wf.Subtotal(103, rCol) > 0 Then
        Exit Do
    End If
Next
Loop

Cells(1, 1).EntireRow.Hidden = False
Cells(2, 1).EntireRow.Hidden = False

 'Trim header row to used columns only
Cells(2, N).Select
ActiveCell.Offset(0, 1).Select

 Do
    If Not ActiveCell = "" Then
        ActiveCell.EntireColumn.Delete (xlToLeft)
        DoEvents
    Else
        Exit Do
    End If
Loop

从我所能理解的基本情况来看,你试图进行搜索,并从搜索中排除一些行?为什么不使用双环呢

for i 1 to columns you want
    for j = 1 to rows you want
        if j <> row you don't want
            'add code here
        end if
    nextj
next i
用于i 1到您想要的列
对于j=1,请选择所需的行
如果你不想要的话
'在此处添加代码
如果结束
下一个
接下来我

只需从检查中排除该行:

Sub FindLastColumn()
    Dim BadRow As Long, wf As WorksheetFunction
    Dim N As Long, rCol As Range, i As Long
    BadRow = 7
    i = 103
    Set wf = Application.WorksheetFunction
    Cells(BadRow, 1).EntireRow.Hidden = True
    For N = Columns.Count To 1 Step -1
        Set rCol = Cells(1, N).EntireColumn
        If wf.Subtotal(i, rCol) > 0 Then
            MsgBox "The last used column is:   " & N
            Cells(BadRow, 1).EntireRow.Hidden = False
            Exit Sub
        End If
    Next N
    Cells(BadRow, 1).EntireRow.Hidden = False
End Sub

因为列长度将更改。我试图使用find函数来查找“columns you want”编号。很好,我没有注意到“.entirerow.hidden=true”。这将使它在工作表上不可见,这是否意味着find函数将无法看到它?