Tag:

使用countif来确定类模块中的布尔值

我试图在类模块中使用布尔值,但代码在“公共属性获取DUPLICATES()作为范围”MsgBox LOADPROPS.DUPLICATES“失败”请有人可以协助? Sub INITIALIZE_CLASS() Dim LOADPROPS As cLoadData Set LOADPROPS = New cLoadData LOADPROPS.DUPLICATES = PasteLoadingForm.Columns("K") MsgBox LOADPROPS.DUPLICATES End Sub 并在类模块中 Public Property Get DUPLICATES() As Range DUPLICATES = pDUPLICATES End Property Public Property Let DUPLICATES(Value As Range) Dim lcount As Long lcount = Application.WorksheetFunction.CountIf(Value, "DUPLICATE") ' pDUPLICATES = lcount Select Case pDUPLICATES Case Is […]

VBA | 如何创build一个构build对象并将其分配给数组/集合的类模块

我对编码有点新,可能不会使用正确的术语,希望我说的是合理的。 我创build了一个类模块来构build对象。 我的类模块目前有一些variables(我打算添加一些方法,因为我build立在我的代码)。 'CLASS MODULE NAMED clsNodes Public i As Single Public j As Single Public coll As Collection 我的模块将build立基于用户input的单元格值的对象 Option Explicit Dim i As Single, j As Single Dim ni_nodes As Single, nj_anchors As Single ni_nodes = range("A1") nj_nodes = range("A2") For i = 1 to ni_nodes For j = 1 to nj_nodes Set […]

VBA类实例

我在VBA中有一个问题,在每次向该数组添加内容时,数组中的每个项都被replace。 我试图通过给定范围内的行,并将其中的每一行转换为自定义类(在下面的示例中命名为“CustomRow”)。 还有一个pipe理器类(下面称为“CustomRow_Manager”),它包含一个行数组,并且具有添加新行的function。 当第一行添加它工作正常: https : //drive.google.com/file/d/0B6b_N7sDgjmvTmx4NDN3cmtYeGs/view?usp=sharing 但是,当它循环到第二行时,它会replace第一行的内容,并添加第二个条目: https : //drive.google.com/file/d/0B6b_N7sDgjmvNXNLM3FCNUR0VHc/view?usp=sharing 任何想法如何可以解决? 我创build了一些显示问题的代码,在'CustomRow_Manager'类中观察'rowArray'variables macros档案 https://drive.google.com/file/d/0B6b_N7sDgjmvUXYwNG5YdkoySHc/view?usp=sharing 否则代码如下: 数据 ABC 1 X1 X2 X3 2 xx11 xx12 xx13 3 xx21 xx22 xx23 4 xx31 xx32 xx33 模块“Module1” Public Sub Start() Dim cusRng As Range, row As Range Set cusRng = Range("A1:C4") Dim manager As New CustomRow_Manager Dim […]

VBA类具有属性的属性

我试图build立一个基本上描述一个地理空间条件语句的类,其中一个参数是高度。 海拔高度有4个属性,如最小,最大,单位,反转,我试图使类支持2层属性。 IE Dim blah as qClass Set blah = New qClass blah.Altitude.Min = 100 这是我正在寻找的效果,但我很难搞清楚如何实现它。 (中等VBA经验,但第一次进入课堂) 我的解决scheme:我做了一个generics类,它具有我将用于每个参数的最小/最大/单位/反转参数,所以只需要设置一次,然后重用。 设置类 Private pMin As Integer Private pMax As Integer Private pUnit As String Private pInvert As Boolean Public Property Get Min() As Integer Min = pMin End Property Public Property Get Max() As Integer Max = pMax […]

修改现有的VBA类

我想知道是否有一些方法来添加自己的方法/属性到现有的VBA类(如范围 , 图表等)。 一个例子:我想当前的VBA类工作表有一个由我自己完成的具体方法,如: 'Worksheet methods Public Sub LookFor (ByVal Value as String) 'My code End Sub 然后我可以从任何已声明的Worksheet类中调用这个函数。 在类MyClass中: 'MyClass members Private pWS1 as Worksheet Private pWS2 as Worksheet Private pWS3 as Worksheet 'MyClass methods Private Sub Class_Initialization() Set pWS1 = Worksheets("WS1") Set pWS2 = Worksheets("WS2") Set pWS3 = Worksheets("WS3") End Sub Public Sub Example() […]

Excel VBA:将一个集合从一个类传递给一个模块问题

我一直试图从一个类中的属性返回一个集合到一个正常模块中的例程。 我遇到的问题是,集合在类中的属性(FetchAll)中正确填充,但是当我将集合传递回模块(Test)时,所有条目都填充了列表中的最后一项。 这是标准模块中的testing子例程: Sub Test() Dim QueryType As New QueryType Dim Item Dim QueryTypes As Collection Set QueryTypes = QueryType.FetchAll For Each Item In QueryTypes Debug.Print Item.QueryTypeID, _ Left(Item.Description, 4) Next Item End Sub 这是QueryType类中的FetchAll属性: Public Property Get FetchAll() As Collection Dim RS As Variant Dim Row As Long Dim QTypeList As Collection Set QTypeList […]

