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/
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 ] もともと表計算ソフトが税金の計算のために発明されたってのは本当の話