マンガでよめる痔のこと・薬のこと

いつもお世話になっております。

VB6、Spread3.0の環境でコーディングしています。

Spreadを単一行モードにして、1行だけ選択された
状態で選択された行の行番号を取得したいのです。

Me.vaSpread1.Row = Me.vaSpread1.SelModeIndex
Me.vaSpread1.Col = 1

で取得しようとしても、うまくいきません。
どのようにすれば、行番号を取得できるのでしょう?
ご存知のかたがおられましたら、よろしくお願い
します。

A 回答 (1件)

SpreadのクリックイベントでRowに渡されているので


それを使えばいいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2006/09/14 16:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?

VB.netで作成しています。
SPREAD(GrapeCity)の下記のイベントでSPREADのセルに入力された値をチェックしてエラーが無ければデータベースに登録、または更新をして入力エラーがあった場合、セルにフォーカスを設定するように記述していますがうまくフォーカスを設定する事ができません。

・SPREADのChangeイベント
・SPREADのKeyUpイベント
・SPREADのLeaveイベント
・SPREADのCellLeaveイベント

フォーカスを当てたいセルの行番号とカラム番号をSetActiveCellで指定していますが・・・
フォーカスを設定するにはどうしたらいいのでしょうか?
ご存知の方がいましたらアドバイス宜しくお願いします。
では、失礼します。

Aベストアンサー

サポートページを見ただけなので参考程度にお願いします。
http://file.grapecity.com/patches/SPREADNET25Win_ReleaseNote_2510122002.htm

上記ページの「制限事項と注意点」→「【イベント/メソッド】 」の中に「シート上に表示されていないセルに対してSetActiveCellメソッド呼び出し(またはActiveRowIndex/ActiveColumnIndexプロパティの設定)を行った場合、シートは自動的にスクロールされません。表示させる場合にはFpSpreadクラスのShowActiveCellメソッドを併用してください。 」とあります。
一度試してみては?
また、GrapeCityさんは意外とサポートが優秀ですよ。
以前、SPREADver3.0の頃は何回かバグとってもらいました。(非公開で最新ファイルくれました)
バグでなくても親切に対応してもらった覚えがあるので一度問い合わせをしたほうが近道かもしれませんね。

QSPREADでカーソルの位置を1行目に戻したいなぁ

