• 締切済み

vaSpreadの表示が消えてしまいます。

VBの初心者です。よろしくお願いします。 VB6.0とvaSpread3.0を使用しています。 1度Spreadに表示した値が、新たな値を(1行下に)表示した際に消えてしまいます。 1度表示したものを残したまま、新たな行に値を追加していきたいのですが、何か方法はありますでしょうか? -------------行いたい動作------------- ・Form1.vaSpread1のチェックボックスの値(1or0)をForm1.Command1クリック後、Form2.vaSpread2に表示。 ・Form2.Command2を押すとForm1を表示し、再度チェックボックスを押せる状態にし、Form1.Command1を押すとForm2.vaSpread2の次の行に値を前回のチェック分を表示したまま追加表示したい。 この動作の繰り返し。 -------------コード------------- 【標準モジュール/Module1】 Public Row As Integer Public check As Integer 【Form1】 Private Sub Command1_Click()   vaSpread1.Row = 1 'チェックボックスのセル位置(行)   vaSpread1.Col = 2 'チェックボックスのセル位置(列)   Module1.check = Val(vaSpread1.Text)   Form2.Show End Sub 【Form2】 Private Sub Form_Load()   Call spreadShow End Sub Private Sub spreadShow()   vaSpread2.Row = Module1.Row + 1 '値を表示するセル指定(行)   vaSpread2.Col = 1 '値を表示するセル指定(列)   vaSpread2.Value = Module1.check End Sub Private Sub Command1_Click()   Form1.vaSpread1.Row = 1 'チェックボックスのセル位置(行)   Form1.vaSpread1.Col = 2 'チェックボックスのセル位置(行)   Form1.vaSpread1.Text = 0 'チェックボックスを元に戻す   Module1.Row = Module1.Row + 1   Form1.Show   Unload Form2 End Sub それとも、下記コードでは消してしまうような動作をしているのでしょうか? よろしくお願いいたします。

みんなの回答

回答No.1

formをUnloadすると、Spreadの値は消えてしまいます。 UnLoadせず、Form2.Visible = Falseで消して Form2.Visible = Trueで表示したらどうでしょう。 spreadShowは発生しなくなるので、 Command1に記述すればいいと思います。

MegMegumi
質問者

お礼

Spreadの値はUnloadで消えてしまうのですね。 勉強になりました。 どうもありがとうございました。

