【发布时间】:2018-06-07 10:24:58
【问题描述】:
我有一个电子表格,每行数据都有按钮。一列包含可以按升序排序的值,另一列包含一个过滤器,可以按名称过滤掉行。当我运行完成这两项任务的排序和筛选宏时,按钮明显保持在同一行中,但是当我单击按钮以根据按钮的行执行特定任务时,它已移动。我真的迷失了这个,所以我将包括对数据进行排序和过滤的代码,以及获取单击按钮的行和列的代码。按钮的属性设置为随单元格移动和调整大小。当其行地址由于某种原因发生更改时,该按钮变为深灰色。我环顾四周,似乎无法找到解决此问题的方法...抱歉,如果我在某处遗漏了什么,并提前感谢您的帮助。
识别点击按钮的行列的代码...
Dim b As Object
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
task_row = .Row
button_col = .Column
End With
对行进行排序和过滤的代码...
Sub Filter_List()
ActiveSheet.Range(Cells(start_data_row - 1, 1), Cells(start_data_row + num_tasks - 1, last_col)).AutoFilter _
Field:=name_col, Criteria1:=task_owner
End Sub
Sub Sort_List()
Range(Cells(start_data_row, 1), Cells(start_data_row + num_tasks - 1, last_col)).Sort _
key1:=Range(Cells(start_data_row, days_left_col), Cells(start_data_row, days_left_col)), _
order1:=xlAscending
Worksheets(sht_name).Range(Cells(start_data_row - 1, days_left_col), Cells(start_data_row + num_tasks - 1, days_left_col)).AutoFilter _
Field:=days_left_col, Criteria1:="<" & max_days, Operator:=xlAnd
End Sub
【问题讨论】:
-
为什么不将按钮更改为不移动或不随单元格调整大小。这样,它始终是静止的,如果需要,您可以更好地操纵它。
-
需要随着对应的数据行移动。
-
如果只是一个按钮,为什么它的位置如此重要?如果每行数据都有一个按钮(如果是,有多少?他们都做同样的事情,但对不同的数据行吗?)那么你可能应该重新考虑如何完成他们所做的事情。跨度>
-
有近千行数据,每行一个按钮。他们都做同样的事情,但对不同的数据行。我同意在每一行上都有一个按钮没有意义,但我正在为其构建电子表格的人希望这样。
-
如果可以对数据进行排序或过滤,则超链接比按钮更易于管理。