循环下拉的宏并为每个下拉选择创建工作表

时间:2016-05-17 22:38:07

标签: excel vba excel-vba

所以我有一个名为“商业计划”的仪表板,我在单元格A2中有一个下拉列表,它是一个名为“设施”的范围的下拉选择,所有仪表板数据都是从查找中删除的。我想要做的是首先创建一个新工作簿而不是每个下拉选择的新选项卡,其中选项卡格式相同但数据粘贴为值。我尝试了下面创建的代码,将每个下拉选项保存为PDF,但我没有成功。任何有关如何使此代码正常工作的见解都会很棒。

  Sub Worksheet_Generator()

    Dim cell As Range
    Dim wsSummary As Worksheet
    Dim counter As Long

    Set wsSummary = Sheets("Business Plans")

    For Each cell In Worksheets("dd").Range("$C3:$C75")
        If cell.Value = "" Then
            counter = counter + 1
            Application.StatusBar = "Processing file: " & counter & "/1042"
        Else
            counter = counter + 1
            Application.StatusBar = "Processing file: " & counter & "/1042"

            With wsSummary
                .Range("$A$2").Value = cell.Value
                ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
                ActiveSheet.Copy
                With ActiveSheet.UsedRange
                    .Value = .Value
                End With
            End With
        End If
    Next cell

Set wsSummary = Nothing
End Sub

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找类似下面的内容(改编自copying-dynamic-rows-into-new-workbook-and-save-it)。

      public partial class Startup
      {
       public void Configuration(IAppBuilder app)
       {
        ConfigureAuth(app);
        createRolesandDefaultUsers();
       }
    // In this method we will create default User roles and Super Admin user for login
    private void createRolesandDefaultUsers()
    {
        ApplicationDbContext context = new ApplicationDbContext();

        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

        // In Startup creating first Super Admin Role and creating a default Super Admin User
        **if (!roleManager.RoleExists("Super Admin"))** //getting error at this line.
        {

编辑:

由于我没有看到您的数据,如果需要进行一些修改,我不会感到惊讶。

首先,我尝试“框架”包含数据的工作表“dd”的范围(### Hardcode ### bit),定义输出的路径,并标识可以过滤的列与指定范围“设施”对应的值。

我检索命名范围“Facilities”(进入uKeys)的值,​​并创建输出工作簿(newBook)。然后我们从for循环中的uKeys遍历每个值(uKey)。在循环中,我为uKey应用了自动过滤器。过滤后,在newBook中创建一个工作表(newWs),并将过滤后的工作表“dd”复制粘贴到newWs中。然后我们关闭自动过滤器,工作表“dd”返回到未过滤状态。

最后,我们将newBook保存到所需位置,然后关闭它。