具有下标超出范围错误的Excel VBA剪切和粘贴功能

瑞奇
    Sub CutandPaste()
    With ActiveSheet
        Dim i As Long
        Dim Sheet1 As Worksheet
        Dim Sheet2 As Worksheet

        Set mainsheet = ActiveWorkbook.Sheets("Sheet1")
        Set subsheet = ActiveWorkbook.Sheets("Sheet2")

        endrow = mainsheet.Range("A" & mainsheet.Rows.Count).End(xlUp).Row

            For i = 25 To endrow
                If mainsheet.Cells(i, "J") <> "" Or mainsheet.Cells(i, "L") <> "" Or mainsheet.Cells(i, "N") <> "" Then
                    mainsheet.Range(Cells(i, "B"), Cells(i, "O")).Cut Destination:=subsheet.Range(Cells(i + 25, "B"), Cells(i + 25, "O")).Paste
                    mainsheet.Range(Cells(i, "B"), Cells(i, "O")).Delete '~~> if you want to delete
                    i = i + 1
                End If
            Next
    End With
End Sub

我想用以下功能编写程序

如果Sheet1中的单元格(“ J” i)或单元格(“ L” i)或单元格(“ N” i)不为空,则i等于任何整数

然后在工作表1中将Cell(“ B” i)切割为Cell(“ O” i)到Sheet2中的Cell(“ B” i + 25)切割为Cell(“ O” i + 25),其中i等于任何整数

但是,据说我的代码超出范围。

为什么会这样,我该如何解决?

非常感谢

    Sub CutandPaste()
    With ActiveSheet
        Dim i As Long
        Dim Sheet1  As Worksheet
        Dim Sheet2 As Worksheet

        Set mainsheet = ActiveWorkbook.Sheets("Sheet1")
        Set subsheet = ActiveWorkbook.Sheets("Sheet2")

        endrow = mainsheet.Range("A" & mainsheet.Rows.Count).End(xlUp).Row

        For i = endrow To 25 Step -1

                If mainsheet.Cells(i, "J") <> "" Or mainsheet.Cells(i, "L") <> "" Or mainsheet.Cells(i, "N") <> "" Then
                    mainsheet.Range(mainsheet.Cells(i, "B"), mainsheet.Cells(i, "O")).Cut Destination:=subsheet.Range(subsheet.Cells(i + 56, "B"), subsheet.Cells(i + 56, "O")).Paste
                    mainsheet.Range(mainsheet.Cells(i, "B"), mainsheet.Cells(i, "O")).Delete '~~> if you want to delete

                End If
            Next
    End With
End Sub

最新版本:

        Sub CutandPaste()
    With ActiveSheet
        Dim i As Long
        Dim Sheet1  As Worksheet
        Dim Sheet2 As Worksheet

        Set mainsheet = ActiveWorkbook.Sheets("Sheet1")
        Set subsheet = ActiveWorkbook.Sheets("Sheet2")

        endrow = mainsheet.Range("A" & mainsheet.Rows.Count).End(xlUp).Row
        Bendrow = subsheet.Range("B" & mainsheet.Rows.Count).End(xlUp).Row + 1

        For i = endrow To 25 Step -1
                If mainsheet.Cells(i, "J") <> "" Or mainsheet.Cells(i, "L") <> "" Or mainsheet.Cells(i, "N") <> "" Then
                    mainsheet.Range(mainsheet.Cells(i, "B"), mainsheet.Cells(i, "O")).Cut Destination:=subsheet.Cells(Bendrow, "B")
                    mainsheet.Range(mainsheet.Cells(i, "B"), mainsheet.Cells(i, "O")).Delete '~~> if you want to delete
                    Bendrow = Bendrow + 1
                End If
            Next
    End With
End Sub

MainSheet数据

子表数据

用户名

问题是,Destination参数Range.CopyRange.Cut需要是一个范围。您已将其设置为Paste范围方法。

不正确的

mainsheet.Range(mainsheet.Cells(i,“ B”),mainsheet.Cells(i,“ O”))。剪切目标:= subsheet.Range(subsheet.Cells(i + 56,“ B”),subsheet。单元格(i + 56,“ O”))。粘贴

正确的

mainsheet.Range(mainsheet.Cells(i,“ B”),mainsheet.Cells(i,“ O”))。剪切目标:= subsheet.Cells(i + 56,“ B”)

我使用子范围重构了您的代码。我认为它看起来更干净。

这是定义相同范围的一些不同方法

Range(Cells(i,“ A”),Cells(i,“ O”))Cells(i,“ A”)。Resize(1,15)Rows(i).Range(“ A1:O1”)Rows( i).Range(“ A1:O1”)Rows(i).Resize(1,15)Rows(2).Columns(“ A:O”)

Sub CutandPaste()

    Dim i As Long
    Dim mainsheet As Worksheet
    Dim subsheet As Worksheet

    Set mainsheet = ActiveWorkbook.Sheets("Sheet1")
    Set subsheet = ActiveWorkbook.Sheets("Sheet2")

    With mainsheet
        endrow = .Range("A" & .Rows.Count).End(xlUp).Row

        For i = endrow To 25 Step -1
            If .Cells(i, "J") <> "" Or .Cells(i, "L") <> "" Or .Cells(i, "N") <> "" Then
                .Rows(i).Resize(1, 15).Cut Destination:=subsheet.Cells(i + 56, "B")
                .Rows(i).Resize(1, 15).Delete    '~~> if you want to delete
            End If
        Next
    End With
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA/Excel:“下标超出范围”错误

来自分类Dev

此Excel VBA脚本中的下标超出范围错误

来自分类Dev

Excel 2013 VBA:下标超出范围(错误9)

来自分类Dev

剪切和粘贴范围vba

来自分类Dev

下标超出范围VBA Excel数组

来自分类Dev

Excel VBA,剪切粘贴添加和编辑文本

来自分类Dev

VBA下标超出范围和错误9

来自分类Dev

Excel VBA-运行时错误'9',下标超出范围

来自分类Dev

Excel VBA无法修复运行时错误“ 9”:下标超出范围

来自分类Dev

VBA-下标超出范围错误导致Excel崩溃

来自分类Dev

下标超出范围,VBA

来自分类Dev

VBA:下标超出范围

来自分类Dev

复制粘贴会产生错误:下标超出范围

来自分类Dev

Excel VBA:下标超出范围的代码修复

来自分类Dev

Excel VBA 下标在 00:00 拆分时超出范围

来自分类Dev

vba错误编号9下标超出范围

来自分类Dev

VBA-公共阵列错误-下标超出范围

来自分类Dev

数组中的VBA随机元素,下标超出范围错误

来自分类Dev

VBA中ReDim的下标超出范围(错误9)

来自分类Dev

VBA下标超出范围-错误9故障

来自分类Dev

vba中的下标超出范围(错误9)

来自分类Dev

数组中的VBA随机元素,下标超出范围错误

来自分类Dev

VBA-下标超出范围

来自分类Dev

VBA下标超出范围,代码9

来自分类Dev

VBA-下标超出范围

来自分类Dev

下标超出范围的VBA变体数据

来自分类Dev

简单地剪切和粘贴excel VBA:不一致且奇怪的结果

来自分类Dev

Excel VBA - .xlam (AddIn) 抛出下标超出范围错误 9 但一切都像 xlsm 一样?

来自分类Dev

“下标超出范围”错误,需要复制粘贴标题行来创建pivot