Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8722|回复: 19

[已解决]如何查找第一行单元格的某项属性获得列号?

[复制链接]
发表于 2014-10-19 18:58 | 显示全部楼层 |阅读模式
有一段代码,原来是固定的行号,现在想改成查找单元格属性来获取行号,比如第一行没有锁定的行号,如何改呢?
红色部份
Sub test()
For xRow = 2 To Range("A15536").End(xlUp).Row

        If Range("a" & xRow).Value = "" Or Range("b" & xRow).Value = "" Or Range("c" & xRow).Value = "" Or Range("d" & xRow).Value = "" Or Range("e" & xRow).Value = "" Or Range("f" & xRow).Value = "" Or Range("g" & xRow).Value = "" Or Range("h" & xRow).Value = "" Or Range("i" & xRow).Value = "" Then
            Range("b" & xRow).Select
            MsgBox "统计单位,被使用林地单位,林班大班小班及面积,使用林地类型,建档,现状" & Chr(10) & "9项数据不能为空,请检查数据!"
        End If
Next
End Sub

test.zip (9.21 KB, 下载次数: 12)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-10-19 19:07 | 显示全部楼层
回复

使用道具 举报

发表于 2014-10-19 20:36 | 显示全部楼层
  1. Sub test()
  2. For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
  3.     If Application.CountA(Cells(i, 1).Resize(1, 9)) <> 9 Then
  4.         Range("b" & i).Select
  5.         MsgBox "统计单位,被使用林地单位,林班大班小班及面积,使用林地类型,建档,现状" & Chr(10) & "9项数据不能为空,请检查数据!"
  6.     End If
  7. Next
  8. End Sub
复制代码
原代码太啰嗦了,如果有90项,莫非要全部列举?
回复

使用道具 举报

发表于 2014-10-19 20:56 | 显示全部楼层
除了写得繁,代码本身没错!只是不知楼主要改成啥样?
回复

使用道具 举报

 楼主| 发表于 2014-10-19 22:24 | 显示全部楼层
dsmch 发表于 2014-10-19 20:36
原代码太啰嗦了,如果有90项,莫非要全部列举?

这里举例是连续的,不连续的怎么写?


点评

union(单元格1,单元格2…………)  发表于 2014-10-19 22:30
回复

使用道具 举报

 楼主| 发表于 2014-10-19 22:28 | 显示全部楼层
qh8600 发表于 2014-10-19 19:07
想改成什么样,说清楚

改红色列号,不固定是哪列,以查找表头单元格中某一属性为准,比如例子中想以单元格没有锁定内容为准
回复

使用道具 举报

 楼主| 发表于 2014-10-19 22:54 | 显示全部楼层
su45 发表于 2014-10-19 20:56
除了写得繁,代码本身没错!只是不知楼主要改成啥样?

想把红色列号改为查找获得,如查找表头没有锁定的单元格列号
回复

使用道具 举报

发表于 2014-10-19 23:24 | 显示全部楼层
是不是想判断这9列中有没有空格?有空格就提示错误?
回复

使用道具 举报

 楼主| 发表于 2014-10-19 23:34 | 显示全部楼层
su45 发表于 2014-10-19 23:24
是不是想判断这9列中有没有空格?有空格就提示错误?

是,但这9列是通过表头单元格某一属性与与它单元格不一样来确定的,如:这表头的这9个单元格保护属性没有锁定
回复

使用道具 举报

 楼主| 发表于 2014-10-19 23:41 | 显示全部楼层
dsmch 发表于 2014-10-19 20:36
原代码太啰嗦了,如果有90项,莫非要全部列举?

Sub test()
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Application.CountA(Union("a" & Rows, "b" & Rows, "f" & Rows)) <> 3 Then
        Range("b" & i).Select
        MsgBox "统计单位,被使用林地单位,林班大班小班及面积,使用林地类型,建档,现状" & Chr(10) & "9项数据不能为空,请检查数据!"
    End If
Next

End Sub

怎么提示类型不匹配?如何根据属性查找获得列号?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 21:46 , Processed in 0.431761 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表