设置鼠标点中单元格 excel如何设置鼠标点击后会改变单元格颜色

fhuyi0XCV 数码 4 0

一、excel如何设置鼠标点击后会改变单元格颜色

1、打开excel文件后,将工作表表格全部选中。

2、然后在条件格式菜单下,点击“新建规则”。

3、选择最后一个规则类型,输入公式【=(cell("row")=row())*(cell("col")=column())】,点击格式按钮。

4、然后设置表格的填充颜色,进行确定。

5、返回主设置界面后,再点击确定按钮。

6、然后按下“ALt+F11”打开VBA编辑界面,输入下图中的代码。

7、关闭VBA界面,回到Excel界面。鼠标点击那个表格,哪个就会变色。

二、如何让弹出窗体跟随鼠标点击的单元格显示

在 Excel VBA中,要让弹出窗体的位置跟着鼠标点击的单元格位置显示,可以使用以下步骤:

首先,创建一个 UserForm(窗体),并为其添加控件。

在工作表模块(例如:Sheet1)中,添加一个 Worksheet_SelectionChange事件。

在该事件中,获取单元格的位置并设置 UserForm的位置。

下面是一个简单的示例代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'检查是否选中了单元格 A3

If Target.Address="$A$3" Then

'获取单元格右上角的位置

Dim cellTop As Single, cellLeft As Single

cellTop= Target.Top

cellLeft= Target.Left+ Target.Width

'设置 UserForm1(假设窗体名称为 UserForm1)的位置

With UserForm1

.StartUpPosition= 0'设置为手动控制窗体的位置

.Top= cellTop

.Left= cellLeft

.Show'显示窗体

End With

End If

End Sub

这个示例代码会在点击 A3单元格时显示 UserForm1,并使其左上角与 A3单元格的右上角齐平。请确保将"UserForm1"替换为您实际创建的 UserForm的名称。

…………

回复:

如果在滚动窗口时,需要让 UserForm依然跟随单元格位置显示,可以通过获取滚动条的位置并根据滚动条的位置调整 UserForm的位置。以下是一个调整后的示例代码:

在 ThisWorkbook中添加以下代码,用于获取滚动条位置:

Private Type SCROLLINFO

cbSize As Long

fMask As Long

nMin As Long

nMax As Long

nPage As Long

nPos As Long

nTrackPos As Long

End Type