関連するQ&A

  • vaSpreadのチェックボックスとコマンドボタンについて

    VBの初心者です。よろしくお願いします。 VB6.0&vaSpread3.0を使用しています。 Spreadの同一行にコマンドボタンとチェックボックスを配置しています。 コマンドボタンをクリックすると1行削除するようにしたいと思っています。 ButtonClickedにて1行削除できるよう、記載したのですが、 チェックボックスをクリックしてもButtonClickedが反応し、1行削除されてしまいます。 コマンドボタンとチェックボックスを使い分けたい場合、どのように記載したらよろしいでしょうか? 下記にコードを記載します。 Private Sub vaSpread1_ButtonClicked(ByVal Col As Long, ByVal Row As Long, ByVal ButtonDown As Integer) With vaSpread1 .Row = Row .Row2 = Row .BlockMode = True .Action = ActionDeleteRow .BlockMode = False .MaxRows = .MaxRows - 2 End With End Sub よろしくお願いいたします。

  • Picture1.Printとしてもpicture1には何も表示されません

    Private Sub Form_Load() Call kansu End sub --------------------------- Private Sub kansu() a="文字" Picture1.Print a End sub --------------------------- のように、pictureコントロールに 文字を入れる処理をする関数を呼んでいるのですが、 Formが表示されてもpicture1には何も表示されません。 Msgboxを入れておくとメッセージボックスが出るので 呼び出されてはいるようなのです。 この関数をCommand1_Click()などから呼ぶとpicture1コントロールに ちゃんと表示されます。 どうすればよいのでしょうか?

  • VBのスプレッドシートについて

    VBのフォーム上にスプレッドシートをとりこみ、 ボタンをクリックすると、アクティブになっている 行を削除したいです。 スプレッドシートではデザイナで、事前に単一選択を選んでおき、1行単位でアクティブになるように設定しています。 スプレッドシートのヘルプを参考に、 Private Sub Command1_Click() With vaSpread1 .Row = ActiveRow .BlockMode = False .Action = SS_ACTION_DELETE_ROW .BlockMode = True End With End Sub このように記述したのですが、 うまくいきません。 処理は通るだけで、行の削除がされません。 何が原因なのでしょうか?お願いします。

  • フォームのアクティブと非アクティブ表示について

    Form1からForm2を表示するという処理を以下のようにコーディングしてみました。 **Form1.frm*** Private Sub Command1_Click() Form1.Hide Form1.vbModal Form1.Show End Sub **Form2.frm*** Private Sub Command1_Click() Unlaod Me End Sub 画面にエクスプローラ等のウィンドウが表示されているときに、Form2を表示させようとすると非アクティブ状態で表示されてしまいます。 また、Form2をUnloadするとForm1が表示されるのですが、その際に、Form1のタイトルと、タスクバーに表示されているボタンが反転した後非アクティブ状態になってしまいます。 フォームは常にアクティブで表示させたいのですが、どうすればよいのでしょうか?

  • フォームを表示してからメッセージボックスを表示する

    メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。 ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、 今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう? Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" End Sub だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを開いたときのイベントは複数あるようで、 Private Sub Form_Activate() MsgBox "Form_Activate" Debug.Print "Form_Activate" End Sub Private Sub Form_Current() MsgBox "Form_Current" Debug.Print "Form_Current" End Sub Private Sub Form_GotFocus() MsgBox "Form_GotFocus" Debug.Print "Form_GotFocus" End Sub Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" Debug.Print "Form_Open" End Sub Private Sub Form_Load() MsgBox "Form_Load" Debug.Print "Form_Load" End Sub をすると、 ・Form_Load ・Form_Activate ・Form_GotFocus ・Form_Open ・Form_Current の順に開きますが、やはりフォームが最後に表示されてしまいます。 どうにかして先にフォームを表示させる方法はないでしょうか? ご回答よろしくお願いします。

  • スプレッドについて

    VBも素人なんですが、スプレッドのとり方を教えてください。 以下のスプレッドが既存で存在していてチェックボックスが各行ごとにあるのですが、チェックしたときに呼ばれる関数を以下に書きました。 例えば002という値を取得したいときどうコーディングしたらよいでしょうか?  _____________  | 001 | AAAA |  a   |   |-----|------|----------|     | 002 | BBBB |  b   |  |-----|------|----------|  | 003 | CCCC |  c   |  |-----|------|----------| ※関数の中身は適当です。どうやったらとれるか試行錯誤しています。。。 Private Sub sprService_ButtonClicked(ByVal Col As Long, ByVal Row As Long, ByVal ButtonDown As Integer) Dim intbutton As Integer Col = Row intbutton = ButtonDown sprService.Col = sprService.Row sprService.Col = sprService.Row2 End Sub

  • 最終列に入力されている文字を表示する

    エクセルVBAで最終列に入力されている値の表示方法について教えてください。 最終行については表示できるのですが、最終列に入力されているものの表示がうまくいきません。 A列の最終行の値をセル”D1”に表示するについては Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long r = Cells(Rows.Count, 1).End(xlUp).Row Range("D1").Value = Cells(r, 1).Value End Sub でうまくいきました。 最終行、例えば3列目の10行目に”111”と入力されているときにセル”D1”に”111”と表示するようにはどうしたらよいのでしょうか。 どなたがご指南ください宜しくお願いします。

  • VB2008 Formを関数の引数にする

    お世話になります VB2008で開発をしています Formを2つ作成し どちらも同じ名称のテキストBOX(TextBox1)コントロールを貼り付けています Publicの関数でそれぞれのFormに値をセットしたいのですが 「'TextBox1' は 'System.Windows.Forms.Form' のメンバではありません。」 とエラーが発生してしまいます 初歩的な質問で申し訳ありませんが ご助言頂けると助かります 宜しくお願い致します ソース: --------------------------------------------------- Module Module1 Public Sub Main() Dim Form1 As New Form1 Dim Form2 As New Form2 SetValue(Form1) SetValue(form2) End Sub Private Sub SetValue(ByVal obj As Form) obj.TextBox1 = "TEST" End Sub End Module ---------------------------------------------------

  • 選択セルに計算結果を表示

    エクセルVBAで選択セルに計算結果を表示したいのですが、教えてください。 A列には、ID B・C列には値が入力されています。 下記の構文ですと、行のどこをダブルクリックしても、D列に合計が表示されます。 D列以降のどの行をダブルクリックしても、アクティブなセルに合計を表示したいです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cells(Target.Row, 4) = Cells(Target.Row, 2) + Cells(Target.Row, 3) End Sub

  • SPREADの行の削除

    VB6.0 SPREAD3.0 OS:2000 SPREADでカレント表示した行を削除ボタンを押したら 削除したいのですがやり方がうまくわかりません。 クリックしたらカレント表示 Private Sub oSpmain_Click(ByVal Col As Long, ByVal Row As Long) With oSpmain .ReDraw = False .Row = -1: .Col = -1: .BackColor = vbWhite .ForeColor = RGB(255, 300, 0) .BlockMode = True .Row = Row: .Row2 = Row .Col = 1: .Col2 = .MaxCols .BackColor = .ForeColor .ForeColor = vbWhite Xor .ForeColor .BlockMode = False .ReDraw = True End With End Sub ここまではできたのですが、削除が思うようにできません。アドバイスお願いします。

専門家に質問してみよう