2017-06-24 11 views
-4

のセルが数値であることを確認します。セルの数値計算を行っています。時には、セルの1つ(たとえば、 "LosLimit")に "---"のような数値以外の値が含まれることがあります。セルが数値かどうかを調べるにはどうしたらいいですか?以下のコードでExcel VBA

それは数ある場合は、計算を行う、「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 
+1

Googleはちょうどタイトルを入力することで、 '1,290,000'結果を返す場合はスキップされますされます。 –

+0

@ A.S.H、申し訳ありませんが、私はコード事前テストに入れました。どこに私の思考プロセスが進行していたのか...それはあまり遠くない!実際に試したコードでコードを更新しましたが、 "MeasValue"だけが返されます。私は 'isNumeric'を間違って使用していますか?ありがとう – Joe

+0

あなたはセルのアドレスを確認していますので、内容を確認してください。 –

答えて

1

から他の戻り値は、あなたの答えは質問にありました!たとえばtrueまたはfalseを返す関数isNumeric(variable_goes_here)があります。

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

は真を返し、x = 45のためにあなたのメッセージボックスを与えるがx = "Not a number"