|
聞いている分際で失礼なのですが、先ほどかみちゃんさんがお答えくださったコードは、先ほど私が質問する際に書いたコードほとんどそのままではないでしょうか?
あと、今いろいろと改良してみたのですが、実行してみたところモジュール部分で、「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
よろしくお願いします。
|
|