要做这个Function,我们需要传递2个参数: RngSrc:要统计的单元格范围 RngCriteria:标有要统计的颜色的单元格 第1个参数肯定是必须的,设置第2个参数的目的是因为,单元格底色所代表的数字我们正常是记不住的...,传入1个设置了底色的单元格参数是比较方便的,实现的代码很简单: 'RngSrc 要统计的单元格范围 'RngCriteria 标有要统计的颜色的单元格 Public Function
标签:VBA 这是在exceloffthegrid.com中看到的一个案例,一个非常有用的节省时间的宏:在单元格之间分配值。...下面的VBA代码采用第四个选项。...0 If total = 0 Then MsgBox Prompt:="所有单元格的总和不应为0", _ Title:="Apportion value" Exit Sub End...用户单击取消 If apportionValue = False Then Exit Sub '获取布尔值以保留公式或对结果进行硬编码 keepAsFormula = MsgBox("保留公式?"...根据原始值,按比例分配21到所有单元格。 图4 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
借助Excel VBA宏的强大功能,用户可以提高工作效率、简化重复性任务,并根据自己的需求进行定制化操作。...完成后会弹出一个提示框,显示操作已完成。..."已将所有图片移动到A1单元格位置。"...End Sub 运行该宏后,它会遍历工作薄中的每个工作表,并将每个作表中的图片移动到A1单元格的位置。在移动图片之后,会弹出一个提示框显示操作已完成。...在删除图片之后,会弹出一个提示框显示操作已完成。 请注意,宏只会处理工作表中的图片形状,对于其他类型的形状(如图表等),需要根据实际情况进行适当修改。
标签:VBA,工作表事件 当工作表单元格中的值被修改后,我需要将修改前的值放置到其右侧单元格中。例如,单元格A1中输入有数值1,当我将其内容修改为2之后,之前的数值1被放置到单元格B2中。...Worksheets("Sheet1").Range("B1") = sOldValue Application.EnableEvents = True End If End Sub 这样,当在单元格...A1中重新输入值时,原值会自动放置到单元格B1中。...当一列单元格区域中的值发生改变时,需要将修改之前的值放置到相邻列对应单元格中,例如对于单元格区域A1:A10,其值发生改变时,原来的值会自动放置到单元格区域B1:B10对应的单元格中。
本文给出了一种根据单元格背景色汇总单元格数据的方法:使用VBA创建一个自定义函数来实现该目的。...我们希望这个函数工作的方式是,填充了颜色的单元格来表示额外的信息,例如代表诸如“目标已实现”或“目标未达到”等内容。单元格颜色可以表示任何字面意思。 示例数据如下图1所示。 ?...图1 我们的函数名为SUMCOLOR,包含两个参数,语法为: SUMCOLOR(MatchColor, SumRange) 其中: 参数MatchColor,代表正在搜索的包含有颜色的单元格地址,示例中是单元格...参数SumRange,代表想要汇总的单元格区域(有颜色或没颜色)。示例中,单元格区域是A4:C11。(注:需要定义为绝对引用,以便每个搜索颜色的SumRange保持相同。)...这样,在单元格G4中,我们的公式应该像下面: =SUMCOLOR(F4, A4:C11) 当按下回车键后,应该看到结果为40。 如果将公式向下复制到单元格G6,其结果应该如下图2所示。 ?
运用VBA操作单元格的技术 操作单元格的VBA技术也能够应用于表。 联合多个单元格区域 要选取多个单元格区域,可以使用VBA的联合运算。下面的代码选取行4、行1和行3。...AssignValueToTableFromArray() '赋值给数组 Dim myArray As Variant myArray = Range("A20:D20") '赋数组中的值给表...下面是一些用于控制表的有用的VBA代码。...注意,可以根据实际情况修改tblName变量来满足你的需要。...Else MsgBox "当前单元格所在的表名是: " & ActiveTable.Name End If End Sub 方法2: 下面的代码有些繁琐,遍历工作表中的每个表并检查其是否与当前单元格存在交叉
和select方法选中单元格 copy方法复制单元格区域 cut方法剪切单元格区域 用delete方法删除指定的单元格 操作对象的一些例子 根据需求创建工作簿 判断某个工作簿是否已经打开 判断文件夹中是否存在指定名称的工作簿文件...进入开发工具窗口 2.选择插入模块,然后插入过程,选择子程序 VBA语法规则 在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。...根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal...2 当表示1的值为TRUE,表达式2的值为false时返回false,否则返回TRUE VBA内置函数 函数虽然很多,但是我们不需要很精确的记住它们。...如想删除B3所在的整行单元格,应将代码写为: range("B3").entirerow.delete 操作对象的一些例子 根据需求创建工作簿 利用VBA创建一个符合自己需求的工作簿,并将其保存到指定的目录中
标签:VBA 下面的VBA自定义函数演示了如何对应用了粗体格式的单元格求和。...ErrHandler: '检查是否溢出 If Err.Number = 6 Then SumBold = CVErr(xlErrNum) Resume Continue End Function 注意,当求和的单元格区域中单元格格式发生更改时...,不会触发任何事件;而使用Application.Volatile语句,每当在工作表上的内容更改时,单元格都会重新计算。...这意味着,仅对求和单元格区域中的单元格设置加粗格式,使用该自定义函数求和的值不会改变,除非按F9键强制计算,或者在工作表中输入内容导致工作表重新计算。...这个程序也提供了一个模板,可以稍作修改对其它格式设置的单元格来求和
一维常量数组的定义Sub arrDemo1()Dim arr(2) As Variant '数组arr(0) = "vba"arr(1) = 100arr(2) = 3.14MsgBox arr(0...A1:B2的值装入数组arr1arr2 = Range("a1:b2") '把单元格区域A1:B2的值装入数组arr2 MsgBox arr1(1, 1) '读取arr数组中第1行第1列的数值MsgBox...")arr1 = VBA.Filter(arr, "A", True) '筛选所有含A的数值组成一个新数组arr2 = VBA.Filter(arr, "A", False) '筛选所有不含A的数值组成一个新数组...(10, "vba", 2, "b", 3)arr1 = Application.Transpose(arr)MsgBox arr1(2, 1) '转换后的数组是1列多行的二维数组End Sub '二维数组转一维...arr3(4)End Sub '把单元格中的内容用“-”连接起来Sub join_transpose_demo()arr = Range("A1:C1")arr1 = Range("A1:A5")MsgBox
学习Excel技术,关注微信公众号: excelperfect 添加按钮控件 假设你需要对工作表中前面有货币符号的值执行计算,然而那些值被解释为文本,你要编写VBA过程来移除所选单元格区域中的货币符号。...要使该过程更易访问,你想在单元格上下文菜单中放置其快捷方式。下面的XML代码和VBA代码完成上述任务。 示例XML代码: ?...然而,如果动态菜单在单元格上下文菜单中,那么不需要编写VBA代码来使菜单无效。当用户右击工作表单元格时,动态菜单在单元格上下文菜单显示其内容的过程中重新创建。...下图展示了含有不同类型的(自定义和内置的)控件的单元格上下文菜单: 640 (1).gif 注意,无法将控件添加到Excel 2007中的单元格上下文菜单和更早的XML代码中。...然而,使用VBA代码实现添加控件仍然是可能的。
最近由于项目的需要,需要在Excel自定义一些函数,来完成特殊的处理,为了完成工作,就囫囵吞枣的写了一些代码,现在闲暇下来,就好好的学习一下,VBA的基础知识。...单元格 3.Cells(第几行,第几列) Cells(1,1) '表达第一行第一列的单元格 7.VBA对单元格的操作 1.获取单元格的值 Sub alert...MsgBox (A1) '弹出对话框 End Sub 1.单元格赋值 Sub setVal() Range("...() Range("B3").copy Range("C3") '将B3的值,复制到C3单元格 End Sub 4.单元格的剪切 Sub...("大于10") '弹出字符串时,必须为双引号 ElseIf B3 < 10 Then MsgBox ("小于10")
这两个属性是形状的Left和Top值,如下图11所示。 图11 如果不确定形状的大小,有两种常用的方法可以调整形状的大小。 方法1:基于工作表中某单元格左侧和顶部的位置。...下面的代码显示了如何使用单元格B1的Left值和单元格B10的Top值来重新放置所创建的矩形。...msoShapeRectangle, _ Range("B1").Left, _ Range("B10").Top, _ 100, 50) End Sub 方法2:可以在工作表中根据自己的喜好手动定位形状...End Sub 确定形状大小 可以使用VBA修改两个属性来更改形状的大小。这两个属性是形状的Width值和Height值,如下图12所示。...方法1:可以基于单元格区域的大小。
DB" End If End Sub 执行活动单元格的SQL: Sub rbbtnExcActivecellSql(control As IRibbonControl) If VBA.Len...) = SuccRT Then MsgBox "OK" Else MsgBox "请在活动单元格输入sql语句", vbInformation End...If Else MsgBox "请选择DB" End If End Sub 执行多个单元格SQL(事务): Sub rbbtnExcCellsSql(control As...IRibbonControl) If VBA.Len(DB_Info.Path) Then If VBA.TypeName(Selection) = "Range" Then..."OK" Else MsgBox "请选择单元格", vbInformation End If Else MsgBox
excelperfect Q:这个问题很奇怪,需要根据在工作表Sheet1中输入的数值高亮显示工作表Sheet2中相应的单元格。...具体如下: 在一个工作簿中有两个工作表Sheet1和Sheet2,要求在工作表Sheet1中列A的某单元格中输入一个值后,在工作表Sheet2中从列B开始的相应单元格会基于这个值高亮显示相应的单元格。...例如,在工作表Sheet1的单元格A2中输入值2后,工作表Sheet2中从单元格B2开始的两列单元格将高亮显示,即单元格B2和C2高亮显示;在工作表Sheet1的单元格A3中输入值3,工作表Sheet2...中从B3开始的三列单元格将高亮显示,即单元格B3、C3和D3加亮显示,等等。
标签:VBA,工作表事件 在工作表单元格中输入数据后,该单元格就被锁定,不能再编辑。...VbMsgBoxResult For Each rCell In Target With rCell If Len(.Value) > 0 Then ans = MsgBox...可以使用右击单元格的方式,来重置想要重新输入数据的单元格。...VbMsgBoxResult For Each rCell In Target.Cells With rCell If Len(.Value) > 0 Then ans = MsgBox...,会弹出一个消息框,询问你是否要重置这个单元格,如果点击“是”,则会清空该单元格并供输入新数据。
例如,单元格B3中,包装明细为100*3+115*1,对应的包装个数就是3+1。...延伸阅读 (1)Evaluate用法 Evaluate函数可以执行一些字符串表达式,并返回表达式的值。可以将Evaluate函数用于以下场景: 在字符串中执行简单的数学运算。...示例1:计算单元格H1到H10中包含文本apples的单元格数量,并将结果存储在result变量中。...result End Sub 示例2:计算单元格F1到F10的总和,并将结果存储在result变量中。...[2] vba evaluate用法(https://juejin.cn/s/vba%20evaluate%E7%94%A8%E6%B3%95) [3] VBA - 冷门函数 Evaluate 的一些有趣用法
Excel里有个分列的功能,能根据单元格中指定的符号,把单元格拆分为多个单元格,并按列存放。 有时候会碰上需要按指定的符号,将某些单元格拆分为多行,并且同一行的其他单元格完全复制的情况: ?...StrSplit As String '要根据什么字符来拆分 FlagPre As Boolean '是否保持前缀 End Type Sub SplitRows() Dim...Exit Sub End If Set rngSelect = Selection If rngSelect.Columns.Count > 1 Then MsgBox...If VBA.MsgBox("插入时是否保持前缀?"...(d.rng.Value) If VBA.InStr(strValue, d.StrSplit) Then tmp = VBA.Split(strValue, d.StrSplit
1、需求: 有个表格,有许多单元格的数据,制作者为了方便,很多数据是写在一行的,类似下面这种: ?...本人使用一般是先手动选择一些需要处理的单元格,再运行程序。因为一般收到的表格数据是比较乱的,不敢完全按照是否包含某个字符来进行拆分! ?...Private Type SplitDataStruct rng As Range '要处理的单元格 StrSplit As String '要根据什么字符来拆分 FlagPre...(Selection) "Range" Then MsgBox "请选择单元格。"...If VBA.MsgBox("插入时是否保持前缀?"
标签:VBA 本文使用FileCopy方法来复制粘贴文件。 示例1:直接复制文件 下面的代码将C盘“test”文件夹下的文件books.xlsx复制到D盘“完美Excel”文件夹中。...示例3:基于单元格值复制文件 复制单元格中内容包含的文件路径指定的文件名,如下图1所示。...下面的代码检查复制文件的目标位置中文件是否已存在,如果存在则弹出消息框来供选择。...books.xlsx" strToFile = "D:\完美Excel\books-副本.xlsx" If Dir(strToFile) "" Then msgBoxAnswer = MsgBox...D:\完美Excel\books-副本.xlsx" On Error Resume Next If Dir(strToFile) "" Then msgBoxAnswer = MsgBox
领取专属 10元无门槛券
手把手带您无忧上云