[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 04/07 15:59 / Filesize : 248 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part6



1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:31:39 ]
ExcelのVBAに関する質問スレです

質問前に 【 >>2-3 】 あたりを良く読むこと

前スレ
pc11.2ch.net/test/read.cgi/tech/1197448064/

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
   
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

792 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:44:05 ]
VBAでゲーム作る奴は変態

793 名前:781 mailto:sage [2008/05/14(水) 23:45:46 ]
なるほど、自分がやるべきことがわかってきました。
親切に答えてくれた方々、ほんとうにありがとうございました。

794 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:48:05 ]
>>792
しかしVBAの正しい利用方法だ。

795 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 07:44:28 ]
>>789
お前、馬鹿

796 名前:デフォルトの名無しさん [2008/05/15(木) 07:55:47 ]
>>788
年上のお姉さんに当てられたり、美少女の後輩にまさぐられたりする職場なんですね、俺と変わってくれ

797 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:00:39 ]
データベース/SQL使うんなら、
ExcelVBAより先にAccessのクエリー/マクロ/レポートを覚えた方が金になるぞ

798 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:15:17 ]
このスレではVBAでソートを作る方法を質問するといいよ。

799 名前:デフォルトの名無しさん [2008/05/15(木) 09:46:13 ]
Vista、EXCEL2007です。

EXCEL2003(XP)で作成したマクロを動かすと動作が異なっています。

<コード>
Range("A5").Select
ActiveSheet.Pictures.Insert( _
"D:\abc\pic1.JPG").Select
Range("A21").Select
ActiveSheet.Pictures.Insert( _
"D:\abc\pic2.jpg").Select

<現象>
(1)Vistaでは、pic2の画像が、A21の個所でなく、A5の個所に挿入されます
  (pic1の上に重なって)
(2)Vistaで、セルを選択して、画像挿入する操作をマクロ記録すると
Range("A21").Selectは記録されてますが、
ActiveSheet.Pictures.Insert("D:\abc\pic2.jpg").Selectが
 記録されていません。

上記プログラムで、pic2をA21の箇所に挿入できるようにするには
どうすれば良いのでしょうか。
よろしくお願いします。


800 名前:番組の途中ですが名無しです mailto:sage [2008/05/15(木) 14:03:07 ]
Excel2003のVBAでcontinue forが使えないのは仕様ですか?



801 名前:デフォルトの名無しさん [2008/05/15(木) 16:56:49 ]
>>799
スクロールの問題……じゃないよな

802 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:32:49 ]
Excel2000

シート上に
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
で生成したチェックボックスのみを削除するプログラムを
実行すると

アプリケーション定義またはオブジェクトの定義エラーです

というメッセージが出ます。 s.FormControlType のところで
エラーが出ているのですが、どうやったら動くようになるのでしょうか?

Dim s As Shape

For Each s In Sheets("sheet1").Shapes
If s.Type = msoOLEControlObject Then
If s.FormControlType = xlCheckBox Then
s.Delete
End If
End If
Next


803 名前:799 [2008/05/16(金) 17:00:43 ]
>>801
レスありがとうございます。
スクロールの問題ではありません。
(1)の現象になったので、
マクロと同じ操作をして、マクロ記録してみたら
(2)になりました。

804 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:30:33 ]
>799
WorkSheet.Shapes.AddPicture(...) かな?

試してないけど
ActiveSheet.Pictures.Insert( "D:\abc\pic1.JPG").Top = Range("A5").Top
ActiveSheet.Pictures.Insert( "D:\abc\pic2.jpg").Top = Range("A21").Top


805 名前:799 [2008/05/16(金) 20:29:24 ]
>>804
レスありがとうございます。
うまくいきました。

806 名前:デフォルトの名無しさん [2008/05/16(金) 20:37:24 ]
30125なら上位3桁だけとって、゙30100゙から100刻みで表示させたい。
0.002354なら゙0.00235゙から0.00001刻みでグラフの軸に表示したいのです。
何かよい方法はありませんでしょうか?

807 名前:799 [2008/05/16(金) 20:47:07 ]
>>804
別質問ですけど、
804で挿入したオブジェクトのnameは、
どのようにすれば取得できるのでしょうか。


