题目1:任意选取本工作表中的一个区域,然后把选取区域中的大于0的数字替换为字符“正数” ,代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Selection
If (VBA.IsNumeric(c) = True And c.Value > 0) Then
c.Value = "正数"
End If
Next c
End Sub
题目2:用代码一次选取“A2:C12”区域所有大于0数字所在的行,代码如下:
Sub 习题2()
Dim rg As Range
Dim n As Integer
n = 0
For Each c In Range("A2:C12")
If (VBA.IsNumeric(c) = True And c.Value > 0) Then
n = n + 1
If n = 1 Then Set rg = c.EntireRow
Set rg = Union(rg, c.EntireRow)
End If
Next c
rg.Select
End Sub
题目2,我总想这么写代码
For Each c In Range("A2:C12")
n = 0
If (VBA.IsNumeric(c) = True And c.Value > 0) Then
n = n + 1
但是出来的答案却是错的为什么?我的理解是,从A2道C12中,先设定n=0,如果c满足条件,n=1,若n=1则将满足条件单元格整行放入rg中,if语句结束,去看第二个单元格,然后n清零,重新开始。我觉得我的思路应该没有错啊?