事件前因后果: 在我用redis的set数据结构添加1,3,2后在查询很多次之后的结果都是1,2,3。如图所示:
在有些情况下,我们可能需要快速返回到最后一次编辑的单元格。例如,最后一次编辑的单元格是单元格K112,然而我的当前单元格在单元格C1,如何定位这个最后编辑的单元格并快速返回到该单元格呢?...Dim ws As Worksheet Set ws =Worksheets("Sheet1") Sh.Hyperlinks.Add Anchor:=ws.Range("A2"),Address...& Target.Address, ScreenTip:="单击返回到最近一次编辑的单元格",TextToDisplay:="返回" End Sub 代码假设你正在操作的工作表是Sheet1,并且将返回单元格的链接放置在单元格...此时,你在工作表Sheet1中进行编辑操作后,单击单元格A2中的“返回”,可以快速回到最后一次编辑操作的单元格,如下图1所示。...,总会回到这个保存时间的单元格。
标签:VBA 在VBA中,我们经常会遇到需要检查某个单元格区域是否为空的情形。我们可以使用下面程序中的代码来检查单元格区域是否为空。..." Else MsgBox "单元格区域为空" End If End Sub 然而,如果单元格区域偶然包含一个返回为空的公式,则上述代码不会将该单元格区域返回为空,因为它包含公式返回为空的单元格...要处理这个问题,可以使用下面的命令来检查单元格区域是否为空,即使该单元格区域包含返回空的公式。..." Else MsgBox "单元格不全为空单元格" End If End Sub 还可以使用Find方法来判断,如下面的代码: Sub CheckIfBlandAdd2...() If Range("A1:A100").Find("*", , xlValues, , xlByColumns,xlPrevious) Is Nothing Then MsgBox
本文介绍的VBA程序是一个自定义函数,整理自jkp-ads.com,很好地增强了内置的CallByName函数的适用性。...该函数接受单元格对象、代表该对象属性的字符串和属性值作为参数,返回满足属性值的所有单元格。...,"Interior.ColorIndex", 3).Select End Sub 代码中,传递的单元格对象为当前工作表中已使用的区域、属性为单元格背景色、属性值为3(即红色)。...3.参数calltype,必需,一个vbCallType型的常量,代表被调用的过程的类型,可以是vbGet(返回属性)、vbLet(修改属性)、vbMethod(执行方法)、vbSet(设置对象)。...", VbGet) End Sub 返回值6,是代表黄色的颜色值。
有时候,我们需要执行区分大小写的查找,如下图1所示。...Else Debug.Print rngFound Debug.Print rngFound.Address End If End Sub 其结果如下图2所示。...图2 本来应该返回单元格A3中的值及其地址,但返回的是单元格B1中的值和地址。由于是执行区分大小写的查找,因此必须添加另外一个参数:MatchCase,该参数迫使VBA执行匹配大小写的查找。...Else Debug.Print rngFound Debug.Print rngFound.Address End If End Sub 返回正确的结果,如下图...图3 小结 Find方法是一个很重要的常用方法,熟知其参数的用途,灵活使用该方法,获得正确的查找结果。
excelperfect 有些情形下,我们需要判断一个单元格区域是否包含另一个单元格区域,或者说某单元格区域是否在另一个单元格区域内,这样好进行下一步的操作。...可以使用一个简单的VBA自定义函数来实现。...True,否则返回False。...例如,如果当前选择的单元格处于列B中,则将设置其背景色为红色,否则设置其背景色为绿色,代码如下: Sub test() If blnRange(Range(Selection.Address),...Selection.Interior.Color = vbRed Else Selection.Interior.Color = vbGreen End If End Sub 有时候
学习Excel技术,关注微信公众号: excelperfect 标签:VBA,自定义函数 我们知道,Find方法只是返回找到的第1个单元格,如果查找区域有多个符合查找内容的单元格,Find方法就无能为力了...然而,利用Find方法可以查找并返回包含指定内容的所有单元格。在完美Excel中曾多次介绍过这样的程序。恰巧,今天逛网站时又碰到一个这样的程序,特将其拿过来,粘贴在此,供有兴趣的朋友参考。...VBA代码如下: Function Find_Range(Find_Item As Variant, _ Search_Range As Range, _ Optional LookIn As Variant...= c firstAddress = c.Address Do Set Find_Range = Union(Find_Range, c) Set c...= .FindNext(c) Loop While Not c Is Nothing And c.Address firstAddress End If End With End
,参数info_type可以是下列值之一:address、col、color、contents、filename、format、parentheses、prefix、protect、row、type、width...公式: =LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-2) 结果返回工作簿路径: D:\01....Excel研究\06.2 VBA代码库\09 公式: =MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]",CELL("filename...或 "help" 返回This的文本列表 ' This = 上面没有列出的任意字符串返回Environ(This) ' 如果Target为空(默认), 则Target被设置为引用此函数的单元格(如果在VBA...A1)或VBA单元格区域如Range("A1") ' 仿照Excel内置信息函数CELL和INFO ' 开发:wellsr.com Public FunctionNameOf(Optional ByVal
这是一位朋友碰到的应用场景:我们必须创建很多形状来显示每个形状所覆盖的单元格中的文本值,有时这些单元格和/或形状会移动。如果手动检查每个形状并将其重新链接到其各自的单元格引用,非常耗时。...此时,VBA可以来帮助我们。 工作表示例如下图1所示。 图1 接着,我们创建一些形状(这里是文本框)并将它们放置在包含文本的单元格之上,如下图2所示。...ActiveSheet.Shapes.Range(Array(sh.Name)) varShFormula.Select Selection.Formula = "=" & sh.TopLeftCell.Address...注意,如果将 varShFormula.Select Selection.Formula = "=" &sh.TopLeftCell.Address 合并成: varShFormula.Formula...= "=" &sh.TopLeftCell.Address 将返回错误。
标签:Word VBA 有时候,Word文档中有很多空段落,我们想要快速删除这些空段落,该如何操作呢? 一种方法是使用Word的查找和替换功能,使用通配符查找:^13{2,},使用^p替换。...另一种方法是使用VBA。...与查找和替换功能等效的VBA代码如下: With Selection.Find .Text = "^13{2,}" .Replacement.Text = "^p" .Forward = True...Then objTable.AllowAutoFit = False #End If '将范围设置为当前表格后面的段落 Set myRange = objTable.Range...'注意空单元格包含2个字符;一个是段落标记,一个是单元格末尾标记 objCell.Range.Characters(1).Delete End If If
在Excel表格里,合并单元格会给使用过程带来很多麻烦,但是有时候为了排版好看,又需要用到合并的功能。 特别是有时候从外部收集到的表格,总有人喜欢使用合并单元格!...有时候做数据处理的时候,会碰上一些因为合并单元格而造成的问题: ? 这种情况,取消合并单元格就能够解决问题。 但是,如果表格数据较多,靠眼睛去看,要想很快的找到合并单元格就没那么容易了。...让我们看看用VBA如何来实现一个快速定位合并单元格的功能,效果: ?...而这个变化,其实只要选择的单元格中含有合并单元格就会出现,所以根据这个特性,我们去查找VBA中对应的这种属性,其实就是MergeCells属性,点击F1查看官方文档: 如果区域内包含合并单元格,此属性的值为...Selection.MergeCells 如果选中的是合并单元格,返回True 如果选中的不含合并单元格,返回False 如果选中的单元格中,既有合并单元格、又有正常的非合并单元格,返回Null 根据返回
Excel VBA之Find expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase,...该表达式返回一个 Range 对象。 What Variant 类型,必需。要搜索的数据。可为字符串或任意 Microsoft Excel 数据类型。 After Variant 类型,可选。..., , , ,1).Row ‘’’’’’’’’’’’’’’’’’’’’’’’查找工作表中最大的行号可最大的列号 MsgBox "数据单元格的最大行号: " &Cells.Find("*", , ,..., 1, 2).Row MsgBox "数据单元格的最大列号: " &Cells.Find("*", , , , 2, 2).Column End Sub ★★ Find 常常与FindNext...===有时用以下代码==【收藏】 ’’’’’’’’’’’’’’’’’’’’查找A列的最后一行号或第一行最后一列号 MsgBox "A列最后1行:" & Range("A1048576").End(xlUp
标签:VBA,用户窗体,列表框 有时候,我们想从数据表中搜索指定的内容,但匹配项往往不只一项,而我们想要将匹配项全部显示出来,如下图1所示。...图1 在Excel中,有很多方法可以实现,这里使用用户窗体和VBA代码来完成。 示例数据如下图2所示。 图2 单击“查找”按钮,弹出我们所设计的用户窗体如下图3所示。...则仅在位置列中搜索 With Range("Table1[" &SearchColumn & "]") ' 查找第一个匹配项 Set RecordRange = .Find...' 如果已找到匹配项 If Not RecordRange Is Nothing Then FirstAddress = RecordRange.Address...RowCount = 0 Do ' 设置匹配值行中的第一个单元格 Set FirstCell
Excel 宏编程的常用代码 我们常用Excel统计一些数据,如果善用VBA,就能自动做出各种复杂的报表,懒人就是追求一劳永逸!...————————————————————————- 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!...‘隐藏SHEET1这张工作表 sheets(“sheet1”).Visible=False ‘显示SHEET1这张工作表 sheets(“sheet1”).Visible=True 打印预览 有时候我们想把所有的...Dim my As Worksheet For Each my In Worksheets my.PrintPreview Next my 得到当前单元格的地址 msgbox ActiveCell.Address...返回选定区域的列数 MsgBox Selection.Columns.Count 返回选定区域的地址 Selection.Address 忽略所有的错误 ON ERROR RESUME NEXT 遇错跳转
文章背景: 工作中,有时需要判断单元格区域内是否存在合并单元格,这时,可以用到Range.MergeCells属性。 合并单元格只有左上角的单元格包含数据,其他为空。...当该Range是一个完成合并的区域时,该属性返回True; 当该Range完全不包含合并单元格时,该属性返回False; 当该Range部分包含合并单元格时,该属性返回Null。...B3只有一个合并单元格,返回True; (2)对于flag1,单元格区域B6:B8,返回True,这个结果较难理解。...(3)对于flag2,单元格区域B6:B9包含两个完成合并的单元格区域,返回Null。 (4)对于flag3,单元格区域B3:C4包含两个完成合并的单元格区域,返回Null。...(5)对于flag4,单元格区域B2:B4部分包含合并的单元格,返回Null。 (6)对于flag5,单元格区域B2完全不包含合并单元格,返回False。
文章背景:在工作中,有时为了内容跳转的方便,会在单元格内设置超链接,通过Hyperlinks(1).Address,得到的是超链接文件的相对路径。...有时为了VBA代码的编写方便,需要使用的是链接文件的绝对路径。下面通过编写VBA函数,获取单元格内超链接文件的绝对路径。 1 绝对路径和相对路径 有两种方法指定一个文件路径。...回到VBA,通过ThisWorkbook.Path,可以获取当前工作簿所在工作目录的路径;通过Hyperlinks(1).Address,得到的是基于ThisWorkbook.Path的相对路径;通过ThisWorkbook.Path...2 函数编写 针对单元格内的超链接,本文暂不考虑共享文件夹的情况,链接的文件可以分为以下三种情况: 在同一工作目录内; 在同一个公共盘,不在同一工作目录内; 不在同一公共盘。...如果单元格链接的是本工作簿内的单元格,则Hyperlinks(1).Address得到的是空字符串。
标签:VBA,自定义函数 有时候,我们需要创建一组不重复的随机组,例如在指定单元格区域中创建一组不重复的随机数用于模拟数据分析。 下面的一个VBA自定义函数,可用于创建指定数值范围的不重复随机数。...Rnd * 1000000) NumberOfRandoms = (MaxValue - MinValue + 1) If MinValue > MaxValue Then MsgBox "范围的下限超过了上限...Exit Function End If If NumberOfRandoms = 0 Then MsgBox "没有要求返回任何数值!"...Exit Function End If If NumberOfRandoms > (MaxValue - MinValue + 1) Then MsgBox "要求返回的数字超过给定范围内的可能数量...Next Result_Index Application.ScreenUpdating = True RandomSeq = TempArray_Result End Function 要在单元格区域
标签:VBA 我们经常会在VBA代码中看到Application.Caller,它到底起什么作用,往往让人感到模糊。下面,我们就来详细讲讲,对其有更深入的理解。 有下列3种常见情形。...情形1:如果从单元格/单元格区域调用VBA代码,那么Application.Caller返回代表该区域的Range对象。...例如,如果从单元格/单元格区域调用UDF(用户定义函数),并且希望获取从中调用它的单元格/单元格区域的地址,那么可以使用以下代码实现。本例返回Range,也可以将它设置为某个对象。...'或Application.Caller.Address testRange = objCaller.Address End Function 效果如下图1所示。...图2 情形3:如果调用者是VBA过程或函数,则Application.Caller返回错误。 例如,如果在某个过程或函数中调用上面的函数testControl,则它将返回错误。
文章背景: 在工作中,有时需要将单元格区域的内容作为邮件正文发送到指定邮箱,如果希望邮件正文中的单元格区域带表格样式,则需要将其转换为html格式。...系统:Win10 发件邮箱:Outlook 365 VBA代码如下: Option Explicit Sub 发送邮件() Dim ws As Worksheet Set ws..."\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" Set TempWB = Workbooks.Add(1) ' 复制范围到临时工作簿...fileName:=TempFile, _ Sheet:=TempWB.Sheets(1).Name, _ Source:=TempWB.Sheets(1).UsedRange.Address...Nothing Set fso = Nothing Set TempWB = Nothing End Function 运行效果: 相关资料: [1] 讯飞星火大语言模型 [2] VBA
excelperfect 有时候,我们可能想要知道某一区域中是否输入了重复值,这样好做进一步的处理。...rngCell As Range ‘绑定Dictionary对象 Set oDic =CreateObject("Scripting.Dictionary") ‘遍历指定单元格区域中的单元格...'表明存在重复值,返回True '否则不存在重复值,返回False If oDic.Count rng.Cells.Count Then bIfUnique...代码中,参数rng代表要判断的单元格区域。...图1 注:由于疏忽,先推送了VBA实用小程序69,将VBA实用小程序67和68漏掉了,这两天陆续补上。谢谢有心人“深海”朋友的提醒! 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。