808 名前:デフォルトの名無しさん [2008/05/16(金) 23:37:41 ]
仕事でマクロを使って制御のシミュレーションをしたいのですが
1つのプロシージャ内でループ演算をしつつ、他のプロシージャを実行して
変数を変更したいと考えています。
複数のプロシージャを並列処理できる方法はないのでしょうか?

809 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:12:29 ]
ActiveX EXEを作れば可能。
Win32APIのスレッドも使えるかもねー

810 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:15:28 ]
既出だったらすみません。

excel2000+winXpで開発してるんですが、
処理を走らせるとメモリの使用率がたまる一方で
解放されている気配を感じません。

しまいにはメモリが足りませんとエラーになり
落ちてしまいます。

助けて!!1

DAO3.6使ってるんですが関係しますかね?
メモリを解放する方法ってありますか??



811 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 06:59:32 ]
>>810

DoEvent とか
動的配列を使ってるなら必ずeraseするとか

812 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 08:39:43 ]
>806
刻み幅等を計算する方法を知りたいというのが主旨かな?

30125の常用対数は、log(30125)/log(10) =4.47892705558292
切り上げて、5
上位3ケタだけ取るので、刻み幅は、10^(5-3)=100

切り上げは、round(x-0.5)+1 という感じかな。

813 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:29:50 ]
>807
古い環境が無いんで試せてないけど
Dim Pic1 As Picture
Dim Pic2 As Picutre

Set Pic1 = ActiveSheet.Pictures.Insert( "D:\abc\pic1.JPG")
Pic1.Top = Range("A5").Top 
Range("A4").Value = Pic1.Name
Set Pic2 = ActiveSheet.Pictures.Insert( "D:\abc\pic2.jpg")
Pic2.Top = Range("A21").Top 
Range("A20").Value = Pic2.Name


814 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:03:34 ]
>>808
複数のExcelインスタンスを起こして、マルチプロセスでやれば?
これならWin32APIなんか使わずにできるが


815 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:17:01 ]
timer使え

816 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:10:29 ]
ループの中でたのプロシージャを呼び出せばいい
灰次

817 名前:デフォルトの名無しさん [2008/05/18(日) 23:31:42 ]
マクロでNORMDISTを使いたいんですが、エラーが出てしまいます。

マクロではどのように記述すればNORMDISTは使えるのでしょうか?

誰か教えてください

818 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 11:05:13 ]
Excel2000上で動的に配置したチェックボックスにイベント処理を追加したいのですが
方法がわかりません。ヒントだけでもいいのでお願いします。

819 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:39:14 ]
>>818
classモジュール使えばできるよ

820 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:46:45 ]
>>817
ヘルプの例で言えば、

42  対象となる値
40  分布の算術平均(相加平均)
1.5 分布の標準偏差

WorksheetFunction.NormDist(42, 40, 1.5, True)

で、いいんじゃない?



821 名前:デフォルトの名無しさん [2008/05/19(月) 20:24:01 ]
実行時エラー'1004'が出ます。
コマンドボタンで、
Workbook Open "C:\-.xls"
Worksheets("a").Select
Range("A20").Select

と入力し別ファイルのシートのセルを選択したいのですが、
どのように直せばいいか、教えていただきたいです。
よろしくお願いします。

822 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:26:10 ]
>>821
ちゃんと目的のbookが開いているなら、シート名「a」のシートがあれば問題ないよ

823 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:55:45 ]
>>821-822
シート上に置いたコントロールツールボックスのコマンドボタンならそんなんでまともに動くわけねーよ。
シートや範囲をちゃんとブックから明示しないと。

824 名前:822 mailto:sage [2008/05/19(月) 22:04:21 ]
>>823
なるほど、 シート上に置いたコントロールツールボックスのコマンドボタン
おまい天才!
スレ汚しスマソ

825 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:21:39 ]
>>823のなかなかのエスパーぶりに嫉妬

826 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:28:05 ]
別に>>823は普通だろ?
Formのコマンドボタンなら>>821でも動くだろうが、どこに書いても同じように動くコードを書かんとね。


