Tag: vba

使用VBA将条件格式应用于一系列单元格

我想知道如何访问标题为“适用于”的条件格式的列,并input我自己的条件。 我已经包含了一个截图,以供参考。 我的条件格式添加语法的代码是, With Selection .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=" & c.Address & "=TRUE" . . . End With 我相信代码应该添加在那里,但我找不到正确的语法。 更新: 我更新了我的代码,看起来像这样, With Range(Cells(c.Row, "B"), Cells(c.Row, "N")) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=" & c.Address .FormatConditions(1).Interior.ColorIndex = 15 'change for other color when ticked End With 这基本上会使特定范围的行与我放置checkbox的位置相关,并更改其背景颜色。 checkbox的位置由c.Address表示,其中“c”包含我select放置checkbox的单元格的位置。

跟进使用VBA发送电子邮件

这是关于使用VBA发送电子邮件的几条消息的后续步骤。 大多数build议使用Outlook,CDO或MAPI: Set appOL = CreateObject("Outlook.Application") Set msgOne = CreateObject("CDO.Message") Set mapi_session = New MSMAPI.MAPISession 但显然,Outlook将要求我改变我们的工作组安全设置,CDO和MAPI将要求我添加一个DLL或其他东西。 我正在尝试使用Excel在工作中组织小组作业,而且我无法以任何方式修改其他人的计算机。 有没有更简单的方法发送电子邮件从Excelmacros? 我所需要的只是邮件正文中的一个文本块,没有附件。 我一整个星期都在Google,MSDN和StackOverflow上耕耘,我被困在一艘慢船上。

Excel VBA函数将数组打印到工作簿

我已经写了一个需要2维数组的macros,并将其“打印”到Excel工作簿中的等效单元格。 有没有更优雅的方式来做到这一点? Sub PrintArray(Data, SheetName, StartRow, StartCol) Dim Row As Integer Dim Col As Integer Row = StartRow For i = LBound(Data, 1) To UBound(Data, 1) Col = StartCol For j = LBound(Data, 2) To UBound(Data, 2) Sheets(SheetName).Cells(Row, Col).Value = Data(i, j) Col = Col + 1 Next j Row = Row + 1 Next […]

VBA对象不支持此属性或方法

我只需要计算一张纸上的区域数量。 我有的代码是: Sub areas() Dim i As Long i = Worksheets("Sheet2").Selection.Areas.Count MsgBox i End Sub 但由于某种原因,我收到错误消息“对象不支持此属性或方法”。 我不知道为什么。 这个代码基本上只是从微软网站上复制而来。 我甚至无法得到打印Worksheets("Sheet2").Selection.Areas.Count的立即窗口Worksheets("Sheet2").Selection.Areas.Count部分。 任何快速的帮助? 我正在使用Excel 2010。 谢谢。

从excel / vba中调用python脚本

我有一个Python代码,读取3个参数(标量)和一个文本文件,然后返回给我一个双向量。 我想在vba中编写一个macros来调用这个python代码,并将结果写入一个相同的excel表单中。 我想知道最简单的方法是什么,下面是我发现的一些东西: 在vba中调用shell()函数,但获取返回值似乎并不那么容易。 注册Python代码作为一个COM对象,并从vba调用它 – >我不知道如何做到这一点,所以如果你有一些例子,这将是更多的欢迎 在自定义工具箱中创build一个自定义工具,在vba中创build一个地理处理对象,然后添加工具箱,然后我们可以直接通过地理处理对象使用自定义工具,但这也是我不知道该怎么做的。 有小费吗?

Excel中的嵌套IF语句

我正在尝试创build一个电子表格,根据他们得到的分数自动给学生一个分数。 我显然打了Excel的嵌套的IF语句限制是7。 这是我的if语句: =IF(O5>0.895,"A+",IF(O5>0.845,"A",IF(O5>0.795,"A-",IF(O5>0.745,"B+",IF(O5>0.695,"B",IF(O5>0.645,"B-",IF(O5>0.595,"C+",IF(O5>0.545,"C","D")))))))) 我正在网上阅读,我可以创build一个VBA脚本,并指定它,但我不知道任何关于VBA ….所以如果有人可以帮我写一个VBA的,这将是真棒。 它仍然缺lessC级,任何东西都应该被授予D标记。 这是我正在创build的评分scheme…: A + 89.500 – 100.000通过优异 84.500 – 89.490通行证有区别 A- 79.500 – 84.490通过优秀 B + 74.500 – 79.490及格 B 69.500 – 74.490及格 B- 64.500 – 69.490及格 C + 59.500 – 64.490通过 C 54.500 – 59.490通过 C- 49.500 – 54.490通过 D 0.000 – 49.490指定失败 我不介意走下VBA路线,但是我对VB语言的了解绝对是最小的(不喜欢它)…如果这太乏味,我想创build一个小的PHP / MySQL应用程序。

