VBA类模块--创建Table类(1)

VBA开发接触了两个月,自认为拜托了新手期,遇到很多问题,也有一些心得。根据开发中遇到的问题开始陆续总结。

开发过程中,遇到程序运行过程中的存储大量临时数据问题,这些数据只是用于下一步的计算,不需要呈现在最后的结果中。为了后面步骤使用和管理方便,创建了Table类模块。

类模块:CTable

 1 Option Explicit
 2
 3 ‘====================================
 4 ‘名称: CTable
 5 ‘功能: 描述一个Excel表格区域
 6 ‘====================================
 7
 8 Public strName As String            ‘ 表名
 9 Public strAddress As String         ‘ 地址
10 Public rngStart As Range            ‘ 开始单元格
11 Public rngEnd As Range              ‘ 结束单元格
12 Public iColumns As String           ‘ 列数

类模块名:CTable,下面这些Public就是类的属性了,这个类看起来跟自定义类型没什么区别,没错,这已经是一个类模块了。

普通模块:Data

Option Explicit

‘============================
‘名称: CreateTable
‘功能: 创建表
‘参数: strTableName: 表名
‘      astrColumnNames:列名数组
‘返回: 表
‘============================
Function CreateTable(ByRef strTableName As String, astrColumnNames As Variant) As CTable
    Dim clsStuTab As New CTable         ‘ 声明并创建一个对象
    clsStuTab.strAddress = "Sheet2!$A$1"
    Set clsStuTab.rngStart = Range(clsStuTab.strAddress)
    clsStuTab.strName = strTableName
    Dim i, j
    With clsStuTab.rngStart
        .Offset(0, 0).Value = clsStuTab.strName
        j = 0
        For i = LBound(astrColumnNames) To UBound(astrColumnNames)
            .Offset(1, j).Value = astrColumnNames(i)
            j = j + 1
        Next
        clsStuTab.iColumns = j
        Set clsStuTab.rngEnd = .Offset(1, j - 1)
    End With

    clsStuTab.rngStart.Offset(0, 1).Value = clsStuTab.rngEnd.Address
    Set CreateTable = clsStuTab
End Function

Sub 创建学生表()
    Dim clsStudentTable As CTable       ‘ 声明一个对象
    Dim astrColumnNames As Variant

    astrColumnNames = Array("id", "Name", "Gender", "StuID", "Class")
    Set clsStudentTable = CreateTable("学生表", astrColumnNames)
End Sub

运行结果:

时间: 2024-10-15 00:38:23

VBA类模块--创建Table类(1)的相关文章

Python 【类的创建和类的实例化】

一.类的创建 #类的实例化 class Dog(object):#object类,o小写 type = "宠物" #类变量 def __init__(self,name,age): #初始化方法 self.name = name #实例变量(属性) self.age = age self.run() def run(self): #普通方法 print(self.name,"在咆哮!") def eat(self,speed): print(self.name,&q

oop思维意识,类 模块命名空间,类扩展之继承 、组合、mixin三种模式

python的书都是讲怎么创建类怎么实例化对象,一般会用使用了,但还不具备这种编程意识.这是从python学习手册第四版节选出来的,书中说oop不仅是一种技术,更是一种经验.学习大神的看法,为什么需要oop意识.

13)添加一个类来创建别的类(未完成)

1)首先在我们的全局区有一个这样的全局变量  , 2)但是  每次我都要改我的这个new的子类 比如  我要是创建 俄罗斯方块  就是    new SquareCtrl 我要是创建贪吃蛇     就是 new   SnakeCtrl 3)还有一种方法  就是  我用一个函数指针,通过给这个函数指针赋值,来创建不同的子类. 4)所以 要将函数指针的初始化写到.cpp文件中       为啥要静态  因为  我不用创建那个CGameCtrl类  就可以创建对象. 5)但是这样做 原文地址:http

VB-创建类模块DLL文件

最近需要调用MSCOMM32.OCX控件,但是ABAP调用过程中发现无法同时发送多条记录,则需调整实现方式: a.创建DLL文件封装MSCOMM控件相关属性及方法 b.系统注册DLL文件 c.ABAP调用DLL文件相关属性及方法 这一部分内容主要是将VB类模块的创建过程记录下: 1.打开VB,创建ActiveX DLL文件 2.修改工程名为MSCommPrj 3.修改类模块名称为msCommCls 4.引用MSCOMM32.OCX组件 菜单:工程->引用->浏览 查找MSCOMM32.OCX文

【转】VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

原文网址:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下,生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 因为鸡啄米给大家的例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的.大家用过VC++6.0

java代理的学习,通过类实现接口来实现代理。proxy来创建动态类,和InvocationHandler接口的实现,和工作原理。

1.java自带的proxy类可以创建动态类,如果一个类实现了一个接口那么久可以为这个类创建代理. 2.代理:就是当用户要调用一个类的方法时,用户可以通过调用代理,代理通过接口调用原来的类的方法,代理在把方法给用户前可以添加一些方法,如错误日志,用户类的方法运行的时间来监听类方法的性能.当代理完成时候就是当代理调用方法时候,就会启动InvocationHandler里的invoke方法.用户并不知道用户要为哪个类带理,因此在框架中用配置文件来获取代理的类,用户需要用框架时候就修改配置文件即可.

VS2010/MFC对话框:创建对话框类和添加控件变量

创建对话框类和添加控件变量 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的.大家用过VC++ 6.0的可能记得,我们定义的对话框类都是从CDialog类派生的,但在VS2010中,一般对话框类都是继承自CDia

VBA类模块--添加类的函数(2)

为CTable类添加一个Create方法,代码就变成下面这个样子了 CTable 类模块: 1 Option Explicit 2 3 '==================================== 4 '名称: CTable 5 '功能: 描述一个Excel表格区域 6 '==================================== 7 8 9 '类的属性 10 Public strName As String ' 表名 11 Public strAddress As

VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别

在VB中,属性是可以有参数的 -- 即: VB的语法,使用参数的不一定是方法,也有可能是属性!(虽然属性的本质是方法) 例一:参数当作"索引"使用 定义一个类模块,模块名称Ints.为简化模型,使用了只读属性. 1 Private arr(3) As Integer 2 3 Public Property Get ArrValue(Index As Integer) As Integer 4 ArrValue = arr(Index) 5 End Property 6 7 '初始化ar