827 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:30:47 ]
>>826
どこに書いても同じように動くコードを書く必要はない
コードを書いたクラスでまともに動けば問題ない

828 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:21:17 ]
質問させて頂きます。

デジタル署名付のVBAプロジェクトで、
ブックオープン時にオラクル接続をし、
オートシェイプで線を引くという処理をしております。
処理後、シートを見るとオートシェイプで描いた線の色がありませんでした。
プリンタで出力すると、線が描かれております。
原因と対処法を教えてください

【OS】windows XP pro
【EXCEL】2003

【処理内容】

Dim OraSession As Object
Dim OraDatabase As Object

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)

Set OraSession = Nothing
Set OraDatabase = Nothing

ActiveSheet.Shapes.AddLine(98.25, 151.5, 150#, 159.75).Select

といったかんじです

829 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:40:10 ]
>>828
オラクル関係なくね?
接続して閉じてるだけだろ?
それとも、オラクルに繋がなければ問題は解消されるの?

830 名前:826 mailto:sage [2008/05/21(水) 07:43:54 ]
>>827
そりゃ確かにそうだね。
冗長な記述を避けるためにもMeとか書かんからね。
>>821のコードに関してはということ。



831 名前:826 mailto:sage [2008/05/21(水) 07:46:16 ]
Me.を書かんことはちょっと違うか。
まどうでもよい。

832 名前:デフォルトの名無しさん [2008/05/21(水) 07:59:09 ]
書式設定指定したら?

833 名前:デフォルトの名無しさん [2008/05/21(水) 17:42:10 ]
XP、EXCEL2003です。

特定のディレクトリの直下にあるファイル(複数)のファイル名を
全て取得する方法を教えて下さい。
よろしくお願いします。


834 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:49:26 ]
>>833
ちょこちょこ質問掲示板見てると週に1回は遭遇する質問
ググれば腐るほどコードがある
個人的にはfilesystemobjectを使うのが一番効率いいと思う

835 名前:833 [2008/05/21(水) 19:20:12 ]
>>834
レスありがとうございます。
失礼いたしました。


836 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:22:28 ]
fsoはネットワークドライブ相手だったりするとテキメンに
速度が落ちたりするから困る。
 あと、ワイルドカードが無いのはどーゆーことだ。

837 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:21:02 ]
>>836
独り言はチラシの裏に書け

838 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 06:44:14 ]
確かfsoは、クエリとってからのファイル追加や削除、内容変更に
伴う更新もかなりの直近まで自動的に更新してくれる中々の
優れモンだったという記憶が....
Kernel32.DLL のAPIを使って自分でクエリした場合は、
ファイル数が多く、激しく更新されるような場合は、取得情報と
実態の間に食い違いが発生してユーザーはパニくるのがオチなんだが
(これもチラ裏に書くべきだったか)

839 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:21:06 ]
わざわざfsoやapi使わんでもDir()関数使えばよい

840 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:25:32 ]
Dirだとパスの長さが255以上になると確かエラーになる。



841 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:23:12 ]
sage

842 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:07:41 ]
OS:win xp
excel:2007

初めて質問します。お願いします。

 ・データ用のシート
 ・処理用シート

の二つを用意します。

データ用シート
    店舗→ A   B   C
 商品↓
 りんご   100  200  300
 みかん   10  20   30
 めろん    1   2    3

処理用シートのA1,B1のセルに店舗と商品を書き込むと、データ用のシートを参照して、
そのシートに書かれた数値(例えば、上記の表の「A店(=A1)」の「みかん=B1」だと「100」)が、
処理用シートのC1(「=100」が)に入るようにしたいです。
店舗、商品は任意で追加していきたいので、データ用シートの列、行を検索していくようなやり方がいいのでは、
と考えています。

調べて、VLOOKUP関数を使えば…、というところまで来たのですが、二点のセルの値を見て、
表から一つの値を出力する、というところがわかりません。
何卒、ご指導の方、お願いします。

843 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:01:34 ]
>>842
VBAに関係ないと思うのだが。
vlookup以外にもlookupやmatchもあるんだから何とかなるだろそれくらい。

