7

基本上我希望将一个位置的列移动到另一个位置。

561  DISK_GROUP_003 0   545     1
561  Disk_Group_iS  95  84144   80210
561  DISK_GROUP_iS  99  26335   26304
1415    t1_200ea    93  8804    8203
1415    t2_30010k   35  59846   21121
1415    t3_1tb72k   19  184941  36590
1415    t3_3tb72k   86  258635  224328
5018    t1_200ea    98  9905    9802
5018    t2_30015k   89  39987   35986
5018    t2_60015k   67  59984   40700
5018    t3_1tb72k   89  87567   78807
5018    t3_2tb72k   84  94412   79620

我需要将第 3 列移到右侧的末尾。

这是我到目前为止所尝试的:

Sub moveColumn()

With ActiveSheet        
        Excel.Columns(3).Cut
        Excel.Columns(6).PasteSpecial
End With

End Sub

但是这个方法不起作用,因为它得到一个运行时错误'1004'。

任何帮助将非常感激。

4

3 回答 3

17

对于那些想知道的人,可以在不替换目标列的内容的情况下执行此操作。

例如,要剪切 B 列并将其插入 F 列的左侧,您可以使用

Columns("B").Cut
Columns("F").Insert Shift:=xlToRight

您还可以用列索引替换命名的列标题,以品尝(如此Columns("B")成为Columns(2)

于 2014-05-06T11:39:36.903 回答
9

Pastespecial 不适用于 Cut。你可以这样做:

Columns(3).Cut Range("F1")
Columns(3).Delete Shift:=xlToLeft 'if you want to delete the empty column
于 2013-10-30T16:50:34.663 回答
6

给出的其他答案的问题是剪切/粘贴技术使用剪贴板 - 覆盖其中的任何内容,并且如果另一个也使用剪贴板的程序正在运行(例如另一个实例相同的 VBA 项目)。

相反,请执行以下操作:

Application.CutCopyMode = False ' don't want an existing operation to interfere
Columns("F").Insert XlDirection.xlToRight
Columns("F").Value = Columns("B").Value ' this would be one greater if to the right of F
Columns("B").Delete

请注意,如果有对现有列的引用,它们将中断并且不会被更新。

于 2015-11-11T18:19:26.320 回答