スプレッド表示の範囲を元通りにするには?


ゆう  2006-10-27 05:59:18  No: 97058

前回、「カンマ区切りプログラムを作って、スプレッド表示させるには?」というタイトルで投稿したのですが、先の投稿については一旦、”解決”のフラグを立ててしまっているので、改めて投稿した次第です。
まずは、下記のコード文をご覧頂ければと思います。
※長文で申し訳ございません。

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」として実行すると、表示がテキストボックスの内容と一致しない

②テキストボックスの文字列を全部消して再度実行すると、スプレッドの表示が狭まってしまう

私にはやはり意味がよく理解できず(特に①)一日中困り果てました。
②については、「画面の初期化」でも行えばいいのかしら・・・と思ったのですが(結局、解決には至らず)。

改めて、ご教示いただけないでしょうか?


ゆう  2006-10-28 00:40:58  No: 97059

ゆうでございます。

昨日の質問と同様ですが、

'スプレッドへの表示
spv_Main.Col = GetVarCnt + 1
spv_Main.Row = 1
spv_Main.Action = SS_ACTION_RESET
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

^^^^^^部分のコードを追加したのですが、うまくいきません。
どなたかご教示いただけないでしょうか?
初期状態にもっていくにはどうすればいいか・・・CLEARなども試してみたのですが、中々うまくいきません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加