844 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:16:49 ]
なんとかするのがお前たちの仕事だろ。

あのな、上から目線もいいけどここはVBAに詳しくない奴らが
何をどうやったらいいかを聞きにきてるスレなわけ。
その手ほどきをしてやった上でそういうこと言うならいいけど、
回答も示さずにそういうこと言うのは荒らしとかわんねーんだよ。
こたえる気が無いなら質問スレから消えろよカスが。


↓じゃ、模範的回答を頼む

845 名前:釣られてみる mailto:sage [2008/05/24(土) 00:26:30 ]
いや、それだけの情報でVBAでどうしろと。

846 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:07:26 ]
スレタイ読め。ここは質問スレであって回答スレではない。

847 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:09:22 ]
>>846
こいつ頭悪そうだな(ゲラゲラ

848 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:33:50 ]
>>842
いろんなやり方があると思うけど、私がスマートだと思うのを提案します。

データ用シートをこんなふうにする。
ID 店舗 商品 値段
Aりんご A りんご 100
Aみかん A みかん 10
Aめろん A めろん 1
Bりんご B りんご 200
Bみかん B みかん 20
Bめろん B めろん 2
Cりんご C りんご 300
Cみかん C みかん 30
Cめろん C めろん 3

IDの列は数式で作る。Aりんごのところに
=B2&C2
としてオートフィルで。


849 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:53:02 ]
つづき

処理用シートで
C1には
=A1&B1

D1には
データ用シートはSheet1にあるなら
=VLOOKUP(C1,Sheet1!A:D,4,FALSE)
としてできあがり。


850 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:12:05 ]
>>842
C1に
=index(「データの範囲」,match(B1,「商品名の範囲」),match(A1,「店舗名の範囲」))
と入れる

これVBAじゃないから、次からはEXCEL総合相談スレの方へ行ってくれ



851 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:55:08 ]
VBA初心者ですが質問させて下さい。
Module1で宣言したパブリック変数をThisWorkbookで参照する事はできないのでしょうか。

状況を説明しますと、nullpo.xlsというマスターファイルがあります。
その中のModule1で処理を実行すると、public変数をインクリメントします。

"名前を付けて保存時"の保存ダイアログで、あらかじめ表示されるファイル名に
そのpublic変数を出したいのですがうまくいきませんでした…

852 名前:851 [2008/05/24(土) 13:22:46 ]
クスン…終わらないと帰れないんです
みなさんの力を貸して下さい。

言い忘れましたがわたしは女です。

853 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:26:25 ]
>852
俺が何でも答えますよ
もうちょっとしたら家に着くから待っててね

ところで今日は帰ったらどうするの?
汗かいちゃったってシャワーでも浴びるのかな?かな?

854 名前:851 [2008/05/24(土) 13:34:41 ]
>>853
ありがとうございます。
彼氏と待ち合わせしてるんです。

855 名前:デフォルトの名無しさん [2008/05/24(土) 13:39:32 ]
VBAを自由自在に扱うために、VBの勉強をしようかと思うのですが
VBの種類が多すぎてどれを勉強したらいいのかわかりませんでした。
VBAのためにVBを勉強するには、どのVBを勉強すればいいのでしょうか?

856 名前:853 mailto:sage [2008/05/24(土) 13:41:43 ]
死ね。お前に教えることは何もない
自分でどうにかするんだな

857 名前:853 mailto:sage [2008/05/24(土) 13:42:33 ]
856は>854宛てな

858 名前:851 [2008/05/24(土) 13:59:41 ]
そんな…

他スレで質問することにします。
すみませんでした。

859 名前:側近中の側近 ◆0351148456 [2008/05/24(土) 15:22:18 ]
>>853
(っ´▽`)っ
独身の女の子には優しいのね。最低☆

860 名前:側近中の側近 ◆0351148456 [2008/05/24(土) 15:23:00 ]
>>855
(っ´▽`)っ
VBAならVB6.0だね。



861 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:25:38 ]
>>856
手のひら返しワロス

862 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:29:18 ]
>>851
そのpublic変数値を返す、public関数でも作れば?

