Excel VBA 質問スレ Part36 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2014/12/28(日) 07:18:52.51ID:jXo1P+zk___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人は別スレ建ててください。
※前スレ
Excel VBA 質問スレ Part35
http://peace.2ch.net/test/read.cgi/tech/1414186311/
※頭のレスの方でキチガイが束縛テンプレを貼る詐欺行為が前スレまで散見されましたので、十分にご注意ください。
0002デフォルトの名無しさん 転載ダメ©2ch.net
2014/12/29(月) 22:03:43.98ID:8KDlrwKz板復帰(OK!:Gather .dat file OK:moving DAT 426 -> 424:Get subject.txt OK:Check subject.txt 426 -> 424:Overwrite OK)load averages: 0.69, 0.93, 0.97
sage subject:424 dat:424 rebuild OK!
0003デフォルトの名無しさん
2014/12/30(火) 14:09:30.86ID:cQa86VGRうるさいよ
0004デフォルトの名無しさん
2015/01/07(水) 22:07:57.43ID:0eah282z0005デフォルトの名無しさん
2015/01/14(水) 22:20:08.05ID:Xuc5GVH9Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1420790342/l50
0006デフォルトの名無しさん
2015/01/15(木) 09:38:12.17ID:9RvUPi7Wそっちはテンプレ改悪で使いづらい
こっちでいいよ
0007デフォルトの名無しさん
2015/01/15(木) 18:48:13.20ID:Oh+UDtkh0008デフォルトの名無しさん
2015/01/16(金) 01:07:22.96ID:sWLkYVWD残念じゃねーよ、後から立てた重複スレなんだから削除依頼出すか次に使うのがスジだろボケが
0009デフォルトの名無しさん
2015/01/16(金) 15:16:11.16ID:MA1v3jsm消えろ
0010デフォルトの名無しさん
2015/01/17(土) 01:05:49.03ID:pPtCgDJH何で二重に建てたん?
しかも二週間もあとに(笑)
0011デフォルトの名無しさん
2015/01/18(日) 10:17:39.29ID:wo+YRjYB今、幾つかのブックを開いて一つのブックのあるシートに集計するロジックを作っているのですが、
@サーバーに置かれている、開く対象のブックが、既に他者に開かれていることを知る方法はありますか?
また、それは共有のブックでも可能ですか?
Aあるセルの範囲をコピーして、他のブックのシートに貼り付けるときは貼り付け先をActivateにしなければ
いけないと聞きました。それって外部から触れる可能性が無い作りに出来ると言うことでしょうか?
B今、開く対象のブック、シート単位でそれをコントロールするクラスを作っていますが、
それらのクラスで同じ役割のメソッドを纏めるためにインターフェースを使っています。
ですが、同じような処理を行うため、VB.NetやC#で言う継承が使えません。インターフェース継承って何ですか?
どうすればVB.Netで言うところの継承と同じようなことが出来ますか?
0012デフォルトの名無しさん
2015/01/18(日) 21:10:38.35ID:GIXEH9nI@
共有ブックを開いているユーザーを調べる
http://officetanaka.net/excel/vba/tips/tips99.htm
A言ってる事が分からない
B自分の知識レベルでは回答不能
0013デフォルトの名無しさん
2015/01/18(日) 21:29:42.13ID:NXagbm7V@
ここに載ってる。
http://officetanaka.net/excel/vba/tips/tips99.htm
A
心配なら処理中はApplication.ScreenUpdating=Falseで画面を固めて触らせないようにすればいい。
それでも心配なら、開いたときにブックなりシートなりのオブジェクトを抱えておいて、
貼り付ける直前でActivateにするなり、Activateになっているかチェックするなりすればいい。
B
VBAのインターフェースは、使い方は.Netのインターフェースのそれと同じで、.Netで言う継承は使えないと考えていい。
同じ処理を実行したいなら、ベースになる別クラスを作ってそこに共通メソッドを作り、
各クラスからそのメソッドを呼び出すようにする。その際、引数やプロパティを渡すことで同じコードでも
違う振る舞いを行うように作ることで代用する。俗に言う処理の移譲を行う。
0014デフォルトの名無しさん
2015/01/18(日) 22:36:28.82ID:oufbqCEsどしたの?
47 :デフォルトの名無しさん:2015/01/18(日) 02:21:02.84 ID:wo+YRjYB
ボタンを押したと同時に死ねばいいよ
0015デフォルトの名無しさん
2015/01/18(日) 22:37:55.82ID:wo+YRjYB>>13
ありがとうございます。何とかなりそうです。
厚かましいかも知れませんが、もう一つ質問しても良いでしょうか。
>>13さんの言ってる方法で作るとして、どうせ継承が使えないのなら、
各ブック、シートのコントロールクラスを
シングルトンパターンで作成したいと考えています。
ところがVBAにはSheardのようなものも無ければ、
コンストラクタに引数を渡すことも出来ないみたいなんです。
通常のモジュールを使えばインターフェースが使えなくなりますし、
何か良い方法はありませんか?
0016デフォルトの名無しさん
2015/01/18(日) 23:16:10.30ID:NXagbm7Vなるほど、どうやらVB.Net使ってるみたいだね。
方法としてはちょっと面倒だけど、標準モジュールを介在させて、標準モジュール側で初期化メソッドを作って、
それに引数を渡すようにして、その中でコントロールクラスとやらを生成したり、
引数で初期化するような処理を書いておけばいいんじゃないかな。
で、その標準モジュールでGetInstanceみたいにインスタンスを取得するメソッドを書いておけば、
取得される型はインターフェースでも使えるはず。
考えればもっといい方法もあるかも知れないけど、とりあえずぱっと思い付いたところだとそんな感じ。
0017デフォルトの名無しさん
2015/01/18(日) 23:28:09.72ID:wo+YRjYBありがとうございます!
ちょっとそれでやってみます。
また分からないことが出てきたら宜しくお願いします。
0018デフォルトの名無しさん
2015/01/19(月) 23:18:01.86ID:0AwM+hCrどったの?
あっちのスレが使われると何かくやちいことがあったの?
47 :デフォルトの名無しさん:2015/01/18(日) 02:21:02.84 ID:wo+YRjYB
ボタンを押したと同時に死ねばいいよ
0019デフォルトの名無しさん
2015/01/19(月) 23:58:08.62ID:MW0jYfdq0020デフォルトの名無しさん
2015/01/21(水) 00:57:45.53ID:eRu+vB0J0021デフォルトの名無しさん
2015/01/22(木) 01:16:33.19ID:hYET/dI2あれって検索する速度遅すぎませんか?
大文字小文字の区別とか全角半角の区別や、完全一致や部分一致、
複数箇所の検索とかを考慮して自分で作っても、Findで検索すると1時間くらい掛かっていたものが
セルの値を配列に入れて検索すると1分も掛からなかったりします。
Findメソッドの存在意義って何ですか?
0022デフォルトの名無しさん
2015/01/22(木) 01:35:05.28ID:BH2riox/そういうのを自分で作れない人の方が圧倒的に多いので需要は十分にあります
0023デフォルトの名無しさん
2015/01/22(木) 05:38:10.64ID:vsxHNAsj一瞬で終わる量なら重宝するだろうという想像力はないんですか?
って質問は愚問か。無いから質問してるんだもんな。可哀想に
0024デフォルトの名無しさん
2015/01/22(木) 14:28:35.88ID:cZlOLLyd0025デフォルトの名無しさん
2015/01/22(木) 20:47:49.75ID:op5QAFZqセルの数式も検索してから言え
0026デフォルトの名無しさん
2015/01/23(金) 01:49:17.02ID:4gDSibKt愚問ですね。一度関数化してしまえば以降の労力は変わらない。
量が多くなれば使えなくなるようなものを何でずっと引きずってなければならないんです?
>>25
配列にしまう際に数式をしまえばいいだけでしょ?それを差し引いても全然レスポンスが違いますよ。
0027デフォルトの名無しさん
2015/01/23(金) 02:44:24.36ID:mWbfYiffすごく雑に言うけど、一万円札があるんだから他のお札は存在意義なくね?って言ってるんすよ君は。
findよりスゴいの出来た!
↓
誰かに「良くできました」の判子を押してもらってこの話は終わり。
それか自信たっぷりにMSに「find改をVBAで書きました。よかったら次期のMS officeのfindと置き換えてください。」って連絡でもしなよ。
0028デフォルトの名無しさん
2015/01/23(金) 03:23:20.99ID:AkvDem9mほんとにFindと同じ事を、Findより圧倒的に速くやれるなら
ぜひコード公開してくれや
0029デフォルトの名無しさん
2015/01/23(金) 06:04:46.45ID:kLOpfBTAその後に、配列のソート・検索の速度があがったのかも。
ソートだって最近は、Tim Sort を使うものが多いらしい
0030デフォルトの名無しさん
2015/01/23(金) 09:47:48.83ID:HpxWu8WKできるなら使いたい
公開して
0031デフォルトの名無しさん
2015/01/23(金) 14:20:33.62ID:9aT4HWHH何となく作ってるけどw
0032デフォルトの名無しさん
2015/01/23(金) 14:28:02.94ID:s6a4y7QT同じ意味で使われる場合もあるし
VBAじゃないマクロもあるし
オレもよく判らないな
0033デフォルトの名無しさん
2015/01/23(金) 14:30:02.99ID:xwefCwREVBA以外にも、Excel 4.0マクロというのがかつて(今も?)あった。
0034デフォルトの名無しさん
2015/01/23(金) 14:31:49.11ID:xwefCwRE0035デフォルトの名無しさん
2015/01/23(金) 14:59:50.70ID:9aT4HWHHんで、そのマクロの記録で出来たものをちょちょっと修正して…
みたいな
>>33
マクロの上位に位置するもの…みたいな感じなんですかね
0036デフォルトの名無しさん
2015/01/23(金) 15:16:19.37ID:UJ+zCl8qそれを実現する「手段」の一つがVBA
なので、文章を正確に書くとしたら「VBAでマクロを作る」のようになる
体系的に見れば同じ物を指していると言えるので、
略して「VBAを作る(書く)」と書いても、文法上はまったく問題がない
結局はどっちでもいい。通じればいい
0037デフォルトの名無しさん
2015/01/23(金) 15:25:19.26ID:xwefCwRE003831
2015/01/23(金) 15:57:05.99ID:9aT4HWHH0039デフォルトの名無しさん
2015/01/23(金) 16:46:37.80ID:UJ+zCl8q日常でもまれによく見られるし、いちいち「VBAは作らない」なんて反論をする方が変人扱いされる
0040デフォルトの名無しさん
2015/01/23(金) 17:16:09.54ID:xwefCwRE〜をするVBを作った。
〜をするC#を作った。
〜をするC++を作った。
〜をするJavaを作った。
すごい違和感あるんだけど。
0041デフォルトの名無しさん
2015/01/23(金) 17:34:05.23ID:s6a4y7QT違和感あるけど指摘はしないな
これも同様 → "まれによく見られる"
オレは絶対言わないけどね
0042デフォルトの名無しさん
2015/01/23(金) 17:46:48.45ID:xwefCwRE0043デフォルトの名無しさん
2015/01/23(金) 19:23:37.56ID:AkvDem9mVBAマクロを作る、だとおかしくはないだろ
まれによく見られるは2chスラング
0044デフォルトの名無しさん
2015/01/24(土) 00:39:03.67ID:qV60IszQ昔の名残り
エクセルer向けがマクロで、プログラマ向けがVB
すぐにofficeのVBAが強化されて今に至る
マクロは簡単な処理で終わってた
0045デフォルトの名無しさん
2015/01/24(土) 03:27:26.88ID:4KWVQwlIアセンブラの時代から複数の処理を纏めて記述するという概念で存在する。
今でこそマクロと言えば広域でVBAのことを指すことが多いけど、4.0とか言うならもっと前がある。
0046デフォルトの名無しさん
2015/01/24(土) 03:55:07.45ID:OYkQ2I8v0047デフォルトの名無しさん
2015/01/24(土) 06:48:33.13ID:bCSfcL8Kマクロの記録→プロシージャが作成される
なるほどね。
○○をするマクロをVBAで組みました
○○をするマクロをVBAで作りました
○○をするVBAを作りました
○○をVBAで組みました
○○をVBAで自動化しました
○○作業をVBAでワンタッチちょりーっす
くそどうでもいいな
0048デフォルトの名無しさん
2015/01/24(土) 07:58:03.50ID:4WzAA3v6広義ね
0049デフォルトの名無しさん
2015/01/24(土) 08:11:21.41ID:qV60IszQテレビはそもそも液晶の時に出来た概念じゃ無いよ。
ブラウン管時代から家庭で映像を流すために存在する。
今でこそテレビと言えば広域で液晶テレビのことを指すことが多いけど、TFTとか言うならもっと前がある。
0050デフォルトの名無しさん
2015/01/24(土) 10:17:55.45ID:LdIBiv/Jんなアホな
アセンブラでもサブルーチンはあるぞ
どっちかって言うとアセンブラのマクロは C の #define
0051デフォルトの名無しさん
2015/01/24(土) 10:31:47.17ID:qV60IszQなので>>45が言ってるのとは言葉は同じでも意味が違う
0052デフォルトの名無しさん
2015/01/24(土) 13:51:58.07ID:4KWVQwlIそこは俺も突っ込もうかと思ったけど、どういうものかはともかく、どうしてそういうものがあるのか
説明しろと言われたら面倒臭いから黙ってたw
0053デフォルトの名無しさん
2015/01/24(土) 14:45:28.64ID:4KWVQwlIその名残りでVBAにも有るんだよね。昔のサブルーチンは今の関数やメソッドに該当するから>>50の人の表現は
正しいんだけど、じゃ、今のGOSUBは何に当たるのかと言われると、
関数の中に関数があるような、何とも言えない存在になっている。
ま、考えれば使い道あるんだろうけど、分かり辛くなりそうだし、余り使う機会なさそう。
0054デフォルトの名無しさん
2015/01/24(土) 15:43:59.02ID:qV60IszQ分かって無いだろ(笑)
0055デフォルトの名無しさん
2015/01/24(土) 18:58:43.30ID:4KWVQwlIマクロ命令で纏まったオペランドがぽっこり追加されてアセンブルされるか、
EXCELで操作した内容がぽっこりコードに追加されるかの違いなだけ。
何をもってして分かっていないかということについては確かに分かっていない。
どこ?
0056デフォルトの名無しさん
2015/01/24(土) 19:19:42.87ID:qV60IszQアセンブリのマクロはプリプロセッサで置換整形された後コンパイル(アセンブル)。
同じモノを纏める、かつサブルーチン化のプロセスを除く手法
EXCELのマクロは素人が記録で読み取りプログラムに自動変換するもので、素人でもモノを作れる手法
名前は同じだがそもそも別物だよ
0057デフォルトの名無しさん
2015/01/24(土) 19:30:32.40ID:4KWVQwlI理由として一つは少ないニーモニックで構成されている時、サブルーチンをコールすると
その分ジャンプ命令を通ることになるから、処理コストが増えるんだよ。
昔のPCとかは処理速度が遅かったから、速度重視の場合でトータルしたバイト数が少ない場合はマクロを使うことがままあった。
後は俺が使ってた時代には無かった概念みたいだけど、名前ではなくて変数としてアドレスを指定出来るらしい。
同じ処理で変数の内容を格納するアドレスが都度違う場合はそのアドレス指定分バイトが稼げるらしい。
そんなとこだよ。
0058デフォルトの名無しさん
2015/01/24(土) 19:36:54.47ID:4KWVQwlIそれを言っちゃうと、「マクロとはなんぞや」と言う話に戻らなければならなくなる。
上ではEXCEL4.0と今のマクロを一緒とみなすならという話をしていたはず。
0059デフォルトの名無しさん
2015/01/24(土) 19:47:11.38ID:qV60IszQつか、>>57書けるならエクセルマクロとアセンブラのマクロは、そもそも概念が違うの分かるやろ
0060デフォルトの名無しさん
2015/01/24(土) 19:51:24.93ID:4KWVQwlI話が出てきたのは>>44、>>45あたり。
じゃ、EXCEL4.0をひっくるめてマクロって何?
0061デフォルトの名無しさん
2015/01/24(土) 20:20:54.64ID:LdIBiv/J一般的にソフト関係の言葉としては、複数の命令や操作をまとめてひとつの命令や操作として使えるようにする機構のこと
0062デフォルトの名無しさん
2015/01/24(土) 20:26:56.43ID:4KWVQwlIだよね。だから概念が違うのかと言われると、その定義に寄り切りなんだけど、
その一般的な定義としてはどちらも当てはまるんじゃないかと思うんだ。
0063デフォルトの名無しさん
2015/01/24(土) 20:42:02.39ID:LdIBiv/Jただ、このスレでアセンブラマクロだしてくるのはどうかと思う
コンピューター繋がりで FPGA のハードマクロとかの話されても困るでしょ?
0064デフォルトの名無しさん
2015/01/24(土) 20:51:25.65ID:4KWVQwlIそうね、言いたいことは分かる。
でもこれでマクロとVBAってそれぞれどう言う関係なのかだいたい分かったと思うんだ。
0065デフォルトの名無しさん
2015/01/24(土) 23:37:47.96ID:4KWVQwlI厳しいねぇ。
0066デフォルトの名無しさん
2015/01/24(土) 23:59:05.67ID:KEoUQ8Iuたまに自治厨みたいの湧くんだよね(´・_・`)
0067デフォルトの名無しさん
2015/01/25(日) 00:09:58.38ID:6hPIl1qj0068デフォルトの名無しさん
2015/01/25(日) 00:12:56.48ID:PLw+K7Cf嫌がることを無理に通すんだったら、俺はこっちでいいわ。
0069デフォルトの名無しさん
2015/01/25(日) 04:27:02.61ID:82uqmrawは?
>>31はexcelのマクロとVBAの違いを問うてるんだよ
お前のマスターべーション講釈なんざいらんよ
>>57はjumpじゃなくてpushな
はっきり言って相当勘違いしてるから学び直せ
0070デフォルトの名無しさん
2015/01/25(日) 08:48:08.96ID:n8UjrMVE朝もはよから知ったか厨に構うなよ...
0071デフォルトの名無しさん
2015/01/25(日) 11:07:40.66ID:zUfV/sVc一々負け惜しみで荒らすなよ。
アセンブラの話はマクロが本来どう言うものかを導き出すために出した例だろ。
お前、全く本質が見えてないな。もう程度が知れたからいいよ。
後、サブルーチンのコールにスタック命令が挟まるのは当然だろう。なにを当たり前のことドヤ顔で列挙してるの?
そんな細かいことを言うなら何でPOP(アセンブラによってはPULL)のことが抜け落ちてるの?ボケ老人なの?
スタックだけ処理して実行アドレス移動しないと思ってる辺り、ちょっとおつむのネジが
2、3本外れた関西人のようだけど、一々いちゃもん付けてくるなよ。迷惑だ。
0072デフォルトの名無しさん
2015/01/25(日) 11:24:46.58ID:zUfV/sVcCALLやJSRやJSLとかサブルーチンのアドレスへ戻り先のアドレスをスタックに抱えながら飛ぶ命令、
どっちもジャンプ命令と呼ばれる部類なのに、
なにを屁理屈こねていちゃもん付けてんだか・・・
これだから関西弁を話す奴と韓国語を話す奴は嫌なんだ。
0073デフォルトの名無しさん
2015/01/25(日) 13:57:31.84ID:QZEwkuoI0074デフォルトの名無しさん
2015/01/25(日) 17:09:39.98ID:PLw+K7Cf確かにジャンプ系の命令をcallなら兎も角、
push()とか言っちゃってる人に勉強不足呼ばわりされたら
頭にくるのは分かるけど、書いてることがフリーダムすぎw
VBAの話をしようよ
>>69
俺もアセンブラは殆ど知らないけど、
残念ながらドラクエでいうところのレベル3くらいの人が
レベル30くらいの人に噛み付いているみたいにしかみえないよ
もういいからVBAの話をしようよ
0075デフォルトの名無しさん
2015/01/25(日) 19:00:05.64ID:bbm8MHtJ>>63 は見れてないのか?
はっきり言ってスレ違いだし、ちんけな知識ひけらかしてる老害にしか見えん
0076デフォルトの名無しさん
2015/01/25(日) 19:14:34.50ID:PLw+K7Cf格下と思える人からいい加減なこと言われて頭に来たっぽいな
0077デフォルトの名無しさん
2015/01/25(日) 19:28:16.51ID:r8WR3aqo0078デフォルトの名無しさん
2015/01/25(日) 20:10:53.92ID:P/Zlfpoiあれが関西弁だとか関西人だとか言い出すやつもどうかしてるわ
関西人に謝れ
0079デフォルトの名無しさん
2015/01/25(日) 20:51:43.56ID:jNZ1CTPY関西はともかく、いきなり韓国とか言う奴の相手するなよ...
0080デフォルトの名無しさん
2015/01/25(日) 21:19:45.57ID:PLw+K7Cf0081デフォルトの名無しさん
2015/01/27(火) 18:51:49.69ID:nXIQJnkv0082デフォルトの名無しさん
2015/02/11(水) 23:55:03.43ID:tH22N6KvExcel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1420790342/l50
0083デフォルトの名無しさん
2015/04/01(水) 20:02:31.54ID:by1Nk6ea仕事中にオモチャで遊ぶなよ(´・ω・`)
0084デフォルトの名無しさん
2015/04/01(水) 20:28:27.19ID:sGrouffr最近の言語に比べりゃ劣るところは多々あるけど、エンドユーザー相手だからあまりモダンな機能入れてもどうせ使われないだろうし
0085デフォルトの名無しさん
2015/04/01(水) 21:52:46.98ID:IqBtbgK/0086デフォルトの名無しさん
2015/04/01(水) 22:04:17.30ID:by1Nk6ea取り敢えず画面分割みたいに同じブックのシートを
並べて見れるような機能が欲しい。
0087デフォルトの名無しさん
2015/04/02(木) 08:56:37.02ID:Jvi83lIY>取り敢えず画面分割みたいに同じブックのシートを
>並べて見れるような機能が欲しい。
俺のEXCELにはすでに実装されてるようだが
0088デフォルトの名無しさん
2015/04/02(木) 09:41:09.10ID:7N3OzWW2今どきのExcelではできるみたいですよ。
表示→新しいウィンドウを開く→整列→左右に並べて表示っていう
隠しコマンドがあるらしい。
0089デフォルトの名無しさん
2015/04/02(木) 11:05:18.02ID:0E43xav70090デフォルトの名無しさん
2015/04/02(木) 11:07:25.99ID:KOknepj/clGDIPlusとか
0091デフォルトの名無しさん
2015/04/02(木) 12:01:05.37ID:0E43xav7ぐぐってみたけど変態というより労作なのかな?
なぜAccess+Excelなのかな、という疑問は残るけど。
0092デフォルトの名無しさん
2015/04/02(木) 19:04:14.58ID:oQZ6ujJZえ?ほんとに?
違うブックを整列して並べるんじゃなくて?
いいな、2010持ってるんだけど、次出たら買おうかな。
0093デフォルトの名無しさん
2015/04/02(木) 19:16:13.18ID:DnwfhgCIいや、そういう機能ないから。
0094デフォルトの名無しさん
2015/04/02(木) 19:22:29.36ID:DnwfhgCI同じブックを違うウィンドウで開いて、そのウィンドウを整列する機能はずっと前からある。
同じブック内の異なるシートを整列して表示する機能はない。
0095デフォルトの名無しさん
2015/04/02(木) 20:05:29.76ID:Jvi83lIYActiveWindow.NewWindow
Windows.Arrange ArrangeStyle:=xlVertical
Sheets("Sheet2").Select
すくなくとも2007では出来る
俺の記憶では2003でもできる
最近のEXCELはMDI廃止になったらしいからどうなってるかはしらん
0096デフォルトの名無しさん
2015/04/03(金) 07:42:00.26ID:MGm7PXDjそうだ、爆弾を投下しよう。
前スレ>>984
>というコードをテストするには、画面クラスを通す必要がある。
InputさえあればUI層を通す必要などない。通す時はUTではなく、IT。
>厳密に言えば、今回の話は、画面クラスにビジネスロジックがあったときに、それをテストするときの話で、
>何が問題かというと、画面構築コストが高い場合があるということ。
>ビジネスロジックが通常Class内にあれば、100個のテストが100msで終わるのに、画面クラス内にあるが
>ためにテスト実行に毎回画面構築コストのオーバーヘッドがかかり、100個のテストに5000msかかるように
>なったりする。
>1回のテストに100msしかかからないのならば頻繁にテストを実行するだろうが、5000msかかるとなると
>テスト実行を躊躇することになり、あちこち変更してテストしたらいろんなところでTest Failになってた
>みたいなことが起こりがち。
UI層とBL層をごっちゃにするな。フォームはUI層。BL層は標準モジュールかクラスモジュール。Formにビジネスロジック?
何を訳の分からないことを言ってるんだ?
>でも、標準モジュールからWorksheetオブジェクトにはアクセスするでしょ?
>それも駄目なの?
これはアクセスする標準モジュールをUI層として用意したなら問題ない。BL層として用意したものなら駄目。
0097デフォルトの名無しさん
2015/04/03(金) 08:00:47.36ID:fygFc6btプログラム板の人はベーコンレタスには興味ないですお
0098デフォルトの名無しさん
2015/04/03(金) 08:26:01.61ID:yaChXg4h記述したいのですが、上手くいきません。
これでopenは取れるのですが…。
ttp://m.chiebukuro.yahoo.co.jp/detail/q12127969522
アドバイスお願いいたします。
0099デフォルトの名無しさん
2015/04/03(金) 10:09:10.80ID:C7O2gbfJ> 最近のEXCELはMDI廃止になったらしいからどうなってるかはしらん
2013では、別Windowになりますね。
0100デフォルトの名無しさん
2015/04/03(金) 10:10:18.04ID:C7O2gbfJ> これはアクセスする標準モジュールをUI層として用意したなら問題ない。BL層として用意したものなら駄目。
相変わらず頭固いね。
君がそうするのは別にかまわないけど、他人に強制しないように。
0101デフォルトの名無しさん
2015/04/03(金) 10:33:51.46ID:fygFc6btまったくもって同意。
一人であたかも正論かのように振り回して、駄目だのなんだの、たかが
Excelで。こういう奴うちにもいるよww みんなに相手にされてないけれど。
完全にアスペ。
0102デフォルトの名無しさん
2015/04/03(金) 11:39:59.72ID:MqJmbX9Bダメと切り捨てるのは思考停止になりがち。
0103デフォルトの名無しさん
2015/04/03(金) 11:41:10.31ID:C7O2gbfJ試したら、普通にできたよ?
Private Sub Workbook_Open()
Set xlApp = Application
End Sub
Private Sub xlApp_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
MsgBox "Close " & Wb.Name
End Sub
0104デフォルトの名無しさん
2015/04/03(金) 12:23:50.12ID:MGm7PXDj>>101
そうではない。どうすれば出来るだけ解り易く、後に効率良く改修出来るかと言う
必然的に生まれた形式。
それが構造化で有り、Object指向であり、デザインパターン。
0105デフォルトの名無しさん
2015/04/03(金) 12:39:29.20ID:fygFc6btもういいから。
君のご高説に誰も興味ないよ。
必然だのなんだの結構ですからww どうぞお引き取りください。
0106デフォルトの名無しさん
2015/04/03(金) 12:44:27.22ID:C7O2gbfJ0107デフォルトの名無しさん
2015/04/03(金) 12:45:49.60ID:MGm7PXDj0108デフォルトの名無しさん
2015/04/03(金) 13:10:28.40ID:fygFc6btいや、キチガイですね。
0109デフォルトの名無しさん
2015/04/03(金) 13:19:52.70ID:MqJmbX9B例外がありえるのに一律に切り捨てようとするのは良くない。
物事は実証的にやるべきだ。
0110デフォルトの名無しさん
2015/04/03(金) 13:26:45.87ID:MGm7PXDj今回私がダメと言ったものに対しての例外って何?
0111デフォルトの名無しさん
2015/04/03(金) 13:49:18.22ID:mN+R/hGu日曜大工で犬小屋作りたいんですがって人に
耐震性がどうのこうの、強度が構造計算が、とか言い出すような人
お前らが構うのは勝手だが、よそでやってくれ
0112デフォルトの名無しさん
2015/04/03(金) 13:52:59.61ID:MGm7PXDjVBAは全て犬小屋だけ作ってればいいってもんじゃない。
それでは犬小屋しか作れない素人と一緒。
0113デフォルトの名無しさん
2015/04/03(金) 14:19:00.32ID:MqJmbX9B実証的にやるべきだと言ってるだろ。
犬小屋と高層ビルの間に無数の階層があるというレベル感を無視してるように見える。
そういうところが実証的ではなく原理主義的だ。
0114デフォルトの名無しさん
2015/04/03(金) 14:34:48.34ID:mN+R/hGu構うなって
素人じゃない俺スゲーって言いたいだけだから
0115デフォルトの名無しさん
2015/04/03(金) 14:45:19.69ID:fygFc6btNGIDに入れて消すといいですよ。
構う価値もない、仕事もない三流プログラマ崩れですから。そいつ。
0116デフォルトの名無しさん
2015/04/03(金) 14:58:19.74ID:MGm7PXDj高層ビルじゃないよ。
構造化言語で構造化の話をするのは当たり前のこと。
犬小屋をうまい棒で作るレベルの話をされても困る。
0117デフォルトの名無しさん
2015/04/03(金) 15:47:05.87ID:SYya6M1Nかと言って高層ビルを建てるのにうまい棒とまでは言わないが、木材を使用する人もいないだろう。
0118デフォルトの名無しさん
2015/04/03(金) 15:56:00.35ID:37KRMiY3高層ビル作りたいなら、VSTOでC#使うか、apps for OfficeでJavaScriptでも使えばいいだろ
0119デフォルトの名無しさん
2015/04/03(金) 16:18:00.93ID:MGm7PXDjその犬小屋建てるまでに至れてない人が言っても虚しいだけ。
0120デフォルトの名無しさん
2015/04/03(金) 19:23:29.78ID:MGm7PXDj犬小屋がどうのと全く的外れな意見ばかりで論理的に反論出来る人はいないようだ。
これで質問者も言っていることは分からなくても、
取り敢えずフォームから他フォームのコントローラーを触らない方がいいことくらいは理解してくれたろうか。
0121デフォルトの名無しさん
2015/04/03(金) 20:14:11.98ID:C7O2gbfJ> 取り敢えずフォームから他フォームのコントローラーを触らない方がいいことくらいは理解してくれたろうか。
それ、Office TANAKAの前でも言えんの?
0122デフォルトの名無しさん
2015/04/03(金) 20:14:49.51ID:SYya6M1N0123デフォルトの名無しさん
2015/04/03(金) 20:24:11.67ID:kXB5Vk27余裕で言える。何故なら私はまだ自分が言っていることを間違っていると思っていないからだ。
誰が言おうが関係ない。そこまで言うならOFFICE TANAKAの田中さんを連れてきて私を論破してみたらどうだ。
0124デフォルトの名無しさん
2015/04/03(金) 20:26:44.53ID:aocH4Iov処理速度を度外視して分かりやすさと改修のし易さに特化するならセルに関数埋め込めばいいし。
0125デフォルトの名無しさん
2015/04/03(金) 20:36:15.62ID:MqJmbX9BCallが異様に重いってどういうこと?
0126デフォルトの名無しさん
2015/04/03(金) 20:40:11.24ID:O7uJyf+n>これで質問者も言っていることは分からなくても、
>取り敢えずフォームから他フォームのコントローラーを触らない方がいいことくらいは理解してくれたろうか。
理解されない。
なぜなら初心者が知らない言葉で言い合いしてるだけで
実際のサンプルコードは一個も書いてないから。
初心者を相手にするなら分りやすく実例を見せてやるのが一番早い。
0127デフォルトの名無しさん
2015/04/03(金) 20:53:06.97ID:GQyQBFTTObject指向を取り入れろとは今回言っていない。あくまで構造化の話をしている。
それに処理速度がVBAだとCallで重くなるなんて言ったら、
他言語でクラスを生成するときにヒープ領域にインスタンスを展開するときどうなってしまうと思うんだ?
スピードを重要視するなら、C++のインラインアセンブラでも使っておけばいい。
0128デフォルトの名無しさん
2015/04/03(金) 21:02:59.41ID:GGvkoKPEお前らのプログラミング講釈なんざ、クソの役にも立たんからな。
余計な事はしゃべるな、わかったか?
0129デフォルトの名無しさん
2015/04/03(金) 21:06:33.50ID:aocH4Iov他の言語ならいざ知らずって言ってるだろ。目的も環境も是とすべき実装も違うんだよ。
プロシージャは実行された時点から一連のプロセスを終了するまで可能な限り内部的に処理する事で処理速度を高めるべきなのであって、
それを否定するなら全てセルに関数書いて解決すればいい。速度を問題視しないならVBAに自分で書く必要がない。
0130デフォルトの名無しさん
2015/04/03(金) 21:07:51.80ID:l+h8sd1x0131デフォルトの名無しさん
2015/04/03(金) 21:12:32.83ID:GQyQBFTTならば起動トリガーの後、一切途中に関数挟むことなく一本道の関数作っとけ。
0132デフォルトの名無しさん
2015/04/03(金) 21:14:22.59ID:aocH4Iovおう、それが理想型だな。お前もようやく自分が間違っていた事に気づいたか。
0133デフォルトの名無しさん
2015/04/03(金) 21:18:35.27ID:GQyQBFTTでは自分の理想を追い求めて1関数が何千行になろうが貫き通してくれ。
そんな理想、私は嫌だ。
0134デフォルトの名無しさん
2015/04/03(金) 21:20:00.37ID:aocH4Iov大丈夫だって、どんなにお前が稚拙なプログラマーだって
頑張り次第で少しは俺が言うような理想的なプログラミングが出来る様になるからあきらめんなって
0135デフォルトの名無しさん
2015/04/03(金) 21:20:23.86ID:MqJmbX9B0136デフォルトの名無しさん
2015/04/03(金) 21:29:54.72ID:GQyQBFTTその辺余り詳しくないが、多分そうだと思う。
0137デフォルトの名無しさん
2015/04/03(金) 22:57:18.20ID:MqJmbX9BVbaではそれを強いるのも強いられるのもつらい。
ところでWindowsでシンボリックリンクを作成するの、コマンドラインからやるのはかったるいが、kernel32にある
CreateSymbolicLinkA(またはCreateSymbolicLinkW)をDeclareすればエクセルから使えて便利だぞ。
対象ファイルをリストアップして一括処理したりが自在にできる。こういうのエクセルの利点だ。
0138デフォルトの名無しさん
2015/04/04(土) 00:10:57.59ID:n7yWKRVY別にVBAじゃなくてもJScriptからだって呼べるし
0139デフォルトの名無しさん
2015/04/04(土) 07:00:41.79ID:tFbLNVar直接シートに一覧を作ってそこから読み取れば良いと言うことが言いたいのかも知れない。
大した手間の違いではないが。
0140デフォルトの名無しさん
2015/04/04(土) 10:18:09.90ID:AiOROLC/そこは
Kill "ID:MGm7PXDj"
だろ
0141デフォルトの名無しさん
2015/04/04(土) 10:24:26.27ID:AiOROLC/> JScriptからだって呼べるし
そんなのできたっけ?
0142デフォルトの名無しさん
2015/04/04(土) 11:50:41.83ID:u9UoiVR2単なる__stdcall関数として呼び出すことも実際可能だし、コールバックの中ではそうやって使ってるけど、
VBAの中ではなんか複雑なことをやってるんじゃない?
0143デフォルトの名無しさん
2015/04/04(土) 18:39:08.85ID:9VKUXwgpなんでそう思うの?
0144デフォルトの名無しさん
2015/04/04(土) 18:46:28.95ID:u9UoiVR2上の方でVBAの関数呼び出しが遅いようなこと言ってたから
0145デフォルトの名無しさん
2015/04/04(土) 19:11:38.07ID:9VKUXwgpなんか途中で黙りこんじゃってたし
0146デフォルトの名無しさん
2015/04/04(土) 22:08:19.24ID:u9UoiVR2ならいいや
0147デフォルトの名無しさん
2015/04/05(日) 10:46:01.37ID:H1gZUohnとりあえずvbaエキスパートスタンダードなるものはとったんですけど
0148デフォルトの名無しさん
2015/04/05(日) 11:17:56.54ID:DF2lDrS2http://vbae.odyssey-com.co.jp/about/
0149デフォルトの名無しさん
2015/04/05(日) 13:07:48.19ID:rftisBed取って何か役にたった?
俺も遠い昔に取ったけど、未だに何の役にも立ってない気がする。
0150デフォルトの名無しさん
2015/04/05(日) 15:24:02.00ID:H1gZUohnとったのそれです。
>>149
いやー特に役にはたってないですね。
なんとなく技術力アピールの為にとったんですけどちょっとこれは簡単すぎでした
なので他に何かないかなーと。
0151デフォルトの名無しさん
2015/04/05(日) 16:25:08.20ID:DF2lDrS2おめでとう。このスレ卒業だ。
本来このスレはEXCELVBAの質問スレで、試験の合格を目的としていたなら
そのための役目は果たしきったと言える。
他の試験を受けるなら、自分が今後何をやりたいのかを考えて、
それに役立つ試験を受ければいいと思うけど、その方向は自分で決めるしかないし、
その為に受ける試験もここで聞いても仕方がないよ。
0152デフォルトの名無しさん
2015/04/06(月) 01:00:29.27ID:Gw8/gQ2Tエラーになったり開いてないのに次の処理が動き出したりするようですが
この場合どう対処してますか?
0153デフォルトの名無しさん
2015/04/06(月) 01:19:45.36ID:79LtAvE/0154デフォルトの名無しさん
2015/04/06(月) 01:35:23.35ID:i4LcoaiEネット上に練習問題が転がってる
0155デフォルトの名無しさん
2015/04/06(月) 06:37:31.62ID:6qozZbmR次のファイルが開かれているかのチェック処理を入れる。
エラーは出ているメッセージで対処法が変わる。
0156デフォルトの名無しさん
2015/04/06(月) 11:09:29.82ID:9W6wTYs8Book1を閉じるときに保存しますか?とメッセージが出て中断してしまいます
スルーするか「いいえ」を選択する方法ってありますか?
0157デフォルトの名無しさん
2015/04/06(月) 11:18:25.88ID:PufGX+Fr保存すればいいじゃn
0158デフォルトの名無しさん
2015/04/06(月) 11:33:01.67ID:WlfIOA8Xどんなコード書いてるのか知らんけど
ブックを閉じるときに
Workbooks("Book1").Close SaveChanges:=False
とかやれば保存されないよね?
0159デフォルトの名無しさん
2015/04/06(月) 11:41:14.26ID:9W6wTYs8知りたかったのはそれです!ありがとう!
0160デフォルトの名無しさん
2015/04/06(月) 11:57:11.01ID:nJVLUi4tだと個人的におもう。
0161デフォルトの名無しさん
2015/04/06(月) 12:52:40.41ID:Qf0sjema定数の定義名のスペルミスとかわからんわ
0162デフォルトの名無しさん
2015/04/06(月) 18:07:02.86ID:R0FU2E8+このTest2というのは必ずTest1の中からしか呼び出されないから
Test1とTest2を並列に並べる感じじゃなくて
Test1の内部にTest2に位置させる構造みたいにすることはできないですか?
0163デフォルトの名無しさん
2015/04/06(月) 18:30:40.15ID:nJVLUi4tTest2の処理をまるごとTest1の中に書くのじゃいかんのかい?
test2メソッド作って必要な時に呼ぶとか
0164デフォルトの名無しさん
2015/04/06(月) 18:58:06.69ID:GoRtmIXL内部に位置させるとか意味不明。
だったら、ルーチンの一部にすりゃいいだろ。サブルーチンの意味わかってんのか?
0165デフォルトの名無しさん
2015/04/06(月) 19:02:58.87ID:6qozZbmRもの凄くイヤな書き方だけど、旧BASICの負の遺産でGOSUBって言うのが有る。
これを使うくらいなら並べて書いた方がいいけど、
有るか無いかで言われたらそう言ったのが有る。
0166デフォルトの名無しさん
2015/04/06(月) 19:23:28.06ID:ZlggGPnA0167デフォルトの名無しさん
2015/04/06(月) 19:52:19.50ID:+u84JNAUPublic Sub Test1()
Call Test2
Exit Sub
Private Sub Test2()
Debug Print "hoge"
Exit Sub
Module2
Public Sub Test3
Call Test2 '呼び出せない
Exit Sub
これじゃあかんの?
0168デフォルトの名無しさん
2015/04/06(月) 20:12:19.19ID:ywPvvzEg使用期間を通して一意な値のデータを元にして表を作成したいんですが、
エクセルしか使えず、しかも印刷プレビューになるだけで「操作を受け付けない!」と混乱し始めたり、
半角でないといけない所を全角で書いたり、パターン表を勝手に切り貼りして空いたところを非表示にして見た目だけ整えたりして、
それでマクロがデバッグに入ると「壊れた!」と騒ぎ出すレベルの人が使用する事を前提にするので、
一意な値を書き換えられないようにしたいんですが、総数が増減するのでセルにある最大値を取ろうとすると重複するし、
モジュールや定数を自身に書き込むマクロを組むとセキュリティの警告が出て使えません。
非表示にしたシートは再表示にされたり、非表示だったから要らないのだろうと判断されて削除される恐れもあります。
別のファイル(たとえばテキストファイルなど)に書き込んで、常にセットで運用してもらうのも難しいです。
こういう環境下でオートナンバー型の様に振る舞うマクロって作れませんか?
0169デフォルトの名無しさん
2015/04/06(月) 20:43:54.94ID:6qozZbmR@
オートナンバーを設定したい列を用意。
A
データの入っている行の範囲で、オートナンバー列の最大値を求め、変数に格納する。
B
オートナンバー列をデータの入っている行の最初から舐めて、
値が設定されていない行があったら、Aで格納した変数の値を+1して同変数とオートナンバー列の対象行に設定する。
C
データの入っている行数分Bを繰り返す。
こんなんで出来ると思うけど、オートナンバーって上限が有るからね。
別途上限を超える時のこと、考える必要が有るなら考えないといけない。
0170デフォルトの名無しさん
2015/04/06(月) 20:46:42.46ID:rbpG+7VY> 非表示にしたシートは再表示にされたり、非表示だったから要らないのだろうと判断されて削除される恐れもあります。
シート構成変える必要ないならシート保護しとけばいいだけかと
http://officetanaka.net/excel/vba/sheet/sheet07.htm
シート構成変える必要あるなら xlVeryHidden という定数を指定して非表示にすれば VBA 使わないと表示できなくなる
http://officetanaka.net/excel/vba/sheet/sheet06.htm
0171デフォルトの名無しさん
2015/04/06(月) 21:07:55.74ID:ywPvvzEgオートナンバー型を使いたい場所は半年に一度、多いときでも10くらいしか増減しないので上限はあまり問題にならないと思います。
>>170
ありがとうございます。
シートはマクロを走らせる都度、印刷用ページを増加させる(必要はないけど使用者がそうする)のでxlVeryHiddenを使ってみたいと思います。
0172デフォルトの名無しさん
2015/04/06(月) 21:13:48.86ID:6qozZbmR俺はさっきみたいにGOSUBの存在が有るから関数かメソッドって呼ぶようにしてる。
0173デフォルトの名無しさん
2015/04/06(月) 21:24:09.84ID:rbpG+7VYSub xxx だから普通にサブルーチンだわ
関数だと Function yyy だと思うし、VBA にもクラスはあるからメソッドも別にあるし
0174デフォルトの名無しさん
2015/04/07(火) 05:41:45.27ID:uglnpAKe0175デフォルトの名無しさん
2015/04/07(火) 05:42:00.41ID:T6jm7qcv俺てっきり標準モジュールもクラスの一種で、関数とメソッドって呼び方が違うだけで同じものだと思ってたわ。
0176デフォルトの名無しさん
2015/04/07(火) 06:00:11.25ID:uglnpAKeどう違うかだ。
下記の言葉を使って答えたまえ。
・別々の標準モジュール
・同名のSub
0177デフォルトの名無しさん
2015/04/07(火) 07:27:00.45ID:T6jm7qcvなるほど、分かった。サンキュ
0178デフォルトの名無しさん
2015/04/07(火) 07:59:32.71ID:mWh4eTM0標準モジュールもクラスと捉えるべきなのか。オレはnamespace的なものと思っていた。
0179デフォルトの名無しさん
2015/04/07(火) 11:47:47.95ID:aqqi4euKそっちが正しい。
なにをもって標準モジュールがクラスの一種だと言ってるのかわからん。
0180デフォルトの名無しさん
2015/04/07(火) 12:13:15.87ID:mWh4eTM0そうか。
自分がドブネズミかと思ってドキッとしてしまったわい。
0181デフォルトの名無しさん
2015/04/07(火) 12:15:17.96ID:/CDZGxygサブプロシージャだと思ってた
0182デフォルトの名無しさん
2015/04/07(火) 12:23:23.04ID:cOmIu6fE標準モジュールは一応規定とか暗黙とか言われているインスタンスを持っているらしいが、
NameSpaceにそれが有るって言うのか?
0183デフォルトの名無しさん
2015/04/07(火) 15:26:17.77ID:aqqi4euK> 標準モジュールは一応規定とか暗黙とか言われているインスタンスを持っているらしいが、
いや、持ってないよ。
何かと勘違いしてるんじゃないの?
0184デフォルトの名無しさん
2015/04/07(火) 15:53:57.66ID:IdsSczXc入れ物でしかない。インスタンスだのネームスペースだの
そんなものでもなんでもない。
あるルールは、publicなら全部から参照でき、privateなら
そのモジュール内でだけ参照できる。
ソレ以上でもソレ以下でもない。
0185デフォルトの名無しさん
2015/04/07(火) 16:40:18.97ID:uglnpAKe・Module1
・Module2
・Module3
を作り、PublicでもPrivateでも別々のModuleに入った同名のSub(例えばTestSub)は問題なく動く。
Module1から自分のTestSubを呼ぶには単にTestSub、となりのやつを呼ぶにはModule2.TestSubという具合にだ。
これは単に標準モジュール用のクラスがあり
そのインスタンスがこの場合3個、コードの実行前に作られていると考えられる。
0186デフォルトの名無しさん
2015/04/07(火) 16:41:57.59ID:uglnpAKe0187デフォルトの名無しさん
2015/04/07(火) 16:44:52.49ID:uglnpAKeそれはVBA実行中ずっとメモリに記憶される。
しかしフォームモジュールはそのフォームを表示させたときにはじめてインスタンス化され
その中のメンバ変数が有効になる。
そしてフォームをCloseした場合、インスタンスも消えるからそのメンバ変数も使えなくなる。
0188デフォルトの名無しさん
2015/04/07(火) 16:56:42.52ID:mWh4eTM0名前のスコープとアクセス制御のことなんだから。
0189デフォルトの名無しさん
2015/04/07(火) 16:58:02.31ID:aqqi4euK> Module1から自分のTestSubを呼ぶには単にTestSub、となりのやつを呼ぶにはModule2.TestSubという具合にだ。
それは、namespace的なprefixだよ。
> これは単に標準モジュール用のクラスがあり
> そのインスタンスがこの場合3個、コードの実行前に作られていると考えられる。
いや、ないって。
規定のインスタンスというのは、インスタンス化できるオブジェクトが対象で、それが暗黙的に
作られるのが「規定のインスタンス」。
標準モジュールはインスタンス化できないから、規定のインスタンスなんかないよ。
0190デフォルトの名無しさん
2015/04/07(火) 17:02:02.45ID:uglnpAKeオバケなんてないさ、にしか聞こえない。
0191デフォルトの名無しさん
2015/04/07(火) 17:15:28.70ID:aqqi4euK逆に、インスタンスがある証明をして欲しいんだが。
インスタンス化できるなら、dim hoge = new Module1と書けるはずだが、実際は書けない。
インスタンスなら、debug.print typeof(Module1)と書けるはずだが、実際には書けない。
インスタンスなら変数に代入できるはずだが、set hoge = Module1ともhoge = Module1とも書けない。
0192デフォルトの名無しさん
2015/04/07(火) 17:17:32.92ID:aqqi4euK0193デフォルトの名無しさん
2015/04/07(火) 18:31:28.97ID:nOR7M4vAhttp://mcdonalds-campaign.jp/coupon/pc/
何度かお世話になったのでよかったらどうぞ
0194デフォルトの名無しさん
2015/04/07(火) 19:41:53.69ID:3+A3nDtsそもそも標準モジュールはVBがオブジェクト指向言語になる前からあるので
厳密なオブジェクト指向での考え方に合わない点があるんだが
たとえばVB.NETのModuleの説明だと
>クラスはオブジェクト指向ですが、モジュールはオブジェクト指向ではありません。
>したがって、クラスだけがオブジェクトとしてインスタンス化できます。
と書いてある
つまり、モジュールにインスタンスという概念が成り立たない
だからインスタンス化できるかどうかという議論も無意味だけど
実際にプログラム組むときの感覚で言えば、自分でインスタンスを操作できないだけで
インスタンスはあると考える方が自然だと思うが
インスタンスの概念がないので、厳密には既定のインスタンスではないのだが
既定のインスタンスと同様に考えて大きな問題はないし
0195デフォルトの名無しさん
2015/04/08(水) 06:08:26.11ID:RSh+hWVhまー、そんな考え方でいいと思う。
混同しがちだけど、VB.NetではNameSpaceやImportsなどで名前空間を指定する際にクラス名やモジュール名は含まない。
そもそもVBAには名前空間の概念がないし、VB.Netの標準モジュールもC#で言うところの静的クラスと互換性が有ると言うんならクラスで間違いないだろう。
https://code.msdn.microsoft.com/windowsdesktop/14-Visual-Basic-Module-2c407099
0196デフォルトの名無しさん
2015/04/08(水) 10:31:56.42ID:O4e51bmX> 既定のインスタンスと同様に考えて大きな問題はないし
お前がそう考えるのは別にかまわないが、他人にその考え方を強制するな。
これ、お前の発言だろ?
> 標準モジュールがクラスの一種であるとこはドブネズミでも分かる。
最近、こんな奴ばっか。
0197デフォルトの名無しさん
2015/04/08(水) 10:33:08.06ID:O4e51bmX> 静的クラスと互換性が有ると言うんなら
いや、ないし。
ポエムは自分のブログでやってくれませんかね。
0198デフォルトの名無しさん
2015/04/08(水) 10:36:23.12ID:KM862bWm馬鹿が張り付いてるなwww
特徴は他人に考えを強制するって点でもろバレだが。
0199デフォルトの名無しさん
2015/04/08(水) 11:05:48.60ID:S9Y1Pk/m>>195
解釈に無理があるし、なによりも役に立たない。
0200デフォルトの名無しさん
2015/04/08(水) 12:03:15.24ID:DpJSi/5c0201デフォルトの名無しさん
2015/04/08(水) 12:22:16.68ID:KM862bWm何しきってんの単発ID
0202デフォルトの名無しさん
2015/04/08(水) 12:27:03.41ID:S9Y1Pk/m0203デフォルトの名無しさん
2015/04/08(水) 12:59:03.21ID:a2Fpxgql思いっきりリンク先に書いてあるな。
0204デフォルトの名無しさん
2015/04/08(水) 13:26:24.04ID:O4e51bmX> 思いっきりリンク先に書いてあるな。
めんどくさ。
> C# の「静的クラス」は Visual Basic の「モジュール」に相当する型と言うことができます。
って書いてるだけじゃん。
これを、互換性があるって取っちゃうのか。
0205デフォルトの名無しさん
2015/04/08(水) 14:12:53.12ID:a2Fpxgqlめくら〜w
0206デフォルトの名無しさん
2015/04/08(水) 19:10:22.43ID:fypBn6Jmどこをどう読んだらその二つが同一人物の発言に見えるんだ
0207デフォルトの名無しさん
2015/04/08(水) 19:35:23.96ID:RKL00iuYVBAはプロシージャとモジュールという単位として管理していてクラスもモジュールの一部という理解をすべき。
ローカル変数? ねぇよそんなもん!!
0208デフォルトの名無しさん
2015/04/08(水) 21:30:31.95ID:a2Fpxgqlみたいに〜♪
0209デフォルトの名無しさん
2015/04/09(木) 07:12:32.55ID:b1vwu2KZ何をしたいのかよくわからん
コードで示してくれ
0210デフォルトの名無しさん
2015/04/09(木) 07:20:58.80ID:b1vwu2KZ> Subってサブルーチンの頭文字?
> サブプロシージャだと思ってた
すまん、あんたの方が正しかったわ
な
https://msdn.microsoft.com/en-us/library/office/gg251432.aspx
関数は Function procedure って言うんだな、Pascal 使ってたから Procedure ⇔ Function だと思ってた
0211デフォルトの名無しさん
2015/04/09(木) 07:50:00.45ID:GwLtV5N40212デフォルトの名無しさん
2015/04/09(木) 08:47:19.06ID:teaLGODa言われてみれば、その言葉をいつの間にか全くと言っていいほど聞かなくなってしまったな
0213デフォルトの名無しさん
2015/04/09(木) 10:12:09.80ID:U9p+hMizFor Each x in arr1
このなかで別の配列arr2の要素も
操作・参照したい
Next x
例えばこれに相当することを
For i = 0 To Ubound(arr1) step 1
s = s + ayy1(i) + arr2(i)
Next i
整数インデックスでループするよりスマートにやる方法が知りたい
0214デフォルトの名無しさん
2015/04/09(木) 12:30:59.37ID:U9p+hMiz○ arr1
0215デフォルトの名無しさん
2015/04/09(木) 12:36:29.11ID:gC1GZRrM0216デフォルトの名無しさん
2015/04/09(木) 12:40:10.35ID:P4izb6gk省略してるとネストしたときに分りにくい。
0217デフォルトの名無しさん
2015/04/09(木) 15:07:11.28ID:GwLtV5N4For Each使った時なんて書いたためしが無いから付けられるかどうか分からないくらいだ。
そもそもネストで分かり辛くなるようなコードの時点で残念だろ。
0218デフォルトの名無しさん
2015/04/09(木) 15:59:00.02ID:U9p+hMizFor Each {x, y} in {arr1, arr2}
・・・
Next {x , y}
みたいに書けりゃいいけどそんなの無いし。
他言語でもrange based for推奨とかで整数インデックスかこわるいってイメージ。
既存のコードを書き換えたいけどうまくいかない。
0219デフォルトの名無しさん
2015/04/09(木) 16:14:12.44ID:vr/wyORc0220デフォルトの名無しさん
2015/04/09(木) 16:22:07.43ID:6OGmwsxhすたっくおーばーふろーに行くと多分解決するよ
0221デフォルトの名無しさん
2015/04/09(木) 18:45:14.53ID:odUGCUmQ0222デフォルトの名無しさん
2015/04/09(木) 19:24:42.46ID:U9p+hMizおっしゃる通りだが質問の条件に合ってない。
0223デフォルトの名無しさん
2015/04/09(木) 19:30:57.71ID:/ag7R+ssi = LBound(arr1)
For Each x In arr1
s = s + arr1(i) + arr2(i)
i = i + 1
Next
っていう事じゃないのか?
0224デフォルトの名無しさん
2015/04/09(木) 20:27:41.66ID:odUGCUmQまあその通りだが
スマートじゃない設計してるのに、スマートなコード書きたいって言われてもなぁ
>>223
それなら素直にFor i=LBound to Uboundで回す方がまだスマートだと思うが
0225デフォルトの名無しさん
2015/04/09(木) 20:56:07.89ID:U9p+hMiz>>221の方法で関数を作ると、「この関数に渡すデータは、あらかじめ合体した構造体にしてから渡してください」
という仕様になるでしょ。
使う側は、単に手元にある二つの配列を渡して何らかの計算をしてもらいたいだけなのよ。
それに、合体した構造体をどうやって作るかを考えるとやっぱりループが出てくるし、循環論法。
0226デフォルトの名無しさん
2015/04/09(木) 20:56:44.56ID:/ag7R+ss配列でなければならず、しかもその順番が重要っていう条件でForEach縛りしたら、どう足掻いてもスマートにはならないよな。
0227デフォルトの名無しさん
2015/04/09(木) 21:43:43.05ID:4CRBEaVUそりゃそうだわ、足掻いてスマートとか矛盾にも程がある
涼しい顔してやってのけるからスマートなんだぞ
0228デフォルトの名無しさん
2015/04/09(木) 21:53:09.33ID:/ag7R+ss0229デフォルトの名無しさん
2015/04/10(金) 00:15:38.17ID:z3hI09s90230デフォルトの名無しさん
2015/04/10(金) 07:40:12.17ID:KV63kOi+いや、スマートの方を調べろって事だと思うよ
0231デフォルトの名無しさん
2015/04/11(土) 03:07:58.46ID:i/ICoFfjSub 一秒毎()
End Sub
0232デフォルトの名無しさん
2015/04/11(土) 03:11:24.52ID:i/ICoFfj以下は途中まで作ったプログラムです
3分ごとの処理をどう書けばいいかご教授願いたいです
Sub 一秒毎()
'3分毎の処理
・・・
Application.OnTime Now + TimeValue("00:00:01"), "一秒毎", Now + TimeValue("00:00:02")
End Sub
0233デフォルトの名無しさん
2015/04/11(土) 06:27:56.03ID:DIKK7EKz短時間で更に爆発的に上達するためにやるべき事を教えて下さい。
0234デフォルトの名無しさん
2015/04/11(土) 07:19:37.77ID:iQU2462u短時間で更に爆発的に勉強する
0235デフォルトの名無しさん
2015/04/11(土) 08:02:29.21ID:0PbM2j6cSub Test
If (Timer - 1sExeT) > 1 Then 一秒毎
End Sub
Sub 一秒毎()
If (Timer - 3mExeT) > 180 Then 三分毎
1sExeT = Timer
End Sub
Sub 三分毎()
3mExeT = Timer
End Sub
0236デフォルトの名無しさん
2015/04/11(土) 09:28:22.01ID:aih7mS+Yカウンタ作って、180回毎に実行すればいいだけじゃないの?
0237デフォルトの名無しさん
2015/04/11(土) 10:04:42.49ID:tg4Z2PXf【前提】
・1行目のC列から右に1〜31(日数)を順番に記載
・B列(B2以降)には個人名を記載
・各行のC列以降には1日の出費(金額)を記載
【やりたいこと】
出費が1万円を超えた日数をA列に記載したいです。
例えば、Aさんが1日目五千円、2日目五千円を利用した場合、AさんのA列には「2」が入ります。
要は1万円を超えるまで出費額を繰り返し足していき、1万円を超えたら結果を出力して次の人の計算に移るイメージです。
【質問】
ループを抜けた後にA列に日数を記入する方法を教えて下さい。1行目の日数を参照すればよいと思うのですが分からず…
0238デフォルトの名無しさん
2015/04/11(土) 10:10:33.69ID:57NV/HJw0239デフォルトの名無しさん
2015/04/11(土) 10:57:42.59ID:QOc8rwlG0240デフォルトの名無しさん
2015/04/11(土) 11:01:02.64ID:FOw0SFZqなんか久々にちゃんとした様式の質問がきたなw
0241デフォルトの名無しさん
2015/04/11(土) 11:07:10.14ID:QOc8rwlG0242デフォルトの名無しさん
2015/04/11(土) 11:43:47.60ID:aih7mS+Y人数分作業行使っていいなら、累計行作って、MATCH( ) でいけるんじゃね?
0243デフォルトの名無しさん
2015/04/11(土) 12:01:27.79ID:0PbM2j6cSub test()
Dim c As Range, d As Range, 出費額 As Long
For Each c In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
出費額 = 0
For Each d In Range(Cells(1, 3), Cells(1, 3).Offset(0, Day(DateAdd("d", -1, Cells(1, 3))) - 1))
出費額 = 出費額 + Cells(c.Row, d.Column)
If 出費額 > 10000 Then Cells(c.Row, 1) = Day(Cells(1, d.Column)): Exit For
Next
Next
End Sub
※Range("C1")は日付形式で、かつ一日が入っている事。
0244デフォルトの名無しさん
2015/04/11(土) 12:03:39.08ID:0PbM2j6c×For Each d In Range(Cells(1, 3), Cells(1, 3).Offset(0, Day(DateAdd("d", -1, Cells(1, 3))) - 1))
○For Each d In Range(Cells(1, 3), Cells(1, 3).Offset(0, Day(DateAdd("d", -1, DateAdd("m",1,Cells(1, 3)))) - 1))
0246デフォルトの名無しさん
2015/04/11(土) 14:22:44.35ID:tg4Z2PXfご丁寧にありがとうございます。
出先でまだ試せてないのですが、仮に条件を10万等にした場合で10万に満たない場合はどのような結果になりますでしょうか…
0247デフォルトの名無しさん
2015/04/11(土) 15:06:20.46ID:aih7mS+Yなにも入らないだけだろ
0248デフォルトの名無しさん
2015/04/11(土) 16:05:34.46ID:0PbM2j6c設定数値を超過しなかった場合を指定したかったら、こう
Sub test()
Dim c As Range, d As Range, 出費額 As Long
For Each c In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
出費額 = 0
For Each d In Range(Cells(1, 3), Cells(1, 3).Offset(0, Day(DateAdd("d", -1, DateAdd("m",1,Cells(1, 3)))) - 1))
出費額 = 出費額 + Cells(c.Row, d.Column)
If 出費額 > 10000 Then Cells(c.Row, 1) = Day(Cells(1, d.Column)): Exit For
Next
If Cells(c.Row,1) = "" Then Cells(c.Row,1) = "超過なし"
Next
End Sub
0249デフォルトの名無しさん
2015/04/11(土) 19:01:13.40ID:Di7hwpD1ユーザー定義関数で作ってみました。
https://friendpaste.com/5aSpV7j9R8jlmYmUZzZ3z1
これを標準モジュールにコピペすると、
=integration(閾値,列オフセット)
という関数が使えるようになります。
使い方は、開始セル(例:C2)から閾値(10000)を超えるまでの列数を表示したいセル(基準セルと呼ぶ)(例:A2)に
=integration(10000,2)
と入力すると、開始セルから右に向かって加算を続け、合計が閾値以上になった列数を表示します。
閾値を超えるか、空白セルが出てくるまで計算を続けますが、
空白セルまでいっても閾値に満たない場合や、開始セルの列指定が負の数になる場合などにはゼロを返します。
なお、列オフセットが負の数の場合には基準セルに到達する場合にも計算を終了します。
(そうしないと循環参照になってしまうので)
0250デフォルトの名無しさん
2015/04/11(土) 19:40:43.67ID:iSQZEGOP0251デフォルトの名無しさん
2015/04/11(土) 20:08:57.13ID:0PbM2j6cFunction Test(範囲 As Range, 閾値)
If Not IsNumeric(閾値) Then Exit Function
Dim TargetRange As Variant, x As Variant
Dim i As Long, j As Long
If 範囲 Is Nothing Then Test = "ERROR"
TargetRange = 範囲
For Each x In TargetRange
i = i + 1
If IsNumeric(x) Then j = j + x
If j > 閾値 Then Test = i: Exit Function
Next
Test = "該当無し"
End Function
0252デフォルトの名無しさん
2015/04/11(土) 20:11:11.78ID:0PbM2j6c○ If 範囲 Is Nothing Then Test = "ERROR": Exit Function
0253Office & Gamers ◆G144Hzgh2.0e
2015/04/11(土) 20:51:26.41ID:qwyJf/Pv0254デフォルトの名無しさん
2015/04/12(日) 00:32:53.59ID:K7dkD1iBコード一生懸命書き込んでくれるのはいいんだが、
1度動作確認してから書いた方がいいと思うぞ。
折角修正してもそれだけじゃ動作すらしないだろ?
0255デフォルトの名無しさん
2015/04/12(日) 00:34:11.50ID:B1LmB3ZH0256デフォルトの名無しさん
2015/04/12(日) 01:02:21.73ID:dgOnfcNkプログラミング言語全体に言えることだけど
仕事で毎日使うこと。これに尽きる
仕事なら目標がはっきり示されるし、
品質・納期に甘えが許されないから嫌でも身につく
0257デフォルトの名無しさん
2015/04/12(日) 01:16:29.75ID:t+tTqJJ2VBA 入門 でググって、
そこに書かれているコードを実際に自分で試してみる。
出来ればそれで実際にツールを作ってみる。
ここで回答している人達も、必ずしもVBAを100%理解している訳じゃなくて
質問者の内容を調べて回答する、というように、常に勉強している。
0258デフォルトの名無しさん
2015/04/12(日) 01:49:37.26ID:/a8eNQvW教え方の上手な人にテンポ良く習う
あと実践
0259Office & Gamers ◆G144Hzgh2.0e
2015/04/12(日) 02:32:22.71ID:qV7OJBYFさっさとVC++に移るw
0260デフォルトの名無しさん
2015/04/12(日) 05:50:49.46ID:v/vGNoLh試してみたら普通に動作したけど、コピペの仕方とか間違ったんじゃないのか?
0261Office & Gamers ◆G144Hzgh2.0e
2015/04/12(日) 06:04:57.50ID:qV7OJBYF0262デフォルトの名無しさん
2015/04/12(日) 06:07:34.26ID:8jpSmqLc現在あなたのレベルによるが
もし何も判らないなら入門書を一冊買って最初から地道に勉強すべき
複数の人から教わると混乱して挫折しやすい
ある程度判るようにならヘルプだけ見て大変でも自力で頑張る
ネット検索しコピペに頼ってると身に付かない
ヘルプ見れば大抵の事はできるレベルなら
質問掲示板に回答者として参加
0263Office & Gamers ◆G144Hzgh2.0e
2015/04/12(日) 06:13:06.63ID:qV7OJBYF0264デフォルトの名無しさん
2015/04/12(日) 08:15:06.06ID:tL06Oggo済まない、TargetRangeに範囲を代入している所で頭にSetが付いていなかったからそこで落ちると思った。
型、Valiantで定義してたのね。俺の方がよく見てなかったわ。
0265デフォルトの名無しさん
2015/04/12(日) 08:19:38.94ID:tL06Oggo⚪︎Variant
0266デフォルトの名無しさん
2015/04/12(日) 08:55:21.90ID:v/vGNoLh0267デフォルトの名無しさん
2015/04/12(日) 09:15:11.75ID:lPZ2kSBr・フォームモジュール
・クラスモジュール
のしくみについて深く知りたいのですが、これらについて深く解説している本みたいなのはないのですか?
0268デフォルトの名無しさん
2015/04/12(日) 09:15:57.78ID:taPXD9k9そんなことよりも、配列のFor Eachは代入ができないことが問題だ!
For Each z in matrix
z = z * 2
とかできない。
0269デフォルトの名無しさん
2015/04/12(日) 09:16:32.49ID:cVd0kkwW日本語でも1文字でも分かりけりゃいい〜とか、それぞれ思うところがあるらしく、荒れるからいいや。
0270デフォルトの名無しさん
2015/04/12(日) 09:20:06.09ID:taPXD9k9For Each &z in matrix
z = z * 2
0271デフォルトの名無しさん
2015/04/12(日) 10:05:39.04ID:BQBr0rdtそれ以前に必要ないのに Variant なんか使うなよ
0272デフォルトの名無しさん
2015/04/12(日) 10:20:09.92ID:v/vGNoLh必要ないのにってどういう事だ。RangeObjectのままFor Eachにつっこめと?
0273デフォルトの名無しさん
2015/04/12(日) 10:28:53.70ID:lPZ2kSBr0274デフォルトの名無しさん
2015/04/12(日) 10:48:11.45ID:v/vGNoLh詳しく解説した本は知らないけど、
シートオブジェクト → GUIあり。Newできない。
フォームモジュール→ GUIあり。Newできる。
標準モジュール→GUIなし。Newできない。
クラスモジュール→GUIなし。Newできる。
という違いしかないと思うぞ。
0275デフォルトの名無しさん
2015/04/12(日) 10:52:43.09ID:cVd0kkwWFormオブジェクトはNewしてもしなくても使えるからまた別の考え方になるけどな
0276デフォルトの名無しさん
2015/04/12(日) 10:59:04.10ID:BQBr0rdtRange でいいだろ
Variant である「必要がない」ってこと
0277デフォルトの名無しさん
2015/04/12(日) 11:29:16.53ID:lPZ2kSBrなるほどありがとう。
Newできないのはずっと存在している性的なエッチなクラスみたいなものだという認識でよろしいでしょうか?
それぞれのモジュール/オブジェクトの先頭で宣言した変数は、クラスのメンバ変数と考えてよろしいでしょうか?
0278デフォルトの名無しさん
2015/04/12(日) 11:39:40.22ID:v/vGNoLh仕組みとか他の言語に例えると〜〜とかやり始めるとまた面倒くさい事になるから、あくまでVBA上の動作としてな。
>>276
それはRangeオブジェクトのままの状態と、Variant配列にした時の処理速度の違いを理解した上で言ってるの?
0279デフォルトの名無しさん
2015/04/12(日) 12:05:50.12ID:lPZ2kSBrメモリ上ではどういうしくみ/領域で記憶されているんですか?
0280デフォルトの名無しさん
2015/04/12(日) 12:10:58.07ID:v/vGNoLhhttp://marupeke296.com/IKDADV_CPP_VARIANT.html
0281デフォルトの名無しさん
2015/04/12(日) 12:46:46.80ID:b0zj5JyQ「必要か?」というと不要だが、いずれ配列処理に移行するのが必然。
0282デフォルトの名無しさん
2015/04/12(日) 16:40:22.61ID:qz9ad5ml2.Workbooks.Open "Book1.xls" と Workbooks.Open("Book1.xls") の違いがわかりますか?
3.「=」と「:=」の違いがわかりますか?
4.Setを使うのはどんなときですか?
5.RangeとCellsは、どう使い分けるべきですか?
6.変数は宣言して使うべきです。その理由がわかりますか?
7.条件分岐のIfと、繰り返しのFor Nextを、自在に使えますか?
8.ビジネスの現場で作成されるマクロで、最も重要なことは何ですか?
0283デフォルトの名無しさん
2015/04/12(日) 16:47:57.58ID:nKvs/5SB逆はないような気がする
でも使いやすいのはcells
0284デフォルトの名無しさん
2015/04/12(日) 17:13:56.60ID:iDS7EXN0宿題か?それとも面接気分で使える人間をここで探してんのか?
0285デフォルトの名無しさん
2015/04/12(日) 17:29:38.76ID:cVd0kkwWめんどくさいから前回以前のスレ漁ってくれ。
どれもこれもそれが理由で荒れたことがある奴を狙ってるっぽいけどな。
0286デフォルトの名無しさん
2015/04/12(日) 17:38:15.75ID:v/vGNoLh0287デフォルトの名無しさん
2015/04/12(日) 20:18:22.05ID:d7t2BKGs俺が試されている
そして不合格確定
0288デフォルトの名無しさん
2015/04/12(日) 20:28:49.02ID:R2DZtWRM結論は簡単だよね?(´・ω・`)
多分テストの答えとしては、それぞれに正解があるんだろうけど?(´・ω・`)
現実的な結論はひとつしかないよね?(´・ω・`)
/)
///)
/,.=゙''"/ Excel VBA なんだから
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0289デフォルトの名無しさん
2015/04/12(日) 21:37:26.29ID:v/vGNoLh1. Filename:=が入っているか入っていないか
2. ()がついているか、ついていないか
3. :がついているか、ついていないか
4. コンパイラに怒られた時
5. 他人に見せる時と自分だけ分かっていればいい時
6. はい
7. はい
8. 納期
よし、完璧。
0290デフォルトの名無しさん
2015/04/12(日) 22:40:07.52ID:cVd0kkwW学があるなぁ
0291デフォルトの名無しさん
2015/04/13(月) 12:13:36.48ID:TNNdvaW0OfficeTANAKAのセミナーの宣伝文句じゃねーか。
セミナー受ければその辺の違いが分かるようになります、とかっていう。
0292デフォルトの名無しさん
2015/04/13(月) 12:58:23.68ID:vaW8dGcwhttp://officetanaka.net/excel/vba/beginner/index.htm
0293デフォルトの名無しさん
2015/04/13(月) 13:14:43.48ID:iWawuGaD0294デフォルトの名無しさん
2015/04/13(月) 13:21:34.99ID:iWawuGaD0295デフォルトの名無しさん
2015/04/13(月) 13:22:21.44ID:vaW8dGcw0296デフォルトの名無しさん
2015/04/13(月) 13:22:56.09ID:vaW8dGcw0297デフォルトの名無しさん
2015/04/13(月) 19:35:58.95ID:Nl26Y8lL30年間C言語に関わってますが、なにか?
0298デフォルトの名無しさん
2015/04/13(月) 19:52:38.74ID:iWawuGaD_Genericって使ってる?
0299デフォルトの名無しさん
2015/04/13(月) 20:32:24.41ID:Nl26Y8lL使ってない
Cは組み込みでしか使ってないから、メーカーコンパイラだとまだサポートされてないし
そもそもそんなに使う機会なさげだしね
0300デフォルトの名無しさん
2015/04/13(月) 21:29:24.81ID:pRuBwmQ3いやー、ExcelのVBAだったらシート使えよって話なんでしょうけど、VB6上で扱ってるからそうも行かなくて。
RecoadSetはどっちかって言うとDataReaderみたいで値設定出来なそうだし、ただの配列だと項目として列に列名付けて引っ張るの変動的だと大変そうだし、
クラス作ってコレクションとかに行として突っ込むのも列名変動だと融通効かなそうだし。
いや、スレ違いと言うならVB6のスレに誘導してくれてもいいんですけどね。
0301デフォルトの名無しさん
2015/04/13(月) 22:49:42.32ID:vaW8dGcwワークシートオブジェクトはVBからでも使えるんだぜ?
0302デフォルトの名無しさん
2015/04/14(火) 03:37:14.18ID:yZaWizG/いや、ここはExcel弄る前のところなんで、できればシート使わない前提でお願いできれば。
0303デフォルトの名無しさん
2015/04/14(火) 05:51:57.10ID:ZWvZwDT80304デフォルトの名無しさん
2015/04/14(火) 06:01:36.27ID:yZaWizG/ではシートを使わないと制限の掛かった状態でExcel VBAで>>300と同じ内容をお願いします。
0305デフォルトの名無しさん
2015/04/14(火) 06:07:58.52ID:ZWvZwDT8createobject出来ないなら他の方法でやれば良いだけ
0306デフォルトの名無しさん
2015/04/14(火) 07:49:05.15ID:sORFX9lT都度Bookを開いたり、ExcelObjectを介在させると時間が掛かってしまいます。
それにDataTableのようにただ値を保持したいだけなのに、
その為だけにわざわざExcel開いてワークシートを使うのもなんかなぁと思ったのですが、
やっぱりどうしてもシートを使わないとだめでしょうか?
無理だと言うならVB6のスレに誘導して下さい。
0307デフォルトの名無しさん
2015/04/14(火) 08:17:51.11ID:zYEnmEOU>ただの配列だと項目として列に列名付けて引っ張るの変動的だと大変そう
これの意味をもっと具体的に知りたい
0308デフォルトの名無しさん
2015/04/14(火) 10:31:04.27ID:rcDR+pMaCreateObjectの実行時間なんてせいぜい数ミリ秒だろ
それで時間が掛かるとか、いったい何に使うのさ
0309デフォルトの名無しさん
2015/04/14(火) 10:49:29.04ID:0HPBZIqn君程度の作るしろもので時間が掛かるとか、笑止千万なんだが?
そういうのは何万レコードも処理するとか、Access等で1度の演算で膨大な数
呼び出すとかそういうケースですよ。
都度ブックを開くのが嫌ならDBでも使ってろ。
0310デフォルトの名無しさん
2015/04/14(火) 11:10:33.21ID:JeZk0L2tその本に、「ActiveCell.Offset(0,1).Range("A1").Select」というステートメントの意味が「一つ右の列にセルを移動」となっていたのですが、
このRange("A1")って、A1セルと全く関係がないみたいなのですがどういう意味ですか?
回答よろしくお願いします
0311デフォルトの名無しさん
2015/04/14(火) 11:35:47.08ID:rcDR+pMaこの場合は、ActiveCell.Offset(0,1) で示されたセルが基準点になって、そこから始まる範囲の一番左上がA1になる
だから、A1の指定はあってもなくても結果は同じ、これでも結果は同じになる
ActiveCell.Offset(0,1).Select
この方法だと基準より左、より上にあるセルは指定できなくなる
0312デフォルトの名無しさん
2015/04/14(火) 11:46:38.69ID:0HPBZIqn今、アクティブになっているセルを座標0.0として見た時に
offsetで0.1を指定するということは、y.xなので、横に1個(つまり、右に1個
移動するということになる。
それがA1かどうかは正直全く関係ない。その書き方は誤解を招く表現だね。
0313デフォルトの名無しさん
2015/04/14(火) 12:01:58.96ID:JeZk0L2t>>312
丁寧にどうもありがとうございました。
でもなぜこんなやり方があるのか不思議ですね
例えば、「ActiveCell.Offset(0,-5).Range("B1").Select」も「ActiveCell.Offset(0,-4)..Select」と表現すれば簡単になるのに…
「ActiveCell.Offset(a,b).Select」で全てのセルに移動できますよね
0314デフォルトの名無しさん
2015/04/14(火) 12:19:12.22ID:rcDR+pMaどうしてこんな書き方ができるのか、それはRangeオブジェクトの仕様だからです。副作用と言ってもいいでしょう
オブジェクトの仕組みを理解するには必用な知識ですが、初心者に教えることじゃないですね
だから、こんな風にもっと無意味な書き方もできてしまいます
ActiveCell.Offset(0, 0).Range("A1").Offset(0, 0).Range("A1").Select
0315デフォルトの名無しさん
2015/04/14(火) 13:02:32.78ID:umPyd9Hn> でもなぜこんなやり方があるのか不思議ですね
例えば、同じシートに3*5のサイズの表が複数個あるようなときに、全ての表に対して
topleftCell.Range("A1")
topleftCell.Range("B2")
などとアクセスできるのが便利(な人もいる)。
もちろん、
topleftCell.Cells(1, 1)
topleftCell.Cells(2, 2)
でも良いが。
0316デフォルトの名無しさん
2015/04/14(火) 13:12:54.88ID:iagCX5p5むしろ意味のある書き方(一応は結果に影響すると言う意味)で説明すべきじゃなかろうか?
例えば、
ActiveCell.Offset(3,4).Select と
ActiveCell.Range("D3").Select は同じ結果になる、みたいに。
ただ、敢えてそう書くメリットがあるかと言われれば
やっぱり思いつかないわけだけど。
0317316
2015/04/14(火) 13:16:04.64ID:iagCX5p5>>315さんが一応意味のある使い道をひねり出してくれてたね。
0318デフォルトの名無しさん
2015/04/14(火) 13:16:29.31ID:rcDR+pMa小さい表の位置を変えた時に対応しやすいってのはあるけど、そんなExcelをワープロみたいに使うやり方は
あまり推奨すべきじゃないと思うし
0319デフォルトの名無しさん
2015/04/14(火) 17:17:01.27ID:JeZk0L2tまた質問させていただくことがあるかもしれないので、そのときはよろしくお願いします。
0320デフォルトの名無しさん
2015/04/14(火) 23:19:18.72ID:yZaWizG/無理なら別にいいですと言いました。
別の所でもっといい案を頂きましたのでこの件はCloseさせて頂きます。
0321デフォルトの名無しさん
2015/04/14(火) 23:29:34.82ID:cuMLaLg/その前に>>307に答えてよ
0322デフォルトの名無しさん
2015/04/14(火) 23:58:39.81ID:yZaWizG/RecoadSetの代わりに配列でやってみれば分かると思います。
0323デフォルトの名無しさん
2015/04/15(水) 06:42:33.13ID:t3UUHND4RecoadSet w
まあ、構造体の配列つかってて構造体のメンバーを動的に定義したいと思ったことは何回かあるので、>>300 の気持ちはわからないでもない
>>308
数 ms で Excel 起動するとか、どんなモンスターマシンだよ w
0324デフォルトの名無しさん
2015/04/15(水) 07:50:06.23ID:uwjeRs/E自分のレベルが低くて分からないからって無理矢理押し付けたり煽ったりする回答者ってどうなの?
とは思った。
0325デフォルトの名無しさん
2015/04/15(水) 08:08:21.71ID:7pisdgd2あげている理由に疑問符がつくからさ。
0326デフォルトの名無しさん
2015/04/15(水) 08:48:35.48ID:lLW4R3Pt0327デフォルトの名無しさん
2015/04/15(水) 10:02:31.60ID:7pisdgd20328デフォルトの名無しさん
2015/04/15(水) 20:08:03.57ID:622rysnhそのファイルがサイズがでかく重く
普通に開いてからデータを調べて扱ってから閉じる方法だと
処理時間がものすごくかかります。
これもっと処理時間を短くする方法はありますか?
ADOを使ってデータベースとしてそのExcelファイルを扱う方法があると聞いたのですが
それだと速いですか?
0329デフォルトの名無しさん
2015/04/15(水) 22:33:01.81ID:0Tv6kfk+速度が必要ならPostgreSQLなどのデータベースを使って欲しい
ADOなどでExcelを開くなら一気に読み込むのではなく少しずつ読み込めば軽くなる(レスポンスがよくなる)かもしれない
全件アクセスするなら変わらないと思うが
0330デフォルトの名無しさん
2015/04/16(木) 12:40:44.24ID:Jej9KO2Wしかしそれ以前にExcelファイルを読ませようとすると
「非同期接続中に操作を行うことはできません。」とエラーが出るのですが
これを回避する方法は知りませんか?
0331デフォルトの名無しさん
2015/04/16(木) 19:49:43.80ID:5dxwiSt3実際には何をしているのか。それを高速化出来るか。というのを検討することになる。
凄くデカいファイルを加工できるなら、csvとかの軽いファイルにすれば開く時に軽くなるし、容量も少なく出来る。
またデータを一定基準で小分けにしてファイルを分け、ファイル名から大まかな特定が出来る様にすれば更に軽くなる。
0332デフォルトの名無しさん
2015/04/16(木) 20:42:55.89ID:8Aqhe2mucsv保存しときゃいいのか。うっかりしてたわw
0333デフォルトの名無しさん
2015/04/17(金) 15:50:07.78ID:WwDeOvZDどこに書くのがいいでしょうか?
Declare Function GetInputState Lib "USER32" () As Long
-----------------------------
Sub AAA
For i=1 to 10000
Call AAA 'SubBBBを1万回呼び出す
Next
End Sub
-----------------------------
Sub BBB
For i=1 to 2000
計算など
Next
End Sub 'SubBBBにかかる時間は1回あたり0.5秒ほどです
0334デフォルトの名無しさん
2015/04/17(金) 16:25:59.28ID:aGcs89jj0335デフォルトの名無しさん
2015/04/17(金) 16:43:08.63ID:WwDeOvZDDeclare Function GetInputState Lib "USER32" () As Long
-----------------------------
Sub AAA
For i=1 to 10000
Call BBB 'SubBBBを1万回呼び出す
Next
End Sub
-----------------------------
Sub BBB
For i=1 to 2000
計算など
Next
End Sub 'SubBBBにかかる時間は1回あたり0.5秒ほどです
0336デフォルトの名無しさん
2015/04/17(金) 16:53:19.80ID:SDwp/TU0For i=1 to 10000
Call AAA 'SubBBBを1万回呼び出す
DoEvents
Next
でなんでダメなの?
0337デフォルトの名無しさん
2015/04/17(金) 17:11:15.20ID:WwDeOvZD調べてみてSubBBBの
For i=1 to 2000
If GetInputState() Then DoEvents
って書いてたんですがよく反応なしになるので
場所が間違ってるのかと思いました。
Callのあとですか試してみます。
0338デフォルトの名無しさん
2015/04/17(金) 17:28:19.35ID:lGEgTHF3csv形式とxls形式とでは動作速度は変わりますでしょうか?どちらがより速いとかありますでしょうか?
0339デフォルトの名無しさん
2015/04/17(金) 17:31:47.31ID:1Snl7yZ80340デフォルトの名無しさん
2015/04/17(金) 17:35:10.67ID:eFMbj8TkV
_____
/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ はぁ?他に言う事ねぇのかよバーカw
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 |
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
0341デフォルトの名無しさん
2015/04/17(金) 17:53:41.79ID:+yzaDsFMそりゃ条件によってはDoEventsが実行されないんだから反応なしになるわな
>>338
10セルずつとかどうやって読み込むのかによる
100M超えるCSVとかDBつかえよマジで
0342デフォルトの名無しさん
2015/04/17(金) 18:13:27.22ID:lGEgTHF3詳しく知ってる人に聞くのが一番速いと言える
0343デフォルトの名無しさん
2015/04/17(金) 18:14:07.16ID:lGEgTHF3ば射場愛も>場合も 誤字。。
0344デフォルトの名無しさん
2015/04/17(金) 18:52:59.74ID:SDwp/TU0> 詳しく知ってる人に聞くのが一番速いと言える
人に聞いてもわからないよ。
結局自分で実測するしかない。
0345デフォルトの名無しさん
2015/04/17(金) 19:31:26.90ID:nybfq0bG0346デフォルトの名無しさん
2015/04/17(金) 20:55:11.89ID:7Zn/9K8M0347デフォルトの名無しさん
2015/04/17(金) 21:18:09.64ID:NNPS0hI50348デフォルトの名無しさん
2015/04/17(金) 21:24:52.39ID:7Zn/9K8M悔しかったんだね
0349デフォルトの名無しさん
2015/04/18(土) 01:19:17.79ID:TDz+1LLUこの答えがさらっと書けるイケメンはこのスレにはいないのか
0350デフォルトの名無しさん
2015/04/18(土) 01:54:29.94ID:/SLWohM+どうせ一番のボトルネックはディスクI/Oになるだろうから、
絶対的にデータ量の小さいCSVが有利じゃないかな
ただしExcelでCSVの部分的な読み込みをどうやるかは知らんけど
結局は実装次第か?
0351デフォルトの名無しさん
2015/04/18(土) 01:59:05.20ID:/SLWohM+CSVは可変長だと先頭から延々とスキャンしていかないと目的のレコードにたどり着けない
つまり最初の1組はCSVの方が有利
CSVで固定長ならシークが使えるからそこそこ効率良くランダムアクセスできる
0352デフォルトの名無しさん
2015/04/18(土) 08:35:23.99ID:Ql1IVHxp> xslxはZIP圧縮されてるから全体を読み込まないと部分的なアクセスができない
zip フォーマット知らないなら黙ってろよ...
0353デフォルトの名無しさん
2015/04/18(土) 09:33:59.92ID:JGmEtZnj時間が掛かってるから、ブックを開かずに検索する方法があったら俺も知りたいな。
0354デフォルトの名無しさん
2015/04/18(土) 11:52:14.87ID:pucpWveX何がすばらしいかというと
Dim 最終行 As Long
といった変数名に日本語がかけるから。素晴らしい。
変数だけでなく関数名にも日本語でかける。
はっきりいってC言語は糞
0355Office & Gamers ◆G144Hzgh2.0e
2015/04/18(土) 12:02:58.62ID:yZFnrc/60356デフォルトの名無しさん
2015/04/18(土) 13:28:54.70ID:/SLWohM+Cも日本語で書けるよ
処理系によってはそのまま書けるし、そうでなくてもプリプロセッサ次第
0357デフォルトの名無しさん
2015/04/18(土) 14:01:18.23ID:90A42Qo7素人っぽいコードになりそうだけどなw
0358デフォルトの名無しさん
2015/04/18(土) 15:03:24.30ID:ZKGrUtyV関数名を日本語にするのは意味があるかもしれないが、変数名は無意味だと思う。
というかメリットがない。わざわざ入力切替するのが面倒なだけ。
0359デフォルトの名無しさん
2015/04/18(土) 16:56:33.66ID:pucpWveXメリットは可読性がアップする
以下のコードをみてほしい。左辺だけみても何のrowなのか分からん。右辺をみて初めて意味が分かる
row = Range("A1").End(xlDown).Row
日本語で書いた場合、何をやっているか左辺だけで判断できるやろう
最終行 = Range("A1").End(xlDown).Row
確かに入力切り替えの手間はあるが、可読性があがるならいいことでは。
0360デフォルトの名無しさん
2015/04/18(土) 17:26:24.96ID:JGmEtZnjlastRowで駄目な理由を教えてくれ
0361デフォルトの名無しさん
2015/04/18(土) 17:44:36.55ID:FKQ/us+dPCやOSにどのような問題が発生しますでしょうか?
0362デフォルトの名無しさん
2015/04/18(土) 18:11:30.12ID:/SLWohM+Lastぐらいなら誰でもわかるけど、例えば「下から4行目」とか英語でどう書くか、誰でも知ってると思う?
0363デフォルトの名無しさん
2015/04/18(土) 18:30:13.87ID:F5qBeUpbPCの取り扱い説明書に〜時間以上は連続稼働しないでくださいって書いてなかった?
>>362
そもそも日本語だって変数名に「下から4行目」なんて付けるくらいならコメントで書かない?
0364デフォルトの名無しさん
2015/04/18(土) 18:45:01.76ID:F5qBeUpbように名前を付けさせると大変そう。特にモジュールレベル変数は頭アンダースコアで始めることができないし、
m_最終行みたいに英語混じっても変だし、モジュール変数_最終行みたいな名前でも長ったらしいし、
モ_最終行みたいだと意味分かんないし。
0365デフォルトの名無しさん
2015/04/18(土) 18:46:23.12ID:/SLWohM+もう一度英和辞典で意味を調べるハメになったりとか
それなりに長くやってれば、誰でも経験あると思うんだけどなあ
あと同僚が英語を放棄して何もかもローマ字で書いてるのに気付いて脱力したり
0366デフォルトの名無しさん
2015/04/18(土) 18:56:52.63ID:F5qBeUpb気持ちは分からないわけじゃない。仕事でやってて後で誰か見るって言うなら取り決め作って合わせた方がいいし、
自分が使うだけのツールなら自分の好きにすればいいんじゃないだろか。
0367デフォルトの名無しさん
2015/04/18(土) 19:05:35.62ID:GgnclObVどの言語が読みやすいって話になるならたとえばスワヒリ語しかわかんないヤツには日本語も英語も同等にクソだからケースバイケースとしか言いようがない。
こういう明らかに答えが出ない話で自分の考え押しつけ合うの好きなヤツがいるよな。
0368デフォルトの名無しさん
2015/04/18(土) 19:29:19.52ID:F5qBeUpb押し付けるつもりは全くないし文章読み返したけど、どこにも押し付けるようなことは書いてないと思うけど、どこ?
0369デフォルトの名無しさん
2015/04/18(土) 21:17:13.95ID:7d4DMTG7英語は語学力の限界で、よく似た意味の単語を複数思い付けないし、使い分けが怪しくなる
日本語だと、カタカナ語がどうしても避けられなくて字数が長くなりがち、ソースが非常に読みづらくなる
0370デフォルトの名無しさん
2015/04/18(土) 21:20:50.23ID:ZKGrUtyVわかりやすい名前がいいのはそりゃそうだけど、思いつかないなら aaa とか tmp で十分さ。
0371デフォルトの名無しさん
2015/04/18(土) 21:54:49.48ID:5X4zf/wqunkoとかはだめですか?
0372デフォルトの名無しさん
2015/04/18(土) 22:05:23.35ID:SRGYwCuiだから好きにしろと書かれている
判らないなら自分はそういうことも判らない低能ですと
言って大声で叫んで寝ろ低能
0373デフォルトの名無しさん
2015/04/18(土) 22:05:32.89ID:5X4zf/wqなにか早く開く方法の提案はいくつかありますか?
0374デフォルトの名無しさん
2015/04/18(土) 22:06:52.94ID:5X4zf/wqなんだとこのやろう
>>373に補足して、早く開く方法というのはもちろんVBAでです。
0375デフォルトの名無しさん
2015/04/18(土) 22:08:57.97ID:/SLWohM+まずはボトルネックを調査
ブックのファイルサイズが関係あるかどうか調べる
時間帯によって速度が変わるかも調べる
0376デフォルトの名無しさん
2015/04/18(土) 22:09:05.57ID:F5qBeUpb実際お客さんから改修依頼で預かったツールに使われてたこと有ったわw
改修箇所ではないから、差分証跡だけ取って預かる前と差異がないとして流したけどなw
0377デフォルトの名無しさん
2015/04/18(土) 23:11:26.81ID:JGNN/f1p変数とコメントで事実が2か所存在してしまっている
1事実1か所の原則に反する
変数名をコメントにしてしまうのは意味がある
ただ、現在のVisualStudioでは日本語変数名は入力支援が貧弱なので扱いが面倒だ
0378デフォルトの名無しさん
2015/04/18(土) 23:16:32.90ID:ZKGrUtyV却って「どういう意味だろう?」と考えさせてしまうからダメなんじゃないかと思うぞ。
0379デフォルトの名無しさん
2015/04/18(土) 23:24:46.25ID:JGNN/f1p変数を見ればその変数の型、スコープ、寿命、内容など全てがわかるべき
0380デフォルトの名無しさん
2015/04/18(土) 23:39:35.26ID:nEc9whOH何言ってるの?
http://i.imgur.com/d0khnV9.jpg
0381デフォルトの名無しさん
2015/04/19(日) 01:06:41.56ID:dY1eD7XQ変数の型、スコープ、寿命、内容など全てがわかるべきだが、変数「名」にそんなものを求めるべきではない。
名前なんてどうでもいい。
0382デフォルトの名無しさん
2015/04/19(日) 02:12:00.00ID:13975baE「PageSetup」プロパティを使うと、「PageSetup」オブジェクトを取得できます
と書いてあるんですが、「PageSetup」というのはプロパティ、オブジェクトのどちらなのですか?
0383デフォルトの名無しさん
2015/04/19(日) 03:23:50.45ID:WMQbPkw9PageSetupというプロパティもあるしPageSetupというオブジェクトもある
Dim ps As PageSetup 'これはオブジェクト(正確にはPageSetup型オブジェクト変数の宣言)
Set ps = ActiveSheet.PageSetup 'これはプロパティ(PageSetupオブジェクトを返してpsにセット)
ps.PaperSize = xlPaperA3
...
0384デフォルトの名無しさん
2015/04/19(日) 08:15:55.58ID:UftegmFaはどっちなんや?
0385デフォルトの名無しさん
2015/04/19(日) 08:25:32.38ID:cbKo0tHc0386デフォルトの名無しさん
2015/04/19(日) 09:28:41.73ID:proobNaS変数名は命名が重要であり
その変数の型、スコープ、寿命、内容などの情報をどうやって変数名につめこむのがいいかいとう話をしているのだ。
どこかを大文字小文字にする、空白かアンダーバーか、型を先頭に書くハンガリアン法、などなど。
http://data.okinny.heypo.net/image/large/488ba9207bae4efb6cf3f375da98f5dc.jpg
0387デフォルトの名無しさん
2015/04/19(日) 09:47:46.40ID:dY1eD7XQ変数名は重要ではない
型、スコープ、寿命 ⇒ 変数名に反映するな
内容 ⇒ 変数名に反映してもいいが、しょせんその場限りのものだ
ルールが増えるのは悪だ
0388デフォルトの名無しさん
2015/04/19(日) 10:37:57.93ID:H11CMV7L>>367
その辺VBAでこだわり過ぎてるからいつも荒れるんじゃない?
いいじゃない、別に好きに命名して使ってたって自分らが困る訳じゃなし。
俺はその辺の話このスレでするのはとっくに諦めたよ。
0389デフォルトの名無しさん
2015/04/19(日) 10:40:36.74ID:Tsl5gnGxいつの時代の画像だよ
0390デフォルトの名無しさん
2015/04/19(日) 10:41:44.40ID:vasfhw5N皆様のオススメはどの書籍でしょうか?
0391デフォルトの名無しさん
2015/04/19(日) 10:58:42.14ID:Tsl5gnGxたぶんどれ読んでも大差ない
たぶん
0392デフォルトの名無しさん
2015/04/19(日) 11:04:19.91ID:jwGG5Tfpお勧めは買わないでネットで必死こいて調べること。
調べたことを自分で纏めてノート取っておくこと。
0393デフォルトの名無しさん
2015/04/19(日) 11:05:47.12ID:cbKo0tHc0394デフォルトの名無しさん
2015/04/19(日) 11:47:47.66ID:Tsl5gnGxそれでも3章ぐらいまで進むと本の通りにやるのがつまらなくなって
ネットで自分のやりたいことを検索するようになる
結果4章から9章はまったく読まない、それでいいんだよ
0395デフォルトの名無しさん
2015/04/19(日) 12:26:34.64ID:yIGS2rGn条件分岐とか繰り返しとか。俺はC言語をかじってるから、VBAで書き方が異なっていても考え方が一緒だし、
リファレンスのような本で十分。所詮VBAも道具にすぎん
0396デフォルトの名無しさん
2015/04/19(日) 13:26:46.19ID:/0rJTMjpName ステートメントを使ってファイル名を変更するプログラムを作りました。
oldName = Dir(dirName, vbNormal)
Do While oldName <> ""
newPath = dirName & addName & oldName
oldPath = dirName & oldName
Debug.Print oldPath, newPath
Debug.Print Len(newPath)
Name oldPath As newPath
oldName = Dir()
Loop
dirName+oldName を dirName+addName+oldNameに変更するものです。
普通のアスキーコードx20〜x7eのファイル名ならうまく動くようですが
フランス語のアクセント記号や「ae」の合字などがあると
実行時エラー'52' ファイル名または番号が不正です。というエラーが出ます。
何か対策はありますか。
0397デフォルトの名無しさん
2015/04/19(日) 13:27:46.33ID:/0rJTMjp0398デフォルトの名無しさん
2015/04/19(日) 14:29:15.93ID:H11CMV7L0399デフォルトの名無しさん
2015/04/19(日) 14:48:34.51ID:/0rJTMjpCD情報なので与えられた条件です。音楽CDの各トラックの時間情報を元にgracenoteなどのデータベースを検索して
各トラックの名称を取得し、各トラックの音楽情報をディスクに書き込んでいます。
再生順を正しくするためには複数枚のCDの場合、何枚目かの情報を書き加えないといけないのです。
396のaddNameというのが何枚目かという情報で、oldNameというのが01からの連番で始まった
フランス語もありのトラック名称が続きます。
0400デフォルトの名無しさん
2015/04/19(日) 15:12:58.85ID:Tsl5gnGxFileSystemObjectを使えばユニコードも普通に処理できる
サンプル
Sub m1()
Set FSO = CreateObject("Scripting.FileSystemObject")
Path = "C:\"
OldName = "test.mp3"
NewName = Range("A1") & ".mp3" ' A1にはユニコードの文字列が入っている
Set File = FSO.GetFile(Path & OldName)
File.Name = NewName ' ファイルのリネーム
Set FSO = Nothing
End Sub
実行結果の画面キャプチャ
http://i.imgur.com/7E1EHMx.png
0401デフォルトの名無しさん
2015/04/19(日) 15:36:10.69ID:cSXyLlQWDim toshi As String
100
toshi = InputBox("あなたの年齢を入力してください!", Title:="年齢入力")
If toshi = "" Then
MsgBox "もう一度、あなたの年齢を入力してください!",16,”再入力!”
GoTo 100
Else
Range("C5").Value = toshi
End Sub
というプロシージャがあったとします。
そのプロシージャを実行して、例えばInputBox関数に25と入力した場合、
toshiという変数は文字列として宣言されているので
セルC5の値=toshi=25という文字列
となるはずなのに、実際には25という数値が入力されるのはなぜですか?
0402デフォルトの名無しさん
2015/04/19(日) 15:36:25.71ID:/0rJTMjpどこかでエンコードをUTF-8にでもすればいいのかと思っていました。
FileSystemObjectですか、やってみます。
0403デフォルトの名無しさん
2015/04/19(日) 15:56:04.57ID:Jg9Fksmfスコープと寿命って意味合い違うのん?
0404デフォルトの名無しさん
2015/04/19(日) 16:27:44.96ID:cbKo0tHcエクセルのお節介。
Range("C5").NumberFormatLocal = "@"
とかしておけば勝手に変換されないはず。
0405デフォルトの名無しさん
2015/04/19(日) 16:37:29.54ID:DLETAMYv>>351
>>352
2日間あれこれテストしてみたけど
CSVからの数値の読み込みはxls形式より明らかに遅いという結果になった。
二重チェックしてないので定かではないが、、
0406デフォルトの名無しさん
2015/04/19(日) 17:03:50.31ID:cSXyLlQW返事ありがとうございます。
本来、25は文字列として入力されたはずなのに、
excelが勝手に25を文字列から数値に変換しているという認識で大丈夫ですか?
0407デフォルトの名無しさん
2015/04/19(日) 17:37:43.02ID:DLETAMYv結論CSVは軽いけどVBAが読むには足りないデータがありそれを補足するために余計に時間がかかると見た。
どうだろうか?
0408デフォルトの名無しさん
2015/04/19(日) 19:21:55.27ID:WMQbPkw9Static変数とか、スコープ抜けても寿命は尽きない
0409デフォルトの名無しさん
2015/04/19(日) 19:53:42.94ID:PXqQj4UFサブブロA →サブブロB〜Dをランダムに呼び出し → サブフE 最終集計処理→結果より次の数値を持たせてAからスタート
繰り返すうちにエラーが出る。。
サブブロB〜Dを必要なくても順に呼び出し必要ない物はしょりをスキップするように書くと動きましたが
この中間処理のパターンが膨大ににある場合は無駄な処理時間を要することになりますが
これはしょうがないのでしょうか?
中間処理のコードですが1つ1つが結構巨大コードなため1プロシージャにまとめてセレクトケースなどで実行させることは出来ません。。
この場合良い書き方はあるのでしょうか?
0410デフォルトの名無しさん
2015/04/19(日) 20:28:24.90ID:PXqQj4UF説明が下手ですみません
要は中間処理であらかじめ用意した解析コードの書かれた複数のプロシージャを結果に応じてランダムに呼び出し対場合は一体どうすれば良いのですか?
構造化プログラミングは使わなくても全呼び出ししないと行けないようですが。そういう物なのですか?ランダムでも動かす方法はあるのでしょうか?
0411デフォルトの名無しさん
2015/04/19(日) 21:57:36.46ID:dY1eD7XQおまえひとをバカにしてるだろ?
0412デフォルトの名無しさん
2015/04/19(日) 22:01:59.85ID:AvGvLpfW0413デフォルトの名無しさん
2015/04/19(日) 22:28:51.92ID:yBTKbJUQごめんなさい。
http://i.imgur.com/MPJaSxF.jpg
0414デフォルトの名無しさん
2015/04/19(日) 22:33:01.43ID:dY1eD7XQ0415デフォルトの名無しさん
2015/04/19(日) 23:16:40.66ID:4Q4C5ycA0416デフォルトの名無しさん
2015/04/19(日) 23:31:20.85ID:6VTvXYTp文章に句読点を打て
文の意味や、例の構造が、全然わからん。
ちゃんと説明しろ
0417デフォルトの名無しさん
2015/04/19(日) 23:53:27.53ID:QC/66xan別にランダムでプロシージャ呼び出してもエラーにはならない。
書いていることがよく分からないが、ひょっとしてプロシージャAを抜ける前にプロシージャAを呼んでいたり、
プロシージャBの中でプロシージャCを呼んで、その中でプロシージャBを呼んでいたり、抜ける想定がない
変な再帰で組んでいるんじゃないか?
だったらその内スタックエリアがオーバーフローしてエラーになるのもうなずける。
そうだとしたら、構造化言語であろうが無かろうが関係ないし、きちんとした作りで作れとしか言いようがない。
0418デフォルトの名無しさん
2015/04/19(日) 23:54:44.49ID:QC/66xanp410っってなんだよ。>>410ね
0419デフォルトの名無しさん
2015/04/20(月) 00:18:18.27ID:jWcSjqXL1回実行するだけならエラーは出ませんが何百回もくり返し実行するとでるようです。
昔に書いたコードでエラー名は覚えていませんが
それに鳴かされました。短いコードはセレクトケースで解決しましたが
プロシージャにわけた物に関しては
実行させ無い物まですべて呼び出し、
各プロシージャ内の先頭にIF文で動かさない場合はスルーさせるコードをつけたら
何万回繰り返してもエラーは出なくなりました。
0420デフォルトの名無しさん
2015/04/20(月) 00:32:56.70ID:jWcSjqXL>プロシージャBの中でプロシージャCを呼んで、その中でプロシージャBを呼んでいたり、抜ける想定がない
まだ覚え立ての頃だったのでこれがあったかもしれません。
ランダム呼び出しはエラーにならないのならこれを機会にコードの合理化に挑戦したいですね
0421デフォルトの名無しさん
2015/04/20(月) 07:13:03.95ID:9avAm14N0422デフォルトの名無しさん
2015/04/20(月) 07:43:55.06ID:jcO4RoYw0423デフォルトの名無しさん
2015/04/20(月) 07:56:58.33ID:pAlOCukf乱数作ってSelectCaseで呼び出すとか?
0424デフォルトの名無しさん
2015/04/20(月) 08:58:22.70ID:rutaMFFZ初心者なんて得てしてそんなもんだよ
てか、>>417氏みたいに質問の意図を汲み取って回答できる人もいるんだから
分らないなら一々チャチャ入れずにだまってスルーしときなよ
0425デフォルトの名無しさん
2015/04/20(月) 11:40:09.47ID:jcO4RoYw0426デフォルトの名無しさん
2015/04/20(月) 11:48:37.29ID:rutaMFFZ>>420みたらまじめに相談してたように見えるけど?
というか、仮に悪意があろうがなんだろうが
そんなのアンタがこのスレを仕切ろうとする理由にはならんよ。
答えたい人は答えるし答えたくないヤツはスルーする
それでいいじゃん。
0427デフォルトの名無しさん
2015/04/20(月) 12:02:25.38ID:pQJlMMJKなら黙ってろよ。回答能力もない馬鹿なら尚更だ
ここはお前が管理している板でもスレでもないんだよ。いちいち横から口挟まずに
その臭い口を閉じて、ROMってろ。誰もお前のようなマヌケの回答は期待していない。
0428デフォルトの名無しさん
2015/04/20(月) 12:12:02.85ID:jcO4RoYw0429デフォルトの名無しさん
2015/04/20(月) 12:17:04.46ID:pQJlMMJK黙って消えろ。
悪意があるなし お前の判断などいちいち書くな。目障りだ。
0430デフォルトの名無しさん
2015/04/20(月) 12:23:04.11ID:0I5iuM9W0431デフォルトの名無しさん
2015/04/20(月) 18:07:20.08ID:9TP/HHYlお前のレスの方が目障り
0432デフォルトの名無しさん
2015/04/20(月) 19:10:17.90ID:WrAJ0lVp0433デフォルトの名無しさん
2015/04/20(月) 21:01:30.56ID:l89ptU69内容的にふざけているようにも見えないし、読み解けない範疇ではないな。
何をもって「悪意あるネタ」と判断したのかちょっと興味ある。
0434デフォルトの名無しさん
2015/04/20(月) 21:10:58.56ID:fQFSMn1D0435デフォルトの名無しさん
2015/04/20(月) 21:32:28.53ID:gjl75LOsそれができていないのは悪意とはいわないが、人に読んでもらうような丁寧な文章だとは思えない。
0436デフォルトの名無しさん
2015/04/20(月) 21:39:23.56ID:9avAm14N0437デフォルトの名無しさん
2015/04/20(月) 21:44:57.00ID:rutaMFFZ回答者のほうも必ずしも丁寧ではないから
質問者だけにそれを要求は出来ないなぁ……
答える側が偉いってわけでも上位者ってわけでもないんだし。
0438デフォルトの名無しさん
2015/04/21(火) 07:23:59.33ID:0HUTVP1u消えろ
0439デフォルトの名無しさん
2015/04/21(火) 07:46:29.42ID:Pd3/VmLq0440デフォルトの名無しさん
2015/04/21(火) 08:28:15.68ID:u891fA0I>これはしょうがないのでしょうか?
これはひとまず置いておいて
エラーの部分を直そうよw
エラー名を確認しておいで。
0441437
2015/04/21(火) 09:39:17.18ID:oL1dFXB7そんなの善意の押し付けにすぎないよ
少なくとも俺は質問者にそんなものを求めていない
自分が答えられる範囲で答えたい内容なら答えるだけ
質問内容が嫌なら答えない自由は誰にでもある
答えたい人が答えれば良い
みんなが不快なら誰も答えないでしょ
でも実際に回答している人は居るんだから
感じ方は人それぞれなんだよ
その意味において
個々の回答者に許されるのは自分が回答しないという事だけであって
質問者を攻撃し排斥する事で他人が答える機会を奪う権利はないよ
もちろん、OSやExcelのバージョンが書いてなかったり、状況説明が曖昧だったりしたときに
質問内容や文章そのものの不備を指摘することは構わないと思う
それは質問者にとっても、他の回答者にとっても益するものだからね
直近では>>440がそうだよね?
(個人的にはこの質問は>>417で既に解決しただろうと思ってるけど)
0442デフォルトの名無しさん
2015/04/21(火) 11:37:22.81ID:pUka2TzQ0443デフォルトの名無しさん
2015/04/21(火) 13:51:51.98ID:/3GwGdzT0444デフォルトの名無しさん
2015/04/21(火) 13:54:24.63ID:o3q83Z/W作ってみたら?
まぁVBAマスター様たちにダメ出しくらいまくって荒れるだけだと思うがw
0445デフォルトの名無しさん
2015/04/21(火) 14:10:30.61ID:Ys0gBcPs0446デフォルトの名無しさん
2015/04/21(火) 14:38:28.14ID:/3GwGdzT「横から失礼します。このライブラリがすごいです。」
って書き逃げでもいいんじゃね?
0447デフォルトの名無しさん
2015/04/21(火) 17:28:36.26ID:xB0DS6q9> 答える側が偉いってわけでも上位者ってわけでもないんだし。
偉いし上位でしょ。
0448デフォルトの名無しさん
2015/04/21(火) 20:30:53.89ID:JOwb9Jcoその辺はスタンスによるんじゃないか?
まぁでもマナーとしてお互いを尊重するのはいいことだと思う。
0449デフォルトの名無しさん
2015/04/21(火) 20:55:03.23ID:h247aERS少なくともお前は偉くもなんともないよ
0450デフォルトの名無しさん
2015/04/21(火) 20:58:28.36ID:XS2xEzbR怖いガチ勢だったらどうするんだよ
0451デフォルトの名無しさん
2015/04/21(火) 21:03:38.87ID:hVAOVrVr質問と回答と言う意味だと上位だと思うけど、人間としてどうかは別だからねぇ
0452デフォルトの名無しさん
2015/04/21(火) 21:13:40.75ID:JPiu54zH0453デフォルトの名無しさん
2015/04/21(火) 21:16:11.21ID:16ISYAs+特にVBAはGUIがあるからイメージしやすく、Variant型のせいで何となくでも動くので出来る様になった気になってしまう。
つまり何が言いたいかというと「仕事でVBAやってました」ってヤツの信用ならなさは異常。
0454デフォルトの名無しさん
2015/04/21(火) 21:24:08.00ID:hVAOVrVrコード見てオブジェクト変数使ってるかどうかで大体わかる
0455デフォルトの名無しさん
2015/04/21(火) 21:25:00.68ID:XS2xEzbR0456デフォルトの名無しさん
2015/04/21(火) 21:30:04.04ID:XS2xEzbRひねくれているかもしれないが、俺はマイクロソフト・テクノロジーに極力触れないようにVBAを書いてきた。
関わる気がないからだ。
だからCreateObjectとかそのへんはなるべく使わないようにしている。
0457デフォルトの名無しさん
2015/04/21(火) 21:50:14.65ID:aHaNlkZP「○○の□□は異常。」
このボキャブラリーのなさ、語彙の貧弱さはどうにかならんか?
知り合いでキモい人を3人知っているが、3人そろってインターネットで口癖のように「○○の□□は異常。」と書き込んでいた。
あなたもきっとキモい人なのであろう。
>>456
Excel自体がマイクロソフト・テクノロジーですよ。
0458デフォルトの名無しさん
2015/04/21(火) 21:59:03.16ID:XS2xEzbR>Excel自体がマイクロソフト・テクノロジーですよ。
そうなんだけどね。
VARIANTとSafeArrayだけで構成されてると安心できるんだ。
"Scripting.FileSystemObject"とかであれば使う気するけど、それ以外のものは自分でdll作った方が気が楽。
0459デフォルトの名無しさん
2015/04/21(火) 22:06:00.62ID:16ISYAs+かなり遅かった印象があるんだが、そんな環境で気が楽ってのは分からないな。
0460デフォルトの名無しさん
2015/04/21(火) 22:08:57.37ID:XS2xEzbRごめん__int32とかの基本形は別
0461デフォルトの名無しさん
2015/04/21(火) 22:40:59.87ID:ffKJD6wVこのフォーマットはプログラム組んであるから明日からコレ使ってねと言った上司。
コレってマクロの記録じゃないですか!!
誰もが知っている一部上場企業の現場です。
スレ違いの愚痴スンマセン。
0462デフォルトの名無しさん
2015/04/22(水) 00:22:17.45ID:HqgslBZQいやいや、VBAの基本型に__int32とかないから。強いて言えばLongがそれに該当するか。
0463デフォルトの名無しさん
2015/04/22(水) 05:46:07.78ID:DqDjP5Qa意味不明なポリシーをネットで披露して恥ずかしくないんだろうか
0464デフォルトの名無しさん
2015/04/22(水) 08:21:48.67ID:iwbaaLY9では、VBAを辞めて、この板からも去って、そして、人生の幕も卸せばいい
と思いますよ。君のような馬鹿はね。
0465デフォルトの名無しさん
2015/04/22(水) 08:23:14.36ID:iwbaaLY9アンチマイクロソフト崩れ気取りのアホなんでしょ。中二病の末期に
よくある。
なのに、使ってるのがVBAだのWindowsだのww
しかも型付けひとつまともにできないような5流プログラマ。
こういうマヌケはJavaScriptでもやっていればいいと思いますよ。
0466デフォルトの名無しさん
2015/04/22(水) 08:39:12.69ID:mQeLnHaoN-BASICとHu-BASICの違いに戸惑ったやつは少なくない
0467デフォルトの名無しさん
2015/04/22(水) 08:44:53.09ID:+vHWvwHP0468デフォルトの名無しさん
2015/04/22(水) 09:09:31.52ID:UT+wGgAk標準モジュールの上部に書いたPublicの変数は
次回にもその値は記憶されたパパですか?
0469デフォルトの名無しさん
2015/04/22(水) 09:10:07.55ID:UT+wGgAko まま
0470デフォルトの名無しさん
2015/04/22(水) 09:14:12.21ID:WdF90UyGVBAに別方向の味付けをしようとしている有名ライブラリがあるじゃん。
0471デフォルトの名無しさん
2015/04/22(水) 09:16:22.24ID:UT+wGgAkイミディエイトwindowで値を調べるとmxは表示されるけどfxは保存されてないみたいなんです。
[標準モジュール]
Public mx As Integer
Sub test()
UserForm1.Show vbModeless
End Sub
[フォームモジュール]
Public fx As Integer
Private Sub CommandButton1_Click()
fx = fx + 1
End Sub
Private Sub CommandButton2_Click()
mx = mx + 1
End Sub
0472デフォルトの名無しさん
2015/04/22(水) 09:19:33.00ID:UT+wGgAkイミディエイトwindowで
? a
と、aの値を調べようとすると空白がかえってくる。
でも標準モジュールの上部にPublic a as Integerと書いた瞬間に
? a
とすると 0 がかえってきた。
0473デフォルトの名無しさん
2015/04/22(水) 10:27:30.91ID:UT+wGgAkUserForm1.fx
で、値が表示されるようになったよ
0474デフォルトの名無しさん
2015/04/22(水) 10:29:23.05ID:iwbaaLY9性器ってなんだよ。プログラム板で卑猥な言葉つかうなって。
0475デフォルトの名無しさん
2015/04/22(水) 10:39:09.99ID:UT+wGgAkちんこorまんこのことです。
0476デフォルトの名無しさん
2015/04/22(水) 10:49:58.10ID:WdF90UyGふざけてるんなら出て行きな。
それを使って面白いことが出来るというなら示せ。
0477デフォルトの名無しさん
2015/04/22(水) 11:34:01.34ID:oUgI0BBb0478デフォルトの名無しさん
2015/04/22(水) 11:53:40.29ID:WdF90UyG0479デフォルトの名無しさん
2015/04/22(水) 11:55:44.99ID:BrMnuWaj> "Scripting.FileSystemObject"とかであれば使う気するけど、それ以外のものは自分でdll作った方が気が楽。
一人で完結することしかやらないんであれば、それでもいいけどね。
0480デフォルトの名無しさん
2015/04/22(水) 12:12:04.46ID:WdF90UyG気が楽ってどういう意味?
実は自分も同じようなことをやっているかもしれない。
Mac版Excelでもほぼ同じコードを動かすためだけど。
0481デフォルトの名無しさん
2015/04/22(水) 12:38:52.27ID:ObY6rSG70482デフォルトの名無しさん
2015/04/22(水) 17:05:26.08ID:Gr0aLB03お前の基準なんぞ知ったことか
0483デフォルトの名無しさん
2015/04/22(水) 19:39:15.62ID:WdF90UyG0484デフォルトの名無しさん
2015/04/22(水) 19:42:53.14ID:PK68vyTH初めてプログラムの勉強をするのでおすすめの方法を教えていただきたいと思います。
0485デフォルトの名無しさん
2015/04/22(水) 19:47:38.38ID:Gr0aLB03のシリーズなんかよろしいんじゃ
0486デフォルトの名無しさん
2015/04/22(水) 21:03:53.16ID:jkp6++rG英和辞典だけで英会話ができるようになる人なら良いんだろうけど
初心者が始めて勉強するためのもんじゃないと思うが
0487デフォルトの名無しさん
2015/04/23(木) 00:15:02.70ID:2CYs0DSE次善の策として、エレガントなコーマンはモチベーションを高める材料にはなる。
0488デフォルトの名無しさん
2015/04/23(木) 00:55:29.01ID:P9hfxpsG0489デフォルトの名無しさん
2015/04/23(木) 05:36:46.65ID:VM6FE8p1Worksheets("Sheet1") がオブジェクト
.Range("A1") もオブジェクト
.value がプロパティ
1 が値
でいいの?
0490デフォルトの名無しさん
2015/04/23(木) 06:28:22.42ID:av3o5i/d厳密に言うともうちょい長くなるけど
間違ってはいない
0491デフォルトの名無しさん
2015/04/23(木) 08:02:05.09ID:MOJZs/rD専門板で余計な会話は慎め。
0492デフォルトの名無しさん
2015/04/23(木) 08:03:31.76ID:MOJZs/rDクラス、メソッド、値
それぞれを変数に格納した時は、その通りといえるけれどな。
0493デフォルトの名無しさん
2015/04/23(木) 08:29:21.32ID:J7PhUCRsドット付けて書くと、普通はそのドットの前にあるオブジェクトのメンバだと取るんじゃね
この場合はWorksheetオブジェクトのRangeプロパティと取る方が正しいだろ
0494デフォルトの名無しさん
2015/04/23(木) 08:30:53.53ID:29z1l0hyWorksheet、Range、Value、1、と4つ列挙されてて3つしか答えが無いってどーゆーこと?
0495デフォルトの名無しさん
2015/04/23(木) 12:41:17.89ID:RD6nQcL7少し肩の力抜けよw
そんな事じゃ良いアプリ作れんよw
0496デフォルトの名無しさん
2015/04/23(木) 17:14:29.80ID:lY4YzXQr> この場合はWorksheetオブジェクトのRangeプロパティと取る方が正しいだろ
Rangeプロパティで取得したものは、Rangeオブジェクト
0497デフォルトの名無しさん
2015/04/23(木) 21:10:25.76ID:+O6VWDUuクラスとか言ってる奴は、いまいち理解してない人だからスルーでいい
0498デフォルトの名無しさん
2015/04/23(木) 22:18:18.06ID:MCctmnNE0499デフォルトの名無しさん
2015/04/23(木) 22:21:16.42ID:zOzRaArG両手使うと良いと思いますよ
0500デフォルトの名無しさん
2015/04/23(木) 22:27:20.52ID:MCctmnNE今食事中で手が離せません!!
0501デフォルトの名無しさん
2015/04/23(木) 22:29:35.11ID:zOzRaArGでは真ん中の棒を使えば良い。
距離が足りないときは揉んだり、xvideosを閲覧すると伸びる伸縮性があるので届くようになります。
0502デフォルトの名無しさん
2015/04/24(金) 12:49:53.51ID:fn1zmNrt0503デフォルトの名無しさん
2015/04/24(金) 19:27:52.53ID:cgmvlwhf0504デフォルトの名無しさん
2015/04/24(金) 21:44:19.40ID:vlOeNW1P質問ですがセルにアクセスするときRangeとCellsの2種類あるんですが
なんで2種類もあるんですか。使いやすいさを考えると断然Rangeのが上なのに
Cellsは数値を2か所埋め込んでいかないといけないので、しかもそれがどのセルを参照しているのか
意識しておかないとバグの元になると思うんです。
はっきりCellsいらないんじゃないですか。Cellsが必要なケースってなんです?
0505デフォルトの名無しさん
2015/04/24(金) 22:22:20.10ID:VUm4Qq0lForNextとかではもっぱらCellsが便利だからな。
そのうち分かる。
0506デフォルトの名無しさん
2015/04/24(金) 22:27:57.36ID:cgmvlwhfFor 〜 Next や Do Loop でどんどんセル位置を変化させていく時のことを考えろよ
それも1行とか1列とかでなしに。
Cells(i,j)でiやjを変化させた方が楽だろ
0507デフォルトの名無しさん
2015/04/24(金) 22:30:14.98ID:EgwUeymWRangeの処理はCellsよりも重いので、セルを一つずつ処理する場合はCellsを使う方が好ましい。
表記の仕方がRangeとCellsで逆なので最初は混乱するかもしれないが、慣れればRangeよりもCellsを使うと思う。
というか「数値を2カ所に〜〜」って事は、たぶんRange("A"& i)みたいな使い方してるんだろうけど、列が可変の場合はどうするつもりなんだ。
0508デフォルトの名無しさん
2015/04/24(金) 22:31:22.01ID:BfsRfAtY0509デフォルトの名無しさん
2015/04/24(金) 22:50:01.02ID:vlOeNW1P>列が可変の場合はどうするつもりなんだ。
Range("A1").offset(0,j)
列が可変のときはoffset使ってアクセスしながらマクロ組んでたけど
>Rangeの処理はCellsよりも重い
でいわれてるようにcellsつかったほうがいいのか
0510デフォルトの名無しさん
2015/04/24(金) 23:07:00.69ID:BfsRfAtYRangeとOffsetを使いこなして、読みやすいプログラムを書く>>509の方が断然スマートですね。
0511デフォルトの名無しさん
2015/04/24(金) 23:21:04.51ID:godUEfQO0512デフォルトの名無しさん
2015/04/25(土) 00:27:51.51ID:7Ju+0bPxRangeの範囲は二つのCellsで指定出来るからRangeを制御するクラスを作るとき、
その中で二つのセルをコントロールするクラスのインスタンスを生成して使うと結構使いやすいんだよ。
もちろん範囲を直接設定したりするのとコンバート機能は持たせるけどね。
どちらからでも設定できてすぐ変換する機能を持たせるように作って使ってみると、
ああ、なるほどねって思うことが出てくるよ。
0513デフォルトの名無しさん
2015/04/25(土) 05:40:49.61ID:U/6kymEa>Rangeの処理はCellsよりも重いので
初耳だけど、ソースは?
0514デフォルトの名無しさん
2015/04/25(土) 06:01:14.12ID:8ddnTGgpCellsだと二次元で番地がすぐに分かるから
offsetよりは見やすいと思ったが。
0515デフォルトの名無しさん
2015/04/25(土) 06:25:11.13ID:IoK0sU8lSet c = Cells.Find("HOGE")
For i = 0 To 100
c.Offset(0,i) = "HOGE"
Next
という様にFindと合わせてOffsetを使うことはあるかな。
0516デフォルトの名無しさん
2015/04/25(土) 06:45:04.80ID:U10MupQmなんで i もRange型で宣言してるんだ?
0517デフォルトの名無しさん
2015/04/25(土) 06:46:02.11ID:IoK0sU8l普通に書き間違えた。
0518デフォルトの名無しさん
2015/04/25(土) 07:56:40.33ID:U10MupQm言うなればカーナビで地図表示をノースアップにするかヘッドアップにするかの違いのようなもの
ただ、Cellsは起点を常に(0,0)に取ったそこからのOffsetだといえるので
Range("A1").Offset(i,j) は Cells(i-1,j-1) と等価になる
流石にここでRange & Offset を使う意味はあんまり無いと思う
起点がA1以外ならまぁ分らんでもない
ちなみに俺はノースアップでCells派です
0519デフォルトの名無しさん
2015/04/25(土) 08:23:09.42ID:Z59tocYGRange(Cells(leftPos,topPos),Cells(bottomPos,rightPos))
みたいな記述で変数をこねくりまわして範囲を変えるような場合は
Offsetではどうやって始末を付けるの?
0520デフォルトの名無しさん
2015/04/25(土) 08:45:38.17ID:IoK0sU8lCellsは指定された範囲をRangeオブジェクトとして返す。
Rangeは指定された範囲のCellsを取得してRangeオブジェクトとして返す。
Range("A1")は毎度新しく範囲を取得しているからCells(1,1)の方が若干速い。という仕組みだったはず。
0521デフォルトの名無しさん
2015/04/25(土) 08:54:25.28ID:U10MupQmOffsetとResize併用じゃないの?(ところで、topPos と leftPos 逆だよね?)
Range("A1").Offset(topPos - 1,leftPos - 1).Resize(bottomPos - topPos +1,rightPos - leftPos +1)
このケースでもCellsのほうが書きやすい
Cells(topPos,leftPos).Resize(bottomPos - topPos +1,rightPos - leftPos +1)
0522デフォルトの名無しさん
2015/04/25(土) 09:03:41.32ID:Z59tocYGあ、本当だ。すまん間違ってた。
なるほど、それだけでもCellsは存在価値があるな。
0523デフォルトの名無しさん
2015/04/25(土) 11:12:23.73ID:KJ1nzu+7> このケースでもCellsのほうが書きやすい
top, left, height, width みたいな持ち方してたら Resize の方が書きやすいでしょ
ケースバイケースだよ
0524デフォルトの名無しさん
2015/04/25(土) 12:53:11.81ID:tOvy7QkUオフセット座標を使う場合は、基準位置は表記のわかりやすいRangeがいい。
0525デフォルトの名無しさん
2015/04/25(土) 14:45:09.39ID:U10MupQm何を言ってるのか良く分らない
Range(に加えて Offset)とCellsの話をしてるのであって
Resizeはどっちでも使うよ
そしてケースバイケースである事も>>518にて言及済み
0526デフォルトの名無しさん
2015/04/25(土) 18:17:06.08ID:x5qj/yI2バージョンが違うと挙動が変わる場合もあるのでしょうか?
0527デフォルトの名無しさん
2015/04/25(土) 18:28:57.94ID:HPXCVzqJあるよ
0528デフォルトの名無しさん
2015/04/25(土) 18:30:40.12ID:2BgGr/Q+もちろんある
そういう違いがわかってない人ほど、同じバージョンで作ったり確認する必要がある
内容によっては32bitと64bitの違いにも注意が必要だし、サービスパックの有無が影響することもある
0529デフォルトの名無しさん
2015/04/25(土) 18:36:29.51ID:x5qj/yI2>>528
ありがとうございます。詳しく調べてみます。
0530デフォルトの名無しさん
2015/04/25(土) 23:19:42.77ID:Zwve/QP8「AV」はセルズ記述で何列目か教えてくれないか?
〜もしくは簡単に知る方法がありましたら教えて下さい。
0531デフォルトの名無しさん
2015/04/26(日) 01:04:45.21ID:diAoS38Zrange("セルの名前").value
のように使えるのは非常に便利ですよね。
セルがずれない
0532デフォルトの名無しさん
2015/04/26(日) 01:36:22.99ID:ZDlO3ZNoイミディエイトウィンドウで
?range("AV1").column
0533デフォルトの名無しさん
2015/04/26(日) 07:39:02.41ID:f7efuFEj?cells(1,"AV").column
0534デフォルトの名無しさん
2015/04/26(日) 08:04:19.46ID:qxkuCj4oイミディエイトウィンドウで
?columns("AV").column
ってか何この流れ
大喜利コーナー?
0535デフォルトの名無しさん
2015/04/26(日) 08:21:04.58ID:P1ipXLUAもしくは列名を数値に変換する方法も検索すれば出てくる
0536デフォルトの名無しさん
2015/04/26(日) 10:40:43.52ID:IMlFMZK9タイマーを張って測定したらlike演算子のほうが速かった
0537デフォルトの名無しさん
2015/04/26(日) 13:04:09.37ID:w3SM0RQcたとえば10桁の数字の場合最大で何個ぐらい定義出来るのでしょうか?
0538デフォルトの名無しさん
2015/04/26(日) 13:10:40.45ID:iqBA4vQ3まあ、一般的な話としては、やれることが少ない方が大抵速い
0539デフォルトの名無しさん
2015/04/26(日) 15:48:14.44ID:ZDlO3ZNo約4GBなら確保できた
Sub a()
Dim i(2000000000) As Integer
End Sub
約8GBにしたらExcelが落ちた
Sub a()
Dim j(2000000000) As Long
End Sub
0540デフォルトの名無しさん
2015/04/26(日) 16:20:00.26ID:TSTvOAjsそもそもVBAに組み込みの正規表現はない
外部モジュールと組み込み演算子なら組み込みの方が速度的に優位だろう
0541デフォルトの名無しさん
2015/04/27(月) 01:06:16.10ID:si+kDoKQ具体的に言うと、A1からA5までオートシェイプで5種類の図形を作っておき、B2に数値の1から5までしか入力できないものとしたうえで、2を入力する。
C1にA2の図形が表示される。
よろしくご教示ください。
0542デフォルトの名無しさん
2015/04/27(月) 03:39:21.42ID:ebWiZqjsちょっと考えてみたけど
>A1からA5までオートシェイプで5種類の図形を作っておき
シェープはセルに紐づいてるわけじゃない
すべてのシェープの位置をチェックすれば可能かもしれない
>B2に数値の1から5までしか入力できないものとしたうえで
めんどいから考慮しない
>C1にA2の図形が表示される
シェープを移動すると元がなくなる
新規シェープを表示するなら、本来自分でシェープ作って必要な属性セットしてやる必要があるけど
クリップボード経由でコピー&ペーストで行けるかもしれん
と言う感じでやればできるんじゃないだろうか
0543デフォルトの名無しさん
2015/04/27(月) 03:42:06.35ID:ebWiZqjsシートモジュールで
Function getShape(r As Integer) As Shape
Dim s As Shape
For Each s In Shapes
If s.TopLeftCell.Column = 1 And s.TopLeftCell.Row = r Then
Set getShape = s
Exit Function
End If
Next
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As Shape
If Target.Address <> "$B$1" Then Exit Sub
Set s = getShape(Target.Value)
If s Is Nothing Then Exit Sub
Application.EnableEvents = False
s.Copy
Paste Range("C1")
Application.EnableEvents = True
End Sub
こんな感じでどうだろう
色々手抜きなので想定外の動作は考慮してない
0544デフォルトの名無しさん
2015/04/27(月) 05:07:14.87ID:LZbcGKrc>>533
>>534
ありがとうございました。これは便利ですねイミディエイトウィンドウの使い方を初めて知りました。
アルファベット26文字+Vまで 26+(26 - wxyz) とかでてくるかと思いましたが 昨日はとっさに思いついて解決しました。
普段はオートフィルで永遠と引っ張り続けて調べていました。(笑)
0545デフォルトの名無しさん
2015/04/27(月) 07:15:31.90ID:Q/A/b/fbわりと間違えてる人居るけど
×:永遠
○:延々
0546デフォルトの名無しさん
2015/04/27(月) 07:39:48.19ID:gAbBwCE3ワークシート使ってピンポイントで調べるならAV1セルに=COLUMN()て入れるだけ
0547デフォルトの名無しさん
2015/04/27(月) 12:56:08.77ID:si+kDoKQ夜遅くにお答えしていただきありがとうございます。さっそくシートモジュールで試したいと思いますm(_ _)m
0548デフォルトの名無しさん
2015/04/28(火) 02:59:32.61ID:3RLwDW+z、列を数字表示にしておくこともたまにやる。
0549デフォルトの名無しさん
2015/04/29(水) 15:05:28.38ID:XOI0TWkM0550デフォルトの名無しさん
2015/04/29(水) 15:20:43.86ID:R/1STMzq0551デフォルトの名無しさん
2015/04/29(水) 15:44:24.31ID:XOI0TWkM0552デフォルトの名無しさん
2015/04/30(木) 16:12:06.09ID:4jJoQh7Uhttp://www.youtube.com/watch?v=CLeDZ-ye6MU
問題発言が↓の動画47分あたり
https://www.youtube.com/watch?v=YTtOs0MB2yc
0553デフォルトの名無しさん
2015/04/30(木) 19:58:42.34ID:QaYryZKk0554デフォルトの名無しさん
2015/04/30(木) 20:08:55.76ID:bOb9LxUOまずググれ
検索結果の最初の3ページ内で解決しなければここに書け
0555デフォルトの名無しさん
2015/04/30(木) 21:28:48.27ID:ixVNRETPよく考えてもの言えよ
0556デフォルトの名無しさん
2015/04/30(木) 22:28:44.95ID:QaYryZKkもちろん無知なりに調べては見たんだぜ
マクロボタンを押す→ボックスに日付を入力→別シートの一致する日付のデータを引っ張ってくる
ってのをやりたいんだが、どうしてもうまく出来なくて困ってるのだ
前の会社で上司がエクセルで自作したのが使いやすかったから今の会社で似たようなのを作れないかと思ってるんだが
ヒントだけでも教えてくれないか?
0557デフォルトの名無しさん
2015/04/30(木) 22:51:20.15ID:J2OiWj7Vで、引っ張ってくるってのは具体的には何処にどう表示するんだ?一致するデータが無かった時は?
0558デフォルトの名無しさん
2015/04/30(木) 23:06:15.24ID:QaYryZKk今テキストボックスのことを調べてみたんだが、まさにそれでした
日付を一致した場合は別シートに一日の作業ということで何がどれだけ出たのかをまとめたい
一致するデータがなかった場合は空白で大丈夫かな
0559デフォルトの名無しさん
2015/04/30(木) 23:07:02.18ID:QaYryZKkテキストボックスのことがわかったからこれを元にググって調べて、また行き詰まった時に質問させてもらいます
0560デフォルトの名無しさん
2015/05/02(土) 11:48:52.44ID:wDTkVdlzオブジェクト指向プログラミングのように扱えるのかと思ったら実はそうではなさそう。。
オーバーライドしてRangeというクラスのメソッドに自分なりのアレンジを加えて実装を変更する、といった使い方は可能ですか?
なんでそんなことするのかときかれたら、それができたら便利だと思うからです。
0561デフォルトの名無しさん
2015/05/02(土) 12:26:54.49ID:da9gskQ4そもそもVBAはvb.netのようなオブジェクト指向言語ではありませんし、
オーバーライドなんて出来ません。
以上。
0562デフォルトの名無しさん
2015/05/02(土) 12:52:29.50ID:wDTkVdlzvbaでオブジェクトやらメソッドやらでてくるので、
なんとなくvbaがオブジェクト指向言語であると錯覚したようです
0563デフォルトの名無しさん
2015/05/02(土) 14:07:57.38ID:2p5/iRKGオブジェクト指向で合ってるよ
公開されてない部分があるってだけ
0564デフォルトの名無しさん
2015/05/03(日) 01:15:51.90ID:XPytrHLPタイムアウト処理を実装したいのですがどう書けばいいか全く思い浮かびません
誰かご教授ください
0565デフォルトの名無しさん
2015/05/03(日) 01:23:14.80ID:AaUKIUAAライブラリの仕様によって対処方法が違う
そもそも処理が終わる前に何度も呼んでも大丈夫なライブラリなのか?
0566デフォルトの名無しさん
2015/05/03(日) 04:10:09.97ID:+VijmkAcVBは継承もオーバーロードもオーバーライドも使えないけど、インターフェースが有るし、委譲を使えば似たようなことは
出来ないでもない。でも本格的にやると面倒くさい。
0567デフォルトの名無しさん
2015/05/03(日) 06:05:59.31ID:7AJkLeM5> VBは継承もオーバーロードもオーバーライドも使えないけど、インターフェースが有るし、委譲を使えば似たようなことは 出来ないでもない。
Range に新しいメソッド追加してみてくれ
0568デフォルトの名無しさん
2015/05/03(日) 06:19:21.00ID:gIBxvmDz外部プログラムの実行と処理待ち(APIを利用した同期処理)
http://www.moug.net/tech/exvba/0150034.html
0569デフォルトの名無しさん
2015/05/03(日) 06:44:23.46ID:+VijmkAcRangeそのものに新しいメソッドの追加は無理だわな。
それはVBに限らず、VB.Netでも同じことで、継承先と継承元のクラスを同じ名前にすることは出来ない。
むしろ.Netで出来ると言うならやって見てくれ。
0570デフォルトの名無しさん
2015/05/03(日) 07:01:39.10ID:7AJkLeM5> 継承先と継承元のクラスを同じ名前にすることは出来ない。
そんなことは要求してない
普通に新しいメソッドが追加されたオブジェクトを生成できればいいだけ
似たようなことならできるんでしょ?
0571デフォルトの名無しさん
2015/05/03(日) 07:05:54.85ID:6Kt6EVgX口でほざいてないでやってみせろよ。
似たようなことなら出来るんだろ?同じ名前がどうだなんて、誰もここで
言ってないwww
0572デフォルトの名無しさん
2015/05/03(日) 07:54:27.76ID:+VijmkAc>>571
えー?委譲ってキーワードだけで殆ど答え言っちゃってるみたいなもんなんだけどなぁ。そこまで説明しないとダメか。
一つの例として、myRangeってクラスを作って、そのインストラクタでRangeクラスのインスタンスを生成し、
それをクラスMyRangeの内部変数として抱えておく。
MyRangeクラスにはRangeクラスと同じメソッド、プロパティのシグネチャを用意して、それらが使われた際、
MyRangeの内部変数として抱えられたRangeクラスのインスタンスの同じメソッド、プロパティを呼び出すようにする。
とりあえずこれで継承と似たようなことは出来る。
後はMyRangeクラスに任意のロジックで組んだメソッドやプロパティを追加する。
実際には全てのシグネチャを用意するのは相当面倒くさいので、使う分だけ用意すればいいだろな。
お前ら、その分からなければ人を煽る癖やめれ。
0573デフォルトの名無しさん
2015/05/03(日) 08:08:05.03ID:+VijmkAc後、最初に書いたmyRangeもMyRangeの間違いだな。変数かよって話になっちゃうわな。
ダメだ〜休みボケしてるわ〜
0574デフォルトの名無しさん
2015/05/03(日) 08:15:14.99ID:SvmZEXBDmylib::my_range
にしてくれ
0575デフォルトの名無しさん
2015/05/03(日) 08:17:34.47ID:+VijmkAc何の言語でどう言う意味?
0576デフォルトの名無しさん
2015/05/03(日) 08:20:54.48ID:SvmZEXBD後者は比較的どうでもよいが。
0577デフォルトの名無しさん
2015/05/03(日) 08:31:41.47ID:7AJkLeM5お前のレベルを見てみただけ
アホすぎて誰も書かないレベルの回答ありがとう w
0578デフォルトの名無しさん
2015/05/03(日) 08:32:53.71ID:6Kt6EVgX説明はいらねぇ。
コードで出せ
ここはプログラム板だ。御託はいらねぇんだよ。出来もしねぇならデカイ口
叩いてんじゃねぇよ。カスが。
0579デフォルトの名無しさん
2015/05/03(日) 08:33:56.68ID:6Kt6EVgX全くもって同意。
以前からここに張り付いてる御託だけ並べる馬鹿か、Rubyではなどと
称してる勘違い野郎だろう。コテつけてほしいもんだわ。
邪魔だから
0580デフォルトの名無しさん
2015/05/03(日) 08:34:40.71ID:+VijmkAcちなみに一応マイクロソフトがこんなこと言ってるんで従うようにはしてるけど、
https://social.msdn.microsoft.com/Search/ja-jp/?Query=名前に関するガイドライン
VBAやVB6はインテリセンスが弱いのでプリフィクス絶対付けちゃいけないかと言われればそれもどうかと思うし、
作るときに決まりだけ作っておけばいいかなぁと思ってる。VBAだし。
0581デフォルトの名無しさん
2015/05/03(日) 08:39:25.28ID:6Kt6EVgXさっさとコードだせよ三流プログラマ。
消えろって言われて、嫌ですとかほざいたカス野郎www
0582デフォルトの名無しさん
2015/05/03(日) 08:42:26.04ID:+VijmkAc>>558
想定通りの返事ありがとう。
やっぱり君達には少し早過ぎたみたいだ。
0583デフォルトの名無しさん
2015/05/03(日) 08:44:31.43ID:+VijmkAcよく分らないけど誰かと勘違いしてるんじゃないかなぁ。
でもイヤですw
0584デフォルトの名無しさん
2015/05/03(日) 08:48:15.20ID:SvmZEXBDオレはあんたに絡んでる奴等と何の関係もないが、>>572のやり方はちょっとうんざりだね。
0585デフォルトの名無しさん
2015/05/03(日) 08:54:47.15ID:7AJkLeM5面倒くさい奴だなぁ
そんなご託は仮想関数が実装できるようになってから言えよ
0586デフォルトの名無しさん
2015/05/03(日) 08:55:02.59ID:X1aWQUTT0587デフォルトの名無しさん
2015/05/03(日) 08:57:20.71ID:+VijmkAcよく知らないけど。
0588デフォルトの名無しさん
2015/05/03(日) 08:57:24.25ID:6Kt6EVgX三流馬鹿でした。
0589デフォルトの名無しさん
2015/05/03(日) 09:02:25.88ID:+VijmkAcだって継承使えないんだもん
0590デフォルトの名無しさん
2015/05/03(日) 09:05:58.23ID:X1aWQUTT0591デフォルトの名無しさん
2015/05/03(日) 09:30:52.37ID:SvmZEXBD0592デフォルトの名無しさん
2015/05/03(日) 10:43:05.42ID:GULU5m5AID:7AJkLeM5
と
ID:6Kt6EVgX
がケチつけるだけで自分ではなにもしてないクズだという事実だけ
他人のコード批判するならまずは自らが実例を示せよ
0593デフォルトの名無しさん
2015/05/03(日) 11:28:46.15ID:msdfDtrH1.基本的にはセルA1(手入力)の14日後をB1に表示する
2.A1+14が祭日(別シートA:Aに手入力で可)に当たる場合,翌平日を返す
・・・祭日が1日のみであれば,ワークシート関数のIF(COUNTIF・・・)で何とかなったのですが,
ゴールデンウィーク等になると無理でした
Excel2007です。もちろんVBAでよいですが,関数だとなおありがたいです
0594デフォルトの名無しさん
2015/05/03(日) 11:45:11.16ID:7AJkLeM5>>585
0595デフォルトの名無しさん
2015/05/03(日) 11:51:57.02ID:wjCUKbZ4http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm
の祝日マクロ (ktHolidayName )を使って
Function test(x As Range)
If Not IsDate(x.Value) Then Exit Function
Dim cnt As Long
cnt = 14
Do Until ktHolidayName(DateAdd("d", cnt, x.Value)) = ""
cnt = cnt + 1
Loop
test = DateAdd("d", cnt, x.Value)
End Function
0596デフォルトの名無しさん
2015/05/03(日) 11:55:44.29ID:msdfDtrH早速ありがとうございます!あとで検討します
0597デフォルトの名無しさん
2015/05/03(日) 12:07:45.83ID:eExkaOtq別シートのB列に祝日だった場合に返したい値を作っておくのが一番シンプルじゃないかな?
0598デフォルトの名無しさん
2015/05/03(日) 12:10:48.03ID:oyhjzf2Yまぁこのスレでは口先ばかり煽ってて何も出来ないクズって普通にいるよ。
周りはみんな理解してるのにコードコードと自分1人が理解してないのを空気読まずに連呼したり、
VBAで仮想関数とか口走ってみたり。
0599デフォルトの名無しさん
2015/05/03(日) 12:25:58.36ID:msdfDtrHたしかに・・・祭日指定は手入力でいいと考えていたので、それで十分ですね・・・
0600デフォルトの名無しさん
2015/05/03(日) 14:52:38.22ID:LnEljR08そんなに悔しかったのな w
0601デフォルトの名無しさん
2015/05/03(日) 15:53:35.15ID:oyhjzf2Yはいはいくやちいでちゅね〜
0602デフォルトの名無しさん
2015/05/03(日) 15:59:51.88ID:0bQGbDtx0603デフォルトの名無しさん
2015/05/03(日) 17:01:45.76ID:+VijmkAc本当にここは煽り耐性がない人ばかりだな。
0604デフォルトの名無しさん
2015/05/03(日) 18:15:13.84ID:9L5yIilo0605デフォルトの名無しさん
2015/05/03(日) 19:23:04.21ID:XURiKB5u0606デフォルトの名無しさん
2015/05/03(日) 19:32:36.55ID:L+z/3h2/Windows 8.1 excel 2007
0607デフォルトの名無しさん
2015/05/03(日) 19:34:54.06ID:XURiKB5u= でおK?
0608デフォルトの名無しさん
2015/05/03(日) 19:45:58.44ID:L+z/3h2/セル範囲が縦方向と横方向とで違っていても、単純にイコールで
結べばよいのですか。ありがとうございます。
0609デフォルトの名無しさん
2015/05/03(日) 19:55:24.25ID:XURiKB5u>>608
行列の入れ替えね
ならこの辺か?
http://excel-ubara.com/excelvba2/EXCELVBA014.html
行列入れ替え Transpose:=True
http://www.moug.net/tech/exvba/0050104.html
確かにコピーしてペーストする必要はあるかも
0610デフォルトの名無しさん
2015/05/03(日) 19:57:50.97ID:GULU5m5Atranspose vbaでググる
https://www.google.co.jp/search?q=transpose+vba&ie=utf-8&oe=utf-8&hl=ja
0611デフォルトの名無しさん
2015/05/03(日) 20:02:49.54ID:oyhjzf2YOSが違うから今は多分無理。
今と言う言い方をしたのは、iOSみたいにそのOS用でExcelが出れば或いはと言うこと。
0612デフォルトの名無しさん
2015/05/03(日) 20:06:26.88ID:L+z/3h2/Range( "A1:A2").Value = Range("B1:C1").Value.Transpose: = True
としてみます。 ありがとうございました。
0613デフォルトの名無しさん
2015/05/03(日) 20:11:47.51ID:L+z/3h2/リンク先、勉強になります。ありがとうございます。
0614デフォルトの名無しさん
2015/05/03(日) 20:25:05.84ID:PQ+RWjx+程度の低い内容を有難がっているところがなんとも。
0615デフォルトの名無しさん
2015/05/03(日) 20:30:56.81ID:+VijmkAcあれはあれでその程度の低さにかえって価値があることを計算して書いてるのかも知れないよ。
0616デフォルトの名無しさん
2015/05/03(日) 20:48:56.60ID:t1aJDpO7今時、リストも連想配列も自前で持っていない言語を使うのはつらい
0617デフォルトの名無しさん
2015/05/03(日) 20:54:09.07ID:PQ+RWjx+想像だがこのままなのではないか。
一般ユーザーの資産が多いから互換性を壊すと暴動が起きる。とはいえ今さら機能追加はかったるい。
自分がMicrosoftだったら他の言語と併用してね、と言う。
0618デフォルトの名無しさん
2015/05/03(日) 20:57:30.12ID:YgS8sWbg田中さんのは読めばわかるけどもーぐのは最後まで読んでも何の解説かわからない物がある
0619デフォルトの名無しさん
2015/05/03(日) 21:11:27.83ID:PQ+RWjx+0620デフォルトの名無しさん
2015/05/03(日) 21:12:39.51ID:G/VsvCphここから先は自分で考えましょう・・・ (おまえらちょっとぐらいは自分で考えろ!)実はスパルタ系の要素ありw
0621デフォルトの名無しさん
2015/05/03(日) 21:16:57.50ID:G/VsvCphとりあえずコードだけ書いとくが 細かい説明はしらんよ
excelでお仕事の人
田中さんに続いて親切説明で自分は好き
0622デフォルトの名無しさん
2015/05/03(日) 21:29:22.15ID:0ILB3RdVWindowsでやってるからその時が来たら躊躇はしないだろう。
0623デフォルトの名無しさん
2015/05/03(日) 21:38:07.06ID:GZ4kM7ll時期はビックデータ完全対応が当たり前に必要になる頃かな。
0624デフォルトの名無しさん
2015/05/03(日) 21:51:46.30ID:oyhjzf2YVSではもうこんなの用意されて大分こなれて来てるみたいだしな
https://msdn.microsoft.com/ja-jp/library/bb386107.aspx
0625デフォルトの名無しさん
2015/05/03(日) 22:18:13.83ID:sahXehPLビックカメラのデータ?
0626デフォルトの名無しさん
2015/05/04(月) 01:40:00.72ID:nbXZ9dWZ0627デフォルトの名無しさん
2015/05/04(月) 08:44:47.11ID:cIT0ahnAそういうアホな質問をする奴がいなくなる頃だと思う
0628デフォルトの名無しさん
2015/05/04(月) 09:12:30.15ID:eB8EANtJ0629デフォルトの名無しさん
2015/05/04(月) 12:24:54.60ID:kOBi+ngQ| ┌────────────┐
| | |
| └────────────┘
| [ オプション(O) ] [ 検索(S) ]
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
0630デフォルトの名無しさん
2015/05/04(月) 12:26:39.12ID:P3zvOlQgつかUI古くさいし、使いにい
0631デフォルトの名無しさん
2015/05/04(月) 12:42:31.33ID:4DKzbhug0632デフォルトの名無しさん
2015/05/04(月) 12:44:58.71ID:Vqi2r60lそういうアホな質問をする奴がいなくなるのはいつ頃でしょうか?
0633デフォルトの名無しさん
2015/05/04(月) 18:37:34.40ID:eq2s1Han0634デフォルトの名無しさん
2015/05/04(月) 18:58:56.88ID:eq2s1HanIBMにはロータス123があるから無理だろう・・・
0635デフォルトの名無しさん
2015/05/04(月) 19:22:30.01ID:cIT0ahnAお前がいる限り無理だろうな
0636デフォルトの名無しさん
2015/05/04(月) 21:05:12.21ID:rQPyUbnW暴動なんか起きるだろうか。
開発者からしてみれば移行の仕事が増えるし、
便利な機能は増えるし、
不勉強な輩や、頭の固いじじいは淘汰され、より人員的にも質が向上し、
歳を取って新しい言語について行けない人でも、それまで努力していた人は
PGからSEに移行する良い機会になるし、
願ったりかなったりなんじゃないのか?
0637デフォルトの名無しさん
2015/05/04(月) 21:15:50.56ID:1YWdu089それはSIer視点なのでは?
PGだのSEだのといった言葉からそれを感じる。
0638デフォルトの名無しさん
2015/05/04(月) 21:23:20.07ID:L/qP2+/Wそういうアホな回答をする奴がいなくなるのはいつ頃でしょうか?
0639デフォルトの名無しさん
2015/05/04(月) 22:26:55.87ID:eq2s1Hanバージョンが上がってもPCの性能が上がっても変化がほとんど見られない。
遅すぎる。そこさえなおしてくれればいい
0640デフォルトの名無しさん
2015/05/04(月) 22:37:22.75ID:cIT0ahnA>>635
0641デフォルトの名無しさん
2015/05/04(月) 23:31:49.05ID:kVrs2MFr>>639
あれってバックアップとってるみたいだから性能的には外部記憶媒体が関わってくるんじゃないの。
つまりSSDなら速度アップする可能性がある。
0642デフォルトの名無しさん
2015/05/05(火) 06:18:26.36ID:Gy6WgfTUあとはオーバーロードというかパターンマッチがあれは
0643デフォルトの名無しさん
2015/05/05(火) 07:34:23.31ID:cVgS2eSX0644デフォルトの名無しさん
2015/05/05(火) 07:53:53.24ID:JjKsPjhoListやDataSet、ハッシュテーブルとかジェネリック型のを使えるようにして欲しい。
後、マルチスレッドが行えるバックワーカー的なものも欲しいし、デリゲートも使えるようにして欲しいし、
もっと欲を言えばLinqやラムダ式も使えるようにして欲しい。
色々夢がひろがりんぐだけど、もっと根本的な所で、あのインテリセンスをどうにかして欲しい。
コード打ってる最中で、あの辺どう作ってたかなーとか思って他の部分見に行ったときカーソル当てると、
ピロンとか言ってエラーメッセージがポップアップされてスクロール戻されて、
都度メッセージ閉じなきゃいけないとか脱力感が半端ない。
0645デフォルトの名無しさん
2015/05/05(火) 08:03:11.47ID:Gy6WgfTU0646デフォルトの名無しさん
2015/05/05(火) 08:34:18.28ID:JjKsPjho楽なら視野に入れてみる。
0647デフォルトの名無しさん
2015/05/05(火) 08:57:26.37ID:UdkO95mGVBAを使い仕事はあっという間に終わらし定時ですぐ帰るオレ、
どっちが評価されるべきですか?
0648デフォルトの名無しさん
2015/05/05(火) 08:58:51.68ID:UdkO95mG0649デフォルトの名無しさん
2015/05/05(火) 09:30:17.49ID:JjKsPjhoVBAで簡略化出来ない複雑かつ重要な役割を任されているA君
0650デフォルトの名無しさん
2015/05/05(火) 09:34:21.45ID:UdkO95mGこら、そこ。仕事内容は同じだ。
0651デフォルトの名無しさん
2015/05/05(火) 09:39:00.78ID:Gy6WgfTUmake_unique(Worksheet("tmp"))->なんちゃら();
とかやってテンポラリシートの生成と利用と破棄が管理できる。
といいな。
0652デフォルトの名無しさん
2015/05/05(火) 09:39:43.73ID:Gy6WgfTU0653デフォルトの名無しさん
2015/05/05(火) 10:07:05.29ID:/3twg/Gqバックアップってなんだよ w
セルにガンガンアクセスしてメモリーが普通にあればストレージにアクセスなんかしないし
大量のセルにアクセスするなら配列にコピーするだろ...
0654デフォルトの名無しさん
2015/05/05(火) 10:08:11.19ID:/3twg/Gq> セルにガンガンアクセスして(も)メモリーが
0655デフォルトの名無しさん
2015/05/05(火) 10:10:09.14ID:Gy6WgfTU0656デフォルトの名無しさん
2015/05/05(火) 12:07:41.71ID:GWkF3sJ3シンタックス変だった
make_unique<Worksheet>("tmp", 0)->なんちゃら();
0657デフォルトの名無しさん
2015/05/05(火) 19:55:12.44ID:GkORub/fそれ使い終わったらシートも削除されるの?
0658デフォルトの名無しさん
2015/05/05(火) 21:51:49.86ID:1dQ8UigBそりゃあRAII目的ですから
0659デフォルトの名無しさん
2015/05/05(火) 22:43:30.43ID:wAMsNAOAラムダ式による要素の抽出部分はいいから、手数で申し訳ないけども
例えばBook1のSheet1のCelll、A1に"あ"と言う文字を設定するとき、
どんなObjectを生成して使うつもりだったのかだけ教えて欲しい。
別にコードでなくても意味が伝われば構わない。
何が知りたいのかと言うと、>>645で言っていた「Excelが直接コントロールできる」と言うのが、COMなのかどうかの1点だけ。
0660デフォルトの名無しさん
2015/05/06(水) 00:57:21.38ID:2v/4EFCAByref引数で受け取ったものに何かした後、それをそのまま返せる機能がないのは困る。
0661デフォルトの名無しさん
2015/05/06(水) 00:58:38.44ID:2v/4EFCA0662デフォルトの名無しさん
2015/05/06(水) 03:22:29.51ID:NryHUEhv>Byref引数で受け取ったものに何かした後、それをそのまま返せる機能がないのは困る。
同一アドレスを指しているのだから戻り値でわざわざ返さなくてもそのまま見ればいいと思うのだが、
どんな困った事象が発生するんだ?
後、「そんなことより」とはどう言う了見だ?喧嘩売ってるのか?
0663デフォルトの名無しさん
2015/05/06(水) 08:28:12.14ID:2v/4EFCA>そのまま見ればいい
それはおっしゃる通り。
しかしそれだと既存のライブラリが使えないのです。
初期値A0 -> A1 ->A2 -> ・・・ ->An
って処理が連なっていて、一つ一つの処理は特定の関数がやるとする。
そのライブラリは、最終的なAnを求めるループ処理を抽象化してくれるんだけど、返り値を使っている。
>喧嘩売ってるのか?
いや別に。すまんかった。
0664デフォルトの名無しさん
2015/05/06(水) 08:58:57.10ID:gNaaolisExcelにああして欲しい、こうなって欲しいってのは別スレでも立ててそこでやれや
0665デフォルトの名無しさん
2015/05/06(水) 10:11:25.13ID:NryHUEhvそれは元々その既存ライブラリとやらが参照で引数から取得したオブジェクトを元に別のオブジェクトに形成したものを
返却しているのであって、その既存ライブラリの仕様じゃないのか?
参照で引数に設定されているものを直接変更しているのであれば、やっぱり見ているアドレスは同一だろうから、
返却値が値渡ししてようがしてまいが、引数に設定したオブジェクトを見れば
変更後の内容が取得出来ると思うんだが。
「ループ処理を抽象化してくれる」とあるが、本当にVBAでそんなライブラリ使えるのか?
0666デフォルトの名無しさん
2015/05/06(水) 11:24:15.05ID:2v/4EFCAいや、>>663に書いたように「一つ一つの処理は特定の関数がやる」んで、その関数が参照を返すんならライブラリ側はそれに従うだけ。
>引数に設定したオブジェクトを見れば変更後の内容が取得出来る
もちろんそれはそうだ。
でも自分でループを書いて処理のつど元の引数を見るっていう動作を入れることになってしまう。
ループを書くのは避けたい。
それと訂正ですがライブラリが「使えない」というのは言い過ぎで、変数のコピーがオーバーヘッドになってしまう、という意味です。
0667デフォルトの名無しさん
2015/05/06(水) 12:13:27.50ID:h7IHpKC6Private WithEvents Inet1 As Inet
Private Const AppKey As String = "aqMBM5paukkx5FOVcSfisMTMj8I4Dm"
Private Const HMKey As String = "CPGjWLXxFojVtO7tiu3Lrwm1yLqtk1"
Private Function authenticate() As String
Dim CT As String
Dim message As String
Dim HB As String
Dim url As String
Dim values As String
Dim headers As String
Dim data As String
CT = "1234567890"
message = AppKey + CT
HB = hmac(HMKey, message)
url = "https://api.2ch.net/v1/auth/"
0668デフォルトの名無しさん
2015/05/06(水) 12:14:34.73ID:h7IHpKC6"PW=" & "" & "&" & _
"kY=" & AppKey & "&" & _
"CT=" & CT & "&" & _
"HB=" & HB
headers = "X-2ch-UA: JaneStyle/3.81" & vbCrLf & _
"User-Agent: Mozilla/3.0 (compatible; JaneStyle/3.81..)" & vbCrLf & _
"Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
vbCrLf
data = values
Set Inet1 = New Inet
With Inet1
.Execute url, "POST", data, headers
Do While .StillExecuting
DoEvents
Loop
.Cancel
End With
Set Inet1 = Nothing
End Function
0669デフォルトの名無しさん
2015/05/06(水) 12:22:38.72ID:h7IHpKC6http://pastebin.com/CdSrLEBj
のコードをVBAに移植しようと考えています。
sidを取得する部分でエラーng (appkey incorrect length)”が
返ってきます。どの部分に不具合があるのかご指摘いただけると
幸いです。
0670デフォルトの名無しさん
2015/05/06(水) 12:25:28.80ID:rGM+rJxQじゃその糞ライブラリ使わなきゃいいんじゃね
0671デフォルトの名無しさん
2015/05/06(水) 12:37:10.08ID:kTRUDxsQエラーメッセージに appkey incorrect length って出てんだからappkey(文字列)の長さがおかしいんだろ?
変数の内容を確認して文字数に間違いが無かったら文字コードの問題じゃね?
0672デフォルトの名無しさん
2015/05/06(水) 12:40:13.80ID:2v/4EFCAライブラリ側では直接はどうしようもないかもしれないけど、何か考えてとリクエスト出をしておいた。
0673デフォルトの名無しさん
2015/05/06(水) 13:46:22.39ID:h7IHpKC6ありがとうございます。無事解決しました。
0674デフォルトの名無しさん
2015/05/06(水) 15:34:01.36ID:NryHUEhvどうも話が見えないな。
「一つ一つの処理」の部分が抽象化されていると言うならまだ何と無く想像付かなくもないが、実際言ってるのは、
「一つ一つの処理は特定の関数がやる」が、抽象化されているのは「ループ処理」。
ならループ処理は最初からライブラリから外出しされていることになるから、
敢えて新たにループを書くこともないはずなんだが。
0675デフォルトの名無しさん
2015/05/06(水) 17:40:54.30ID:2v/4EFCAユーザーが定義した「一つ一つの処理」をする関数 → UFunc
ループを抽象化したライブラリ関数 → LibFunc
処理対象となる配列など → param
LibFunc(UFunc, param)
こうやったとき、LibFuncはUFuncの返り値を使いながらループ処理をする。
UFuncが参照を返せればこのコードは効率がいいけどそれができない。
しょうがないからライブラリ関数を使うのをあきらめてベタなループにするか、って話です。
0676デフォルトの名無しさん
2015/05/06(水) 17:58:51.98ID:NryHUEhv素朴な疑問なんだが、実際はUFunkは引数として参照渡しの引数を持っているんだよな?
で、同じ型のものを返却していると言うことでいいんだよな?
だったらUFunkの返却値を直接LibFunkに設定するのではなく、
UFunkの中でUFunkの引数に設定しているObjectを弄って、
UFunkの引数に設定したObjectをLibFunkの引数に設定するのでは駄目なのか?
無論そうなるとUFunkの返却値自体が必要なくなる訳だが。
0677デフォルトの名無しさん
2015/05/06(水) 18:00:30.82ID:NryHUEhv0678デフォルトの名無しさん
2015/05/06(水) 18:40:08.98ID:rGM+rJxQよく読んでみたけど、やはりそのライブラリの仕様だな。
ライブラリ作り変えるのが一番早いよ。
0679デフォルトの名無しさん
2015/05/06(水) 18:53:40.10ID:2v/4EFCA>>678
ユーザー関数はライブラリ関数を意識しないし、ライブラリ関数はいろんなユーザー関数を受け取るわけで。
UFunc1 は数値を受け取ってそれに +1 した値を返すだけ
UFunc2 は大きな配列を受け取って、ランダムな一カ所を書き換える
ライブラリ関数はそれらを繰り返し適用する。
UFunc1かUFunc2かのタイプ別にライブラリ側の関数も分けた方がいいってこと?
今は前者のタイプにしか対応していないので、後者を効率的に扱えるよう提案してみようかな。
0680デフォルトの名無しさん
2015/05/06(水) 20:11:34.18ID:jaSoCnGu0681デフォルトの名無しさん
2015/05/06(水) 20:50:02.60ID:EgiInHJn更新時に上書きされてしまうためどのデータが更新されたのかわからず、毎回古いファイルと手動で見比べています
本当はデータ更新したシートに更新日や値の変化を記載したいのですがうまいやり方はありませんでしょうか?
0682デフォルトの名無しさん
2015/05/06(水) 21:00:53.53ID:kTRUDxsQ別のシートに記録するかセルを色分けするか
0683デフォルトの名無しさん
2015/05/06(水) 23:01:54.29ID:0awSaezo0684デフォルトの名無しさん
2015/05/06(水) 23:06:06.49ID:28HcwESH0685デフォルトの名無しさん
2015/05/06(水) 23:30:09.21ID:eWVaawVeコメントに変更日時書けば良いじゃん
0686デフォルトの名無しさん
2015/05/06(水) 23:54:30.69ID:kTRUDxsQその子の顔写真や詳細な個人情報がないとコードが書けんのだが
0687デフォルトの名無しさん
2015/05/07(木) 05:18:28.65ID:zn14xsQgExcelのバージョンによっては
更新履歴を別シートに出力する機能があったような。
0688デフォルトの名無しさん
2015/05/07(木) 08:42:31.63ID:boZKLFPs売れてるかどうかも知らんが、新人とか新入生が買ってんじゃねーの?
0689デフォルトの名無しさん
2015/05/07(木) 09:13:24.53ID:vq5P4hYI俺のバイト先で今月は10冊も売れた、みたいなローカルな話?
0690デフォルトの名無しさん
2015/05/07(木) 09:34:21.62ID:GGV5P5UCそういう話だろ。ハッキリいいって書籍自体は、もう、奈落の底へ一直線だよ。
0691デフォルトの名無しさん
2015/05/07(木) 10:44:13.92ID:7go8IjAb殆ど汚れてないキレイなヤツが
0692デフォルトの名無しさん
2015/05/07(木) 11:49:12.26ID:GGV5P5UC挫折して、本棚で塩漬けされてたんだろうな
0693デフォルトの名無しさん
2015/05/07(木) 13:21:14.04ID:mvrNqduB0694デフォルトの名無しさん
2015/05/07(木) 19:38:36.43ID:6IQs9Pra0695デフォルトの名無しさん
2015/05/08(金) 19:13:18.50ID:t2ava6jVクロールしたときに取得した新しいデータと古いデータの比較をして一致しない場合のみ内容を書き換える処理にして、
その処理のケツにでも現在時刻を隣のセルに入力すればいいんじゃないすか
数値のグラフ化とかしたいなら縦に日付、横に項目の二次元配列的にして、クロールする度入力する行をずらしていけばいんじゃね?
あと前回取得分と比較してセルの色を反転させるとかすれば一目瞭然的な
項目数と頻度によっては結構なデータ量になっちゃうけど・・・
0696デフォルトの名無しさん
2015/05/09(土) 00:53:59.54ID:I0gjduBTセルに記載されているファイル名の形式チェックをしています
例 [xxxxx] vvvvvvv.zip
で最初の"]"が出たあとには必ず半角のスペースが無いと駄目ということにしたい
最初の"]"がある位置は instr(cells(3,2),"]")で出ますが(cells(3,2)にあるとして)、その文字の
次の位置にあるものが半角スペースかどうかを知るにはどう書けばいいんでしょ
勿論最初の"]"が出現する位置は不定だけど必ずあるという前提なんですが
0697デフォルトの名無しさん
2015/05/09(土) 01:05:57.76ID:v2y59Ut70698デフォルトの名無しさん
2015/05/09(土) 02:55:38.38ID:sO+GvBen0699デフォルトの名無しさん
2015/05/09(土) 10:03:35.67ID:I0gjduBTmoji = "]"
pos = InStr(Cells(3, 2), moji)
searchchar = Mid(Cells(3, 2), pos + 1, 1)
If searchchar = " " Then
MsgBox "OK"
Else
MsgBox "NO " & searchchar
End If
ということにしました。Midの存在を忘れてました^^;
0700デフォルトの名無しさん
2015/05/09(土) 14:16:39.93ID:WohtoduL操作に合わせて動的に画面を変化させたいんだけどセルに色付ける方法だと凄く遅いんだよね。
0701デフォルトの名無しさん
2015/05/09(土) 16:51:24.45ID:N3erwSaL教えて欲しいのですが、
ボタンを押すと、
1とあるwebの検索ページにアクセス(例えば書籍検索とかするページ)
2エクセルのセルにあるデータを入力(作者情報とか)
3検索ボタンを押す
4検索結果表示
5検索結果をエクセルのシートに貼り付けする
1〜4までは自力でできたのですが
5ができません。
検索結果ページではなく、1の検索画面の内容が貼り付けされてしまう
一般的にどういったコードを書けばいいんでしょうか(´;ω;`)??
0702デフォルトの名無しさん
2015/05/09(土) 17:22:29.09ID:epMtPBEdオートシェイプ
0703デフォルトの名無しさん
2015/05/09(土) 17:24:01.94ID:epMtPBEd全部説明するのは面倒だし方法も1つじゃないから作成済みの1〜4をどっかに貼って
0704デフォルトの名無しさん
2015/05/09(土) 17:42:03.76ID:N3erwSaL仕事で使ってるもんなんで晒すと身バレしそうで貼れないんです
ううむどうしたもんか・・(´;ω;`)
0705デフォルトの名無しさん
2015/05/09(土) 17:49:48.16ID:N3erwSaLこの人と基幹部分はだいたい一緒です
そして偶然にも同じ現象でつまづいているという
http://m.chiebukuro.yahoo.co.jp/detail/q14129550669
0706デフォルトの名無しさん
2015/05/09(土) 18:34:36.54ID:epMtPBEdいちいちフォームに入力してボタンを押すんじゃなくてURLにパラメータを書いたら?
0707デフォルトの名無しさん
2015/05/09(土) 19:18:29.50ID:GEEuC9inじゃあせめて同じ方法で解決できたのかどうかぐらいまで書けないのかよ
0708デフォルトの名無しさん
2015/05/09(土) 19:38:46.03ID:N3erwSaLできなかったよ('A`)
IE上で検索結果までは表示されてるから、それを貼り付けるだけなんだけど、
検索画面が貼り付けされてしまうんだよなぁ
ちょっとした何かでできそうなんだが、ううむ。
サイトはjavascriptで制御されてる
サイト晒した方がいいんだろうけど、社内用のサイトだから晒したら一発でバレる・・・
0709デフォルトの名無しさん
2015/05/09(土) 21:17:55.83ID:NuoHUnXdソース貼れって言ってるのに頑なに張らない奴
少し濁して分からなくさせたりとかして、なんとか解決しようとか思ったりしないのかね
検索画面が貼られるってことは読み込みが完了してないんじゃないの
エスパーじゃないからわからんけど
0710デフォルトの名無しさん
2015/05/09(土) 21:30:48.98ID:GEEuC9in特定サイトで動くけど特定サイトではダメとかでもなければ、サイトそのものを晒す必要なんてない
処理内容が解ればよいだけ
最低限、その、貼り付け といってる処理のコードぐらい書け
エスパー上級者がいればそれで何かヒントくれるかもしれん
0711デフォルトの名無しさん
2015/05/09(土) 21:35:19.54ID:G2txpaJV0712デフォルトの名無しさん
2015/05/09(土) 22:30:12.66ID:epMtPBEd画面をコピペすれば行けるんじゃないかと思うけど、アクセスできないんじゃ
原因も推測するしかないし、検証もできないなあ
0713デフォルトの名無しさん
2015/05/09(土) 23:39:53.51ID:GEEuC9inJavaScriptで書き換えてるようなページでも、>>705のリンク先でやってるような
DOMからInnerHTMLとるような形なら更新後の値が取れると思うが
当然タイミング的な問題はクリアされてるとしてだが
0714デフォルトの名無しさん
2015/05/10(日) 04:25:48.28ID:jQkATGDuそこのURLに載ってるみたいに、取得直前で止めてみて、完全に画面が書き換わった後で再実行するとどうなるの?
0715デフォルトの名無しさん
2015/05/10(日) 04:31:53.28ID:jQkATGDuどんなことをしたいかで有効な方法が変わるから何とも。
例えばゲームを作りたくてスプライトみたいなことをやりたければシェイプやセル範囲のコピペが有効だったり、
色数そんなに使わないならセルで条件付き書式が有効だったり。
0716デフォルトの名無しさん
2015/05/10(日) 14:05:10.69ID:VY6ICWjv一行ずつ完全に読み込みを待ってやってみたら貼り付けできました。
どうやらタイミングの問題のようです
本当にありがとうございました。
でもそのページ見たくdocumentcompleteでやってるのにできないのは何故なんだろうか?
もうちょっと検証してみます (。・ω・)ゞ
0717デフォルトの名無しさん
2015/05/10(日) 16:03:04.15ID:jQkATGDu頑張ってね〜
>>709
理由なくソースを頑なに貼らない人はちょっとアレだけど、
本質が見えてない人がソースソースと騒いで
結局ただの冷やかしだったケースもちょっと前にあったからな。
俺からすれば後者の方がクズにみえる。
0718デフォルトの名無しさん
2015/05/10(日) 17:06:03.18ID:ZQGgJB6p(俺調べ)
0719デフォルトの名無しさん
2015/05/10(日) 17:26:56.38ID:1xvnzJix俺の妄想だとコード厨はなぜかC++引き合いに出す奴とペアで現れることが多い
あ、ただの妄想だから気にしないでねw
0720デフォルトの名無しさん
2015/05/10(日) 19:49:00.43ID:qlA+/piR趣味で迷路探索、クロスワードパズル自動作成くらいはvbaでつくれたけど。
0721デフォルトの名無しさん
2015/05/10(日) 20:00:28.76ID:VmxiSVho作れる人いました
http://www.geocities.co.jp/SiliconValley-PaloAlto/1200/html/tetris.htm
0722デフォルトの名無しさん
2015/05/10(日) 20:19:41.36ID:qlA+/piRコードつきでテトリスの仕組みみれるとは感動した
0723デフォルトの名無しさん
2015/05/11(月) 19:19:37.80ID:AU+j6osaOutlookでVBAを使う余地はないのですか?
できることはできるみたいなのでなにか便利な使い方がありそうで活用したいのですが。
0724デフォルトの名無しさん
2015/05/11(月) 21:00:37.54ID:6nr7Iogf添付ファイル込みでサイズが3MB超えたらエラーを起こすように設定してる
後は社内のメンバーの連絡先を最新に同期させたりとか
でもwebメールで良くね?と思うこの頃
0725デフォルトの名無しさん
2015/05/11(月) 21:08:10.03ID:+qwhrh9CここはExcelVBAのスレだから、スレチとか厳しいこと言わなかったとしても、
こっちの方が色々知ってる人がいるんじゃないかなぁ。過疎ってるけど。
VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/
0726デフォルトの名無しさん
2015/05/12(火) 10:08:53.32ID:v0hswOsZ1行目 タイトル1 タイトル2 タイトル3 ・・・
2行目 データ1 データ2 データ3 ・・・
・・・・
N行目 データ1 データ2 データ3 ・・・
N+1行目 空白
・・・・
M行目 空白
M+1行目 データ1 データ2 データ3 ・・・
M+2行目 データ1 データ2 データ3 ・・・
M+3行目 データ1 データ2 データ3 ・・・
フィルタリングしたいのは、2〜N行目で
M+1行目以降は参考データとして常に表示したいんだけど
オートフィルターを掛けると、M+3まで一緒くたにフィルタリングされて非表示になってしまう
Selection.AutoFilter Field:=3, Criteria1:="=名前*", Operator:=xlAnd
どこをどう直せばいいのでしょう?シートのN+1行目の空白コラムに何か入れる?
0727デフォルトの名無しさん
2015/05/12(火) 10:31:24.02ID:eRFd7464SelectionのかわりにRange("1:N+1")にしたまえ。N+1は実際の値を。
0728デフォルトの名無しさん
2015/05/12(火) 10:32:40.90ID:eRFd74640729デフォルトの名無しさん
2015/05/12(火) 12:40:54.10ID:v0hswOsZ0730デフォルトの名無しさん
2015/05/12(火) 16:07:12.99ID:O1QCogbsExcelからあるwebサイトに自動ログインさせたいです
Htmlソースが↓のようになっていて
input type="password" name="login[password]"
objIE.Document.all.login[password].value = "1234"
と書きたいのですが
objIE.Document.all.login [Password].value = "1234"
と角括弧の前に勝手にスペースが加わったり大文字に書き換わってしまったりで
上手くパスワードを入力させられません
何か対処策はございませぬでしょうか?
0731デフォルトの名無しさん
2015/05/12(火) 16:43:10.59ID:/4X+mEl8Document.All(n).Value
0732デフォルトの名無しさん
2015/05/12(火) 17:07:57.92ID:/4X+mEl8ヒントというかサンプル
こうやって入力することができる
Sub test1()
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://www.yahoo.co.jp/"
Do
DoEvents
Loop Until objIE.busy = False
Do
DoEvents
Loop Until objIE.document.readystate = "complete"
For i = 0 To objIE.document.all.Length - 1
If objIE.document.all.Item(i).tagName = "INPUT" Then
If objIE.document.all.Item(i).ID = "srchtxt" Then
objIE.document.all.Item(i).Value = "ぱすわーど"
Exit For
End If
End If
Next
End Sub
0733デフォルトの名無しさん
2015/05/12(火) 18:28:43.93ID:O1QCogbsありがとうございます、うまくできました
name="login[password]" に囚われていました
0734デフォルトの名無しさん
2015/05/13(水) 16:52:04.40ID:Wy6i99cwアップ前の特定のURLの存在確認をし、
ページがアップされたら、そのページ中の
ボタンをクリックするような記述方法を
ご存知の方いらっしゃいませんか?
自動化をFireFoxかChromeから行いたいと
思っております。
0735デフォルトの名無しさん
2015/05/13(水) 17:13:08.33ID:Pza1t8eb0736デフォルトの名無しさん
2015/05/13(水) 17:45:52.94ID:Wy6i99cwいえいえ、完全に自分用です。
0737デフォルトの名無しさん
2015/05/14(木) 00:32:37.93ID:cv6v5HT1○sheet1の内容
0001.rpls 番組1
0002.rpls 番組2
0003.rpls 番組3
0004.rpls 番組4
○目的フォルダの内容
0001.m2ts
0002.m2ts
0003.m2ts
0004.m2ts
であるとき、sheet1の”0001.rpls”から"番組名4"を範囲選択してVBAを実行すると、目的フォルダにあるファイルの名前が
番組名1.m2ts
番組名2.m2ts
番組名3.m2ts
番組名4.m2ts
になるようなVBAがほしいです。お願い致します。
0738デフォルトの名無しさん
2015/05/14(木) 00:34:27.12ID:cv6v5HT10739デフォルトの名無しさん
2015/05/14(木) 00:43:47.34ID:zDQ6fGxVren 0001.rpls 番組1.m2ts
ren 0002.rpls 番組2.m2ts
ren 0003.rpls 番組3.m2ts
ren 0004.rpls 番組4.m2ts
0740デフォルトの名無しさん
2015/05/14(木) 01:04:50.98ID:cv6v5HT1sheet1のフォーマットで2000行くらいあります
すでにExcelに入力済なのでVBAのほうがいいかなと
0741デフォルトの名無しさん
2015/05/14(木) 01:11:51.34ID:9sPCAAuzセル範囲をメモ帳に貼り付けるとタブ区切りで貼りつく
タブをスペースに置換する
その結果がバッチのコマンドになるようにExcelに入力しておけば良い
0742デフォルトの名無しさん
2015/05/14(木) 01:28:38.73ID:zDQ6fGxVちょっと編集すればバッチファイルはすぐにできる
A列を挿入して「ren」をオートフィル
D列に=C1&".m2ts"と入れてオートフィル
D列をC列に値貼り付け
A〜C列をメモ帳にコピペして保存、ダブルクリックで実行
>>741
スペースに置換しなくてもタブのまま実行できる
0743デフォルトの名無しさん
2015/05/14(木) 01:35:23.64ID:cv6v5HT10744デフォルトの名無しさん
2015/05/14(木) 20:16:43.00ID:F7V5bQJfWordで文書のテンプレートを作っておき
いくつかは穴埋めのように[(1) ]、[(2) ]、[(3) ]、[(4) ]、[(5) ]・・・・・と仮入力しておきます。
そしてこの[(n) ] (*nは自然数) のところはExcelのデータが入ったシートからその文字列を引っ張ってくるようにしたいんです。
そのためにはどういうコードを書けばいいでしょうか?
つまるところ、[(n) ]の部分を次々に置換していくだけのコードを作りたいのですが。
0745デフォルトの名無しさん
2015/05/14(木) 20:18:04.67ID:F7V5bQJf0746デフォルトの名無しさん
2015/05/14(木) 20:22:38.01ID:9qw93D9E0747デフォルトの名無しさん
2015/05/14(木) 20:24:18.33ID:IIsY3hAO0748デフォルトの名無しさん
2015/05/14(木) 20:29:26.12ID:F7V5bQJfいい質問ですね。
でもあかんのです。
0749デフォルトの名無しさん
2015/05/14(木) 20:45:37.38ID:9qw93D9Eなんで上から目線やねんw腹立つわーお前w
0750デフォルトの名無しさん
2015/05/14(木) 20:52:55.50ID:acBE6LVCとりあえず何でもエクセルで済ませるからなぁ。
0751デフォルトの名無しさん
2015/05/14(木) 20:54:21.01ID:O7MsFe850752デフォルトの名無しさん
2015/05/15(金) 08:08:47.46ID:hB02Sd+Mあのね、そういうのは予め仮入力なんてしておくもんじゃないんですよww
考え方まず変えろ。
0753デフォルトの名無しさん
2015/05/15(金) 09:00:12.35ID:fABQpvFqExcelで文章作ってしまえ。
0754デフォルトの名無しさん
2015/05/15(金) 12:33:33.28ID:OMVhwfYU文字に置換するだけなら
Application.ActiveDocunent.Range.Find.Execute FindText:="[(1) ]", ReplaceWith:="xxx", Replace:=wdReplaceOne
でいい
画像を挿入したいなら InlineShapes.AddPicture でやればいい
ただしサイズは指定できないようなので、挿入してから変更する
0755デフォルトの名無しさん
2015/05/15(金) 20:58:35.65ID:HJjbweM70756デフォルトの名無しさん
2015/05/15(金) 21:35:19.65ID:LwgLu3530757デフォルトの名無しさん
2015/05/15(金) 21:40:30.32ID:KG1O+50cendwithではしてくれないのが地味にストレス
0758デフォルトの名無しさん
2015/05/15(金) 21:59:40.91ID:CjVYKosxENd With にしてくれるのにねw
0759デフォルトの名無しさん
2015/05/15(金) 22:55:39.57ID:skv10qrJちょっと実際のサイトを出してしまってスミマセンが、
以下のサイトのプルダウンをVBAで操作することは可能なんでしょうか?
ttp://e-apply.jp/shiharai/select
一つ目のプルダウンは、こんな感じでいけるんですが、
objIE.Document.getElementById("first_exam_code").SelectedIndex = "1"
objIE.Document.getElementById("first_exam_code").onchange
2個目以降のプルダウンって操作できるもんなんでしょうか?
0760デフォルトの名無しさん
2015/05/15(金) 23:15:15.38ID:trr6aaopうっすら犯罪の臭いまでしやがる
0761デフォルトの名無しさん
2015/05/15(金) 23:24:18.51ID:7xd2oNko0762デフォルトの名無しさん
2015/05/15(金) 23:45:12.82ID:HJjbweM70763759
2015/05/16(土) 14:07:02.70ID:i0GMMExwあ、別に同様の仕組みを持つなら、このサイトじゃなくてもいいんですが
vbaの勉強してて、最近使ったこのサイトを見たらワケ分からなかったんで
0764デフォルトの名無しさん
2015/05/16(土) 14:38:42.05ID:cnOdW2icVLOOKUP関数を使って別シートから参照したデータをセル(1,2)に入れたいんですが
Worksheets("シート1").Cells(1,2).Value = _
Application.WorksheetFunction.VLookup(Cells(1,1), Sheets("シート2").Range(cells(1,1),cells(8,2)), 2, False)
このようにうちこんだところエラーがでます。
VBA初心者なもので間違いが馬鹿みたいに根本的なところかもしれませんが・・・
VBAを使ってとの指示なので関数をそのままシートに入れ込む方法はNGです
0765デフォルトの名無しさん
2015/05/16(土) 15:01:20.00ID:cnOdW2ic「Application.WorksheetFunction.Vlookup」と打ち込みましたが
実際は「Application.Vlookup」です
0766デフォルトの名無しさん
2015/05/16(土) 15:20:37.05ID:zE8oVtYD0767デフォルトの名無しさん
2015/05/16(土) 15:34:16.08ID:808i7u12Cells(1,1),
cells(1,1),
cells(8,2)
こいつらがどのシートのセルであるべきかをよく考えて
あと、エラーになるならそのメッセージを貼ってくれ
それと問題のコードは可能なら手打ちじゃなくてコピペした方がいい
0768デフォルトの名無しさん
2015/05/16(土) 15:53:05.26ID:zE8oVtYDありがとうございます
今回は解決したので次回質問の際はそうしようと思います
0769デフォルトの名無しさん
2015/05/16(土) 16:07:40.03ID:xLQoB7z8Cells はその前にシートを明示的に指定しないと、標準モジュール内では ActiveSheet を指定したとみなされる。
(シートモジュールではそのシートが指定されたとみなされる)
複数のシート間でそういう処理をしたいならきちんとシートから指定しないと駄目。
0770デフォルトの名無しさん
2015/05/16(土) 16:14:53.27ID:zE8oVtYDはい、ありがとうございます
0771デフォルトの名無しさん
2015/05/16(土) 17:02:48.35ID:ND3HyJT5shape.nameは重複する可能性があり、
またインデックス番号ではshapeが削除されたときに、変化してしまいます。
何をしたいかというと、
ユーザーが描いた図形に対して、
システム管理者側で、図形とシステム内部のデータをリンク付して処理します。
初期作成時は良いのですが、
ユーザ側で図の変更(増減)があったときに、差分に対してのみ管理者側でリンク付けを見直したいのです。
ユーザ側にはリンク付けに対して可能な限り、意識しないで言いようにしたいと思っています。
図の名前(shape.name)はワークシートで一意だと思っていたら、
図を複製(Duplicate)すると同一名称になってしまい、行き詰まっています。
2007です。
0772デフォルトの名無しさん
2015/05/16(土) 17:17:40.54ID:xhmYU3Qu0773デフォルトの名無しさん
2015/05/17(日) 19:09:40.96ID:n+Xb8uOT↑この表記方法の情報より
マイナスして何時間何分かかったかを計算する
最適なコードを教えて下さい。
簡単そうで何度も挫折。結局暗算の方が速くコード作成に至りません。。
0774デフォルトの名無しさん
2015/05/17(日) 19:31:27.16ID:jekqdhQFどこまで最適したいのか知らんが、時間を計算するだけなら挫折するほど難しいとも思えんのだが
' 元データ
s = "2015/05/15 10:29:02 2015/05/16 0:05:21"
' 時間計算
a = Split(s, " ")
t = DateValue(a(2)) + TimeValue(a(3)) - DateValue(a(0)) - TimeValue(a(1))
' 結果
MsgBox (t)
0775デフォルトの名無しさん
2015/05/17(日) 23:05:20.77ID:Iar2rpm10776デフォルトの名無しさん
2015/05/17(日) 23:22:09.19ID:cYQeAXyU0777775
2015/05/18(月) 00:02:18.90ID:JByp2bx30778デフォルトの名無しさん
2015/05/18(月) 00:09:09.50ID:g1eLp8hQ0779デフォルトの名無しさん
2015/05/18(月) 00:16:06.73ID:8tdUJmkuご丁寧にありがとうございます。
この式の仕組みがぱっと見高度すぎて理解が出来ない初心者ですが記述を元に勉強してみます。ありがとうございました!
0780デフォルトの名無しさん
2015/05/18(月) 00:43:16.88ID:MUJ+gX8Yこんにちは、グローバルさん。
0781デフォルトの名無しさん
2015/05/18(月) 22:18:13.26ID:+CxU+mbP0782デフォルトの名無しさん
2015/05/18(月) 22:35:28.84ID:JByp2bx30783デフォルトの名無しさん
2015/05/19(火) 01:05:07.39ID:6GwM+PLB0784デフォルトの名無しさん
2015/05/19(火) 07:59:26.66ID:Q5dfCaCY0785デフォルトの名無しさん
2015/05/19(火) 08:00:21.31ID:/N0/LJWo0786デフォルトの名無しさん
2015/05/19(火) 20:26:44.79ID:51Kay7LI俺も早くそのレベルに到達したいわ
0787デフォルトの名無しさん
2015/05/19(火) 21:27:44.20ID:pk00adtK0788デフォルトの名無しさん
2015/05/19(火) 22:49:07.22ID:NTe3EXZz0789デフォルトの名無しさん
2015/05/19(火) 23:04:15.24ID:Y2eIQ7MR0790sage
2015/05/20(水) 13:30:05.09ID:/G4b9/O8ブックBのA列には500行程あり夫々変わった番号が記載されています。
ブックAに記載されている番号一つ一つをBのブックに記載されている番号と照合して一致した場合なにもしない
一致しなければ列の削除を行なう。
結果ブックAにはブックBに記載のある番号だけが残るというマクロを作成したいと考えております。
番号と照合して一致した場合なにもしない 一致しなければ列の削除を行なうマクロは下記のようになるのかなと思いますが
ブックAとブックBを総当りのようにして照合しないといけない点でどのようにしたらいいのか困っております。
アドバイスを宜しくお願い致します。
Dim lRow As Long
Dim i As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = lRow To 2 Step -1
If Cells(i, 1).Value Like "*ブックBのA列の数字*" Then
Else
Rows(i).Select
Rows(i).Delete
End If
Next i
0791デフォルトの名無しさん
2015/05/20(水) 14:40:36.23ID:+7CH4iLo何がどう問題だと思ってるんだ?
Lookup系の関数使うとか何とか色々あるけど
基本的に表計算なんだから
>ブックAとブックBを総当りのようにして照合しないといけない
のはしょうがないぞ
各シートをテーブルとみなしてSQL発行とかでも行けるかもしれんが
だったら素直にDMBS使えよって話だと思うな
それか単に、総当たりで検索する方法がわからんとか言う話か?
0792デフォルトの名無しさん
2015/05/20(水) 15:30:49.52ID:toAFo5AQブックBのA列をコレクションとかディクショナリーに突っ込んで
Existsメソッドで重複を判定する
http://officetanaka.net/excel/vba/tips/tips80.htm
0793デフォルトの名無しさん
2015/05/20(水) 19:39:24.59ID:mpg1pqam500行ぐらいなら総当たりでも充分
あと、一致を調べながら削除するのは行がずれるので慣れないとバグの元
消すべき行は番号をクリアするとかのマーキングしといて、調べ終わったらマーキングした行を下から消すようにした方が楽
0794デフォルトの名無しさん
2015/05/20(水) 19:48:22.09ID:U03hSAHASub test()
Dim SheetA As Worksheet, SheetB As Worksheet
Dim c As Range, d As Range, DeleteRow As Range
Set SheetA = BookA.Sheets(1)
Set SheetB = BookB.Sheets(1)
For Each c In Range(SheetA.Cells(1, 1), SheetA.Cells(Rows.Count, 1).End(xlUp))
For Each d In Range(SheetB.Cells(1, 1), SheetB.Cells(Rows.Count, 1).End(xlUp))
If c.Value = d.Value Then
If DeleteRow Is Nothing Then
Set DeleteRow = c.EntireRow
Else
Set DeleteRow = Union(DeleteRow, c.EntireRow)
End If
End If
Next
Next
DeleteRow.Delete
End Sub
こういうこったろ。
0795デフォルトの名無しさん
2015/05/20(水) 21:32:59.41ID:ViQsHsetDeleteRow は DeleteRows にして欲しいな
0796デフォルトの名無しさん
2015/05/20(水) 21:48:04.22ID:HCLyDu6k0797デフォルトの名無しさん
2015/05/20(水) 22:11:55.19ID:ViQsHset0798790
2015/05/20(水) 22:23:10.85ID:/Q2126ec>>794
なるほどそういうふうにすればいいんですね。
初心者でかんたんな物しか作った事がないので勉強させてもらいました。
ありがとうございました。
0799デフォルトの名無しさん
2015/05/22(金) 00:16:22.94ID:7IAbjP3nexcel2007以上の場合
画像を貼り付けて大きさを縮小して1回目の保存をすると
自動的に圧縮がかかってしまいますが
圧縮をさせないにはどういうコードを書けばいいのでしょうか
手動で設定するとなると
画像の圧縮設定≫オプション≫圧縮オプション≫保存時に基本的な圧縮を自動で行う のチェックを消す
をした後に保存するといいのですがVBAではどのようにすればいいのかわかりません
宜しくお願いします
0800デフォルトの名無しさん
2015/05/22(金) 00:45:04.71ID:m+2CPTEZ画像の圧縮設定をVBAから変更するにはレジストリ操作が必用
0801デフォルトの名無しさん
2015/05/22(金) 00:46:02.47ID:mKEmVuJj0802デフォルトの名無しさん
2015/05/22(金) 00:48:11.98ID:mMDyzvZDCSV でも何でもよいが、ファイルに出力して、
Ruby, Python の配列で集合演算してから、Excelに読み込む
A{1,2}, B{2,3}
積: A & B → 2
差: A - B → 1
0803デフォルトの名無しさん
2015/05/22(金) 06:54:34.47ID:Pn6Oo0VM周回遅れでそのレスって...
0804デフォルトの名無しさん
2015/05/22(金) 07:18:28.69ID:lw1n3rmm配列操作のライブラリ導入したほうが後々いい
0805デフォルトの名無しさん
2015/05/23(土) 04:23:29.08ID:JX2ttYg20806デフォルトの名無しさん
2015/05/23(土) 19:35:45.54ID:S/R6EJL5列(x)の値をすぐ調べる方法ってありますか?
いつも左端まで選択して調べてるんですけど面倒で・・・
0807デフォルトの名無しさん
2015/05/23(土) 19:44:25.17ID:loW/oZwH0808デフォルトの名無しさん
2015/05/23(土) 19:44:59.72ID:6uRtySl8>>530-534
0809デフォルトの名無しさん
2015/05/24(日) 00:07:53.75ID:jU7nwXbgこの場合、B1セルに M1 とか知りたい列と数字を入れれば列の値が出る
自分はデバックしながら作ることが多いから
その列のどこかにに =COLUMN() 入れてるけどね
0810デフォルトの名無しさん
2015/05/24(日) 00:15:39.02ID:XnjYG7Rv列固定なら数字がわからなくても Cells(y, "AB") みたいに書くこともできる
0811デフォルトの名無しさん
2015/05/24(日) 13:07:44.90ID:m+xdfutr0812デフォルトの名無しさん
2015/05/24(日) 23:39:39.11ID:mkdpU9/cVBAから外部アプリをアクティブにする方法までは分かったのですが、
上記のようにタブが設定されている場合の操作方法、
例えば
・タブの名前を取得する方法
・任意のタブをアクティブにする方法
が分かりません。
どなたかご教授頂けませんか?
0813デフォルトの名無しさん
2015/05/25(月) 00:08:47.08ID:vKvddwmi0814デフォルトの名無しさん
2015/05/25(月) 00:11:07.67ID:qIuI2+n/どんなアプリを作っているんですか?
0815デフォルトの名無しさん
2015/05/25(月) 00:27:11.12ID:CYyVEuL9タブの情報取得は使ってるライブラリによって方法が違うので、汎用で使える物を作ろうとするとかなりめんどくさい
不可能ではないんだけど、コントロールしたいウィンドウが決まってるなら決め打ちで作った方が早い
タブの切り替えはSendkeysでCtrl+Tabを送ればいい
逆送りはCtrl+Shift+Tab
0816デフォルトの名無しさん
2015/05/25(月) 01:01:07.39ID:Q8EilB3B調べてもなかなか方法が見つからなかったので、無理かなあ・・・とは思ってました。
>>814
社内の内製ツールにexcelのデータを打ち込むアプリですね。
作業が面倒だったので自動化したいなと。
>>815
コントロールしたいウィンドウは決まっているので、
教えて頂いた方法で作りたいと思います。
ご回答ありがとうございます。
0817デフォルトの名無しさん
2015/05/25(月) 02:32:42.22ID:d24JU1neご教示お願いいたします
0818デフォルトの名無しさん
2015/05/25(月) 04:08:50.61ID:mfxJeCqJそれは内製ツールにエクセルデータ読ませるべきだろ。
外部ツールとの連携って普通は読み込む側が対応するものだし。
0819デフォルトの名無しさん
2015/05/25(月) 04:41:58.07ID:CYyVEuL9Dim A()
略
Print #1, Join(A, ",") & vbCrLf;
0820デフォルトの名無しさん
2015/05/27(水) 20:56:42.91ID:eIlYoeOr作業者に一日の作業内容を書いてもらって、人件費のみの製造原価を計算するように言われました。
作業者に書いてもらう内容は、作業時間(○○:○○〜××:××)、製品名、本数、作業工程です。
作業者日報をエクセルで入力すれば、製品に対する作業工程、本数、作業時間を抽出できるようにしたいのですが、
どうすればいいのでしょうか?
もしかしたら、スレ違いかもしれませんがよろしくお願いします。
0821デフォルトの名無しさん
2015/05/27(水) 21:36:19.06ID:Pu761imv開始、終了、本数は数字を入力、品名、工程はリストから選択するようにして、あとは数式かピボットかマクロで集計
データは正規化しておくこと
日付と作業者名も入力しといた方がいいだろうね
氏名はリスト選択だな
0822デフォルトの名無しさん
2015/05/27(水) 21:46:53.91ID:eIlYoeOr貴重なアドバイス有難うございます。正規化というのが分かりませんが、調べて進めてみます。
0823デフォルトの名無しさん
2015/05/28(木) 18:13:57.66ID:Oyf8GQaQ0824デフォルトの名無しさん
2015/05/28(木) 18:14:25.82ID:j1AAH5mxいやあるし
0825デフォルトの名無しさん
2015/05/28(木) 18:53:13.17ID:FNdyiEN3付いただけでタイルタッチしてもなんか動き出さないけど またなんか無駄な機能満載な希ガス
0826デフォルトの名無しさん
2015/05/28(木) 19:53:02.31ID:MDCiTYVtフォームのWebBrowserコントロールを使うのとでは、
互換性とかどのような違いが出てきますでしょうか?
082710人に一人はカルトか外国人
2015/05/29(金) 03:47:59.18ID:K07Xnd2y・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト
10人に一人はカルトか外国人
「ガスライティング」で検索を!
0828デフォルトの名無しさん
2015/05/29(金) 07:14:01.85ID:zB4zEZMzここってVBAスレじゃなかったのか
すみません。お邪魔しました
0829デフォルトの名無しさん
2015/05/30(土) 05:04:12.50ID:r+1vXVeE0830デフォルトの名無しさん
2015/05/30(土) 07:24:56.67ID:/Jk06/tQ少なくともVBAのFor Eachって読み出すだけで書き込みは別の手段使わないといけないからなぁ。
追加と削除が自由に出来て見た目が単純な配列(の様な構造)なら、
Type TestType
Dim i As Long
Dim PreviousType As TestType
Dim NextType As TestType
End Type
みたいな構造体を持つクラスを作って、
Function ToNext() As TestType
ToNext = NextType
End Function
って形の関数で次を返してやるっていう方法がC++勉強している時にあったなと思ったけど、
前後への参照ってポインタじゃないと成立しないかな、これ。
0831デフォルトの名無しさん
2015/05/30(土) 08:53:36.04ID:4IPDAfwH行の削除や挿入も自由だし
問題は重すぎることぐらいかな
0832デフォルトの名無しさん
2015/05/30(土) 10:31:01.12ID:ZN/k7wLR旧態依然とした糞言語と言う話を
聞いたことがある。
昔から存在しているだけあって、
JAVAやVB.net、C#のように
洗練されておらす、
ポインタの間接参照、多重継承など、
下手をしたらアプリだけで無く
マシンごと暴走したり、
勉強しても今の主流のObject指向言語と
形式がかなり違うので
他に潰しが利かないらしい。
そう言ってる奴がいたけど、
俺はよく知らん。
0833デフォルトの名無しさん
2015/05/30(土) 12:25:08.80ID:mU8J0Ylc0834デフォルトの名無しさん
2015/05/30(土) 14:54:50.20ID:tOCF6Az4例えばA1に数式が入っていて、計算結果が"無し"
の場合にマクロ実行という感じで行いたいです。
可能でしたらすみませんが、教えていただきたいです。
0835デフォルトの名無しさん
2015/05/30(土) 14:57:42.72ID:hoDObeoT数式そのもので使う関数をVBAで自作すれば良いと思うんだが
0836デフォルトの名無しさん
2015/05/30(土) 16:37:54.33ID:zCeNynVh不可能
マクロは必ず実行されてしまうので、その中で計算結果がどうなっているか判断するしかない
0837デフォルトの名無しさん
2015/05/30(土) 16:53:29.13ID:yyPVZrz3おい嘘教えんなw
0838デフォルトの名無しさん
2015/05/30(土) 16:53:58.24ID:u87GwTIT>>835の言うようにユーザー定義関数がベスト
ただ制限がキツイからやりたい事が出来るかはわからんが
無理ならWorksheet_Calculateだろうな
0839デフォルトの名無しさん
2015/05/30(土) 17:33:09.64ID:6R4xdRbgA1の値を変数に入れて"無し"ならマクロ実行させて同時に変数クリアすれば良いんじゃ?
変数に入れるタイミングをどうするかが肝だ
0840デフォルトの名無しさん
2015/05/30(土) 18:11:57.57ID:Gez8yvtR0841デフォルトの名無しさん
2015/05/30(土) 19:16:34.56ID:gEFTPVJNみたいな関数を作れば行けるだろ
0842デフォルトの名無しさん
2015/05/31(日) 06:34:34.18ID:kPmhLqLU>VBAのFor Eachって読み出すだけで書き込みは別の手段使わないといけないからなぁ。
結果が参照になっていない仕様は本当にダメ
これのせいでVBAのFor Eachは価値が半減している。
関数が参照を返せないのも本当にクソ
0843デフォルトの名無しさん
2015/05/31(日) 07:52:30.28ID:vc0UiurHポインタを使えないVBAがクソなら
更に先のデリゲートが無くて
同じことをやるなら色々面倒なことが
必要なC++もビヂクソ
0844デフォルトの名無しさん
2015/05/31(日) 10:20:10.85ID:MsgqmVeVキーと値のペアを登録する辞書データがVBAで使えるようになるのだけど
これのリスト版ってないものかな
0845デフォルトの名無しさん
2015/05/31(日) 10:33:35.22ID:vCKs7HZrできないことと、面倒だけとできることの間には深くて暗い溝がある
>>844
ない、俺は ReDim 駆使するのが多い
ただ、これはこれで要素が無いときの扱いが面倒だったりする
それにしても Scripting.Dictionary のキーはともかく、値は Variant にしておいて欲しかった
0846デフォルトの名無しさん
2015/05/31(日) 12:17:29.66ID:0ODl3GwzClass Test
Dim i As Long
Property Let Add(arg)
i = arg
End Property
End Class
Dim c(10) As Test
For Each x in c
x.Add = 1
next
試してないけどこんな形にすれば何とかForEachで個々の変数にアクセス出来るかも。
0847デフォルトの名無しさん
2015/05/31(日) 13:48:45.67ID:yHSp9kv+これならFor Eachで参照できる
0848デフォルトの名無しさん
2015/05/31(日) 15:32:18.21ID:9VNzTXZkC++03とかのイメージで語ってないか??
0849デフォルトの名無しさん
2015/05/31(日) 16:21:42.26ID:z9G7B0pQ0850デフォルトの名無しさん
2015/05/31(日) 17:46:06.94ID:HJcUYUCv地球防衛軍の警備車輌
0851デフォルトの名無しさん
2015/05/31(日) 19:24:32.30ID:yHSp9kv+0852デフォルトの名無しさん
2015/05/31(日) 22:06:16.17ID:0zt8UYVsアセンブラの頃には間接修飾とか間接参照と呼ばれていた、
Cに受け継がれた今となっては負の遺産の一つ。
0853デフォルトの名無しさん
2015/05/31(日) 23:27:20.71ID:kPmhLqLU0854デフォルトの名無しさん
2015/06/01(月) 07:35:45.36ID:IdfmF7Zn0855デフォルトの名無しさん
2015/06/01(月) 09:12:01.80ID:b5EyYOue0856デフォルトの名無しさん
2015/06/01(月) 09:13:11.38ID:b5EyYOue0857デフォルトの名無しさん
2015/06/01(月) 12:32:29.88ID:+Jl+yFZ90858デフォルトの名無しさん
2015/06/01(月) 13:03:22.50ID:b5EyYOueVBAにそういう固有の事情でもあると?
0859デフォルトの名無しさん
2015/06/01(月) 13:07:09.81ID:b5EyYOueもしかしてVBAで効率を気にしても意味ないって言ってるのかな?コピーを返すコストは気にするなと。
0860デフォルトの名無しさん
2015/06/01(月) 14:14:16.76ID:WHpiTc/Q参照っていう言葉の意味をちゃんと定義してから議論してくれ
オブジェクト型変数が表すものは参照と呼べるの?呼べないの?
0861デフォルトの名無しさん
2015/06/01(月) 15:12:46.15ID:b5EyYOue定義ったってVBAで参照といえばByRefのことだとしか。
関数がByRefで受け取った変数をByRef のまま出力することを言ってるのさ。
0862デフォルトの名無しさん
2015/06/01(月) 15:36:15.33ID:lImu9kYRif 〜 then x=1 and Y=2
もし条件が当てはまればXは1にしてYは2にするという構文を作りたいのですが
これを書くとXもYも数字が入りません
if 〜 then x=1
とするとX=1で認識されます。
if 〜 then Y=2
でもY=2となるのですが
if 〜 then x=1 and Y=2はできません。
if 〜 then and(x=1,Y=2)これは使えません。
どうやって書いたらいいのでしょうか?
0863デフォルトの名無しさん
2015/06/01(月) 15:38:36.40ID:2CPY9Y9IX=1
Y=2
これでいいんでない?
0864デフォルトの名無しさん
2015/06/01(月) 15:41:59.09ID:lImu9kYRめんどくさがって1文で済ませようとしてたのが。
初歩的なところで混乱してしまいました。
ありがとうございます。
0865デフォルトの名無しさん
2015/06/01(月) 15:55:56.99ID:WHpiTc/QだったらByRefで受けた引数はそのままIN/OUT出来るわけだが
>>862
if 〜 then x=1:Y=2
お勧めしないけどな
0866デフォルトの名無しさん
2015/06/01(月) 16:22:04.96ID:lImu9kYRおおぉ
ありがとうございます。
一文の方が助かります
0867デフォルトの名無しさん
2015/06/01(月) 17:28:34.46ID:E85enODL0868デフォルトの名無しさん
2015/06/01(月) 18:22:09.18ID:b5EyYOueByRefでのOUTはないでしょ?
y = func(func(x))
で内側のfuncが返す値はコピー。
xが配列のときつらい。
0869デフォルトの名無しさん
2015/06/01(月) 19:23:19.23ID:Db8kvl/Gいやだから関数のreturnがByRefである事の意味分かってないよお前
0870デフォルトの名無しさん
2015/06/01(月) 19:32:26.58ID:b5EyYOueどこかや?
0871デフォルトの名無しさん
2015/06/01(月) 19:33:05.33ID:b5EyYOue>>869
どこがや?
0872デフォルトの名無しさん
2015/06/01(月) 19:40:12.86ID:b5EyYOue関数 func(ByRef x As Variant ) As Variant
が配列 x のランダムな位置の1要素をランダム値に書き換える関数だとする。
これを3回繰り返すとき x = func(func(func(x))) と書きたい。
そういうときどうするよ?
0873デフォルトの名無しさん
2015/06/01(月) 19:49:23.27ID:Db8kvl/Gその通り書けよ。参照を返す必要ないぞ。
0874デフォルトの名無しさん
2015/06/01(月) 19:50:06.20ID:WHpiTc/Q引数でOUTできるって言ってるんだが
戻り値にByRefもByValもないからな
すくなくとも俺はx = func(func(func(x))) なんて式は書きたくないけど
そこまで速度気にするなら全部グローバルな変数でやってればいいんじゃね
0875デフォルトの名無しさん
2015/06/01(月) 19:50:35.11ID:OoLqVGO6Long型で返すらしいから
Dim PtrArr() As Long
ReDim PtrArr(LBound(Hoge) To Ubound(Hoge))
For i = LBound(Hoge) To Ubound(Hoge)
PtrArr(i) = VarPtr(Hoge(i))
Next
という手順を踏めばFor Eachでも読み書きが出来そうとか思ったけど、
そこまでの手順を踏むより別の手段使った方が処理速度的にも早そう。
0876デフォルトの名無しさん
2015/06/01(月) 19:56:12.43ID:zsOMpfxbそれならできるよ。
x = func(func(func(x)))
って書いたときに、一度も配列のコピーが発生しないようにできる。x の要素数がどんなに多くても一瞬で処理完了。
ただハッキングに近いやり方だからな。
0877デフォルトの名無しさん
2015/06/01(月) 20:18:35.39ID:b5EyYOueああ「引数でOUT」ね。でも理由があってチェーン表記にする必要があるし、グローバル変数は使いたくない。
>>876マジで?
手元の環境で>>872の処理だとxの要素数1,000,000で大体150msくらいかかる。実際の繰り返しはもっと多いです。
0878デフォルトの名無しさん
2015/06/01(月) 20:44:27.15ID:Db8kvl/G百害あって一理なしとはまさにこの事と言ってもいい。
素直に泥臭く書いて、素直にグローバル変数を使って少しづつ成長すればいいんだよ。
0879デフォルトの名無しさん
2015/06/01(月) 20:51:14.69ID:b5EyYOueおまえは>>872に対する解を何一つ持ってないじゃないかドアホウ。
なにがグローバル変数を使えだ、いいかげんにしろ。
>>876
そう言わずに教えてよ。
0880デフォルトの名無しさん
2015/06/01(月) 20:52:58.50ID:Db8kvl/Gなぜグローバル変数使いたくない?言ってみろ。
0881デフォルトの名無しさん
2015/06/01(月) 21:08:45.97ID:b5EyYOueそりゃ複数の箇所から使うときのオーナーシップ管理がややこしくなるし、関数ごとにfunc1用グローバルfunc2用グローバルとか必要になった日にはそんな関数一般化も汎用化も望めなくなるし、第一グローバル変数を避けることに理由付けなんかいらないんだよね。
0882デフォルトの名無しさん
2015/06/01(月) 21:16:14.52ID:hih5o8Kt0883デフォルトの名無しさん
2015/06/01(月) 21:16:29.78ID:zsOMpfxbえーなんか言い争いになってるし、そんなところに飛び込んで巻き込まれるのはちょっと。
ぐぐってくれ。
0884デフォルトの名無しさん
2015/06/01(月) 21:18:31.44ID:OoLqVGO6極限定的な使い方しかしない(変数が単一目的でしか使用されない)事が保証されている環境ならグローバル変数も考慮には入る。
「なんだか世の中的にカプセル化が流行りなのでグローバル変数死すべし」っていう狭量な考え方は少し待った方がいい。
0885デフォルトの名無しさん
2015/06/01(月) 21:20:07.99ID:Db8kvl/Gまず変数のオーナーとか変な造語やめれ。
変数の性質は生存期間や可視範囲で語るものだ。
それが、プログラム実行中ずっと必要だったり、複数のモジュールから参照したいのであれば
グローバル変数にするのが最も自然なアプローチだぞ。
0886デフォルトの名無しさん
2015/06/01(月) 21:30:01.89ID:b5EyYOueこの場合その前提かあてはまるか?
>>872にある
x = func(func(func(x)))
の変数 x のどこにそんなグローバル性が見いだせるの?
>>883
ヒン...ト...
0887デフォルトの名無しさん
2015/06/01(月) 21:37:44.27ID:Db8kvl/Gその例に限って言えば、関数を入れ子にする必然性が全くない。
単にそう書きたいってだけのワガママ。
0888デフォルトの名無しさん
2015/06/01(月) 21:48:54.79ID:Db8kvl/G関数がByRefで返すってのは変数のアドレスを返すという意味だからな。
それがグローバル変数ならあまり意味がないし
そうでなければ、スタック領域のアドレスという事になる。
VBでそんな危険な仕様を新たに取り入れる必要は全くない。
0889デフォルトの名無しさん
2015/06/01(月) 22:02:15.36ID:NN8EkQRrて言うかスタックのどこに割り当てられたか探せるの?
その関数を呼ぶまでのルートで配置場所変わると思うんだけど。
0890デフォルトの名無しさん
2015/06/01(月) 22:07:31.02ID:Db8kvl/Gなんのこっちゃ?ローカル変数のアドレス返すだけだぞ。
0891デフォルトの名無しさん
2015/06/01(月) 22:09:34.58ID:WHpiTc/Q>チェーン表記にする必要があるし、グローバル変数は使いたくない。
じゃあVBA以外の言語使えよで終了
VBAでの速度向上を求める事に意味が無いとはいわないが
VBAで出来ない事をもとめて速度がどうこう言ってもしょうがない
>>876
そんな方法があるなら興味あるしちょっと教えてくれ
0892デフォルトの名無しさん
2015/06/01(月) 22:10:58.83ID:b5EyYOue単純化したサンプルだからそう見えるかもしれないが、「文ではなく式であり値を持つ」ことに価値がある場合があるのさ。
func0(funcA(x), funcB(y), funcC(z)...)
としたらもっとわかりやすいか?
0893デフォルトの名無しさん
2015/06/01(月) 22:11:33.11ID:CikCK20O一文にこだわる奴は120%変人。
B型かAB型だな。
0894デフォルトの名無しさん
2015/06/01(月) 22:16:06.97ID:Db8kvl/Gなんか関数型プログラミングに影響受けてるっぽいけど、だったらそういう言語使え。
VBは素人が考えた通りに手続きを書き下ろせば、簡単にプログラミングできる様にデザインされた言語。
そもそも目的が違う。
大体、返された値を使いたかったら、func(x)の中でxの値を更新するな。
0895デフォルトの名無しさん
2015/06/01(月) 22:18:38.01ID:CikCK20O0896デフォルトの名無しさん
2015/06/01(月) 22:24:54.71ID:xEns3aUX0897デフォルトの名無しさん
2015/06/01(月) 22:29:58.36ID:CikCK20Oexcelでruby使えるんか?
0898デフォルトの名無しさん
2015/06/01(月) 22:31:51.95ID:NN8EkQRrC++には参照渡しの他に参照型と言う概念は無いのかな?
戻り値が値渡しと言うなら参照型、つまり生成して渡すものであれば別にクラスでもいいんだけど、
要は参照型の値渡しをしてやればいい。
とりあえず思い付いたのがコレクションだったので、そう書いただけだけどね。
Private Sub ReferTest1()
Dim collection1 As New collection
Dim collection2 As collection
Call collection1.Add("AAA")
Set collection2 = ReferTest2(collection1)
Call MsgBox(collection1 Is collection2)
End Sub
Private Function ReferTest2(ByVal coll As collection) As collection
Call coll.Add("BBB")
Set ReferTest2 = coll
End Function
これで戻り値に参照が渡ったことが確認出来るよね。
0899デフォルトの名無しさん
2015/06/01(月) 22:32:25.58ID:xEns3aUXというかCOMにアクセスできる言語ならなんでもexcel使えるやろ
0900デフォルトの名無しさん
2015/06/01(月) 22:37:11.84ID:CikCK20OCOMでexcel
コムデギャルソン
似てる
0901デフォルトの名無しさん
2015/06/01(月) 22:40:21.86ID:OoLqVGO6っていうかC#とかpythonとかでも書けるようにしてほしい。
そしてここは「VBAのスレ」であって「エクセルを扱える言語スレ」ではない。
0902デフォルトの名無しさん
2015/06/01(月) 23:00:07.78ID:zsOMpfxb>func0(funcA(x), funcB(y), funcC(z)...)
こういうときには僕の方法は使いにくい。
あくまでコピーを発生させずに処理できるというだけで、
x = func0(funcA(x), funcB(y), funcC(z)...)
と書いたならxは残るけどyとzは消える。
あなたが気にしてるコピーは、次の func = x のところで発生するでしょ
Function func(ByRef x As Variant ・・・
・・・ x になにか処理 ・・・
func = x ' ←ここ
End Function
func = x って書いちゃダメなんですよ。
x が100万要素の配列だとして、それを関数から返すのにどうやってコピーを避けるか。
(ポインターの使えない言語だし、無理やりアドレスを返しても受け取った側は困ってしまう。)
xには、消えてもらうしかないんですよ。
0903デフォルトの名無しさん
2015/06/01(月) 23:22:45.28ID:IdfmF7Zn横槍だけど、単純にx,y,zのプロパティをもつエンティティクラスを生成して、
そのインスタンスごと引数にぶち込んで、それを戻り値に設定してやれば
万事解決じゃないの?
どうもさっきから戻り値に参照が渡せないとか、
融通のきかない設計を一生懸命やろうとして嘆いてるようにしか見えないんだよなぁ。
0904デフォルトの名無しさん
2015/06/02(火) 00:44:15.89ID:lKtLXZHs↓で、2が出ないんだっけ?
sub macro1
dim arr(0)
arr(0)=1
call byref_test(arr)
msgbox arr(0)
end sub
sub byref_test(byref arr() as variant)
arr(0)=2
end sub
0905デフォルトの名無しさん
2015/06/02(火) 01:09:43.65ID:2tSqBHbP呼び先で戻り値に設定したいんだと
でももう片付いた話だからいいよ
0906デフォルトの名無しさん
2015/06/02(火) 08:05:46.46ID:UQqysIrcA 何故C++で存在した多重継承やポインタをC#になったとき使えなくなったのか。
B @はC++では出来るがC#でその機能は消されている。つまり敢えて封じられている訳だけど何故か。
この辺が分かると何故Goto文を乱用してはいけないのか、のときみたいな解答が分かるかもね。
0907デフォルトの名無しさん
2015/06/02(火) 09:02:17.18ID:FFYJa/uF0908デフォルトの名無しさん
2015/06/02(火) 12:04:19.40ID:FFYJa/uF0909デフォルトの名無しさん
2015/06/02(火) 18:55:37.06ID:8xk68iX+思わせぶりに書くだけで、はっきりコード出せないのか?
0910デフォルトの名無しさん
2015/06/02(火) 19:17:47.88ID:FFYJa/uFB はどう考えても「ヘタレだから」だろう
0911デフォルトの名無しさん
2015/06/02(火) 19:21:37.61ID:UQqysIrcいっつもC++やってる人弄ると出てくるよね
ま、同一人物なんだろうけどさ
0912デフォルトの名無しさん
2015/06/02(火) 21:07:03.38ID:FFYJa/uF0913デフォルトの名無しさん
2015/06/02(火) 21:31:46.66ID:8xk68iX+消えてもらうしかないとか良くわからない説明してるからコード書いてもらう方がわかりやすいかと
結局具体的には一切説明してないし
これを思わせぶりと言わずして何と言うんだね
0914デフォルトの名無しさん
2015/06/02(火) 22:57:25.33ID:JFmwO0q+0915デフォルトの名無しさん
2015/06/02(火) 23:04:30.79ID:FFYJa/uF片方に消えてもらいましょうてのは至極当然のような気がしてきた。
0916デフォルトの名無しさん
2015/06/03(水) 02:09:09.21ID:9nuZvQmA以前>>660でそれに断ち切られた>>644-659のくだりの
>>659の質問にぼちぼち答えて頂けないだろうか。
0917デフォルトの名無しさん
2015/06/03(水) 20:57:35.98ID:tM+0mKUp盛り上がらんだろ
0918デフォルトの名無しさん
2015/06/03(水) 21:32:16.34ID:C2NDVDWh645 名前:デフォルトの名無しさん :2015/05/05(火) 08:03:11.47 ID:Gy6WgfTU
それならエクセルが直接コントロールできるC++14でいいじゃないか
0919デフォルトの名無しさん
2015/06/03(水) 21:42:44.32ID:nuofSA+R0920デフォルトの名無しさん
2015/06/03(水) 22:26:32.54ID:C2NDVDWh0921デフォルトの名無しさん
2015/06/03(水) 22:59:18.01ID:ZxJD2qlU0922デフォルトの名無しさん
2015/06/04(木) 00:44:13.32ID:SUYmAF8I0923デフォルトの名無しさん
2015/06/04(木) 01:02:36.34ID:2DlOgaWyC++14名指しで出しといて糞じゃん
0924デフォルトの名無しさん
2015/06/04(木) 12:38:15.22ID:83CYV2wO0925デフォルトの名無しさん
2015/06/04(木) 22:31:24.23ID:eZ6vZki5うまくいかないので、以下のHello.javaを作って
コンパイル、実行すると以下の通りでした。
2号機のほうにもJavaを入れ(SE8-45)
コンパイル、実行するとうまくいきます。
思い当たるのは1号機の方にNetBeansと
GlassFishを入れたことです。
以下、1号機でのコンパイル、実行です。
NetBeansなどが入ったマシン(Windows7-pro)で
cmd.exeから実行するにはどうすればいいですか。
----------------------------
Hello.java
class Hello{
public static void main(String[] args) {
System.out.println("Hello");
}
}
0926デフォルトの名無しさん
2015/06/04(木) 22:32:09.43ID:eZ6vZki5C:\dev\java\study>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 10D2-49BD です
C:\dev\java\study のディレクトリ
2015/06/04 22:17 <DIR> .
2015/06/04 22:17 <DIR> ..
2015/06/04 22:17 401 Hello.class
2015/06/04 22:07 226 Hello.java
6 個のファイル 1,945 バイト
2 個のディレクトリ 335,030,054,912 バイトの空き領域
C:\dev\java\study>java Hello
エラー: メイン・クラスHelloが見つからなかったかロードできませんでした
C:\dev\java\study>
0927デフォルトの名無しさん
2015/06/04(木) 22:36:17.80ID:eZ6vZki50928デフォルトの名無しさん
2015/06/04(木) 22:54:04.19ID:rgPVcrQM0929デフォルトの名無しさん
2015/06/05(金) 08:05:55.34ID:AkSsA4ecなぜかコードが途中で止まる。
ブレークポイントも設定してないのに
F8でステップ実行したときみたいにコードが黄色くなっててそこで停止。
エラーも吐かない。
マクロ単体で走らせると完走するのに…なぜだ?
0930デフォルトの名無しさん
2015/06/05(金) 08:34:07.63ID:7wdWgOJIブレークポイントを設定したままセーブしてしまってゴミが残ってるんじゃないの?
同じ箇所にもう一度ブレークポイントを貼って外してセーブして戻らない?
0931デフォルトの名無しさん
2015/06/05(金) 08:36:24.13ID:AkSsA4ecそんなことあんの?あとでやってみるわ。
にしても、消したはずのセルにゴミデータを残したり
いろいろバグ?が残ってるねぇ。
0933デフォルトの名無しさん
2015/06/05(金) 10:25:30.36ID:kFF4Ec8B0934デフォルトの名無しさん
2015/06/05(金) 18:14:55.83ID:3UseM3t20935デフォルトの名無しさん
2015/06/05(金) 19:04:35.19ID:7wdWgOJI「まぁ、Microsoftですから」
0936デフォルトの名無しさん
2015/06/05(金) 22:18:29.64ID:nnmK9CiW0937デフォルトの名無しさん
2015/06/06(土) 11:53:05.28ID:ms2Ewoz/20年前からそれあるよ
コード編集やデバッガが複雑化していくから防げん
0938デフォルトの名無しさん
2015/06/06(土) 14:20:58.89ID:kLk3hEuPHeightを変えてもその範囲(?)が変化するだけでボックス自体の大きさは変わらないみたいですが。
0939デフォルトの名無しさん
2015/06/06(土) 16:47:35.47ID:XENnJZ5/出来ないんだよ。
替わりの方法を考えるしかない。
0940デフォルトの名無しさん
2015/06/06(土) 17:02:57.32ID:kLk3hEuPムゥゥ…了解しました
0941デフォルトの名無しさん
2015/06/06(土) 23:37:49.26ID:53bH7fGLせめてAccessなみにして欲しい。
0942デフォルトの名無しさん
2015/06/07(日) 00:22:13.71ID:cQIUp8uBhttp://www.dotup.org/uploda/www.dotup.org355344.png
チェックボックスのところだけ Frame で囲って、Frame のプロパティにある zoom の数値高くすれば
部分的に巨大化できる
あとは caption と border 消せばおk
0943デフォルトの名無しさん
2015/06/07(日) 02:03:22.24ID:E+AQ3Mq+0944デフォルトの名無しさん
2015/06/07(日) 06:55:33.40ID:r1CTg/ug出来ました!アリガトウです
0945デフォルトの名無しさん
2015/06/07(日) 12:23:11.78ID:8lJn8ygb凄い!
0946デフォルトの名無しさん
2015/06/09(火) 19:43:08.22ID:c8o1Qw3+これにTypeで定義した型を入れようとするとエラーがでます。
なにかやりかたが間違ってるのですか?
0947デフォルトの名無しさん
2015/06/09(火) 19:55:25.28ID:U2CZ6+4J>なにかやりかたが間違ってるのですか?
エラーメッセージもやってる事も書かないで判断できると思うのか?
まあ、ユーザー定義型はいろいろ制約があるので、出来るならクラス定義してそっち使え
0948デフォルトの名無しさん
2015/06/09(火) 19:57:54.85ID:c8o1Qw3+内容は変えてもその同じTempをCollectionに入れてたのが間違い?
0949デフォルトの名無しさん
2015/06/09(火) 19:58:24.34ID:c8o1Qw3+0950デフォルトの名無しさん
2015/06/09(火) 21:27:22.78ID:c2p5M67Aそもそもユーザー定義型はcollectionに入れられないよ
素直に配列で宣言するか、>>947の言う通りクラスを作るか
1個access作って、各項目を定義した一時テーブルにデータを入れて、クエリで集計とかしたのち、またexcelに出力とかしてるんだけどそういう人いる?
最近構造体作るの面倒になって全部こうしてるんだけど、access壊れやすいし、データ管理でなんか良い方法知ってる人いるかね
0951デフォルトの名無しさん
2015/06/09(火) 21:47:36.56ID:ZzpK0e2Q0952デフォルトの名無しさん
2015/06/09(火) 22:05:16.80ID:c2p5M67A恥を忍んで教えて欲しいんですが、SQLserverやMySQLを使うと、mdbやaccdbみたいなファイルって作れるんですか?
そっからDAOとかADOで、ExcelVBAから接続できたりするんですかね?
どうもSQLserverってデータベースサーバーのイメージがあって取っ付き難くて…
0953デフォルトの名無しさん
2015/06/10(水) 00:37:39.56ID:laRMen7XADOでExcelからMySQL接続やってるよ。SQLServer(Express)でも接続文字列さえ変えれば同じようにアクセスできるし
(勿論SQLで固有の部分は書き換えないといけないけど)
0954デフォルトの名無しさん
2015/06/10(水) 08:42:16.96ID:GViOj19C恥じる必要性は全くない。
フロントエンドは今まで通りAccessを使えば良い。データストア場所を
MySQLにすれば良い。当然、ExcelからもMySQLへ接続できる。
0955デフォルトの名無しさん
2015/06/10(水) 16:22:48.03ID:T4wZlTykhttp://peace.2ch.net/test/read.cgi/tech/1433920729/l50
0956デフォルトの名無しさん
2015/06/10(水) 16:28:32.56ID:PjJ8iHSXうむ、ご苦労。褒美に俺が今後作るコードをデバッグさせてやろう。
0957デフォルトの名無しさん
2015/06/10(水) 17:34:20.56ID:JjE8Vgthなに勝手にテンプレ変えてるんだよ?
0958デフォルトの名無しさん
2015/06/10(水) 18:14:37.24ID:v/kP17pJ次スレはこっちに立ってる
Excel VBA 質問スレ Part37 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1420841190/
0959デフォルトの名無しさん
2015/06/11(木) 13:00:37.63ID:6lcwVNckSheets("Sheet2").Range("A1:Z1000").Interior.Color = Sheets("Sheet1").Range("A1:Z1000").Interior.Color
これだと全部黒で塗りつぶされてしまうんですが、どう直せばいいんでしょうか?
0960デフォルトの名無しさん
2015/06/11(木) 13:14:09.89ID:PQqxmR5I0961デフォルトの名無しさん
2015/06/11(木) 15:12:32.90ID:iXgLxT1K0962デフォルトの名無しさん
2015/06/11(木) 18:43:31.96ID:PQqxmR5Iはい
For Each aa In Sheets("Sheet1").Range("A1:Z1000")
Sheets("Sheet2").Range(aa.Address).Interior.Color = aa.Interior.Color
Next
0963デフォルトの名無しさん
2015/06/11(木) 19:52:50.39ID:LAXjMw3Bエラーメッセージが出るんですけど出さなくする方法はありますか?
赤くしてくれればそれでいいのに消すのがすごく面倒です。
0964デフォルトの名無しさん
2015/06/11(木) 20:01:02.74ID:LAXjMw3B自分で書いてみたものの毎回書くの?って感じです。
0965デフォルトの名無しさん
2015/06/11(木) 20:04:39.76ID:sy6xTaqk0966デフォルトの名無しさん
2015/06/11(木) 20:08:08.42ID:PWtILvFt0967デフォルトの名無しさん
2015/06/11(木) 20:08:37.88ID:PQqxmR5I0968デフォルトの名無しさん
2015/06/11(木) 20:16:10.22ID:sy6xTaqk問題はエクセルの機能を使えないかという質問にシートに吐き出せという答えを返すと「シートは処理が重いから」と後出し条件出すバカが多い事だが。
0969デフォルトの名無しさん
2015/06/11(木) 20:38:35.02ID:iXgLxT1K0970デフォルトの名無しさん
2015/06/11(木) 20:49:36.20ID:LAXjMw3Bsort関数的なものを探しましたがどうやら無いようですね。
調べたところ自分でソートするか、シートに張り付けて並び替え機能使うか、という感じなんですね。
自分は結局ループ処理で数値比較しながら配列に入れ直すようにしました。
動的配列使うにも一手間かかるし配列関係は使い勝手がいまいちな印象です。
0971デフォルトの名無しさん
2015/06/11(木) 20:49:59.89ID:LAXjMw3Bありがとうございます。試してみます。
0972デフォルトの名無しさん
2015/06/11(木) 21:00:24.62ID:o6JsBkeKソート関数は一度書けばずっと使えるんだからいいじゃないか
0973デフォルトの名無しさん
2015/06/11(木) 21:22:11.78ID:6lcwVNckレスありがとうございます
ヒントどうもでした
>>962
うまく動きました
自分でも作ってみました
Dim i As Long
Dim j As Long
For i = 1 To 1000
For j = 1 To 26
If Sheets("Sheet1").Cells(i, j).Interior.ColorIndex <> xlColorIndexNone Then
Sheets("Sheet2").Cells(i, j).Interior.Color = Sheets("Sheet1").Cells(i, j).Interior.Color
End If
Next j
Next i
End Sub
0974デフォルトの名無しさん
2015/06/11(木) 21:54:55.11ID:1wrXKn1uだって配列はただの配列ですからね。
あなたが思っているものは、コレクションやテーブルですね。
0975デフォルトの名無しさん
2015/06/11(木) 22:00:31.80ID:MEVqNqhjGeneric とか使えないから配列要素の型が変わったら書き直さないとダメだし、比較関数も指定できないから逆順にするだけでも手を入れないといけないよね
C#A が欲しいわ
0976デフォルトの名無しさん
2015/06/11(木) 22:10:09.15ID:MYWYh3I3.NET FrameworkのArrayListを使ったら
http://officetanaka.net/excel/vba/tips/tips98.htm
0977デフォルトの名無しさん
2015/06/11(木) 22:14:27.86ID:o6JsBkeKGenericもtemplateもないのはその通りだけど、ひとつのソート関数で複数の型の配列をまかなえるよね。
0978デフォルトの名無しさん
2015/06/11(木) 22:46:06.86ID:nXSQMIaUまかなえるかも知れないけど、型が担保されないのがね。
ちょっと前にVB6で同じようなことで悩んでたけど、
Recordsetがどうやら自分で項目やレコードを作ることが出来て、Sortすることが出来るらしい。
.NetのDataTableとは少し使い勝手が違うとは言え、Sortすると言う観点から見れば
大体同じことが出来るんじゃなかろうか。
と言うことで現在調査中。LinqのようにクラスのプロパティでSortしたりは出来ないけど、
使えるようならそこそこ使う機会が有りそうな気がする。
0979デフォルトの名無しさん
2015/06/11(木) 22:57:30.41ID:MEVqNqhjどうやってやるの?
0980デフォルトの名無しさん
2015/06/11(木) 23:00:48.04ID:o6JsBkeKえ?
だって < 演算子はIntegerでもDoubleでもStringでも共通に使えるでしょ?
ソートのアルゴリズムを型ごとに分けて書く必要はないはずだが。
0981デフォルトの名無しさん
2015/06/11(木) 23:02:50.52ID:o6JsBkeK「配列要素の型が違う」っていうのは Integer() か Variant() で違うって意味だよね?
0982デフォルトの名無しさん
2015/06/11(木) 23:25:48.60ID:MEVqNqhj引数の型名どうする気だよ w
0983デフォルトの名無しさん
2015/06/11(木) 23:29:34.63ID:o6JsBkeKByRef x As Variant
に決まってるじゃないか。
0984デフォルトの名無しさん
2015/06/11(木) 23:56:56.31ID:iXgLxT1K0985デフォルトの名無しさん
2015/06/12(金) 00:06:26.62ID:25M6JlyC汎用性というか可搬性に欠ける。
0986デフォルトの名無しさん
2015/06/12(金) 00:18:27.87ID:V1caHJYS0987デフォルトの名無しさん
2015/06/12(金) 00:34:00.59ID:8AB+bqYO0988デフォルトの名無しさん
2015/06/12(金) 00:59:07.91ID:25M6JlyCだけどORDER BY ASCとDESCしかないんじゃ不便でしょう。
これの問題4とかを解きたい。
http://www.softantenna.com/wp/software/5-programming-problems/
0989デフォルトの名無しさん
2015/06/12(金) 01:16:51.15ID:DzGJHX8Dえ?そんな作業を手でやってるの?っていう人が多い。
颯爽とマクロなりスクリプトをつくってどやる。
するとどうでしょう、余計なことしやがって的な反応が。
彼らは仕事を失うこと、今までのやり方を否定されたことに怒りを覚えるのでしょう。
そんな経験ある人いる?
0990デフォルトの名無しさん
2015/06/12(金) 01:39:44.83ID:8AB+bqYOソート関係ないじゃん。
0991デフォルトの名無しさん
2015/06/12(金) 01:41:47.74ID:8AB+bqYO0992デフォルトの名無しさん
2015/06/12(金) 01:42:53.89ID:8AB+bqYOあなたにそんなことは求めていない。
0993デフォルトの名無しさん
2015/06/12(金) 01:56:23.67ID:XHErEd8vあるある、あるよ。
0994デフォルトの名無しさん
2015/06/12(金) 02:00:05.67ID:XHErEd8v神ツールは自分だけか特に仲のいい同僚だけにシェアすることにした。
それをされたら「アホと思われてたんだ」とプライドを傷つけることになると学んだから。
0995デフォルトの名無しさん
2015/06/12(金) 02:27:55.98ID:8AB+bqYO0996デフォルトの名無しさん
2015/06/12(金) 03:52:32.03ID:8q2nRNuu0997デフォルトの名無しさん
2015/06/12(金) 03:53:05.71ID:V1caHJYS後ろゼロ埋めして長さ揃えてソートして、その順に元の文字連結する
0998デフォルトの名無しさん
2015/06/12(金) 05:23:45.81ID:L5AJPpJ80999デフォルトの名無しさん
2015/06/12(金) 05:43:15.76ID:9iuD3EDL俺のマクロで仕事のなくなった一人がクビになったわ
めっちゃ後味悪い
1000デフォルトの名無しさん
2015/06/12(金) 07:04:04.68ID:25M6JlyC解き方はいろいろあるだろうけど、このページにあるような方法をとりたい。
https://blog.svpino.com/2015/05/08/solution-to-problem-4
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。