我想将单元格的字体颜色设置为特定的RGB值。 如果我使用 ActiveCell.Color = RGB(255,255,0) 我得到黄色,但如果我使用更奇特的RGB值,如: ActiveCell.Color = RGB(178, 150, 109) 我刚回来一个灰色。 为什么我不能使用任何RGB值? 你知道任何解决方法吗? 谢谢。
如果你想创build自己的xla,你怎样才能制作.xla文件? 我有代码,类,形状等….制作一个xla文件指向的过程是什么? 我知道我必须把它放在我的程序文件文件夹,然后通过步骤来添加一个“加载项”xls …但我的意思是实际上保存一个xla文件指向…. 我可以简单地写在xls所有这一切,然后将其保存为文件typesxla? 因为我试图这样做,但是当我在试图指向它的电子表格中出现错误时,它不是一个有效的添加项? 谢谢!
我有一个vba userForm有36个button。 我想在我的一个展位上的某个值达到某个数时禁用所有的button。 现在,每点击一个button,电子表格上的数字就会上升一个。 当数字达到三时,我想禁用所有的button。
我有一个工作簿设置第一个选项卡包含参数列表。 每一列是不同实例的一组参数。 然后我有一个实例的模板工作表,用户使这个模板的许多副本。 模板所做的一件事就是dynamic地从第一张表中拉出参数。 用户input一个列号(1到n),该列中的参数从第一个工作表拉出,用于该实例。 然后该实例使用这些参数运行数十万行计算。 参数表 示例实例 我的问题似乎与波动有关。 对于大量实例,如果使用偏移或间接来获取参数,则工作簿中任何单元格中的任何更改都会导致在每个实例工作表上重新检索参数,因此每次都会重新计算每个工作表的整体,每当进行更改时,将工作簿冻结约3秒钟。 我以为我可以通过使用索引来减轻这一点。 每个工作表参数引用包含该参数的第一个工作表上的行,并将列号作为索引参数提取。 这解决了导致重新计算的任何变化的问题。 现在只有参数范围的变化会导致重新计算,但由于某些原因,情况会更糟糕。 现在,更改工作簿中的随机单元格不再导致整个事情在重新计算时冻结3秒钟,但更改参数范围中的相关单元格将导致每个表单重新计算,并需要大约10秒钟。 为什么这个方法慢得多。 在技术上应该像以前一样做相同的事情,只是在相关参数改变的时候。 有什么办法可以设置它,以便当前面板上的参数发生变化时,只有受该参数影响的纸张才会重新计算? 解决scheme 我考虑过涉及VBA的复杂解决scheme,于是复制模板实例监视其“实例号”单元。 当它被更改时,VBA代码可以将相应的参数复制到工作表并在这里硬拷贝这些值。 我还需要VBA监视主参数表上的更改事件。 当任何东西被改变时,它将不得不检查列号,迭代所有的模板,并重新复制值,如果该实例编号被引用。 我想避免这个解决scheme的原因是使VBA保持不变,但如果没有办法让excel的重新计算变得更加智能化,那么可能有必要这样做。
我正在尝试使用Excel VBA中的工作表更改事件,但似乎不起作用。 从我所收集的内容中,只需定义处理函数“Worksheet_Change”就足够了,就像我在这里所做的那样: Private Sub Worksheet_Change(ByVal Target As Range) Range("J1").Select If Target.Address = "$J$1" And ActiveCell.Value = 1 Then Range("B1").Select Dim c As Integer c = ActiveCell.Value c = c + 1 ActiveCell.Value = c End If End Sub 问题是,我不确定我应该在哪里定义它。 我刚刚把它放在“module1”,这是我做第一个macros时自动生成的。 它是否正确? 我对VBA很新,所以我对它还不太了解。
我正在尝试使用VBA正则expression式来validation窗体的时间范围: #0:00xm – #0:00xm其中x是a或p 。 所以string文字可以是"1:30pm – 12:00am" 。 我想匹配有这种模式的细胞。 当我在这个在线工具中使用正则expression式时: http://public.kvalley.com/regex/regex.asp : http://public.kvalley.com/regex/regex.asp并检查我的expression式,它正确匹配。 但是,当我在VBA中使用相同的expression式时,它不匹配。 Dim rRange As Range Dim rCell As Range Set rRange = Range("A2", "A4") '"G225") For Each rCell In rRange.Cells MsgBox (rCell.Value) If rCell.Value Like "^([0-9]{1,2}[:][0-9]{2}[apm]{2}[ ][-][ ][0-9]{1,2}[:][0-9]{2}[apm]{2})$" Then MsgBox ("YES") 'rCell.Interior.Color = RGB(0, 250, 0) Else MsgBox ("NO") 'rCell.Interior.Color = […]
我目前正在尝试制作一个macros,它将进入一个目录,打开一个工作簿(目前有38个,最终总数为52),过滤两列,获得总数(重复这4次),并closures工作簿。 目前,我的应用程序需要大约7分钟来处理当前的38个工作簿。 我怎样才能加快速度呢? 我已经禁用屏幕更新,事件,我改变了计算方法xlCalculationManual。 我不知道这是否是通用的做法,但我曾经看到有人问过在不打开的情况下访问工作簿的方法,但总是提出closures屏幕更新的build议。 当我在debugging模式下运行时,Workbooks.Open()最多可能需要10秒。 文件目录实际上是在公司networking上,但是通常只需要5秒就可以访问文件。 工作簿中的数据可以包含相同的点,但处于不同的状态。 我不认为把所有的数据合并成一个工作簿是可能的。 我将试验直接单元格引用。 一旦我有一些结果,我会更新我的post。 Private UNAME As String Sub FileOpenTest() Call UserName Dim folderPath As String Dim filename As String Dim tempFile As String Dim wb As Workbook Dim num As Integer Dim values(207) As Variant Dim arryindex Dim numStr As String Dim v As Variant Dim init […]
应用程序:Excel Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") – 1) 我需要从工作簿path返回至less2个文件夹。 我不能使用“C:/ Folder1”之类的path,因为应用程序将被移动多次。
我目前正在使用Target.Address来确定单元格何时被双击,并运行一段代码,将用户带到显示该单元格中包含的信息的相关工作表。 举例来说,如果一个单元格说3个系统没有做某种动作,如果用户点击那个单元格,他们就会被带到这3个系统。 目前,我正在这样做: If Target.Address = "$B$20" Then Win2KTrackerIncompleteFilter (strEngUnits(9)) ElseIf Target.Address = "$C$20" Then Win2KTrackerIncompleteFilter (strEngUnits(0)) ElseIf Target.Address = "$D$20" Then Win2KTrackerIncompleteFilter (strEngUnits(1)) etc 我已经把大部分代码放在一个小函数中,所以这似乎在做好这个工作。 但是,如果我要在第20行上面插入一个新的行(从上面的例子),所有这些引用将指向错误的地方。 我以为我可以通过删除绝对引用($符号)来处理这个问题,但这只是打破了机制。 任何人都可以build议如何:a)重写代码以使其更有效; b)保护代码,以便插入新行,并且代码将记住它指向的行/列,并相应地进行更新。
我知道你可以使用Ctrl + Break手动停止正在运行的VBAmacros,但是有什么方法可以让代码自动停止,如果满足某些条件? exit function / exit sub不工作,因为他们只是终止他们被调用的方法。 例如, sub a call b msgbox "a complete" end sub sub b call c msgbox "b complete" 'this msgbox will still show after the `exit sub` in 'c' end sub sub c msgbox "entering c" exit sub 'this will only `exit sub` 'c', but not 'a' or […]