Tag: vba

Max()的VBA单元格地址

我有类似的东西 sdMax = WorksheetFunction.Max(Range("D2", Cells(emptyRow, 4))) find列D的最大数量 我如何find这个最大数量的位置?

如何从Excel 2007中的VBA访问checkbox

在添加checkbox时,如何访问VBA中的值? 在Excel 2007中,在开发人员function区上 插入,表单控件,checkbox 将checkbox重命名为chkMyCheck 添加macros到checkbox,我现在有模块1与chkMyCheck_Clicked 以下所有失败 Sheets("Sheet1").chkMyCheck.Checked Sheets("Sheet1").chkMyCheck.Value Sheets("Sheet1").Shapes("chkMyCheck").Checked Sheets("Sheet1").Shapes("chkMyCheck").Value Sheet1.chkMyCheck.Checked Sheet1.chkMyCheck.Value Sheet1.Shapes(“chkMyCheck”)似乎查找对象,但不公开任何可能返回检查状态的属性。

下标超出范围重命名工作表后出现错误

我已经做了一个小的项目,其中包括5 Excel工作表中,代码工作正常,我也得到确切的结果,但如果我从Sheet1重命名工作表到其他名称我得到下标超出范围错误。 这是什么原因以及需要做些什么来克服这一点。 请帮忙。 下面是代码 Public Sub amount_final() Dim Row1Crnt As Long Dim Row2Crnt As Long With Sheets("sheet4") Row1Last = .Cells(Rows.Count, "B").End(xlUp).Row End With Row1Crnt = 2 With Sheets("sheet3") Row2Last = .Cells(Rows.Count, "B").End(xlUp).Row End With

制作独立的选项button组

我正在寻找一个小组的forms与checkbox和选项button组稍后将提供一个VBA代码。 我需要在其中有3个选项框的组框,但独立。 现在,我按下其中一个选项,并在另一个组中select一个选项框。 他们都连接,我不想要这个。 有任何想法吗? 谢谢

Excel VBA脚本dynamic添加系列到图表

我试图dynamic添加多个系列到折线图。 事前我不知道有多less系列,所以需要dynamic的。 我想到的但是不起作用的是: 工作表ActiveSheet(或Sheets(“Data”))从C14开始具有行,直到包含从E14:Eend到R14:Rend的XValues和Columns的Cend,其中“end”标记由列C确定的最后一行数据。存储在第9行。XValues对于所有系列都是一样的。 我的大问题是,我无法find一种方法来dynamic地将所有的数据列连同相应的名称一起添加到我的图表中。 我不是VBA的专家,所以请善待。 我已经阅读了各种资料,并尝试了很多脚本,似乎没有任何工作。 对象目录有点帮助,但是我的问题依然存在。 Sub MakeChart() Dim LastColumn As Long Dim LastRow As Long Dim i As Integer Dim u As Integer Dim NameRng As String Dim CountsRng As Range Dim xRng As Range LastColumn = ActiveSheet.Cells(8, Columns.Count).End(xlToLeft).Column ColumnCount = LastColumn – 4 LastRow = ActiveSheet.Range("C" & ActiveSheet.Rows.Count).End(xlUp).Row ' Debug.Print ("Last […]

在单元格中通过数字而不是名称引用表单

让我们说sheet3.name = "d" 是否有一种方法,我可以在sheet2的单元格公式=sum(sheet3!b:b) sheet3被replace为实际的sheet3名称? 我只能得到=sum('d'!b:b)到目前为止工作。 我可以使用VBA这可能,但我很好奇如何在单元格中这样做,所以我不必每次都运行macros。

运行时错误6 – 如何使Mod处理双?

我在vba中总是遇到一个运行时错误: Sub rsa() Dim c1 As Long Dim c2 As Long Dim z As Long Dim e As Long pt = "xa" n = 187 e = 7 For i = 1 To Len(pt) b = Mid$(pt, i, 1) If b <> " " Then z = Asc(UCase(b)) 'Here is the problem: c = z […]

VBA Excel 2010 – embedded图片和resize

我已经潜伏了一段时间,发现它非常有帮助,所以感谢您的帮助! 我试图写一个macros,将图像embedded到单个文件的工作表中,并调整它们的大小,同时保持图像的完整分辨率,如果需要再次放大。 首先我试了一下: ActiveSheet.Pictures.Insert(imageName).Select With Selection.ShapeRange .Height = 100 .Width = 100 End With 这基本上插入一个链接到图片,如果图像文件被删除或Excel文件移动到另一台计算机,链接将被打破。 接下来我尝试了: ActiveSheet.Shapes.AddPicture Filename:=imageName, _ linktofile:=msoFalse, _ savewithdocument:=msoCTrue, _ Width:=100, _ Height:=100 这个代码也可以工作,但是在插入之前图像的大小被调整为100 * 100像素,所以原来的文件分辨率会丢失。 有没有办法插入图像文件, 然后缩小尺寸,以保持原来的分辨率? 非常感谢,亚当。

