之前写的几篇关于VBA的文章时,处理的只是单一一个单元格,虽然对象是Range。不过今天发现,还需要处理同行相邻多个单元格,于是想,可否把这几个相邻的单元格一起copy到另一张excel表中。
当前A excel表中有:月租、通信费、信息费,分别位于AF\AG\AH列,存放的数据分别是广东省各个地市的。现在Ricki需要把属于某个地市的月租、通信费、信息费copy到B excel表相应地市中,B表中月租、通信费、信息费,分别位于C\D\E列。(其中A表中的地市排序和B表中的地市排序是不一样的)。
其中,使用如下代码会有问题:
For Row = 9 To 29 Step 1
If Range("B" & Row).Value = "广州" Then
Range("AF" & Row & ":AH" & Row).Select
Exit For
End If
Next Row
'Selection.Value = Selection.Value / 10000 *'号是注释
For Each c In Selection.Value
c= c/ 10000
Next c
Selection.Copy
...
Range("C5:E5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
其中的Selection.PasteSpecial因为源数据是公式,而不是数据,所以使用选择性粘贴。
上面代码出现的问题是,B表中的数据和A表中的数据是一样的,即没有除以10000,调试后发现,代码中的c只是一个值传递,不是对象(这也跟Selection.Value有关),并不是引用传递,改为下面的代码,就可以了:
For Each cell In Range("AF" & Row & ":AH" & Row)
cell.Value = cell.Value / 10000
Next cell
代码中的cell是一个对象,也是引用传递。由于是引用传递,因此它会改变源表A中的数值,所以在结尾,使用ActiveWindow.Close SaveChanges:=False,表示不保存修改后的数据。
有空的话,欢迎到
红番薯逛逛
分享到:
相关推荐
DLL文件是一种共享的程序库,它包含了可以由多个程序同时使用的代码和数据。通过调用DLL文件中的函数或过程,VBA可以执行更高级的操作,而无需重新编写这些代码。 在VBA中调用DLL通常需要使用`Declare`语句来声明...
5. **参数传递**:讲解函数参数的作用、类型和传递方式,包括传值和传址的区别。 6. **范围对象和数组**:在处理大量数据时,使用 `Range` 对象和数组可以提高效率,这部分可能详细解释了如何操作这两个数据结构。 7...
8. **引用库**:VBA可以引用外部的DLL或ActiveX控件,以利用更多的功能和组件。 学习VBA不仅可以提升办公软件的使用效率,还可以作为进入更高级编程语言学习的桥梁,因为许多编程概念在这里都有所体现。对于数据...
2. **参数传递**:VBA支持两种参数传递方式:按值(ByVal)和按引用(ByRef)。按值传递不改变原变量值,按引用则会直接影响到原始数据。 3. **变量声明**:在函数内部,需要先声明变量并指定数据类型,如`Dim ...
10. **对象库引用**:添加或更改对象库引用可以让你访问更多的对象、方法和属性。例如,添加Microsoft Word对象库后,可以在VBA中操作Word文档。 通过阅读"excel VBA帮助文件.CHM",你可以深入学习这些概念,并找到...
这个名为“Excel-VBA实用技巧范例-引用工作簿窗口.zip”的压缩包文件很可能是包含一系列关于如何利用VBA在Excel中操作和引用工作簿窗口的实例和教程。 在Excel VBA中,引用工作簿窗口涉及到以下几个关键概念: 1. ...
4. 工作簿间的数据传递:要将数据从一个工作簿复制到另一个,可以使用`Copy`和`Paste`方法,或者直接赋值。如,`Workbooks("Source.xlsx").Worksheets("Sheet1").Range("A1:A10").Copy Destination:=Workbooks(...
3. 工作簿与工作表:掌握Workbook和Worksheet对象,理解如何在VBA中引用和操作工作簿和工作表,包括创建、打开、保存和关闭。 4. 单元格与范围:了解Range对象,学习如何选择、读取和写入单元格或单元格范围的数据,...
3. 命令按钮和文本框事件:在这个例子中,p1子过程接收三个参数,但c被声明为ByVal,这意味着传递的是值而不是引用。因此,子过程中对c的改变不会影响到调用者中的c。所以,文本框Text1最终显示的内容是0。 4. `Do....
- 参数也可以按引用传递,通过`ByRef`关键字实现,这样函数内部对参数的修改会影响到实参。 3. **变量声明**: - 使用`Dim`、`Public`或`Private`声明变量,如`Dim sum As Long`。 4. **运算符**: - VBA支持...
首先,我们需要了解VBA的基本语法和结构。VBA是Excel内置的编程语言,可以让我们编写自定义的宏或脚本来自动化操作。在VBA编辑器中,我们可以通过模块(Module)来编写代码。 要实现不打开文件调用数据,主要涉及...
2. VBA变量与数据类型:掌握不同类型的变量,如数值、字符串、布尔值等,以及它们在编程中的应用。 3. 控制结构:学习条件语句(If...Then...Else)和循环语句(For...Next, Do...Loop),用于实现基于条件的程序...
- **引用单元格和范围的方法**:介绍了如何在VBA代码中引用单个单元格或多个单元格组成的范围。 - **相对引用与绝对引用**:探讨了两种不同的引用方式及其应用场景。 ##### 4. 用户自定义函数 - **创建自定义函数**...
3. 函数与过程:学习如何创建和调用自定义函数和过程,理解参数的传递机制,包括引用参数和值参数的区别。 4. 错误处理和调试:掌握在VBA中如何处理运行时错误,使用错误处理语句来捕获和处理异常,以及如何利用...
安装后,VBA可以引用这个工具包,创建对象并调用其方法,向Web服务发送SOAP请求。 3. **SoapToolkit的使用**:在VBA中,通常会创建一个SoapClient对象,然后设置其属性,如URL指向Web服务的WSDL(Web Service ...
- **参数传递**:了解ByVal和ByRef的区别,前者传值,后者传引用。 3. **工作表与工作簿操作** - **对象模型**:理解Excel对象模型,如Workbook、Worksheet、Range、Cell等,以及如何通过它们进行操作。 - **...
- **参数传递**:函数和子过程可以接受参数,通过`ByVal`或`ByRef`决定参数是按值还是按引用传递。 ### 4. VBA对象模型 - **工作簿(Workbook)**:代表Excel文件,包含一个或多个工作表,可以通过`Worksheets`集合...
VBA支持值传递和引用传递,理解这两种方式的差异有助于编写更加灵活和高效的代码。 VBA还提供了对Excel对象模型的深度访问,第6章可能涉及工作簿、工作表、范围、单元格等对象的操作。学习如何使用这些对象来读取、...
如果想要在外部看到变化,则需要使用`ByRef`关键字显式指定按引用传递。 #### 六、总结 用户自定义类型是VBA中一种强大的功能,它使得程序能够更好地组织复杂的数据结构。通过定义不同类型的数据成员,可以方便地...
- 单元格与范围:介绍Range对象,学习如何引用和操作单元格、行、列和区域。 - 公式与函数:了解如何在VBA中使用Excel内置公式和自定义函数。 3. **VBA事件处理** - 事件驱动编程:讲解Excel中常见的事件,如...