2014-10-17 95 views
0

首先,请允许我提前感谢您在这方面的帮助。Excel VBA - 如何在表格中的特定行开始输出

这似乎很简单,但我一直无法弄清楚。该代码仅列出特定工作表之间的所有工作表名称。我将一些代码混合在一起,并在网上进行了研究,一切正常,但只有一种。我需要的最后一件事是能够从特定行开始输出。

当前,输出从单元格A2开始。我如何认为代码是从特定单元格(如单元格A3)开始输出的?

我下面的代码:

Sub Summary_All_Worksheets() 
Dim i As Long 
Dim Low As Long, High As Long, Skip As Long 
Dim Newsh As Worksheet 
Dim Basebook As Workbook 

With Application 
    .Calculation = xlCalculationManual 
    .ScreenUpdating = False 
End With 

Set Basebook = ThisWorkbook 
Set Newsh = Basebook.Worksheets("Client Test") 
Newsh.Columns("a").ClearContents 

Low = Basebook.Worksheets("front").Index 
Middle = Basebook.Worksheets("P5GBack").Index 
High = Basebook.Worksheets("back").Index 

If High < Low Then 
    i = Low 
    Low = High 
    High = i 
End If 

With Newsh.Cells(Rows.Count, 1) 
    For i = Low + 1 To Middle - 1 
    .End(xlUp).Offset(1, 0) = Basebook.Worksheets(i).Name 
    Next i 

    For i = Middle + 1 To High - 1 
     .End(xlUp).Offset(1, 0) = Basebook.Worksheets(i).Name 
    Next i 

    With Application 
     .Calculation = xlCalculationAutomatic 
     .ScreenUpdating = True 
    End With 
End With 

End Sub 

回答

-1

你的这部分代码决定了细胞将开始填充(我已经添加评论你的代码):

With Newsh.Cells(Rows.Count, 1) 'count all the rows in the sheet, and 
'make everything relative to that row, in column 1. (Basically, you're 
'selecting the very bottom cell in column A.) 
For i = Low + 1 To Middle - 1 
    .End(xlUp).Offset(1, 0) = Basebook.Worksheets(i).Name 'Move up 
'from that bottom-most cell until you find a cell with a value (like 
'you were pressing ctrl+up). Go down one row (this is the 'Offset(1,0)' 
' part), and in that cell, enter the worksheet name. 
Next i 

虽然这种方式是相当稳定并避免覆盖任何数据,如果您希望能够将代码放入一个新的地方开始您的列表,您可以像这样做(从单元格E5开始):

NewSh.Cells(5,5).Activate 'start in E5 on NewSh 
For i = Low + 1 To Middle - 1 
    ActiveCell = Basebook.Worksheets(i).Name 'put the name in the active cell 
    NewSh.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:= ActiveCell.Value & "!A1",  TextToDisplay:=ActiveCell.Value' 
    ActiveCell.Offset(1, 0).Activate 'activate the next cell down 
Next i 

还有其他方法可以做到这一点,最好的方法是由您的情况决定的(并且我急于添加 - 在For循环的两个循环中进行上述更改。 ;-)

+0

这将把数据放在ActiveSheet上,这可能是也可能不是所需的表单(OP的代码正确避免了这个缺陷)。也没有必要使用ActiveCell这个 – 2014-10-18 07:46:38

+0

非常感谢你,它的工作非常好。非常感激! – D100 2014-10-20 18:25:14

+0

对不起,还有一个问题。我如何超链接上面表单的所有名字?再次感谢! – D100 2014-10-20 19:17:25

相关问题