我正在尝试创建一个宏,允许用户选择列并将该列的功能扩展到工作表的其他区域。但是,我无法理解如何使这项工作成功。例程的基本逻辑是:
(1) Ask user to select column of interest
(2) Listen for cell click event
(3) Extract the features of the column chosen by the user
(4) Apply relevant features in area of the worksheet where the cell was active at the beginning of the macro
Excel是否能够在这样的函数中“监听”事件?如果是这样,它将如何实施?感谢。
我的目标是创建一个可以在任何文件中使用的宏。宏的目的是向表中添加一个附加列,该表包含可用于检查表中项目的复选框。唯一让我失望的是在某些情况下,表格可能会有彼此不同的列合并。例如:
C1 C2
1 A
1 B
2 A
在Excel中,上表可能包含单元格A1和B1。我希望用户可以灵活地确定是否需要两个复选框(将复选框与第1列关联)或三个复选框(将复选框与第2列关联)。因此,当宏运行时,我希望提示用户选择其中一列,然后进行在该列中观察到的合并并将其放在C3中。然后在C3中,我将在与表关联的每个单元格中插入一个复选框。
如果知道要复制哪个列以及距离表末尾多少列,则下面的代码将执行列合并复制/粘贴部分。因为我想在各种表上使用这个宏,所以我需要调整它以便即时工作。
Sub copyMerges(sourceArea As Range, colOffset As Long)
Dim row, col As Long
Dim c, c2 As Range
col = 1
For row = 1 To sourceArea.Rows.Count
Set c = sourceArea.cells(row, col)
If c.MergeArea.cells.Count > 1 Then
Set c2 = c.Offset(0, colOffset)
If c2.MergeArea.cells.Count = 1 Then
c2.Resize(c.MergeArea.Rows.Count, 1).Merge
End If
End If
Next col
End Sub
答案 0 :(得分:0)
Excel-VBA能够执行您所追求的一切。但是你要求太多并且不提供任何东西(通常,提问者必须包含代码或任何形式的指示他/她尝试了什么以及为什么失败)。
作为粗略介绍(一些有助于研究/开始编码的指南/询问更精确的问题过程):
MsgBox
)。Worksheet_SelectionChange
中的Worksheet VBA file
,即Microsoft Excel Objects
下)。Ranges
,更具体地说是Cells
,Rows
和Columns
。Ranges
上进行一些研究/阅读/反复试验以及VBA如何与细胞相互作用。-------更新
每次选择更改时都会调用 Worksheet_SelectionChange
,但不需要执行代码;例如,您可以包含以下内容:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (Selection.Address = "cell name you want") Then
'YOUR CODE
End If
'OR
If (Selection = "the range you want") Then
'YOUR CODE
End If
'ETC.
End Sub
我坚持认为这些是关于找到解决问题的正确途径的粗略迹象。你的问题是可能的吗?答案是:是+一些迹象。但是,不要指望完整的工作代码并处理每个细节(主要是在您没有提供任何代码时)。我希望现在一切都清楚了。
-------您的问题更新后更新
现在情况要清楚得多,但你仍然要求太多东西,并提出或多或少的通用问题。我将进一步说明上述内容,即帮助您开始研究/编码的初步想法:
Ranges
以及VBA与单元通信的方式;这次你会在互联网上找到很多信息:代码,意见等。总之,我在你想要的内容中看到的主要问题是从外部工作簿中检索某些信息;如果你可以避免这种情况(例如,如上所述),这个项目将变得非常简单。无论如何,你不能在这里提出一个如此通用的问题,并期待一个实际适用的答案。此外,您必须非常清楚确切的问题以及您正在寻找的内容(在您的第一个问题中,您甚至没有提及各种工作簿问题)。
我希望在这些(更新的)开始指南之后,您将能够自己开始工作并回到这里(如果需要),并且划定得很好(并且,理想情况下,总体适用,以帮助尽可能多的人尽可能)问题。