アプリ版:「スタンプのみでお礼する」機能のリリースについて

実行時エラー '1004' RangeクラスのSortメソッドが失敗しました。 と出ます。

With Worksheets("データ")
.Range("A2:N" & .Cells(.Rows.Count, 1).End(xlUp).Row).sort _
Key1:=Range("E3"), Order1:=xlAscending, Key2:=Range("C3"), _
Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending
End With

E列、C列、A列で昇順で並び替えしようと思っております。
前まで使えていたのですが、ソートできなくなり、何が原因かわからないため、質問しました。

また、もう一つエラーがあります。

実行時エラー'-2147417848(80010108)'
オートメーションエラーです。
起動されたオブジェクトはクライアントから切断されました。
と表示されます。

http://okwave.jp/qa/q8452163.html

range("A1").resize(ubound(a),1) = application.transpose(a)
上記部分でエラーがでます。


上記内容で、どういった原因が考えられますか?
どちらか片方でも分かる方いらっしゃいましたら、回答よろしくお願い致します。

A 回答 (4件)

こんにちは。



>セルに書き込んで、結果を読み込むようにすれば上手くいきますか?

10+32,767(字) * 2(byte) / 1,024 だから、約64kb 文字列はすべて2バイト扱いされます。
それに反して、String型の変数は、2Gまでです。
もちろん、Variant型でも、量的には減りますが、それでも、扱うことができると思います。

ところで、TextBoxの容量はいくつだったか、調べてみると、以下のような話が見つかりました。
まず、間違いないと思います。

---
http://www5b.biglobe.ne.jp/~yone-ken/VB/TextBox. …
TextBoxにまつわるFAQ
[テキストボックスって容量の制限はあるんですか? ]
[64Kbyteです。それ以上のテキストを扱う場合はRichTextBoxを使います。ちなみに、文字列変数は固定長でも可変長でも最大約2Gbyteまでです。]
-----

私は、RichTextBox という手があることをすっかり忘れていました。
もちろん、Excel2003では、フルインストールしていれば、VB6Runtimeに入っているはずです。
なければ、MSからダウンロードすればよいです。試してみる価値は十分にあると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
RichTextbox、標準で入っていませんでした…
なので、探してみようと思います^^

お礼日時:2014/02/25 12:53

ところで、SPLITに関しての質問というのは、何だったのでしょうか?


削除されてしまっていたのですが、これとは関係あるのでしょうか?
もし、うまく行かないというなら、なかなか厄介な問題があるような気がします。
なぜなら、SPLITで分けられる配列は、おそらく、Variant で受けなくてはならないからです。
もし、明示的なデータ型なら、もう少し余裕が取れるからです。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
見て頂いていたようですが、
この質問と同じような内容でした。
少し対策を考えて見ます^^

お礼日時:2014/02/25 12:54

こんばんは。



>With Worksheets("データ")
> .Range("A2:N" & .Cells(.Rows.Count, 1).End(xlUp).Row).sort _
> Key1:=Range("E3"), Order1:=xlAscending, Key2:=Range("C3"), _
> Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending
>End With

上記マクロに関しては、他人が書いたもののようですから、それは、今のところ触れないことにしますが、Key1:=Range("E3")などのKeyは、アクティブシートという意味ですから、シートを限定した使い方だと思います。

本題はこちらになります。

>実行時エラー'-2147417848(80010108)'
>オートメーションエラーです。
>起動されたオブジェクトはクライアントから切断されました。
>と表示されます

[ マクロ ] エラーになったりならなかったりする
http://oshiete.goo.ne.jp/qa/8484198.html

こちらに書きましたが、未だ、解決する見通しは立っておりません。
確か、ご質問者さんは、Excel2003ですから、今、何に対して、オートメーション・エラーを起こしているのか分かりません。

エラーの意味は、オブジェクトが生成されていたものが死んでしまって、そのオートメーションの残骸にアクセスしようとしているということなのですから、今、その範囲は限られるはずです。
VBA上のエラーですが、その戻り値は、Cのエラーです。

>フォーム上のテキストボックスにデータが記入されています。
これは、文章として、ユーザーフォームのことでしょうか。
もし、そうですと、実務上は、意外に気をつけなくてはならない部分があります。

もしかして、1つのTextBoxに対して、取得したテキスト・データが大きすぎるのかもしれません。
それで、TextBoxが死んでしまうかもしれません。

もし、そうなら、設計の根本から変えたほうがよいでしょう。

Range("A1").Resize(Ubound(a),1) = Application.Transpose(a)
として、セルに張り付けすること自体は、エラーが発生する要素はありませんが、Excel 2003の配列のデータ量は、公開はされていないのですが、およそ5~6,000個(セル数)の間ぐらいだったと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指摘通り、Textboxが死んでいるのかもしれません。
データは多いときに数十万という文字列が記入されます。

http://okwave.jp/qa/q8452163.html
VBA フォーム上textbox指定範囲の抜き出し

上記方法を採用しております。
しかし、テキストボックス上には全ての文字データが入っておらず、途中で終わっているような状態でした。

セルに書き込んで、結果を読み込むようにすれば
上手くいきますか?

回答ありがとうございました^^

お礼日時:2014/02/24 09:25

前半


データは何行ありますか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
データは2130行ありました。

前半の質問は、なぜかExcelを再起動したら直りました!
ありがとうございます^^

お礼日時:2014/02/24 09:17

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

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