Excel VBA 如何实现有数据的进行隔行颜色填充,无数据的不填充颜色? 10
3个回答
展开全部
'按ALT+F11-插入模块-粘贴代码-将表格另存为启用宏的格式
Sub aa()
If [b1] = "" Then
a = [b1].End(xlDown).Row
b = Range("b" & a).End(xlDown).Row
Else
a = 1
b = [b1].End(xlDown).Row
End If
For I = a To b
If (I - a) Mod 2 = 0 Then Range("b" & I & ":m" & I).Interior.ColorIndex = 43
Next
End Sub
Sub aa()
If [b1] = "" Then
a = [b1].End(xlDown).Row
b = Range("b" & a).End(xlDown).Row
Else
a = 1
b = [b1].End(xlDown).Row
End If
For I = a To b
If (I - a) Mod 2 = 0 Then Range("b" & I & ":m" & I).Interior.ColorIndex = 43
Next
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VBA考虑的是逻辑,所以我这里给出一个逻辑语句你自己写,你只通过B列判断非空则不填充颜色对吧?
首先,要有方法判断最大的行号,因为列号就是B列,所以只判断行号
语句可以用xxx.End(xlUp).Row 这是说在xxx单元格执行ctrl+↑的操作,如果xxx是空的则光标会在遇到的第一个非空单元格停下,如果xxx是非空单元格则光标会在遇到的第一个空单元格停下。
解释一下这么做的意义:xxx你要定一个空单元格,比如你VBA语句操作的是xlsx格式文件可以定在B1000000,也就是B列第一百万行的单元格(xlsx格式文件有1048576行),总之你要在xxx输入一个行号大于你表格最大行的行号,这样光标在向上移动时,会停在你表格的最大行号所在行上,这是用来获取表格有多少行。
其次,你要判断所有B列小于光标所在行行号的单元格,找到所有非空的单元格的行号。把这些行号装到数组里,假定这个数组命名为arr1,因为是判断行号,所以我个人喜欢把这个arr1做成纵向排列的数组。
然后,你的行号有了,但你的行号有可能是不连续的,对吧?比如说124578行是非空的、有数据的,那么按着你的逻辑“有数据的进行隔行颜色填充,无数据的不填充颜色”你需要在1、4、7行标色对吧?这是随机的无序排列,那么如何在arr1里找到一个规律,使得进行跳行填充呢?我个人的建议是,arr做两列,第一列是123456序列号,第二列是你的非空单元格行号124578,这样你只要判断第一列单行or双行需要标色就行了,标色的序列按着第一列判断,但标色的行号按着第二列判断。比方说你需要单行标色,就第一列每一行都÷2,不能整除就是单数所以标色,能整除就是双数所以不标色,反之亦然。
以上,你就应该能在B列所有非空单元格所在行,隔行标上你需要的颜色了。如果你需要在B列隔行标色,无论有没有值都标色,那更简单,用xxx.End(xlUp).Row判断最后一行,然后所有行号进行循环注意要用Step2,就能隔行标色了。
首先,要有方法判断最大的行号,因为列号就是B列,所以只判断行号
语句可以用xxx.End(xlUp).Row 这是说在xxx单元格执行ctrl+↑的操作,如果xxx是空的则光标会在遇到的第一个非空单元格停下,如果xxx是非空单元格则光标会在遇到的第一个空单元格停下。
解释一下这么做的意义:xxx你要定一个空单元格,比如你VBA语句操作的是xlsx格式文件可以定在B1000000,也就是B列第一百万行的单元格(xlsx格式文件有1048576行),总之你要在xxx输入一个行号大于你表格最大行的行号,这样光标在向上移动时,会停在你表格的最大行号所在行上,这是用来获取表格有多少行。
其次,你要判断所有B列小于光标所在行行号的单元格,找到所有非空的单元格的行号。把这些行号装到数组里,假定这个数组命名为arr1,因为是判断行号,所以我个人喜欢把这个arr1做成纵向排列的数组。
然后,你的行号有了,但你的行号有可能是不连续的,对吧?比如说124578行是非空的、有数据的,那么按着你的逻辑“有数据的进行隔行颜色填充,无数据的不填充颜色”你需要在1、4、7行标色对吧?这是随机的无序排列,那么如何在arr1里找到一个规律,使得进行跳行填充呢?我个人的建议是,arr做两列,第一列是123456序列号,第二列是你的非空单元格行号124578,这样你只要判断第一列单行or双行需要标色就行了,标色的序列按着第一列判断,但标色的行号按着第二列判断。比方说你需要单行标色,就第一列每一行都÷2,不能整除就是单数所以标色,能整除就是双数所以不标色,反之亦然。
以上,你就应该能在B列所有非空单元格所在行,隔行标上你需要的颜色了。如果你需要在B列隔行标色,无论有没有值都标色,那更简单,用xxx.End(xlUp).Row判断最后一行,然后所有行号进行循环注意要用Step2,就能隔行标色了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询