|
▼仔牛 さん:
> ご回答有難うございます。
>概観のイメージは、まさにこの状態なのですが、テキストボックスのチェンジに対応させて、その変更がすぐに反映されるようにするには、どのようにすればいいのでしょうか?
メンバ数が少ないならば、前回のコードをちょっと訂正・追加して
Private rng As Range
Private evflg As Boolean
'==============================================
Private Sub UserForm_Initialize()
Set rng = mk_sample_data
evflg = False
With TextBox1
.ScrollBars = fmScrollBarsVertical
.MultiLine = True
.Text = rng.Cells(1)
For idx = 2 To rng.Count
.Text = .Text & vbCrLf & rng.Cells(idx)
Next
.SelStart = 0
End With
evflg = True
End Sub
'=====================================================
Private Sub TextBox1_Change()
If evflg = True Then
With TextBox1
rng.Value = Application.Transpose(Split(.Text, vbCrLf))
End With
End If
End Sub
'=================================================================
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'新しい改行を禁止する
If Shift = 1 And KeyCode = 13 Then KeyCode = 0
End Sub
'===========================================
Function mk_sample_data() As Range
Dim data As Variant
data = Array("a", "b", "c", "d", "e", "f", "g", "h")
For idx = LBound(data) To UBound(data)
Cells(idx + 1, 1).Value = String(5, data(idx))
Next
Set mk_sample_data = Range(Cells(LBound(data) + 1, 1), Cells(UBound(data) + 1, 1))
End Function
こんな方法で可能ですが、コマンドボタンのクリックでセルに反映の方が
よいのかもしれませんよ!!
> また、サンプルとして入力された文字列をあらかじめ入力し(対象となる範囲を作成して)、事前設定をすませておいた場合だと、どのような形にすればよろしいのでしょうか。
テキストボックスの内容の事前設定は止めたほうが良いと思いますよ!!
指定セル範囲が決まっているなら(例えば、A1からA20)
'=======================================================
Private Sub UserForm_Initialize()
Set rng = range("a1:a20") 'ここで設定して下さい
evflg = False
With TextBox1
.ScrollBars = fmScrollBarsVertical
.MultiLine = True
.Text = rng.Cells(1)
For idx = 2 To rng.Count
.Text = .Text & vbCrLf & rng.Cells(idx)
Next
.SelStart = 0
End With
evflg = True
End Sub
|
|