/ / Sprawdź, czy komórka jest liczbą w Excel VBA [duplicate] - excel, vba, excel-vba

Sprawdź, czy komórka jest liczbą w Excel VBA [duplicate] - excel, vba, excel-vba

w kodzie poniżej pracuję nad robieniem liczbobliczenia na komórkach. Czasami jednak jedna z komórek (powiedzmy na przykład "LosLimit") może zawierać wartość nielicznikową, taką jak "---". Jak sprawdzić, czy komórka jest numeryczna, czy nie.

Jeśli jest to liczba, wykonaj obliczenia, a następnie zwróć wartość z "MeasValue"

Sub ReturnMarginal()

"UpdatebySUPERtoolsforExcel2016
Dim xOut As Worksheet
Dim xWb As Workbook
Dim xWks As Worksheet
Dim InterSectRange As Range
Dim lowLimCol As Integer
Dim hiLimCol As Integer
Dim measCol As Integer

Application.ScreenUpdating = False
Set xWb = ActiveWorkbook
For Each xWks In xWb.Sheets
xRow = 1
With xWks
FindString = "LowLimit"
If Not xWks.Rows(1).Find(FindString) Is Nothing Then
.Cells(xRow, 16) = "Meas-LO"
.Cells(xRow, 17) = "Meas-Hi"
.Cells(xRow, 18) = "Min Value"
.Cells(xRow, 19) = "Marginal"
LastRow = .UsedRange.Rows.Count
lowLimCol = Application.WorksheetFunction.Match("LowLimit", xWks.Range("1:1"), 0)
hiLimCol = Application.WorksheetFunction.Match("HighLimit", xWks.Range("1:1"), 0)
measLimCol = Application.WorksheetFunction.Match("MeasValue", xWks.Range("1:1"), 0)
.Range("P2:P" & lastRow).Formula = "=IF(ISNUMBER(" & .Cells(2, lowLimCol).Value2 & ")," & Cells(2, measLimCol).Address(False, False) & "-" & Cells(2, lowLimCol).Address(False, False) & "," & Cells(2, measLimCol).Address(False, False) & ")"


.Range("Q2:Q" & LastRow).Formula = "=" & Cells(2, hiLimCol).Address(False, False) & "-" & Cells(2, measLimCol).Address(False, False)

.Range("R2").Formula = "=min(P2,Q2)"
.Range("R2").AutoFill Destination:=.Range("R2:R" & LastRow)

.Range("S2").Formula = "=IF(AND(R2>=-3, R2<=3), ""Marginal"", R2)"
.Range("S2").AutoFill Destination:=.Range("S2:S" & LastRow)

End If

End With
Application.ScreenUpdating = True "turn it back on
Next xWks

End Sub

Odpowiedzi:

3 dla odpowiedzi № 1

Twoja odpowiedź była w pytaniu! Istnieje funkcja Numeric (variable_goes_here), która zwróci wartość true lub false, np.

if isNumeric(x) then msgbox("Woop!")

zwróci wartość true i wyświetli okno komunikatu x = 45 ale pominie, jeśli x = "Not a number"