Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 根据数组抛出错误重新排列列的宏_Excel_Vba - Fatal编程技术网

Excel 根据数组抛出错误重新排列列的宏

Excel 根据数组抛出错误重新排列列的宏,excel,vba,Excel,Vba,我一直在寻找这样的宏很长一段时间 宏抛出1004错误,列(l+1)。Insert以黄色突出显示 This selection is not valid Copy and past areas cannot overlap unless they'er the same size and shape 有107行,可能代码覆盖了整个列,而不仅仅是107行? 不知道该怎么解决这个问题 谢谢 Sub f() Application.DisplayAlerts = False Application.

我一直在寻找这样的宏很长一段时间

宏抛出1004错误,
列(l+1)。Insert
以黄色突出显示

This selection is not valid

Copy and past areas cannot overlap unless they'er the same size and shape
有107行,可能代码覆盖了整个列,而不仅仅是107行? 不知道该怎么解决这个问题

谢谢

Sub f()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error GoTo Skipit
HeaderNames = Array("RespID", "Subject", "Tag", "Strengths Comments", "Improvement Comments")
For l = 0 To UBound(HeaderNames)
    Columns(Rows(1).Find(HeaderNames(l), , xlValues, xlWhole).Column).Cut
    Columns(l + 1).Insert
Skipit:
Next
ActiveSheet.UsedRange.Offset(, l).ClearContents
Application.ScreenUpdating = True
Application.DisplayAlerts = True
On Error GoTo 0
End Sub

不能在同一位置复制和粘贴。 这应该起作用:

Sub f()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error GoTo Skipit
Dim HeaderNames, l As Long, colFrom As Long

HeaderNames = Array("RespID", "Subject", "Tag", "Strengths Comments", "Improvement Comments")
For l = 0 To UBound(HeaderNames)
    colFrom = Rows(1).Find(HeaderNames(l), , xlValues, xlWhole).Column
    If l + 1 <> colFrom Then Columns(colFrom).Cut: Columns(l + 1).Insert
Skipit:
Next
ActiveSheet.UsedRange.Offset(, l).ClearContents
Application.ScreenUpdating = True
Application.DisplayAlerts = True
On Error GoTo 0
End Sub
subf()
Application.DisplayAlerts=False
Application.ScreenUpdating=False
关于GoTo Skipit的错误
朦胧的头颅,像我一样长,像我一样长
HeaderNames=数组(“响应”、“主题”、“标记”、“优势评论”、“改进评论”)
对于l=0至UBound(前端名称)
colFrom=行(1).查找(HeaderNames(l),xlValues,xlother).列
如果是l+1列,则为列(colFrom)。剪切:列(l+1)。插入
滑雪场:
下一个
ActiveSheet.UsedRange.Offset(,l).ClearContents
Application.ScreenUpdating=True
Application.DisplayAlerts=True
错误转到0
端接头

您是否尝试过输入断点并逐步完成代码?你知道你的For循环的哪个迭代是中断的吗?映射如下
RespID、强项注释、改进注释、主题、标记
RespID、主题、标记、强项注释、改进注释
代码在
主题
上中断,即主题被剪切和粘贴,然后代码停止。最后两个在适当的位置,所以可能代码在试图剪切和粘贴到同一列的地方被破坏了。如果是这样的话,这是一种处理方法吗?