【问题标题】:Copy value form sheet, use as worksheet names (in a loop) - VBA Excel Macro复制值表单,用作工作表名称(在循环中) - VBA Excel 宏
【发布时间】:2016-06-20 15:56:54
【问题描述】:

我正在尝试从每个单元格中一个一个地复制一行中的值,然后将这些值一个一个地用作工作表名称。我遇到的一个问题是跳过了第一批工作表,所以我试图隐藏那些我不想重命名的工作表。应重命名所有其他工作表(其中 34 个)。

在收到一条错误消息“运行时错误 '1004'L Method 'PasteSpecial' of object'_Worksheet' 失败之前,我可以使用 F8 一直获取它“ws.PasteSpecial xlPasteValues”。

我也尝试过使用“Activesheet.PasteSpecial xlPasteValues”,但它给出了同样的错误。

非常感谢任何建议,这让我发疯。 :) 我的备份计划只是使用宏记录并手动进行每次重命名,但这不是一个非常优雅或简单的代码,所以我不想这样做。

代码如下:

Dim ws As Worksheet
Dim TitleID As String
Dim TID As String


Sheets("SheetName1").Activate
Set ws = ActiveSheet

Dim rng As Range, cell As Range

Set rng = ws.Range("C5", "AJ5")

For Each cell In rng
    cell.Copy
    Sheets("SheetName1").Visible = False
    ws.Next.Select
    ws.PasteSpecial xlPasteValues
Next cell

【问题讨论】:

    标签: vba excel macros


    【解决方案1】:

    如果我正确理解了您的问题,那么下面的代码应该可以工作。

    Dim ws As Worksheet
    Set ws = Sheets("SheetName1")
    
    Dim rng As Range, cell As Range
    Set rng = ws.Range("C5","AJ5") 
    
    Dim i as Integer 
    i = 5 'this is an arbitrary number, change to whatever number of worksheets 
          'you wish to exclude that are at the beginning (left most side) of your workbook
          'also assumes "SheetName1" is before this number.
    
    For Each cell In rng
        Sheets(i).Name = cell.Value
        i = i + 1
    Next cell
    

    【讨论】:

    • 是的!它完美地工作。非常感谢,我对 Excel 宏/VBA 很陌生,所以每一步都是一个奋斗/学习的机会。 :)
    • 如果您使用两个参数调用Range,它会将它们用作左上角和右下角,因此Range("C5","AJ5")Range("C5:AJ5") 相同。 Range("C5,AJ5") 将只是两个单元格。
    • @arcadeprecinct - 谢谢。我知道我觉得我在用那个评论欺骗自己。我会编辑它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    相关资源
    最近更新 更多