Excel VBA 質問スレ Part32
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/07(月) 22:19:55.86★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part31
http://toro.2ch.net/test/read.cgi/tech/1376371376/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0698デフォルトの名無しさん
2014/04/15(火) 14:08:55.72ID:s8o/Oo490699デフォルトの名無しさん
2014/04/15(火) 16:22:28.15ID:820VGCAb0700デフォルトの名無しさん
2014/04/15(火) 16:26:47.79ID:rPikCPob叩きたいだけだろ
0701デフォルトの名無しさん
2014/04/15(火) 23:40:57.35ID:Qecud56UC++にはあるけどJavaにもC#にも無いんだから
むしろ時代遅れの概念だろ。
0702デフォルトの名無しさん
2014/04/16(水) 04:06:05.87ID:LmxlsNa2「このアクションを実行するとプロジェクトがリセットされます。実行しますか ?」
このメッセージが出るようなコードを最初に強制的に行いたいのですが出来ませんかね。
>>693
再帰のときとかに使ってます。
0703デフォルトの名無しさん
2014/04/16(水) 08:30:53.84ID:C8nNiAQg> C++にはあるけどJavaにもC#にも無い
バカには使いこなせないということ (w
0704デフォルトの名無しさん
2014/04/16(水) 12:19:39.65ID:XF2c1vIXプロジェクトをリセットする方法は色々ある
基本的なことはここを参考に
http://www.moug.net/tech/exvba/0150116.html
0705デフォルトの名無しさん
2014/04/16(水) 23:01:53.26ID:2LoKKqcV>モジュールレベル変数の値が消えるとき
パブリック変数にしてた文字列が消えていたのはこのせいだったのかよーー
0706デフォルトの名無しさん
2014/04/17(木) 01:26:29.86ID:hQgHTHarStaticな変数ってクラスモジュールの
プロシージャで使ったらどんな動きするんだろ。
インスタンスごとに別々に用意されるのか、
それとも同じクラスで生成されたインスタンスのは参照先が同じになるのか。
後者だったら何か新たな使い道が生まれそうだけど、
それはそれでまた混乱の素になりそう。
0707デフォルトの名無しさん
2014/04/17(木) 01:55:46.12ID:oM/c/OYPそれはプライベットだぞ。
パブリックじゃないぞ。
というわけで、標準モジュールでの
プライベット変数とパブリック変数の
その使い方と使い分けや、注意すべきこと、どういうときにどれを使うかなど
その使用方法について詳しく教えていただけないでしょうか?
0708デフォルトの名無しさん
2014/04/17(木) 02:24:20.93ID:jEbNeAxo0709デフォルトの名無しさん
2014/04/17(木) 03:33:46.78ID:fX81VMtB>既存の標準モジュールやUserFormを解放(削除)すると、確認メッセージは表示されずにモジュールレベル変数の値がクリアされます。
そのページで手動ではない方法で実現出来そうなのは
実際には使わないダミーのモジュールをインポート後、すぐエクスポートしてプロジェクトをリセットするくらいですかね?
どうもありがとうございました。
0710デフォルトの名無しさん
2014/04/17(木) 03:43:12.52ID:fX81VMtB0711デフォルトの名無しさん
2014/04/17(木) 14:24:23.33ID:oM/c/OYPVBAで複雑なプログラミングをするときは
グローバル変数は使わずにどこかのセルに値を保存しておいたほうがよいということで
ファイナル認識でokか?
0712デフォルトの名無しさん
2014/04/17(木) 15:57:50.88ID:jEbNeAxo0713デフォルトの名無しさん
2014/04/17(木) 16:50:13.82ID:oM/c/OYP上記のことを総合判断するに
VBで複雑なプログラミングをするときは
グローバル変数はちゃんとリセットされずに値は保存されたまま使えるということで
ファイナル認識でokか?
0714デフォルトの名無しさん
2014/04/17(木) 18:10:20.16ID:f4TQPtNf0715デフォルトの名無しさん
2014/04/17(木) 19:03:25.75ID:GGrT4rnZ↑何これ?
0716デフォルトの名無しさん
2014/04/17(木) 23:11:26.77ID:K2VamZAF0717デフォルトの名無しさん
2014/04/18(金) 18:57:42.82ID:P9dU51g+0718デフォルトの名無しさん
2014/04/18(金) 20:27:06.81ID:pSxMtBxF0719デフォルトの名無しさん
2014/04/20(日) 10:29:25.89ID:LlR3PaQLコードを書いてるときや編集してるとき
画面が狭くモニターがあと縦横2倍、面積4倍くらい以上に大きくしてほしいとよく思います。
こんなとき役に立つツールみたいなのはないですか?
0720デフォルトの名無しさん
2014/04/20(日) 11:23:23.90ID:DYddObWG0721デフォルトの名無しさん
2014/04/20(日) 11:52:54.77ID:YSeiuWKu仮想デスクトップか。表示域そのものを広げたいなら、
モニタ買い替え又はどこかからモニタを調達してきて>>720。
VBAでどうこうできる問題ではないと思う。
0722デフォルトの名無しさん
2014/04/20(日) 13:42:35.59ID:kzevG+UG表示される行数、文字数を増やすには、画面を大きくするか字を小さくするしかない
どっちがお望み?
画面を大きくするにはモニターの買い換えか増設、ソフトでやるなら仮想デスクトップ
字を小さくするのは画面のプロパティをいじったり設定でモニターのdpiを上げたりVBEのフォントを変えたり
http://www.max.hi-ho.ne.jp/happy/YNxv1.html
テキストエディタを使ったり
0723デフォルトの名無しさん
2014/04/21(月) 00:23:00.62ID:+JF1MRhAつまり大元のSub Testの中を、
Test_Sub1、Test_Sub2、Test_Sub3、Test_Sub4、Test_Sub5くらいの5つの部分に分けるみたいな感じです。
しかしここで問題が。
Test_Sub1に分けても、大元のTestで宣言した変数がこのTest_Sub1の中でたくさん使われています。
改めてこのTest_Sub1内で変数を宣言すると
大元の変数とは全く関連のない新しい独立した変数とみなされますよね?
そうするとコードを分割して可読性・メンテナンス性を良くするのって不可能じゃないですか?
みなさんはこのへんはどうやってやってるんでしょうか?
0724デフォルトの名無しさん
2014/04/21(月) 00:36:42.27ID:UsKDZ0RZそれは元の設計とか分け方が悪い
Sub1、Sub2なんて名前の付け方からしておかしい
きちんと機能ごとに分けて、処理内容がわかるような名前を付ける
機能が限定されれば必要な変数も限られるから、最小限の変数だけをプロシージャの引数として渡すようにする
0725デフォルトの名無しさん
2014/04/21(月) 00:48:02.52ID:+JF1MRhA当然ほんものは役割にちなんだ名前になってるよ。
やっぱり「最小限の変数だけをプロシージャの引数として渡す」というのが回答なんですね。
そんな気がしてたんだわ。
でもいまから改造するとしたら
もうすでに人間の内臓と血管と骨のように
変数やらなんやらが複雑に入り組んでるので
なにかすこしでも改変しようとすると
人間のたとえでは大出血で死亡してしまうように
コードでエラーが出まくったり全く意図してない動きをしそうですわ。
こういうようにならないようにするためには
ふだんからどういうコードを書くように心がけたらいいですか?
0726デフォルトの名無しさん
2014/04/21(月) 01:01:29.41ID:UsKDZ0RZ普段からモジュールを小さく分けて変数のスコープも最小限にする
0727デフォルトの名無しさん
2014/04/21(月) 01:09:39.31ID:UsKDZ0RZコメントを入れたくなったら、その部分はプロシージャに分ける
っていうのは初心者にはわかりづらいかなあ
中級者になってくると「ここにはコメントを入れよう」って思うタイミングが必ず出てくるんだよね
経験上、コメントを入れておかないとあとで保守するのが大変になるぞ、って部分が
だんだんわかるようになってくる
そういう処理はプロシージャとして別にしておいた方が保守性が上がることが多い
0728デフォルトの名無しさん
2014/04/21(月) 08:41:09.76ID:Q9CWt8FHホントこれに尽きるよね。
0729デフォルトの名無しさん
2014/04/22(火) 01:28:33.70ID:DlZvN0RFプロパティだけのクラス作ってそれを引数で渡せば最小限の引数で済むけど、
そもそも最初にどうすれば使い回しがきいて
且つ修正する時に他に影響を与えることなく
出来るだけ手を入れないような組み方が出来るか考えながら組まないと。
たまにデザインパターンの本とか読んでおけば少しは役に立つかもよ。
0730デフォルトの名無しさん
2014/04/22(火) 09:49:30.62ID:xWC4qOoOデザインパターンの本とはどういう本ですか?
本当にプログラミングに関係する本ですか?
0731デフォルトの名無しさん
2014/04/22(火) 10:03:28.89ID:W0hXuU4Ohttp://e-words.jp/w/E38387E382B6E382A4E383B3E38391E382BFE383BCE383B3.html
デザインパターン 【 design pattern 】
プログラム設計時に起こる典型的な問題とそれに対する解決策を整理し、再利用できるようにまとめたもの。
1995年に出版された書籍「デザインパターン」の中で23のパターンが解説されたのをきっかけに広まった。
ソフトウェアを設計していると、多くのソフトウェアが共通して持っている機能や問題があることに気づくことがある。
それらの問題を解決するために毎回0から設計していては効率が悪いため、多くのプログラマは経験を積むうちに
「こういった問題を解決するには、こういう構造のプログラムを書けばいい」というノウハウを蓄えていくことになる。
それらのノウハウを他人が参照できるように明示的に整理したものがデザインパターンである。
問題と解決策とを一組として、「Stateパターン」などそれぞれに名前が付けられる。オブジェクト指向とパターン化との
相性がいいためか、オブジェクト指向プログラミングの分野で用いられることが多い。
0732デフォルトの名無しさん
2014/04/22(火) 10:03:51.12ID:o3KBIfuW何か一昔前の流行り言葉を並べただけの厨ニ病的発言に見えるけどマジオススメ。
でも、リファクタリングに関する本て無くなっちゃったよね。
0733デフォルトの名無しさん
2014/04/22(火) 11:41:19.93ID:z8WHMXPV0734デフォルトの名無しさん
2014/04/22(火) 11:48:32.57ID:Edo2b+/a所詮はOOP初心者へのお勉強向けのものなんだから、
丁度いいくらいなんでないの。
0735デフォルトの名無しさん
2014/04/22(火) 12:55:30.89ID:z8WHMXPV0736デフォルトの名無しさん
2014/04/22(火) 13:47:36.00ID:0UJjYfLYhttps://www.youtube.com/watch?v=wia_sFsAf6g
0737デフォルトの名無しさん
2014/04/22(火) 14:57:43.47ID:QveWaMVIとあるときに
引数 a に byval が付いてるときと付いてないときで動作は変わらないのですか?
あと関数そのものの戻り値にも byval とか byref とか書きたいのですが
どこに書けばよいのかわかりません ><
0738デフォルトの名無しさん
2014/04/22(火) 17:16:32.90ID:DwFEDI7c近代的なデザパタってあるの?
0739デフォルトの名無しさん
2014/04/22(火) 23:10:43.79ID:VyvjcPd+> 引数 a に byval が付いてるときと付いてないときで動作は変わらないのですか?
変わる。
> あと関数そのものの戻り値にも byval とか byref とか書きたいのですが
なんのために?
書くだけなら適当に戻り値の型名の前辺りに書けばいい
0740デフォルトの名無しさん
2014/04/23(水) 00:49:20.82ID:ZM+hJQpr0741デフォルトの名無しさん
2014/04/23(水) 07:39:11.68ID:gw4Yr7wD0742デフォルトの名無しさん
2014/04/23(水) 08:03:24.27ID:Ce2w8hBu単に変数のアドレスってだけだろ?
・概念が分かりづらい
・難易度が高い
・これで挫折した人多数
こんな評判ばかりが先行して覚悟して勉強し始めたけど
単に変数のアドレスってだけで全然難しくないじゃないか。
0743デフォルトの名無しさん
2014/04/23(水) 08:17:33.81ID:x9LZX8vX0744デフォルトの名無しさん
2014/04/23(水) 08:18:54.85ID:x9LZX8vX0745デフォルトの名無しさん
2014/04/23(水) 08:35:15.29ID:jWa014pDその「アドレス」がわからないやつがいるんだよ
CPUやメモリの仕組みなんて知らなくても、マクロの記録とコピペさえ覚えりゃなんとなく動く物ができちゃうし
独学で参考書を拾い読みしかしてないと2進数16進数も知らなかったりする
0746デフォルトの名無しさん
2014/04/23(水) 10:29:13.37ID:6DXUFUqF思い通り動かなかったときに「これはポインタ様の仕業じゃ!」と特定できる経験値があれば問題ない
0747デフォルトの名無しさん
2014/04/23(水) 12:39:28.71ID:+BZatqFA0748デフォルトの名無しさん
2014/04/23(水) 13:00:46.08ID:x9LZX8vX> ポインタってなにが難しいのよ?
使うのが難しい、と言うか面倒なんだよ。
ポインタ自体とそれが指す先の両方を意識しないといけないから。
まあ、C++ ならテンプレートライブラリでだいぶ改善されたけど。
0749デフォルトの名無しさん
2014/04/23(水) 13:09:46.59ID:6DXUFUqFその現実をはっきりくっきり突きつける役目をポインタが担っているというだけ
0750デフォルトの名無しさん
2014/04/23(水) 13:13:16.20ID:ZM+hJQpr0751デフォルトの名無しさん
2014/04/23(水) 23:58:36.04ID:jVwNMIQL0752デフォルトの名無しさん
2014/04/24(木) 14:00:15.27ID:ZALVHb/C500行以上の長文コードがあって
その中には当然のことながらCells( X , Y )のようにCellsプロパティでセルの場所を指定してる箇所が大量にあります。
でもシートの行なり列なりを丸ごと削除するとします。
すると当然Cells( X , Y )で指定してた箇所は影響される箇所はすべて変更しなきゃならないじゃないですか?
こういう作業はどうやってやります?
まさか1つ1つ手作業でやるわけにはいかないでしょう。
ツールやいい方法はありますか・
0753752
2014/04/24(木) 14:02:04.53ID:ZALVHb/C1行消したら影響されるところだけRow座標を-1にずらさないといけないし
1列消したら影響されるところだけColumn座標を-1にずらさないといけないし
という意味。
0754デフォルトの名無しさん
2014/04/24(木) 18:02:51.70ID:NeL4TUu8その例でいけばCells( X , Y )を使う全ての個所が影響を受けるわけではなく
X,Yに値を設定してるところだけが影響を受けるということも考えられるが
その場合は、X,Yに直接値を指定するのではなく、定数や設定から読み込むようにしておく
そうすればその定数や設定を変えるだけで済む
プログラム作る時に、そう言う(シートの行や列がずれる)事を考慮して、
その場合でも1か所直せば対応できるように作る
エクセルに限った話でいくなら、セル(範囲)に名前つけてその名前でアクセスするとかもあるけど
0755デフォルトの名無しさん
2014/04/24(木) 18:33:28.46ID:ZALVHb/Cなるほど予防は分かりました。
これからはそうします。
ではもうすでにそういうコードをつくってあって
それを今後のメンテナンス性も考慮して
これを機会にすべてのCells( X , Y )を作り変えることにした場合
それを効率良く確実にしかも正確にすばやくやるにはどうしたらいいでしょうか?
0756デフォルトの名無しさん
2014/04/24(木) 19:33:04.48ID:pR4axH5T0757デフォルトの名無しさん
2014/04/24(木) 19:36:00.94ID:ZALVHb/C0758デフォルトの名無しさん
2014/04/24(木) 19:42:02.91ID:nXU9pvpI0759デフォルトの名無しさん
2014/04/24(木) 22:08:50.86ID:jL+soUD3禿同、全く難しくもない。
昔はBasicですらアドレス意識しないと書けなかった
型すら難しいとか言ってるゆとりが出てきてビビるわ
0760デフォルトの名無しさん
2014/04/24(木) 22:47:29.72ID:nXU9pvpI0761デフォルトの名無しさん
2014/04/24(木) 23:37:36.94ID:Nchd47HCでもN-BASICとか使ってたなら、
絵動かしたり無理矢理音楽奏でたかったりするときは必須だったかな。
当時はOSという概念もなくて直でハードの機能使うことが多かったから
アドレスとか番地とか言われたとき、何のことか瞬時に分かる人多いよね。
もう間違いなくじじいだけれど。
0762デフォルトの名無しさん
2014/04/25(金) 00:17:31.54ID:97MfQF5yそういう意味で言ってるのなら>>759の書き方には違和感を覚える
単に昔はそういう予備知識も必要だったってだけで、BASICそのものの言語仕様とはほとんど関係ないしね
0763デフォルトの名無しさん
2014/04/25(金) 00:45:07.04ID:G8DiTS3Xまあ、それ以外にアドレス意識する命令は知らないが
0764デフォルトの名無しさん
2014/04/25(金) 00:55:38.91ID:97MfQF5yN88で追加されたのがVALPTR
ほかにもあったような気がするけど、思い出せん
0765デフォルトの名無しさん
2014/04/25(金) 01:10:49.24ID:rO2W6PbIhttp://d.hatena.ne.jp/fukenko/20130916
0766デフォルトの名無しさん
2014/04/25(金) 08:31:05.76ID:b5ACRTEI0767デフォルトの名無しさん
2014/04/25(金) 10:26:45.88ID:CzawWySKタブブラウザ使ってるときの各タブってどうやって指定するのです?
0768デフォルトの名無しさん
2014/04/25(金) 12:24:40.84ID:CzawWySK呼び出すときにメソッドみたいにunko:=20, manko:=30みたいにして残りの指定しなかったものはデフォルト値を設定したいとき
そのデフォルト値の設定も含めてどうやればいいですか?
0769デフォルトの名無しさん
2014/04/25(金) 13:11:16.38ID:8Eh10mjwOptional
0770デフォルトの名無しさん
2014/04/25(金) 13:24:00.47ID:CzawWySK0771デフォルトの名無しさん
2014/04/25(金) 14:34:17.80ID:CzawWySKこのとき、
(1) そのセルをobjectとして引数でSunに渡す (Sunの中ではobjectをいじって調べる)
(2) そのセルをアクティベートして引数なしでSubに渡す(Subの中ではActivecellを調べる)
どちらが好ましいですか?
とくに似たような状況のときアクティベートしたくないときが多々ありますがそんなときは(1)しか方法はないのでしょうか?
(単純化して質問しましたが実際はもうちょっと複雑ですが)
0772デフォルトの名無しさん
2014/04/25(金) 20:22:52.70ID:97MfQF5y普通はRangeオブジェクトを引数として渡す
0773デフォルトの名無しさん
2014/04/25(金) 21:16:58.96ID:yqP+DIa+もちろんどちらがいいかと言えば(1)。
一々Activateを調べるとか訳わからない。
CellをObjectとして引数でって言うのも、どうやるつもり?
Rangeオブジェクトを引数で渡す方法もあるけど、
前レスにあった、出来るだけ今後のことを考えるなら、
最初はちょっとこった作りが必要。
0775デフォルトの名無しさん
2014/04/25(金) 22:08:42.21ID:yqP+DIa+たとえばだけど、
まず、Cell情報クラスを作ります。
これはセルの位置情報を抱えておいて、
A1形式、R1C1形式のどちらでも設定出来て、
どちらの形式からでも引き出せるようにしておきます。たとえばString型の"A2"をしまったら
Long型の2と1を引き出せる様に。
次にRange情報クラスを作ります。
今度はRangeオブジェクトを貰ったら、その左上と右下の情報を上記のCell情報クラスに抱えたり、取り出したり、
そのCell情報クラスの情報からRangeオブジェクトを取り出したり出来る様にします。
更に上位のクラスとして、ブックやシートを保持してCell情報クラスやRange情報クラスから
位置情報を取得して、どのブックのどのシートの、
どのセルや範囲を処理対象にするのかを取り出せるクラスを作ります。
後は取り出した情報からどうにでも弄ればいいです。
こんな感じでこまごまと部品化しておけば、
次回違うプログラムを作る時も、その部品を使えばいいので楽です。
0776デフォルトの名無しさん
2014/04/25(金) 22:37:19.84ID:G8DiTS3X0777デフォルトの名無しさん
2014/04/25(金) 22:57:46.98ID:yqP+DIa+まずブックの情報を抱えられるところから違う。
クラス内で抱えるから引数で渡す時もクラス一つですむ。
クラス内の処理は隠蔽化出来る
ので、一々外でこねくり回しながら
後で使い回しのきかないロジックにならなくて済む。
0778デフォルトの名無しさん
2014/04/25(金) 23:43:25.53ID:G8DiTS3XRange継承して独自処理追加したクラス作るって考え方はあるが
VBAでそれが良いやり方かと言うと、VBAで継承は....
Rangeを内包するクラスを作ることを否定はしないが
すくなくともその例のRange情報クラスとかCell情報クラスとかはないんじゃない
データの引きまわしにクラス使う事も否定しないが、クラス内の処理が隠蔽できることと
引数にクラス渡す事はあんまり関係がない
0779デフォルトの名無しさん
2014/04/25(金) 23:59:24.15ID:m8ZXioec★zipファイルの「阪神無」ディレクトリ以下
「平成26年2月」の数値未発表で一部合計値比較不可能の為
平成26年1月〜平成13年4月は以下路線の各駅を合計・増減から除外して再計算。
「阪神」─「本線」「なんば線」
★zipファイルの「阪神有」ディレクトリ以下
除外せず、「平成26年2月」の未発表数値を前年同月と同一と仮定
平成24年4月〜平成26年2月 [2014年4月24日]
http:〃www.city.osaka.lg.jp/toshikeikaku/page/0000020916.html
http:〃www.city.osaka.lg.jp/toshikeikaku/cmsfiles/contents/0000020/20916/6-2.xls
平成24年3月〜平成13年4月 [2013年6月4日]
http:〃www.city.osaka.lg.jp/toshikeikaku/page/0000164566.html
http:〃www.city.osaka.lg.jp/toshikeikaku/cmsfiles/contents/0000164/164566/12-6.xls
0780デフォルトの名無しさん
2014/04/26(土) 00:16:58.54ID:QnRpwcSp本屋でみるVBAの本には一切記載がないと思うんですが。
標準モジュールの下にあるクラスモジュールっていうの使うの?
0781デフォルトの名無しさん
2014/04/26(土) 00:36:21.25ID:/0bFGV1l0782デフォルトの名無しさん
2014/04/26(土) 01:03:15.45ID:m5B7q/+H継承は確かに便利だけど、
それも時と場合によってそれを使うことが
本当に望ましいのか判断しないといけない。
ましてやVBAはインターフェイスはあっても継承が使えないという不思議な言語だから
コンポジションとか結構重要だよ。
0783デフォルトの名無しさん
2014/04/26(土) 10:46:40.74ID:3e8mN1Ca単なるユーティリティレベルのサブルーチン集で充分なのに、わざわざクラスにしてどやってやってるだけでしょ
そのうち我に返るだろうから、スルーで桶
0784デフォルトの名無しさん
2014/04/26(土) 18:04:27.56ID:m5B7q/+H纏めて設定しておいて、実際にシートに書く時の処理と切り分けをすることも
出来るようにするという思慮もあるんだよ。
たかがクラスをちょっと持ち出したくらいでまるでトラウマのように火病る人っているよね。
普段使っている標準モジュールですらシングルトンのクラスでしかないというのに。
0785デフォルトの名無しさん
2014/04/26(土) 18:55:20.55ID:QnRpwcSp0786デフォルトの名無しさん
2014/04/26(土) 18:59:29.87ID:oNLUt8q50787デフォルトの名無しさん
2014/04/26(土) 19:08:57.24ID:QnRpwcSpSheet1はA1に
Sheet2はA2に
Sheet3はA3に
それぞれ選択状態にしておいた場合
その各シートで選択されているセルのアドレス情報をGETするにはどういうコードでできますか?
以前、オブジェクトブラウザかなにかをいろいろいじってたらその方法を発見したんだけど
忘れちゃった。
0788デフォルトの名無しさん
2014/04/26(土) 21:44:20.29ID:ckss0nAaDim R As Range
Worksheets("Sheet1").Activate
Set R = ActiveWindow.RangeSelection
0789デフォルトの名無しさん
2014/04/27(日) 14:04:43.35ID:stnFSHd/画面2画面分ぐらいの横長な表ですがjpegやgifで書き出して保存したいのですがVBAでも問題ありません
宜しくお願い致します。
0790デフォルトの名無しさん
2014/04/27(日) 14:45:53.20ID:R2zgl6Dy作るの難しそうですね。PDFにするなら
2010ぐらいからExportAsFixedFormatがあるのですが。
セル選択範囲を、アクティヴウィンドウ内での短形範囲の
位置情報としてとして抽出でき、
WinAPIに渡せるか、といったところじゃないでしょうか。(予想)
さらにそのビットマップをJPEG,GIFに変換する何かが必要そうですね。
便利そうなのでわたしも欲しいです。
0791デフォルトの名無しさん
2014/04/27(日) 14:56:22.49ID:oLsNKogN0792デフォルトの名無しさん
2014/04/27(日) 15:18:12.29ID:SP8zGQAF仮想プリンターというアプリを使うと、巨大な紙に印刷したつもりで画像ファイルにできる
0793デフォルトの名無しさん
2014/04/27(日) 15:19:47.28ID:R2zgl6Dy素晴らしい
0794デフォルトの名無しさん
2014/04/27(日) 15:37:15.92ID:SP8zGQAF実際にはこういう巨大な画像ファイルが保存される
http://rosa-chinensis.sun.ddns.vc:8080/cgi-bin/up2/src/RC20588.png
もっと大きな紙も選択できるけど、設定を間違えると巨大すぎて開けない画像ファイルができちゃうので注意
0795787
2014/04/27(日) 19:21:53.39ID:wIC7n1Em違う。
いちいちそのシートをActivateしなくてもそのシートの隠れたActiveCellを取得するほうほうを昔大発見したんだ。
いったいどうやるんだったっけ?
そのActiveWindowというプロパティをいじったような気もするようなしないような・・・
0796デフォルトの名無しさん
2014/04/27(日) 19:40:21.18ID:rjAzuBFb[A1]から縦に5つ入力した文字を”▲”を挟んで連結する処理を
作りたいんだけど、入力途中で「コンパイルエラー、修正候補:
ステートメントの最後」ってエラーがでる。
次のようにコードを入力していて、最終行を入力して決定キーを押した
時点でそのエラーが出るんだけど、何が間違ってるのか分からない。
どなたがご教示頂けると幸いです。
sub mojirenketsu()
Dim renketsu As String
Dim i As Integer
renketsu = ""
For i = 1 To 5
renketsu=renketsu&cells(i,1).value&"▲" ←これを入力した時点でエラー
0797デフォルトの名無しさん
2014/04/27(日) 19:50:23.93ID:R2zgl6Dy動いたよ。
どのワークシートのCellsなのかが不明なのでは。
ValueかTextかは別に関係ないかな
For文の後ろは書ききれなかっただけ?
Sub Renketsu()
Dim str As String
Dim i As Long
str = ""
For i = 1 To 5
str = str & Me.Cells(i, 1).Text & "▲"
Next i
MsgBox str
End Sub
0798デフォルトの名無しさん
2014/04/27(日) 19:57:39.29ID:R2zgl6DySub Renketsu2()
Dim str() As String
Dim i As Long
For i = 1 To 5
ReDim Preserve str(i - 1)
str(i - 1) = Me.Cells(i, 1).Text
Next
MsgBox Join(str, "▲")
End Sub
■ このスレッドは過去ログ倉庫に格納されています