繁体   English   中英

VBA MS 访问第 1 行到最后一列

[英]VBA MS Access Row 1 to last column

我试图弄清楚为什么这段代码每隔一次我在 Access 中运行它就会起作用。

我有一个通过访问查询构建的电子表格,然后导出到 Excel。 然后我运行它来做一些格式化/清理。 (假设选择第 1 行中的单元格,将这些值复制到最后一列(第 1 行),然后将它们粘贴到指定的单元格中。

它在第一次运行时完美运行,但如果我再次运行相同的东西,我会收到调试错误。 调试出现在这一行: .Range(ActiveCell, ActiveCell.END(xlUp).END(xlToRight)).Copy

确切的错误是“对象变量或未设置块变量”

任何帮助将不胜感激。 谢谢!

Dim appExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Dim rng as Range

With myWorkbook.Worksheets("qryAutoBuildFile")
myWorkbook.Sheets("qryAutoBuildFile").Activate
Set rng = Range("A1:CU1").Find("Article").Offset(0, 1)

     rng.Select
    .Range(rng, rng.END(xlUp).END(xlToRight)).Copy
    .Range("A1:CU1").Find("Expr1008").PasteSpecial xlPasteValues
    .Range("A1").Select
End With
    appExcel.CutCopyMode = False

您的代码还有其他几个问题。

  1. Find某些参数需要明确设置。 看这里
  2. 使用 With 块
  3. 考虑可能性Find返回Nothing ,两次
Dim appExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Dim rng as Excel.Range
Dim rngDest as Excel.Range

With myWorkbook.Worksheets("qryAutoBuildFile")
    '.Activate  ' use the With block, not really needed 
    Set rng = .Range("A1:CU1").Find(What:="Article", & _
      LookIn:=xlValues, & _
      LookAt:=xlWhole, & _
      SearchOrder:=xlByRows)
      ' Adjust to suit your needs.  Add MatchByte as well is you require double-byte language support
    If rng is Nothing then
        ' Not found, what now?
    Else
        Set rng = .Range(rng.Offset(0, 1), rng.END(xlToRight)) ' a bit shorter
        Set rngDest = .Range("A1:CU1").Find("Expr1008") 
         ' Don't need to specify Find parameters again, that previously specified onews will be used (unless you want to change them)

        If rngDest Is Nothing Then
            ' Not found, what now?
        Else
            rngDest.Value2 = rng.Value
        End If
    End If
End With
Dim appExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Dim rng as Range

With myWorkbook.Worksheets("qryAutoBuildFile")
myWorkbook.Sheets("qryAutoBuildFile").Activate
Set rng = myWorkbook.Worksheets("qryAutoBuildFile").Range("A1:CU1").Find("Article").Offset(0, 1)

     rng.Select
    .Range(rng, rng.END(xlUp).END(xlToRight)).Copy
    .Range("A1:CU1").Find("Expr1008").PasteSpecial xlPasteValues
    .Range("A1").Select
End With
    appExcel.CutCopyMode = False

暂无
暂无

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

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