我想重新排列excel中的一些列,使用M1到M10中的值列表,这些值包含标题的名称和它们应该sorting的顺序。 我有这个脚本,如果我使用: v = Array("First Name", "Middle Name", "Last Name", "Date of Birth", "Phone Number", "Address", "City", "State", "Postal (ZIP) Code", "Country") 但是,当我改变 v = Range("m1:m10").Value 它不工作,给出以下消息: 下标超出范围。 这是整个代码: Sub Reorganize_columns() ' Reorganize Columns Macro ' ' Developer: If you want to know, please contact Winko Erades van den Berg ' E-mail : winko at […]
我有一个类似的问题在这里回答 这种情况有一些轻微的转变,希望macros观可以稍微改变。 任何帮助表示赞赏。 基于这个数据: <- A (Category) -> <- B (Items) -> 1 Cat1 a,b, c 2 Cat2 d 3 Cat3 e 4 Cat4 f, g 我需要这个: <- A (Category) -> <- B (Items) -> 1 Cat1 a 2 Cat1 b 3 Cat1 c 4 Cat2 d 5 Cat3 e 6 Cat4 f 7 Cat4 […]
介绍 我似乎无法让ChartObjects.CopyPicture方法在Excel 2007中工作。无论我尝试什么,我都会得到一个错误。 使用这种技术会在CopyPicture线上抛出“应用程序定义或对象定义的错误”。 ActiveSheet.ChartObjects.CopyPicture Appearance:=xlScreen, Format:=xlPicture Sheets("Sheet2").Paste 此方法在PasteSpecial行上抛出“PasteSpecial method of Worksheet class failed” ActiveSheet.ChartObjects.Copy Sheets("Sheet2").PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False 但是,如果我将图表作为Shape对象使用。 ActiveSheet.Shapes("Chart 6").CopyPicture Appearance:=xlScreen, Format:=xlPicture Sheets("Sheet2").Paste 这也适用 ActiveSheet.Shapes("Chart 6").Copy Sheets("Sheet2").PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False 问题 我的问题是,当我尝试复制多个图表作为一个组失败。 我试图使用Shapes对象的Range属性,但没有可用的CopyPicture方法。 我提出了这个解决方法,但是这也失败了,与我尝试CopyPicture时得到的信息一样。 ActiveSheet.Shapes.Range(Array("Chart 5", "Chart 6")).Select Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture Sheets("Sheet2").Paste 相反,这也不起作用 ActiveSheet.Shapes.Range(Array("Chart 5", "Chart 6")).Select Selection.Copy Sheets("Sheet2").PasteSpecial […]
我有一个Excel工作簿具有一些function: 一个主要的面向用户的工作表 一张基于面向用户的工作表数据的汇总表 一些基于面向用户的工作表数据的graphics(如图表types,它们具有单独的选项卡,而不是工作表内的对象 – 我不确定它们是否具有特殊名称或特殊属性) 一系列“背景”工作表,用于计算面向用户的工作表的值 一个macros,允许用户按照他们希望的任何列对用户表进行sorting,这是在用户工作表的Worksheet_SelectionChange事件中引用的 但是,为了便于分布,我想剔除这些表格(文件大小 – 整个数据查询包含在其中一张表格中)。 我仍然需要计算面向用户的工作表的值,但是每个数据集只能执行一次,因此可以非常高兴地将其作为格式和值进行复制。 但是,麻烦在于将依赖图纸,graphics和macros转移到新的工作簿中,以便引用新版本的工作簿而不是引用旧的工作簿。 理想情况下,我想用VBA或者其他方法来做到这一点,但是我的Googlesearch到目前为止似乎没有什么关联。 有谁知道如何做到这一点?
Excel中的ActiveXcombobox对象在ListFillRange引用基于公式的命名范围(定义名称)时performance不佳。 我想我遇到了其他错误,甚至可能发生Excel崩溃,但现在发生的情况是,combobox_change()事件在工作簿中的任何单元格被更改时触发。 我不确定这是否真的是一个错误,或者是否有修复或解决方法。 如果这是一个错误,我该如何报告给Excel人员? 最后,我的问题的真正内容是“我如何最好地解决这个问题?” 我想有一些基于公式的命名范围,但似乎这是不可能的。 要重现此错误,请执行以下操作: 创build一个新的工作簿。 在Sheet3上,创build一个小的表格3列,并有几行高。 用这个公式(或等价物)创build一个命名范围:= OFFSET(Sheet3!$ A $ 2:$ C $ 36,0,0,COUNTA(Sheet3!$ A:$ A),COUNTA(Sheet3!$ 4:$ 4))要做到这一点使用input>名称>定义。 将该范围命名为“demoRange” 转到Sheet1并创build一个combobox,( 它必须在一个单独的工作表上 )。 (使用“控件工具箱”菜单, 而不是 “表单”菜单)。 点击Design Mode(devise模式)button(带铅笔的蓝色三angular形),然后右键点击combobox并转到属性。 在combobox的属性窗口中,更改ListFillRange属性,使其指向您在步骤2(“demoRange”)中创build的命名范围。 您可能希望将ColumnCount属性更改为3,并将ColumnWidths属性更改为“50,50,50” 通过在linkedCell属性中键入A1,将linkedCell属性设置为单元格“A1”。 closures属性窗口,双击combobox来定义它的change()事件。 在新的combobox的更改事件的子例程中放置一个Debug.Assert(false)或Msgbox(“demo”)行。 退出devise模式 重要的 – 现在selectcombobox中的一个项目。 事件应该是第一次正常触发。 (如果你不这样做,错误将不会显示 – 必须在combobox中select一些东西) 在工作簿的任何位置编辑单元格[编辑]或任何其他打开的工作簿[/编辑],在任何工作表和任何位置。 每次编辑任何单元格(至less对我而言),都会运行combobox的onchange事件。 再次,这是正常的,什么是我正在做的最好的select? 这个combobox被链接到不同的单元格,并应该是Excel数据validation下拉列表中的小字体的替代品。
我search了networking,我已经在这里search了stackoverflow的问题,但我一直没有find解决办法。 这是我想要做的: 假设我在名为“MyClass”的类模块中有以下代码 Option Explicit Dim var1 as integer Sub初始化(v为整数)var1 = v End Sub 函数GetVar1()GetVar1 = var1结束函数 然后我有一个单独的模块中的代码的UDF Function InitializeMyClass(v as integer) as MyClass Dim myvar as MyClass Set myvar = new MyClass Call myvar.Initialize(v) Set InitializeMyClass = myvar End Function Function InitializeMyClass(v as integer) as MyClass Dim myvar as MyClass Set myvar = new […]
我在Excel 2007中运行VBA代码时收到一个自动化错误。我尝试连接到远程SQL Server数据库并将数据从Excel加载到SQL Server。 我得到的错误是, “运行时错误”-2147217843(80040e4d):“自动化错误”。 我检查了MSDN网站,它提示这可能是由于与sqloledb提供程序相关的错误,并且减轻这种情况的一种方法是使用ODBC。 那么我改变了连接string,以反映ODBC提供者和相关的参数,我仍然得到相同的错误。 以下是ODBC作为提供程序的代码: Dim cnt As ADODB.Connection Dim rst As ADODB.Recordset Dim stSQL As String Dim wbBook As Workbook Dim wsSheet As Worksheet Dim rnStart As Range Public Sub loadData() 'This was set up using Microsoft ActiveX Data Components version 6.0. 'Create ADODB connection object, open connection and construct […]
我正在研究一个面向对象的Excel加载项来从我们的ERP系统的数据库中检索信息。 这是一个函数调用的例子: itemDescription = Macola.Item("12345").Description Macola是一个负责数据库访问的类的实例。 Item()是Macola类的一个函数,它返回一个ItemMaster类的实例。 Description()是ItemMaster类的一个函数。 这一切工作正常。 项目可以存储在多个位置,所以我的下一步是做到这一点: quantityOnHand = Macola.Item("12345").Location("A1").QuantityOnHand Location()是ItemMaster类的一个函数,它返回ItemLocation类的一个实例(理论上来说,无论如何)。 QuantityOnHand()是ItemLocation类的一个函数。 但由于某种原因,ItemLocation类甚至没有被初始化。 Public Function Location(inventoryLocation As String) As ItemLocation Set Location = New ItemLocation Location.Item = item_no Location.Code = inventoryLocation End Function 在上面的示例中,variablesitem_no是ItemMaster类的成员variables。 奇怪的是,我可以在非类模块中成功实例化ItemMaster类之外的ItemLocation类。 Dim test As New ItemLocation test.Item = "12345" test.Code = "A1" quantityOnHand = test.QuantityOnHand 有什么方法可以使我按照自己的方式工作吗? 我试图保持API尽可能简单。 所以它只需要一行代码来检索一个值。
我经常在Excel中绘制时间序列数据,我发现在线图上默认的Exceldate轴标记非常难看。 尤其是, 1)date往往水平或垂直旋转,压缩绘图区的房地产,使date标签更难以阅读。 这是因为有两个很大的刻度线。 2)标签显示的精确度太高:时间序列数据库通常会将类似于每月时间序列的内容转储到电子表格中,其date值类似于1/1/2001,2 / 1/2001等.Excel将尝试显示完整的mm / dd / yyyydatestring默认情况下,这可能是一个短的日常时间序列,但不希望为非日常系列或长时间运行的系列。 在这种情况下,像mm / yyyy或yyyy这样的格式可能会更好。 我的问题是,有没有人已经写了一个很好的algorithm,可以使一个漂亮的date标签轴? 水平标签只有距离足够的刻度才能适应这种情况,并且在数据开始覆盖更长和更长的时间范围时(即从1/1/2001到1/2001变换到2001的标签)智能化date格式。 我最终必须使用VBA编写这个,但是我可以翻译用另一种语言编写的algorithm。 谢谢。
我有一个正确的方法来处理Excel中的VBA中的错误的问题。 如果发生特定的错误,例如xxxxxxx,则应显示一个MsgBox。 如果发生另一个错误,则会popup标准的运行时error handling程序。 这怎么能做到呢? 以下是示例代码: On Error Resume Next 'Line of code that causes an error here. If Err.Number = xxxxxxx Then MsgBox "Specific error message." ElseIf Err.Number = 0 Then Do nothing Else 'Some error other than xxxxxxx. 'This is the problem. Here I would like to display standard run-time error 'handler without […]