VB6とSPREADver7.0を使っています。
SPREADのOperationModeプロパティは2(行モード)です。
初期状態で、SPREADカーソルの位置は1行目にあります。
SPREADの2行目以下の行を選択し、ボタン押下で
SPREADカーソルの位置を1行目に戻す処理を知りたいのです(泣
RowcountやRecordCountを使うやり方があると聞いたのですが・・・ 
どなたかわかる方よろしくお願いします。

Aベストアンサー

SetActiveCell ?

QスプレットシートのGetTextについて。

 今、VBでスプレットシートを使っています。
 スプレットシートに入っている値を配列に入れたいと思ってます。
 そのとき使う関数はスプレットシート名.GetTextですよね?
 そのGetTextの引数が行と列までは分かりますが、第3引数のVarの
 意味が分かりません。
 ヘルプを読んでも理解できなくて、ネットでも調べてみましたが、
 スプレットシートに関するページがなかなか見つからなくて
 今も分からない状態です。

 どなたかスプレットについて載っているページをご存知の方が
 いましたら、紹介してください。
 また、この場で教えてくださってもかまいません。

 すみませんが、よろしくお願いします。

Aベストアンサー

VarにGetTextされた内容が入ります。

例えばですが
fspreed1.GetText ColCnt, RowCnt, Var
と記述すると、スプレッドシートの横方向はColCntで指定しますね。
スプレッドシートの縦方向はRowCntで指定しますね。

で、Varにそのセルの内容が設定されます。

Qスプレットシートでフォーカスをあてない方法

スプレットシートで入力させたくない、ボックスとかを、フォーカスをあてない方法はあるのでしょうか?
スプレットシートのプロパティーとかで設定が
できたらいいのですが、教えてください。

Aベストアンサー

ロックを掛けて尚且つ、常時入力モードにするのは駄目でしょうか?

スプレッドデザイナの
スプレッド動作環境の[全般]タブの一番左上のチェックボックスなんですが、これだとロックされているセルを選択しないはずです。ただ、セルの複数選択は出来なくなりますが…。

QVB.NETでSPREADの設定方法

VB.NET2005(Express Edition)でSPREAD(SPREAD for .NET 3J Windows Forms Ed.)を使用したいと思ってます。
SPREADのインストール後に参照の追加を行いました。
しかし、ツールボックスにSPREADは追加されておらず、フォームに貼り付けて使うことができません。
インストール後にやることが足りないのだと思いますが、なにが足りないんでしょうか?

Aベストアンサー

ツールボックス上で右クリック→アイテムの選択→
.NetFrameworkコンポーネントタブで、「FpSpread」にチェックをつける。

QVisual Basicから Spreadのスクロールを制御する方法

VB.6 とSPREAD v6.0J で開発しております。
特定のラベルもしくはボタンをクリックすることでスクロールの操作ができるようにしたいのですが…
具体的には、一行下へ、一行上へ、画面一枚分下へスクロール、画面一枚分上へスクロール、最上段へ移動といったラベルもしくはボタンをそれぞれ作りたいと思います。
Spread のヘルプなどを参照したのですが、どのように記述したらよいのかが分かりません。
あるいは、スクロールバーの幅を広く表示させることはできるでしょうか。
(TabletPCで動作させるソフトウェアで、全体的に見た目を大きくする必要があるのです。)
ヒントをご教示いただければ幸いです。

Aベストアンサー

以前私が作成した記憶では、Spreadの
縦スクロール・・・TopRowプロパティ に表示開始行番号を設定。
横スクロール・・・LeftColプロパティ に表示開始列番号を設定。
を行っていたと思います。
今回やりたいことはボタン押下時に縦スクロールしたいとのこと
なので、TopRowプロパティの設定値を各ボタン毎に指定する感じでは。

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

Qスプレッドシートのタブ移動の件について

度々申し訳ありません。またスプレッドシートで質問があります。

現在VB6.0+スプレッド7.0で開発を行っております。

あるボタンを押下したら、スプレッドシートの入力モードを常にON状態にするかOFF状態にするかという処理があるのですが、
fpSpread.EditModePermanent = False
にすると入力モードがOFFになり、逆に
fpSpread.EditModePermanent = True
にすると入力モードがONになります。

そこで問題なのが入力モードがOFFになるとキーボードのTABキーを押下した時、セル移動ができなくなることです。尚、キーボードの矢印キーだと正常にセル移動ができ、また、入力モードがONの場合、TABキー、矢印キー、共に正常にセル移動ができました。

入力モードがOFF時にTABキーでセル移動ができる方法をご存知の方がいましたらご教授を宜しくお願い致します。

Aベストアンサー

[TAB]キーでセル間の移動をする設定をONにします。
fpSpread.ProcessTab = True
これで出来ると思いますよ。

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

QVB.NET SPRED(チェックボックスの処理)

.net初心者です。スプレッドを扱うのも始めてで調べてもわからないので教えて頂けないでしょうか?

(行いたい処理)
スプレッド上のチェックボックスにチェックを入れたものの行データを取得。


下のような感じでテストプログラムを作りました。

spd_LIST.SaveChanges()
For I = 0 to 5
If spd_LIST.Seet(0).Cell(I,0).Value = 1 Then
  (行データ取得処理)
Else
(処理なし)
End if
Next

チェックボックスにチェックが入っていればデータを取得できますがチェック無しの行の処理に入った場合エラーで落ちてしまいます。
他の方法が思いつかないため、やり方に間違いがあるようでしたら教えていただきたいです。宜しくお願いします。

Aベストアンサー

エラー内容がわからないので予想回答

nullの値を参照するとコケるので
ベタに以下のように書いてみてどーでしょうか。
(余力あれば、nullを考慮したメソッドにしても)

nothingの判定はいらないかも。
ま、いろいろ調整してみてください。

---------------------------------------
spd_LIST.SaveChanges()
For I = 0 to 5

If Not spd_LIST.Seet(0).Cell(I,0).Value is Nothing andalso _
Not spd_LIST.Seet(0).Cell(I,0).Value Is DBNull.Value andalso _
spd_LIST.Seet(0).Cell(I,0).Value = 1 Then
  (行データ取得処理)
Else
(処理なし)
End if
Next


人気Q&Aランキング