使用数组的Excel VBA编程:传递它们还是不传递它们?

问题:我想知道哪个是Excel 2003 VBA中处理数组的最佳解决scheme 背景:我在Excel 2003中有一个超过5000行的macros。 在过去两年中,我已经创build了新的function,作为新的程序,这有助于分割代码,debugging,更改或添加到该function。 缺点是我在多个过程中使用了很多相同的基本信息,这要求我将它加载到多次存在细微差异的数组中。 我现在遇到了运行时间长的问题,所以我现在可以做一个完整的重写。 该文件用于获取多个制造stream程项目(最多4个不同的设置,总共多达10个不同的stream程,每个stream程最多1000步骤),其中信息是stream程特定的,子stream程专用于分组/sorting目的和数据(如移动,库存,CT,…) 然后,将数据粘贴到多张用于pipe理stream程的工作表上,利用要查阅的数据表,图表和单元格格式来表示stream程能力/历史logging。 stream程在Excel文件中,制造数据用7个不同的OO4O Oracle SQL读取读入,一些重复使用多次 arrays是: arrrFlow(1到1000,1到4)作为loggingtypes与4个string arrrSubFlow(1到1000,1到10)作为loggingtypes,包含4个string,2个整数和1个单 arrrData(1到1000,1到10)作为loggingtypes,有1个string,4个整数,12个长整数和1个单 arriSort(1到1000,1到4)为整数(用作指针数组,以分组顺序对子stream,子stream和数据进行sorting,同时按步骤顺序保留原始数组) 可能性: 1)将macros重写为一个大的过程,将数据加载到过程中定义的主数组中 临:在过程中的大小,而不是在模块中的公共variables,并没有通过。 Con:用一个大型程序而不是多个小型程序debugging更困难。 2)保持macros多个程序,但通过arrays 临:更容易debugging与多个较小的程序的代码。 Con:通过数组(昂贵?) 3)使用多个程序保持macros,但在模块中数组是公共调光的variables 临:更容易debugging与多个较小的程序的代码。 Con:公共arrays(昂贵?) 那么,社区的判决是什么? 有谁知道使用公共数组vsarrays的花费? 这些任何一个的成本是否值得让我的程序集中在一个function上? 更新: 我以离散级别(每步多个)加载库存数据,在总级别上移动数据(每个步骤一个),以及在总体级别上移动库存的开始。 我将库存数据一步一步放在工作状态类别(运行,等待,…)中,我已经在工作表上创build了目标数据。 我有一个stream程图,按types显示工作stream程,目前3个产品有类似但不完全相同的stream程,2个产品是不同的stream程,类似但又不相同。 我已经将不同stream程中的每一组步骤分配给一个组和一个子组。 我将这些数据放置在多个工作表中,一些在步骤顺序中,一些在组/子组顺序中。 我也需要集团和产品,集团/子集团和产品,线路和产品的一部分,以及产品总结的数据。 我使用loggingtypes,所以我实际上有一个可读的三维数组,arrSubFlow(1,1).strStep(第一个设备的第一步的步骤名称),arrData(10,5).lngYest(第十步的昨天的移动第五个设备)。 我的主要优化将在每一次从头创build10页的部分。 通过合并单元格,边界,标题,…这是一个非常耗时的过程。 我将添加一个将我的数据与页面进行比较以查看是否需要更改的部分,如果是,则只需重新创build它,我将清除数据的每个部分,并只写入更改到表单的数据。 这将是巨大的,根据我的时间logging数据。 但是,每当我更新代码时,我总是尝试改进代码的其他方面。 我看到数据加载到一个结构(数组,logging集,集合),既是一点点的优化,但更重要的是数据完整性,所以我没有机会以不同的方式加载不同的表。 我现在看到远离arrays的主要问题是: *已经投入很大,但这不是一个足以改变的理由 *不知道是否有太多的成本通过他们,因为它会由ByRef *我使用sortingfunction来创build一个sorting的“指针”数组,使我可以按步骤顺序离开数组,同时按组/子组顺序轻松引用它。 由于我总是试图为现在和未来做我的代码,我不反对将数组更新为RecordSet或Collections,而不仅仅是为了改变它们学习一些很酷的东西。 我的arrays工作,从我的研究,他们增加了几秒的运行时间,而不是2分钟的报告大量的。 所以,如果另一个结构比loggingtypes的二维数组更容易更新,那么请让我知道,但是有没有人知道把数组传递给一个过程的代价,假设你没有进行ByVal传递?

如何掩盖Excelmacros代码

我有以下存储在Excelmacros: – Sub Sales() Dim StrSQl As String Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56" Set Db = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.recordset") Db.connectionSTring = Con Db.Open StrSQl = "select myuc, sum (myac) as Amount from myabc.myqwerty where mydt >= 20100101 and mydt <= 20100831 group by (mycl)" rs.Open StrSQl, Db, 3, 3 Sheet1.Cells(10, 1).CopyFromRecordset rs rs.Close […]