1 名前:既定のプロパティさん mailto:sage [2012/01/29(日) 00:05:13.16 ] 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/ 13 pc12.2ch.net/test/read.cgi/tech/1254281104/ 14 pc12.2ch.net/test/read.cgi/tech/1262748898/ 15 pc12.2ch.net/test/read.cgi/tech/1271261239/ 16 hibari.2ch.net/test/read.cgi/tech/1280045912/ 17 hibari.2ch.net/test/read.cgi/tech/1289182437/ 18 hibari.2ch.net/test/read.cgi/tech/1298240666/ 19 hibari.2ch.net/test/read.cgi/tech/1305754555/ 20 hibari.2ch.net/test/read.cgi/tech/1312435844/ 21 hibari.2ch.net/test/read.cgi/tech/1316931607/ 前スレ: Excel VBA 質問スレ Part22 toro.2ch.net/test/read.cgi/tech/1322400978/
533 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:12:08.65 ] VBAの変数にループ内のスコープなんてなかったよな? >>531 とりあえずコード貼れ
534 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:19:44.48 ] >>531 a = 1 Do a = 5 Loop Until True MsgBox a
535 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:22:36.75 ] >>533 すみません。質問した者です。 変数に追加していくのではなく、 毎回上書きしていただけでした・・・ 初心者でごめんなさい。 ' Do ' If r = 1 Then ' Exit Do ' End If ' total = Cells(r, 4) ' r = r - 1 ' Loop
536 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:56:45.28 ] >>535 謎すぎるけど解決したなら、よかった
537 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 01:01:53.11 ] for系でないループで 中をIfとExitで制御している形はけっこう危険なんだよね。 思わぬ条件で抜けたり 一度も通らない経路ができたりする。
538 名前:デフォルトの名無しさん [2012/03/08(木) 01:02:17.51 ] =LEN(A1) =LEN(A2) =LEN(A3) みたいな値をB列にA列の終わりまで入れていくにはどうしたらいいですか? For文で回すんでしょうか・・・? データの最終位置を取得するのに、「End(xlDown).Row」と、「(Rows.Count, 1).End(xlUp).Row」 ってどう違うんでしょうか? MsgBox "End(xlDown).Row : " & Cells(1, 1).End(xlDown).Row MsgBox "(Rows.Count, 1).End(xlUp).Row :" & Cells(Rows.Count, 1).End(xlUp).Row ↑ を、マクロ開始前のセルの位置をズラして色々やってみても結果は同じでした・・・。
539 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 01:33:09.38 ] >>538 Cells(1, 1).End(xlDown).Row は上から順番に見ていく 途中に空白があると、それより下のデータは無視される Cells(Rows.Count, 1).End(xlUp).Row は下から順番に見ていく 最終行までびっちりデータが入っている場合を除いて、本当の一番下がわかる
540 名前:デフォルトの名無しさん [2012/03/08(木) 01:45:52.43 ] >>539 分かりやすい説明をありがとうございました。 で、 =LEN(A1) =LEN(A2) =LEN(A3) みたいのを入れてくには、やはりFor文で回すのでしょうか?
541 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 02:04:48.60 ] >>540 数十行程度ならForでもいいと思う もっと大量にある場合はオートフィルの方がプログラムがすっきりするし処理スピードも速いはず
542 名前:540 [2012/03/08(木) 02:21:23.52 ] >>541 ありがとうございます! ググってみたところ、 Range("B1").AutoFill Destination:=Range("B1", Range("A65536").End(xlUp).Offset(, 1)) でいけるみたいです!この方が頭よさそうだし、スッキリ見やすいし、これでいきます! おかげさまで安眠できます。 夜分遅くにお付き合いいただき、ありがとうございました!
543 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 21:37:27.17 ] P列に区分として1又は9を入れた時、Q列に当日の日付を入れたい で、その行位置は範囲は 2行目からlastrow = Cells(Rows.Count, "A").End(xlUp).Row までとしてこういう時 どういう風に Worksheet_Changeに書けばいいんでしょ?
544 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:20:58.13 ] >>543 何がわからないの?
545 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:24:19.73 ] >>543 何も考えずにやれば、こう lastrow = Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To lastrow If Cells(i, "P").Value = 1 Or Cells(i, "P").Value = 9 Then Cells(i, 17).Value = Now End If Next ただし、Worksheet_Changeでこれやっちゃうとループするので 違う所でやるか、変更箇所のチェックしてQ列なら変更しないとかの工夫が必要
546 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:26:58.87 ] だからP列に1又は9を入れた時、その横に当日日付を入れたい で、どう書けば良いのか?って聞いてんですけど
547 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:31:28.83 ] リロードしてなかった。。。 >>545 ありがとうございます。 それを元にまた勉強してみます
548 名前:デフォルトの名無しさん [2012/03/09(金) 00:27:00.69 ] 結構ggったのですが解決しないのでどなたかご教授ください!! if 以下の3セルの内容が数字(全角・半角)でないとき 処理Aを行う Sheet1.Cells(y, x) Sheet1.Cells(y, x+1) Sheet1.Cells(y, x+2) else if Sheet1.Cells(y, x)のみが数値(全角・半角)でないとき処理Bを行う という処理を掛けたいです。 別の言い方をすると、セルが文字・全半角スペース・空の時に処理を掛けたいです。 If not と IsNumberで出来ると思いきや上手くいってません。 お願いいたします。
549 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 00:27:09.17 ] >>545 cells(i,16)で書くよりCells(i,"P")で書いたほう 列が非表示だったら時便利ね!とか、関係ないことをオモタ
550 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 01:08:49.15 ] With Sheet1 a = StrConv(.Cells(y, x), vbNarrow) b = StrConv(.Cells(1, x + 1), vbNarrow) c = StrConv(.Cells(1, x + 2), vbNarrow) End With If IsNumeric(a) = "False" And IsNumeric(b) = "False" And IsNumeric(c) = "False" Then 処理A End If If IsNumeric(a) = "False" And IsNumeric(b) = "true" And IsNumeric(c) = "true" Then 処理B End If ベッタベタでよければ どうぞ。
551 名前:デフォルトの名無しさん [2012/03/09(金) 01:15:04.82 ] >>550 ありがとうございます試してみます!! IsNumeric IsNumberの使い方もあまりわかっていなかったので助かりました。
552 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 02:42:06.08 ] >>550 IsNumericはBooleanなんだが、なぜ文字列で判定する? ちなみにIsNumericは、全角の数字でもTrueの判定するから、StrConvする必要はなかったりする 指数表記も認めたりするから、数字の定義によっては注意が必要
553 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 03:03:03.65 ] >>552 ””いらないね。あっても動くけど。 If not IsNumeric(a) And not IsNumeric(b) And not IsNumeric(c) で書いてたんだけど、解りにくいかと思ってやった。 今は反省している。 全角の数字判定は知らんかったわ。便利ね。 ありがとう
554 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:40:36.42 ] VBAは、無くなるの?
555 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:51:09.95 ] それは目出度い
556 名前:デフォルトの名無しさん [2012/03/10(土) 00:40:01.35 ] JSサポートするという噂話だけ
557 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:21:54.25 ] VBAにJavaScript???
558 名前:デフォルトの名無しさん [2012/03/10(土) 16:17:05.72 ] 1行につき2シートずつ追加するマクロ(簡単に言うと)があります。 これが、72行ぐらいになって、シート数が159を超えたあたりから、シート追加の 「Copyメソッドが失敗しました」とエラーになります。 実際、そのブックでそれ以上シートを追加しようとしてもできません。 ググってみたところ、シート数に上限などはないようですが、メモリに依存するようです。 1枚1枚のシートは、それほど情報量はないのですが、Vlookup関数を多用してますので、 それもメモリを食っているかもしれません。 シート名も、平均22文字ぐらいあって、とても長いです。 一連のマクロは、一度も保存せずに、メモリ内だけで行っています。 データは、60行〜80行ぐらいまである時もあり、一括管理できるようにするため、 やはり1つのファイルに収めるのが理想的ではあります。。 どうすれば、このエラーを回避できるでしょうか?
559 名前:デフォルトの名無しさん [2012/03/10(土) 17:53:10.37 ] それってあるデータを見栄えのいいように整形するためにシートを作ってるって解釈でいいの?
560 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 18:26:11.05 ] 試したけど、空白シートをただ追加するだけなら5000シートでも問題なかった Excel2007 on Win7 シート毎の有効行やvlookupなど、少しずつ条件を変えて状況が変わるか試してみたら? 原因が特定できれば対処も考えやすいと思う
561 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 19:17:20.06 ] まず数百もシート作るっていう設計を考え直した方がいいんじゃないかと
562 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 21:48:45.31 ] ここは64bit版の出番だな。
563 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:17:58.69 ] Range("A1").Characters(Start, Length).TextのLengthに256を超える数値は指定できないんでしょうか? 257以上を指定したらCharactersクラスのTextプロパティを取得できませんってエラーが出るんです…
564 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:42:09.93 ] >>563 うちの2007ではちゃんと動いてる 環境かけ
565 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:49:30.49 ] >>564 Windows7 64bit版、Excel2010 32bit版です。。
566 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:52:16.01 ] ntの頃は、鯖と普通のやつの違いがレジストリのどっかが違うだけだったネタがあったな
567 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:53:02.68 ] >>566 誤爆
568 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:54:11.13 ] 今試したらRange("A1").Characters(Start, 257).Font.Bold = Trueとかは動くのに Textプロパティだとエラーが出てしまいます。。 やりたいことはTextプロパティを使わなくてもできるので別の方法考えてみます。
569 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:03:29.53 ] >>568 Length=256なら本当にOKなの?
570 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:07:39.75 ] >>569 MsgBox Range("A1").Characters(1, 256).Text MsgBox Range("A1").Characters(1, 257).Text の両方を試して256はOKでした
571 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:11:18.10 ] >>570 うちは同じ環境だけど、エラーでない
572 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:15:31.25 ] >>571 ですよねぇ・・・ 今までもRange("A1").Characters(Start, Length).Textという書き方は何度もしてきたと思うし こんなエラーに出会ったことがないので、たぶん私が何か見落としてるんだと思います。 もうちょっと調べてみます。ありがとうございました。
573 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:22:58.34 ] 質問です。 今、ウインドウ枠の固定を使って、上から3行だけを固定で表示させるようにしています。 この固定部分にボタンを配置して、マクロを登録しようと考えています。 それで、ホイールを回せば4行目から下が上下にスクロールするわけですが、ホイールを 回して下に適当にスクロールさせて、固定部分のボタンを押す。 そうすると「画面に表示されている」上から4行目のセル番地を取得する。 そういうマクロを作成したいんですが、これは可能でしょうか? すみませんがよろしくお願いします。
574 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:33:19.28 ] >>573 MsgBox ActiveWindow.ScrollRow + 3
575 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:42:17.38 ] >>574 おお!できた! 多分できないかなーと思ってたんで嬉しいです。 ありがとうございました。
576 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:33:01.82 ] >>572 うちの2007でも、TextやCaptionを取得しようとするとエラーになるな でも設定してもエラーにならずに正常に動く Dim c As Characters Set c = Range("A1").Characters(0, 260) MsgBox c.Text 'ここでエラー おかしいのはRange.Charactersメソッドじゃなくて CharactersクラスのTextメソッドだな エラーのMsgBoxの行を変えてテストした c.Text = String(25, "W") 'これは正常に動作 c.Text = String(250, "W") 'これはエラーは出ないが動作してない c.Text = String(256, "W") 'これはエラー どうも怪しげな動作してるな
577 名前:デフォルトの名無しさん [2012/03/11(日) 02:56:35.77 ] Excelってなんでもできるんだなー Excelで
578 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 04:55:25.47 ] それは無理
579 名前:510 mailto:sage [2012/03/11(日) 09:10:27.01 ] 誰か>>510 知ってる人いませんかね。 OSはXPでエクセル2002です。
580 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:39:05.54 ] フォームの場合、エクスポートしたファイルには フォームやそこに配置したコントロールのプロパティと プログラムコードが1つのファイルに書かれているわけだが インポートしたときにプロパティ領域とコード領域を分ける空行部分が コードエディタ側に読み込まれるってだけの話だろ
581 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:45:34.73 ] >>580 分かりやすい回答ありがとうございました。
582 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 10:09:37.71 ] え、formってimportできるんすか?!! この前 outportしてそのままimportしたら、class moduleになったので、もうてっきり無理なんだと。。。
583 名前:558 [2012/03/11(日) 14:30:33.27 ] >>559 ええと、業務用です。 取引先ごとに、表紙と帳票をセットにして、FAXするのですが、今までは帳票だけを ガーッと保存もせずに、シート追加して作成するマクロがあって、別にFAXの表紙だけを まとめたExcelファイル(取引先300件分のシートがあって、3,3Mくらいのファイル) の中から、該当の取引先宛の表紙を探して、総FAX枚数や、帳票内の集計数なんかをちょちょっと 直して、印刷して、帳票とマッチングしてFAXしてたんですが、データ(取引先)が 72件もあると、結構2時間ぐらいかかる作業なんです。 この仕事を引き継いだ、元ヘタレPGの私としましては、なんとしてもマクロ化 しちゃいたい衝動にかられまして、FAX表紙は、ざっと3パターンしかなかったので、 取引先を一覧にして、表紙のテンプレに、Vlookup()で引っ張ってきて、 表紙と帳票とセットでシート追加するようにマクロを組んだんです。 そうしたらこのエラーです。 まあ、限界に挑戦するマクロだとは思うんですが、、元々の量の倍になってる 訳だし、、やっぱりファイルを分けるしかないのかな・・。 メモリを食ってる部分が、VlookUPなのか、シート名なのか、それともファイルを 保存してないせいなのか、ある程度でも分かれば、そこを対処してから、ファイルを 分ける方向で行こうかと思って質問させて頂いた次第です。 ひょっとしたらスレチかもしれませんが・・・。
584 名前:558続き [2012/03/11(日) 14:31:55.26 ] 計算式より、値が入ってた方がExcelのメモリは食わないんでしょうか・・・? ちなみにファイルサイズは、2.3Mくらいです。 ここ↓ oshiete.goo.ne.jp/qa/3047947.html で、詳しく説明して下さってる方がいるんですが、ここでいう、「配列数式」や 「揮発性(volatile)関数」ってのが何のことなのか、いまいち分かりません。。 VlookUPのことなのか?だとしたら、VlookUPをマクロでやってしまった方がいいんだろうか・・・ 長々とすみません。お知恵をお貸しくださいますと幸いですm(_ _)m
585 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:38:02.97 ] vlookupでもシートでも話聞く限り、そこまでメモリ食う感じがしない 顧客名全部仮の名前にして、FAX表紙も適当なものに差し替えてファイルアップすれば もっと具体的なアドバイスもらえるんじゃないかな
586 名前:558 [2012/03/11(日) 14:51:48.85 ] >>585 ありがとうございます。 ファイルは会社にあるので、アップするとしたら明日以降になりますが・・・。 最初のシートに、全ファイルの目次を作って、目次から、各シートに飛べるように ハイパーリンクを組んだんですが、ひょっとしたらそれがいけなかった・・・? VBA初めてなので、ソース見ていただいた方がいいかもしれませんね。。
587 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:01:52.27 ] あと、エラーがでた環境も詳しく OS、Excel、メモリ
588 名前:558 mailto:sage [2012/03/11(日) 15:16:02.07 ] >>587 了解しました!(OSはXP、Excelは多分2003・・・)
589 名前:デフォルトの名無しさん [2012/03/11(日) 15:56:09.31 ] Vista.sp2,Excel2000 新しいExcelで,Excel2000のソートコードが動くでしょうか 使っているコードです sh2.Range("e9").Select Rows("11:45").Select Selection.Sort Key1:=Range("A11"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin sh2.Range("e9").Select
590 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:18:23.96 ] >>589 動くよ
591 名前:デフォルトの名無しさん [2012/03/11(日) 16:38:44.83 ] >>590 ほんとにありがと
592 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:45:48.72 ] VISTA Excel2007 微妙にスレチっぽくて恐縮なのですが… ExcelからADOでAccess2010ファイルに接続したいのですが udlファイルを作成して、ダイアログでProviderとData Sourceを指定、接続テストも通るのに、 いざ次のコードでそのudlファイルを指定するとエラーになります ([ODBC Driver Manager]データソース名および指定された既定のドライバが見つかりません) 原因分かる方いますでしょうか ADODBCon.Open UDL01_fPath またExcelVBAでudlファイルのProviderの値の取得方法ってあるのでしょうか? Data Sourceの値は以下のコードで取得できたのですが、Provider値の取得方法が分かりません 以下のコードでData Sourceの部分をProviderに置き換えてもエラーに With CreateObject("ADODB.Connection") .ConnectionString = "FILE NAME=" & UDL01_fPath DB_FPath = .Properties.Item("Data Source").Value End With 以下、udlファイルの中身です [oledb] ; Everything after this line is an OLE DB initstring Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test\DB\Database1.accdb;Persist Security Info=False
593 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:57:24.25 ] 補足 UDL01_fPath ’udlファイルのフルパス udlファイルにアクセスする前に、udlのData Sourceに格納されたDBファイルの 存在チェックを入れており、その部分ではエラーがないので、 Providerの指定でエラーが起きてると思うんですが分かりません 最初はudlファイルのProviderとData Sourceの値をコード内で指定していたのですが、 その時はエラーはありませんでした その時の値とをテキスト上にコピーして文字列を比較しても差異はありませんでした
594 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 19:42:42.20 ] >>592 なんか良くわからんが、たぶん ADODBCon.Open "FILE NAME=" & UDL01_fPath MsgBox ADODBCon.Provider
595 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 19:59:57.96 ] >>594 ありがとうございます!! うまくいきました こんな見落としで何時間も浪費していたなんて自分が情けない
596 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 16:09:38.74 ] 以前、>>447 でカラーパレットについて質問したものです。 ユーザーフォームにボタン表面の色を変えたものを複数並べる ことによって色を選ぶようにしました。 ボタン一つ一つのクリックイベントにコードを書いたのですが、 イベントの共有やどのボタンが押されたかを識別することによって コードを簡素化したいのですが、VBAでそういったことは可能でしょうか? ググったのですが、ブックの共有などの情報ばかりで検索しきれなかったので、 どなたか教えてください。 よろしくお願いします。
597 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 18:41:11.31 ] application.caller で出来たっけ?
598 名前:デフォルトの名無しさん [2012/03/12(月) 19:51:06.54 ] オートフィルタをかけた抽出結果のタイトル行を除いた最初の行の、二番目の列から、 データの入っている有効セル全てをコピーするにはどうすればいいでしょうか?
599 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 20:13:22.36 ] こんばんあ!しつもんだお! for nextの後にcallでquerytable.addすると処理固まってしまうのですが、どうすれば良いですか?メモリとかバッファとかよくわかりません
600 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 20:17:12.27 ] すいません。 VBAで32bit符号無し演算をしたいんですが、型がlongじゃダメです。(当然) どんな技を使えば良いですか?
601 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 21:01:49.30 ] >>596 Part17で似た質問をして、カラーパレットをクラスモジュールを使って作成したことがあります。 できてはみたものの、クラスモジュールはよく分かりませんでした。 VBやC#なら、どのイベントにどのプロシージャを結びつけるかをプロパティウィンドウで 簡単に設定できるようになっています。 VBAではそういう使い方は向いていないのではないか、と思います。
602 名前:596 mailto:sage [2012/03/12(月) 21:49:46.96 ] >>597 ,601 ありがとう。 Application.Callerをググったら、どの例もシート上のボタン等を調べるみたいで、 ユーザーフォーム上のボタンのクリックイベントでは使えないみたいです。 ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1427920774 ここを見ても、601さんが書かれているように気軽にできる感じではなかったので、 ボタンのtagプロパティにカラーコードを書いておいて、activecontrolで識別するようにしました。
603 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 23:05:54.84 ] >599 Long型でユーザー定義変数を作成し、 LSetステートメントで強制的に2つのLong型に分割。 2つのLong型を下位32bitと上位32bitで別々に計算し、 計算後に改めてCurrent型にLsetステートメントで合体。 という方法がある。 「VBA currency型のビット演算」でググるとよろし。
604 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 12:18:48.28 ] >>603 ちょーthx.
605 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 19:30:37.29 ] Excel2010 bookname = "D:\data\backup\data_xxxxxxxx.xlsx" xxxxxxxxxx は作業日付 Worksheets("data").Copy With ActiveWorkbook .SaveAs Filename:=bookname .Close End With としてdataシートを別ブックに保存しようとすると、このシートには Activateになった時に作業をするモジュールがついていて xlsxでは 保存出来ないとExcelに言われてしまうんですが。。。 保存する際にモジュールは要らなくデータだけで良いんですけど どうすればモジュールを切り離して保存出来るんでしょうか?
606 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 19:41:52.71 ] >>605 今、手元にExcel2010が無いんで自信ないけど、 .SaveAs Filename:=bookname, FileFormat:=xlOpenXMLWorkbook とかでどうだろ? 明日会社行けば試せるんだけど・・・
607 名前:605 mailto:sage [2012/03/13(火) 19:59:10.22 ] すごい! 出来ました。 そのFileFormat指定は初めてです。 ありがとうございます。m(__)m
608 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 20:32:15.03 ] はろー。ループするとき処理待ちするにはどうすればいいですか?
609 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 20:36:33.61 ] 「こんばんわ、処理町隆史です」という。
610 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 20:43:21.74 ] おれがずっと探し求めていたのはジャーマンスープレックスもといドゥーイベントカンスーだったようだ…
611 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 21:55:34.65 ] >>608 DeEvents
612 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:05:09.05 ] OS:XP Home 32bit Excel:2003 条件を満たした場合、ソースコード自体を書き換える事は可能でしょうか?
613 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:24:36.95 ] >>605-607 Application.DisplayAlerts = False でいいんじゃないのか
614 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:29:45.74 ] >612 できるけど、OSやExcelのバージョン違いに対する対応なら #If〜#Then〜#EndIfや#Constの条件付きコンパイルを使うほうがよい。 どうしても書き換えしたいなら、参照設定で 「Visual Basic for Applications」に参照設定をすれば VBEのコードそのものを直接VBAで動かせるようになる。
615 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:35:10.19 ] >>613 Application.DisplayAlerts = False ↑ これは単にメッセージ出すのを抑制するだけですよ?
616 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:37:57.80 ] >>615 xlsxで保存したらマクロは保存されない 警告なしで保存できるんだからそれでいいだろ
617 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:53:25.53 ] >>613 ,616 なるほど。そういう手もあったんですね
618 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:55:37.82 ] >>615 ↑ お前がずれてますよ 605もアホだがエスパーすると… … … … 警告なしに保存したいということだろ だからDisplayAlerts=Falseが合っている FileFormat指定が的外れ 警告はxlsxで保存するとマクロは保存されませんよ ってことだからな
619 名前:586 [2012/03/14(水) 01:29:08.85 ] とりあえず、「Copyメソッドが失敗しました」のエラーが起こる簡易版のファイルを 作成しました。 www.vivi-loda.mydns.jp/index.php?m=dp&n=file1526 DLkey:asd test1の方で実行しても、test2で実行しても、 こちらの環境(Win7 HomePreminum SP1(32ビット版)、Excel2003 SP3、メモリ3G) だと、44シート追加したあたりで、当該エラーが出ます。 このファイルだと、マクロではエラーが出るものの、手作業でシート 追加はできますが、とりあえずこのエラーを回避したいです。(できるものなら) ちなみにこのマクロを実行すると、一時的にPCが重くなったりするので、お気をつけください。 よろしくお願いいたします。
620 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 02:19:08.42 ] >>619 自分の環境ではエラーにならない Win7 Ultimate SP1 (64bit) メモリ8GB、Excel 2007 SP2
621 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 03:45:17.31 ] >>619 Vista Ultimate SP2 32bit Excel2007 SP3もエラーなし ちなみにシート500まで追加させても問題なし 2003の問題か、PCの問題だな 昔ディスプレイドライバー辺りのバグでExcelでメモリ不足出たことあったが つかWin7でExcel2003とか動作保障あるのか
622 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 04:00:24.00 ] >>619 流れ読んでないけど、ワークシートのコピーは複数回実行するとマクロでなぜかエラーになる現象がある。 標準のワークシートをコピーする関数を使うのはやめて、「ワークシートを追加→セル全体をコピー→ペースト」 という関数を作っておくと楽。
623 名前:622 mailto:sage [2012/03/14(水) 04:19:36.65 ] ちなみに >>619 のファイルを実行したらうちの環境 ・Win7 Ultimate XP SP3 / Excel 2003 SP3 / メモリ3G ・Win7 Ultimate SP1 x86 / Excel 2003 SP3 / メモリ3G ・Win7 Ultimate SP1 x64 / Excel 2003 SP3 / メモリ8G でも「実行時エラー '1004': Worksheet クラスの Copy メソッドが失敗しました。」は出ます。 (エラーが発生する回数はランダム) 念のため確認ですが、手作業で「シートの追加」はできても「シートのコピー」はできないですよね? で、ファイルを開き直すといったん復活して、再度実行すると同じ感じでエラーになる(毎回エラーに なる回数は違う)ってやつですよね? というよりか、マクロを使わないでも手動で何十回もシートをコピーすると、シートがコピーできないが シートの追加はできるという現象は発生します。標準のシートコピーは使わないのがよいと思われます。 でも、この現象ってExcel 2007だと発生しないのか。知らなかった。
624 名前:622 mailto:sage [2012/03/14(水) 04:22:25.46 ] Win7 Ultimate XP SP3ってなんだ?そんなOSネーヨ(^_^;) Win XP SP3の間違いです・・・。
625 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 06:50:26.27 ] 外部音源やMIDIデバイスを使わずにbeep音をディストーションギターの16和音にするにはどうすればいいでしょうか
626 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 06:59:09.15 ] oshiete.goo.ne.jp/qa/1822561.html No1参照
627 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 12:09:50.35 ] 縦のrangeを横のrangeにコピーするにはどうすれば良いですか
628 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 12:30:24.18 ] >>627 マクロを記録してみろ
629 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:08:15.94 ] 範囲指定して数値のセルのみ抽出するにはどうすれば良いですか
630 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:24:44.23 ] >>629 www.google.co.jp
631 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:32:20.94 ] >>629 IsNumeric
632 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:42:11.29 ] do loop 内の処理で繰り返した回数を得るにはどうすれば良いですか
633 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:43:03.45 ] googleでdo loopって打ち込んだら画面が回ったwww
634 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:49:15.82 ] >>632 変数作って数えさせろよ
635 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:54:30.78 ] どう書けばよいでしょかお?
636 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 18:05:08.53 ] Dim count as Integer Do While true count++ Loop
637 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 18:07:40.23 ] ++は使えなかったかも Dim count As Integer: count = 0 Do While True count = count + 1 Loop
638 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 18:14:02.46 ] あ、成る程ですthx
639 名前:612 mailto:sage [2012/03/14(水) 22:30:17.63 ] >>614 ありがとうございます レスを参考に調べてみます
640 名前:デフォルトの名無しさん [2012/03/14(水) 22:55:04.43 ] VBAだけで就職先はあるのでしょうか? Javaなどは募集をよく見ますが… あとVBAとJavaは皆さんどのくらいでできるようになりましたか? 専門学校で学んだのですか?
641 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 22:59:58.12 ] >>640 すれ違いなような
642 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:45:13.32 ] >>640 VBAだけで就職は無理 Excelが使えるって条件の事務職員の募集なら見たことあるけど
643 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:14:07.98 ] グラフの縦軸の値の最大、最小、目盛の間隔は自由に決めることはできますが、横軸もできますか? Excel2003、2010どちらでもいいので、できるならばやり方を教えてください。 よろしくお願いします。
644 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:48:20.37 ] >>643 縦でも横でもやり方は同じ 軸を右クリックすれば設定画面が出る
645 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:51:34.04 ] __ , ‐' ´ ``‐、 / ̄:三} . /,. -─‐- 、. ヽ / ,.=j _,.:_'______ヽ、 .! ./ _,ノ `‐、{ へ '゙⌒ `!~ヽ. ! /{. / `! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ そんなことよりネコ投げようぜ! . {.l '⌒ ゙ 6',! / :::::::::::::::/ __ . 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、 . ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ ,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 / / / :::::::::::::::: ;な /´\ / r'\ . i ! ::::::::::::::/ る | .!::::::::/ヽ、.._!ヽ. ヽ、 { {:::::::::::;:イ / し ‖i:::::::/:::::::::::::/ \ . ヽ ヽ,.ァ‐'´ /ヽ ま ,/`ヽ、::::::::: / i.imgur.com/iMDi4.jpg
646 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 01:14:33.54 ] >>644 こんな時間にレスありがとうございます。 今2010でやってるのですが、右クリックすると軸の書式設定というメニューが 出るのですが、縦軸と横軸では項目内容が違っています。 横軸では、最大、最小、値の間隔はないです。 見てるところが違うのでしょうか?
647 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 01:50:23.30 ] >>646 グラフの種類によっては変更できない たとえば散布図だとどっちの軸も同じように設定が変えられる
648 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 01:51:43.73 ] >>642 そのExcelが使えるってどの程度のレベルの使えるなの? 男でもある?
649 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 02:01:33.59 ] >>647 ありがとうございます。 散布図で何とかできました。
650 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 02:05:46.33 ] >>648 バイト価格だね
651 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 02:17:39.55 ] VBAが使えるといえば普通は Oracle SQLが使えるというのも含む
652 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 05:00:10.04 ] VBAが正しく使えれば DelphiだろうがJavaScriptだろうがJavaだろうがCだろうが そんなに難しくない筈 むしろVBAのほうが難しいくらいかも ただSQLはちょっと毛色が違うからVBAが使えることとSQL が使えるということは同じだとは思わないほうがいいかも
653 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 06:51:56.55 ] vbaで使うデータベースはなにが良いのですか?いまはシートにデータ並べてますけれど
654 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 07:03:43.75 ] ググってきたら
655 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 08:17:32.38 ] >>625 波形を気合いで計算してWAVの頭の構造体を気合いでくっつけてdirectsound8
656 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 08:22:26.53 ] >>653 一番相性がいいのはもちろんAccess
657 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 16:53:47.11 ] こんにちあ! コード書き終えたの ですけど12時間以上処理してるの でアドバイスくれし
658 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:07:40.25 ] コードを載せろよ
659 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:30:36.11 ] >>657 ScreenUpdatingとか、よくある高速化テクニックは使ってる?
660 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:33:58.45 ] XP/Excel2000 csvファイルを出力させたいのですが、見よう見まねで固定のファイル名が出せるところまでは辿り着きました。 次にファイル名をセル参照なり変数でつけたいのですが、どうしたらいいでしょうか? Private Sub CommandButton1_Click() Const cnsFILENAME = "\test.CSV" Dim FSO As New FileSystemObject Dim TS As TextStream Dim GYO As Long Dim GYOMAX As Long GYOMAX = Range("C65536").End(xlUp).Row Set TS = FSO.CreateTextFile( _ Filename:=ThisWorkbook.Path & cnsFILENAME, _ Overwrite:=False) GYO = 3 Do Until GYO > GYOMAX TS.WriteLine FP_EDIT_CSVREC(GYO, 2, 3) GYO = GYO + 1 Loop TS.Close MsgBox "OK" Set TS = Nothing Set FSO = Nothing End Sub
661 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 19:32:54.15 ] >>660 Dim cnsFILENAME As String cnsFILENAME = "\test.CSV" とか cnsFILENAME = Range("C5").Text とか
662 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 20:05:05.30 ] とりあえずscreenupdating使って見たんだけど、最小化してまた大きくしたら画面真っ黒になっちゃったよ 進行状況だけ表示しとけばよかったかなあ
663 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 20:13:18.21 ] 関数をワークシートにたくさん埋め込んでいるんだったら、作業中はOffにして作業後にOnに戻す これはかなり効く(たくさん埋め込んでいたらの話だけど)
664 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:12:15.18 ] どうやってoffにするのですかお
665 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:15:09.26 ] もしかしてワークシート最小化にしてたらマクロ処理しないのですかお
666 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:19:50.44 ] まずモニターのスイッチを切れ
667 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:22:44.25 ] >>665 マクロの記録やってみれ Excel2010では↓のようになった Application.Calculation = xlManual ↓もとに戻す Application.Calculation = xlAutomatic
668 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:23:06.41 ] 画面更新ができないような処理してるからだと
669 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:30:59.55 ] >>640 VBA初心者レベル、Excelは基本操作もおぼつかない 当然ながらブラインドタイプとかはできないし、 ほかの言語などもまったく分からない。 というレベルで 週5日*1日8時間*時給1800円の仕事してます。 作業内容は一日分ずつのCSVファイルを一か月分にまとめたり それをグラフにしたりするだけです。 チョー楽だけど退屈です。
670 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:42:43.01 ] そういうことを出来るようにしてくれた人がいたってだけでしょ
671 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:44:29.82 ] どういうこと?
672 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:45:11.50 ] 金で時間を買われてるな
673 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:48:16.20 ] 初心者っていう人がVBAでそういうことを出来るようにすることが出来るのかなって感じなんだけど
674 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:48:39.69 ] >>672 時間を売って金を得て 金を使って時間を買うということ?
675 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:50:45.28 ] ノルマこなして、お金もらってるだけでしょ
676 名前:669 mailto:sage [2012/03/15(木) 21:56:00.37 ] >>673 会ったこともない誰かが作ったマクロを使ってます。 ところどころパラメータ(セルの行とか列とかの指定)を書き換えて実行するだけです。 >>675 ノルマは特に無いです というかむしろ早く終わりすぎたらマズイらしくて 一年かけてダラダラやってます。
677 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:59:39.96 ] VBA使って効率化出来るのを目の当たりに見ると怒る人がいる、世の中だからね コンピュータで処理できるようにしたのに、 コンピュータが勝手に作ってる とか、言われたときは...
678 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:59:45.52 ] 結局669はVBAを使ってはいるけれど プログラミングの仕事ではないってこと?
679 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 22:01:22.71 ] >>676 お役所?
680 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 22:04:50.80 ] >>676 大阪市? ここだけの話で
681 名前:676 mailto:sage [2012/03/15(木) 22:09:47.46 ] >>678 一応、仕事の名目は エクセルでのデータ整理です >>679 公務員じゃないけど似たようなもんです。 業務の成果は求められてなくて、 ただ単に労働時間分の拘束をされてるだけって感じです。 >>680 ちゃいまっせ、ホンマにちゃいまっせw
682 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 23:12:01.77 ] マクロの記録てこういうときにつかえるんだなあみつを
683 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 00:43:25.24 ] ちょこっとわからない程度なら、部分的にマクロ記録のコードコピペしてます。 スピードも全く問題ないことがほとんど、使えなかった頃より実質こなせる業務がかなり増えた。
684 名前:586 [2012/03/16(金) 05:51:54.44 ] 忙殺されて、、、レス遅くなってすみません。 >>620->>624 皆さん、ありがとうございます。 会社のPC(WinXP Pro SP3/Excel 2003 SP3/メモリ2G) でもやはり44シート目で実行時エラーでした。 手持ちのもう一つのネットブック(Win7 32bit版/Excel2010/メモリ1G) で試したら、エラーは出ず、なんと、500シートでも動きました。 2003のバグですかね。。 ありました・・・これですね。 support.microsoft.com/kb/210684/ja ------- ブックに定義済みの名前を付けて保存したり、次のサンプル コードのように、ブックを閉じることがなく複数回ワークシートをコピーするとこの問題が発生することができます。 ------- 発生することができます・・って・・・・
685 名前:586 [2012/03/16(金) 05:52:55.59 ] >>623 ええと、マクロ実行して、1004が出たての未保存のブックは、シートの追加はできても、シートのコピーはできません。 (エラーも出ず、一瞬画面がブレたようになって無反応) いったん、保存して開きなおしたファイルだと、シートのコピーはできますが、再び、マクロを実行すると、 実行時エラー'1004': シートの名前をほかのシート、Visual Basic で参照されるオブジェクト ライブラリまたはワークシートと同じ名前に変更することはできません。 となって止まり、 ブックをみると、test1を押した場合は、「テンプレ(2)」を、test2を押した場合は、「テンプレ2 (2)」のシートを追加しようとしてるところで、また同じ名前で追加しようとして、止まってる感じ・・・ ActiveSheet.Name = がうまくいってないような感じです。 しかもエラーの回数はなんか毎回、44です。。PCに他にどんな重い処理をさせていても44。。会社のPCもそうでした・・。 なんだコレ・・私のやり方が何かおかしいのか・・・
686 名前:586 [2012/03/16(金) 05:55:19.72 ] このKBを見る限り、2007でも、2010でも発生するみたいですね。。 www.microsofttranslator.com/BV.aspx?ref=CSSKB&lo=SS&from=en&to=ja&a=http://support.microsoft.com/kb/210684/en-us?fr=1 テンプレートで保存して呼び出して使えって・・・。Vlookupで引っ張ってて、複数のシートがあっても大丈夫なんかな・・・ それとも100シートごとに保存するか・・・ それともシート挿入→末尾に移動→値の貼り付け→書式の貼り付け→印刷設定の貼り付け という関数を作っておくか・・・ 印刷設定がちゃんとなってるシートの印刷を手前において、反映したいシートを複数選択し、 印刷設定を開いてそのままOKボタンを押すと、複数のファイルに印刷設定が反映されるって 書いてあって、実際その通りだったけど、ウィンドウ枠の固定と、印刷タイトルの設定が反映されてなかった・・・ これだけ一個一個やるように関数に組み込むしかないのか・・・
687 名前:586 [2012/03/16(金) 05:56:10.36 ] そろそろ眠い・・・ しかもこの仕事を引き継ぐ人がマクロとか難しくて嫌だから、手作業でやりたいと言い出して、 このマクロは使われない可能性が高くなってきた・・・ 中身なんて知らなくていいから、黙ってボタン押せっつーの!くそ・・・! でも自己満で作るけどさ。 事務の世界っていつもこうなる・・・やっぱり私に事務は向かないのか・・かと言って、バケモンだらけのPGの世界ではこれ以上やってく自信がない・・・ >>677 あるあるあるあるあるある =Exact() で簡単に同じかどうかのチェックなんて出来るのに、「目視確認でやった方が確実だから、目視でやって」、とか ┐(´д`)┌ チラ裏すみません。眠いです・・・
688 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 08:09:03.03 ] >>661 サンクス
689 名前:デフォルトの名無しさん [2012/03/16(金) 09:49:02.14 ] Valueエラーが出るけどどこが悪いか分かる方いますか? Function sealtime(A As Range, B As Range) 'Application.Volatile '自作関数を自動再計算させます。 Dim time As Double time = Application.WorksheetFunction.ATAN((B - A) / 1) If time < 0.005 Then sealtime = "OK" Else sealtime = "" End If End Function
690 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 09:55:24.55 ] とりあえず Application.WorksheetFunction.ATAN より Atn のほうがいんじゃね
691 名前:デフォルトの名無しさん [2012/03/16(金) 10:30:21.14 ] >>689 ワークシート関数が全部VBAで使えるわけじゃない
692 名前:デフォルトの名無しさん [2012/03/16(金) 11:13:02.48 ] ダブルクリックで画像を挿入したくてネットで調べて色々コピペして作ったんですけどたまにエラーが出ます あと画像を開こうとしてキャンセルすると『1004 指定したファイルが見つかりませんでした』って出ます どこを直せばいいでしょうか お願いします Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Range("C2:G10,C312:G21,C24:G32") If Application.Intersect(Target, myRange) Is Nothing Then Exit Sub End If Dim objFileName As String Dim objShape As Shape objFileName = Application.GetOpenFilename _ Set objShape = ActiveSheet.Shapes.AddPicture( _ Filename:=objFileName, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=242#, _ Height:=120#) Cancel = True End Sub
693 名前:デフォルトの名無しさん [2012/03/16(金) 11:32:07.34 ] あ なんかいけたっぽい こうしたらスムーズになった sFile = Application.GetOpenFilename(FileFilter:="gif,.gif") If sFile = "False" Then Exit Sub
694 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 12:12:14.79 ] エクセル2003のグラフのことで教えてください。 グラフ上のマーカーの上にマウスカーソルを乗せるとデータが表示できますが、 その表示されたデータを取得することはできないでしょうか? もしくは、そのマーカーに対応するセルをアクティブにする方法でもいいです。 どなたか、よろしくお願いします。
695 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 12:32:19.74 ] >>694 できません
696 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 12:50:50.80 ] >>694 マーカーに透明なラベルを被せたら余裕で何でもできる
697 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:24:36.03 ] for each でレンジ範囲の文字列数え上げるとき、数え残すことある?
698 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:27:49.62 ] >>697 例えば?
699 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:35:26.75 ] count = 0 for each a in range("a1:e5) if("あほ"=a.value) then count =count +1 end if next a で、 for b =1 to a にしてるんだけど、bがバグる
700 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:35:57.24 ] さいごにnext bは入れてる
701 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:41:28.29 ] >>699 aって何?
702 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:41:47.29 ] >>699 ○ For b = 1 To count × For b = 1 To a
703 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:45:00.17 ] ああcountにしてるけどバグる
704 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:45:45.84 ] >>703 バグる?
705 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:52:53.95 ] >>699 699がかなりあほってことでよろしいか?
706 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:54:53.70 ] bに同じ数続くことがあるのでする
707 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:57:41.20 ] マクロ記録をそのまま使ってる人いますか? やはり自分で全部書くのが普通でしょうか。
708 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 16:22:56.46 ] >>707 状況によるけど そのままでは使い物にならないことが多い ていうか、記録した方が早い部分と、自分で書いた方が早い部分とがあるので うまく組み合わせた方が結果的に早くプログラムが完成する
709 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:26:58.50 ] >>696 > >>694 > マーカーに透明なラベルを被せたら余裕で何でもできる やり方教えてクレクレ
710 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:51:19.86 ] DOSのコマンドライン引数を取得できないの? Sub Workbook_Open For I = 0 To ARGC -1 Debug.Print ARGV(I) とか。
711 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:08:29.34 ] >>709 そんな態度で教える馬鹿がいるか
712 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:09:20.05 ] うっはwwwwwwいま気づいたんだけどもしかして時間かかる作業させるときってさいごにシート保存するコードとか入れたりするの当たり前だったりするわけですよねですよねえええ
713 名前:デフォルトの名無しさん [2012/03/17(土) 00:11:35.15 ] あたりまえだ
714 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:14:16.48 ] ああもしかして指定時刻にセーブする処理とか入れてリスク管理してみたりするのかあああ
715 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:34:43.42 ] >>711 おしえれ
716 名前:デフォルトの名無しさん [2012/03/17(土) 10:26:53.14 ] >>710 > DOSのコマンドライン引数を取得できないの? > GetCommandLine関数
717 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 10:58:03.30 ] >>711 おしえれ ksg
718 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 11:47:45.96 ] >>716 ありがとうございます。 msdn.microsoft.com/ja-jp/library/cc429108.aspx ってこれ外部ライブラリ・コールか何かせんとあかんのやね、きっと。
719 名前:デフォルトの名無しさん [2012/03/17(土) 14:02:53.16 ] Private Declare Function GetCommandLine Lib \\\"kernel32\\\" Alias \\\"GetCommandLineA\\\" () As Long Private Declare Function lstrcpy Lib \\\"kernel32\\\" Alias \\\"lstrcpyA\\\" (ByVal lpString1 As String, ByVal lpString2 As Any) As Long Sub Workbook_Open Dim sBuf As String strBuf = Space$(255) Call lstrcpy(strBuf, GetCommandLine()) Debug.Print strBuf end Sub
720 名前:デフォルトの名無しさん [2012/03/17(土) 14:05:29.66 ] ごめん、p2で書いたら変な「\」がついちゃった Private Declare Function GetCommandLine Lib "kernel32 " Alias "GetCommandLineA" () As Long Private Declare Function lstrcpy Lib "kernel32 " Alias "lstrcpyA " (ByVal lpString1 As String, ByVal lpString2 As Any) As Long こうね
721 名前:694 mailto:sage [2012/03/17(土) 22:07:32.08 ] グーグル先生ってすごい! クリックで値が取れた!
722 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:07:11.33 ] >>669 派遣ですか? 正社員がいいのですが
723 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:17:58.27 ] 腐るからやめろよ
724 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:42:41.53 ] こんにつあ質問ですお A1-E1に1,2,3,4,5値が振ってあって A2-E2,A3-E3,....,A100-E100まで数値がランダムに入っています。 このとき各行を、それぞれ列の昇順で並べかえたい。つまりA2-E2,A3-E3,....,A100-E100とそれぞれ昇順に並べかえたいのですが、 そのとき1-5の値の対応を残したいのです。どうすればよいでしょうか!!
725 名前:669 mailto:sage [2012/03/18(日) 17:09:54.42 ] >>722 私は正社員ですがパートさんも居ます。 ただ、求人かけてないので・・・ あと、あまり詳しく書くと特定されそうなので もうこれ以上書かないことにします。 とりあえず大阪府も大阪市も一切関係ない民間企業です。
726 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:18:26.86 ] >>724 説明が下手すぎて質問が意味不明
727 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:31:41.37 ] 次の国会で青少年ネット規制法通すことにするわ 子どもたちを守るためには必要だよな
728 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:12:42.15 ] >>724 おりあえず、A2:E2 をソートしたいらしい。
729 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:38:33.54 ] >>724 とりあえずこれで皆の様子見てみて。 Sub Macro1() ' Version : Excel 2002 VB6.0 Range("A2:E2").Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub
730 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:05:11.79 ] たぶん要点は >そのとき1-5の値の対応を残したい だと思うんだが 具体的に何をどうしたいのかがさっぱり解らんな
731 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:42:22.24 ] え…わたしの説明…ヘタすぎ!?
732 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:06:10.55 ] んーとですねー 数値が入ってるセルを行毎に昇順で並び変えたときの、順番を取得しまして、 次にその順番を基準に、最初にセルがあった列番号を並べ変えてですね、 さらにそれにセルに入ってた数値を対応させたいのですけど、具体的にすればいいのかはわからなくて行を2行にするくらいしか思いつかないのですのでなにかよい方方法を教えてみて下さいマシマロ
733 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:21:45.79 ] 何言ってんだかさっぱりワカンネ
734 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:28:55.25 ] ちゃんと説明しようとしない人間の質問に答える必要なし
735 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:40:34.77 ] 下記の様に作成したテキストボックスのShape objectを変数shSelに代入し て、そこに文字列や書式設定をやりたい。 Sub mkTextBTest02() Dim shSel As Shape Set shSel = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 48#, 20 + 16 * lC, 10#, 16#) shSel.Characters.Text = lC '←$文字列を書く With shSel.Font '←$フォントの設定 .Name = "MS ゴシック" .Size = 9 End With shSel.ShapeRange.Line.ForeColor.SchemeColor = 1 '←$フォントの設定 End Sub ←$印の所でエラーが起きる。 .Characters .Font .ShapeRange は、class Shapeのpropertyでないから。 "ActiveSheet.Shapes.AddTextbox(〜).Select"として変数shSelの代わりに、 Selectionと書くとエラーが起きない。 class Shapeのproperty Characters,Font,ShapeRangeを指定するにはどうす ればいいでしょうか。
736 名前:729 mailto:sage [2012/03/18(日) 21:59:27.07 ] こんな感じ? F-J は順列番号 BEFORE: A1 B1 C1 D1 E1 +-------+-------+-------+-------+------- 1 2 3 4 5 21 20 19 18 17 31 32 33 34 35 45 44 43 42 41 56 52 53 54 55 61 65 63 62 60 +-------+-------+-------+-------+------- AFTER: A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 +-------+-------+-------+-------+-------+-------+-------+-------+-------+------- 1 2 3 4 5 1 2 3 4 5 17 18 19 20 21 5 4 3 2 1 31 32 33 34 35 1 2 3 4 5 41 42 43 44 45 5 4 3 2 1 52 53 54 55 56 5 1 2 3 4 60 61 62 63 65 2 5 4 3 1 +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------
737 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:05:40.66 ] 説明が分からないから答えようがないのかそれとも説明は分かるけれども態度が気に食わないから答えないのかもし仮に後者なら貴方こそレスする必要は無いし説明が分からないならば分からない箇所を指摘してくれれば返答できるのだが!!!
738 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:07:03.60 ] 736まさにそれですそれを2行にするか1行に続けて書くか以外になにか案はありますかないのならば1行に続けて書いた方がスマートなんでそうしますが
739 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:14:21.32 ] 元データの末尾に列番号を加える 元のデータ 12 54 . 8 23 36 これを 121.542 83 234 365 にしてから並べ替えれば、下1桁をチェックすれば元の位置がわかる
740 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:20:57.88 ] >>737 ちゃんと例を上げて処理をひとつずつ説明しろ 変な言葉遣い止めろ
741 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:36:53.87 ] なるほどおおおお0.0001とかにすれば誤差も出ないしいい感じですなあ
742 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:30:16.99 ] >>741 どんだけ低脳なんだよ いいわけないだろ ただ複数の値を保持したいだけなんじゃないのかよ データ用と表示用で表を分けるとか Idプロパティ使うとかすればいいだろ Idなら、 A.Idを降るプロシージャ(1〜5) B.それぞれの行を並べ替えるプロシージャ C.IdとValueを入れ替えるプロシージャ を作って、ABで並べ替えた後、 CBCで元の並びに戻る
743 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:36:09.02 ] あっはあidプロパティねthx!
744 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:40:58.34 ] 真性か・・・
745 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:38:22.65 ] ' ↑これを エクセルのシート上で ="'"&A1 と書くとセルA1の文字列の前に ' が 連結されるのですが VBAで dot = "'" Cells(A, 5) = dot & Cells(A, 1) と書いてもA5セルの文字列(A1の中身)の前に ' が 表示されずA5セルをクリックすると 上部のセルの中身が見れるバーには ' が文字列の前に 表示されています。 A5セルを他のセルにコピーしても 文字列だけコピーされて ' はコピーされません。 VBAを使って、文字列の前に ' を連結させたいのですが 良い方法ありませんか?
746 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 05:08:10.31 ] >>745 まず自分で調べろ 俺も知らなかったけど ググったら載ってたぞ いい加減にしろ!!
747 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:02:09.18 ] >>746 VBAのプログラムがおかしいかと 何時間も考えたけど ぐぐったら1分で解決しました ありがとう
748 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:01:31.40 ] >>735 以下の様に、変更するとテキストボックスをかけるようになった。 Sub mkTextBTest02() Dim shSel As Shape Set shSel = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 48#, 20 + 16 * lC, 10#, 16#) shSel.TextFrame.Characters.Text = lC '←$文字列を書く With shSel.TextFrame.Characters.Font '←$フォントの設定 .Name = "MS ゴシック" .Size = 9 End With shSel.Line.ForeColor.SchemeColor = 8 '←$フォントの設定 End Sub VB Editorのヘルプを調べてわかった。 各くオブジェクトのpropertyと、propertyのobjectを定義するclassの区別 がついていなかった。
749 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:12:28.38 ] C3に 11582.43、C4に11722.98という数字が入っています ワークシートで= =C4-C3とすれば、140.55という数字が入ります んで、VBAで同じように引き算で Cells(4, 5) = Cells(4, 3) - Cells(3, 3) とすると見かけ上は同じく140.55という数字が入っていますが、 上の関数入力するとこを見ると140.54999999 という数字になっています なぜ? この場合小数点以下三桁のとこで四捨五入しないとだめ?
750 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:56:52.80 ] >>745 "'"は、セルが文字列型であることを示す接頭辞だから消えてしまう。 Cells(5, 1) = "''" & Cells(1, 1) と書くか。 しかし、Cells(6, 1) = Cells(5, 1) 頭に"'"あるCells(5, 1)をCells(6, 1) にコピーすると、Cells(6,1)では頭の"'"は消えてしまう。 しかし、Cells(A,5)と言う書き方、間違っているのでは。
751 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 01:00:47.78 ] >>749 コンピュータで小数点以下を扱う場合は誤差がでることを考慮に入れる必要があるんだよ ちなみにその計算式のセルを小数点以下20桁とかの表示にしてみ >>750 >しかし、Cells(A,5)と言う書き方、間違っているのでは。 文法的にはAという変数でRowIndexを指定してる。間違ってはいない まあ、意図したものと違うだろうって意味では間違ってるがw
752 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 05:22:57.78 ] >>751 とりあえず、数字を100倍して引き算をし、その後また100で割るようにしておきました。
753 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 10:39:54.04 ] sheetとsheetの結合ってどうやるの
754 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:43:04.59 ] しーとと しーとの けつごう
755 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:52:15.11 ] あのぉ…大量のデータをコピーしようとすると…リソース不足とでるんですが…
756 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 17:38:02.76 ] 型が一致しません、というエラーをスルーして処理を続けさせるにはどうすればよいですか?
757 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:03:41.58 ] >>756 On Error Resume Next
758 名前:デフォルトの名無しさん [2012/03/20(火) 19:43:41.75 ] BookB の全部をコピーして、BookA に貼り付けて BookB を保存しないで、コピーしたデータも 他に使わないで、ただ閉じたいんですが、どう書けばいいでしょうか? マクロの記録だと、ブックを閉じてしまうため、記録が残りません。
759 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:53:02.06 ] 全部をコピーって具体的には? ぶっちゃけファイルコピーで済むようにも見える。
760 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 20:35:55.01 ] Workbooks("BookB").Close False
761 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:34:10.11 ] BBとか多い列数はどうやって数えますか?
762 名前:デフォルトの名無しさん [2012/03/20(火) 21:50:35.25 ] column関数
763 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:03:45.84 ] if small (範囲,1)とするとエラーが出ます どう書けばよいですか
764 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:06:51.11 ] Application.Small
765 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:40:15.33 ] 出来ねええ
766 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:41:18.41 ] >>761 かぞえなくても Cells(5, "BB") みたいに書けるからあんまり困らない
767 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:42:22.85 ] application.smallが上手くいかない件
768 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:44:11.28 ] 多分それデータが悪い
769 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:47:07.63 ] オブジェクトが必要ですとでてくる
770 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:49:05.83 ] 範囲って変数の型がRangeじゃないんじゃない? これで動いたぞ Dim 範囲 As Range Set 範囲 = Range("A1") Debug.Print Application.Small(範囲, 1)
771 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:57:41.83 ] set c = worksheets("a").range(cells(1,1),cells(1,2)) これどこちがう
772 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:01:05.19 ] >>771 エスパー能力を最大限に発揮すると思いつくのはこんなとこ ・シート名が"a"ではない ・セルの範囲が実は間違っている ・変数名がcではない
773 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:07:26.09 ] 今日のエスパー養成所はここかっ!
774 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:07:38.93 ] アプリケーションの定義またはオブジェクトの定義のエラーですがでます
775 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:09:11.73 ] >>771 Set c = Worksheets("a").Range(Worksheets("a").Cells(1, 1), Worksheets("a").Cells(1, 2)) 又は Set ws = Worksheets("a") Set c = ws.Range(ws.Cells(1, 1), ws.Cells(1, 2))
776 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:12:44.97 ] できますたwwwwありがとお
777 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:52:04.45 ] 右クリックの動作を処理に応じて変えることはできませんかね? 例えば最初は通常の動作(ショートカットメニューを表示)、あるコマンドボタンを押してから右クリックすると条件付き書式設定のダイアログボックスを表示、また別のコマンドボタンを押すと通常のショートカットメニューに戻す
778 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 05:31:19.87 ] できます
779 名前:デフォルトの名無しさん [2012/03/21(水) 11:58:38.03 ] activecell.address で"$"つきの番地が得られます。 $なしの番地はどうすれば取得できるのですか? そもそもなぜ$サインがつくのでしょうか?
780 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 12:03:18.85 ] >>779 replace関数で"$"を""に置き換えるといいです
781 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 12:58:56.00 ] >>779 ActiveCell.Address(False, False) ヘルプを読めよ 式.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
782 名前:デフォルトの名無しさん [2012/03/21(水) 14:58:10.99 ] >>780 ,781 Thnx
783 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:54:20.16 ] ちょっと教えてほしいのだが 引数明示して書くとき、例えば下のケースだが Range(Cells(1, 1), Cells(1, 2)).Replace what:="111", replacement:="", MatchCase:=False これはすべて小文字で入力したんだがmatchcaseだけ修正されるのはなぜなんだ?
784 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 19:23:14.78 ] >>783 仕様だから、としか答えようがない
785 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 19:53:58.40 ] >>784 ありがとう 謎仕様なんだな
786 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:16:41.56 ] Microsoftだもの
787 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:20:20.58 ] >>783 ホントだ、気持ちわりーな
788 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:26:12.89 ] MatchCaseにカーソル置いてF1押すと、Sort.MatchCase プロパティ が表示できる whatやreplacementだとキーワードが見つかりません。になる MatchCaseってプロパティと勘違いして補正されてると思われ
789 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:38:35.97 ] >>788 あーなるほど 理解した、ありがとう しかしこれ気になるよな ただ、直すのも面倒なんだよな
790 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 08:04:17.83 ] directXから音を鳴らしているのですが 音量を変えるにはどうしたらいいでしょうか up1m.ko.gs/src/koups1393.zip
791 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:09:48.74 ] >>790 >>2
792 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 15:08:59.92 ] >>778 遅くなりましたが出来ました。 もう一つ質問なのですがCtrlキーを押しながら任意のセルを選択した時、そのアドレスを全て取得するにはどうすればよいのでしょうか 例えば、A1、A3、A7、B1、B2、B4、C3、C4、C5を選択した時にこの9個のアドレスを取得したいのです
793 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 15:16:28.75 ] >>792 Application.Selection
794 名前:792 mailto:sage [2012/03/23(金) 16:17:34.92 ] >>793 わかりませぬ、具体的に教えて下さい。
795 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:27:44.81 ] debug.print application.selection.address
796 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:07:16.00 ] 条件付き書式を設定したセルをアクティブにして これ以外のシートの内容を下のマクロで消すと表示がおかしくなるんだけど なぜなんだ?? sub test worksheets(2).cells.delete end sub 条件書式以外にもindirectを使ったセルでもおかしくなる
797 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:11:20.36 ] worksheets(2)を参照してたからじゃないの?
798 名前:792 mailto:sage [2012/03/23(金) 18:16:57.46 ] Dim Sel_Addr As String Sel_Addr = Application.Selection.Address としたら取得できました。
799 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:35:18.85 ] いちいちそんな報告いらん
800 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:54:15.56 ] >>797 参照って =Sheet2!A1みたいに使ってるかってことか? なら使ってない 表示がおかしいって書いたが、アクティブセルの囲い線が残るような感じ
801 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 07:44:03.99 ] >>800 単なるバグじゃないの? ScreenUpdatingをFalseにしてからworksheets(2).cells.deleteしたらいい
802 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 15:01:00.18 ] >>801 やっぱりバグなのかー ありがとう
803 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:18:46.43 ] formの表示中に自由にセルを選べるように したいのですが・・・
804 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:21:04.88 ] >>803 モードレスで開けばいい
805 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:21:48.60 ] vbModeless
806 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:26:46.00 ] >>804 Thnx モードレスで、表示すればよいのでは? UserForm1.Show vbModeless とか UserForm1.Show 0
807 名前:デフォルトの名無しさん [2012/03/24(土) 16:38:43.39 ] A1とかセルの座量をべた書きするんじゃねーよ セルに名前を付けて名前経由で座標を指定しろよ ソース解析&改造しててやりにくくてしかたない
808 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 16:49:06.55 ] 複数のCSVファイルを1つにしたくて 調べたら 以下のサイトが参考になったので ttp://ziddy.japan.zdnet.com/qa3168255.html?order=DESC&by=datetime Sub CSV結合() Const CRFILE As String = "C:\My Documents\test2" Dim obj As Object Dim arg As String Set obj = CreateObject("Shell.Application") _ .BrowseForFolder(0, "SelectFolder", 0) If obj Is Nothing Then Exit Sub arg = obj.self.Path & "\*.csv " Set obj = Nothing Call Shell(Environ("ComSpec") & " /c copy /b " & arg & CRFILE) End Sub とやっているのですがうまくいきません。 フォルダ選択の画面はでてくるのですが C:\My Documents\test2 に結合されたCSVファイルができるはずですが、できなくて。 ソース間違ってますか? エクセル2007です。
809 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:01:15.46 ] 書き出すファイル指定が間違ってるかと思い Const CRFILE As String = "C:\test2" Cドライブ直下にtest2フォルダ作ってみてもだめでした
810 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:07:43.90 ] Shell関数に渡しているコマンドライン文字列を確認したら? とりあえず、空白を含むパスはダブルクォートで囲まないと駄目だ。
811 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:15:53.57 ] >>808 Const CRFILE As String = "C:\My Documents\test2.csv" で出来たけど?
812 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:20:05.20 ] >>808 >>2
813 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:37:21.02 ] >>807 こめんなさい。心当たりが沢山ありすぎてもう…
814 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:41:43.68 ] >>810 コマンドライン文字列とはなんですか? 他にCSVファイルを2個作ってみたけどだめでした。 >>811 拡張子つけたけどだめでした。 >>812 XPでエクセル2007です ソースをステップ実行させても 全部の行を実行してるのに なんだろうこれは・・・
815 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:50:40.99 ] Const CRFILE As String = """C:\My Documents\test2.csv"""
816 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 17:54:23.10 ] > XPでエクセル2007です そう来るかw
817 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 18:38:25.29 ] >>814 >>2
818 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 19:20:45.41 ] >>775 これで指定したレンジ範囲の数値を、小さい順に並べた場合の各々の差が、x以上であるとかx以下であるといった判定をするにはどう書けばよいですか!
819 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 20:30:24.96 ] >>818 IsNumeric関数とIfステートメントを使う 詳細はヘルプを読めばわかる
820 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:05:47.67 ] isnumericじゃできなくね?
821 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:08:14.94 ] 数値かどうかの判定に必要だと思ったんだけど、不必要だと思ったなら使わなくても何ら問題ない 強制力なんかないからね
822 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:55:40.15 ] if a1>a2+x>a3+x thenが上手く動かないのだが、なぜか?
823 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 22:59:30.43 ] >>822 if a1>a2+x and a2+x>a3+x then
824 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:02:42.68 ] これがa3までじゃなくa100まである場合、どうすればいい?
825 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:04:33.81 ] 誤り if a1>a2+x>a3+x then 訂正 if a1>a2+x>a3+2x then
826 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:07:17.88 ] そうか全組み合わせの差の絶対値の最小値がx以上ならいいわけか しかしx以下の場合を求めたいときはどうすればいい?
827 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:08:16.93 ] 何だVBA力のおっさんか
828 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:13:47.11 ] >>824 VBAを使うしかないだろうな
829 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:23:17.89 ] >>824 アンダースコアを使えばステートメントを複数行に分けて記述することができる 例えばこんな感じ If 条件式1 And _ 条件式2 And _ 条件式3 And _ 条件式4 And _ 既にスレチなので>>2 をよく読んでくれ
830 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 02:53:38.96 ] 例えば処理したい「実行1」というプロシージャがありあまして。 call 実行1 で普通に処理されるのですが。 Dim moji As string moji = "実行1" call moji は当然ですが実行されません。ですが、何かプロシージャそのものを変数化させて 状況に応じて呼び出せるようにする方法があるでしょうか? ユーザーフォームのリストボックスに何十種類ものプロシージャがあるのですが、それらを 効率的に場合わけして処理するのに、それが出来ると便利なのですが。 方法はないのでしょうか?
831 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:35:34.73 ] >>830 Application.Run ThisWorkbook.Name & "!" & moji 普通は Call ほにゃらら(moji) ってやって、ほにゃららの中でmojiによって分岐するようなプログラムを書くもんだけど
832 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:37:32.62 ] ifとかselectでそれらを場分けしてcallする処理を1個用意すりゃ良いじゃん つか普通そうする プログラミングの手法とかそういう話だから後はそういうスレで聞いてくれ
833 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 03:38:56.85 ] あ、リロードしないのが自分の悪いクセだな…
834 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 06:28:18.30 ] >>831 ありがとうございます。 >>832 実はそのように、select で、分岐していたんですが、数が多くなりすぎて。 ただ、selectの分岐がいくら多くなっても、速度とかに影響するという わけでもないので、良いといえば、良いのですが、スマートにできないかと 気になってしまいまして。
835 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:59:29.22 ] for i=1 to n if a(i-1) - a(i) <= x then y= false next I
836 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:22:52.17 ] a列とb列の相関を調べたい
837 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:31:17.78 ] VBA使う必要ないけど
838 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:04:00.73 ] 複数のCSVファイルをひとつのXLSファイルへまとめるにはどのようにしたら効率がよいですか? 20120201.csv 20120202.csv ・・・ 20120228.csv というファイルを201202.xlsファイルにまとめたいと考えています。 (シート名を01,02,・・・,28にして、1bookに28シートが出来上がるイメージ)
839 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:13:25.03 ] >>838 ご自身のコーディング速度と手作業での速度を比較してみればどちらが効率がよいか一目瞭然です 1回限りの作業であれば手作業でやるのが一番効率がよいでしょう ExcelVBAに関係がない話題なのでこのへんで終了
840 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:06:52.20 ] 配布物にExcelを利用したいのですが 配布物の中の別のファイルの情報を取得する場合 ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html で相対パスだと危険があるとあったのですが ThisWorkbook.Path & "\..\date\ファイル名" のようなやり方だと階層をまたいでも中をいじられない限り どんな環境の人が使っても問題ないと思っていいのでしょうか それと、相対パスで一つ上の階層に行くやり方で Dim mPath As String mPath = ThisWorkbook.Path i = Len(mPath) - Len(Replace(mPath, "\", "")) If i > 1 Then mPath = Mid(mPath, 1, InStrRev(mPath, "\") - 1) End If というやり方が紹介されていたのですが これは..に対して上に階層があるのか調べる機能が付いただけ という認識でいいのでしょうか
841 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:18:37.85 ] >>840 お前の認識間違えてるぞ アホ ちゃんと読め
842 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:18:46.91 ] >>840 すべてにおいて見当違い 手始めに「相対パス」がなんなのか理解してきた方がいい
843 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 20:40:54.08 ] >>839 一回限りの作業ではなく、毎月発生する作業です。 現在は 新しいブックに開く→シートの移動 を繰り返すコードにしてるのですが、 見るからに効率が悪くなっています。
844 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 20:51:07.07 ] >>842 相対パスって基準から見た位置ですよね URLのは基準を指定しないとカレントフォルダからになるから危なくて ThisWorkbook.Pathで基準をブックのある位置を指定すれば問題ないのかなと思ったんですが
845 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 20:57:55.20 ] >>843 検索すれば、参考になるコードいくらでも出てくるだろ。 Dir 関数使えばいいんじゃない。
846 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 21:37:10.43 ] >>843 見るからに効率が悪いことに気づいてるんだったら改善すればいい
847 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 21:37:33.36 ] >>844 「危ない」とか「問題」ってのは具体的にどういうことなの? 具体的に説明してくれないと誰もわからないよ
848 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 21:55:49.31 ] >>843 QueryTables.Add使え
849 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 22:44:15.07 ] >>847 「絶対的基準に基づいてないから危ない」とか言い出すぞw
850 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 22:54:44.01 ] >>844 もう一回お前のリンク先読み直してから来いよ 音読な
851 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 01:01:30.47 ] >>838 ,840 Excelどうこうよりも、まず日本語の読み書きを勉強した方がいいと思う 社会人になってから苦労するよ?
852 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 16:27:18.20 ] EXCEL VBAは基本的にはオブジェクト指向言語。 だからJAVA, C++と同様にクラス間の継承もあるが、EXCELで予め定義された 既存のクラスのみでその関係があり、↓ここを見るとプログラマが定義する マクロのクラスで、継承関係にあるものを作ることはできないみたい。 members3.jcom.home.ne.jp/daruma_kyo/aboutooa/vba_limit.html 既存のクラスの継承関係。例えば、collection WorkSheets,Chartsは、 collection Sheetsを継承している。 ActiveWorksheetでその時にカーソル(focus)を当てているものを示す、 property Selection。 その時にカーソルを何に当てているかによって、Selectionのクラスが、 Range, Shape, ChartAreaなどに変化しているみたい。 このproperty Selectionを定義しているクラスは、多分、あらゆるクラス の継承元になっているclass "Object"でないかと思っていますが、 どうなんでしょうか。
853 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 16:48:39.95 ] >>852 オブジェクトブラウザというものがある
854 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 17:19:20.10 ] 複数の行の挿入が面倒くさかったのでVBAを学んでみようと思ったのですが試しに作ったマクロが Sub 行の挿入() Dim i As Integer i = 1 Rows("i:2").Insert Shift:=xlDown End Sub 型が違うと出てきます iの定義が間違ってるのかと思うのですが LongやVariantなども試したもののだめで、整数値で型が違うといわれるのもなぜかわかりません 初歩的で申し訳ないですが教えてください
855 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 17:40:07.26 ] >>854 “Rows”の上にカーソルを置いて[F1]キーでヘルプを開いて読め
856 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 17:58:53.56 ] >>855 できました ありがとうございます
857 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 21:51:31.61 ] >>852 >EXCEL VBAは基本的にはオブジェクト指向言語。 VBAはもともとオブジェクト指向ではない言語をオブジェクト指向に拡張した言語(の派生) オブジェクト指向言語だと言いきるには不備が多い >既存のクラスの継承関係 基本的に継承関係は保障されているわけではない(と思う。保障されてるならソース教えてくれ) つまり(Setによる代入で)キャスト出来るかどうかは実行してみないと解らない >ActiveWorksheetでその時にカーソル(focus)を当てているものを示す、property Selection。 ActiveWorksheetなんてクラス(型)はない。WorksheetにはSelectionなんてプロパティはない >Selectionのクラスが、(略)変化しているみたい。 Selectionなんていうクラスも無いのは理解できてるのか? (Windowクラスの)Selectionの戻り値の型について、Object型で実際はいろんな型が戻されるんだぞ >このproperty Selectionを定義しているクラスは、 Selectionなんてクラスはないし、Selectionプロパティを実装(定義)してるクラスはどんな型だろうと関係ない 問題はSelectionプロパティ(の戻り値)の型 >あらゆるクラスの継承元になっているclass "Object"でないかと思っています VBAにはObjectという型はあるが、Objectクラスというクラスはない(はず) Object型にはあらゆるクラスが格納できるが、それは全てのクラスがObjectから派生してることを意味しない なぜならVBAは純粋なオブジェクト指向言語ではないから
858 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 11:52:43.27 ] >>857 > 基本的に継承関係は保障されているわけではない(と思う。保障されてるならソース教えてくれ) > つまり(Setによる代入で)キャスト出来るかどうかは実行してみないと解らない できない例は?
859 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 14:59:45.96 ] >>>857 class, object, collection, propertyの概念の区別がきっちりできていな いです。 >>Selectionなんてクラスはないし、Selectionプロパティを実装(定義)してるクラスはどんな型だろうと関係ない object browserで見ると、Selectionはobject Applicationとobject Windows のmember(property)になっているみたいです。 これのヘルプを見る。 >>Property Selection As Object 読み取り専用 >>Selection プロパティ >>Application オブジェクトでは、アクティブウィンドウで現在選択されて >>いるオブジェクトを返します。 >>Windows オブジェクトでは、指定されたウィンドウで現在選択されている >>オブジェクトを返します。 >>オブジェクト指向言語だと言いきるには不備が多い ↓参考 sites.google.com/site/compositiosystemae/home/vbaworld/upper/exp3/polymorphi VBAのclass moduleでクラスを定義するとき クラスの構築子(constructor)に当たるもの Class_Initialize() クラスの消滅子(destructor)に当たるもの Class_Terminate() 構築子の引数はサポートされていない。
860 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:13:38.21 ] >>859 > class, object, collection, propertyの概念の区別がきっちりできていな > いです。 できてないのはお前だけじゃないの?
861 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:32:30.71 ] なんかVBAがオブジェクト指向的に駄目だ駄目だって言う奴多いけど、 適切なところでclassモジュールを使って、VBAで使える範囲の機能を 使えばいいのにっていつも思う。 とか言うと、VBAじゃ適切なところなんてない的な話になりがちな気がするが。
862 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:36:41.16 ] この手の話を質問スレでしないで欲しい 自分の中で答え持っててそれを主張するだけなんだから
863 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:57:49.74 ] VBAスレはここだけしかないんだから、ここでいいだろ
864 名前:862 mailto:sage [2012/03/28(水) 17:07:48.32 ] あ、これ質問だったのか ごめんよく読んでなかったは
865 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 17:23:26.77 ] ガキはすっこんでろ。
866 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:12:36.94 ] >861 はげどう。 継承だって工夫すればできるし、 コンストラクタの引数がないのも特別不便ではない。
867 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:31:02.19 ] オブジェクト指向厨は市ね。 VBAごときの小規模アプリに オブジェクト指向など無用だ。
868 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:33:47.05 ] 工夫した継承はコード量が多く、結局オブジェクト不志向(データ志向っての?)に落ちついてしまう って事があったなーと、ふと思い出したっす。
869 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:45:10.16 ] ツールバー追加のマクロを組んだのですが、ブックを閉じるときに ツールバーを削除しようとするとエラーが出ます。 原因をご教示下さい。 コードは長くなるので分けて書き込みます。
870 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:48:22.21 ] Private Sub Auto_Open() Dim xlAPP As Application Dim objBar As CommandBar Dim objCont As CommandBarControl Dim objBtn As CommandBarButton Dim vntCaption As Variant , vntTipText As Variant , vntOnAction As Variant Dim IX As Integer Dim blnTRUE As Boolean Set xlAPP = Application vntCaption = Array("登録(&A)", "更新(&U)", "削除(&X)") vntTipText = Array("登録を行ないます", "更新を行ないます", "削除を行ないます") vntOnAction = Array("BTN_TOUROKU", "BTN_KOUSHIN", "BTN_SAKUJO") Set objBar = xlAPP.CommandBars.Add(Name:=g_cnsTITLE, Position:=msoBarTop) blnTRUE = False For IX = 0 To 2 Set objCont = objBar.Controls.Add(Type:=msoControlButton) objCont.BeginGroup = blnTRUE ' CommandBarButtonオブジェクトの参照を取得 Set objBtn = objCont objBtn.Style = msoButtonCaption objBtn.Caption = vntCaption(IX) objBtn.TooltipText = vntTipText(IX) objBtn.OnAction = vntOnAction(IX) blnTRUE = True Next IX objBar.Visible = True objBar.Protection = msoBarNoChangeVisible ActiveWindow.ScrollRow = 1 Set objBtn = Nothing Set objCont = Nothing Set objBar = Nothing End Sub
871 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:50:44.42 ] ' 閉じる時の自動実行処理 Private Sub Auto_Close() Dim xlAPP As Application Dim objBar As CommandBar Set xlAPP = Application ★Set objBar = xlAPP.CommandBars(g_cnsTITLE) objBar.Delete Set objBar = Nothing End Sub ★の部分で 実行時エラー'5': プロシージャの呼び出し、または引数が不正です。 となります。原因と対策をご教示下さい。
872 名前:デフォルトの名無しさん mailto:sage [2012/03/29(木) 00:07:11.46 ] >>871 g_cnsTITLEに該当するツールバーがないんじゃない?
873 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 00:17:48.05 ] >872 直接ツールバー名を指定したら無事動きました。 ありがとうございました。
874 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 10:35:16.91 ] >>868 Strategy Patternとか超便利なんですけど。
875 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 20:03:26.77 ] 動的に作成したCommandButtonにクリックイベントを 登録するにはどうすればいいの?
876 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 20:29:50.48 ] Outlookで仕事で毎日送ってるメールがあるんだけど 本文で日付以外は全部一緒。 Templateで、日付もその日のが自動入力、って設定する方法はどうやりますか? マクロでもokです。
877 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:45:11.26 ] date | Mail -s 今日のメール who@where.co.jp Unix使えよオマエら
878 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:51:58.76 ] >>876 OutlookのバージョンとExeclのバージョンを教えて
879 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 21:14:12.72 ] ともに2007です >>878
880 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 01:39:29.67 ] >>876 EXCELまったく関係ないのはスレ違いなんだが outlook テンプレート 日付 でググって最初のページでも見てろ
881 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 11:47:57.65 ] どう考えてもこのスレに辿り着くより解法が載ってるサイトに辿り着く方が早いと思うんだけど 検索サイトを一体どんな風に利用しているんだろう?
882 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 19:39:23.25 ] >>875 WithEventsで宣言した変数に参照代入する
883 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 17:49:54.34 ] A3の範囲に入っている数字が読めるように 列幅を大きくするとOKで 列幅を小さくして数字が##のようにすると Set C がNothing になってしまう、いい方法ありますか A2 = "gg50": A3 = "gg11:gg45" n = sh4.Range(A2) Set C = sh4.Range(A3).Find(Val(n), LookIn:=xlValues)
884 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 18:07:52.43 ] >>883 検索するときに列幅を広げて 検索が終わったら列幅を元に戻す
885 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 18:14:12.91 ] わかりました、そーします ありがとう
886 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 08:36:11.39 ] だれかSQLでdecodeに当たるような関数をVBAで教えてくれ 調べてもreplaceしか出てこないんだ 内部処理で文字列を違う文字列として扱ったりしたいんだ
887 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 10:29:49.84 ] >>886 IIf関数かIf...Then...Else ステートメント ちなみに標準SQLにはDECODE関数なんて無い
888 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/05(木) 11:11:06.09 ] >>886 Choose officetanaka.net/excel/vba/function/Choose.htm
889 名前:886 mailto:sage [2012/04/05(木) 23:16:08.15 ] >>887 >>888 さんくす!iPhoneからだと規制されてて書き込めなかった 今日、現場の作業で活用させて頂きました
890 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 04:53:41.84 ] オフィス田中はNGにしてほしい
891 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 07:29:19.45 ] >>890 なんで?
892 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 07:32:09.99 ] >>891 そんな有名なところだれでも知ってるから すでに読んでる
893 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 08:20:34.61 ] ↑ 自分が知ってることは他人も全部知ってるべきだと思ってる池沼
894 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 10:04:50.92 ] まぁ>>888 みたいにリファレンスとして貼るならMSのサイトを貼れよとは思う
895 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 19:27:40.21 ] >>892 何が「誰でも知っている」だ。 俺はそんなサイト知らねえぞ。 お前のためにあるスレじゃねえから 自己厨レスはやめとけ。
896 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 19:30:55.02 ] >>894 マイクロソフトみたいな有名なところだれでも知ってるから すでに読んでる
897 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 00:22:42.19 ] セル範囲を飛び越えて選択したいのですが Range("A1,B3")をRange(cells(1,1),cells(2,3))でやることってできますか? 試しにコンマ入れてみたけどできませんでした
898 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 00:36:09.97 ] >>897 Application.Union(Cells(1, 1), Cells(2, 3))
899 名前:897 mailto:sage [2012/04/07(土) 00:47:26.65 ] できました ありがとうございます
900 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 03:29:15.39 ] オフィス田中は何ググッても出てくるよな
901 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 05:29:02.44 ] オフィス田中は数年前に行き着いたが間違い記事があり それを2,3年経っても放置している上に、自分と大差ないレベルらしく 読んでても新たな発見とか嬉しい驚きとか全然無いんで全く行かなくなった
902 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 07:16:36.62 ] MSDN一日中眺めてればいいよ
903 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 07:39:34.18 ] 20年くらい前はそれでも全体見廻せたが いまそれやると一生無駄にすると思う
904 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 08:32:51.50 ] >>892 >>>891 >そんな有名なところだれでも知ってるから google検索なんか利用できないじゃん。有名なところしかヒットしない仕組みなんだもの。
905 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 17:05:07.95 ] シート2のA1:A30のデータをシート1の B2:B12,D2:D12、F2:F12 の用に3行に分けて張り付けたいときは FOR ....next で繰り返しするしかないのでしょうか? 何か一発で行けるようなスマートなやり方はないでしょうか?
906 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 17:31:13.82 ] >>905 B2:B12、D2:D12、F2:F12は3行じゃなくて11行だと思うけど? 一発じゃないけどループ使いたくないならこんなのとか With Range("A1:A30") Dim v As Variant v = .Offset(0) Range("B2:B12") = v v = .Offset(10) Range("D2:D12") = v v = .Offset(20) Range("F2:F12") = v End With
907 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 17:49:21.59 ] >>906 >>B2:B12、D2:D12、F2:F12は3行じゃなくて11行だと思うけど? 確かに・・・ B2:K2、B4:K4、B6:K6の間違いでした。 シート2のA1:A30には不連続のデータが入っていて、 それのA1:A10をB2:K2に A11:A20をB4:K4に A21:A30をB6:K6にコピーしたいのです。 >906を試してみると一行に全ておなじデータが入ってしまいました。
908 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 18:01:47.39 ] >>907 コピペしたら? Range("A1:A10").Copy Range("B2").PasteSpecial Transpose:=True Range("A11:A20").Copy Range("B4").PasteSpecial Transpose:=True Range("A21:A30").Copy Range("B6").PasteSpecial Transpose:=True
909 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 19:47:57.72 ] >>908 やはりそうするのが無難ですよね。 別件なのですが、Findで検索してヒットしたせるから 10行目までの範囲を指定したい場合はどうしたら いいですかね? Offsetを使って色々しているのですが上手くいきません。
910 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 19:52:21.42 ] >>909 Resizeプロパティ
911 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 22:45:34.62 ] >>910 サンクス
912 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 13:54:16.86 ] 教えてください。 OS:XP EXCEL:2007 ユーザーフォームを起動させると、言語バーの輝度が落ちてしまい日本語入力ができなくなります。 F8ポチポチでは再現せず…適当なポイントで止めても再現せず… 一旦エクセル落として開き直せば復帰します。 ユーザーフォームはクラスを使ったカレンダーフォームです
913 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 18:30:01.65 ] Excel VBAは基本的なところ(セル・シート・ブック)は完ぺきにマスターしたのですが 苦手なのがサブルーチンをいっぱい作ってそれらを効果的に使う方法や、どうやって全体像を把握するのかや、 フォームを駆使して、それをどうやって標準モジュールと連携させるかとか、 変数についてローカル変数やグローバル変数をどう概念的に理解して使いこなすとか そのへんでつまづいています。 基本的なところ(セル・シート・ブック)は、入門書やすこしレベルが上のものでも、本やサイトでいいのがいっぱいありますが、 「サブルーチン」「フォーム」「変数」とかについてに特化した入門向けから上級者向けの本やサイトがあれば教えてもらえますか?
914 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 18:48:40.75 ] 個人用マクロ(PERSONAL.XLSB)を作っているのですが [X]で閉じるときもう一回押さないと閉じないんです。 これを回避する方法ありますか?
915 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 19:02:50.68 ] >>913 >>2
916 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 19:03:25.69 ] >>914 >>2
917 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 19:13:04.47 ] >>913 難しく考えすぎ。 「使いこなそう」などと考えるのがおかしい。 VBAはシートと関数で実現が難しい機能が ある場合の補助手段。 フォームとか面倒くさい機能は使うな。 シートという立派なGUIがあるんだから。 あとルーチンも変数も全部Publicでいいから。
918 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 20:58:39.07 ] 「完ぺきにマスターした」なんて書いてる時点で釣りなんだからスルーしとけ
919 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 22:57:28.08 ] >913 えっと、そういうのはVB(VB6まで)の入門書を卒業するレベルならいいんだろうけど、 いまさらVB6の本はないからねぇ >914 アドインにすれば?
920 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 23:00:30.69 ] >>913 VBAの基本的な文法からきちんと勉強してみれば? 日経BP社の Microsoft Excel VBA セミナーテキスト [2010/2007/2003対応] なんてなかなか良い内容だと思ったけど。
921 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 00:32:51.14 ] >>912 自己解決したので報告 原因はfalseのままでメソッド終了させてたからだったみたい。最後にtrueで戻したら解決した。 お騒がせしました。
922 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 01:09:31.32 ] Excel/VBAプログラミング入門 ttp://www.cqpub.co.jp/hanbai/books/MIF/MIFZ201204.htm う〜ん、「第10章 USB接続によるデータ計測」にひかれて買ってみたんだけど、 「サイエンスキューブ」ってデータロガーをつかうとこんなことができますよ、って説明だけで 期待したもの(WinUSB.dllをエクセルVBAから使うには)とはちょっと違ったなぁ、残念 シリアルポート(MSComm32.ocx)の代わりに使えるかなぁと思ったんだけど
923 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 03:58:36.15 ] 質問があるのですが。 複数のエクセルファイルを開いている状態で。 ショートカットキーを使ってマクロを実行しているのですが。 アクティブじゃないエクセルファイルのマクロと競合すると言いますか、 他のも実行してしまう状況にあります。 ショートカットキーのキーを変えると作業の円滑さがなくなってしまうので 出来れば同じショートカットキーを使いながら、アクティブなエクセルに 入っているマクロのみを実行したいのですが。何か方法はあるのでしょうか?
924 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 04:18:55.01 ] 誰かわかる人いましたらよろしくお願いします。 エクセル2003なんですが、条件書式の色つきが3つまでしかできません。 10色ほどしたくて、ぐぐったらここに辿り着いて元となるVBAを見つけました。 ただ、これはシート1のA列が指定になっています。 これを指定の範囲ないにするにはどこをいじればいいのでしょうか。 例えばシート1のC1〜C10を範囲にするにはどうすればいいでしょうか・ qanda.rakuten.ne.jp/qa7116283.html
925 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 07:58:24.87 ] >>924 あんまり綺麗なコードじゃないけど、めんどくさいから最小限の修正で Sub W() Dim j As Long Dim ws2 As Worksheet Dim r As Range Dim c As Object Set ws2 = Worksheets("Sheet2") Set r = Range("A1:A10") 'ここに色を付けたいセル範囲を書く If Intersect(r, Columns(1)) Is Nothing Then Exit Sub Application.ScreenUpdating = False r.Interior.ColorIndex = xlNone For Each c In r If WorksheetFunction.CountIf(ws2.Columns(1), c) Then j = WorksheetFunction.Match(c, ws2.Columns(1), False) c.Interior.ColorIndex = ws2.Cells(j, 2).Interior.ColorIndex End If Next Application.ScreenUpdating = True End Sub
926 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:01:03.42 ] ちょっと訂正 1つ目のIfは削除しないと、A列にしか色が付かない 2つ目のIfもよく見たら不要だな Sub W() Dim j As Long Dim ws2 As Worksheet Dim r As Range Dim c As Object Set ws2 = Worksheets("Sheet2") Set r = Range("A1:A10") 'ここに色を付けたいセル範囲を書く Application.ScreenUpdating = False r.Interior.ColorIndex = xlNone For Each c In r j = WorksheetFunction.Match(c, ws2.Columns(1), False) c.Interior.ColorIndex = ws2.Cells(j, 2).Interior.ColorIndex Next Application.ScreenUpdating = True End Sub
927 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:09:08.94 ] まだVBAを扱って日が浅く、すみませんが教えて下さい。 390行目を超えると、 実行時エラー1004 WorkseetFunctionクラスのmmultプロパティを取得出来ません。 とエラーが出てしまいますが、最終行まで計算させる方法をご教示下さい。 Dim myA As Range Dim myB As Range Dim myC As Range Dim l As Long Dim m As Long Dim n As Long Dim lLoopTimes Dim i As Long Set myA = Range("Sheet1!D3") Set myB = Range("Sheet2!C2") Set myC = Range("Sheet1!DN3") l = 1 m = 111 n = 14 lLoopTimes = 1194 For i = 1 To lLoopTimes myGetMatrix(myC, l, n).FormulaArray _ = WorksheetFunction.MMult( _ myGetMatrix(myA, l, m), _ myGetMatrix(myB, m, n)) l = l + 1 Next End Sub
928 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:22:37.45 ] >>927 Sheet1かSheet2のどこかに数値の入ってないセルがあるんじゃない?
929 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:29:51.78 ] >>927 そのプログラムだと、Sheet1!D3:DJ1196とSheet2!C2:P112が計算に使われる この範囲内に数値の入っていないセルとか結合されたセルがあるとエラーになる
930 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 08:54:42.65 ] >928 >929 チェックしてみましたが空白は無い様です。 また試しに、ループを外し、 l = 300、l = 600とマクロを300行分ずつ書き換え、順次実行していくと問題無く最終行まで行きました。 出来れば1つのマクロで終わりにしたいのですが、 何か良い方法はありませんでしょうか・・・。
931 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 09:50:47.36 ] フォームモジュールのところにちゃんしグローバル変数を Public inTest As Integer と宣言してるのに 標準モジュールではその変数を使えないのはどういうこと? 別の標準モジュールにならPublic inTest As Integerと宣言してたら使えるのに。
932 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 09:56:43.94 ] 逆に標準モジュールでPublic inTest As Integerと宣言してれば フォームモジュールではinTestの変数は使えるんですよ。 おかしくね?
933 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 09:57:37.34 ] さらにThisworkbookモジュールでも上記と同様のことが。 ということは標準モジュールが一番えらいの?
934 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 10:17:37.12 ] カンマ区切りのCSVファイルの読み込みで、セルG2を先頭にして読み込むとか する方法ってありますでしょうか? 普通に読み込んで行列を挿入しているのですが、スマートな方法があれば教えて下さい。 環境はwinxp+Excel2003です。 宜しく御願いします。
935 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 10:20:15.49 ] 個人用マクロにFunctionを書いても 普通のWorksheet関数として使おうとしても使えないんですけど。 どうやれば使えるようになりますの? (普通にシートにFunctionを書けばそのシートではWorksheet関数として使えるけど) ヤバくない?
936 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 10:28:09.14 ] >>934 行列を挿入するよりカトペの方が手間は少ないのでは 「テキストファイルの読み込み」を使えば好きな場所に読み込めるけど、位置を決めるまでに何度も「次へ」ボタンを 押さなきゃいけないからあんまりスマートとは言えないような気がする 一発で処理したいならマクロ
937 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:16:08.23 ] >>935 無理 そういうときはアドインにする
938 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 11:35:10.56 ] >>973 さっきから出ている「アドイン」とは何でござるっすの?
939 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:45:29.76 ] >>938 Excelのヘルプで「アドイン」で検索するか、各種検索エンジンで「Excel アドイン」で検索したらいいと思うよ
940 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:46:30.60 ] >>936 あっ!ありがとうございます。
941 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:54:37.72 ] >>924 ここで条件によってExit Subしてるから、C1〜C10の範囲じゃなければExit Subするようにすればいい If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
942 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 11:56:34.73 ] グラフとかのオブジェクトを削除した時に、マクロを走らせたいのですが どのイベントを使えばいいのでしょうか? どなたか教えて下さい。
943 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 12:32:54.00 ] >>942 残念ながらありません 監視する仕組みを自作するしかありません
944 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 15:04:28.95 ] >>931 フォームでPublic宣言したものは フォーム.変数名 で使える。 標準モジュールのは 標準モジュール.変数名でアクセスできるが 省略できるだけ
945 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 21:46:22.98 ] ユーザー定義変数って、入れ子にできるんだね。 かなり便利だ。
946 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 23:07:19.96 ] >>945 詳しくお願います
947 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:11:11.65 ] エンターキーが押されたらマクロが走るようにしたいのですが、 ブック全体?でキーを受け付ける方法はないでしょうか? マクロ実行後、オペレーターが画面を確認して、エンターを押したら、 再度マクロが走るようにしたいのです。 ググってもTextboxに対してだったり、セルへの入力時の例ばかりで 目的の物とは違うので教えて下さい。 宜しく御願いします。
948 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 23:11:16.53 ] VBAで作ったExcelのファイルを、 Outlookのメールに添付して しかもそのメールの差出人・件名・本文(数行以上に渡る文章)もVBAで書いて 送信ボタンを押す直前の状態までExcelのVBAで作ることは可能ですか? Yなら、どうやりますか?
949 名前:948 [2012/04/09(月) 23:12:45.90 ] VBAで作ったExcelのファイル = あるマクロでいろんな処理をした結果作ったExcelのブックのこと
950 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:22:12.11 ] >>947 Application.OnKeyメソッド
951 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:24:55.96 ] >>948 >送信ボタンを押す直前の状態までExcelのVBAで作ることは可能ですか? 可能 >Yなら、どうやりますか? >>2
952 名前:945 mailto:sage [2012/04/09(月) 23:51:26.07 ] >>946 たとえば、宣言部で Private Type AAA BBB As String CCC As String End Type Private Type ZZZ DDD As AAA EEE As String End Type としてやる。 で、プロシージャ内でユーザー定義変数を宣言。 すると、あまり意識せずに多次元配列状態を作り出せる。 Dim A As ZZZ A.EEE= "文字列" A.DDD.BBB="入れ子になってる" A.DDD.CCC="これも" With A Debug.Print .EEE With .DDD Debug.Print .BBB Debug.Pring .CCC End With End With この例だとしょぼいけど、似たような内容の変数が 10個も20個も出てくるときにものすごく整理しやすい。
953 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:52:18.64 ] >>950 出来ました。 ありがとうございました。
954 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/10(火) 10:47:52.39 ] End(xlUp)は、プロパティですかメソッドですか? トマトは、野菜ですか果物ですか? バナナはおやつに入りますか?
955 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 10:50:11.61 ] >>954 バナナは果物です
956 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 12:40:48.54 ] >>954 おやつやデザートとして食べるのが果物。 おかずとして食べるのが野菜。
957 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 12:43:10.21 ] 酢豚にパイナップルを入れるのは最近聞いたが 実際に見たことは無い
958 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 19:29:34.77 ] >>954 はウ菜、かつ、バ果者 である
959 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 00:10:58.62 ] End()はメソッドxlUpは定数
960 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 16:53:30.86 ] ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイルだけを開くにはどうすればいいですか? また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか?
961 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 17:07:23.19 ] >>960 > ある特定のフォルダ(例えば、デスクトップ\Test\A01\)にあるExcelファイルだけを開くにはどうすればいいですか? Workbooks.Open filename:="c:\foo\bar.xls" で特定のフォルダの特定のブックが開ける > また、そのフォルダにあるExcelファイルを開かずにその中のセルにある値をいくつか取り出すことは可能ですか? 不可能
962 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 18:00:41.70 ] >>960 「Excelファイルを開かずに」の「開く」の定義をもうちょっと明確にしないと答えられないよ
963 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 18:21:46.56 ] >>961 いや、そのフォルダにあるExcelファイルを全部開くという意味です。 そのときによってファイル名は毎回違う、みたいな。
964 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 18:25:47.31 ] >>963 Dir関数使えばいいよ
965 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 18:45:17.49 ] >>964 そのDir関数はなんのための関数?どうやって使うの?
966 名前:960 [2012/04/11(水) 18:45:46.25 ] そんな関数、本に載ってないからわからん
967 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 18:55:55.94 ] >>965 お前のExcelにはヘルプが無いのか?ネットに接続できるのにgoogleにはアクセス出来んのか?
968 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 19:03:23.94 ] 使ったことすらない。グーグルは邪道だ。
969 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 19:16:03.91 ] こんなとこで見も知らぬ他人にきくほうがよっぽど邪道だろ
970 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/11(水) 19:24:04.95 ] なんだと、このやろう
971 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 19:52:41.87 ] Exceは確定申告のために税額を計算するソフト それ以外の使い方は全部邪道
972 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 20:40:11.41 ] いきなり別のソフトの説明されても
973 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 21:18:22.13 ] 確定申告はそれ用のソフトがあるだろ エクセでやってる奴ってその程度のお金も出せない貧乏人なの?
974 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:11:36.36 ] エクセルのほうが高いだろ
975 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:12:54.75 ] エクセルはそれ以外の用途で買ってて入れてる奴が多い
976 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:24:07.49 ] ExcelVBAのスキルの前に、スルースキルを身につけろ
977 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:04:05.31 ] もともと表計算ソフトが税金の計算のために発明されたってのは本当の話