[英]EXCEL VBA - Similar function to excel formula Value
我是VBA的新手,因此在嘗試將某些字符串數字轉換為值數字以進行IF驗證時遇到問題。
問題是。 我在“ A”列中填充了以下內容:
E / B:房屋01
E / B:房屋02
E / B:建築/新別墅
E / B:大樓/貝拉卡薩
E / B:房屋03
因此,在我的代碼中,如果有數字,我希望它用最后兩個數字填充“ B”列,如果沒有數字,則要使用名稱。
Set Rng = Range("A8:A" & Range("I" & Rows.Count).End(xlUp).Row)
For Each celula In Rng.SpecialCells(xlCellTypeVisible)
Select Case True
Case IsNumeric(Right(celula, 2)) = True
celula.Offset(0, 1).Value = Right((celula), 3)
Case Else
celula.Offset(0, 1).Value = Mid(celula, InStr(4, celula, "/") + 1, Len(celula))
End Select
Next celula
但是Case IsNumeric(Right(celula,2))= True永遠不會是True。 它不會捕獲最后2個數字。 但它的名稱可以正常使用,並返回“ New Villa”和“ Bella Casa”。 而且我認為問題在於,即使有數字,Right(celula,2)也不是數字。
我想知道是否有一種方法可以將值中的“ Right(celula,2)”轉換為Excel中的= Value公式,以進行驗證。
OBS:在嘗試這種方式之前,我已經將一個excel公式應用於這些單元格並起作用了,但是我想嘗試這種方式以用於學習目的。
謝謝
我認為for each
循環本身都能按預期工作。
但是這個
Set Rng = Range("A8:A" & Range("I" & Rows.Count).End(xlUp).Row)
問題可能出在這里。 您必須確保您具有正確的Range
。 您可以通過調試進行驗證: Debug.print Rng.Address
。
Sub t()
Dim rng As Range
With ActiveSheet
Set rng = .Range("a1:a" & .Range("a" & .Rows.Count).End(xlUp).Row)
For Each cell In rng.Cells
If Val(Right(cell.Value, 2)) = 0 Then
cell.Offset(0, 1) = Mid(cell.Value, InStrRev(cell.Value, "/") + 1, Len(cell))
Else
cell.Offset(0, 1) = Val(Right(cell.Value, 2))
End If
Next cell
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.