Tag: vba

如何修复无法将最后一个元素滚动到视图中的Excel列表框

自从我记得以来,我在excel UI中遇到的一个杀手级问题就是使用listbox滚动。 当您可以显示一个列表框中有更多的元素时,会出现一个scoll栏。 但是,在某些情况下,将条形一直滚动到列表的底部并将其释放,会使条形向上“跳跃”一个凹槽,并且无法看到列表中的最后一个项目。 这里说明: 有很多论坛post提出这个问题,解决scheme一直是“将整体高度属性设置为false,然后再次设置为true”。 这样做是稍微调整列表框的大小,使其高度四舍五入到单个行的高度,然后不隐藏任何项目。 With lstbox .IntegralHeight = False .Height = myHeight .IntegralHeight = True End With 但是,在某些情况下,这是行不通的。 如果你是: 以编程方式设置列表框的高度 不使用简单的列表框select(fmMultiSelectSingle) 然后简单地将整体高度设置为false,然后在更改高度之后更改true,将调整列表框的高度,但是当您向下滚动时,问题将保持不变 – 最后一个项目无法看到。 这个令人沮丧的问题的关键是,虽然互联网上的其他人都确认“整体高度”解决scheme适用于他们,但这些非常特殊的情况令人沮丧,想知道为什么它不适合他们。 那么他们如何得到解决?

给另一个单元格指定一个背景颜色

我正在尝试在Microsoft Excel 2010中创build一个公式来完成以下algorithm: 如果A1 = 10,则A2具有红色的背景颜色。 我有Excel中的if / then语句的基本知识,所以我有这个到目前为止: =IF(A1=10, x) …其中x将是改变单元格背景颜色的公式。 但是,在对这个主题进行了一些networking研究之后,似乎应该使用条件格式来完成这个任务。 我从来没有使用条件格式,并且无法理解如何利用它,使一个单元格的条件会影响另一个单元格。 这是我所面对的条件格式化屏幕: 所以我想我有两个问题: 是使用条件格式来完成这个最好的方法? 如果是这样的话,我怎样才能利用它给一个单元格赋予一个背景颜色,给出一个不同单元格上的条件的真实性?

有没有办法在VBA中的DIR(path)处理超过260的string?

鉴于以下片段: Dim s As String: s = "S:\vic\bla\[..insert more here..]\data.xml" Debug.Print Len(s) Debug.Print Dir(s) 如果Len(s) >= 260则会收到以下错误消息: Run-time error '53': File not found 如果string小于260,它可以正常工作,并显示find和未find文件的预期行为。 是否需要使用long(> 260)path名称来处理DIR? 笔记 文件重组不是一个选项 我在Excel 2007中运行这个

为什么不select显式捕获ReDim <undeclared>?

有谁知道为什么这不会在编译时抛出一个Variable not defined错误吗? 'Class1.cls' Option Explicit Public Sub foo() ReDim fubar(1 To 2, 1 To 1) End Sub 我误解了Option Explicit应该如何工作? 或者这个testing有什么问题吗? 或者这只是VBA中的一个错误? (我正在Excel 2007上进行testing)

我可以在VBA中以编程方式检查Excel函数签名吗?

而不是按名称显式访问所有参数,有没有办法从函数内部以编程方式获取函数参数列表? 所以对于这个函数签名: Function doSomething(Arg1 as String, Arg2 as Range, Optional Arg3 as String): 在那里,理想情况下,包含参数名称及其元数据(types,可选,默认值等)的对象? 例如,这个函数里面的代码Me.Arguments会产生一个像这样的字典: { "Arg1": { "Type": String, "Optional": False, "Default": Nothing }, "Arg2": { "Type": Range, "Optional": False, "Default": Nothing }, "Arg1": { "Type": String, "Optional": True, "Default": Nothing } } 谢谢。

按下“刷新”或“全部刷新”button后如何调用macros?

最后,我想在任何人刷新工作簿后运行一个macros,特别是使用Excel中“数据”选项卡下的“刷新”button。 但是,暂时,我会满意只是得到BeforeRefresh或AfterRefresh QueryTable事件按下刷新button时触发。 除了在微软开发中心网站上提供的“文档”外,我作为研究过程的一部分阅读的相关文章包括: Excel VBA – QueryTable刷新完成后,不会调用AfterRefresh函数 Excel AfterRefresh事件的VBA 还有其他不太有用的或相关的post,但我缺乏声誉在这里发布。 我显然错过了一些重要的(很可能是显而易见的)。 这是我到目前为止: 在类模块(qtclass)下 Option Explicit Private WithEvents qt As Excel.QueryTable Private Sub qt_AfterRefresh(ByVal Success As Boolean) MsgBox "qt_AfterRefresh called sucessfully." If Success = True Then Call Module2.SlicePivTbl MsgBox "If called succesfully." End If End Sub Private Sub qt_BeforeRefresh(Cancel As Boolean) MsgBox "qt_BeforeRefresh called." End […]

如何从VBA访问SQLite?

我有一个Excel工作簿,有一些adodb代码查询本地访问数据库。 我想为SQLite做同样的事情,因为我相信会提供更好的性能。 我怎么做? 我可以使用adodb或odbc连接到SQLite文件吗? 我需要一些简单的,我可以部署,如果我可以尽量减less不必要的configuration和安装也许peoople将使用excel将不具有PC上的pipe理员权限,所以他们不能安装软件。

在excel中将一个string写入一个单元格

我试图写一个值到“A1”单元格,但是得到以下错误: 应用程序定义或对象定义的错误“1004” 我在网上尝试了很多解决scheme,但都没有工作。 我使用的是Excel 2007,文件扩展名是.xlsm。 我的代码如下: Sub varchanger() On Error GoTo Whoa Dim TxtRng As Range Worksheets("Game").Activate ActiveSheet.Unprotect Set TxtRng = ActiveWorkbook.Sheets("Game").Cells(1, 1) TxtRng.Value = "SubTotal" 'Worksheets("Game").Range("A1") = "Asdf" LetsContinue: Exit Sub Whoa: MsgBox Err.number Resume LetsContinue End Sub 编辑:我得到错误后,如果我点击警告图标,然后select显示计算步骤其正常工作

使用VBA将excel文件中的图片导出为jpg

我有一个Excel文件,其中包括列B中的图片,我想要将它们导出到多个文件(如.jpg(或任何其他图片文件格式))。 该文件的名称应该从列A中的文本生成。我尝试以下VBAmacros: Private Sub CommandButton1_Click() Dim oTxt As Object For Each cell In Ark1.Range("A1:A" & Ark1.UsedRange.Rows.Count) ' you can change the sheet1 to your own choice saveText = cell.Text Open "H:\Webshop_Zpider\Strukturbildene\" & saveText & ".jpg" For Output As #1 Print #1, cell.Offset(0, 1).text Close #1 Next cell End Sub 结果是它生成文件(jpg),没有任何内容。 我假定行Print #1, cell.Offset(0, 1).text. 是错的。 […]

input左括号时,Excel崩溃

这是我不明白的一个。 鉴于这个类模块(剥离到最低限度重现崩溃): VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "TestCrashClass" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Public Function Init() As TestCrashClass Attribute Init.VB_UserMemId = 0 Dim tcc As New TestCrashClass Set Init = tcc End Function Public Property […]