Excel 在MSgBox中显示行中的所有非空值
我正在处理一个行大小为A:ZZ的Excel表格,应该只有7个单元格有值。我正在尝试制作一种“过滤器”,它将检查非空单元格的数量,如果有超过7个非空单元格,它将在MsgBox中打印一条消息(直到这一点起作用为止)。但是在MsgBox中,我也希望只使用行中的那些值(例如,用coma分隔)-这虽然不起作用,但因为Intersect语法存在一些问题。这是密码Excel 在MSgBox中显示行中的所有非空值,excel,cell,msgbox,Excel,Cell,Msgbox,我正在处理一个行大小为A:ZZ的Excel表格,应该只有7个单元格有值。我正在尝试制作一种“过滤器”,它将检查非空单元格的数量,如果有超过7个非空单元格,它将在MsgBox中打印一条消息(直到这一点起作用为止)。但是在MsgBox中,我也希望只使用行中的那些值(例如,用coma分隔)-这虽然不起作用,但因为Intersect语法存在一些问题。这是密码 Sub blanks() Dim a, b As Integer a = 0 Range("A1").Select Do
Sub blanks()
Dim a, b As Integer
a = 0
Range("A1").Select
Do
With ActiveSheet.Range(Rows(b))
b = ActiveCell.Row
a = Application.WorksheetFunction.CountA(ActiveSheet.Rows(b))
If a > 7 Then
MsgBox ("ERROR" & "/n" & Application.Intersect(.SpecialCells(xlCellTypeVisible)))
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
End With
Loop Until ActiveCell = "stop"
End Sub
有什么问题吗?这将为您提供常量值(即不是来自公式):
Sub ShowValues()
Dim rowNum尽可能长
变暗行范围作为范围
变暗范围作为范围
作为字符串的Dim msg
rowNum=1
使用此工作簿。工作表(“表1”)
执行While.Cells(rowNum,1)“停止”
设置行范围=.Cells(rowNum,1)。调整大小(1702)
如果Application.WorksheetFunction.CountA(行范围)>7,则
'将行号添加到消息。
msg=msg&“行:&rowRange.Row&:”
'将值添加到由逗号分隔的消息。
对于rowRange.SpecialCells(xlCellTypeConstants)中的每个valRange
msg=msg&valRange.Value&“
下一个山谷
'删除最后一个逗号。
味精=左(味精,精(味精)-2)
“断线。
msg=msg&vbCr
如果结束
rowNum=rowNum+1
环
以
MsgBox msg,vbOKOnly+vbInformation
端接头
或者这将为您提供地址:
Sub ShowAddressOfValues()
Dim rowNum As Long
Dim rowRange As Range
Dim msg As String
rowNum = 1
With ThisWorkbook.Worksheets("Sheet1")
Do While .Cells(rowNum, 1) <> "stop"
Set rowRange = .Cells(rowNum, 1).Resize(1, 702)
If Application.WorksheetFunction.CountA(rowRange) > 7 Then
msg = msg & "Row: " & rowRange.Row & ". Address: " & _
rowRange.SpecialCells(xlCellTypeConstants).Address & vbCr
End If
rowNum = rowNum + 1
Loop
End With
MsgBox msg, vbOKOnly + vbInformation
End Sub
Sub ShowAddressOfValues()
Dim rowNum尽可能长
变暗行范围作为范围
作为字符串的Dim msg
rowNum=1
使用此工作簿。工作表(“表1”)
执行While.Cells(rowNum,1)“停止”
设置行范围=.Cells(rowNum,1)。调整大小(1702)
如果Application.WorksheetFunction.CountA(行范围)>7,则
msg=msg&“行:&”rowRange.Row&“。地址:&”_
rowRange.SpecialCells(xlCellTypeConstants).地址和vbCr
如果结束
rowNum=rowNum+1
环
以
MsgBox msg,vbOKOnly+vbInformation
端接头
虽然它不应该使用ActiveSheet.Range(行(b))cusb
是0
),但我仍然建议使用.SpecialCells(xlCellTypeVisible).Address
。这应该显示非空的范围(不是值)。。。如果需要这些值,则需要为每个…
循环设置一个。。。(根本不需要Application.Intersect
)这正是我所需要的,但是with循环总是以一些消息结束(也是空的)。如何以这种方式制作如下内容:如果有超过这7个值的任何地方,则打印一条消息,如果没有,则继续结束此功能(继续)?
Sub ShowAddressOfValues()
Dim rowNum As Long
Dim rowRange As Range
Dim msg As String
rowNum = 1
With ThisWorkbook.Worksheets("Sheet1")
Do While .Cells(rowNum, 1) <> "stop"
Set rowRange = .Cells(rowNum, 1).Resize(1, 702)
If Application.WorksheetFunction.CountA(rowRange) > 7 Then
msg = msg & "Row: " & rowRange.Row & ". Address: " & _
rowRange.SpecialCells(xlCellTypeConstants).Address & vbCr
End If
rowNum = rowNum + 1
Loop
End With
MsgBox msg, vbOKOnly + vbInformation
End Sub