Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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
Excel VBA处理和粘贴许多形状现在在Windows 10中出现错误,但在2016年没有_Excel_Vba - Fatal编程技术网

Excel VBA处理和粘贴许多形状现在在Windows 10中出现错误,但在2016年没有

Excel VBA处理和粘贴许多形状现在在Windows 10中出现错误,但在2016年没有,excel,vba,Excel,Vba,我是VBA的新手,但总能从阅读论坛中找到解决方案 我现在有一个无法解决的问题,我的公司最近从Windows 2016切换到了Windows 10(幸运的是,目前我仍然有两台笔记本电脑),但我在旧版本中开发的一些Excel VBA工具中遇到了代码不一致错误的问题 我的同事也有这个问题,但通过禁用和启用丢失的库,成功地解决了他的问题。。我尝试过这个,但没有解决 错误 基本上,我的工具通过复制和粘贴形状、调整形状大小并在指定的单元格位置重命名形状来“绘制”项目的甘特图。。以前的版本完全没有问题只花了几

我是VBA的新手,但总能从阅读论坛中找到解决方案

我现在有一个无法解决的问题,我的公司最近从Windows 2016切换到了Windows 10(幸运的是,目前我仍然有两台笔记本电脑),但我在旧版本中开发的一些Excel VBA工具中遇到了代码不一致错误的问题

我的同事也有这个问题,但通过禁用和启用丢失的库,成功地解决了他的问题。。我尝试过这个,但没有解决

错误

基本上,我的工具通过复制和粘贴形状、调整形状大小并在指定的单元格位置重命名形状来“绘制”项目的甘特图。。以前的版本完全没有问题只花了几秒钟。。Windows 10完全不一致。。有时,它会在没有问题的情况下运行(比如说20%的时间),然后它会在完全不同的代码区域出错

我得到的错误是“运行时错误1004工作表类的粘贴方法失败”

我不知道为什么我的代码会在旧的Windows中运行find,而不是Windows 10。。但这可能是因为我的代码有点垃圾,选择形状和单元格等等,有时它就是无法处理

以下是我正在使用的代码示例,如有任何建议,将不胜感激:

Sub DrawDevelopment()

Dim rngData As Range

Set rngData = Sheets("Gantt Extract").Range("a4:a300")

    For Each G In rngData


        G_Address = G.Offset(0, 39).Value
        G_size = G.Offset(0, 40).Value
        G_Scheme = G.Offset(0, 1).Value

        If G_Address <> "" Then

            Sheets("Gantt").Shapes("Development").Select
            Selection.Copy
            Range(G_Address).Select
            Sheets("Gantt").Paste
            Selection.Name = "Delete" & (G_Scheme)
            With Selection.ShapeRange
                .Width = G_size
            Selection.ShapeRange.IncrementTop 4
    
            Selection.ShapeRange.ZOrder msoBringToFront
                
           End With
        End If

    Next G
    

End Sub
Sub-DrawDevelopment()
暗rngData As范围
设置rngData=图纸(“甘特图提取”)。范围(“a4:a300”)
对于rngData中的每个G
G_地址=G偏移量(0,39).值
G_size=G.偏移量(0,40).值
G_方案=G偏移量(0,1).值
如果G_地址为“”,则
表格(“甘特图”)。形状(“展开”)。选择
选择,复制
范围(G_地址)。选择
表格(“甘特图”)。粘贴
Selection.Name=“Delete”&(G_方案)
带Selection.shaperage
.宽度=G_尺寸
Selection.ShapeRange.incrementTop4
Selection.shaperage.ZOrder msoBringToFront
以
如果结束
下一个G
端接头

虽然并非特定于Windows 10,但可能是某些原因导致了一个问题,该问题通过在此处使用非限定的
Select
语句而暴露出来

我尝试在没有
Select
的情况下重新编写它-但是为了测试它,我不得不在它与我的形状一起工作之前去掉
shaperage
的用法

可能有更好的方法来引用粘贴的形状,但我无法立即看到,因此这看起来有点凌乱,但在我的Win10机器上工作:

Sub DrawDevelopment()

    Dim rngData As Range
    
    Dim shtCopyFrom As Worksheet
    Dim shtCopyTo As Worksheet
    
    Set shtCopyFrom = Sheets("Gantt")
    Set shtCopyTo = Sheets("Gantt Extract")
    Set rngData = shtCopyTo.Range("a4:a300")
        
    For Each g In rngData.Cells
        G_Address = g.Offset(0, 39).Value
        G_size = g.Offset(0, 40).Value
        G_Scheme = g.Offset(0, 1).Value
        If G_Address <> "" Then
            shtCopyFrom.Shapes("Development").Copy
            With shtCopyTo
                .Paste
                Set objShape = .Shapes(.Shapes.Count)
                objShape.Name = "Delete" & (G_Scheme)
                Set pasteCell = .Range(G_Address)
                With objShape
                    .Width = G_size
                    .IncrementTop 4
                    .ZOrder msoBringToFront
                    .Left = pasteCell.Left
                    .Top = pasteCell.Top
                End With
            End With
        End If
    Next g
End Sub
Sub-DrawDevelopment()
暗rngData As范围
Dim shtCopyFrom As工作表
Dim shtCopyTo As工作表
设置shtCopyFrom=图纸(“甘特图”)
设置shtCopyTo=图纸(“甘特图提取”)
设置rngData=shtCopyTo.Range(“a4:a300”)
对于rngData.细胞中的每个g
G_地址=G偏移量(0,39).值
G_size=G.偏移量(0,40).值
G_方案=G偏移量(0,1).值
如果G_地址为“”,则
shtCopyFrom.Shapes(“开发”).Copy
用shtCopyTo
粘贴
设置对象形状=.Shapes(.Shapes.Count)
objShape.Name=“Delete”&(G_方案)
设置粘贴单元=.Range(G_地址)
呈椭圆形
.宽度=G_尺寸
.递增前4名
佐德·姆索布林托弗先生
.Left=粘贴单元格.Left
.Top=粘贴单元格.Top
以
以
如果结束
下一个g
端接头