Tag:

EXCEL VBA:用户表单代码,重复代码改进

有没有更有效的方式来编写这个用户表单代码? Private Sub Userform_Initialize() 'do stuff With Item1_DropDown .AddItem "Monday" .AddItem "Tuesday" .AddItem "Wednesday" End With With Item2_DropDown .AddItem "Monday" .AddItem "Tuesday" .AddItem "Wednesday" End With With Item3_DropDown .AddItem "Monday" .AddItem "Tuesday" .AddItem "Wednesday" End With 'and so on, and so on. (I have about fifty of these 'With/End With' blocks) End Sub 基本上,我希望能够停止写这么多的“With / […]

VBA – 由于某些原因,使用get / let属性不会设置

警告:我是VBA的新手。 我有以下类,名为TestClass : Option Explicit Private pName As String Private Sub Class_Initialize() Name = "test_1" End Sub Public Property Get Name() As String Name = pName End Property Public Property Let Name(Value As String) pName = Value End Property 我有一个子程序,我连接到一个button单击事件,看起来像这样: Sub DisplayTestValue() Dim testClass As testClass With testClass MsgBox "default value: " & testClass.Name End […]

Excel VBA:有没有办法引用存储在字典中的类的实例?

我目前有使用下图中显示的数据结构存储类的实例。 每个-List项目是一个字典,每个-Info项目是一个类的一个实例。 我读别处,如果你Set一个实例variables等于另一个实例,它只是引用原始实例。 它是否正确? 我已经能够使用下面的代码创buildfileInfo(1) (在图像中)的引用。 Dim prflInfo As File_Info Set prflInfo = New File_Info Set prflInfo = fileList.Items(0) 我试图使用下面的代码来引用branchInfo实例,但是我得到一个Run-time error 13: Type mismatch当我尝试这样做。 Dim prbrInfo As Branch_Info With prflInfo Set prbrInfo = New Branch_Info brKey = .getbrKey(0) Set prbrInfo = .getbrItem(brKey) End With 编辑:下面包含的是File_Info类的代码。 所有其他类都遵循这个基本模型。 'Class Module: File_Info 'Initialise class variables Private pfileID As […]

VBA:generics类定义

Allthough一个经验丰富的VBA程序员,我相当新的做自己的类(对象)。 为了预热,我制作了以下类模块 – 一个正常的VBA模块来testing它。 我对集合和数组特别感兴趣。 任何人都可以build议我是否正确的方式吗? – 还是可以改进? 最好的问候,Helge。 class级模块: Option Explicit Option Base 1 Private Type TClass1 Name As String Coll As Collection Datas() As Variant End Type Private z As TClass1 Private Sub Class_Initialize() Set z.Coll = New Collection ReDim z.Datas(0 To 0) End Sub ' String Public Property Let Name(inValue As String) […]

在类中使用数组(Excel VBA)

我正在做一个程序的一部分,执行以下操作: 1)确定某个单元格中是否存在“X”,以及该标题是否与用户input相匹配 2)如果这是真的,则将头部的内容添加到类中的元素 例如,如果在一个行的“离合器”标题下有一个“X”,则在此情况下,“离合器”被添加到pos.clutch。 这是完成这个(编辑:这是在一个Do While循环,因此R + 1,抱歉,如果这是不明确的原来): If sh.Cells(R + 1, Clutch) = "X" And _ sh.Cells(1, Clutch).Value = CStr(cboPart.Value) Then pos.Clutch = sh.Cells(1, Clutch) 现在,问题是每个元素都有一长串的ElseIf语句(总共有6个)。我想把它转换成一个For循环,经过一番研究,我想到了一个数组,我将包括在类中模块将是最好的方法,因为我可以循环访问数组中的每个值。 我想知道如何在类模块中创build由类元素组成的数组,以及是否可以在For循环中为每个类元素设置值。 此外,如果有更好的解决scheme,我想更多地了解它。

