| 
    
     |  | こんにちは。かみちゃん です。 
 > strRow = Me.TextBox1
 > MsgBox Range(strRow).Rows.Count
 >と、することで、テキストボックス1にA1:A100と範囲を打ち込んで、メッセージボックスに99と選択した行の数値が出るようにはなった
 
 メッセージボックスに「99」と表示されましたか?
 私は、「100」と表示されるのですが・・・
 
 Keinさんのコードと私のコードは同様のことをしています。
 なので、失礼ながら、中途半端に融合されています。
 以下のようなコードで十分かと思います。
 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
 Dim DataRange As String, OutRangeA As String, OutRangeB 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
 Dim RanData As Range
 Set RanData = Range(DataRange)
 Std = Application.StDev(RanData)
 Range(OutputRangeA).Select
 Call Output(Std)
 ' sigma = Std * Sqr(Mynum)
 sigma = Std * Sqr(Range(DataRange).Rows.Count)
 Range(OutputRangeB).Select
 Call Output(sigma)
 End Sub
 
 
 |  |