我是 excel VBA 新手,我正面臨這個問題,我正在撰寫一個代碼,該代碼應該查看單元格的值,然后遍歷數字串列并通過此串列獲取下一個更高或相等的數字。
問題是代碼作業正常并讓我獲得下一個更高的數字,但是當涉及到相等的部分時它不起作用,我寫了一個 if 陳述句,它在達到(相等)的條件時中斷回圈,但是它似乎沒有執行這一行。請幫我弄清楚為什么會這樣
我的代碼看起來像這樣
Do While ([c12] < [h13])
If ([c12] = [h13]) Then
Exit Do
End If
[c12].Value = Worksheets("lists").Cells(cb, 9)
cb = cb 1
Loop
uj5u.com熱心網友回復:
當您的If陳述句為 True 時,您While將始終為 False,因此回圈在If觸發之前結束。
如果您將 the 更改While為 aDo您可以看到正在If執行的陳述句。
Do
If ([c12] = [h13]) Then
Exit Do
End If
[c12].Value = Worksheets("lists").Cells(cb, 9)
cb = cb 1
Loop
uj5u.com熱心網友回復:
我想我同意@Warcupine 的觀點,即“如果”是不必要的。
如何將“If”條件構建到條件回圈本身中?
Do
[c12].Value = Worksheets("lists").Cells(cb, 9)
cb = cb 1
Loop Until ([c12] >= [h13])
uj5u.com熱心網友回復:
第一個數值大于...
- 調整
I2(第一行 2)和Sheet1(標簽名稱)。
Option Explicit
Sub Test()
' Workbook
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
' Source
Dim sws As Worksheet: Set sws = wb.Worksheets("Lists")
Dim slRow As Long: slRow = sws.Range("I" & sws.Rows.Count).End(xlUp).Row
Dim srg As Range: Set srg = sws.Range("I2:I" & slRow) ' adjust "I2"
' Destination
Dim dws As Worksheet: Set dws = wb.Worksheets("Sheet1") ' adjust "Sheet1"
Dim dCell As Range: Set dCell = dws.Range("C12")
Dim dValue As Variant: dValue = dws.Range("H13").Value
If Not IsNumeric(dValue) Then Exit Sub
Dim sCell As Range
Dim sValue As Variant
' Loop and write.
For Each sCell In srg.Cells
sValue = sCell.Value
If IsNumeric(sValue) Then
If sValue >= dValue Then ' value found...
dCell.Value = sValue
Exit Sub
End If
End If
Next sCell
' value not found...
dCell.Value = "" ' or '0', or remove to keep as-is
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/396394.html
上一篇:ExcelVBA-將非空白單元格與下方的空白單元格合并
下一篇:Excel搜索包含子字串的多行
