Excel 使用命令按钮自动生成不同的工作表

Excel 使用命令按钮自动生成不同的工作表,excel,vba,cell,Excel,Vba,Cell,我正在尝试使excel工作簿由5张工作表组成。有一个摘要页面,我在其中包括一个命令按钮,基本上允许上传一个文件,然后填写在特定的表。 我得到的错误是没有在指定的表格中填充单元格,而是在摘要页面(即带有按钮的页面)中填充单元格。这是我到目前为止写的代码。 下面是一个示例,我试图在第3页中定向扩展名为SIG的文件 Set fd=Application.FileDialog(msoFileDialogOpen) 有fd .AllowMultiSelect=True .过滤器 .Filters.Add“

我正在尝试使excel工作簿由5张工作表组成。有一个摘要页面,我在其中包括一个命令按钮,基本上允许上传一个文件,然后填写在特定的表。 我得到的错误是没有在指定的表格中填充单元格,而是在摘要页面(即带有按钮的页面)中填充单元格。这是我到目前为止写的代码。 下面是一个示例,我试图在第3页中定向扩展名为SIG的文件

Set fd=Application.FileDialog(msoFileDialogOpen)
有fd
.AllowMultiSelect=True
.过滤器
.Filters.Add“所有文件”,“***”
.Filters.Add“ID Files”,“*.ID”,1
.FilterIndex=1
.Title=“选择SSI标识文件”
.InitialFileName=“”
如果.Show=-1,则
重拨选定路径(.SelectedItems.Count)
对于I=0,选择editems.Count-1
SelectedPath(I)=.SelectedItems(I+1)
关闭#1
如果右$(selectedPaths(I),3)=“SIG”,则
第(3)页。选择
打开所选路径(I)作为#1输入
x=4
txt=输入(LOF(1),1)
使用RegExp
.Pattern=“\B/*”
.Global=True
.IgnoreCase=False
txt=.Replace(txt,“”)
以
使用RegExp
.Pattern=“S[0-9A-Z][0-9A-Z][0-9]+”
.Global=True
设置匹配项=.Execute(txt)
比赛中的每一场比赛
调试。打印匹配。值
如果x Mod 30=0,则
x=x+4
如果结束
单元格(x,1)=匹配
x=x+1
单元格(x,1)=匹配
如果x Mod 30 0,则
x=x+1
如果结束
下一个
以
如果结束
下一个
如果结束
以
端接头

谢谢你的帮助

我明白了,您先选择工作表,然后填充单元格。这不是最安全的方法

尝试使用单元格的完整引用

你的部门

    For Each Match In matches
        Debug.Print Match.Value
        If x Mod 30 = 0 Then
                x = x + 4
         End If
                Cells(x, 1) = Match
               x = x + 1
               Cells(x, 1) = Match
        If x Mod 30 <> 0 Then
                x = x + 1
        End If
    Next
匹配项中的每个匹配项的

调试。打印匹配。值
如果x Mod 30=0,则
x=x+4
如果结束
单元格(x,1)=匹配
x=x+1
单元格(x,1)=匹配
如果x Mod 30 0,则
x=x+1
如果结束
下一个
应该是这样的:

    For Each Match In matches
        Debug.Print Match.Value
        If x Mod 30 = 0 Then
                x = x + 4
         End If
               ThisWorkbook.Sheets(3).Cells(x, 1) = Match
               x = x + 1
               ThisWorkbook.Sheets(3).Cells(x, 1) = Match
        If x Mod 30 <> 0 Then
                x = x + 1
        End If
    Next
匹配项中的每个匹配项的

调试。打印匹配。值
如果x Mod 30=0,则
x=x+4
如果结束
此工作簿.Sheets(3).单元格(x,1)=匹配
x=x+1
此工作簿.Sheets(3).单元格(x,1)=匹配
如果x Mod 30 0,则
x=x+1
如果结束
下一个
我希望这会有帮助,我认为这真的很简单

    For Each Match In matches
        Debug.Print Match.Value
        If x Mod 30 = 0 Then
                x = x + 4
         End If
               ThisWorkbook.Sheets(3).Cells(x, 1) = Match
               x = x + 1
               ThisWorkbook.Sheets(3).Cells(x, 1) = Match
        If x Mod 30 <> 0 Then
                x = x + 1
        End If
    Next