繁体   English   中英

为单元格赋值时出现 Excel VBA 运行时错误 6

[英]Excel VBA Run time error 6 when assigning value to cell

我使用了很长时间的一个子程序由于某种原因停止工作了。 当我尝试为单元格赋值时,下面的简化宏会导致“运行时错误‘6’:溢出”。 单元格 C2 中的值已分配给 cValue,但在单元格 C3 中设置时出现错误。

Private AWB As Workbook
Private cValue As Double

Sub Test()

    Set AWB = ThisWorkbook
    Sheets("Import").Select

    Range("C2").Select
    cValue = ActiveCell.Value

    ActiveCell.Offset(1, 0).Select
    ActiveCell.Value = cValue

End Sub
Sub Solution1()

    'Set AWB = ThisWorkbook
    
    With Worksheets("Import").Range("C2")
        cValue = .Value2
        .Offset(1, 0).Value2 = cValue
    End With
    
End Sub
    ' *** <OR> ***
Sub Solution2()
    With Worksheets("Import").Range("C2")
        .Offset(1, 0).Value2 = .Value2
    End With
End Sub

如果您仍然遇到麻烦,请尝试将您的cValue类型更改为as variant

复制单元格值

  • 如果您正在处理包含此代码的工作簿,请在需要时使用ThisWorkbook指定它。 如果它在一百个程序中,就做一百次。
  • 当您不能以不同的方式处理事情时,在过程之外使用变量是最后的手段,而不是写更少的字符。
  • 通过使用变量(而不是使用Select或任何类型的Active )来限定您的对象,以避免长而不可读的表达式,例如ThisWorkbook.Sheets("Import").Range("C2").Offset(1).Value = ThisWorkbook.Sheets("Import").Range("C2").Value你可以实际使用而不是发布的代码(不推荐)。
Option Explicit

Sub Test()
    
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    Dim ws As Worksheet: Set ws = wb.Sheets("Import")
    
    Dim sCell As Range: Set sCell = ws.Range("C2")
    Dim dCell As Range: Set dCell = sCell.Offset(1)
    
    dCell.Value = sCell.Value
    
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM