Excel VBA - 基于活动单元格运行宏

Posted

技术标签:

【中文标题】Excel VBA - 基于活动单元格运行宏【英文标题】:Excel VBA - Run macro based upon Active Cell 【发布时间】:2015-06-24 17:24:26 【问题描述】:

我正在创建一个 Excel 宏,它将根据几个条件过滤源工作表。基本上,宏说如果您在福特表中,请转到源表并过滤福特。那部分很容易。我正在努力的是告诉它根据活动单元格过滤源表。所以...

如果 ActiveCell 是 A1,则转到源并执行 X 个条件的过滤器,否则如果 ActiveCell 是 B1,则转到源并执行另一个过滤器,依此类推。

这是我目前所拥有的:

If ActiveCell = Range("C36") Then
    Sheets("Source-Cars").Select
        'Unfilter data
        Application.Goto (Sheets("Source-Cars").Range("A1"))
        If ActiveSheet.FilterMode Then 
           ActiveSheet.ShowAllData
        end if
end if

这里的问题是 ActiveCell = Range("C36") 正在查看该单元格的值,而不是我是否选择了该单元格。因此,如果我选择另一个与 C36 具有相同值的单元格,它会执行过滤器,而不是返回我内置的错误消息框。

关于如何根据哪个单元格处于活动状态(相对于所述单元格的值)运行逻辑的想法?谢谢!

G

【问题讨论】:

【参考方案1】:

你想使用 ActiveCell.Address 它会告诉你一个像 $A$1 这样的值,然后你可以在比较中使用它。

试试这个示例代码看看返回值是如何格式化的:

Sub selectRange() MsgBox ActiveCell.Address End Sub

对于您的情况,您需要类似

If ActiveCell.Address = "$C$36" Then

【讨论】:

就是这样!我知道这一定很容易,但找不到答案。非常感谢!

以上是关于Excel VBA - 基于活动单元格运行宏的主要内容,如果未能解决你的问题,请参考以下文章

基于列值合并单元格的 VBA 宏

EXCEL VBA中单元格发生改变触发事件,怎么指定某个单元格

用vba给Excel单元格赋值

从定义的范围转换excel宏,只对选定的单元格进行操作?

Excel在单元格按回车触发宏问题

在EXCEL中,如何使用VBA设置单元格内指定字符串格式 三六零问答