Private Declare Function GetScrollInfo Lib"user32"(ByVal hWnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long

Private Const SIF_RANGE=&H1

Private Const SIF_PAGE=&H2

Private Const SIF_POS=&H4

Private Const SIF_TRACKPOS=&H10

Private Const SIF_ALL= SIF_RANGE+ SIF_PAGE+ SIF_POS+ SIF_TRACKPOS

Private Const SB_HORZ= 0

Private Const SB_VERT= 1

Public Function GetScrollPos(ByVal hWnd As Long, ByVal nBar As Long) As Long

Dim si As SCROLLINFO

si.cbSize= Len(si)

si.fMask= SIF_POS

GetScrollInfo hWnd, nBar, si

GetScrollPos= si.nPos

End Function

然后,修改 Worksheet_SelectionChange事件,使其考虑滚动条位置:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'检查是否选中了单元格 A3

If Target.Address="$A$3" Then

'获取单元格右上角的位置

Dim cellTop As Single, cellLeft As Single

cellTop= Target.Top

cellLeft= Target.Left+ Target.Width

'获取滚动条位置

Dim hWnd As Long

hWnd= Application.hWnd

Dim hScrollPos As Long, vScrollPos As Long

hScrollPos= GetScrollPos(hWnd, SB_HORZ)

vScrollPos= GetScrollPos(hWnd, SB_VERT)

'考虑滚动条位置,设置 UserForm1(假设窗体名称为 UserForm1)的位置

With UserForm1

.StartUpPosition= 0'设置为手动控制窗体的位置

.Top= cellTop- vScrollPos

.Left= cellLeft- hScrollPos

.Show'显示窗体

End With

End If

End Sub

这样,即使在滚动窗口时,UserForm依然会跟随单元格 A3的位置显示。

…………

回复:

这可能是由于 API函数的声明不兼容所致。请尝试使用以下声明,看看是否可以解决问题:

将以下内容添加到 ThisWorkbook模块:

#If VBA7 Then

Private Declare PtrSafe Function GetScrollInfo Lib"user32" Alias"GetScrollInfo"(ByVal hWnd As LongPtr, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long

Private Type SCROLLINFO

cbSize As Long

fMask As Long

nMin As Long

nMax As Long

nPage As Long

nPos As Long

nTrackPos As Long

End Type

#Else

Private Declare Function GetScrollInfo Lib"user32" Alias"GetScrollInfo"(ByVal hWnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long

Private Type SCROLLINFO

cbSize As Long

fMask As Long

nMin As Long

nMax As Long

nPage As Long

nPos As Long

nTrackPos As Long

End Type

#End If

Private Const SIF_RANGE=&H1

Private Const SIF_PAGE=&H2

Private Const SIF_POS=&H4

Private Const SIF_TRACKPOS=&H10

Private Const SIF_ALL= SIF_RANGE+ SIF_PAGE+ SIF_POS+ SIF_TRACKPOS

Private Const SB_HORZ= 0

Private Const SB_VERT= 1

Public Function GetScrollPos(ByVal hWnd As Long, ByVal nBar As Long) As Long

Dim si As SCROLLINFO

si.cbSize= Len(si)

si.fMask= SIF_POS

GetScrollInfo hWnd, nBar, si

GetScrollPos= si.nPos

End Function

这将使用条件编译指令(#If VBA7 Then)来确保在 32位和 64位 VBA环境中都能正确声明 API函数。

接下来,请确保在相应的工作表模块(例如 Sheet1)中添加之前提到的 Worksheet_SelectionChange事件代码。

如果问题仍然存在,请检查是否在正确的模块中添加了相应的代码。如有需要,也可以尝试将 VBA项目中的所有模块编译并查看是否存在其他编译错误。在 VBA编辑器中,选择"调试"菜单,然后点击"编译 VBA项目"。

三、如何让鼠标点击到的excel 单元格变色

让鼠标点击到的excel单元格变色的方法:\x0d\x0a1.打开需要应用的excel。\x0d\x0a2.按ALT+F11,会弹出代码编辑框。\x0d\x0a3.在左边会显示出上下两个类别框里,名字分别是Project-VBAProject和Properties-sheet1(这个sheet几是你当前编辑的表单)\x0d\x0a(注意:如果什么也新出来的窗口什么也不显示的话,就->视图->工程资源管理器就会出来了,此时你可以在Project-VBAProject和Properties-sheet1上直接右键查看代码,在里面直接粘贴第六条的代码即可)\x0d\x0a4.在上面的框边有三个小图标,view code(查看代码),view project(查看项目),toggle folder(打开或折叠文件夹)。\x0d\x0a5.选择view code,会弹出一个编辑框。\x0d\x0a6.在编辑框里黏贴下面的语言:\x0d\x0aPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)\x0d\x0a With Target\x0d\x0a'清除工作表单元格的背景色\x0d\x0a.Parent.Cells.Interior.ColorIndex= xlNone\x0d\x0a'设置选中区域所在行的背景色\x0d\x0a.EntireRow.Interior.Color= vbGreen\x0d\x0a'设置选中区域所在列的背景色\x0d\x0a.EntireColumn.Interior.Color= vbGreen\x0d\x0a End With\x0d\x0aEnd Sub\x0d\x0a7.贴完之后,关闭对话框。关闭编辑框,返回到excel。\x0d\x0a8.这时候再点击任意单元格,就会自动出现要的效果了。\x0d\x0a备注:上面语言中的汉语不用删除,汉语可以帮助了解该行的意思,同时也不会影响编辑效果。如果对行或列的色彩不满意,可以参考下面的色彩代码,自行修改。\x0d\x0avbBlack黑\x0d\x0avbRed红\x0d\x0avbGreen绿\x0d\x0avbYellow黄\x0d\x0avbBlue蓝\x0d\x0avbMagenta洋红\x0d\x0avbCyan青\x0d\x0avbWhite白\x0d\x0a\x0d\x0a上面的办法对已经有填充色的表格是个灾难,它会清楚原有颜色。\x0d\x0a也可以试试下面的方法:\x0d\x0aPrivate Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) \x0d\x0aOn Error Resume Next \x0d\x0aCells.FormatConditions.Delete \x0d\x0aWith Target.EntireRow.FormatConditions \x0d\x0a.Delete \x0d\x0a.Add xlExpression,,"TRUE" \x0d\x0a.Item(1).Interior.ColorIndex= 7 \x0d\x0aEnd With \x0d\x0aEnd Sub\x0d\x0a\x0d\x0a这个虽然只能显示行不能显示列,但是不会破坏原有填充色。

抱歉,评论功能暂时关闭!