如果要创建自己的xla,如何制作.xla文件?我有代码,类,形状等....使xla文件指向的过程是什么?我知道我必须把它放在我的程序文件文件夹中,然后完成在xls中添加"加载项"的步骤...但我的意思是实际上保存一个xla文件指向....
我可以简单地在xls中写下所有这些,然后将其保存为文件类型xla ?? 因为我试图这样做但是当我在电子表格中试图指向它时,我得到一个错误,它不是有效的添加?
谢谢!
我正在重构一个巨大的工作簿,包括许多遗留部分,冗余计算,交叉依赖等.
基本上,我正在尝试删除不需要的工作表并在工作簿中实现一些适当的信息流.有没有一种很好的方法来提取工作表之间的依赖关系(使用VBA)?
谢谢马丁
似乎从单元格公式(即"用户定义函数"或UDF)调用VBA代码时,通常的VBA Break On Error不起作用.
我能找到这种行为的唯一地方是在一篇名为"为Excel 2007和Excel Services开发用户定义的函数"的文章中的几行:
错误处理返回#VALUE错误.UDF代码抛出的所有异常都将作为#VALUE错误返回到Excel工作表中.
即使您将错误陷阱设置为"中断所有错误"并单步执行代码**,您也永远不会看到VBA运行时错误对话框 - Excel只是静静地放弃执行而不告诉您出了什么问题.当然,这使得调试比实际需要更加困难.
有一些潜在的解决方法涉及On Error但我宁愿不弄乱我的代码只是为了找出错误被引发的位置.
是否有一些我忽略的Excel/VBA选项会使Break On Error正常工作?我正在使用Excel 2003.
**从单元格调用时进入调试器的唯一方法是设置断点或使用Stop语句
如果剪贴板包含 Excel 工作表范围,则可以使用 DataObject 对象访问该范围的数据
您还可以找到该数据的实际来源范围(即工作表、行和列)吗?
或者,您能否找到用虚线轮廓边框(不是选定范围)表示的上次复制范围?
最好使用 Excel 2003 VBA
我想知道为什么在Excel 2003的VBA代码中我们甚至需要使用Range.Formula将公式写入单元而不是仅使用Range.Cell?他们都将字符串写入成为论坛的单元格,并且该公式起作用(从我测试过的).
ActiveCell.Value="=If(True,""yes"",""no"")"
Run Code Online (Sandbox Code Playgroud)
和
ActiveCell.Formula="=If(True,""yes"",""no"")"
Run Code Online (Sandbox Code Playgroud)
为我做同样的事情(当我选择一个单元格并在单独的单元格中分别执行上述每个代码段时).它们都在单元格中显示"是"值,并且当我单击以查看每个单元格时存储公式.
我查看了微软开发中心的信息:
Range.Formula Excel 2013的Range.Formula属性(Excel 2003没有此属性的页面)
Range.Value Excel 2003的属性(展开"应用于Range对象的Value属性."标题
我还搜索了"为什么使用Range.Formula而不是Range.Value VBA Excel"并找不到与我的问题相关的任何内容.
有人说,用Range.Value.
其他人说Range.Formula堆栈溢出使用(对不起,我丢失了对确切问题的引用......)
我在 Excel 2003 中使用 GROWTH(或 LINEST、TREND 或 LOGEST,所有这些都会造成同样的麻烦)函数。但是存在一个问题,如果缺少某些数据,该函数将拒绝给出结果:

您可以在此处下载该文件。
我不想要删除缺失值的明显解决方法 - 这意味着删除该列,这也会损坏图表,并且它会在我的其他表中出现问题,其中我有更多行并且在不同的表中丢失数据列。其他明显的解决方法是使用一个数据进行回归,使用另一个数据进行图形,但同样,这很烦人,只会使工作表变得混乱!
有什么方法可以告诉excel - 这个值是NA吗?
另一个想法是跳过表达式中缺失的值。是否可以对一组不连续的单元进行寻址?就像=GROWTH($B2:$AH2; $B1:$AH1; B1)我的例子中那样,使用类似的东西:
=GROWTH({$B2:$I2,$K2:$AH2}; {$B1:$I1,$K1:$AH1}; B1)
我当然想避免写我自己的表达式。我需要向我的同事解释如何做到这一切,这会复杂得多。我想要一个简单而优雅的解决方案。
我注意到在以下情况下我会遇到各种烦人的错误:
我编写了一个相当复杂的 excel 应用程序,它执行大量事件处理并使用大量控件。几个月来,我一直在努力处理与这些组合框有关的各种错误。我现在不记得每个实例的所有细节,但这些错误往往涉及将 listfillrange 和 linkscell 属性指向命名范围,并且通常与在不适当的时间触发的组合框事件有关(例如当 application.enableevents = 假)。这些问题在 Excel 2007 中似乎越来越大,因此我不得不完全放弃这些组合框(我现在使用包含在用户表单中的组合框,而不是直接在工作表上)。
有没有其他人看到过类似的问题?如果是这样,是否有优雅的解决方案?我环顾了谷歌,到目前为止还没有发现任何有类似问题的人。
我最终看到的一些症状是:
在这一点上,我相当确信 ActiveX 组合框是邪恶的化身,不值得麻烦。我已经转而将这些组合框包含在用户表单模块中。我宁愿用弹出式表单给用户带来不便,也不愿出现随机的视觉伪影和崩溃(数据丢失)。
在Excel中,我们有一个VLOOKUP函数,它在表中的列中查找值,然后在找到某些内容时返回该表中给定列的值.如果没有,则会产生错误.
是否有一个函数只返回true或false,具体取决于是否在列中找到了值?
我正在做一个简单的c#应用程序,它是编辑现有的excel 2003模板(xlt)并保存到新的*.xls文件.它像是:
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Open("\\my_template.xlt");
Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[0];
Run Code Online (Sandbox Code Playgroud)
然后我修改一些在文件中的各种公式中使用的单元格,并将模板保存到一个新文件:
workbook.SaveAs("newfile.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
workbook.Close(true, misValue, misValue);
app.Quit();
worksheet = null;
workbook = null;
app = null;
Run Code Online (Sandbox Code Playgroud)
所以问题是当新文件被成功保存时,我打开它,看到使用我编辑过的单元格的公式结果就像"#NAME"一样.当我重新打开文件时 - 一切都变好了.为什么会这样?
也许我正在以不正确的方式保存文件,这就是我在第一次打开时看到错误的原因?这个问题仅适用于2003年的办公室......正如我承认的那样.
下面的代码在New ...之前添加了一个菜单项Custom1.如何将分配给CodeCustom1(via )的键盘快捷键与Ctrl + N很好地右对齐?Application.OnKey
Sub menuItem_Create()
With CommandBars("Worksheet menu bar").Controls("File")
.Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Custom1"
.Controls("Custom1").OnAction = "CodeCustom1"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)

excel-2003 ×10
excel ×8
vba ×7
excel-vba ×5
c# ×1
clipboard ×1
debugging ×1
excel-2007 ×1
menuitem ×1
ms-office ×1
regression ×1
statistics ×1
xla ×1