【问题标题】:VBA Error -2147352565(8002000b) and how to copy month/year in 2 separate columns of diff.workbookVBA 错误 -2147352565(8002000b) 以及如何在 diff.workbook 的 2 个单独列中复制月/年
【发布时间】:2022-11-14 21:42:26
【问题描述】:

我是 VBA 世界的新手,只是一个初学者,如果问题很愚蠢,我很抱歉:

从工作表“独占”(工作簿“Time.xlsx”)中,我想将 B1 到 E500 范围内的所有值(字符串、整数)复制到另一个工作簿“Ontime.xlsm”的工作表“ValueTime”中

我做了:

Workbooks("Time.xlsx").Worksheets("Time").Range("B1:B500, E1:E500").Copy

但此错误如下:

“-2147352565(8002000b) 未知名称”

我试图按如下方式解决这个问题:

Dim intcounter As Integer Dim strTransport As Integer
For intcounter = 1 To 255
If Cells("B1:B500, E1:E500", intcounter <> "") Then strTransport = Left(Cells("B1:B500, E1:E500", intcounter), 255) 
Exit For
End If
Next intcounter

但这没有帮助。同样的错误也随之而来。我想做的是excel自动删除/裁剪最后255个字符(在另一个网站上也有人遇到同样的问题,并得出这个错误出现的结论,因为255个字符太多了)但如果每个字符都太多了,那就太好了值可以复制和显示

另一个问题:

我还想将工作簿时间的月份和年份复制到工作簿 OnTime 的工作表“ValueTime”中。 月份和年份应分两列复制

我做了:

Range("E1").Value  = "Month"
Range("F1").Value = "Year"
ActiveChart.ChartTitle.Characters.Text = Format(Range("E1").Value, "mmmm")
ActiveChart.ChartTitle.Characters.Text = Format(Range("F1").Value, "yyyy")

非常感谢您!

【问题讨论】:

    标签: excel vba error-handling


    【解决方案1】:

    你的第一行不是:

    Workbooks("Time.xlsx").Worksheets("Exclusive").Range("B1:E500").Copy
    

    既然你说你是从“独家”表中复制的?如果您没有名为“时间”的工作表,则未知名称是有意义的。如果您的范围是 B1 到 E500,则无需分开,只需 B1:E500 即可。你如何制定它,它只会选择 B1 到 B500 和 E1 到 E500 细胞。

    要将其复制到相应的工作表:

    Workbooks("Time.xlsx").Worksheets("Exclusive").Range("B1:E500").Copy: Workbooks("Ontime.xlsm").Worksheets("ValueTime").Range("A1") 'assuming you don't have anything in A-column yet since you start your month in E
    

    对于月/年,这取决于您的月/年来自哪里。它是您的 OnTime 中的一个日期吗?我会先在评论中询问,但我还不允许。

    编辑:

    Workbooks("Time.xlsx").Worksheets("Exclusive").Range("F2:F500").Copy Destination:= Workbooks("Ontime.xlsm").Worksheets("ValueTime").Range("E1") 'Since you're putting "Month" and "Year" as your headers, I hope your values in "Exclusive" also start in the second row
    Workbooks("Ontime.xlsm").Worksheets("ValueTime").Range("E2:E500").Format = "mmmm"
    Workbooks("Time.xlsx").Worksheets("Exclusive").Range("F1:F500").Copy Destination:= Workbooks("Ontime.xlsm").Worksheets("ValueTime").Range("F1")
    Workbooks("Ontime.xlsm").Worksheets("ValueTime").Range("F2:F500").Format = "yyyy"
    

    所以要格式化,先复制值,然后格式化。请注意,日期的值仍然存在,因此即使在将其格式化为“mmmm”之后,您也可以从技术上将 E 列从您的 Valuetime 复制到 F。 事后看来,将工作簿/工作表设置为变量会更容易读/写,但既然你刚开始,我不想让你不知所措。

    【讨论】:

    • 首先感谢您的回答!你是对的,Exclusive 是正确的工作表名称,我只是输入了错误的名称(我的错!)。我想我解决了这个问题。我忘了激活工作表现在我可以运行我的代码了:-) 但我仍然遇到日期问题。月份和年份是“今天的日期”。我从外部数据库导出实际数据并将其转换为 excel 到工作簿“Time.xlsx”。日期为“日-月-年”数字格式。但月份应显示为字符串或文本,年份应显示为数字。
    • 编辑以包含您的日期格式。希望这种方式很清楚,并且您了解它的作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2022-10-18
    • 2019-09-10
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多