| 
    
     |  | 聞いている分際で失礼なのですが、先ほどかみちゃんさんがお答えくださったコードは、先ほど私が質問する際に書いたコードほとんどそのままではないでしょうか? あと、今いろいろと改良してみたのですが、実行してみたところモジュール部分で、「Rangeメッソドは失敗しました。Globalオブジェクト」と表記されるのですが、どのようにしたらいいでしょうか?
 以下、コードです。
 ユーザーフォーム
 Private Sub CommandButton1_Click()
 Dim DataRange As String, OutRangeA As String, OutRangeB As String, _
 i As Long, x As Long, Mynum As Long, strRow As String
 DataRange = UserForm1.TextBox1.Text
 OutRangeA = UserForm1.TextBox2.Text
 OutRangeB = UserForm1.TextBox3.Text
 Call Calculate(DataRange, OutRangeA, OutRangeB)
 Unload UserForm1
 With Me.TextBox1
 strRow = Me.TextBox1
 If .Value = Range(strRow).Rows.Count Then Exit Sub
 For i = Len(.Value) To 1 Step -1
 If Not IsNumeric(Mid(.Value, i, 1)) Then
 x = i + 1: Exit For
 End If
 Next i
 If x = 0 Then
 Mynum = CLng(.Value)
 Else
 Mynum = CLng(Mid(.Value, x))
 End If
 End With
 End Sub
 
 モジュール
 Sub Calculate(DataRange As String, OutputRangeA As String, OutputRangeB As String)
 Dim Std As Single, sigma As Single, Mynum As Long
 
 Dim RanData As Range, strRow As Range
 Set RanData = Range(DataRange)
 Set strRow = Range(strRow)
 Std = Application.StDev(RanData)
 Range(OutputRangeA).Select
 Call Output("標準偏差", Std)
 sigma = Std * Sqr(Mynum)
 sigma = Std * Sqr(Range(strRow).Rows.Count)
 Range(OutputRangeB).Select
 Call Output("インプライドボラティリティ", sigma)
 End Sub
 
 よろしくお願いします。
 
 |  |