お世話になります。環境はVB6.0とSpread7.0です。
下記のように行の追加を行ったところと突然プロジェクト自体が
落ちてしまっております。
'「SS」はスプレットシート名称のこと
Dim i As Integer
'行を挿入します。
i = SS.ActiveRow
SS.MaxRows = SS.MaxRows + 1
SS.BlockMode = False 'ブロック モード 解除
SS.InsertRows i + 1, 1
> SS.MaxRows = SS.MaxRows + 1
のところで落ちているのですが・・原因がわかりません。
エラー内容は オートメーション エラーでした。
行の追加をする際には 特別に何か設定しておかなくてはならないのでしょうか?
申し訳ございませんが なにか知ってましたらよろしくお願いいたします。
SS.Rows = SS.Rows + 1
ではないでしょうか?
間違えました。
もともとここの掲示板で、サードパーティ製のコントロールに対する
回答は付き難い傾向があるので、スプレッドシートを全く使った
ことがない状態で回答しますが、過去に関連ある質問がある場合は
リンクを貼って頂いた方が…。あこさんのハンドルネームは最近に
なって多少ボクの記憶に残るようになってきましたが、回答側の
都合を言わせて頂きますと、似たような事を言ってたイメージ
くらいは覚えてますが、それを過去ログから見つけるのに苦労する
場合が有ります。質問者の実行環境に少しでも近づけられる情報を、
回答者が手に入れられるような配慮をお願いできたらと思います。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200412/04120118.txt
↑成功したのではないんですか?
成功していたものが失敗するようになったのならその間で
変更した箇所(または意識してないが違っている設定)に
原因があると思いますが?。…その辺の手がかりになる
情報が記載されてませんね。
普通に考えれば、ありそうなのは
行を追加すると都合が悪い設定をしている。
行を追加すると都合が悪い処理が走る。
とかです。
データグリッドなんかでは列に Null を許さない設定を
しているのに追加行のデフォルト値を Null にしてたり
数値型しか許さない設定で""を設定してたり…。行の追加
自体を許してない場合もあるかもね?。そーゆー設定が
あれば当然エラーになります。とりあえずその辺りから
調べてみて下さい。
どんなデータをどんな設定で使ってるのかの情報を全く
知らせず『必要な設定はありますか?』ってのはもともと
回答が付き辛い質問です…。
お返事ありがとうございました。
本当に質問内容が具体的にいつも書くことができず・・
大変失礼いたしました。
スプレットの行追加について 以前に質問したのですが
たしかに行の追加はできたのですが・・
行の追加をして データが2ページにまたがったりすると
自動的にスクロールなどのバー表示がされるのですが
このバー表示段階で??落ちてしまっております。
原因になりそうなことといえば
シートを複数使用していることなのかも・・です。
シート番号によって使い分けはしているのですが・・複数シートを使用したことが
なかったので 複数使用すると 行の追加などでも
設定がちがってくるのかと思いまして 質問させていただきました・・。
一人で作業をしているので・・ほかに聞くことができません。
いつもこちらにお世話になってしまいまして本当にすみませんが、
これからは 質問する際も 十分説明できるように努力します。。のでよろしくお願いします。
スプレッドとか個人では買わないですよね?
新人を放置して勝手に開発せよとは酷い会社ですね。
まるでウチの関連会社のようです。
というのは置いといて・・・
もしかしてSS(0)とかいう感じでコントロール配列になっていますか?
それと、エラー発生時にはエラー番号が書いてあると思いますので
メッセージの一部だけを引用するよりエラー番号を書いた方が他の
人にはわかりやすいと思います。
>新人を放置して勝手に開発せよとは酷い会社ですね。
自分ひとりでマニュアルを読んで、試して解決できるように教育中とか?
>新人を放置して勝手に開発せよとは酷い会社ですね。
個人でSOHOとかかもしれないしね。プログラミング部門を
新たに設立してて…とか、まぁ、一人で開発するしかない状況も
結構あると思いますが…。
…って↑ただの閑話休題ですので、あこさんの個人情報を詮索してる
訳ではありません。ばか正直に答えたりしないようにw
>まるでウチの関連会社のようです。
w…同感(ぇ。
色々出てきましたねぇ、新たな情報がw。あこさん自身でも原因の
予測は幾つかできてるじゃナイですか(^^;)そういった切っ掛け
を見つけてテストプログラムを作って確かめる作業を回答者はしてる
だけですよ?。回答者が質問された時点でその回答を知ってる場合は
案外少ないと思います。で、このスレは時間があればレスしますが、
ボクの回答をあてにするなら、こちらではテストできませんので、
テストプログラムを作って確認する作業はあこさん自身にして頂く
必要があります。
…途中で Spread7.0 を持ってる人の回答がたくさん入る事を期待しましょうw。
>それと、エラー発生時にはエラー番号が書いてあると思いますので
>メッセージの一部だけを引用するよりエラー番号を書いた方が他の
>人にはわかりやすいと思います。
そうですねー。オートメーションエラーだからメモリのアドレスとか
が出てそうで詳しく聞いても意味無いかも?と思って放置してましたが、
質問者には意味不明な文字でも、表示されている以上、エラー原因に関係
する文字ですからエラーメッセージは可能な限り正確に表記すべきですね。
>シートを複数使用していることなのかも・・です。
そんな事ができるんですねぇ(ぉぃ。それとも
>もしかしてSS(0)とかいう感じでコントロール配列になっていますか?
↑の指摘が正解?
>行の追加をして データが2ページにまたがったりすると
>自動的にスクロールなどのバー表示がされるのですが
>このバー表示段階で??落ちてしまっております。
という事はテストプログラムは
[VB6.0]
Private Sub Command1_Click()
SS.MaxRows = SS.MaxRows + 1
End Sub
で1行ずつ追加してスクロールなどのバー表示で毎回落ちる
という事ですね?。
>原因になりそうなことといえば
>シートを複数使用していることなのかも・・です。
と組み合わせて考えると単一シートで上記テストプログラムを
実行してもエラーは出ないのに複数にすると落ちる…。
その予想が正しいかテストして下さい。
…ただ、そんなバグがあったら Spread7.0 が商品として
成り立たないので…疑わしい気持ちもかなりありますがw
テストはバンバンしておきましょう。
エクセルとかの経験から
> i = SS.ActiveRow
の方がエラーが発生する可能性は上なんですが…
以上のような『このテストプログラムでエラーが出るなら
原因はXXX』と限定できるテストを繰り返します。
結局理由が分からなかった時の最終手段は『このテストを
使用してるコントロールの全ての設定で試す』だったり
します。…ま、基本ですねw。
皆様 いろいろありがとうございます。
提言どおり、単一シートと複数シートで同一ロジックで実行してみました。
・単一シートの実行結果
スクロールでの表示時に落ちることはありませんでした。
・複数シートの実行結果
> Private Sub Command1_Click()
> SS.MaxRows = SS.MaxRows + 1
> End Sub
で、1行ずつ追加してスクロールなどのバー表示で落ちておりました。
ただ、ブレイクポイントを設定して1行づつ実行すると落ちないです。
複数シートの設定はスプレットデザインによってシートを設定しております。
今回は配列などでの使用はしておりません。。。
>-------------------------------------------------------
・・先ほど こちらへの書き込みを行うために エラー情報を取ろうと
思って実行したところ 落ちなくなってしまいました。。
追加釦処理自体はいじっていないのですが・・・
(ファイルからのデータを読込み スプレットシートに書込む処理だけを追加しました・・これだけです。)
エラー内容も原因がわからなくなってしまいました。。。
これは 解決にチェックを入れたほうがいいのかもしれないのですが・・
自分で原因がわかっての対策をして改善されたのならば解決なのですが・・
運良くできているだけの状態なのかも・・と思うととても不安ですし、
また 同じような状態になるかもしれないので 解決のチェックはつけないで
おきます。まぎらわしいかもしれませんが ご理解ください(_ _;;)
ツイート | ![]() |