つか、ダイアログに値をいれて有効にする処理が出来てないだけの気がするが…

863 名前:855 [2008/05/24(土) 15:29:35 ]
>>860
ありがとうございます。

864 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:39:20 ]
>>860

VB6.0やVB.NETをVBAを使えない人に勧めちゃらめどちらも超ベテラン向けだよ
VBScript位しか残らないけど、VBAとはちょっと合わないかも知れないね。
やっぱしVBAはVBAで覚えるしかないのかな(鬱

865 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:18:52 ]
VBAを覚えたいのにVBAを利用しない意味がわからない

866 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:16:49 ]
>>842
商品と店舗の組み合わせが疎であるなら>>848の方法
組み合わせが密であるなら>>850の方法がいいだろうね。

ところで解決したのかどうか反応がほしいもんだね。
コミュニケーションしようや。

867 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:25:26 ]
>>865
これほんとにその通り。
なんでVBAを覚えるためにVBを覚えたいなんて言うのかな。
VBを覚えたいんだって素直に言えばいいのに。

868 名前:デフォルトの名無しさん [2008/05/24(土) 21:29:23 ]
VBってMSDNライブラリ使えるの?

869 名前:デフォルトの名無しさん [2008/05/24(土) 21:38:17 ]
VBAを体系的に勉強するのにいい本とかありますか?

870 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:46:29 ]
実戦力UP! Excel VBAドリル式問題集



871 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:47:13 ]
VBAとはマクロの記録で泥縄式に覚えていくもんだ

872 名前:デフォルトの名無しさん [2008/05/24(土) 22:46:45 ]
エクセル2003で上の行から数字が入ったセルだけをm個
選んで加えるVBAをうちたいんですが、上手くいきません。

for a = 1 to 100
m = cells(3 , 3)
b = cells(1 + k + a , 1 )
k = 1
s=1
do while s =< m
if b <>"#na n/a" then
b = b + cells(1 + k + a + s , 1)
k = k + 1
s = s + 1
else
k = k + 1
loop
next

いまこんな感じで打ってるのですが、 if b <>"#na n/a" then
のところで止まってしまいます。
どこがおかしいのでしょうか?
また、もっといい方法はありますか?

873 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:21:29 ]
>>872
「数字が入ってるセル」なら条件をb≧0にすれば?

874 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:33:33 ]
負の数は数字ではないと?

875 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:38:47 ]
kとsを+1しているがループするたびに初期値が1に戻るぞw
あと、b = cells(1 + k + a , 1 )の部分、1回目の処理でkの値が判らない。

876 名前:デフォルトの名無しさん [2008/05/24(土) 23:39:42 ]
application.run "abc"
msgbox "zzz"

abcマクロの完了の後に、ダイヤログボックスにzzzを表示したいのに、
即行でzzzが表示されてしまう。
同期をするようにするには引数か何かを入れるのでしょうか?


877 名前:デフォルトの名無しさん [2008/05/24(土) 23:40:54 ]
>>873
なるほど。そういう方法がありましたか。
ありがとうございます。

>>874
負の数は存在しないデータなので、大丈夫だと思います。


エラーがでた原因がわかる方はいらっしゃりましたら、お答えいただきたいです。

878 名前:875 mailto:sage [2008/05/24(土) 23:42:23 ]
ごめん入れ子になってたんだな。最初のforしか見てなかった。

879 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:43:21 ]
end ifが無いな

880 名前:872 [2008/05/24(土) 23:43:44 ]
>>875
すいません初心者なもので、いまいち意味不明です。
勉強して理解したいとおもうのですが、参考までにどういった
勉強をすればいいか教えてください。
オススメの本、サイト等等・・・



881 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:46:56 ]
>>877
<>"#na n/a"
エラー値でなければ って条件と思っているのであれば間違い。
エラー値かどうかを調べたいのならiserrorを使う

882 名前:872 [2008/05/24(土) 23:47:24 ]
for a = 1 to 100
  m = cells(3 , 3)
 b = cells(1 + k + a , 1 )
  k = 1
 s=1
   do while s =< m
    if b > 0 then
     b = b + cells(1 + k + a + s , 1)
     k = k + 1
      s = s + 1
    else
     k = k + 1
    end if
    loop
