粘贴数组值并正常粘贴

时间:2013-04-02 07:59:05

标签: arrays excel vba excel-vba paste

我今天一直在解决这个VBA计划的问题,它已经运行了好几天,现在它已经开始发臭了。我hav.nt改变了我所知道的任何导致这个问题的东西,因为它只是简单的复制和粘贴,只是将单元格值设置为数组的值。我玩过它并寻找答案,但似乎无法解决它。

Worksheets(1).Select
For i = 1 To N
    Worksheets(1).Cells(3 + i, 1).Value = Current(i)
Next i

For h = 1 To holidays
    Worksheets(h).Select
    Range(Worksheets(h).Cells(4, 6), Worksheets(h).Cells(4 + N, 100)).Select
    Selection.Copy
    Worksheets("Sort Sheet").Select
    Cells(1, 1).Select
    Selection.PasteSpecial
    For f = 1 To N
        For i = 1 To N
        If Position(i) = f Then

            Range(Worksheets("Sort Sheet").Cells(f, 1), Worksheets("Sort Sheet").Cells(f, 100)).Select
            Selection.Copy
            Worksheets(h).Select
            ActiveSheet.Cells(i + 3, 6).Select
            ActiveSheet.PasteSpecial
            Application.CutCopyMode = False

        End If
        Next i
    Next f
Next h
End Sub

存在错误的第一行是ActiveSheet.PasteSpecial,我尝试过普通的粘贴和粘贴,粘贴整行和定义的范围。但似乎没有什么能让它发挥作用。

存在错误的第二行是工作表(1)。细胞(3 + i,1).Value = Current(i), 这一直到今天,所以我不明白为什么它已经停止,当前(i)是一维数组值,这是一个名称,如“TONY BUGGENS”。

整个程序是一个排序程序,因此它对数组中的名称进行排序,然后将它们粘贴到电子表格中的原始名称上。

感谢您的帮助,我确信这可能是我忽略的一些简单。这是一个清晨。

干杯, 艾米

2 个答案:

答案 0 :(得分:0)

请勿使用Activesheet,而是使用以下样式命名工作表:

Thisworkbook.Sheets("Sheetname")

Activesheet最终可能会导致错误 此外,不是复制粘贴,而是以此样式分配值:

Thisworkbook.Sheet("Destination").range("A1:B2").Value = Thisworkbook.Sheet("Source").range("A1:B2").Value

确保源和目标范围始终具有相同的大小 当然,你可以按照你的方式使用细胞。

至于第二个错误,你可以做的最好的事情就是使用VBA“Locals窗口”,它会显示你的局部变量。您的代码不会显示阵列中正在填充的内容,但您可以在“本地”窗口中对其进行验证。您也可以使用:

debug.print current(i) 

验证数组包含的内容。如果数组包含无法分配的值或对象,则需要验证分配给数组的内容

current(i) = <???> 

让我知道它是否解决了您的问题。

答案 1 :(得分:0)

问题是这些工作表有内置的宏,这些宏在工作表中发生了任何变化。这发生在我的程序中,我相信正在清理我的剪贴板,并试图粘贴任何东西。

第二个问题是由于程序自动保护自己。

由于程序员明显没有做好工作,整个电子表格都是一团糟。我已经把它简短的整理了。

感谢所有帮助人员,我很快就会再次需要它。

相关问题