求VBA代码 excel中选中单元格,高亮显示这行每个单元格边框和整行!

求VBA代码 excel中选中单元格,高亮显示这行每个单元格边框和整行!,第1张

Private r1 As Long '前一个选定的行号
public Const r0 = 65536 '可以调整为不使用的行号
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ApplicationEnableEvents = False
If r1 > 0 Then
Rows(r0)Copy
Rows(r1)PasteSpecial Paste:=xlPasteFormats
End If
r1 = TargetRow
Rows(r1)Copy
Rows(r0)PasteSpecial Paste:=xlPasteFormats
Rows(r1)InteriorColorIndex = 6
Rows(r1)BordersColorIndex = 5
ApplicationCutCopyMode = False
TargetSelect
ApplicationEnableEvents = True
End Sub
'在退出时,需要恢复:
'在ThisWorkbook中,加入以下4行代码(删除第一个')
'Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Sheets("Sheet1")Select 'Sheet1, 需要调整为调整了颜色所在的表名称
'Range("A65536")Select
'End Sub

我以为用VBA实现,还是比较简单的;
采用双重循环;
For 外循环逐行读取sheet1中的数据到2个变量;
For 内循环将上述2个变量,到sheet2表中逐行一一比较,一值比较到所有行;
If 都不相同 Then
就在sheet2表的末尾添加新行;
Else
不添加,退出内循环比较
End If
Next 内循环
Next 外循环
一一比较是否相同的算法:
当满足:(sheet1An=sheet2Ak And sheet1Bn=sheet2Bk)
Or (sheet1Bn=sheet2Ak And sheet1An=sheet2Bk)
时,就认为相同,就不要添加
反之,都添加。
其中:sheet1An 是表示sheet1表A列n行单元格的值;
sheet1Bn 是表示sheet1表B列n行单元格的值;
sheet2Ak 是表示sheet2表A列k行单元格的值;
sheet2Bk 是表示sheet2表B列k行单元格的值;

如果只是选中的话,下面的代码就可以了,如果还有其他 *** 作的话,也可以一起加上
Sub test()
Dim x As Long
Dim i As Range
For x = 1 To Range("I65536")End(xlUp)Row
If Cells(x, 1) = "这里换成筛选条件" Then '如果是不确定的条件,也可以用instr来写
If i Is Nothing Then
Set i = Cells(x, 1)
Else
Set i = Union(i, Cells(x, 1))
End If
End If
Next
iEntireRowSelect
End Sub

你建个数组,一共十个
在判断是否满足条件时,如果满足就赋值,如果不满足,则为空
在最后结束时执行
Range(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)Select

activecellentirerowselect
或者
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rows(TargetRow)Select
End Sub

举例说明。

第一步:创建一个新的excel工作簿。

第二步:进入visual basic模式,插入模块。如图:

第三步:输入宏代码如下:


Sub test()
  Sheets("sheet1")Select
  Rows(10)Select
  SelectionFontColor = 255
End Sub
代码功能:选中工作表sheet1,并将第10行的字体设置为红色。

第四步:运行宏test

第五步:在a10随意输入字符,查看字体颜色是否为红色。如图:

利用程序函数applicantionindex
例如:
1、applicantionindex(arr,0,2)——提取arr的第二列
2、applicantionindex(arr,3,0)——提取arr的第三行

Sub x()
Dim a, n, i
a = Range("A65536")End(xlUp)Row
For i = 1 To a
    If Cells(i, 1) = [R1] Then
        n = n & i & ":" & i & ","
    End If
Next
n = Left(n, Len(n) - 1)
Range(n)Select
End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13388593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存