MS Excel的VBA – 问题与设置类ADODB.Connection

我正在构build使用ADODB.Connection从其他工作簿导入数据的MS Excel工具。 当我在常规模块中构build解决scheme时,它工作正常,但由于我经常使用这种方法,所以我想构build一个类模块,我可以在其他自动化中使用它。 但是由于我对VBA课程不太灵活,所以我很难克服一个问题。 以下是常规模块的代码: Option Explicit Dim clsSQL As clsWbkSQLImport Dim strConnString As String Private Sub btnImportData_Click() strConnString = Me.Range("RawDataPath") Set clsSQL = New clsWbkSQLImport clsSQL.ConnProvider = "Microsoft.ACE.OLEDB.12.0" clsSQL.ConnString = "Data Source=" & strConnString & "; Extended Properties='Excel 12.0; HDR=YES'" clsSQL.ConnProperties = "Excel 12.0; HDR=YES" clsSQL.SetConnection End Sub 这是我的class级模块: Option Explicit Private strProvider As […]

VBA对象销毁 – 内存错误

我有一个我创build的类对象,其他类的引用(其他类都没有引用)。 我有一个内存问题,当我循环和创build类的实例时,给出了“内存不足”的错误。 类和子例程的简化代码片段如下: 类aclsWell Option Explicit Option Compare Text Option Base 1 Private zclsSettings As bclsSettings Private zclsInfo As bclsInfo Private zclsProduction As bclsProduction Private Sub Class_Initialize() Set zclsSettings = New bclsSettings: Set zclsSettings.Parent = Me Set zclsInfo = New bclsInfo: Set zclsInfo.Parent = Me Set zclsProduction = New bclsProduction: Set zclsProduction.Parent = Me End […]

VBA类模块:使用另一个属性从对象获取属性

所有,我在VBA中设置了一个类模块结构来添加具有多个里程碑的计划,但是我对它很陌生。 我做了以下几点: 名为“计划”的类模块包含“名称”属性(string)和“里程碑”属性(类里程碑)。 这个里程碑类模块是称为“里程碑”的类模块的对象的集合。 “里程碑”类具有“名称”属性和“值”属性。 所以在我的模块中,我现在指定一个具体计划的里程碑: Plan.Milestones.Add "MilestoneA", Cells(i, 5) Plan.Milestones.Add "MilestoneB", Cells(i, 7) … 到现在一切都很好。 现在对于MilestoneC,我想知道MilestoneA的价值。 如何获得名为“MilestoneA”的Milestone的价值。 我知道下面的代码会给我答案,但我不想硬编码'项目(1)'(我想使用的名称): Plan.Milestones.Item(1).Value 在clsMilestones类中: Private prvt_Milestones As New Collection Property Get Item(Index As Variant) As clsMilestone Set Item = prvt_Milestones(Index) End Property Sub Add(param_Name As String, param_Value As String) Dim new_milestone As clsMilestone Set new_milestone = New clsMilestone […]

为什么VBA中的每个类都有一个应用程序属性?

我想澄清一下为什么VBA中的每个类( 或几乎每个类 )(当你滚动浏览对象的时候)都有一个Application属性。 MSDN说 当没有使用对象限定符时,此属性返回一个表示Microsoft Excel应用程序的Application对象。 当与对象限定符一起使用时,此属性将返回一个Application对象,该对象表示指定对象的创build者(您可以将该属性与OLE自动化对象一起使用以返回该对象的应用程序)。 只读。 第一句话很清楚。 您的托pipe应用程序使用没有限定符可以是支持VBA的MS Office产品之一。 在Excel Debug.Print Application = Microsoft Excel 在Word Debug.Print Application = Microsoft Word 等等… 但是……第二句话对我来说是完全不清楚的……所以我在想,不pipe你在哪里打电话。从它的应用程序总是会返回一个对象的主机… 那么,VBA中的每个类有什么Application属性? PS。 你可以随时调用.Parent => .Parent来升级…不是吗? 你可以调用Application机智没有限定符得到… 我什至不能想到一个SSCCE OLE情况,所以我很抱歉,我没有提供一个例子。 Application属性(不要与Application 类混淆)logging不完整,这就是为什么我要求有更多经验的人为我澄清这一点。 其中一种( 很好,有点 )的情况,但不确定它甚至适用于这里可以使用Interop for Office。 就像当你有一个打开两个文件(一个Excel和一个Word)的外部应用程序,那么通过在这两个文件中获得对Range的引用,你也许能够返回Microsoft Excel和Microsoft Word ..但是这对于任何人? 嗯..我不理解这个整个概念?