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 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
357 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:01:01 ] >>356 クラスモジュールを使うとどんなことが実現できるの?
358 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:35:56 ] >>356-357 まさにそこで今ハマってます。 Excel2007みたいな感じで、ステータスバーに「合計」と「データの個数」が 常に両方とも表示されていたら便利だなぁ、と思ってこんなマクロを書いてみました。 ------------------------------------------------------------------------ Sub Worksheet_SelectionChange(ByVal Target As Range)   'ステータスバーに「合計」と「データの個数」を二つとも表示   Application.StatusBar = " 合計=" & WorksheetFunction.Subtotal(9, Target) & _               " データの個数=" & WorksheetFunction.Subtotal(3, Target) End Sub ------------------------------------------------------------------------ これを、PERSONAL.XLSに書けば動くかなー、と思って気軽にやり始めたのですが、 甘くなかったです・・・。 いろいろググったり、詳しい人に聞いてみたりしたら、どうもクラスなるものを 使わないと解決しなさそうな感じなんで、今必死こいてクラスの勉強しとります。
359 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:59:45 ] VBA使いはひどいなwwww 根本理解してないというか理解しようとしていないwwww 動けばいいやーっていうスタンスでやってきたからそうなる
360 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:33:20 ] > 根本理解してないというか やっぱそうかー。なんか「VBA使い」に恥をかかせたようでスマン…。 たぶん、俺がひどいだけだと思うんだ。
361 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 04:05:16 ] 準マスター文書として使えるのがVBA/OLE未使用文書 準々マスター文書として使えるのがVBA/OLE多用文書 半端に使ってるものは信頼性が一番低く、生ゴミ文書 扱いになる。
362 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 10:01:48 ] ステータスバーを使わずに メッセージボックスやユーザホームで "処理中です・・・・ " & Count & "行" と表示させながら裏で実行させる方法ってありますか? 例えばMsgBoxとかで表示させると、そこで止まってしまうんですが・・・
363 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:51:57 ] >>361 ExcelアプリとExcelデータは区別したほうがいいってことね。
364 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:39:50 ] >>362 msagent
365 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 14:07:46 ] ユーザフォーム
366 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 14:44:10 ] >364 ありがとうございます、やはりこの手の処理方法は VBAのみで実現するわけじゃないんですね ちょっと面白そうなので、VBS使ってその方向で検討してみようと思います
367 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 14:46:54 ] VBSでやれることはVBAでもやれるぞ。 参照設定にあるはずだ。
368 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:51:55 ] use form
369 名前:デフォルトの名無しさん [2008/04/22(火) 16:06:57 ] 引数で受け取った配列(arr)が1次元か2次元かを判定する方法で 今は On Error Resume Next 'エラー出力を停止する lng = UBound(arr, 2) lngErr = Err.Number On Error GoTo 0 'エラー出力を再開する のようにUBound()関数を使用してエラー発生の有無で判定してるのですが 他に良い方法ないでしょうか。。
370 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:07:20 ] >>369 エラーを意図的に起こして別の情報を得るコードは Acess−VBAなど、DBという会社システムでは泣く子も黙る世界と因縁の深い汎用機大型機の コードでは常套手段。 やはり一般的にはしないほうがいい。 特にAccessなどDBが絡むシステムでは、VBA使うだけでも領域侵犯とみなされやすい ので注意。
371 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:37:09 ] >>362 初心者の俺が解答するから間違ってたらごめんよ。 例えば、50件のデータを処理する場合はカウンタ変数を作っておいて、1件の処理終わる度にそれに1ずつ足していけばいいと思うよ。そして、「処理件数/全件数」をユーザーフォームに貼りつけたラベルに表示するのを繰り返す。 マスターの皆さん見当違いだったらご指摘をお願いします。
372 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:43:05 ] >>371 忘れてた。 裏で処理するなら「Application.ScreenUpdating」を使って画面更新止めたり、EXCELを非表示にした方がスマートかな。
373 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:58:37 ] VBAであんまり凝ったことをやろうとしない方がいいと思うがな 作り捨てアプリ作成言語として割り切って使った方が前向きかも
374 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:25:26 ] 昔は無茶ばかりしたなあ
375 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:05:11 ] >>374 kwsk
376 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:29:53 ] バカクライアントが作ったエクセル表 きままにセル結合したり、色に意味持たしたり、2行結合のセルと2行間に罫線が無いセルに それぞれ意味があったり、その行数が20行位まで別条件だったり、もう気が狂いそうです。 これをコンバートする為にまず整形しなければならず、1万行近い定期案件なのです。 凝った事をやるつもりはさらさらないが仕事だから仕方ないのです
377 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:19:56 ] >>369 SDKに配列の要素があるかどうかの判定をするAPIがあったはず 名前忘れたけど
378 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:01:12 ] >>369 配列の次数やレンジを引き数に積んで貰わないの?
379 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:12:15 ] エラーで判定がいやなら、無難にIFかCaseでいいんじゃないの?
380 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:20:37 ] >>376 工数出せばいいだろうに。 ・お前のウンコシート使って無理矢理自動化すると1人月 ・俺様が作ったスマートな表を使って自動化すれば0.5人月 両案出して上司に決済させろ。
381 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:14:59 ] 1愚人月 0.5賢人月
382 名前:デフォルトの名無しさん [2008/04/23(水) 23:59:01 ] ActiveWorkbook.Pathで、自分のファイルの存在場所がわかりますが、 拡張子をxlsからxlt(テンプレート)に変えた場合、保存されていない 状態でOpenしますので、xltファイルの存在Pathが取得できません。 元となった、xltファイルの存在場所のPathを知る方法は無いでしょうか? Googleでは、「ファイル→開く」だとPathは取得できるが、xltファイルを ダブルクリックで開いた場合は裏技的なコードを書かないとダメと書いてあり その人はそのコードを無くしてしまったとあったのですが… www.keep-on.com/excelyou/2001lng4/200110/01100516.txt
383 名前:ゆうすず [2008/04/24(木) 13:05:32 ] こんにちは、お邪魔します。 エクセル2003、ウィンドウズXPを使用しています。 マクロの記述は本で調べるなどして奮闘中ですが、 調べてもわららないことがあったので書き込みさせていただきます。 家のパソコンだと、なぜか[ツール]→[マクロ]とすすんで、 本来だったら[マクロの記録]となるのでしょうが、 ここが白抜きで実行できません。 セキュリティも下げてみたりしたのですが、どうにもわからなくて…。 なんだか初歩どころか一歩も進んでいないような質問で、大変恐縮なのですが、 どなたか教えていただけると助かります。 よろしくお願い致します。 ゆうすず
384 名前:デフォルトの名無しさん [2008/04/24(木) 13:08:08 ] 以下のような部分でプログラムが止まってしまいます。 どうも関数内の「"」がVBAの中での「"」と混同されているらしく、 うまく回避できません。いっそ「0」に置き換えてもいいのですが・・ Sub Finding_Nimo() Range("A41").Formula = _ "=IF(ISERROR(VLOOKUP(B1,$DC$2:$DD$48,2,FALSE)=TRUE),"",(VLOOKUP(B1,$DC$2:$DD$48,2,FALSE)))" End Sub いい解決法は無いでしょうか?
385 名前:デフォルトの名無しさん [2008/04/24(木) 13:12:04 ] >>383 セルがダブルクリックされた状態になっているのでは? 他のセルを選択しなおせばOKのはず
386 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:20:00 ] >>384 この場合は、「""」は「""""」と記述すれば上手くいくと思うよ。
387 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 14:39:11 ] >>386 おお、上手くいきました。ありがとうございます!
388 名前:デフォルトの名無しさん [2008/04/24(木) 21:24:09 ] OS:XP Excel2003 共有フォルダにあるファイルを開きたいのですが、 どのように書けば共有フォルダを指し示すのでしょうか? 例えばCドラにあるファイルなら「C:\ファイル名」 と書きますよね。
389 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:33:03 ] \\共有名\hoge
390 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:41:21 ] ブー 詳しくはWindows板で聞く事 スレ違いというか板違い。 板違いの質問への回答はご遠慮下さい。
391 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:43:26 ] ↑ 了簡が狭いとはこの事を言うんだね。
392 名前:389 mailto:sage [2008/04/24(木) 21:47:13 ] 板違いでしたか失礼しました。
393 名前:デフォルトの名無しさん [2008/04/24(木) 21:58:49 ] エクセルの質問じゃないのか? 知らんけど
394 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:49:51 ] >>390 >>388 はEXCELでVBAを使用して開く場合はどうしたらいいのか聞きたいんだと思う。
395 名前:388 mailto:sage [2008/04/25(金) 01:05:42 ] >>394 その通りです。 VBAで共有フォルダのファイルを開くコードを 書こうと思ったのですが、どう書けばいいのか わからず困っていました。 適当にググったのですが答えは見つかりませんでした。
396 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:14:29 ] >>388 で答えはわかったの? 共有フォルダー コンピュータ名=EXCELの 共有ディレクトリVBAの サブフォルダーXLSの ブックtest.xlsを開くコードは?
397 名前:デフォルトの名無しさん [2008/04/25(金) 12:44:00 ] 工数の累計を求めたいのですが、同じ計算式でも EXCELのセル上で計算したものと、VBA上で計算したものと では結果が微妙に違います。 何故でしょうか?
398 名前:346 [2008/04/25(金) 13:48:29 ] セルの書式設定のパターンで網掛けをやると文字の上に網かけるじゃないですか VBAの力を駆使して文字の下に網かけれるようにできないですか?
399 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 01:07:28 ] VBAなどでのExcelの操作は、 あくまで人間が操作してできることしかできないよ、それ以上でもそれ以下でもない。
400 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 01:54:20 ] またアホが湧いた
401 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 14:29:11 ] 入門用の書籍で やさしくわかるExcel関数・マクロ 改訂版 を買おうと思うんだけどどう?
402 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 10:03:45 ] ポケモンキャラクター図鑑とかウルトラマン 怪獣図鑑みたいなものだと思って買う コンビニで売ってるくらいのもので、実にコンビニエンス! な本。ただし内容は覚えないほうがいいよ。
403 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 10:35:50 ] >>402 じゃあおすすめ教えて下せえ 皆さんはどうやって覚えたの?_実習あるのみ?
404 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 13:25:29 ] >>403 俺はインプレスのできる大事典で覚えた。
405 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:22:00 ] >>404 おまえは俺か 俺もそれで覚えた。カラフルで見やすくおすすめ。取り組みやすい。
406 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:24:05 ] >>402 ドラえもんのポケットの中の道具辞典だろ? マクロや関数は。 ドラえもんの道具辞典みたいなもんだよ。エクセル便利マクロ集ってのは。 (ちょっと使いすぎたり適用範囲間違えるとのび太みたいに災難に合う) VBAがウルトラマンに出てくる怪獣みたいなもの。
407 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 17:32:05 ] 最近のだと しっかり学ぶ! Excel VBA 短期集中講座 [VBAマクロ基礎] 編 がいーよ。
408 名前:デフォルトの名無しさん [2008/04/28(月) 11:34:36 ] VBAforEXCEL 2003 sp1に関してなのですが、F8で一行ずつ実行しているときに、 Application.ScreenupdatingをFALSEにすると、なぜか(?)一行ごとに 画面の更新が行われ、非常にもたつきます。 これは、2003のみの仕様なのでしょうか。 あるいはサービスパック適用で改善されたりしますか。 よろしくお願いいたします。
409 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 12:36:50 ] 2003SP3 Application.Screenupdating = FalseでもF8で実行すると画面は更新されています ただし、非常にもたつくという症状はありませんでした いずれにしてもSP3は適用しておいた方がいいと思いますよ
410 名前:408 mailto:sage [2008/04/28(月) 12:46:17 ] >>409 ありがとうございます. ただ、不思議なことにUpdating = TRUEの記述が入っていると、 はやく実行されるんですよ。ちょうど意味が逆転する感じで・・。
411 名前:デフォルトの名無しさん [2008/04/28(月) 13:16:36 ] スマン、ちょっと教えて欲しいんだが、数字を小さい順に並び替えるのってどうやるんだ?RANKにすりゃいいのか?
412 名前:デフォルトの名無しさん [2008/04/28(月) 13:30:05 ] print文で正規表現を用いた出力をしたいのですが、 どのようにしたら良いでしょうか。 例:print "(tab)Hello" (tab)の箇所にタブを入れたいと思います。 もしくは、正規表現を用いずに出力する方法はあるのでしょうか。
413 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 13:35:33 ] >>412 vbTab
414 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 13:40:28 ] www.nicovideo.jp/watch/sm2821781
415 名前:デフォルトの名無しさん [2008/04/28(月) 14:19:08 ] >>411 配列のソートが出来ないのは不便。 シートに数字を広げて、昇順かけるしかないでしょ
416 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 14:26:05 ] Sub 長さ4の配列データの並べ替え( A ) if(A(1)<A(2)AND(A(2)<A(3))AND(A(3)<A(4))then return end if if( (A(2)<A(1))AND(A(1)<A(3))AND(A(3)<A(4))then A(1)=A(2) A(2)=A(1) end if あと14個似た構文が続く End Sub 以前、会社のシートにこれがあった。 バグが出る度に書き直していった苦労の跡がにじんでた。 なんだかんだいって、結構偉大なコードだと思った。
417 名前:412 mailto:sage [2008/04/28(月) 14:26:47 ] >>413 ありがとうございます。 解決しました。
418 名前:デフォルトの名無しさん [2008/04/28(月) 15:15:49 ] >>415 サンクス。早速やってみる。
419 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:25:51 ] >>416 笑えるなあ。
420 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:32:36 ] >>416 A(1)=A(2) A(2)=A(1) この時点で両方A(2)
421 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:39:55 ] 俺はソートにはADO使っちゃうな
422 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:03:39 ] >>411 ttp://officetanaka.net/excel/vba/tips/tips98.htm
423 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:16:06 ] >>411 配列のソートならググればサンプルがゴロゴロ転がってると思うが。 >>422 えれー遅いな。 つかえねー。
424 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:58:17 ] >>423 自前で作れば数倍早いが、こんだけ楽さしてもらってこのスピードなら十分使えるだろ 'Common Language Runtime Library を参照設定 Const NUM_MAX As Long = 65536 Dim DataList As mscorlib.ArrayList Dim i As Long Set DataList = New mscorlib.ArrayList For i = 1 To NUM_MAX DataList.Add Int(Rnd() * NUM_MAX) Next i Range("A1").Resize(NUM_MAX).Value = _ Application.Transpose(DataList.ToArray) DataList.Sort Range("B1").Resize(NUM_MAX).Value = _ Application.Transpose(DataList.ToArray) DataList.Reverse Range("C1").Resize(NUM_MAX).Value = _ Application.Transpose(DataList.ToArray) Set DataList = Nothing
425 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:52:25 ] ソート関数ぐらい自前でちゃっちゃと用意できないあたりが やっぱVBAスレって感じでいいね(ゲラプwww
426 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 15:04:17 ] 大きく出たな
427 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 15:17:03 ] >>425 こんな口ばっかりのヤツに限っていまだにVB6あたり使ってそうw
428 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 15:25:14 ] VB6は軽くていいぞ 業務アプリのGUIはアレで十分なんだがな
429 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:28:29 ] エクセル使っていながらソートを自作するはめになったのは何故か。 自問するべきだ。どこで間違えた?
430 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 18:40:42 ] 逆だ。配列の使いにくさはVBAが最強。 故に車輪の再発明ばっかやるハメになる
431 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:33:15 ] VBAでもStringBuilder使えるのね…
432 名前:デフォルトの名無しさん [2008/04/30(水) 09:35:33 ] エクセルVBAスレの割りに、配列をシートにペーストして 昇順後→再格納の手法が忘れられてないかい
433 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 09:52:52 ] >>432 オートフィルターのこと?
434 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 10:06:36 ] >>433 orz
435 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 10:12:30 ] >>432 質問者はそれを求めてるように思える そもそも配列でもなく、再格納の必要もなさそうな気がする >>424 これは便利 勉強になりました
436 名前:デフォルトの名無しさん [2008/04/30(水) 10:13:09 ] >>433 A ↓ Z このボタンを押すマクロ記録を何度やったことか。 しかも、ラベル行がないと、滅茶苦茶になるし。
437 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 10:35:45 ] >>436 それは使い方が悪い。
438 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:06:26 ] >>424 参照設定したらDataList.とピリオド打てばインテリセンスが効きそうなもんだが、効かないね。 SortやReverseやToArrayの他にどういうメソッドやプロパティがあるかおせーて。 オブジェクトブラウザでも出てこねー。
439 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:21:39 ] 必要な箇所だけCSVに転記(このマクロはVBAで自分で書いてすぐに捨てる) 外部プログラムでソートした別のCSV作って読み込む。これを元の場所に再格納 (このマクロもVBAで作ってすぐ捨てる) 外部プログラムは当然VB. VBS on WSHという手段もあるが、これは手軽だがそれほど 早くはない。 .NET FrameWork(MS無償提供)入れたWindowsならVBコンパイラ付いてるぞ。 インテリセンスとかそういう高機能なIDEじゃないとプログラム開発出来ないという のであればVB 2008なりなんなりGetしてInstall) CSV読み込んで配列に格納して、それをソートする処理はまぁちょっと勉強しなきゃ 辛いだろうな 兎に角Excelシートに見苦しい、一度しか使わないようなVBAコードは残さないこと が精神衛生上好ましい。
440 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:39:39 ] >>439 シートから不要不急のVBAコードは削除することは同意 誤動作された場合の被害が大きい。 ただそういった使用済みのコードは完全に捨ててしまうのも やはり問題。別の理由で、データ破損してしまい作り直さな ければならない場合とか、大騒ぎになるな。 テキストファイルに落としてオブジェクトとして 埋め込んでおくのがいいと思う。
441 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 12:22:20 ] >>439 何番へのレスなの?
442 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 13:31:27 ] >>439 それコード書く意味あんの?
443 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 14:13:23 ] >>442 ちょっと複雑な比較順序でソートしなければならない場合とかだと (ex 国語の点数が同じなら、数学と理科の重み4:3の平均で比較し、 それも同じなら、歴史と社会の重み2:3の平均で比較し ) やっぱりVBAコードに頼らざるを得ないよ。 手動操作で出来る場合も多いけど、ミスを疑われるから検証作業が要求されるので 結局、コードが残って再現もできるようにしといた場合のほうがずっと信頼される。 自分のだったら兎も角、共有シートとかだと、勝手にシートや列を行を増やしたり、 隠したりすることも出来ない場合が殆どだし、何かまとまった操作をする場合は やっぱりVBAを使うよ。 でもVBAを使ってちょっと荒くデータ操作とかすると古いバージョンのExcelだと落ちるは、 シートが何故か肥大かするわで、嫌う場所も多いね。 だから外部ファイルにデータだけ抜き出して、処理してから書き戻すってことを 要請されることが多い。 シートのデータは、手作業だと抜き出しにくいように工夫されてるから、外部ファイルに 書き出す作業もVBAを使う。
444 名前:デフォルトの名無しさん [2008/04/30(水) 14:14:19 ] >>441 俺もわからんかった・・
445 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 14:19:40 ] つまり、元々のシートの設計が悪いとVBAに頼った糞運用せざるを得なくなるってことですね。
446 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 14:27:04 ] そうExcelの設計が悪すぎなのかもな
447 名前:デフォルトの名無しさん [2008/04/30(水) 14:40:00 ] csvの仕様も死ねる
448 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:27:18 ] >>443 > 結局、コードが残って再現もできるようにしといた場合のほうがずっと信頼される。 コードはすぐ捨てるんじゃなかったの? >>439 とは別人?
449 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:33:10 ] >>438 ttp://msdn.microsoft.com/ja-jp/library/system.collections.arraylist_members(VS.80).aspx
450 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:42:04 ] 最新バージョンはどうかしらないけど(できるの?) Excelは手動操作ログ記録とそのロールバックは保存できないからな。 使ったVBAをプリントアウトしてシートから削除して提出 したらVBAが作業ログと差分を兼ねることにもなる。 (自分と先方の作業前シートのバックアップ保持は当然)
451 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:57:56 ] 一般ユーザレベルのノウハウは、ソフトウェア板ででもやってちょ
452 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:23:19 ] Excel&VBAくらい「一般人」向けの組み合わせはないと思うけどな
453 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:21:46 ] ぷ、ぷりんとあうとしてさくじょ・・・
454 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:39:40 ] >>443 その例題はVBAいらない。 VBAでやりたいなら止めはしないが。
455 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 21:09:38 ] >>454 それならばやり方教えて下さい。というかVBA無しの手作業でやりなさい。 報酬は一切ありませんが。 生徒ID/国語得点/数学得点/理科得点/歴史得点/社会得点 の表がシートA1からF9999まで埋まっています。 RANGE A1:F9999以外のセルは一切改変禁止です。 シートを複製したりすることも禁止です。 (後で削除したりクリアすることも禁止です。監視員が 後ろで貴方に不正操作がないか監視していると想定して下さい。) この条件で、ソート order by (5*国語得点+4*数学得点)/9, (4*数学得点+3*理科得点)/7, (3*理科得点+2*歴史得点)/5, (5*歴史得点+3*社会得点)/8, (4*社会得点+5*国語得点)/9 ASC でお願いします。
456 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 21:11:41 ] スルーよろ
457 名前:438 mailto:sage [2008/04/30(水) 21:12:31 ] >>449 トンクス