next

これで大丈夫でしょうか?

883 名前:デフォルトの名無しさん [2008/05/24(土) 23:48:51 ]
>>881
そういうことでしたか。
iserrorという存在を知りませんでした。
勉強不足でした。
ありがとうございます。

884 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:53:46 ]
> if b <>"#na n/a" then
これエラーなんか出ないよ
意図したとおりには動かないかもしれないけど

885 名前:デフォルトの名無しさん [2008/05/24(土) 23:57:29 ]
根本的な間違いがあった

for a = 1 to 100
  m = cells(3 , 3)
 b = cells(1 + k + a , 1 )
  k = 1
 s=1
   do while s =< m
    if cells(1+k+a+s-1 > 0 then
     b = b + cells(1 + k + a + s , 1)
     k = k + 1
      s = s + 1
    else
     k = k + 1
    end if
    loop
next

すいませんでした。

886 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:18:54 ]
まあなんだ
ちょっと落ち着け

887 名前:デフォルトの名無しさん [2008/05/25(日) 12:04:28 ]
シートコピーで悩み事があるので打開策を見つけられたらと思い書きこまさせていただきました。
どなたかお助けいただけたらうれしいです。
VBAにてシートコピーに要する時間が長くて(10分以上)悩んでおります。

Bookの構成といたしまして標準モジュールに数式文字列を評価するものを
かいてあります。

Function Eval(ByVal expr As String)
Eval = Evaluate(expr)
End Function

・Sheet1には、様々な経理データを入れるようにしてあります。
そこに入れた値などを元にセル名を作るように書いてあります。

例)A1に”1”という値でB1に”2”という値が入っていればA2のセル名を”12”
とします。

・Sheet2には予めセルに=eval(12)の様な数式をいれ評価をしております。
これが1枚のシートに2000くらい数式が入っています。

Sheet1、2ともに特定条件のとき複製を何枚か作ります。
このときすごく時間がかかります。
原因は数式が大量にあるものをコピーすること及びセルに名前をふっているのが原因なのは分かりますが
コピー以外の動作が非常に快調なので変えたくないということとたぶんeval以外での解決策を模索するのはかなり時間を要しそうなのでコピーを何とかする方を選びたいです。
もちろん再計算の停止などはしてあります。
事前に特定条件を作りだしシートを非表示にしておき特定条件のときに表示させるのも
一つの手ではありますが何百枚もシートを隠しておくとファイルサイズがばかでかくなるという
難点もあって躊躇しています。
例えば=eval(@@@@@@)を多く入れたのが原因であれば標準モジュールを何らかの形でいったん無効にすれば早くなるのかとかスクリプトなどを使って別のブックからシートを移動させるなど・・・・他の代替案はありえないでしょうか?
何分わかりづらい質問で申し訳ありませんが、ご回答いただければ幸いです。
よろしくお願いします。

888 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:11:58 ]
まず計測しろよ。んで、遅い原因を特定してから、もっとわかりやすい文章で再質問な。

889 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:58:21 ]
自動計算やめてシートコピー

890 名前:876 mailto:sage [2008/05/25(日) 13:03:06 ]
>>887
質問する方のレベルのものが下手なレスをつけるのもどうかと思うが、
設問説明に既に回答があるような・・・
経理処理なのでシート数が大量となるのはある程度やむを得ないでしょうが、
それにしても、10分というのはかかりすぎというか、長いですね。
1 object.enablecalculation=falseを設定されていると言うことですが、
必要なシート全てにされているかどうか
2 通常、速度を速める常套手段の
application.screenupdating=false
application.visible=false
application.enableevents=false
で、どうなるか試してみたらいかがでしょう

私の質問は解決しました。
直列処理のはずが、並行処理になったのかとの疑問からでしたので。



891 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:55:25 ]
>>887
どこかで見たような質問だな
何でそんなおかしなことするの?


892 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:59:47 ]
>>887に回答する人は次を見てからにしてね
www.moug.net/faq/viewtopic.php?t=27321






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<248KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef