所以我有这段代码,我想做的是以下事情:
如果Range("aj61:aj432")
为空白并且Range("F61:F432")
有文本,则将空白单元格设置为0
这是我尝试过的,但是类型不匹配
Sub Insert_0()
Dim rng As Range
Set rng = Range("AJ61:AJ432")
If IsEmpty(rng) And rng.Offset(-30, 0) <> "" Then rng.Value = 0
End Sub
答案 0 :(得分:6)
使用SpecialCells捕获F列中的文本值与AJ列中的空白值相交的行。
Option Explicit
Sub Insert_0()
Dim rng As Range
On Error Resume Next
Set rng = Intersect(Range("F61:F432").SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow, _
Range("AJ61:AJ432").SpecialCells(xlCellTypeBlanks))
On Error GoTo 0
If Not rng Is Nothing Then
rng = 0
Else
Debug.Print Err.Number & ": " & Err.Description
On Error GoTo -1
End If
End Sub
答案 1 :(得分:3)
您需要遍历范围:
For i = 61 To 432
If Cells("AJ" & i).Value = "" And Cells("F" & i).Value <> "" Then Cells("AJ" & i).Value = 0
Next
答案 2 :(得分:1)
没有循环
reminded = 1
答案 3 :(得分:0)
如果要检查多个单元格的范围是否为空白,则需要使用类似的内容:
newCourse
答案 4 :(得分:0)
您将不得不遍历范围内的单元格。像这样:
dim cel as range
for each cel in rng.cells
If IsEmpty(cel) And cel.Offset(-30, 0) <> "" Then cel.Value = 0
next
为了更快,您可以使用范围值填充数组