Tag: vba

MS应用程序可以运行VBA代码吗?

我刚开始学习VBA。 据我所知,使用VBA在MS-Excel中编写macros。 但是我想知道它是否是VBA的唯一应用领域。 它可以像许多其他标准语言一样使用,例如Python。 如果是这样的话,我该如何编译一个VBA程序? 是否应该编译? 我怎样才能运行这样的VBA程序?

在VBA中传递Variant参数ByRef时发生编译错误

Excel VBA中有一个“编译”错误,我不明白… 我有一个这样的方法: Public Sub SomeMethod(ByRef argument As SomeClass) … <- 'argument' must be called ByRef because I have to modify it End Sub 如果我定义一个variables,如: Dim var As SomeClass 没问题,我可以打电话: SomeMethod var 它正在工作。 但是,如果我定义一个Variantvariables,如: Dim var as Variant Set var = New SomeClass 它不起作用。 如果我打电话: SomeMethod var VBpopup消息: 'ByRef参数types不匹配' 如果我打电话: SomeMethod (var) 它“编译”,但是var然后通过ByVar,它给了我一个运行时错误信息: '对象不支持这个属性或方法' 所以我基本上只是想告诉VBA,我的Variantvariables“var”实际上是一个“SomeClass”对象(在debugging器中,VBA是这么说的),但我不知道该怎么做… […]

如何使用VBA检测不适合Excel单元格的值?

我们正在使用各种工具生成长的Excel工作表,这些工具必须在工作stream程中进一步查看和使用。 问题是某些单元对于包含的文本太小。 所以正在阅读工作表的人和程序将看不到相同的数据。 这通常适用于包含自动包装的文本的合并单元格时,Excel不正确地调整行高。 但是也有其他的一些情况:例如,当某些列的宽度已经明确设置时,这对于long值是不够的。 |Group|Def1 |Subgroup|Definition| Id |Data |Comment | |——————————————————-| | G1 | | G1-1 |Important |G1-1-1|… | | | |Long | |about G1-1|G1-1-2|…..|…….. | | |text |——————————————-| | |about| G1-2 |Another |G1-2-1|… | | | |group| |important |G1-2-2|… |long comme| | |G1. | |text about|G1-2-3| | | |——————————————————-| 在这里,“定义”和“评论”中的某些单元格不完全可见。 有没有任何方法来编程find这样的细胞?

按下button时VBA事件抛出错误?

当我点击工作表上的一个button时,会调用下面的事件。 我得到错误“types不匹配” 我怀疑我需要另一个if语句来停止原来的IF被评估如果事件是由于一个button被按下? Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("D4") Then 'Error is here End If End Sub

在Excel中创build删除线macros

我是VBA的新手,我试图做一个简单的macros,在那里可以突出显示一组单元格,单击一个button,并删除选定的销售。 之后,您可以再次select单元格,单击相同的button,并删除删除线。 我一直在寻找体面的文件,但还没有find任何东西。 这是一些代码。 另外,我很想知道VBA上最好的文档在哪里。 Sub strikeOut() Selection.Font.Strikethrough = True End Sub 我也需要帮助与命令button。 谢谢。

基于值的Excel单元格locking范围

是否有可能locking一个特定范围的单元格基于从一个下拉列表中的数据input? 例如,我的电子表格的每一行代表一个病人,第一个单元格提出一个问题,要求“是”或“否”的答复(通过下拉select/input)。 编辑 实际上,“是/否”单元是两个单元格(G13和H13)的合并。 我已经更新了我的例子来反映这一点。 编辑完成 如果用户select“否”,那么我想locking问题范围的其余部分(G13-H13:AB13),因为这里不需要input数据。 但是,如果用户select“是”,则其余的单元应保持可用于input数据。 每个范围内的所有单元格都只有通过下拉菜单input的数据。 这是我希望实现的: If "No" Then lock range G13-H13:AB13 Else If "Yes" Then do nothing ie G13-H13 I13-J13 K13-L13 …. …. AB13 | NO | —- | —- | —- | —- | —- | (Locked Cells) OR G13-H13 I13-J13 K13-L13 …. …. AB13 | YES | | […]

行高度AutoFit不起作用

所以,今天是我糟糕的一天 我发现excel行AutoFit – 不起作用 a = "Please" b = "Do AutoFit" range01.Value = a & vbNewLine & b range01.EntireRow.AutoFit // First and last line are horizontally cutted Chr(10)而不是vbNewLine – 没有帮助 它只有在我没有换行符的情况下才有效: range01.value = a & b range01.EntireRow.AutoFit // works !!! Thanks to Microsoft !

如果表中的值满足条件,VBAmacros将从表中复制行

我试图做一个macros: 经过一张桌子 看看该表的B列中的值是否具有一定的值 如果有,则将该行复制到另一个工作表中的范围 结果类似于筛选表,但我想避免隐藏任何行 我有点新vba,真的不知道从哪里开始,任何帮助非常感谢。

对于每个控制variables必须是变体或对象

真的很新的VBA在这里…我环顾四周,试图拼凑一些代码,以满足我的需要。 认为它几乎在那里,但我得到的错误可能容易克服,但我不知道如何。 代码查看当前工作表(STOCK),并从单元格A2获取“目标”文本值。 然后它在另一个表“其他”中search一个命名范围。 如果确定Other中的其中一个单元格('cand')等于目标值,则在原始目标的同一行上的STOCK表格的G列将应用“True”值。 希望这是有道理的。 我已经复制了代码,这可能会让事情更清楚。 Dim target As String Dim cand As String Dim currentrow As Integer Sub search_named_range()'这个范围是硬编码的; 我们可以尝试A:如果硬编码版本工作'对于每个目标在工作表(“STOCK”)。范围(“A2:A1000”)'检索当前范围的行,用于设置目标值'currentrow =范围(target).Row'FOR循环searchMojave中零件编号的范围'For Each cand In Worksheets(“Other”)。Range(“N9:N150”)如果StrConv(cand.Value,2)= StrConv(target, 2)然后工作表(“STOCK”)。范围(“G”+ currentrow)=“真”转到前端如果下一步cand'如果部分没有find,什么都不做,返回find下一个目标'FORend:Next target End Sub 目前,我收到错误“对于每个控制variables必须是变体或对象”,但无法find任何解释为什么这是。 我相信这是很明显的,但一个steer将非常​​感激。 谢谢。

在VBA中search包含小数的数字的string

所以我正在从一个相当笨重的数据库input一个项目,我可以控制它给我的数据types。 它基本上给我一个string,其中包含小数的数字。 “每天口服0.5片 ”。 每当它说选项卡,我想抓住之前的数字选项卡,并将其转换为双格式。 我知道如何使用cdbl来转换它,一旦我有string“0.5”,但我怎么得到这个string是有点困难,因为InStr只从左到右search。 我的想法是使用InStr来find前面的单词“标签”之前的数字空间,但我无法弄清楚如何编码。 有什么build议么?