Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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从尚未创建的工作表收集数据_Vba_Excel - Fatal编程技术网

使用VBA从尚未创建的工作表收集数据

使用VBA从尚未创建的工作表收集数据,vba,excel,Vba,Excel,我被要求为未填充的excel文件创建摘要工作表。这些是“每月”excel文件,工作表“通常”以周开始日期命名。我说“通常”是因为拼写错误可能会悄悄出现,或者是这样的,不允许在创建图纸之前预测图纸名称。工作表将在相关周开始前创建 我试图做的是,尽管很费劲,但还是要创建一些VBA代码,以便将许多单元格和范围从每个工作表复制到将被隐藏的摘要工作表。工作表都遵循相同的格式,主要信息是:A1作为周开始日期,O4到R4作为4个摘要列标题,N5到N30作为用户名信息。根据工作表中的数据,O5到R30中有计数

我被要求为未填充的excel文件创建摘要工作表。这些是“每月”excel文件,工作表“通常”以周开始日期命名。我说“通常”是因为拼写错误可能会悄悄出现,或者是这样的,不允许在创建图纸之前预测图纸名称。工作表将在相关周开始前创建

我试图做的是,尽管很费劲,但还是要创建一些VBA代码,以便将许多单元格和范围从每个工作表复制到将被隐藏的摘要工作表。工作表都遵循相同的格式,主要信息是:A1作为周开始日期,O4到R4作为4个摘要列标题,N5到N30作为用户名信息。根据工作表中的数据,O5到R30中有计数

我想创建一些代码,将weekstart日期(A1)与每个非空用户名(N5:N30)以及相应行中后面的值一起复制。由于O4到R4中的列标题没有更改,因此这些标题在汇总表中保持不变


恐怕我对vba了解不多。我想我会使用工作表。数一数工作表的数量?我们打算在上修改代码,但我不知道如何确保每行数据都在摘要工作表中的新行上?

使用ozgrid示例,但进行以下更改:

.Range(“A1”)。

.Range(“A”和l)。


然后用更多的问题和你正在使用的实际代码来修改你原来的帖子。

我已经用以下代码修改了ozgrid代码,这些代码可能或多或少与你的查询相关。如果您可以将查询重新表述为一种更为task1、task2的方式,那么就很容易将下面的脚本更改为您想要的内容

下面的脚本只是作为一个模块工作,而不是一个更容易控制的工作表事件,只需创建一个子模块并将其复制粘贴到其中,然后运行它,或者您也可以使用“开发”选项卡在工作表上创建一个要运行的按钮,然后选择链接到宏拆分的窗体或activex按钮

Sub SplitWs()

Dim wSheet As Worksheet, ws As Worksheet
Dim i As Long

Set wSheet = ThisWorkbook.Worksheets(1)

i = 1

    With wSheet
        .Columns(1).ClearContents
        .Cells(1, 1) = "INDEX"
        .Cells(1, 1).Name = "Index"
    End With


    For Each ws In Worksheets
        If ws.Name <> wSheet.Name Then
            i = i + 1
                With wSheet
                    .Range("A1").Name = "Start_" & wSheet.Index
                    .Hyperlinks.Add Anchor:=.Range("A1"), Address:="", _
                    SubAddress:="Index", TextToDisplay:="Back to Index"
                End With

                wSheet.Hyperlinks.Add Anchor:=wSheet.Cells(i, 1), Address:="", _
                SubAddress:="Start_" & wSheet.Index, TextToDisplay:=wSheet.Name
        End If
    Next ws

End Sub
Sub-SplitWs()
将wSheet设置为工作表,ws设置为工作表
我想我会坚持多久
设置wSheet=this工作簿。工作表(1)
i=1
用wSheet
.列(1).ClearContents
.单元格(1,1)=“索引”
.Cells(1,1).Name=“索引”
以
对于工作表中的每个ws
如果ws.Name wSheet.Name,则
i=i+1
用wSheet
.Range(“A1”).Name=“开始”&wSheet.Index
.Hyperlinks.Add锚定:=.Range(“A1”),地址:=“”_
子地址:=“索引”,文本显示:=“返回索引”
以
wSheet.Hyperlinks.Add锚点:=wSheet.Cells(i,1),地址:=“”_
子地址:=“开始”&wSheet.Index,TextToDisplay:=wSheet.Name
如果结束
下一个ws
端接头
我还将“l”变量更改为更易于阅读的“I”

希望能对大家有所帮助,否则评论的东西要修改

帕斯卡