vba – 为什么Range工作,但不是Cell?

栏目: ASP.NET · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/17733541/why-does-range-work-but-not-cells

我试图通过将值从一个范围分配到另一个范围来将一些数据从一个工作簿移动到另一个工作簿.当我使用普通的Range语法指定目标范围(Range(“A1:B2”))时,我的代码可以正常工作,但如果我尝试使用Range,Cells语法(范围(单元格(1,1),单元格(2) ,2)))我的代码不起作用.

我激活目标工作簿(ActiveWorkbook)并在源工作簿(ThisWorkbook)中运行代码.

此代码有效:

ActiveWorkbook.Worksheets(1).Range("A1:B2").Value _
= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value

但是这段代码没有:

ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value _
= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value

我得到的错误是运行时错误’1004’:应用程序定义的错误或对象定义的错误.

有谁知道为什么使用细胞对象导致我的问题,或者是否有其他问题我不知道?

问题是Cell是不合格的,这意味着这些单元格所引用的表单根据代码的位置而不同.无论何时调用Range或Cells或Rows或UsedRange或任何返回Range对象的内容,并且您没有指定它所在的工作表,工作表将根据以下内容进行分配:

>在工作表的类模块中:该工作表无论激活什么

>在任何其他模块中:ActiveSheet

您限定了Range引用,但Cells引用是不合格的,可能指向Activesheet.这就像写作

ThisWorkbook.Worksheets(1).Range(ActiveSheet.Cells(1, 1), ActiveSheetCells(2, 2)).Value

除非ThisWorkbook.Worksheets(1)恰好是活动的,否则这当然没有任何意义.我经常喜欢使用With块,以确保一切都完全合格.

With Sheets(1)
    .Range(.Cells(1,1), .Cells(2,2)).Value = "something"
End With

但是你引用了两个不同的表,所以你最好使用短表变量,如:

Dim shSource As Worksheet
Dim shDest As Worksheet

Set shSource = ThisWorkbook.Worksheets(1)
Set shDest = Workbooks("myBook").Worksheets(1)

shDest.Range(shDest.Cells(1, 1), shDest.Cells(2, 2)).Value = _
    shSource.Range(shSource.Cells(1, 1), shSource.Cells(2, 2)).Value

但实际上,如果您要对Cell参数进行硬编码,您可以将其清理干净

shDest.Cells(1, 1).Resize(2, 2).Value = shSource.Cells(1, 1).Resize(2, 2).Value

翻译自:https://stackoverflow.com/questions/17733541/why-does-range-work-but-not-cells


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

测试驱动开发

测试驱动开发

Kent Beck / 孙平平、张小龙 / 中国电力出版社 / 2004-4-1 / 28.00元

《测试驱动开发》(中文版)设想把编程看成是转动曲柄从井里提一桶水上来的过程。如果水桶比较小,那么仅需一个能自由转动的曲柄就可以了。如果水桶比较大而且装满水,那么还没等水桶全部被提上来你就会很累了。你需要一个防倒转的装置,以保证每转一次可以休息一会儿。水桶越重,防倒转的棘齿相距越近。测试驱动开发中的测试程序就是防倒转装置上的棘齿。一旦我们的某个测试程序能工作了,你就知道,它从现在开始并且以后永远都可......一起来看看 《测试驱动开发》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试