如何提高VBAmacros代码的速度?

我没有太多编写macros的经验,因此遇到以下问题需要本社区的帮助: 我的macros复制一个工作表中垂直范围内input值的范围,然后水平粘贴(转置)在另一个工作表中的值。 理论上,将第一张表格中的值粘贴到第二张表格中没有内容的第一行。 由于前五行具有内容,因此将值粘贴到第六行。 我在运行macros的时候遇到的问题是,我觉得它太慢了,所以我希望它运行得更快。 我有相同的macros做同样的事情,但是将值粘贴到另一个工作表到第一行,它运行完美。 因此,我最好的猜测是第二个macros运行缓慢,因为它必须在第六行开始粘贴,前5行中可能有一些内容需要花费大量的时间来处理macros(有很多单元格引用其他工作簿)来确定粘贴的下一行应该在哪里。 这是我最好的猜测,因为我几乎不知道macros,所以我不能确定问题是什么。 我在此向您提供我的macros的代码,并真诚地希望有人能告诉我什么是使我的macros慢,并提供了一个解决scheme,如何使其运行更快。 我在想,一个解决scheme可能是macros不应该考虑前五行的数据,并立即开始粘贴第6行第一个条目。 然后在第7行,等等。这可能是一个解决scheme,但我不知道如何编写代码的方式,它会这样做。 感谢您花时间帮助我find一个解决scheme,这里是代码: Sub Macro1() Application.ScreenUpdating = False Dim historyWks As Worksheet Dim inputWks As Worksheet Dim nextRow As Long Dim oCol As Long Dim myCopy As Range Dim myTest As Range Dim lRsp As Long Set inputWks = wksPartsDataEntry Set historyWks = Sheet11 'cells to […]

在VBA中从一个范围创build一个数组

我有一个看似基本的问题,但找不到解决它的任何资源。 简而言之,我只是想将单元格范围内的所有内容(全部列)加载到数组中。 我可以通过这个方法来完成这个任务 DirArray = Array(Range("A1"), Range("A2")) 但出于某种原因,我不能创build这样的数组: DirArray = Array(Range("A1:A2")) 我真正的范围更长(可能会有所不同),所以我不想单独列举单元格这种方式。 任何人都可以告诉我如何正确加载到一个arrays的整个范围? 用后面的代码: MsgBox UBound(DirArray, 1) 和 MsgBox UBound(DirArray) 返回0,而前者返回1。

lockingMicrosoft Excelmacros

我花了一些时间写了一个Excelmacros,这是很多公司可能值钱的。 如何lockingmacros以防止人们看到源/转发给其他人? 谢谢

将多个工作表同时导出到PDF,而不使用ActiveSheet或Select

我遇到的问题是相当简单的描述。 它已经钻进我的脑海(通过对SO和其他Excel VBA论坛/资源的大量阅读),一般来说,为了避免错误并提供良好的用户体验,最好避免使用。select,。 .Activate , ActiveSheet , ActiveCell等等写入VBA代码。 牢记这一点:是否有办法在工作簿中的Sheets子集上使用.ExportAsFixedFormat方法,而不使用上述方法之一? 到目前为止,我已经能够做到这一点的唯一方法是: 使用For Each ; 但是,这会导致分开的PDF文件,这是不好的。 使用类似于macroslogging器生成的代码,该代码使用.Select和ActiveSheet : Sheets(Array("Sheet1", "Chart1", "Sheet2", "Chart2")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "exported file.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, openafterpublish:= True 有任何想法吗? 也许这是不可能不使用ActiveSheet ,但我可以至less绕过使用。select某种方式? 编辑: 为了节省任何修补的麻烦,我已经试过这个: Sheets(Array("Sheet1", "Chart1", "Sheet2","Chart2")).ExportAsFixedFormatType:= _ xlTypePDF, Filename:= "exported file.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, openafterpublish:= _ True 产生error 438: Object […]