Dynamics Axe Excell导入错误! sysexcellworksheet

我想将Excel数据导入到Microsoft Dynamics Ax 。 我从这个网站使用这个代码: http://axpedia.blogspot.com.tr/2013/02/import-from-excel-file-using-x-in-ax.html 但是当我尝试运行我得到这个错误: SysExcellworksheet could not start (C)\Classes\SysExcellWorksheets\cells(C)\Jobs\ProductType (line 35) 我是新手你能帮我一下吗? static void ProductType(Args _args) { SysExcelApplication application; SysExcelWorkbooks workbooks; SysExcelWorkbook workbook; SysExcelWorksheets worksheets; SysExcelWorksheet worksheet; SysExcelCells cells; COMVariantType type; Name name; FileName filename; ProductType productType; int row; int _productTypeId; str _productType; str _description; ; application = SysExcelApplication::construct(); workbooks = application.workbooks(); […]

VBA – 将数组存储在类中 – types不匹配

我一直在寻找,但似乎没有任何伎俩对我来说。 这是问题: 我想存储一个“键”数组这里是我的简单的类: Private pkeys_length As Integer Private pkeys() As String Public Property Get keys_length() As Integer keys_length = pkeys_length End Property Public Property Let keys_length(arg As Integer) pkeys_length = arg End Property Public Property Get Keys() As String Keys = pkeys() End Property Public Property Let Keys(ByVal arg As String) ReDim pkeys(0 To pkeys_length) […]

VBA Excel:在类模块中dynamic创build的button将立即运行并且只运行一次

我正在尝试创build一个button的类。 该button应该有一个macros分配给它。 macros是类的一个function。 类模块的代码如下: 'Class Module: btnClass Option Explicit Dim btn As Button Function addButton() 'Adding a button Set btn = ActiveSheet.Buttons.Add( _ Range("A1").Left, _ Range("A1").Top, _ Range("A1").Width, _ Range("A1").Height) With btn 'Assigning a function .OnAction = Me.onClickAction .Caption = "Button" End With End Function Function onClickAction() MsgBox ("Click") End Function 主macros的代码如下: 'Module Option Explicit […]

Excel VBA – 用户定义类实例的公共范围

我最近开始用Excel VBA编程。 来自Java环境,我正在尝试将OOP原则应用于VBA,但是我很难做到这一点。 我创build了一个configuration类模块来封装所有的初始configuration,并提供简单和受控的访问。 从Workbook_Open()函数我初始化configuration对象。 我想要做的是将这个实例保存在公共范围内,以允许从完整的程序访问相同的实例。 (在Java中的静态variables或单例) Option Explicit Dim conf As Config Private Sub Workbook_Open() Set conf = New Config End Sub 这样做有效,但范围不公开。 当我把公共关键字,而不是Dim,我得到以下错误: 编译错误: 私有对象模块不能在公共对象模块中用作参数或公共过程的返回types,公共数据成员或公共用户定义types的字段 所以我的问题是,没有任何方法来保持对象实例的公开? 如果不是,那么以面向对象的方式组织项目的最佳方式是什么,而不是将所有内容都放在工作簿模块中? 谢谢你的时间。

我可以参考另一个子类中的子类吗?

这是一个普遍的问题。 如果我正在创build一个带有函数的类,我可以参考该类中的另一个函数吗? 对于这个工作, class pythonExcelFunctions(): def getSheetNumber(self, fileName, sheetName): workbook = xlrd.open_workbook(fileName, on_demand=True) for index, sheet in enumerate(workbook.sheet_names()): if sheet == sheetName: return index def createSheet(self, fileName, sheetName): rb = xlrd.open_workbook(fileName, formatting_info=True, on_demand=True) wb = xl_copy(rb) Sheet1 = wb.add_sheet(getSheetNumber(fileName, sheetName)) wb.save(fileName)