前回、「カンマ区切りプログラムを作って、スプレッド表示させるには?」というタイトルで投稿したのですが、先の投稿については一旦、”解決”のフラグを立ててしまっているので、改めて投稿した次第です。
まずは、下記のコード文をご覧頂ければと思います。
※長文で申し訳ございません。
Private Sub cmd_Exe_Click()
Dim GetVar() As Variant 'データを入れる一次元配列
Dim GetVarCnt As Long '一次元配列要素数
Dim i As Long 'Forカウンタ
Dim DataCnt As Long '一次元配列データ格納時に使用するカウンタ
'カンマの数を調べる
GetVarCnt = 0
'テキスト文字数分ループ
For i = 1 To Len(txt_Ins.Text)
'カンマのチェック(Chr(&H2C) → ",")
If Mid(txt_Ins.Text, i, 1) = Chr(&H2C) Then
GetVarCnt = GetVarCnt + 1 'カンマ数カウントアップ
End If
Next i
'カンマがなかったら終了
If GetVarCnt = 0 Then
spv_Main.MaxCols = 0
spv_Main.MaxRows = 0
Exit Sub
End If
'領域確保
ReDim GetVar(GetVarCnt) As Variant
'一次元配列GetVarに値を入れる
DataCnt = 0
'上記と同様、文字数ループ
For i = 1 To Len(txt_Ins.Text)
If Mid(txt_Ins.Text, i, 1) = Chr(&H2C) Then
'文字がカンマだったら次の要素に
DataCnt = DataCnt + 1
Else
'カンマ以外だったらその文字を足す
GetVar(DataCnt) = GetVar(DataCnt) & Mid(txt_Ins.Text, i, 1)
End If
Next i
'スプレッドへの表示
spv_Main.Col = GetVarCnt + 1 '列数
spv_Main.Row = 1 '行数
'配列要素数分ループ
For i = 0 To GetVarCnt
spv_Main.Col = Cnt + 1 '入力する列番号
spv_Main.Row = 1 '行番号
spv_Main.Text = GetVar(i) '表示
Next i
End Sub
上記のように、コーディングしたのですが、以下のような指摘を受けました。
①一度実行して、テキストボックスの文字列を「aaa,ccc,ddd」として実行すると、表示がテキストボックスの内容と一致しない
②テキストボックスの文字列を全部消して再度実行すると、スプレッドの表示が狭まってしまう
私にはやはり意味がよく理解できず(特に①)一日中困り果てました。
②については、「画面の初期化」でも行えばいいのかしら・・・と思ったのですが(結局、解決には至らず)。
改めて、ご教示いただけないでしょうか?
ゆうでございます。
昨日の質問と同様ですが、
'スプレッドへの表示
spv_Main.Col = GetVarCnt + 1
spv_Main.Row = 1
spv_Main.Action = SS_ACTION_RESET
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^部分のコードを追加したのですが、うまくいきません。
どなたかご教示いただけないでしょうか?
初期状態にもっていくにはどうすればいいか・・・CLEARなども試してみたのですが、中々うまくいきません。
ツイート | ![]() |