繁体   English   中英

Excel VBA在空单元格中循环并检索行值

[英]Excel VBA looping through empty cells and retrieving row values

又是我!

我想做的是在我的范围内搜索任何空单元格,并为找到的每个空单元格从其行(偏移量)中返回一些值。

到目前为止,我提出的代码:

 Private Sub buscarbtn_Click()
Dim fecha As Date: fecha = fechabsc.Value
Dim DESCUBIERTO As Boolean: DESCUBIERTO = False
Dim LR As Long
Dim r As Long
Dim i As Long
Dim diasem
Dim cell As Range


Hoja9.Range("L8").Value = fecha
fec = Hoja9.Range("L9").Value

If fec = "1" Then
    diasem = "D"
End If
If fec = "2" Then
    diasem = "L"
End If
If fec = "3" Then
    diasem = "M"
End If
If fec = "4" Then
    diasem = "W"
End If
If fec = "5" Then
    diasem = "J"
End If
If fec = "6" Then
    diasem = "V"
End If
If fec = "7" Then
    diasem = "S"
End If

Hoja9.Range("L10").Value = diasem
Set fecdes = prontuario1.Range("S:S").Find(what:=diasem, LookIn:=xlValues, LookAt:=xlWhole)

For Each cell In prontuario1.Range("S:S")

    If fecdes.Offset(0, 5).Value = "" Then
      DESCUBIERTO = True
      Debug.Print fecdes.Offset(0, 2).Value & " " & fecdes.Offset(0, 3).Value & " - " & fecdes.Offset(0, 4).Value
    End If
Next cell

End Sub

我正在使用的Debug.Print只是测试的一种临时解决方案,因为尝试打印整个行只会返回一个结果...现在我得到同一行的多个结果。

我只能猜测我正在忽略某些内容或使用For Each循环完全错误。

我知道我的代码确实乱七八糟,但是如果您能指出正确的方向,我将不胜感激。

谢谢!

看起来您的循环似乎是每次都引用fecdes而不是单元格,因此对于S列中的每个单元格,它都将重新计算fecdes.offset(0,5),然后在fecdes单元格旁边打印值。 但是大概您至少想让它评估您在S列中循环通过的单元格,对吗?

Private Sub buscarbtn_Click()
Dim fecha As Date: fecha = fechabsc.Value
Dim DESCUBIERTO As Boolean: DESCUBIERTO = False
Dim LR As Long
Dim r As Long
Dim i As Long
Dim diasem as string
Dim cell As Range


Hoja9.Range("L8").Value = fecha
fec = Hoja9.Range("L9").Value


select case fec
case 1
    diasem = "D"
case 2
    diasem = "L"
case 3
    diasem = "M"
case 4
    diasem = "W"
case 5
    diasem = "J"
case 6
    diasem = "V"
case 7
    diasem = "S"
end select

Hoja9.Range("L10").Value = diasem
r = prontuario1.cells(1,19).end(xldown).row

For i=2 to r
If prontuario1.cells(i,19).Offset(0, 5).Value = "" Then
  DESCUBIERTO = True
  Debug.Print prontuario1.cells(i,19).Offset(0, 2).Value & " " & prontuario1.cells(i,19).Offset(0, 3).Value & " - " & prontuario1.cells(i,19).Offset(0, 4).Value
End If
Next i

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM