Tag: vba

Excel VBA保存截图

我尝试使用VBA代码截取Excel中的工作表,然后将其保存在指定的path中,但是我无法正确保存它… Sub My_Macro(Test, Path) Dim sSheetName As String Dim oRangeToCopy As Range Dim FirstCell As Range, LastCell As Range Worksheets(Test).Activate Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _ Cells.Find(What:="*", SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Column) Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _ SearchDirection:=xlNext, LookIn:=xlValues).Row, _ Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, LookIn:=xlValues).Column) sSheetName = Test ' worksheet […]

粘贴vs PasteSpecial

经过两个小时的徒劳search和沮丧。 我在这里发布这个问题。 任何人都可以请解释在excel vba粘贴和pastespecial选项之间的详细区别? 或者引用一些可以帮助的资源

设置PivotItem.Visible = false时无法设置PivotItem类的Visible属性

我想使PivotItem.Visible = False但我不断收到错误: 无法设置PivotItem类的Visible属性 我尝试了所有在互联网上find的解决scheme,但似乎没有任何工作 Sub FloorCompareSetter() Dim pt As PivotTable Dim pf As PivotField Dim pi As PivotItem Dim PivotSheet As Worksheet Set PivotSheet = ThisWorkbook.Worksheets("PIVOT") PivotSheet.PivotTables("PivotTable5").RefreshTable Set pt = PivotSheet.PivotTables("PivotTable5") pt.PivotCache.MissingItemsLimit = xlMissingItemsNone Set pf = pt.PivotFields("Period") For Each pi In _ pt.PivotFields("Period").PivotItems Select Case pi.Name Case Is = "1601A" pi.Visible = True […]

在表单中保存类模块

假设我想在Excel VBA中制作自行车devise程序。 我有一个类对象( cBike ),它有一些默认设置。 现在,我想在将自行车存储到数据库之前创build一个可用于更改这些设置的窗体(如图像中的窗体)。 用于存储的方法(子)位于cBike 。 我可以将对象保存为表单代码中的公共variables,如下所示: Public objBike As cBike Public Sub StoreBikeToDatabase() 'database storing code goes here End Sub 虽然这会起作用,但我看到很多人反对使用公共(全球)variables。 我不太清楚为什么,除了如果你有太多的全局variables,你的代码将是一团糟。 或者我可以忘记对象,并使用不同的表单控件的值,而不是类模块cBike的属性。 但是,这似乎是一个笨拙的解决scheme。 我的问题是:上述哪个解决scheme最好,如果有的话? 如果没有,那我该怎么办呢? 更新:我强烈build议您阅读已接受的答案,然后再深入阅读。 这两个答案都有一些很好的想法,Dee的后面还增加了一些综合代码的例子,可以用于其他类似于我的问题。

用户定义types读取错误

我正在为一个(我的)小企业开发一个系统。 我有大约20个数据文件(客户/供应商/商店项目/固定资产/租赁/雇员等)。这些文件的每个logging都是使用Type语句定义的,并使用Put或Get语句进行书写或读取。 每个数据文件都用一个单独的工作簿进行维护或增加。 我也有单独的工作簿来控制公司的日常stream程。 (销售/租赁/商店移动等)这些“操作”工作簿严重依赖于数据文件中的logging。 他们还生产进一步的日常移动数据文件。 该系统由一个名为Menu.xlsm的工作簿控制,该工作簿允许用户select所需的工作簿。 Menu.xlsm包含所有的types语句,通用程序,函数和表单。 它在所有其他工作簿中引用,并始终打开。 用户被限制在两个打开的工作簿 – 菜单和另一个。 系统位于networking服务器上,写入的方式是用户只能打开工作簿“只读”。 用户从不保存工作簿,他们总是将数据保存到数据文件。 基本上我有一个数据库系统,并使用Excel作为接口。 我的types语句是 Public Type CLocDesc Atv As String * 3 CadName As String * 10 CadDate As Date EditName As String * 10 EditDate As Date Empresa As String * 10 OSNo As Integer ClNo As Integer Fantasia As String * […]

我可以在Excel 2010精简版中使用VBA吗?

我有MS-Excel 2010“入门版” – 它被捆绑到预先构build的PC中。 这个版本是否支持VBAmacros? 我不能说。 我搜查了一下,现在还不清楚。

Excel:运行时错误'13'types不匹配

可能是什么原因,我得到了运行时错误'13'types不匹配这行VBA代码: .Cells(1, 1) = CDate(Format(Now, "dd.mm.yy hh:mm")) 问题是,一个同事不会得到这个错误。 我们有一个“德国”办公室。

Excel – 复制显示的值不是实际的值

我是一名飞行员,并使用一个名为Logten Pro的日志程序。 我有能力从我的工作飞行pipe理软件中保存excel电子表格,并使用CSV格式导入Logten Pro。 然而,我的问题是工作飞行pipe理软件,把飞行起飞的date和时间以下面的excel格式输出到一个单元格中:DD / MM / YYYY H:MM:SS PM。 这可以通过Excel处理,并且默认格式化为DD / MM / YY,即使实际值更具体,包括全长date和时间组。 这是一个问题,因为Logten Pro只会自动导入date,如果它是DD / MM / YY格式,并且没有办法只显示DD / MM / YYdate而不是实际的完整date时间组值,除非您手动通过并删除function框中的额外文本。 我的问题是:是否有一个VBAmacros可以自动复制实际显示的文本,并将其粘贴到另一个单元格中,将实际值更改为只是DD / MM / YY值? 另外,可以这样做,一次只能处理整个列而不是单个单元格吗? 注意我没有VBA的经验,所以完美的答案只是一个完整的VBAstring,我可以复制和粘贴。 谢谢。

如何使用variables名称在工作表上引用控件对象?

我已经添加一个列表框到SHEET(而不是“UserForm”),我用鼠标做了这个。 我点击了小锤子和扳手图标。 这个ListBox似乎很容易使用这样的代码引用: ListBox1.Clear 要么 ListBox1.AddItem("An option") 不过,我有三个这些ListBox(方便地命名为ListBox1,ListBox2和ListBox3),我想写一个函数来填充他们的数组数据,像这样: Call populate_listbox(ListBox2, designAreaArray) 第一个参数是列表框名称,第二个是数据。 但是我不知道如何正确发送“ListBox2”,或者在函数中正确引用它。 例如: Dim controlName as string controlName = "ListBox1" 不起作用,即使我定义的function如下: Sub populate_listbox(LB As ListBox, dataArray As Variant) Dim i As Integer: i = 0 For i = LBound(dataArray, 2) + 1 To UBound(dataArray, 2) ' Skip header row LB.AddItem (dataArray(index, i)) Next i […]

取消隐藏Excel应用程序会话

我有一个Excel VBA方法(我没有写它)运行,它所做的第一件事之一是隐藏Excel会话Application.Visible = False 。 但是,该方法完成后,它不会取消隐藏Excel会话,因此它保持打开状态,并在任务pipe理器中列出,但隐藏且看似不可用。 有谁知道,没有打开VBE(所以可以访问即时窗口并运行Application.Visible = True ),如何取消隐藏此Excel会话? 目前,我只需要使用任务pipe理器来终止会话。 这不是一个大规模的交易,但我只是有兴趣,如果有人知道如何复活这样的会议。