Excel VBA 質問スレ Part40 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2016/02/19(金) 02:49:44.77ID:BQQ9mWtn___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人・作成依頼が嫌な人は別スレ建ててください。
※前スレ
Excel VBA 質問スレ Part39 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1448624205/
0002デフォルトの名無しさん
2016/02/19(金) 08:12:54.49ID:997QLUzgですが
入力データを配列化して
出力する場合
出力内容も配列化するのは良いのですが
出力データが入力データの行数分あり、列は10列有ります
その場合配列は
ReDim Preserve 出力(1 to 10, 1 to 出力行数)
とループさせるため
行と列が逆になります
また出力シートは結合&結合と殆ど結合部が多いためこの場合の処理はどのようにすればよいですか?
0003デフォルトの名無しさん
2016/02/19(金) 11:37:02.06ID:PjfL255H入力データの行数が事前にわからないからReDim Preserveしてるってこと?
0004デフォルトの名無しさん
2016/02/19(金) 12:07:05.82ID:LsoB0P/CSleep1
って見るけどこれはなにをやってるの?
さっぱりわからん。
0005デフォルトの名無しさん
2016/02/19(金) 12:07:42.20ID:LsoB0P/C0006デフォルトの名無しさん
2016/02/19(金) 12:18:36.06ID:PjfL255H大昔は意味あったのかね。
0007デフォルトの名無しさん
2016/02/19(金) 12:31:56.79ID:rTtJyJ/Qそう
大して変わらないのなら
入力データだけ配列化する
その入力データは3帳票でしようするので
0008デフォルトの名無しさん
2016/02/19(金) 12:56:08.06ID:PjfL255H入力データを配列化するときに行数がわかるけど、出力配列をそのあと作ることが出来ない理由がわからんね。
0009デフォルトの名無しさん
2016/02/19(金) 13:51:05.47ID:rTtJyJ/Q出力配列作るのはいいんですがredimでやると
行と列を逆に作らなければならないのでどうすればよいですか?
またセルの結合するのですがその場合配列の数値とセルの位置があわなくなるのですがどうすればよいですか?
0010デフォルトの名無しさん
2016/02/19(金) 14:16:17.01ID:4CNSbXWlセルの結合については前スレで誰かも言ってたけど、
テンプレートは結合無しで作っておいて、
データ書き込んだ後で結合させれば良いんじゃないの?
もしもテンプレートの時点で結合させてないとダメなんだったら、
2度手間だけど書き込む前に結合を解除して、
書いた後で再結合とかだよね
配列のredimの方は transpose 相当の処理を
自前で組むとかじゃないかな
0011デフォルトの名無しさん
2016/02/19(金) 14:27:51.00ID:4CNSbXWlそもそもの前提として、出力データの行数が入力データの行数に等しいなら
配列の宣言の時点で行列入れ替える必要無いよね。
>>3,>>8なんかもそういう意味で聞いてるんだと思うよ
0012デフォルトの名無しさん
2016/02/19(金) 14:30:11.76ID:PjfL255H行と列を逆にって何のこと?出力行数が事前にわかるならPreserveせず
ReDim 出力(1 to 出力行数, 1 To 10) でいいわけだし。
0013デフォルトの名無しさん
2016/02/19(金) 14:30:39.84ID:PjfL255H0014デフォルトの名無しさん
2016/02/19(金) 14:49:53.56ID:HB2JSIqa出力はコレクションにしたら楽よ
0015デフォルトの名無しさん
2016/02/19(金) 15:10:42.30ID:rTtJyJ/Qなるほど転記後
結合ループします
>>14
コレクションの方法がよくわからないのです
0016デフォルトの名無しさん
2016/02/19(金) 18:02:20.38ID:Kt6O98enCells(1, 1).Clear
これ実行するとセルの表示形式が時刻になることって回避出来ませんか?
0017デフォルトの名無しさん
2016/02/19(金) 18:19:11.21ID:VU2H97TiClearContents
0018デフォルトの名無しさん
2016/02/19(金) 19:11:41.44ID:Kt6O98enclearcontentsだとセル塗りつぶしをクリア出来ない・・・っていうのは我が儘ですかね
0019デフォルトの名無しさん
2016/02/19(金) 19:31:21.17ID:rTtJyJ/QClearFormats使えば?
0020デフォルトの名無しさん
2016/02/19(金) 20:21:24.02ID:Kt6O98enclearformatsで表示形式が「数値」だったものが「時刻」になります
Excel2013
0021人間のくず
2016/02/19(金) 21:55:02.80ID:Y71x48u90022デフォルトの名無しさん
2016/02/19(金) 21:58:38.90ID:Y71x48u90023デフォルトの名無しさん
2016/02/19(金) 22:09:36.87ID:ey834T6r別スレへ誘導します。
スレ立てるまでもない質問はここで 142匹目 [無断転載禁止]・2ch.net
http://peace.2ch.net/test/read.cgi/tech/1454219795/
0024デフォルトの名無しさん
2016/02/19(金) 23:18:21.06ID:3+R+uPn1出力データは最大300行×6列で3帳票(それぞれ別々)
あるのでこの場合18個のCollectionを作らなければならないのでしょうか?
又クラス化でもなんでもいいので少しでも処理が早くメモリ負担が少ない方法も教えてください
なお出力シートはA-B,C-D,E-F,G-H,I-J,K-Nでセルの結合を掛けており、それを外すことは不可能です
0025デフォルトの名無しさん
2016/02/19(金) 23:22:12.94ID:hdqL8A7v出力は配列にしても行と列を逆に作らなくて済むことは分かったんだよね?
配列の方がワークシートに貼り付けるとき楽だけど、コレクションにするの?
0026デフォルトの名無しさん
2016/02/19(金) 23:37:12.23ID:3+R+uPn1途中で挿入しなきゃいけない場所があるのでメモリ負荷がかかるのでコレクションのほうがいいかなって思いました
ただPCがi5のメモリ2GB環境のとこなのが心配
今の処理でさえ画面が真っ白で応答なしになるし(裏で処理はうまいこと動いて出力はできている)
0027デフォルトの名無しさん
2016/02/19(金) 23:45:00.29ID:0dFLUPZi0028デフォルトの名無しさん
2016/02/20(土) 03:21:31.51ID:Nzf7yXNI18個のColllection?
それは素晴らしい考え方だ!
でも他にもColllectionに配列や
クラスのインスタンスを入れておく方法もあるよ。
後、メモリやスピード最重視するなら、配列をままペタッとやるならともかく途中色々やるなら
そもそも配列やCollectionを介在させないで大元から直接Cellに設定させて行く方が早いんじゃないの?
それが出来るならの話だけど。
0029デフォルトの名無しさん
2016/02/20(土) 05:53:48.90ID:G849YxInこれホント?
少なくともうちの2007では標準に戻るんだが
>>26
画面が反応しなくなるのはメモリ量と関係ないぞ
使用するメモリをけちりたいならシート(セル)を直接操作した方がいい
配列はセルに何度もアクセスするなら速くできる可能性があるってだけ
スピードとメモリ消費量は大概の場合はトレードオフ
0030デフォルトの名無しさん
2016/02/20(土) 07:25:25.69ID:14d1o+GNクラスインスタンスと配列も調べてみますが
途中挿入考えると配列じゃ内ほうが良さそうですね。
>>29
画面が反応しなくなる原因て何かありますか?
0031デフォルトの名無しさん
2016/02/20(土) 09:53:55.57ID:JAd6JhiG0032デフォルトの名無しさん
2016/02/20(土) 10:41:02.60ID:jIhi6tPTReDim Preserveのことなら結局サイズが確定してないってことだし、条件があやふやだ。
0033デフォルトの名無しさん
2016/02/20(土) 11:38:28.22ID:8LlrSvQqメモリ負荷が〜〜っていうけど仕様的にそのサイズが作れないならパソコンを変えるべき
初心者は無駄に複雑なシステム作らずに決め打ちで出来る領域まで下ろしてくる方がいい
0034デフォルトの名無しさん
2016/02/20(土) 11:53:42.06ID:14d1o+GN出力行数は最大であり
可変なんです
>>33
パソコン買えるのは無理ですな
0035デフォルトの名無しさん
2016/02/20(土) 12:06:02.17ID:JAd6JhiG可変と言ってもだいたい2通り想像できる。
アウトプットを作ってるループに入る前には行数が決まるパターンと
ループの中でも行数が増やさなきゃならなくなるパターン。
後者ならたしかに厄介な点があるかもしれないけど、そういうこと?
0036デフォルトの名無しさん
2016/02/20(土) 12:06:41.56ID:JAd6JhiG〇行数を増やさなきゃならなくなる
0037デフォルトの名無しさん
2016/02/20(土) 12:16:00.31ID:14d1o+GNループ中に行数が決まる
例えば前列が全く同じものだったらカウントするてきな感じですね
0038デフォルトの名無しさん
2016/02/20(土) 13:19:17.09ID:2UhdvvRYどっちにしろ最大サイズが分ってるならその大きさで宣言しとけば良いだけじゃん
Redim Preserve がどうしても必要になるのはあとからサイズを大きくするときだけで
小さくなる分にはそんなの必要ないんだから(でかいまま使えば小さくする必要そのものが無いって意味で)
メモリの無駄とかなんとかはよほどでかい配列でなけりゃ関係ないよ
0039デフォルトの名無しさん
2016/02/20(土) 15:34:53.79ID:jtnfjqEhなんつーか、現代の言語からすると、随分と古臭いというか融通の聞かない
設計だな。VBAって
0040デフォルトの名無しさん
2016/02/20(土) 15:45:53.25ID:jIhi6tPTいや、再拡張しながらのpush backとか標準で用意されてないだけで自分で作ればいいのさ。
実行時効率の面では一緒だし。
0041デフォルトの名無しさん
2016/02/20(土) 16:26:53.86ID:jtnfjqEh自分で用意する時点で論外だよ。こんなもの。
他の高級言語じゃこんな馬鹿な仕様にしてないの。
0042デフォルトの名無しさん
2016/02/20(土) 17:04:46.81ID:jIhi6tPTそれだとVBAが高級言語の位置付けになっちゃうよ。
弄りがいはあるからそういうもんだと思えばよい。
0043デフォルトの名無しさん
2016/02/20(土) 17:21:21.30ID:7beZ5cKX0044デフォルトの名無しさん
2016/02/20(土) 17:41:10.96ID:2UhdvvRYワークシートには挿入も削除もソートもスカラー倍も
およそ配列に求めうる全ての操作が可能なんだから
考えようによっちゃExcelVBAほど強力な配列演算を持った言語は他にないんじゃないの?
0045デフォルトの名無しさん
2016/02/20(土) 17:51:51.44ID:jtnfjqEhカラム数の拡大ならともかく、レコード数の拡大に於いては、行列逆転
しなきゃいけない なんて段階で論外ですよwww
>>43
アホは議論に参加しなくていい。
0046デフォルトの名無しさん
2016/02/20(土) 18:05:57.37ID:jIhi6tPT2次元のどっち方向にも拡大可能な言語ってあるの?
多次元は扱いにくいから1次元で扱う方がいいね。
0047デフォルトの名無しさん
2016/02/20(土) 18:33:39.71ID:cxrwBSdkバカ発見
0048デフォルトの名無しさん
2016/02/20(土) 19:07:20.71ID:7FJRvlZ/JavaScript
そもそも拡大なんて概念はない。そんな事やってるのVBAくらいなもんだ。今どき
の言語だと。
0049デフォルトの名無しさん
2016/02/20(土) 19:27:23.61ID:7beZ5cKXジグ配列の拡大でいいならVBAでも出来るよ
というか純粋に疑問なんだけど「言語が何々をやってる」っていう表現は具体的には何を指すんだ?
いちいち処理について書かずとも勝手に言語側で処理してくれる事が先進的であるという主張だと考えていいのか?
0050デフォルトの名無しさん
2016/02/20(土) 19:27:27.65ID:jIhi6tPT今ちょっとぐぐったけど、JavaScriptはVBAのような2次元配列じゃなさそうだ。
0051デフォルトの名無しさん
2016/02/20(土) 19:51:02.61ID:jIhi6tPTもっと大きい空の配列に移しかえるのとどっちが速いかな?
検証してみよう。
0052デフォルトの名無しさん
2016/02/20(土) 20:08:40.53ID:jIhi6tPT単純な配列の場合はReDim Preserveの方が圧倒的に速いから、結局こっぢな。
0053デフォルトの名無しさん
2016/02/20(土) 20:36:59.46ID:7FJRvlZ/早いかどうかなんて基準で語ってませんが?
結論だのなんだの言ってる所悪いけれど。
で、カラム側拡張できても、行拡張できない上に、行列逆転しろなんて馬鹿な
アドバイスしてる人たくさんいる件どうすんの?ww
0054デフォルトの名無しさん
2016/02/20(土) 20:51:58.44ID:7beZ5cKXどうするもこうするも、言語的な制約だから行列を逆転して拡張すればいいし
C言語処理系の様な動作が欲しいならCollectionを入れ子にすればいいだけ
0055デフォルトの名無しさん
2016/02/20(土) 21:01:02.25ID:JAd6JhiG君は>>49-50を読んでないのか?
1次元で表現する方が便利だし、その場合は拡張もできるんだよ。
0056デフォルトの名無しさん
2016/02/20(土) 21:02:42.98ID:JAd6JhiG「カラム側拡張できても、行拡張できない」
と言ってる時点で2次元配列を想定しているようだけど、他言語でも2次元配列の拡張はやってないんでしょ?
0057デフォルトの名無しさん
2016/02/20(土) 21:27:27.97ID:7FJRvlZ/俺はその話はしていないからなぁww
VBAの配列がクソだって話読んでないのか?ww
>>56
他言語に拡張するなんて概念はそもそもないですよ。だから扱いが楽。
そういう話ですよ。
>>54
だからそれがクソだって逝ってんじゃんww
それをアホがやたらとVBAの配列を崇め奉ってるから弄ってるんだよ。
0058デフォルトの名無しさん
2016/02/20(土) 21:31:34.06ID:njY71FFO0059デフォルトの名無しさん
2016/02/20(土) 21:34:37.22ID:7beZ5cKX君、理解していないようだから言っておくけどJavaScriptではVBAで宣言してる多次元配列は作れないからね?
そしてJavaScriptで宣言される様な多次元配列なら、JavaScriptと同じような処理をVBAでも出来るからね?
ところで拡張するって概念がないっていうのはどういう事? 概念はあるけど命令がないっていうなら分かるんだけど
0060デフォルトの名無しさん
2016/02/20(土) 21:42:25.33ID:jIhi6tPT0061デフォルトの名無しさん
2016/02/20(土) 21:46:31.57ID:JAd6JhiG本質的に違うものなんだよ。
で、VBAの多次元配列は後者のもの。
0062デフォルトの名無しさん
2016/02/20(土) 21:47:36.02ID:JAd6JhiG0063デフォルトの名無しさん
2016/02/21(日) 21:44:03.35ID:glOWtbGl0064デフォルトの名無しさん
2016/02/21(日) 22:13:51.75ID:R+dk8jt0配列の第一要素を列に、第二要素を行に見立てて最初から入れておけばいいんじゃない?
>>63
どうするも何も、セルが書き変わったイベント拾って◯が四つ並んでたら◎に書き換えてあげればいいんじゃないかな
0065デフォルトの名無しさん
2016/02/21(日) 23:24:58.41ID:R+dk8jt0まー、そう言うなよ。
Excelの数式が入ったセルなんてリアクティブプログラミングのそれじゃないか。
ある意味関数型言語より進んでるぞ。
もっともUI上にあるものだから単体テストが楽になるとは思えないがなw
0066デフォルトの名無しさん
2016/02/22(月) 12:23:41.54ID:GAqrdc9hなんか、簡単な手段ないかねぇ
すっと入れられて、さっと参照できるメモリ上のDBみたいな。
メモリ上でデータの塊を作ってそれを、一気にDBへ書込。書込はこの1回
だけにしたい。
もちろんこのメモリ上のデータはプロセスの過程で、編集されたりする。
0067デフォルトの名無しさん
2016/02/22(月) 13:08:20.35ID:HAKcPUNY0068デフォルトの名無しさん
2016/02/22(月) 13:15:48.77ID:pPmukUVo全然詳しくないんだけどVBAで使えるLINQライブラリってないんだっけ?
0069デフォルトの名無しさん
2016/02/22(月) 16:15:29.44ID:GAqrdc9hhttp://days-of-programming.blogspot.jp/2014/10/linq-to-excel.html
こんなのがあるようなんだけれど、なんかな・・・・・
よりいっそうわけわからなくして、難しいものにしてる感じ。
0070デフォルトの名無しさん
2016/02/22(月) 18:31:03.46ID:DIbFNfwoワークシートで何の不満が?
0071デフォルトの名無しさん
2016/02/22(月) 19:52:41.01ID:UPXYf+sKそもそも「メモリ上のDB」ってなんだ。DBってデータベースの略じゃないのか?
ExcelVBAでもADODBやDAOなんかのデータベースオブジェクト掴んだり、
Collection型とDictionary型で擬似的なデータベース作ったり、
いくらでも簡単な方法はあると思うんだが何が難しいんだろ。やっぱりDBって何か別の単語か?
0072デフォルトの名無しさん
2016/02/22(月) 20:00:09.59ID:pPmukUVo0073デフォルトの名無しさん
2016/02/22(月) 21:14:00.69ID:8oQULV7t>オンメモリ
いいなぁーこの響き
0074デフォルトの名無しさん
2016/02/22(月) 21:22:02.49ID:rno/ilKi0075デフォルトの名無しさん
2016/02/22(月) 21:46:54.16ID:E02j23W3そもそも、そこまでやるなら既にExcel側からVBAでちょこっとやると言う範囲を超えてるんじゃないかな。
,NetでDataTable使って一挙にDBのテーブルに反映させる方法があるからそっちを使えばいいよ。
もっとも、テーブルにはキーになる項目がないと使えないようだけど、
最初の設計段階でその辺気を付けて作っておけば問題ない。
どちらにしてもVBA上では無いものねだりでスレ違いになるので、
興味があればVB.NetかC#のスレを覗いてみればいいよ。
0076デフォルトの名無しさん
2016/02/22(月) 22:10:55.56ID:Ns1zpvOT単体テストとか贅沢言わんから、ブレークポイントとかトレース機能がほしい ⇒ ワークシート関数
0077デフォルトの名無しさん
2016/02/22(月) 23:11:46.95ID:m/JWK4nbexpr$ = "string"
expr = Empty
たまたまだろうか?
0078デフォルトの名無しさん
2016/02/22(月) 23:12:52.38ID:m/JWK4nb0079デフォルトの名無しさん
2016/02/22(月) 23:23:51.52ID:xKv3RFISまた配列の要素を検索する方法ってありますか?
0080デフォルトの名無しさん
2016/02/22(月) 23:55:39.80ID:m/JWK4nbたとえばだが、
csvファイルを読んで1行ずつ配列にSplitし、ひとつひとつの行をカンマ等で複数の要素に分ける、
というのを実装せざるを得ない。
検索については、ソートされていなければ逐次検索するほかない。
0081デフォルトの名無しさん
2016/02/23(火) 00:18:44.04ID:tgtxIEFpワークシート上にCSVファイルを展開してそれを配列に取り込むのを「一気に」と表現していいなら。
でも違うな。
0082デフォルトの名無しさん
2016/02/23(火) 03:50:10.17ID:Fn93HfAcソートされてても、「検索」は自分でやらないとダメだけどな
検索のアルゴリズムの問題じゃなくて、検索するメソッドなりが用意されてるかどうかの話だろ
VBAの配列に要素を検索する機能はない
0083デフォルトの名無しさん
2016/02/23(火) 06:08:52.47ID:lspxNReJ自分でアルゴリズムが作れないならとにかくシートに貼り付けるところから考えればいい。
0084デフォルトの名無しさん
2016/02/23(火) 07:11:53.03ID:tgtxIEFp「逐次」
0085デフォルトの名無しさん
2016/02/23(火) 07:53:21.43ID:x6PbDvqzcsv取り込みがいささか面倒ですね
Excelでcsv開いても無理ですよね?
0086デフォルトの名無しさん
2016/02/23(火) 08:05:21.80ID:lTXJyxC1ExcelシートにCSVを展開してからだったら楽だよ。
0087デフォルトの名無しさん
2016/02/23(火) 08:33:55.17ID:dOD1hw4aいつも通りの取り込みでよいのですか?
0088デフォルトの名無しさん
2016/02/23(火) 09:43:37.39ID:lTXJyxC1ええ、いつも通りです。
0089デフォルトの名無しさん
2016/02/23(火) 20:15:06.28ID:BnRj76xX配列を全て検索してデータを探すのはどちらが早いですか?
又配列に重複がないか調べる方法ってありませんか?
0090デフォルトの名無しさん
2016/02/23(火) 20:30:17.62ID:lspxNReJ検索のみで言えば、全検索で一つの値を探すならFindの方が早い。
列や行が決まっているなら配列にした方がいい。FindもMatchも遅い。
重複は条件にもよるけど基本的には総当たりしかない。こちらは配列にした方がいい。
0091デフォルトの名無しさん
2016/02/23(火) 21:43:21.45ID:BnRj76xXループでかなり時間はかかりませんか?
0092デフォルトの名無しさん
2016/02/23(火) 21:57:12.88ID:tgtxIEFp0093デフォルトの名無しさん
2016/02/23(火) 22:01:35.23ID:tgtxIEFpまたは配列をソートしておくか。
どちらも条件によっては悪手になりうる。
0094デフォルトの名無しさん
2016/02/23(火) 22:04:04.73ID:BnRj76xX500件と固定してある場合なら楽ですか?
0095デフォルトの名無しさん
2016/02/23(火) 22:08:03.06ID:tgtxIEFpn × n とは比べものにならないでしょ。
0096デフォルトの名無しさん
2016/02/23(火) 22:10:32.56ID:Fn93HfAc0097デフォルトの名無しさん
2016/02/23(火) 22:14:54.95ID:tgtxIEFp言っとくけど、長さ1000の配列で重複の個数を数える(つまり途中でやめない)という条件で、
なおかつ余計なオーバーヘッドのあるプログラムを使って約600msだぞ。(Core i5)
考えすぎても無駄じゃね?
0098デフォルトの名無しさん
2016/02/23(火) 22:27:42.52ID:BnRj76xXありがとうございます
まあソート後に配列内の数値を計算する程度ですね
配列でApplication.WorksheetFunction.RoundDownは使用できましたよね?
0099デフォルトの名無しさん
2016/02/23(火) 22:35:08.14ID:tgtxIEFp0100デフォルトの名無しさん
2016/02/23(火) 23:19:55.40ID:KN7Xij53ディクショナリーを使うと良いよー
0101デフォルトの名無しさん
2016/02/24(水) 09:14:07.67ID:y1msax47イマイチよくわからない
どっちも似たような事出来るよね
0102デフォルトの名無しさん
2016/02/24(水) 09:38:25.57ID:tgj274Poでもワークシートから大量に取り込むのに向いてるかどうかは知らない。
また、重複のないデータのセットを構築するという目的を達成した後、何かしら処理をするんだろうが、
汎用性としてどうなのかも知らん。
まあ使ってみて判断しよ。
0103デフォルトの名無しさん
2016/02/24(水) 19:47:18.17ID:ZfArvAzSすいません、オートシェイプを操作するマクロを作りたいのですが
このようなパターンのとき、
画像のD,Eを逆の位置にマクロで動かすことは可能でしょうか?
コネクタは繋がっている前提です。
0104デフォルトの名無しさん
2016/02/24(水) 20:32:17.95ID:/kngbYQwコネクタが オートシェイプに接続されてる状態なら そのシェイプを移動するだけでいい
たとえばこんな感じ(D と E の位置が逆になる)
Set D = ActiveSheet.Shapes("Rectangle D")
Set E = ActiveSheet.Shapes("Rectangle E")
'Dの位置保存
Save_LEFT = D.Left
Save_TOP = D.Top
'Dの位置を変更
D.Left = E.Left
D.Top = E.Top
'Eの位置を変更
E.Left = Save_LEFT
E.Top = Save_TOP
0105デフォルトの名無しさん
2016/02/24(水) 23:53:18.08ID:qODGIMFEどっちの方が実装楽ですか?
0106デフォルトの名無しさん
2016/02/25(木) 00:55:43.58ID:hzvqnnNR確かDictionaryは参照設定しないと使えないけど値の書き換えが出来て、
Collectionはそのまま使えるけど値を変えるときは一度Removeしてからもう一度追加しなければいけないとか
そんなのがあったような
0107デフォルトの名無しさん
2016/02/25(木) 05:54:34.79ID:BSgblPDpへー、ちょっと違うところもあるんだね
勉強になった、ありがとう
でもディクショナリーはファイルシステムオブジェクトと同じで
Microsoft Scripting Runtime (scrrun.dll)を参照設定すると便利になるけど
参照設定しなくてもCreateObjectすれば使えるよ
0108デフォルトの名無しさん
2016/02/25(木) 06:29:43.10ID:s0Et/ttK順序が必要なものはCollection型で、重複しない事が重要なものはDictionary型にするといいのかも。
ところでKeyとItemが相互に検索可能な型ってないかな。
DictionaryでもItemからKeyを割り出すには総当たりする必要があるんだよね。
だから相互に検索したい場合は必ずKey,ItemとItem,Keyの二種類作らないといけないのが難点。
0109デフォルトの名無しさん
2016/02/25(木) 07:02:34.77ID:mCYGSnMqクラスモジュールで自分好みなの作ったほうがよくないか?
0110デフォルトの名無しさん
2016/02/25(木) 07:49:00.88ID:L7nuKMZK0111103
2016/02/25(木) 10:28:36.61ID:GyIo03vyこらタコ。
そのまんまじゃないか。
そうじゃなく、
シェイプがたくさんあり、それらがコネクタでつながっていたとき、
すべてのコネクタが交差しないように自動配置したいとき
それはどういうコードを書けばいいのかな、と考えているのですが。
0112デフォルトの名無しさん
2016/02/25(木) 10:38:33.06ID:zmh5F+ll0113103
2016/02/25(木) 11:04:27.27ID:GyIo03vyそれだと
1つのシェイプから2つのコネクタが分岐するように下につながっている場合に
2つのシェイプが重なってししまわないですか?
シートに存在するすべてのコネクタでそれが分岐してるものかどうか判定する方法があればいいのですが。
シェイプやコネクタに便利なプロパティとかないですか?
0114デフォルトの名無しさん
2016/02/25(木) 11:15:21.22ID:L7nuKMZK分岐してる場合のずらしかたをまず定義しろ。
下方向や横方向のスペースの有無にもよるのか?
0115デフォルトの名無しさん
2016/02/25(木) 11:32:52.44ID:mCYGSnMq座標がわかるんだから
交差してるか計算すればいいじゃん
中学生レベルの数学
0116デフォルトの名無しさん
2016/02/25(木) 12:47:36.07ID:6DvGm9a+そもそも>>103の時点できちんと要件を提示していなかった癖に、回答者に対して悪態をつくとか
君の親御さんはマトモな躾も出来なかったのか?
要するにシェイプの移動ではなくコネクタを交差させないシェイプの配置を考える問題なら、まずは一つのシェイプは最大でいくつのコネクタに繋がってるのかとか、それがループする事は有り得るのかとか、そういう基礎的な条件提示がなけりゃだれにも回答できねーよ
(例えばループの中と外にあるシェイプ同士を何処とも交差せずに繋ぐのは不可能だしね)
そこまでややこしくない単純な樹形図みたいなやつなら
上流から順に見ていって縦横際限なく使えば良いだけじゃん
0117デフォルトの名無しさん
2016/02/25(木) 12:54:41.32ID:5AA/JocP0118デフォルトの名無しさん
2016/02/25(木) 12:59:54.85ID:YW3/y7UA0119デフォルトの名無しさん
2016/02/25(木) 13:53:09.83ID:UlMFP09hCollectionも順番が保証されなかった気がする。
0120デフォルトの名無しさん
2016/02/25(木) 20:29:01.53ID:2hov+RINもう15年以上 VBA 使ってたけど Collection でキーが指定出来るのを今知ったわ OTZ…
でもキーが存在するかを確認するすべがない(全て検索するかエラートラップで判定するしかない)
なんかこう言う大事なところが抜けてるんだよな、MSって
>>119
追加するときにシートの追加と同じように追加する場所も指定できるみたいだから、順序は保持されるっぽい
http://vbafrs.com/common/doc/main.php?contentsno=201003
0121デフォルトの名無しさん
2016/02/25(木) 20:56:13.16ID:s0Et/ttKむしろエラーで返すからキャッチすりゃいいだろ的な思想の様な気がする。
他のエラーが入り込まない単位に関数化してエラーで返す方が処理速い事もあるし(シートの指定とか)、
そうでないと調べられないものもある。(配列の次元数カウントとか)
0122デフォルトの名無しさん
2016/02/25(木) 20:59:59.00ID:EtQljN7P0123デフォルトの名無しさん
2016/02/25(木) 21:13:17.22ID:2hov+RIN> むしろエラーで返すからキャッチすりゃいいだろ的な思想の様な気がする。
それが気にくわないって話
ファイルオープンみたいにどうしようもないケースならわかるが、ExistKey( ) みたいなのをつけるだけでいいのに
てか、キーでアクセスできる仕様にしたら普通そういう手段用意しないか?
0124デフォルトの名無しさん
2016/02/25(木) 21:27:38.70ID:EtQljN7PCount( ) でいいんじゃない?
0125デフォルトの名無しさん
2016/02/25(木) 21:28:26.65ID:EtQljN7P0126デフォルトの名無しさん
2016/02/25(木) 21:53:09.39ID:s0Et/ttKCollection型は列挙が目的であって、Mapする事が目的のDictionary型とは違うだろうし。
0127デフォルトの名無しさん
2016/02/25(木) 23:29:01.95ID:ZlQNTHYh> Collection型は列挙が目的
なら Key なんて要らんだろ
やってることがちぐはぐなんよ
0128デフォルトの名無しさん
2016/02/25(木) 23:43:14.65ID:EtQljN7P0129デフォルトの名無しさん
2016/02/26(金) 05:08:03.17ID:ep0rFBnFWorkbooksやWorksheetsを人間の管理単位(=Key)で指定できたら便利だけど、
それが何番目であるかと常に結びつける必要性は薄いだろ。
あくまで人間の管理単位だから重複さえしなければマシン側は混乱しないし。
0130デフォルトの名無しさん
2016/02/26(金) 07:19:07.84ID:RsrUGJ3O>WorkbooksやWorksheetsを人間の管理単位(=Key)で指定できたら便利だけど、
>それが何番目であるかと常に結びつける必要性は薄いだろ。
WorkbooksやWorksheetsを扱うのにKeyを指定するのは
それが何番目であるかにKeyを使うのと同じくらい必要性が薄いかな。
普通そのWorkbookやWorksheets固有の処理を行うときは多態性で始末するから。
0131デフォルトの名無しさん
2016/02/26(金) 07:53:52.54ID:SzRtePL20132デフォルトの名無しさん
2016/02/26(金) 08:20:16.24ID:RsrUGJ3Oどう言う意味で?
WorkbookやWorksheetで個別の処理を行うのに多態性を使うと言ったら
そのWorkbookやWorksheetの役割に合わせて振る舞いを変えるように
コンポジションやデリゲーションを使って組むようなことをこちらは想定してるけど。
他に何か捉えようがあるということ?
0133デフォルトの名無しさん
2016/02/26(金) 08:28:40.81ID:SzRtePL20134デフォルトの名無しさん
2016/02/26(金) 08:44:27.62ID:RsrUGJ3O同じ型?何を言ってるんだ?
0135デフォルトの名無しさん
2016/02/26(金) 11:14:38.11ID:J5IqE0Yl問題は大きさが大きくなったとき他のシェイプと重なることを避けたいけどその判定が困難。
なにかいい方法はありますか?
単純に大きさを変えるときに重なるかどうか調べるときに他のすべてのシェイプと
For Each tmpShape in Activesheet.Shapes
を使って1つ1つ比べるのですが
もし重なりそうなら重なられるシェイプを右下方向に移動したいのですが
その移動によってまた「連鎖的に」重なる可能性があるわけじゃないですか?
言ってる意味はわかりますかね?
0136デフォルトの名無しさん
2016/02/26(金) 11:16:23.46ID:J5IqE0Ylo その方法が困難
0137デフォルトの名無しさん
2016/02/26(金) 11:17:50.55ID:J5IqE0Yl0138デフォルトの名無しさん
2016/02/26(金) 11:47:55.97ID:SzRtePL2君は>>130で何を言ってるんだい?
WorkSheets(1)とWorkSheets(2)に異なる処理を施すときに多態性で始末するんだろう?
0139デフォルトの名無しさん
2016/02/26(金) 12:04:49.44ID:l/+aTNAI処理の最後に重なりがなくなるまでDoループすればどうかな。
0140デフォルトの名無しさん
2016/02/26(金) 12:12:44.30ID:ZKuQ06pRそうだよ。それで?続けて。
0141デフォルトの名無しさん
2016/02/26(金) 12:16:28.41ID:J5IqE0Ylアドバイスありがとうございます。
でもそれってアルゴリズム的には同じじゃないですか?
もしよろしければ具体的なコードを教えてほしいのですが。
たとえばシェイプがActivesheet.Shapes.Count個あって
大きさを変える場合は右にincX、下にincYだけ増やしたいとします。
重なるかの判定の関数は、
Function isOverlap (shp1 as Shape, shp2 as Shape) as Boolean
とでもすると
Doループの中のコードはどんな感じになりますか?
0142デフォルトの名無しさん
2016/02/26(金) 12:20:47.73ID:x5+an1W20143デフォルトの名無しさん
2016/02/26(金) 12:25:05.60ID:SzRtePL2>>131の質問に答えよ
0144デフォルトの名無しさん
2016/02/26(金) 12:27:35.29ID:ZKuQ06pRだからそうだって答えてるじゃない。
それにどんな矛盾があるのか聞いてるんだけど。
だから続けてと言っている。
0145デフォルトの名無しさん
2016/02/26(金) 12:35:08.69ID:ZKuQ06pRむしろこっちが、そっちがどう思ってるのか聞きたいわ。
同じクラスで作成したインスタンスの振る舞いの違いを「多態性」と呼ばないということは、
.NetでいうDelegate、つまりVBAでそれはないが同じ結果を求めることが出来るCall By Nameとかは
「多態性」とは呼ばないと言っているんだよね。
これは何でだ?
0146デフォルトの名無しさん
2016/02/26(金) 12:44:05.19ID:ZKuQ06pRネットで見てたらちょうどいい文言があったので、これを使わせてもらう。
「実行される処理の実体が、コールされたメッセージではなく、メッセージを受けたオブジェクトによって決定される性質」のこと。
VBAでは継承が使えないので移譲とか委託と言われている方式を使う。
それを持って多態性と呼ぶということでいいか?
0147デフォルトの名無しさん
2016/02/26(金) 12:56:50.89ID:SzRtePL2ああ、それでいいよ。悪かった。
こっちは「WorkSheetオブジェクトが属するクラスを実行時に変えて多態するほげふがな方法」の話かと期待していた。
0148デフォルトの名無しさん
2016/02/26(金) 17:17:06.66ID:m7cX7XjEworksheet_Changeじゃわかりませんよね?
0149デフォルトの名無しさん
2016/02/26(金) 19:54:13.01ID:J5IqE0YlそれをCollectionに入れるとき
各シェイプのLeftプロパティとTopプロパティをこの順でソートして並べ替えるには
いい方法はありますか?
ひょっとして全部自分でソートのコードを0から書かないといけませんか?
0150デフォルトの名無しさん
2016/02/26(金) 20:07:18.31ID:SzRtePL20151デフォルトの名無しさん
2016/02/26(金) 20:13:56.67ID:ep0rFBnF問題はその「メッセージを受けたオブジェクト」によって、
「始末する」としている>>130の主張がどういう意図なのかなんだけどな。
0152デフォルトの名無しさん
2016/02/26(金) 20:54:08.51ID:ep0rFBnFソートアルゴリズムならWorksheetに一回吐き出せば優秀なのが使える。
0153デフォルトの名無しさん
2016/02/26(金) 20:59:38.60ID:faygSoUQ良い書き方があるなら教えてほしい
0154デフォルトの名無しさん
2016/02/26(金) 21:11:11.85ID:SzRtePL2サイトは覚えてはないけど、VBAでのクイックソートのサンプルは結構上がってる。
難しさは求める汎用性の程度にもよるだろうけど。
0155デフォルトの名無しさん
2016/02/27(土) 00:59:46.12ID:RZH3xb+7これはよく読むと、一般的なSortプログラムは必要なさそうだね。
「Collectionに入れるとき」と明言しているということは、まだCollectionには何も入ってないときのスタートになるので、
最初の1回目は普通にaddして、その後はCollectionに積み立てたShapeを捜査し、Leftプロパティが
追加対象の同プロパティより大きくなった、またはLeftプロパティが同じでTopプロパティが追加対象の同プロパティより大きくなったとき、
その前に追加してやればいいんじゃないかな?
0156デフォルトの名無しさん
2016/02/27(土) 18:10:19.33ID:AaTWQGJlあらかじめセルの幅をshapeが被らないぐらい大きくしといて、
あとからセルの幅を自動で調整すれば良いだけでは?
0157デフォルトの名無しさん
2016/02/27(土) 20:28:26.50ID:IvmFPQhFWorksheets("Sheet1").Select
これを1行で記述する方法はありますか?
0158デフォルトの名無しさん
2016/02/27(土) 20:35:34.69ID:LKPjzWREWorkbooks("1.xls").Activate: Worksheets("Sheet1").Select
もし1命令でって言うんなら無理
そのブックをSelectだけ出来ればよいなら
Workbooks("1.xls").Worksheets("Sheet1").Select
で出来る
0159デフォルトの名無しさん
2016/02/27(土) 20:40:06.27ID:B9pq57vqWorkbooks("1.xls").Worksheets("Sheet1").Select
こういう事じゃ無いのか?
0160デフォルトの名無しさん
2016/02/27(土) 20:40:54.65ID:IvmFPQhFありがとうございました。すっきりしました。
0161デフォルトの名無しさん
2016/02/27(土) 20:44:40.73ID:IvmFPQhFありがとうございました。
0162デフォルトの名無しさん
2016/02/27(土) 20:45:04.02ID:GQuhwfDJ0163デフォルトの名無しさん
2016/02/27(土) 20:50:07.41ID:B9pq57vqVBAマクロのHowToサイトで「マクロの記録機能を使ってみましょう」という教え方してる限り無くならないだろうな。
既存の有名なサイトを凌駕するようなExcelVBAマクロのサイトを作る以外にない。
0164デフォルトの名無しさん
2016/02/27(土) 22:14:34.86ID:TnvXsjWdもうちょっと品ぞろえを増やしてさー、〜べからず集とかないの?
0165デフォルトの名無しさん
2016/02/27(土) 23:35:53.32ID:qno9RqRgべつにいーじゃん
それでうごくんだから
0166デフォルトの名無しさん
2016/02/27(土) 23:55:03.39ID:TnvXsjWd0167デフォルトの名無しさん
2016/02/28(日) 00:04:29.01ID:wJzAdt4L変数名は一文字にするべからずとか、
このスレでコードは書くべからずとか?
0168デフォルトの名無しさん
2016/02/28(日) 00:41:52.16ID:b7qY0//80169デフォルトの名無しさん
2016/02/28(日) 00:56:15.60ID:sl3mg8QGそれを考慮せずに推奨・非推奨の話を始めると宗派の問題もあって泥沼になる。
0170デフォルトの名無しさん
2016/02/28(日) 02:49:21.29ID:/1Tq8dlSよねさんの解説では
myStr = "ABCDEFG"
Range("B3").Value = Right(myStr, 3)
一度変数に置き換えて抽出していますがわずらわしので
A1セルなどのセルに記載された数値や文言をダイレクトに指定して
文字を抽出するにはどうすればいいのでしょうか?
0171デフォルトの名無しさん
2016/02/28(日) 02:51:41.53ID:/1Tq8dlSこれを書いて投稿したとたんに思いつきました!ww
Sub aa()
Range("B3").Value = Right(Range("a1"), 3)
End Sub
これでできるのですね。事故解決!!
0172デフォルトの名無しさん
2016/02/28(日) 02:58:01.82ID:/1Tq8dlSあと例文に考える余地が隠されていて考えないと例文が理解できないようになっていたりするので急いでいると非常にむかつきます。
複数のレベルで例文が記載されてたらもっと使う人が増えると思うが
私は極力見ないようにしています。
0173デフォルトの名無しさん
2016/02/28(日) 03:02:16.63ID:/1Tq8dlS0174デフォルトの名無しさん
2016/02/28(日) 03:09:34.52ID:sl3mg8QG・ここはお前の日記帳じゃないんだ。チラシの裏にでも書いてろ。
・そんな低レベルな事すら分かってないのに緊急でマクロ作るとか悪手過ぎるだろ。
0175デフォルトの名無しさん
2016/02/28(日) 06:44:27.28ID:3hiq91mT0176デフォルトの名無しさん
2016/02/28(日) 09:45:37.94ID:emPXsfmMぜいたく言っちゃいかんと思う。
0177デフォルトの名無しさん
2016/02/28(日) 10:46:32.90ID:5Fk6wisRどういいうことでしょう?
シェイプの話をしているのになぜセルの幅の話になるのでしょう?
0178デフォルトの名無しさん
2016/02/28(日) 11:14:42.81ID:jDjzCPWr悪いけどプログラマー向かないと思う。
0179デフォルトの名無しさん
2016/02/28(日) 11:30:36.79ID:kYd0kHZJ0180デフォルトの名無しさん
2016/02/28(日) 12:44:17.68ID:5n5R60tK誰ともわからないターゲットに向けて書くんだから。
>>178
急にどうした?話が飛躍してるぞ。
0181デフォルトの名無しさん
2016/02/28(日) 12:51:47.81ID:awPHDJ6K月末の深夜という時間を考えると
切実な思いではないかと勘ぐってしまう
0182デフォルトの名無しさん
2016/02/28(日) 12:57:49.47ID:sl3mg8QG0183デフォルトの名無しさん
2016/02/28(日) 13:30:48.59ID:5n5R60tK0184デフォルトの名無しさん
2016/02/28(日) 13:37:43.35ID://Tt5fxkこれでつまづくようでは、シート関数で頑張れとしか言いようが無い。よねさんがかわいそうW
0185デフォルトの名無しさん
2016/02/28(日) 13:39:52.10ID:k2lRb1XXMSには、アクティブシートでないと動作しない関数を無くしてほしいわ
Workbook("Book1.xls").Worksheets("sheet1")まで指定してるなら非アクティブシートでも動いていいだろ・・
0186デフォルトの名無しさん
2016/02/28(日) 13:45:02.51ID:sl3mg8QG0187デフォルトの名無しさん
2016/02/28(日) 13:57:51.09ID:knUnpIjSこれではだめですか?
Option Explicit
'重なり解除処理メイン
'すべてのシェープのサイズ変更後一度だけコールする
Sub solve_overlaps()
Dim myshapes As Collection
Set myshapes = New Collection
get_all_shape myshapes:=myshapes
While (solve_a_overlap(myshapes))
Application.ScreenUpdating = False
Application.ScreenUpdating = True
'MsgBox
0188デフォルトの名無しさん
2016/02/28(日) 14:00:51.93ID:W6vHfvKUよねさんはなぜ変換する文字を変数に定義しているのか?
無駄な作業であるしRightの使い方とも直接関係が無い。
0189デフォルトの名無しさん
2016/02/28(日) 14:04:32.93ID:knUnpIjSWend
End Sub
Sub get_all_shape(myshapes As Collection)
Dim shp As shape
For Each shp In ActiveSheet.Shapes
myshapes.Add Item:=shp
Next
End Sub
Function solve_a_overlap(myshapes As Collection) As Boolean
Dim targshape As shape, targ2shape As shape
For Each targshape In myshapes
For Each targ2shape In myshapes
If (Not (targshape Is targ2shape)) Then
'targshapeとtarg2shapeの位置比較
If (isOverlap(targshape, targ2shape)) Then
'重なり解除
move_shape targshape, targ2shape
solve_a_overlap = True
Exit Function
End If
End If
Next
Next
solve_a_overlap = False
End Function
0190デフォルトの名無しさん
2016/02/28(日) 14:05:28.07ID:knUnpIjSIf ((shp1.top + shp1.Height < shp2.top) Or (shp1.top > shp2.top + shp2.Height) _
Or (shp1.Left + shp1.Width < shp2.Left) Or (shp1.Left > shp2.Left + shp2.Width)) Then
isOverlap = False
Else
isOverlap = True
End If
End Function
Sub move_shape(shp1 As shape, shp2 As shape)
If (shp1.Left < shp2.Left) Then
shp2.Left = shp1.Left + shp1.Width + 20
shp2.Select
Else
shp1.Left = shp2.Left + shp2.Width + 20
shp1.Select
End If
End Sub
0191デフォルトの名無しさん
2016/02/28(日) 15:24:01.03ID:+tan6Mbq無駄な作業かと言われればそうかもしれないけど、
その辺は自分に合ったように代えてやればいいだけ。
別に回りくどいだのむかつくだのと、がなり立てる時間があるなら頭のいい奴ならその分作業に回すわな。
逆に変数を使わないで直接設定されてた方式が書かれていたとして、
読んだ方が複雑な加工とか手持ちに抱えていたら何で変数に入れるような初心者向けの書き方をしないんだって文句言うかも知れないしな。
こういう輩と付き合ってたらきりがないと思うぞ。
0192デフォルトの名無しさん
2016/02/28(日) 16:09:57.62ID:YwfZTd1Cそのサイト見てないけど
文字列が変わる事も考慮してあとから関数化したり
クラス化したりする事も見込んでるからじゃね
0193デフォルトの名無しさん
2016/02/28(日) 16:19:27.47ID:DLtammmL単に重なんなきゃいいだけなら
大きさ変えた時に
・その図形より右の図形全てをその分だけ右にずらす
・その図形より下の図形全てをその分だけ下にずらす
でいいだろ
ただこれだと不要な移動が発生するから、結構スカスカになるが
0194デフォルトの名無しさん
2016/02/28(日) 16:58:03.01ID:emPXsfmMあいつらは
ロバの正しい使い方も知らない
バカだ!
0195デフォルトの名無しさん
2016/02/28(日) 18:59:41.19ID://Tt5fxk書店に行って2000円ぐらい出せばVBAの入門書が買えるからまずそこからやるべきだね。つうか、シート関数も良く分からない
レベルなんじゃね?よねさんに謝れよw
0196デフォルトの名無しさん
2016/02/28(日) 19:07:55.45ID:kYd0kHZJ0197デフォルトの名無しさん
2016/02/28(日) 19:23:57.14ID:eCLIeqLo0198デフォルトの名無しさん
2016/02/28(日) 20:03:57.66ID:PslYhxFh0199デフォルトの名無しさん
2016/02/28(日) 21:30:33.33ID:emPXsfmM0200デフォルトの名無しさん
2016/02/28(日) 23:20:08.21ID:KtfSADQf田中最高
0201デフォルトの名無しさん
2016/02/29(月) 00:45:41.03ID:tABY92kx行き詰まるとオレンジのページを見ると答えが書いてある場合がある。関数ならたまによねさんを見る
0202デフォルトの名無しさん
2016/02/29(月) 00:48:50.36ID:tABY92kx本は一度も読んだことが無い。w
0203177
2016/02/29(月) 10:11:38.10ID:MR//pEg8神!
素晴らしい。ありがとうございます。
コードを解読しました。ちゃんと動きそうですね。
シェイプは100個くらいあることがあるんですが処理速度がどうなるか楽しみです。
0204デフォルトの名無しさん
2016/02/29(月) 12:05:09.77ID:MR//pEg8もしいくつかのシェイプを拡大したときに
2つじゃなくて3つ(あるいはそれ以上)のシェイプが重なることがあるんです。
図ではうまく書けないけど
[ 1 ] [ 2 ] [ 3 ]
の3つがシェイプだとしてそれぞれが3倍の大きさになれば3つは重なることがイメージできるでしょう。
そのとき>>187のコードでは各シェイプの水平レベルにおける順番は保障されるでしょうか?
つまり実行後の順番が例えば
[ 2 ] [ 3 ][ 1 ]
となってはまずいわけです。
0205デフォルトの名無しさん
2016/02/29(月) 12:08:44.55ID:MR//pEg80206デフォルトの名無しさん
2016/02/29(月) 13:00:03.70ID:/xxXVfSp(左端の位置がより右のものを移動してるので左端位置が逆転するとダメ)
上下にずれてるものがかぶる時に左右のずれが小さくなるとか
下のシェープの方が左にあることがあるとかだとぐちゃぐちゃになるので使えないと思う
0207デフォルトの名無しさん
2016/02/29(月) 20:17:38.19ID:VE+sVuWQ仕事発注サイトか何かで金出して作って貰った方がいいと思うわ。
0208デフォルトの名無しさん
2016/03/01(火) 00:37:23.14ID:zdx9sUTB0209デフォルトの名無しさん
2016/03/02(水) 12:01:33.30ID:c0Q8HsxZその中に特定のデータが入ってる要素が存在するかどうか確認するメソッドってないでよね。
だからそれを自作する場合、その作成したメソッドisExist()はどこに置けばいいですか?
継承がないからそのCollectionに入れられないし。
具体的には
Dim Col as Collection
Set Col = New Collection
(中略)
If Col.isExist(tmpObj) Then
のようにCollectionのメソッドとして使えれば便利だけど使えないじゃないですか。
0210デフォルトの名無しさん
2016/03/02(水) 12:15:23.44ID:L3RjSFzH> Collectionのメソッドとして使えれば便利だけど
便利か?
今時はフリー関数派が大勢じゃないのかな?
0211デフォルトの名無しさん
2016/03/02(水) 12:23:28.49ID:TALPhVNW0212デフォルトの名無しさん
2016/03/02(水) 12:34:24.92ID:47TZ9f/Z0213デフォルトの名無しさん
2016/03/02(水) 12:53:42.93ID:TALPhVNW0214デフォルトの名無しさん
2016/03/02(水) 14:10:10.41ID:L3RjSFzH0215デフォルトの名無しさん
2016/03/02(水) 14:21:01.91ID:NWeCetC10216デフォルトの名無しさん
2016/03/02(水) 14:54:02.93ID:afwFBq34.Net使えば?
0217デフォルトの名無しさん
2016/03/02(水) 19:47:22.64ID:Plx5NeC5最終的になんでもかんでも○○が悪いことにしている思考硬直人間を指す言葉になっていく。
0218デフォルトの名無しさん
2016/03/02(水) 22:53:55.42ID:scOQ3I+wコレクションをプロパティとして持つクラスを作って
そのクラスのメソッドとして定義しとけば良いんじゃない
0219デフォルトの名無しさん
2016/03/03(木) 08:51:46.56ID:sDd8C7iY中二病と同じようなものだな。
勝手に定義が拡大されていって、元あった定義からかなりズレてる。
アスペもそうだし、ステマもそうだし、ネトウヨというのもそうだな。
定義拡大しすぎて乱用し、挙句には左翼活動家の行動をネトウヨ
とか言い始める馬鹿までてる始末。
0220デフォルトの名無しさん
2016/03/03(木) 09:20:31.40ID:mDpo7bQQ0221デフォルトの名無しさん
2016/03/03(木) 11:21:09.37ID:sDd8C7iYま、今後も増えるだろう
JRにとってはいい薬になるだろ。山手線で何度も真夏の炎天下の中、クーラー切って缶詰
とかやったのは忘れないよ。
0222デフォルトの名無しさん
2016/03/03(木) 11:57:55.84ID:amF+AuYt話の脈絡が全く分らない
どこらへんがVBAに関係してるんだ?
0223デフォルトの名無しさん
2016/03/03(木) 12:02:27.33ID:mDpo7bQQVBA脳の話の続きさ。
ところでどのレスがVBA脳なんだっけ?
0224デフォルトの名無しさん
2016/03/03(木) 20:14:14.32ID:amF+AuYtいやまぁそっちはまだつながりが分るんだけど、
>>221のJRがどうとかってのがなんだかさっぱり分らないんだよね
0225デフォルトの名無しさん
2016/03/03(木) 20:35:42.98ID:BwHv50Vv<´ VBAじゃ、VBAの仕業じゃ! >
⌒ v'⌒ヽr -、_ ,r v'⌒ヽr ' ⌒
// // ///:: < _,ノ`' 、ヽ、_ ノ ;;;ヽ //
///// /:::: (y○')`ヽ) ( ´(y○') ;;| /
// //,|::: ( ( / ヽ) )+ ;| /
/ // |::: + ) )|~ ̄ ̄~.|( ( ;;;|// ////
/// :|:: ( (||||! i: |||! !| |) ) ;;;|// ///
////|:::: + U | |||| !! !!||| :U ;;; ;;;| ///
////|::::: | |!!||l ll|| !! !!| | ;;;;;;| ////
// / ヽ::::: | ! || | ||!!| ;;;;;;/// //
// // ゝ:::::::: : | `ー----−' |__////
0226デフォルトの名無しさん
2016/03/03(木) 21:03:59.66ID:nAqCV8y8-------
|○ ○|
| |
| ○|
-------
↓こうしたいんだけど、グループ内で中央揃えって方法ない?
-------
| ○|
| ○ |
| ○|
-------
0227デフォルトの名無しさん
2016/03/03(木) 21:07:12.78ID:nAqCV8y8◎ ○
○
=======
↓
=======
○
◎
○
=======
すいません、こういうことです。
0228デフォルトの名無しさん
2016/03/03(木) 22:56:20.15ID:TxOSABuy0229デフォルトの名無しさん
2016/03/03(木) 23:15:37.34ID:XKX5WeWDそれぞれの組をひとつのオブジェクトと見てそいつらを上下方向に中央揃え?
0230デフォルトの名無しさん
2016/03/04(金) 00:34:01.78ID:GMRSy9SY0231デフォルトの名無しさん
2016/03/04(金) 00:50:37.36ID:JTAQpjsa月15万ぐらいの給料でも生活できるとか
そういう人じゃないと厳しいんじゃない?
VBAだけでは多分ろくな求人が無いよ
0232デフォルトの名無しさん
2016/03/04(金) 01:03:10.27ID:kHA/YI44ある言語が使えるのに別の言語が全く出来ないなんてのも考えづらいけど。
プログラミングだけで食っていくのは難しいけど、
プログラミングが出来るっていうのを武器に仕事するなら食うには困らない。
0233デフォルトの名無しさん
2016/03/04(金) 02:18:36.51ID:+fNnjxqD0234デフォルトの名無しさん
2016/03/04(金) 08:24:04.83ID:kHA/YI44VBAもCも見た目が違うだけで中身一緒だし。
0235デフォルトの名無しさん
2016/03/04(金) 08:25:38.85ID:oBgAFUgq一緒 とは?
0236デフォルトの名無しさん
2016/03/04(金) 09:02:11.17ID:kHA/YI44何言語で書こうがコンパイル後に注目する限りは同じ物を作る事が出来るという話ね。
JavaとかECMAとかRubyとかのアプリケーションを噛ますヤツ(いわゆるスクリプト言語)は少し違うけど、
都度コンパイルできるように解釈されているのだと考えれば同じと言えなくもない。
0237デフォルトの名無しさん
2016/03/04(金) 11:32:35.87ID:8G/y/52Veraseしてもiarrayがtrueになるのだがどうにかならない?
0238デフォルトの名無しさん
2016/03/04(金) 11:43:31.10ID:oBgAFUgqLBound <= UBound であることを確認すればいいんじゃない?
または()なしのAs Variant で宣言するか。
0239デフォルトの名無しさん
2016/03/04(金) 11:58:02.55ID:kHA/YI44可変要素数のものを異なる関数間でやりとりするならCollection型とかかな?
0240デフォルトの名無しさん
2016/03/04(金) 12:17:17.67ID:caIAl3e0つーかさ、いい加減にその仕様変えてほしいわ。
今時動的配列もまともに扱えない言語なんてないでしょww 入門者にとっても熟練者にとっても
全くといっていいほど何の得にもならない仕様。
0241デフォルトの名無しさん
2016/03/04(金) 12:50:39.97ID:LsWJiYwn毎分実行させたいプロシージャは毎秒実行プロシージャが60回実行されたら実行・・・という処理があります
しかしやはり無理があるのか時刻とズレが現れ始めるのが気になります
うまく毎秒、毎分実行させる方法はありませんか?
0242デフォルトの名無しさん
2016/03/04(金) 13:03:01.51ID:kHA/YI44またお前か。
というのは置いといて、動的配列が未初期化かどうか判定する直接的な方法がないというのは確かに不便なんだよな。
SgnやNot Notで一応の判定は出来るけど本来の用途ではないから使うのは躊躇われる。
APIで判定する方法もあるけどライブラリ無かったらアウトだし(考えにくいけど)、そもそもあれってアドレス値を返しているだけで、
未初期化なら0(つまりNull)なんだからIsNullで何故判定出来ないのかという疑問が出てきたり。
ま、いかなる言語であれ文句を言い始めたらキリが無いから、今の仕様で付き合っていくしかないけどね。
>>241
Sub Procedure()
Static sec As Single, min As Single
If Timer - sec > 1 Then
毎秒起動
sec = Timer
End If
If Timer - min > 60 Then
毎分起動
min = Timer
End If
End Sub
こんなのをずっと回しておくとか。
0243デフォルトの名無しさん
2016/03/04(金) 14:35:01.01ID:oBgAFUgqちょっと意味不明
なんの不自由があるんかね?
0244デフォルトの名無しさん
2016/03/04(金) 14:40:30.56ID:31c/HYsd0245デフォルトの名無しさん
2016/03/04(金) 14:46:58.64ID:yJ/z6IGIここVBAのスレ。君場違い。わかった?
0246デフォルトの名無しさん
2016/03/04(金) 14:48:44.24ID:31c/HYsdVBAで.Net使う話だよ。
Collectionが嫌ならArrayList使えばいいじゃない。
0247デフォルトの名無しさん
2016/03/04(金) 16:28:46.94ID:swDkdG7k8個全てのファイルはPrivate Sub Workbook_Open()でApplication.WindowState = xlMaximized '最大化 していました。
このときまでは何の問題もありませんでした。
今週、8個のファイルのうち1つのPrivate Sub Workbook_Open()で
Application.WindowState = xlMaximized '最大化
Application.DisplayFullScreen = True
と変更しました。1つだけ全画面表示にしたのです。
そうしたところ、他の7個のうちのいくつかがいつの間に全画面表示になっていたりします。
起動時に全画面表示になるものもあります。
起動時に全画面表示となれば通常の最大化に直したりするのですが、
時間が経過するといつのまに全画面表示になっていたりします。
よくわからない現象です。
原因不明の現象に困惑しています。
致命的な不具合ではありませんが非常に面倒です。
なにかわかりますでしょうか?
0248デフォルトの名無しさん
2016/03/04(金) 16:33:21.02ID:kHA/YI44完全に終了しない内に次のブックを開くせいで設定が残ったままになるんじゃないの。
プロパティが特定の状態にある事に期待した作りにしないで実行時に初期化した方がいいよ。
0249デフォルトの名無しさん
2016/03/04(金) 17:48:20.76ID:31c/HYsd意味わからん
0250デフォルトの名無しさん
2016/03/04(金) 18:29:08.08ID:DcNHwK2h基本的に配列はPublicで宣言できないはずだけど
Variantで宣言して配列を持つのは可能だけど
Eraseは配列の要素を初期化するだけで、要素を初期化されようが配列は配列のまま
IsArrayがTrueなのは当たり前だと思うが
むしろ要素が初期化されたら配列じゃ無くなる方が困るわ
0251デフォルトの名無しさん
2016/03/04(金) 18:32:28.62ID:DcNHwK2hVBAは今時の言語じゃないから仕方がない
VBが出た当時の動的配列はどっちかって言うと配列としては革新的だったんだが
0252デフォルトの名無しさん
2016/03/04(金) 18:40:46.55ID:DcNHwK2h>動的配列が未初期化かどうか
VariantでEmptyだろ普通
0253デフォルトの名無しさん
2016/03/04(金) 18:47:14.50ID:DcNHwK2hまず環境ちゃん書け
>毎朝エクセルファイルを8個開きます(別プロセスで)。
これが疑わしいんだが
どうやって別プロセスで動いてる事確認した?単に別ウィンドウなだけじゃないか?
0254デフォルトの名無しさん
2016/03/04(金) 19:02:59.35ID:oBgAFUgq0255デフォルトの名無しさん
2016/03/04(金) 20:03:39.10ID:meEGXqpuへぇ、そうなの。なんか、今じゃ普通に使ってるから、最初からこういう
メモリ上の入れものを用意して、操作するって普通のことだと思ってたわ。
多言語で特に疑問もなく、難しくもなく使ってたからVBAの配列は使いづ
らくて仕方ないなぁ。かといってイチイチ書き出してたら速度面でものす
ごく遅いしね。
0256デフォルトの名無しさん
2016/03/04(金) 20:12:55.83ID:JTAQpjsa>基本的に配列はPublicで宣言できないはず
宣言できたよ
Option Explicit
Public hoge() As Variant
Sub test()
Call checkArray("初期状態")
ReDim hoge(0)
Call checkArray("Redim実行後")
Erase hoge()
Call checkArray("Erase実行後")
End Sub
Sub checkArray(str As String)
If IsArray(hoge) Then
If Not Not hoge Then
Debug.Print str & ":配列で要素あり"
Else: Debug.Print str & ":配列だけど要素なし"
End If
Else: Debug.Print str & ":配列ではない"
End If
End Sub
↑これで試した結果、
Public hoge() のところは他の型でもいけたけど、
Public hoge() As Object で宣言したら、
初期状態とErase実行後では、 LBound(hoge) = 0 、
UBound(hoge) = -1 、というちょっと変な状態になった
あと、 カッコを取って Public hoge としたら、
Redim実行後の If Not Not の所で型が一致しないというエラーになった
0257デフォルトの名無しさん
2016/03/04(金) 20:41:27.34ID:Q+o0VpBQCなんかよりは扱いは簡単だよね?
面倒なのはLBoundが0固定じゃないことくらいかな。
0258デフォルトの名無しさん
2016/03/04(金) 20:58:15.27ID:TK6DKGZOこんなん自分でするの?って思った記憶。
0259デフォルトの名無しさん
2016/03/04(金) 21:08:07.73ID:kHA/YI440260デフォルトの名無しさん
2016/03/04(金) 21:43:50.54ID:Q+o0VpBQ0261デフォルトの名無しさん
2016/03/04(金) 21:57:02.50ID:lZVh/WrC今時大抵の言語には List とか Collection 位は使えるからたいして変わらん
不便に思ってるのはC使いぐらいだろ
0262デフォルトの名無しさん
2016/03/04(金) 22:00:16.71ID:Q+o0VpBQErase した配列 : IsArray がTrue、LBoundとUBoundは取得不可、次元は0
Array() : IsArray がTrue、LBound = 0、UBound = -1、次元は1
これは知らなかった。
0263デフォルトの名無しさん
2016/03/04(金) 22:33:02.77ID:Q+o0VpBQ動的配列って、Dim var() As ... で宣言したやつのことで、
未初期化というのは ReDim する前のことか。
自分は普段
Dim var As Variant
ReDim var (...
のパターンしかやらないからな。
どっちの場合にも使える判定は次元を確認してからやるしかなさそうだ。
0264デフォルトの名無しさん
2016/03/04(金) 22:38:45.11ID:kHA/YI44線形リストくらいなら自作しても大した手間ではないと思うけどね。
Variant型作れって言われたら悶絶するけど。
0265デフォルトの名無しさん
2016/03/04(金) 22:45:59.06ID:JTAQpjsaErase時の挙動は宣言したときの型にも因るみたいだよ
ためしにObject型で宣言した配列でEraseしてみてよ
IsArray がTrue、LBound = 0、UBound = -1、次元は1
になるから
0266デフォルトの名無しさん
2016/03/04(金) 22:54:18.30ID:Q+o0VpBQなるほど、奇怪な挙動だ
ちなみにさっきこんなのも発見した
↓
Erase した配列を IsMissing の引数に入れると、アプリが落ちる
www
0267デフォルトの名無しさん
2016/03/04(金) 23:08:28.79ID:9YWpHsMn> 線形リストくらいなら自作しても大した手間ではないと思うけどね。
リスト自体はたいして難しくないけど、領域の確保・解放が面倒
> Variant型作れって言われたら悶絶するけど。
Win32API を前提にしていいなら意外と簡単
0268デフォルトの名無しさん
2016/03/04(金) 23:08:39.93ID:DcNHwK2hVBAでの配列は、要素の無い状態ってのが実は定義されてないからなぁ
UBoundが-1とか、not notとか、全部保障外の動作
0269デフォルトの名無しさん
2016/03/04(金) 23:49:36.96ID:Q+o0VpBQ素のVBAの機能だけで線形リスト?
かなり無理があると思うけど。
0270デフォルトの名無しさん
2016/03/05(土) 03:36:09.39ID:C1oJ0ySjもう長いことそういう扱いのものはCollectionかDictionary使ってるから忘れたけど
0271デフォルトの名無しさん
2016/03/05(土) 05:28:34.38ID:gRV1tzdLコレクション
0272デフォルトの名無しさん
2016/03/05(土) 09:02:48.20ID:jMWeenKu0273デフォルトの名無しさん
2016/03/05(土) 09:29:02.48ID:rDXleBwt0274デフォルトの名無しさん
2016/03/05(土) 09:53:02.66ID:dXAlBDepどういうことでしょうか?
0275デフォルトの名無しさん
2016/03/05(土) 10:23:53.54ID:JVq4KSH+>Collection
それを使うと、例えば、メモリ上で2次元の入れてもの的なものが作れて、
簡単にレコード追加や削除、要素数の調査などが出来るのかね?
0276デフォルトの名無しさん
2016/03/05(土) 12:27:16.08ID:u3wuja+A出来るんじゃね
0277デフォルトの名無しさん
2016/03/05(土) 12:27:54.96ID:9TDU+P7f少しはググれよ
0278デフォルトの名無しさん
2016/03/05(土) 12:44:32.31ID:c/pBSWps0279269
2016/03/05(土) 13:06:06.56ID:qwZo4R1u「読むは毎日」の「毎日」を「012(まるいちに)」と読むくらい無理があるよ。
0280デフォルトの名無しさん
2016/03/05(土) 13:18:01.29ID:1s6rQbQH0281デフォルトの名無しさん
2016/03/05(土) 13:34:00.19ID:LlD1+gMh(配列の扱いについて)
「スクリプト言語は自動で拡張するがコンパイラ言語は明示的に拡張しないとならないから不便」
↓
「大抵のコンパイラ言語にはListやCollection等の線形リスト型クラスが用意されているので強調するほどの不便さはない」
↓
「だがC言語にはListやCollection等の線形リスト型クラスが存在しないので不便である」
↓
「線形リストであればC言語でも書けるので、ListやCollectionを根拠にするならC言語を強いて分ける理由にはならない」
↓
「C言語ではクラスがないのでメモリの解放が保証されず、これを確実に管理できないのでやはりC言語は不便である」
という感じの流れ。
0282デフォルトの名無しさん
2016/03/05(土) 14:09:05.52ID:JVq4KSH+お前には聞いてないよ
0283デフォルトの名無しさん
2016/03/05(土) 14:31:26.49ID:C1oJ0ySjあ、そう。
0284デフォルトの名無しさん
2016/03/05(土) 18:11:50.55ID:Kra6+IMS>>247です。レス遅くなりすみません。
>まず環境ちゃん書け
Win7 64bit + エクセル2010 32bitです
>>毎朝エクセルファイルを8個開きます(別プロセスで)。
>これが疑わしいんだが
>どうやって別プロセスで動いてる事確認した?単に別ウィンドウなだけじゃないか?
別ウィンドウなのかもしれません。別プロセスで開いていると思ってました。
PC買い換えた時にレジストリいじった覚えはあるのですがよく覚えていません。すいません。
ファイルを開くときはアイコンを単にダブルクリックしているだけです。
タスクマネージャーのプロセスタブには"EXCEL.EXE *32"が複数並ぶので別プロセスで開いていると思っていました。
別プロセスなのか別ウィンドウなのか判別する方法はありますか?
また、単に別ウィンドウで開いているとすると今回の不具合は説明がつくのでしょうか?
0285デフォルトの名無しさん
2016/03/05(土) 19:04:44.01ID:kHthb7bFOKボタンを何千回も押さなければいけなくかなり苦戦していますが、
リアルタイムに変数が今いくつかをわかりやすく表示するいいい方法がありましたら教えてください。
よろしくお願いいたします。
0286デフォルトの名無しさん
2016/03/05(土) 19:06:49.19ID:nsijM3800287デフォルトの名無しさん
2016/03/05(土) 19:15:41.23ID:u3wuja+Adebug.printとか
0288デフォルトの名無しさん
2016/03/05(土) 19:21:11.51ID:kHthb7bFこんな物があるとは、、これは便利ですねありがとうございました。
0289デフォルトの名無しさん
2016/03/05(土) 19:22:23.00ID:LlD1+gMh複数の表示が必要ならユーザーフォーム使うと便利かもしれない
0290デフォルトの名無しさん
2016/03/05(土) 19:34:13.01ID:4DqfsxCG私は最近中小企業に入社しました。
既に退職した方が作っている、VBAアクセスを用いたユーザーフォームに入力する形の勤怠表を使っています。
リストから従業員の名前を選んで、時間とか入力するだけで、そのあたりの使用には全然問題が無いです。
このシステムは複数のパソコンで使えるようになっていて、排他処理が出来ないので使うのは誰か一人だけとなっています。
問題は、私の使っているパソコンでかつて使っていた担当者の名前が自動的に入力印字されることになってしまっており
これをどうにかして自分の名前に変えたいのです。
システムを利用するユーザーフォーム内には無いので、コンピューター内のクエリ?アクセス?を読んでると思うのですが・・・
これどこから読んでるか探す方法ってあるでしょうか?
0291デフォルトの名無しさん
2016/03/05(土) 19:49:06.02ID:kHthb7bFありがとうございます。
これは高度なようでぱっと見どうやるのかわかりませんが挑戦してみます
0292デフォルトの名無しさん
2016/03/05(土) 19:52:59.41ID:LlD1+gMhユーザー名から読み込んでいると思うので、PCが個人名になっているならPCのユーザー名を変えればいいし、
そうでないならユーザー名と照らし合わせている対照表が存在するはずなので、
個人名が記録されたテーブルが無ければコードを全て検索にかければ出てくるんじゃないかな。
0293デフォルトの名無しさん
2016/03/05(土) 19:53:01.73ID:yziJisVBvbaのソースは見れるの?
たぶん実行時にコンピュータ名を取得してんじゃないのかな。
UserNameでソース検索してみると引っ掛かるかも。
0294デフォルトの名無しさん
2016/03/05(土) 19:59:14.70ID:fx7njDcC話はそれからだ
0295デフォルトの名無しさん
2016/03/05(土) 20:21:57.03ID:4DqfsxCGPCは会社名と数字なので、違うと思われます。
>>293
システムを開くと、エクセル画面の手前にユーザーフォームが出て来て、VBAコードをどうすれば見れるか分かりません・・・
どうしたらいいでしょう?
一応基本的なVBAなら学校で習いましたので、私もコードが見れたら分かるとは思うのですが・・
0296デフォルトの名無しさん
2016/03/05(土) 20:25:29.18ID:LlD1+gMhShiftキー押しながら開けば内部が見える。
開いた後にAlt+F11キー押せばコード画面が見える。
PCが会社名と数字ならテーブルで管理している可能性が高い。
0297デフォルトの名無しさん
2016/03/05(土) 20:31:48.48ID:4DqfsxCGありがとうございます
テーブルというのはアクセスでしょうか?
0298デフォルトの名無しさん
2016/03/05(土) 20:39:13.73ID:yziJisVBとりあえずコード見ないと。
テーブルはアクセスのデータ。
名前とかを一人一行で保存してそっからとってるかもね。
あとはエクセルシートに書いてある可能性も。
0299デフォルトの名無しさん
2016/03/05(土) 20:42:31.99ID:4DqfsxCGどうもありがとうございます
月曜日やってみます!
0300デフォルトの名無しさん
2016/03/05(土) 23:47:07.55ID:pW8OrA+LExcel 2003 で、VBAでマクロを組んでいます。
・表の数値を、スクロールバーによって入力させたいです。
・前回作ったものがあり、それはちゃんと動作しています。
・そのBookからスクロールバーをコピーして、今回のBook内にペーストしました。
・貼り付け先の今回のBookでもちゃんと動作し、前回Bookと同じ位置のセルに、数字が表示されます。
・このセル位置を変更したいと思い、デザインモードで、そのスクロールバーを右クリック。
・そしてプロパティを開き、LinkedCellの数値を見ると、J14が入っています。
・この数値を、今回表示したいセル位置の座標値、例えば、C3 と書き込んだのですが、
1. Linked Cellに書き込んでも、文字書けません。白いままです。
以下の画像を見て下さい。
http://imgur.com/jkhPHef
2. 前回に戻そうと、CTRL+Zしたのですが、前回の値にさえも戻りません。
3. 試しにスクロールバーを動かしてみても、どのセルにも表示されません。
4. あきらめて、再度以前のタブからコピーペーストすると、ちゃんと数値表示されます。
5. しかし、Linked Cell の値を変更すると、全く同様になります。
質問
なんとか、思い通りのセル位置にスクロールバーの値を表示させたいのですが、
どのようにしたら良いでしょうか?
どうぞ宜しくお願いします。
0301デフォルトの名無しさん
2016/03/05(土) 23:56:26.68ID:vycAzidd0302デフォルトの名無しさん
2016/03/06(日) 03:55:58.52ID:1eS/+yt+いい気分に浸っていないで、日頃から勉強しておかないと。
0303デフォルトの名無しさん
2016/03/06(日) 10:00:53.14ID:8jI/Xwdu零細企業の職場内での評価なんて>>301もそこまで執着してないと思う
例えてみたら誰かにもらった宝くじがたまたま当たってたとか
せいぜいその程度のもんでしょ
0304デフォルトの名無しさん
2016/03/06(日) 10:03:52.04ID:l5x+OWKs本当にもうvbaなんて書きたくない、俺はもっと高貴なc++とか書きたいんじゃー
0305デフォルトの名無しさん
2016/03/06(日) 10:19:01.07ID:covgZswb本当にもうC++なんて書きたくない、俺はもっと高貴なvbaとか書きたいんじゃー
0306デフォルトの名無しさん
2016/03/06(日) 10:35:11.33ID:EaPvtK9yこれからはXamarinとか使える言語の方がいいよ
0307デフォルトの名無しさん
2016/03/06(日) 11:14:47.28ID:ziAQb5ivあんなゆとり低俗言語やる気しねーわ
0308デフォルトの名無しさん
2016/03/06(日) 12:20:43.48ID:CI3ynwI1会社で使うPCには大抵Office製品が入っている=VBAで書ける環境が整っている=つまり彼は・・・
0309デフォルトの名無しさん
2016/03/06(日) 12:32:55.25ID:euq/4jEg俺はさらに零細の従業員10人の会社にいたけど入社してすぐに参謀格扱いだったわ
AccessでVBA使って社内システム作ってやったわ
社長は何かあるたびに俺に相談、コンピュータ関係は全部俺に丸投げ状態だったわ
0310デフォルトの名無しさん
2016/03/06(日) 12:38:05.50ID:uXhlHP6GVBAで高貴な書き方をする方法をひねり出せばいい。
0311デフォルトの名無しさん
2016/03/06(日) 12:47:46.09ID:Pwozu15r新規でスクロールバー追加してもダメ?
その状況を再現しようとしたけど さすがに Excel2003じゃないから わかんなかった
Linked Cellへ 入力してる時 文字は表示されるの? Enter押すと消えるの?
0312デフォルトの名無しさん
2016/03/06(日) 14:49:21.66ID:EaPvtK9yどうした?
何か辛いことでも有ったのか?
0313デフォルトの名無しさん
2016/03/06(日) 18:06:47.58ID:nfMUp1Uo良いなぁ。俺なんか「これ、ネットで拾ったんだろ?」なんて言われるんで自分だけこっそり使ってる。
VBAどころかシート関数だってSUMしか知らないヤツが大半の底辺企業だから下手に気の利いた事をやってみせると
色々とメンドクセー事をやらされそうだし、「それ、俺に教えろ」と言われるのが一番困る。
0314デフォルトの名無しさん
2016/03/07(月) 00:47:06.08ID:addXPaOO0315デフォルトの名無しさん
2016/03/07(月) 02:14:25.55ID:5wV32mLNどうもありがとうございます。
>新規でスクロールバー追加してもダメ?
すみません、新規での作り方が良くわからないんです。
VBEで、ユーザーフォームを新規で作って、そこに○○ボックスを表示して、その中の
スクロールバーをフォーム上にドラッグする、そこまでは解ったのですが、
スクロールバーだけを、自分のシート上に持っていく方法がわからずに止まっています。
それなら
既存のスクロールバーをcopyして、使い回した方が良いと思い、そうしました。
でも数値表示位置が思い通りにならない、と、ココで止まっています。
>その状況を再現しようとしたけど
わざわざありがとうございます。大変すみません。
>Linked Cellへ 入力してる時 文字は表示されるの? Enter押すと消えるの?
はい、値を入力するときに表示される、縦棒のカーソル(アイカーソル)も出て、
数値も打てて、打っている最中は表示されます。でも、Enterを打った途端に、
値が消えて、真っ白になってしまいます。
何かヒントがあったら、教えてくださいませんでしょうか。
0316デフォルトの名無しさん
2016/03/07(月) 02:29:19.02ID:4xjfDqmL改行されてるだけだったりしない?
0317デフォルトの名無しさん
2016/03/07(月) 02:49:52.90ID:UpfyO0Bs>すみません、新規での作り方が良くわからないんです。
それはユーザーフォームに作成してからシート上に持ってくるんじゃなくて
シート上に直接作成するんですよ
2003を持ってないんでちょっと違うかもですが、
2000だとコントロールツールボックスというのが有りまして
(ちなみにVBEのアイコンとデザインモードのアイコンの間に
コントロールツールボックスのアイコンがありました
スパナとハンマーがX字状に交差したマークのアイコンです)
その中にスクロールバーも用意されてます
そのスクロールバーをシート上の好きな位置に貼り付けて
サイズ適当に整えてから
右クリックでプロパティー出して
LinkedCellのところにセルのアドレス書いて
デザインモードを終了させたら完了です
0318デフォルトの名無しさん
2016/03/07(月) 23:37:36.70ID:i+8zAlAm使用するマクロがこれで
Range("S11:X10000").Sort Key1:=Range("T11"), ORDER1:=xlDescending
Range("S11:X10000").Sort Key1:=Range("S11"), ORDER1:=xlDescending
シートBから範囲をコピーし、シートAに貼り付け後ソートします。その際シートBは開いたままです。
1万行までソート範囲設定してますが、実際は3000ちょいです。
シートAは400万セル計算式が入っており、ソート後ほぼ全てのセルが再計算されます。
計算式自体は簡単なのでソートの時間2秒、再計算2秒くらいです。CPU2600k
クラッシュの原因は分かりますか?
データが重いのは承知しているのですが、他で改善できる点があれば教えて欲しいです
0319デフォルトの名無しさん
2016/03/08(火) 00:27:00.64ID:vutO7knOマクロ中の計算を中止するとか
0320デフォルトの名無しさん
2016/03/08(火) 00:47:53.82ID:8QSEtr5Pソートで落ちてるのか計算で落ちてるのか調べてみては
0321デフォルトの名無しさん
2016/03/08(火) 00:51:54.57ID:RMZNymTqA_B_C_D_E_Fって名前のファイルを
BE_Aにリネームするマクロってどんな感じになりますか?
0322デフォルトの名無しさん
2016/03/08(火) 01:26:22.87ID:bwi0BspMhttp://officetanaka.net/excel/vba/statement/Name.htm
0323デフォルトの名無しさん
2016/03/08(火) 19:57:54.75ID:9s/oHe/S多重ネストを回避するにはどうすればいいんでしょうか
少し複雑なプログラムを書くと、だいたいifの多重ネストが発生してしまいます。
select case や do whileなどは状況に応じて使い分けているのですが、それらもifの親だったり子だったりします。
何かコツというか、アドバイスを頂けると嬉しいです。
0324デフォルトの名無しさん
2016/03/08(火) 20:17:21.12ID:RMKFy6zt0325デフォルトの名無しさん
2016/03/08(火) 20:18:05.37ID:fR2CUJwxおまえがどういう条件で入ってくる値を分類するかによる。
0326デフォルトの名無しさん
2016/03/08(火) 20:32:55.36ID:nBW8sWlC多重ネストから抜ける方法じゃなくて回避する方法、とな?
0327デフォルトの名無しさん
2016/03/08(火) 20:52:02.31ID:Vc6G9loFAccessとかでデータベース弄ってみると解決のヒントになるかも。
俺も最初の頃は物凄い複雑な多重ネストしてたけど、二次元配列にすればだいたい単純化出来ると知った。
0328デフォルトの名無しさん
2016/03/08(火) 20:54:03.15ID:9s/oHe/Sそういう話が聞きたかったのです
ありがとうございます
0329デフォルトの名無しさん
2016/03/08(火) 21:07:40.52ID:835pn7ETなにそれ
詳しく教えて
0330デフォルトの名無しさん
2016/03/08(火) 21:17:39.28ID:h5qI0BBpまあ、ロジック見直すのが第1だな
0331デフォルトの名無しさん
2016/03/08(火) 21:31:41.20ID:Vc6G9loF多重ネストっていうのは、ネスト階層そのものがメモリの役割を果たしているわけだから、
その階層を記録そのもので代替すればネスト階層を少なく出来るし、ループ処理しやすくなる。
0332デフォルトの名無しさん
2016/03/08(火) 21:50:26.37ID:rEDH5rdcそうでないなら条件分けが論理的でないとか
0333デフォルトの名無しさん
2016/03/08(火) 22:18:08.86ID:MOSr64Vhそもそも関数に分けてないのは論外
0334デフォルトの名無しさん
2016/03/08(火) 22:18:39.27ID:Murbzmcdif not 条件1 then
go to continue
end if
if not 条件2 then
go to continue
end if
if not 条件3 then
go to continue
end if
continue:
next i
function hogehoge()
if 条件1 then
hogehoge = fugafuga
exit function
end if
if 条件2 then
hogehoge = fugafuga
exit function
end if
end function
平気でgoto文使ってるわ…
continue文とreturn文、OrElseAndAlso条件式vbaにも欲しいよー
0335デフォルトの名無しさん
2016/03/08(火) 22:41:28.42ID:Vc6G9loF0336デフォルトの名無しさん
2016/03/08(火) 23:18:30.06ID:yqVtrlfPそれな
0337デフォルトの名無しさん
2016/03/08(火) 23:41:33.25ID:nBW8sWlC0338デフォルトの名無しさん
2016/03/09(水) 00:10:33.98ID:m+VCUuOsary=sprit("A_B_C_D_E_F", "_")
newname=ary(1) & ary(4) & "_" & ary(0)
0339デフォルトの名無しさん
2016/03/09(水) 01:37:19.14ID:ISN2ur/+if not cond1 then exit do
if not cond2 then exit do
if not cond3 then exit do
if not cond4 then exit do
if not cond5 then exit do
if not cond6 then exit do
loop until true
0340デフォルトの名無しさん
2016/03/09(水) 18:00:15.34ID:DOBDJjUidoeventsで対応出来たのですがデメリットなどありますか?
0341デフォルトの名無しさん
2016/03/09(水) 19:41:01.70ID:bmHnXMYB単純に処理速度が遅くなる、そのループ中にユーザーが他のボタンを押したりや、イベントを発生させる事ができるからどんなエラーが出てもおかしくないってのが挙げられるね
処理中のキャンセルボタンとかには必要だけど、エラー処理しっかりしないと変な使い方されるとバグるよって感じ
0342デフォルトの名無しさん
2016/03/09(水) 19:49:50.90ID:8rDFbZP8なるほど
その辺はdoevents使うときにグローバル変数でも使えば対象出来そうですね
0343デフォルトの名無しさん
2016/03/09(水) 20:18:05.86ID:fhz9XN7U世の中に出回る大抵の「ユーザーに途中で弄られるとバグるシステム」は、この方法で回避してる。
ついでに進捗率とキャンセルボタン付けておけば便利。
0344デフォルトの名無しさん
2016/03/09(水) 20:37:29.21ID:zuimL+5Mうーーーん勉強になる!
0345デフォルトの名無しさん
2016/03/09(水) 21:02:53.20ID:8rDFbZP8進捗率どうやればいいの?
0346デフォルトの名無しさん
2016/03/09(水) 21:19:50.18ID:fhz9XN7U何が「どう」なのか分からないけど、
・率の計算なら現在値/全体値で出せる。ただし全体の数と、現在を示す値がどれか分かっていなければ当然出来ない。
・進捗率バーを出したいならユーザーフォームのツールボックスの空いてる所を右クリックして
「その他のコントロール」からProgressBarを選べばいい・・・はずだけど俺のPCでは何故か見あたらない。
・値を表示したいならラベルのCaptionに突っ込んでもいいし、ProgressBarが見当たらなくて自作したいなら、
適当なラベルで同じ大きさのものを二つ重ねて背景色をつけて、
上の方に表示されているラベルの横幅を、下の方に表示されているラベルの横幅に進捗率掛けても出来たはず。
0347デフォルトの名無しさん
2016/03/10(木) 07:04:11.23ID:+km6LsFg0348デフォルトの名無しさん
2016/03/10(木) 09:40:35.29ID:0HUIwvkkhttp://www.moug.net/tech/exvba/0090015.html
すぐに出てくるだろーが
0349デフォルトの名無しさん
2016/03/10(木) 19:14:57.62ID:ktNP4enhプロシージャをコールするときに引数をカッコで囲むと値渡しになるのな
今日、知らずにそれやってて1時間ぐらい嵌っちまった
0350デフォルトの名無しさん
2016/03/10(木) 19:39:52.03ID:KtHC/EJ0奇遇だね。俺は昨日はまった。(マジ)
0351デフォルトの名無しさん
2016/03/10(木) 19:41:26.38ID:YDCDLTcE0352デフォルトの名無しさん
2016/03/10(木) 19:43:57.85ID:KtHC/EJ0カッコで囲んでかつ関数の返り値を捨てるとそうなるのはわかった。
0353デフォルトの名無しさん
2016/03/10(木) 19:54:02.89ID:4xET+MUO関数とかプロシージャの側でby refとかby val付けたら参照渡し、値渡しじゃなかったっけ?
0354デフォルトの名無しさん
2016/03/10(木) 20:03:02.67ID:YDCDLTcESub test1(x)
x = x + 1
End Sub
Sub test()
test1 (i)
Debug.Print i
End Sub
これでも普通に起きるから、カッコ自体が値を返してるんじゃないの。
カッコが返した値に対して色々やってるから一見すると値渡しに見えるだけだと思う。
俺も初めて知ったけど、これ便利だな。同じ関数で値を保護するかしないか選べるのがいい。
0355デフォルトの名無しさん
2016/03/10(木) 20:10:47.12ID:4xET+MUOiでは無く (i)がtest1に渡されるのでは?
関数の形式で書くと
test1( (i) )
call test1(i) 参照渡し
call test1((i)) 値渡し
と予想
0356デフォルトの名無しさん
2016/03/10(木) 20:24:42.26ID:ktNP4enhhttp://home.att.ne.jp/zeta/gen/excel/c04p11.htm
ここに書いてあった
>括弧で囲まれた引数を式として評価するために一時的にメモリの別領域に値が確保されたためです。
引数として渡したのはあくまで別に確保された領域のポインタを参照渡ししただけで、元のデータの場所ではありません。
ってのが割りと分りやすい説明だと思う
0357デフォルトの名無しさん
2016/03/10(木) 20:29:43.73ID:KtHC/EJ0そういうことなのかもね。
自分がはまったのは、以下のようなパターン。
result = func(a)
とやると参照渡しになるのに、
func (a)
のように返り値を受け取らないと値渡しになってしまう。
双方ともカッコはあるんだけど、その意味が変化してしまうようだ。
前にスペースがあくのも怪しいし。
0358デフォルトの名無しさん
2016/03/10(木) 20:39:47.39ID:KtHC/EJ0なるほどね。
「返り値を利用する」だけど、普通に受けとる、"Call" を頭に付ける、以外にも、
メソッド呼び出し(返り値がオブジェクト型のとき)を後ろに続けてもいいみたいだ。
0359デフォルトの名無しさん
2016/03/10(木) 20:41:01.66ID:LNX/blvpいや、わかってるなら嵌るなよ
0360デフォルトの名無しさん
2016/03/10(木) 20:41:59.77ID:YDCDLTcE引数と関数の間にちょっとスペースが入っただけっていう考え方に草
0361デフォルトの名無しさん
2016/03/10(木) 20:50:04.66ID:ktNP4enh>func (a)
>のように返り値を受け取らないと値渡しになってしまう。
これちょっと違うっぽい
返り値云々じゃなくて、頭にCallを付けてるかどうかの問題らしい
Call hoge(a) :参照渡し
hoge a :参照渡し
Call((a)) :値渡し
hoge (a) :値渡し
0362デフォルトの名無しさん
2016/03/10(木) 20:52:14.68ID:ktNP4enhCall hoge(a) :参照渡し
hoge a :参照渡し
Call hoge((a)) :値渡し
hoge (a) :値渡し
0363デフォルトの名無しさん
2016/03/10(木) 20:56:34.88ID:xRgSerYm式にすればいいだけじゃね?
(x) とか x+0 とか x * 1 とか
なんか最適化されそうでちょっと恐いから、誰か試してみて
0364デフォルトの名無しさん
2016/03/10(木) 21:04:23.07ID:E15ymOk9VBAのレベル:スーパーど素人(見はじめてから3時間ぐらい、プログラムのスキルはごく簡単なbashを、インターネットを駆使して、何とか自力でかけるレベル)
VBAの構造としてはこんな感じです
-----------------------------
Dim hogehoge As Long ←変数の宣言?がいくつか書いてある
※1
Sub ボタン1_Click() ←1個目のサブルーチン?
なんかのコード
End Sub
Sub suburuchin() ←2個目のサブルーチン?Sub サブチーチン名()がこの下に4つある
Dim yamayama As Integer
なんかのコード
End Sub
※2
-----------------------------
コードの動きとしては、ボタンを押すと、上記コードが実行されて、実行時に選択されていたセルに値をいれて、選択セルから一つ下に下がる。
(実行時にA1が選択されていたら、A1に値を入れる→A2に下がる、A2が選択されている状態で実行すると、A2に値が入って、A3にさがる)
というVBAです。(人に作ってもらいました・・)
これを、指定した回数繰り返させたいのですが、VBA的に簡単な方法はありませんでしょうか。よろしくお願いします。
※1に
Sub Macro1()
For i = 1 To 10 と入れて、
※2に
Next i
End Sub と入れて、コード全体をサブルーチン化してしまえばうまくいくんじゃね?と思ってやってみたけどダメでした。
0365デフォルトの名無しさん
2016/03/10(木) 21:11:01.91ID:xRgSerYm> やってみたけどダメでした。
どうダメだったのか書けよ
0366デフォルトの名無しさん
2016/03/10(木) 21:14:40.98ID:YDCDLTcESub Macro1()
For i = 1 to 10
ボタン1_Click()
suburuchin()
Next
End Sub
こう書く。
0367デフォルトの名無しさん
2016/03/10(木) 21:27:09.48ID:n+nn3+TvCallがどうこうじゃなくて、引数が(構文的に必要ない余分な)カッコでくくられてるかどうか
カッコでくくられた部分が式として評価されるから、元の変数とは別物になるだけ
ややこしいのはプロシジャ呼ぶ時のカッコの必須/省略可能のルール
0368デフォルトの名無しさん
2016/03/10(木) 21:32:25.24ID:E15ymOk9入れた後も、入れる前と動きは変わりませんでした。
>>366
ありがとうございます!うまくいきました!
全部囲わずに、中に入れればよかったんですね・・・。
0369デフォルトの名無しさん
2016/03/10(木) 21:42:47.62ID:ktNP4enh>ややこしいのはプロシジャ呼ぶ時のカッコの必須/省略可能のルール
いや、俺もそういう意味で言ってる
Callのあるなしでカッコが必須かどうかが変わるってのが前提にあって
Callなしで引数に括弧を書くと構文上不要なカッコとみなされるって話だから
>>357のように
result = func(a) と対比するなら
func(a) じゃなくて
result = func((a)) のほうだよねってこと
0370デフォルトの名無しさん
2016/03/10(木) 21:44:41.53ID:TmlGNQiU自分で書いてても理解しづらいし、エラーが起きた時に探すのに時間はかかるし、恥ずかしいし…
型宣言もないのか…
0371デフォルトの名無しさん
2016/03/10(木) 21:45:18.98ID:fibsVr8n0372デフォルトの名無しさん
2016/03/10(木) 21:50:55.60ID:bAfaOEHz0373デフォルトの名無しさん
2016/03/10(木) 21:59:24.40ID:ktNP4enh言ってる意味が分からん
おれは関数呼び出しってのは
Functionプロシージャをコールするって意味で使ってるんだが
何か別の意味があるのか?
ちなみに返り値を使わないFunctionコールなら括弧無しで書ける
返り値使わないのにFunctionにする意味があるかは別の話
0374デフォルトの名無しさん
2016/03/10(木) 22:02:00.01ID:BlUpxWze「ByRef書いても値渡しになってしまう」現象について話し合われている、
っていうのはわかってるよね?
0375デフォルトの名無しさん
2016/03/10(木) 22:02:31.94ID:YDCDLTcE「つけてもつけなくてもいいよ」っていうカッコが無いって意味だろ。
0376デフォルトの名無しさん
2016/03/10(木) 22:04:37.32ID:fibsVr8n良く読んでませんでした。
0377デフォルトの名無しさん
2016/03/10(木) 22:07:11.96ID:7stvDytsカッコなしで書けるではなく、カッコを使ってはいけないが正解だな。
0378デフォルトの名無しさん
2016/03/10(木) 22:10:29.12ID:ktNP4enhサブプロシージャのコールや
返り値無しのファンクションプロシージャのコールなら
Call付けて括弧もつけるか
Callなしで括弧もつけないかでどっちも参照渡しだから
省略できるカッコと看做せるんじゃないかっていう解釈もありじゃない?
0379デフォルトの名無しさん
2016/03/10(木) 22:13:15.89ID:ktNP4enhいや、カッコつけると値渡しになるのは別にいけないことではないと思うけど?
マイクロソフトだって正式に仕様として公開してるんだし
0380デフォルトの名無しさん
2016/03/10(木) 22:17:23.35ID:7stvDytsお前自分で書いておいて>>356の意味分かってないだろ。
「参照渡しが値渡しに変わった」のではないって意味だぞそのリンク先に書いてるのは。
0381デフォルトの名無しさん
2016/03/10(木) 22:19:33.62ID:ktNP4enhいや、現象として参照渡しと同じ結果なんだから
その理由は別にいいじゃん
なんか違う結果が出るシチュエーションってある?
0382デフォルトの名無しさん
2016/03/10(木) 22:20:53.12ID:ktNP4enh>現象として参照渡しと同じ結果
じゃなくて
値渡しな
0383デフォルトの名無しさん
2016/03/10(木) 22:22:46.38ID:YDCDLTcE0384デフォルトの名無しさん
2016/03/10(木) 22:23:24.86ID:7stvDytsもはや何を言ってるのか訳分からんが
どうやって呼び出そうが参照渡しは参照渡しのままだ。
独自の解釈を編み出すより、まずそこを理解する努力をしろ。
0385デフォルトの名無しさん
2016/03/10(木) 22:32:25.83ID:Fe+LxwxG> ややこしいのはプロシジャ呼ぶ時のカッコの必須/省略可能のルール
ややこしいか?
'?' が引数だとして、構文が
Call hoge(?)
hoge ?
の二種類あるだけ
なので、
> Call hoge(a) ⇒ ?= a:変数なので参照渡し
> hoge a ⇒ ?= a:変数なので参照渡し
> Call hoge((a)) ⇒ ?= (a):式なので値渡し
> hoge (a) ⇒ (a):式なので値渡し
ってなるだけでしょ
0386デフォルトの名無しさん
2016/03/10(木) 22:39:34.58ID:7stvDytsヤキモキするからもうやめるわ。
0387デフォルトの名無しさん
2016/03/10(木) 22:40:37.98ID:ktNP4enh>もはや何を言ってるのか訳分からんが
>どうやって呼び出そうが参照渡しは参照渡しのままだ。
そうはいってもマイクロソフトもこう言ってるしな
別に独自の解釈って訳でもないのよ
https://msdn.microsoft.com/ja-jp/library/cc436535.aspx
>引数渡しの方法の決定
>引数を渡す方法は、プロシージャの宣言によって決まります。
>宣言で ByVal が使用されている場合、呼び出し元のコードでそれを変更することはできません。
>しかし、ByRef を使って引数が宣言されている場合は、
>呼び出し元のコードで引数名をかっこで囲むことによって、値渡しで渡すように変更できます。次に例を示します。
0388デフォルトの名無しさん
2016/03/10(木) 22:40:42.91ID:BlUpxWzeSub の場合はそうだけど、Function の場合が嵌りやすいね。
0389デフォルトの名無しさん
2016/03/10(木) 22:48:29.46ID:6K4R3xGybyrefを引数に持つ関数やサブルーチンの呼び出し側で変数以外の式をパラメータとして与えると、
その式の結果を格納する一時領域が参照元になり、結果的にbyvalと同じ挙動に見える
という現象であって
>>385
で値渡しと書いてしまうとまた混乱が起きると思う
暗黙の一時変数が参照元になる仕組みをどう呼ぶかの話だけど
呼び出された関数/サブから見れば参照渡しは参照渡し
0390デフォルトの名無しさん
2016/03/10(木) 22:56:18.57ID:YDCDLTcEByValも変数を別領域にコピーして利用するという仕様だから挙動的にはどちらも「値渡し」でいいんだろ。
問題はその「暗黙の一時変数」というもの自体を理解出来るかどうかだと思う。
0391デフォルトの名無しさん
2016/03/10(木) 23:12:35.70ID:ktNP4enhマイクロソフトがこれは値渡しだっていってんのに
どう呼ぶも糞もないわ
0392デフォルトの名無しさん
2016/03/10(木) 23:18:22.79ID:1xnVZ4wKパフォーマンス的にはどうせExcel操作がボトルネックになるんだから
参照渡しなんか紛らわしいだけ
0393デフォルトの名無しさん
2016/03/10(木) 23:20:00.55ID:TmlGNQiU返り値返さない関数はcall使えよ、んでbyval byref書けよ
しょーもな
0394デフォルトの名無しさん
2016/03/10(木) 23:26:51.00ID:6K4R3xGy呼び出し側で勝手にbyvalにできますなんて、関数/サブの定義を無視するような行為だからねえ
結局この仕様を知らないと、一見して何がおかしいか判らない上に、
動かしてもエラーにもならず、なぜか結果だけがおかしい
被害が1時間では済まないかもしれない
0395デフォルトの名無しさん
2016/03/10(木) 23:30:35.11ID:BlUpxWzecallはともかくとして、みんなbyval byrefは書く前提で話してるようだが?
0396デフォルトの名無しさん
2016/03/10(木) 23:36:07.63ID:4xET+MUO値渡しに変更できると言う解釈もあるだろうけど
ただ単に式を評価した結果をメモリに置いて其処への参照を渡しているとも解釈できる
括弧で囲むと式になるというのはプロシージャの引数の時に限らない
0397デフォルトの名無しさん
2016/03/10(木) 23:38:42.45ID:BlUpxWzeいやむしろ基本ByRefであるべき
変数を直接渡したくないときはコピーを作って代入すればいいんだし。
さすがに y = func((x)) と2重カッコにするのはやらないだろ。
個人的にはExcel操作なんかあまりやらない。
関数呼び出しのたびに変数のコピーなんかされたら大変なことになっちゃう。
0398デフォルトの名無しさん
2016/03/10(木) 23:48:50.40ID:qFayifgR最近のプログラミング言語では基本的に常に値渡しを使用し、
参照渡しのようなことがしたいときはオブジェクト参照の値渡し(VBAだとByValでオブジェクトを渡す)を使うのが一般的になっている
0399デフォルトの名無しさん
2016/03/10(木) 23:53:03.75ID:BlUpxWze配列が ByVal で参照渡しになればそれでいいんだけどね。
>>397は言葉足らずだったが、「呼び出しのたびに配列のコピーされたんじゃかなわん」に読み替えてほしい。
0400デフォルトの名無しさん
2016/03/11(金) 05:37:41.18ID:KiCPGGTyCの頃からそういう仕様だろ。ポインタを自由に扱える言語はそれでいいんだよ。
VBAみたいにポインタを隠匿する言語にはByRefの様な仕様が必要になるのであって、なんとなく参照渡しがあるわけではない。
0401デフォルトの名無しさん
2016/03/11(金) 08:09:55.21ID:7Z/AuMHW参照渡しが必要だからあるわけじゃなく、VBがそういう設計思想だっただけだ。
0402デフォルトの名無しさん
2016/03/11(金) 09:09:03.62ID:TWxKqqOQそれは言い過ぎ。参照渡しが必要な場面があるんだからさ。
0403デフォルトの名無しさん
2016/03/11(金) 11:24:01.36ID:nAypi/ek旧時代言語のVBAだとその辺はまだあまり洗練されてないから現実的にはByRefを使わざるを得ないけど
0404デフォルトの名無しさん
2016/03/11(金) 11:37:46.96ID:0Hu19p0zCollectionについて、犬にもわかるように優しい解説してるところない?
オタッキーな人が書いてる怪文書なものではなく。
0405デフォルトの名無しさん
2016/03/11(金) 12:31:48.96ID:We4YLNv1中途半端な知識を身につけて悩んでるような奴等は黙ってByRefにしときゃいいんだよ
お前らのためにVBがあるのだから
0406デフォルトの名無しさん
2016/03/11(金) 13:13:17.67ID:ME9cp217コレクションだから自分が集めたいものを集めたもの
名前の様な役割をするkeyやコレクション内での順番を指定するとものを取り出せる
0407デフォルトの名無しさん
2016/03/11(金) 14:17:24.30ID:TWxKqqOQ0408デフォルトの名無しさん
2016/03/11(金) 20:25:05.99ID:KiCPGGTy線形リストっていうのはですね、その利便性に対してパフォーマンスがほとんど落ちない事が特徴なんですねデュフッ
一つ一つの要素はデータ部とノード部にンフゥ分かれるんですがね、これによってですね、
評価と探索を再帰的に行う事が出来てコンパイラ言語においても美しくコードが書けるんですねポホゥ
そして線形リストというのは探索一つとっても特徴的なものでウヒッ追加中にソーティングと同じ効果を与える事も出来るんですね
おっと、その特徴があるからOSのタスク処理でも広く使われているわけで、こんな事は常識ですな、こりゃ失敬オッポゥ
このノード部というのは当然ですがポインタなわけで、これによって連続した領域を確保する必要がないというのも利便性を上げている要因の一つなんですねヒョホッ
逆に予め一定の連続した領域を確保しておくとですねンンッキャッシュヒットレシオを向上させられるのでさらにパフォーマンスが上がるんですね
しかもKeyの様なユニークIDのみで一次検索をしますと容量を抑えられますから場合によっては線形リスト全体がキャッシュに乗ってしまう可能性もあるんですねオホッ
まぁ今のCPUは古参の我が輩には信じられないくらいのキャッシュ容量がありますからンフフッあまり気にしなくてもコーディングできてしまうかもしれませんがねコポォ
0409デフォルトの名無しさん
2016/03/11(金) 20:46:11.49ID:1/lTJA2g0410デフォルトの名無しさん
2016/03/11(金) 22:27:37.87ID:FUuFvB4q> ポインタがなくて値渡しだけの言語なんていくらでもあるが。
具体的な言語名書いてみそ
0411デフォルトの名無しさん
2016/03/11(金) 22:28:40.82ID:9lXM9rzx線形リストが出たので探索の観点て書いてみる
ExcelやDBのような複数フィールドを持つデータ構造では、何らかのフィールドによって
順序化された状態で扱われ、任意のフィールドをキーにしたソートが頻繁に行われる
しかしデータが何万行ともなるとソート処理を毎回正直に行うのでは遅すぎて使い物にならない
そこでソートに使わるフィールドに対しインデックスを保持しておくことにする
インデックスを参照すれば、ソート要求で実際にソートせずに見かけ上ソートと同じ出力結果を
データ量に比例した定数時間O(n)で得ることが可能になる
ちなみに毎回ソートする場合は最短でもO(n log n)時間となる (O(n) < O(n log n))
データの追加や削除については、インデックスにより順序化されていれば平均O(log n)時間で済む
線形リストでは、ある順序に基づく追加や削除の場合O(n)時間が掛かってしまう (O(log n) < O(n))
探索においてはデータの順序以外にキー自体のチューニングが存在する
SmalltalkやLispでいうところのシンボル(インターンドシンボル)は、
同一の文字列が一意に管理されるデータ構造で、文字列同士の比較はアドレスの比較と等しく、
探索はその文字列をインターン化した時点で完了する
これを一般化したものが連想配列等で使われるハッシュ構造O(1)である
また、文字列をトライや基数木で管理すると、文字列を走査した時点で探索が完了し、
この仕組みはハッシュ構造よりも高速であり、圧縮アルゴリズム等でもよく使われる
0412デフォルトの名無しさん
2016/03/11(金) 22:40:00.71ID:9lXM9rzxちょうどLisp系なんかがそうだね
この場合VBAでいうオブジェクトの参照の値渡しに相当するから
それらを関数内から書き換える手段はいくらでもある
ちなみにLISPはマクロを使うと参照渡しっぽく記述できる
(あくまでそう見えるだけで実際に参照渡しを行っているわけではない)
値渡しといってもやりとりは全てアドレスかその領域に収まる即値だから効率も良い
GC前提の言語だとなんとか渡しみたいな指定のある言語は逆に少ない気がする
0413デフォルトの名無しさん
2016/03/12(土) 01:33:53.67ID:Vp+P3H450414デフォルトの名無しさん
2016/03/12(土) 01:55:29.41ID:L1DCwZtHどこがどうおかしいのか詳しく
0415デフォルトの名無しさん
2016/03/12(土) 02:57:20.50ID:4xL8NTYBCのことはよく知らないんだが、
テーブルジャンプが使えるのには恐れいったわ。
もっとも、もっと洗練された形のDelegateがある今
無いアドレスを指定してしまったりする怖さがあることを考えると、ちょっとなぁ。
0416デフォルトの名無しさん
2016/03/12(土) 07:23:24.06ID:DI01AjHI何かよく分からないけど、ExcelってシートにDB見たいにINDEX持てるんだ?
因みにキーから値を引っ張りたい場合、配列に設定してループで取ってくるのと
CollectionやDictionaryに設定して取ってくるのとどっちが早いんだろ。
0417デフォルトの名無しさん
2016/03/12(土) 10:09:17.55ID:ZuDRYyOf>>416
Keyが判明している限りはKeyで取ってくる方が早いよ。
一万要素あるDictionary型で実験した限りだとKeyで探る方は計測不能なくらい短い時間だったし。
0418デフォルトの名無しさん
2016/03/12(土) 10:14:29.27ID:+KV61A6eどうしてもExcelに拘るんならシートをテーブルに見立ててOLEDBでも使え
0419デフォルトの名無しさん
2016/03/12(土) 12:51:20.27ID:3TH7PHr+基本的にデータベースは作るものだ
その為にエクセルマクロはお前の前にある
0420デフォルトの名無しさん
2016/03/12(土) 12:53:33.97ID:LUcF5SRyエクセルvbaからアクセスにクエリ投げれるし
0421デフォルトの名無しさん
2016/03/12(土) 12:55:42.38ID:2d1xhU2z> ちょうどLisp系なんかがそうだね
Lisp なんて全てポインタみたいなもんなんだが w
> GC前提の言語だとなんとか渡しみたいな指定のある言語は逆に少ない気がする
GC と渡し方の指定は関係ないと思う
0422デフォルトの名無しさん
2016/03/12(土) 13:02:57.66ID:dvfrI9vN自分はODBCツールで配列変数に一括読み込みするパターンなんだが。
0423デフォルトの名無しさん
2016/03/12(土) 13:10:38.61ID:xmc3dh7UMSQUERY
0424デフォルトの名無しさん
2016/03/12(土) 13:22:38.49ID:dvfrI9vN0425デフォルトの名無しさん
2016/03/12(土) 14:02:40.99ID:ZuDRYyOf自由にツール使えればいいんだけど説得材料がないと申請がなかなか通らなくてな。VS高いし。
.NETとかで作ったDLLを参照設定にいれた場合って、他のPCで使おうと思った時はどうなんの?
エクセルファイル内に情報が含まれて、DLLを別個に送らなくても使えるなら説得材料になるんだけど。
OLEDBってADOとかだろ。できれば一つのエクセルファイルとして扱いたくてな。
複数ファイルに分かれていいならAccess掴んでアクセスファイル利用で解決するんだけど。
今はDictionary型を三つ使ったDBもどきなクラスを作ってやりとりして、
Terminate時にListObjectに保存してるんだけど、ListObjectって処理速度的にどうなんだろ。
まだ本格的な検証ができないせいでいまいち分からん。
0426デフォルトの名無しさん
2016/03/12(土) 14:08:42.91ID:1YcKG8upcreateobject("Shell.Application").windows.count
の値が1になるのですがこれはなんですか?
0427デフォルトの名無しさん
2016/03/12(土) 18:27:17.32ID:BsaNud7mcount=1 ならループしないで .Windows(0)でもいいとは思う
0428デフォルトの名無しさん
2016/03/12(土) 22:40:06.05ID:0aWKpcQqVBEの超高機能版みたいなエディタでお勧めのモノってありますか?
出来れば無料でお願いします。
プログラミング自体はVBAしか使えず、VBEでセコセコやってきたのですが、
職業プロウラマーの人は(言語までは聞かなかったのですが)、
もっと高機能なエディタを使っていそうです。
0429デフォルトの名無しさん
2016/03/12(土) 22:50:51.64ID:Vp+P3H45Vim for OfficeVBA K-edition
0430デフォルトの名無しさん
2016/03/12(土) 22:51:37.29ID:Vp+P3H45Vim for OfficeVBA N-edition
0431デフォルトの名無しさん
2016/03/12(土) 23:52:09.26ID:sJL6dJyL0432デフォルトの名無しさん
2016/03/13(日) 07:13:34.52ID:lSMOH+xfVB.NetやっててVBAのコード書こうとすると
そのインテリセンスの機能の低さに愕然とするもんな。
0433デフォルトの名無しさん
2016/03/13(日) 10:06:29.58ID:bEOCVA73other.member = Me.member
がエラーになるんだけど。
0434デフォルトの名無しさん
2016/03/13(日) 11:30:25.64ID:8iD0JTja他のインスタンスのメンバーもPrivateなんだろ? だったら触れないだろ。
0435デフォルトの名無しさん
2016/03/13(日) 11:42:50.26ID:bEOCVA73自クラスなのに?ダメなの?
やりたいことはcloneメソッドです。
自分と同じ内部データを持ったインスタンスをcloneで作って、一部のメンバだけ変えたい。
具体的には「プラスマイナスの符号だけ異なる別インスタンス」を作りたいんです。
「符号」は単純なプロパティなので、Public なProperty GetとProperty Setを作るつもり。
でもそれ以外な内部状態をあらわすものなので、外部からコントロールさせたくない。
cloneができればいいんだけど。
0436デフォルトの名無しさん
2016/03/13(日) 11:50:28.92ID:8iD0JTjaクラス内でClone作ってプロパティ越しに吐き出すようにすりゃいいだろ。
0437デフォルトの名無しさん
2016/03/13(日) 11:52:16.25ID:bEOCVA73set clone = New クラス
としたあとの
clone.member = Me.member
ができないので困ってるんですよ。
0438デフォルトの名無しさん
2016/03/13(日) 11:53:58.98ID:kQ6WFkk9というか関数と構造体でいいよ
お前はVBAに一体何を求めてるんだ?まさかVBAで多人数開発でもやるつもりか?
0439デフォルトの名無しさん
2016/03/13(日) 12:11:10.02ID:8iD0JTjaそのクラスが普段データを蓄積するために使うPublic関数から流し込んでやるんだよ。
それが嫌なら渡したいメンバー自体Publicでやれ。
0440428
2016/03/13(日) 12:12:20.68ID:18LsKVIr>>429
ご回答ありがとうございますが・・
そのままぐぐっても、それらしきものが見当たりません。
該当ソフトウェアの配布元のURLを教えていただけませんでしょうか。
>>431
もうちょっとエディタに気遣いが欲しいなというのが希望です。
コメント閉じたり、Whileやifが入れ子になっているときに
片方のWhileや、Ifにカーソル当てると、対応するWendや、Endifが強調表示されたり(プロが使うエディタには普通にあるそうです)
気遣いのあるエディタがあればなぁ・・と思い質問しました。
0441デフォルトの名無しさん
2016/03/13(日) 12:27:29.00ID:bEOCVA73うーん、どうやらPublicでやるしかなさそうですね。
Public関数から流し込むにはその履歴保持が必要になっちゃうからいったん諦め。。
そもそも自クラスのPrivateにアクセスできない仕様が意味不明だけど。
0442デフォルトの名無しさん
2016/03/13(日) 12:44:19.88ID:VQ49EEy6消えろ
0443デフォルトの名無しさん
2016/03/13(日) 13:05:39.36ID:LdX4fma4なんでや。真っ当な話だろ。
0444デフォルトの名無しさん
2016/03/13(日) 16:11:13.87ID:Wv1UMacaクラスのプロパティならFriendってアクセスレベルあるからそれで良いんじゃね
>自クラスのPrivateにアクセスできない仕様
Privateっていうのは、クラスに対してじゃなくて、インスタンスに対してだから
同じ人間でもその心の中は個人の秘密だろ
0445デフォルトの名無しさん
2016/03/13(日) 16:11:16.53ID:lSMOH+xfちょっと待て。
プロパティはPublicでメンバ変数はPrivateなんだろ?
普通それで出来ると思うんだが。
メンバ変数の型は何だ?それもインスタンスなら、SetterはLetの代わりにSet使わなければエラーになるし、
GetterでもSetterでも代入の祭には頭にSet付けていなければVBAだとエラーになるぞ。
構造体と言うかユーザ定義型ならまたちょっと違う問題が有るんだが今回は関係無さそうだな。
ひょっとしてそう言うオチなんじゃないのか?
0446デフォルトの名無しさん
2016/03/13(日) 16:25:05.49ID:lSMOH+xfPrivate指定したメンバ変数を持って来ようって話か。
そらダメだろな。
>>444
VBAのクラスってFriendのスコープ使えるんだ。
初めて知った。
0447デフォルトの名無しさん
2016/03/13(日) 16:33:32.91ID:bEOCVA73Friend?
ちょっと試してみるけど、VBAのFriendってどういう効果が生まれるのかググってもいまいちわからんね...
0448デフォルトの名無しさん
2016/03/13(日) 16:47:33.48ID:Wv1UMaca何故かフィールドには適用できないけどな
タイプライブラリに書きこまれないとか、どうも実行時にいろいろ小細工してそう
Friendって、1ブック内でしか処理しないのなら実はPublicと大差ないからあまり意味が無いけどな
0449デフォルトの名無しさん
2016/03/13(日) 16:54:13.20ID:bEOCVA73クラスメンバーのアクセス修飾子
https://hydrocul.github.io/wiki/programming_languages_diff/class/modifier.html
C++とJava ⇒ 同一クラスであれば他のインスタンスからもアクセス可能。
Scala のprivateは他のインスタンスからのアクセスが可能なものと不可能なものの2種類あるようだ
VBAの場合はC++やJavaと異なり、他インスタンスからのアクセスも禁止するすごく厳密な仕様なんだな。
0450デフォルトの名無しさん
2016/03/13(日) 21:34:12.60ID:kQ6WFkk9Rubyなんかもそうだけど、コンパイル時の静的バインディングのない言語で素直にprivateを実装するなら
単に「インスタンス外からは見えない」ということにして実装してしまうのが簡単なんだよ
レキシカルスコープは実装面倒だからな
0451デフォルトの名無しさん
2016/03/13(日) 21:54:51.85ID:Wv1UMaca静的かどうかにかかわらず、外部公開しないことにして実現してるのはその通りだろうけど
0452デフォルトの名無しさん
2016/03/13(日) 22:15:56.20ID:bEOCVA73まあできないことを愚痴ってもしゃあないんで、適当にヌルーしながらほげふがすることにします。
具体的には単にメソッド一覧に載せないことをもってprivateとするとか...
(swapマジックでなんとかならないかな・・・)
0453デフォルトの名無しさん
2016/03/14(月) 02:13:40.95ID:g7NdZw4d@カッコで囲まれた4つのランダムな数字(****)の数字部分を全て取り出し、変数に
格納したいです。なお、このカッコで囲まれた数字は複数存在し、ランダムに配置されています。
A別のページのソースでは、****pdpsという風に、後ろに特定の文字列
0454デフォルトの名無しさん
2016/03/14(月) 02:18:01.77ID:g7NdZw4dA上記のように、文字列 "pdps" が後ろに必ずついている状態で、これも同様に数字部分を
全て取り出したいのですが、どのようにすればよいでしょうか?
0455デフォルトの名無しさん
2016/03/14(月) 05:07:45.91ID:813TYYJm実際のパターンは正規表現のスレがあったはずだからそこで聞いてみてくれ
0456デフォルトの名無しさん
2016/03/14(月) 12:42:43.00ID:v6y0Q57V「arr」と「みかん」という2つの定義済み配列があります。
arr(0)の値には商品名が入っています。
この値(商品名)と同じ名前の配列変数(今回の場合だと「みかん」)に、金額や個数を加算するプログラムを作りたいです。
例えば以下の様な場合、
--------------------------------------------
'売れた商品
arr(0) = "みかん" '商品名
arr(1) = 3 '個数
arr(2) = 120 '金額
'加算処理
みかん(1) = みかん(1) + arr(1) 'みかんの売れた個数をみかん(1)に加算
みかん(2) = みかん(2) + arr(2) 'みかんの売れた金額をみかん(2)に加算
--------------------------------------------
arr(0)の値は「みかん」なので、「みかん」という配列変数に個数と金額を加算したいです。
商品は数百種類ある為、商品ごとにif文等で加算処理を書くのはキツいので、なんとか自動的に商品名と同じ変数名に加算処理をしたいです。
よろしくお願いします。
0457デフォルトの名無しさん
2016/03/14(月) 13:49:26.24ID:813TYYJm悪い事は言わないから設計見直せ
普通は変数名を動的に変えたりはしないから
0458デフォルトの名無しさん
2016/03/14(月) 14:23:36.82ID:HFOl9Mv1dictionary使えば?
0459デフォルトの名無しさん
2016/03/14(月) 15:08:43.45ID:18hvGh7eそこが自動化できたとしても配列変数を数百個用意するのは嫌ではないのか?
0460デフォルトの名無しさん
2016/03/14(月) 15:39:14.00ID:4ToVeZlp0461デフォルトの名無しさん
2016/03/14(月) 15:51:08.22ID:18hvGh7e0462デフォルトの名無しさん
2016/03/14(月) 18:00:36.27ID:nTKtwcvi糞設計をどうにかした方がいい
0463デフォルトの名無しさん
2016/03/14(月) 18:18:50.53ID:UwZkzskbSet ワークブック変数 = Workbooks.Openメソッド
こういう風にワークブック変数の中にメソッドが入ってて、それなのに以降その変数を
記述してもOpenメソッドが実行されるわけじゃないっていうのが意味わかりません。
Setっていうのは変数に値を代入するものとは違うんですか?
0464デフォルトの名無しさん
2016/03/14(月) 18:44:23.46ID:/tUil7vLここが違う
Workbooks.Open が返す Workbookオブジェクトが入る
0465デフォルトの名無しさん
2016/03/14(月) 19:03:29.59ID:UwZkzskbメソッドの結果(?)みたいなものが代入されるっていう仕組みなわけですか。
ありがとうございました。
0466デフォルトの名無しさん
2016/03/14(月) 19:10:49.29ID:DzDVqAybコレクション側(Workbooks)がOpenやAddでして生成されたインスタンス側((Workbook)がクローズって違和感あるよね
インスタンス(Workbook単体)をnewする手段が用意されてないから
コレクションによるオープンがコンストラクタ相当って考えればいいのんかな
COMの参照カウンタ式だとこれが自然な実装なのかな
それともこれも歴史的経緯ってやつなのかな
0467デフォルトの名無しさん
2016/03/14(月) 19:26:14.79ID:18hvGh7e0468デフォルトの名無しさん
2016/03/14(月) 19:43:39.57ID:3u8ko9yDそおゆうときは ゆーざーていぎがたへんすう をつかえって たなかのじーちゃん がゆってた
http://officetanaka.net/excel/vba/variable/12.htm
0469デフォルトの名無しさん
2016/03/14(月) 19:48:15.00ID:hCKIGns+触らないと感覚が鈍るというか忘れちゃうというかそんな感じです。
定期的に何かしらは作って触っていたいとおもうんですが今は特に必要なものがありません。
そんなとき皆さんはどうしてますか?
0470デフォルトの名無しさん
2016/03/14(月) 19:52:17.33ID:18hvGh7e不可能と思われていることにトライする
0471デフォルトの名無しさん
2016/03/14(月) 19:59:59.98ID:4ToVeZlpWorkbooksに属さないWorkbookが単独で存在するのは非常に不自然な状態であるから
そういう状態が起こりえないようにWorkbook単体のNewを禁止するのはごくごく自然な実装
0472デフォルトの名無しさん
2016/03/14(月) 20:28:00.62ID:FBZnFsGZディクショナリーでキー使え
0473デフォルトの名無しさん
2016/03/14(月) 20:51:52.99ID:huhKpIQ6Dim りんご とやっても実際に"りんご"という名前の変数が作られるわけじゃないから仕方ないんだよな。
ということが分かっていてもなお、変数名が取得したい。特にエラー吐く時に。
0474デフォルトの名無しさん
2016/03/14(月) 20:59:12.04ID:83gsBVGiそうだなぁ。
自分に興味のあることでちょっと無理と思えるものを作るかな。
で、作り終わったらまたちょっと無理と思えるものを作っていく。
例えばだけど、こんな手順で。
ライフゲーム → テトリス → ぷよぷよ → パズドラ → 彼女 → 子供
因みに作ったものは使える部分を部品化しておくと後に繋がるよね。
0475デフォルトの名無しさん
2016/03/14(月) 21:09:16.21ID:83gsBVGiエラーだけならエラーオブジェクトのSourceプロパティから取得出来なかったっけ?
あれってVB6だけだったかなぁ。
0476デフォルトの名無しさん
2016/03/14(月) 22:44:54.62ID:hCKIGns+>>474
ありがとうございます。
難しいものにトライします。
0477デフォルトの名無しさん
2016/03/14(月) 23:01:42.72ID:TLENZEbQ> Dim りんご とやっても実際に"りんご"という名前の変数が作られるわけじゃないから仕方ないんだよな。
え?
普通に作られるけど?
0478デフォルトの名無しさん
2016/03/14(月) 23:13:05.86ID:QTE/dgcgDebug.Printでイミディエイトウィンドウにログを出してみたのですが
処理が重くなるとログ自体も停止してしまいます
0479デフォルトの名無しさん
2016/03/14(月) 23:23:56.96ID:FcVGtuk4フォームが無いものだったらステータスバーにでも表示させたら?
0480デフォルトの名無しさん
2016/03/15(火) 00:02:36.47ID:DdL3juM3イミディエイトはせいぜい200行くらいしか表示できない。
0481デフォルトの名無しさん
2016/03/15(火) 04:01:06.97ID:sOE53YFmあれどんなエラー起きても大概がVBProjectだからなぁ。
Help見ても「自前で関知できないような場合にメモ帳として使え」的なことが書かれてるから、
基本的にあのSourceプロパティって使えないんだよな。
エラーが起きた瞬間に上書きされるせいで事前に書いておくってこともできないから、
Sourceプロパティから戻そうとすると、一度スルーしておいて書き込んで返すとかしかなくなる。
自前でエラーログを取るもの作ってなんとかしてるけど、変数名と変数を列挙する必要があってソースが汚い。
0482デフォルトの名無しさん
2016/03/15(火) 05:25:41.86ID:H3qJTEJrテキスト出力
0483デフォルトの名無しさん
2016/03/15(火) 10:38:37.05ID:Q/3qqT0J0484デフォルトの名無しさん
2016/03/15(火) 10:53:55.56ID:N1dckU7v0485デフォルトの名無しさん
2016/03/15(火) 12:27:05.24ID:aLiUTHoD0486デフォルトの名無しさん
2016/03/15(火) 15:09:44.47ID:DdL3juM30487デフォルトの名無しさん
2016/03/15(火) 19:49:30.29ID:sOE53YFmTextStreamとか解放しないとロックかかるタイプのは異常終了しても閉じられるので助かる。
0488デフォルトの名無しさん
2016/03/15(火) 20:07:50.67ID:DdL3juM30489デフォルトの名無しさん
2016/03/15(火) 20:15:18.00ID:sOE53YFm0490デフォルトの名無しさん
2016/03/15(火) 21:29:31.88ID:vbavnT06ドット二個、空白、空白、空白だけで以降の複数行が全く読まれずに終わるんですけど原因わかる人いませんかね、、?
今そのcsvが手元にないのでテスト出来ないんですけど、、、
0491デフォルトの名無しさん
2016/03/15(火) 21:36:41.43ID:Qi5mg9MnEndステートってなんだよ
Endステートトメント(End命令)でプログラム終わらせたらTerminate走らんぞ
変数がNothingされるのは、正確にはその変数の寿命が尽きたときな
End Sub(やFunciton)で直接処理されてるわけではない
>>488
エクセル閉じようとした時もTerminate走ってないっぽいな
VBA的にはEnd扱いだと思われる
0492デフォルトの名無しさん
2016/03/15(火) 21:46:58.60ID:Qi5mg9MnWSHはスレ違いな気もしないでもないけど
>以降の複数行が全く読まれずに終わる
意味不明だな
そもそもopentextfileはファイルオープンするだけで読み込みなんてしないし
readlineは1行しか読み込まないんだが
まあどうせ文字コードが違うってオチじゃないのかね
0493デフォルトの名無しさん
2016/03/15(火) 22:14:19.86ID:vbavnT06お?スレチマジか
やっぱり文字コードかな?いやこちらもどうぐぐればいいかわからない意味不明現象で困ってる
https://gallery.technet.microsoft.com/scriptcenter/fe4b8006-08b9-4d6a-a8f2-716c07ca3e52
単純なこれが出来ない。atendofstreamが止まらないor最後まで行かず止まる
0494デフォルトの名無しさん
2016/03/16(水) 00:31:56.59ID:P1US5avIまともに扱えるオブジェクトがMeだけじゃんかよ。
0495デフォルトの名無しさん
2016/03/16(水) 01:35:36.47ID:k6ukW3Eaえ?どういうこと?
0496デフォルトの名無しさん
2016/03/16(水) 02:53:26.43ID:lGeuWDGVまともなやつはオレだけじゃんかよ。
0497デフォルトの名無しさん
2016/03/16(水) 03:04:24.75ID:OZ8BJTSu0498デフォルトの名無しさん
2016/03/16(水) 03:46:41.74ID:4BDrWnpICSV には、様々な形式があって、
" などの特殊文字のエスケープの仕方が色々あるので、
データ中に、ちょっとでも想定外の文字が入ると誤動作する
TSV タブ区切りの形式の方が、誤動作しにくい
また、文字コードが異なっても誤動作する
WSH・VBScriptのスレで聞けば?
0499デフォルトの名無しさん
2016/03/16(水) 06:37:26.60ID:P1US5avINewしたオブジェクトを返すメソッドを書こうとするとまともなカプセル化を保てない。
言語間の仕様の違いとかの問題じゃない。カプセル化がまともにできないのを「仕様」と呼ぶんじゃなければね。
0500デフォルトの名無しさん
2016/03/16(水) 07:20:15.86ID:gYeAB//s何を今更。>>433の話題が出てきた時点で気付かないと。
0501デフォルトの名無しさん
2016/03/16(水) 08:57:34.13ID:dewCsMpxフォルダで見たときそれらを表示させることで見ることができることからわかりますが
それらの情報をFileSystemObjectのプロパティかなにかからVBAで取得するにはどうしますか?
0502デフォルトの名無しさん
2016/03/16(水) 09:47:56.17ID:P1US5avIまさに>>433のことを言ってるんだよ。今更とかじゃなくてちゃんと広めるほうがいいだろう。
0503デフォルトの名無しさん
2016/03/16(水) 12:19:00.42ID:Yo6ZYJ/B0504デフォルトの名無しさん
2016/03/16(水) 12:22:13.55ID:P1US5avI0505デフォルトの名無しさん
2016/03/16(水) 12:26:04.62ID:P1US5avI0506デフォルトの名無しさん
2016/03/16(水) 12:40:07.09ID:dewCsMpx0507デフォルトの名無しさん
2016/03/16(水) 13:23:01.13ID:SDJrVpb1プライベートなフィールドに自分以外のインスタンスがアクセスできないことが、どう
>Newしたオブジェクトを返すメソッドを書こうとするとまともなカプセル化を保てない
ことになるのか解説してくれ
むしろ同一クラスでも他インスタンスからさわれない方が厳密にカプセル化出来てると思うけど
Newしたオブジェクトを返すメソッドに限定してるのも俺には理解できん
0508デフォルトの名無しさん
2016/03/16(水) 13:37:07.26ID:P1US5avI秘密というものは「誰と共有するか」が重要。自分だけしかアクセスできないんじゃ大したことはできない。
Newしたオブジェクトは「自分」ではないが、そこに必要な属性を設定して返したいのに触れないんじゃどうしようもない。
そうすると余計なPublicメソッドを実装するはめになる。
秘密を仲間内で共有する方が結果的にカプセル性は向上する。
0509デフォルトの名無しさん
2016/03/16(水) 13:49:23.00ID:wUBmweecFSOじゃ情報とれないかもよ
下のコードでアクティブシートに 情報が表示されるので このコードを元に作ればいいかと
Sub TEST()
Set shel = CreateObject("Shell.Application")
Set Folder = shel.Namespace("D:\動画")
Set TARGET = Folder.ParseName("ヌルポ.mp4")
Row = 1
For I = 0 To 9999
name = Folder.GetDetailsOf(Nothing, I)
Value = Folder.GetDetailsOf(TARGET, I)
If name <> "" Then
Cells(Row, 1) = I
Cells(Row, 2) = name
Cells(Row, 3) = Value
Row = Row + 1
End If
Next
End Sub
0510デフォルトの名無しさん
2016/03/16(水) 14:19:22.18ID:SDJrVpb1秘密を覗ける・変更できる時点でカプセル化できてないし
まあ、現実的には出来た方が楽な点が多いってのは事実だが
0511デフォルトの名無しさん
2016/03/16(水) 14:32:08.38ID:P1US5avI秘密は「仲間内で共有するもの」じゃないの?
0512デフォルトの名無しさん
2016/03/16(水) 17:38:57.76ID:FUX0WtD6そういうのは全部publicでも良いような気がするけども
0513デフォルトの名無しさん
2016/03/16(水) 19:41:25.63ID:OZ8BJTSuそもそもVBAはフロントエンドを作る為のものだから、そんな隠匿が必要なバックエンドのやりとりは守備範囲が違う。
JavaScriptでOS作るくらい守備範囲が違う。
0514デフォルトの名無しさん
2016/03/16(水) 19:49:42.09ID:iNKCnWDyだまって全部publicにしとけばいーんだよ
0515デフォルトの名無しさん
2016/03/16(水) 20:00:21.07ID:tD6FjLEIなんだ、そのアホ理論は w
その理論なら普通のアプリケーション開発言語は全部 public でいいってことになるぞ
0516デフォルトの名無しさん
2016/03/16(水) 20:00:31.98ID:08Q65Pyeどうもです。原因は文字コードでした、、
文字コード変わると出力される文字がガチャガチャになるだけだと思ってましたが
まさか先頭行でeofやスクリプトがテキストの終わりを見つけられなくなり無限ループにハマるのは知らなかったので中々勉強になりました。。
0517デフォルトの名無しさん
2016/03/16(水) 20:02:34.40ID:XCH1ZELVもちろんそれもある。
だがその前にVBAのPrivateのスコープが糞なら>>449が言ってるみたいにC++やJavaのPrivateが同クラスから生成したとは言え、
見えてしまうのもまた糞なんだということに気付かない
このC++使いが糞なんだと思うよ。
確かにVBAは古い言語だし、
複数人で一つのシステム作るようなことは
少ないから然程問題でも無いかも知れないけど、
大きなシステムを作ることを前提とした言語では、
この問題は大きいのかもしれないね。
取り敢えず、>>494には「ブーメラン乙」と言っておこうかな。
0518デフォルトの名無しさん
2016/03/16(水) 20:06:33.63ID:P1US5avI0519デフォルトの名無しさん
2016/03/16(水) 20:11:31.74ID:08Q65Pyeだってオブジェクトやプロパティの秘匿性なんてコンピューターからしたら何の利点もなく
人間がただ自縛プレイしてるだけとも言えるちゃ言えるはずですがな。
理論的には
0520デフォルトの名無しさん
2016/03/16(水) 20:12:59.38ID:iNKCnWDy聞きかじりの浅はかな知識でプログラミング議論ごっこをしたいならマ板にいってやれ
あっちならお前に付き合ってくれる暇人も大勢いるだろ
0521デフォルトの名無しさん
2016/03/16(水) 20:20:08.01ID:P1US5avI何度も言うように秘密というのものは内輪で共有し、外に秘匿することで価値が出るんだよ。
実際自分のクラスでさえPrivateが触れないんじゃclone作るのに支障があるし、逆にPublicにしたらユーザーコードからさえ見えてしまう。
0522デフォルトの名無しさん
2016/03/16(水) 20:23:09.45ID:OZ8BJTSuPrivateはインテリセンスで一覧にドバッと表示されるのを抑制する程度の意味しかない。
だからカプセル化という発想そのものがVBAでは無意味。.NETでやるべき。
0523デフォルトの名無しさん
2016/03/16(水) 20:41:47.06ID:raSxUhkM無難だな
0524デフォルトの名無しさん
2016/03/16(水) 20:45:48.53ID:XCH1ZELV君の持論はどうでもいい。
内輪って何を持ってして言ってるんだ?
同じクラスで生成したものに覗かれたくないとき
どうすんだよ?
同じクラスの奴だって宗教とか性癖とか知れたら個人情報漏洩だろ?
君だって家族に自分が隠しているエロ動画が入ったフォルダ位置知られたくないだろ?
VBAは逆にPrivateが他所から見えないから
他所に見せるとなればPublic指定するしかないと
なればそれはそれで不味いけどな。
一人の世界でちまちま作ることが多いから問題になりにくいだけで。
0525デフォルトの名無しさん
2016/03/16(水) 20:50:14.86ID:055k0p4jオブジェクト指向を理解してないなら無理しなくていいんだよ
0526デフォルトの名無しさん
2016/03/16(水) 20:51:33.31ID:XCH1ZELVでもそう言うことだろよ
0527デフォルトの名無しさん
2016/03/16(水) 20:54:42.71ID:055k0p4jどういうこと?
例え話はいいから具体的に同じクラスの他のインスタンスのprivateメンバにアクセスできて困る状況を教えて
0528デフォルトの名無しさん
2016/03/16(水) 20:56:55.51ID:X1wUkCGN0529デフォルトの名無しさん
2016/03/16(水) 20:59:09.97ID:P1US5avI0530デフォルトの名無しさん
2016/03/16(水) 21:02:32.65ID:08Q65Pyescripting.filesystemobjectとかos依存のフレームワーク的なモノも関わってくるからそれじゃ"印象"として構造体と呼ぶに相応しくないから
オブジェクトと呼んで、オブジェクトと呼ぶからついでにクラスと呼ばせてるとか想像
もちろんこれはオブジェクト指向のオブジェクトとはかけ離れた内容という
0531デフォルトの名無しさん
2016/03/16(水) 21:06:57.13ID:XCH1ZELV君の家族で個人の情報を扱うクラスがあって、
例えばどんなカテゴリの商品を普段買っているかを取得するメソッドがあったとしよう。
Privateな変数に、買った商品名からカテゴリ分けするために、一時的に買った商品名が格納されるとしよう。
他のインスタンスから幼女がどうのとか見えちゃうんだぜ?
0532デフォルトの名無しさん
2016/03/16(水) 21:13:07.14ID:055k0p4j何の問題もない。なぜなら同じクラスだから。
その個人情報を扱うクラスを作ったのが俺なら、
そのクラスの実装の詳細はもともと全て俺の手中にある。インスタンスが違おうが関係ない。
そもそも根本的なところを勘違いしてるみたいだが、Privateの目的はクラスの内部状態を隠蔽することで
クラスの実装変更の影響が外に及ばないようにすることにある。
0533デフォルトの名無しさん
2016/03/16(水) 21:18:00.41ID:XCH1ZELVふと気になったんだがC++やJavaの場合、インターフェースを使ったものでも互いに内部が見えてしまうのか?
0534デフォルトの名無しさん
2016/03/16(水) 21:25:40.64ID:OZ8BJTSuこれにいくら疑問を投げかけようが、同一クラス間でのPrivateの共有がいかに便利かを説こうが無意味だから別スレでやれ。
0535デフォルトの名無しさん
2016/03/16(水) 21:26:56.16ID:08Q65Pye0536デフォルトの名無しさん
2016/03/16(水) 21:28:01.91ID:P1US5avIしかし言語を擁護するような発言は理解しがたい。一緒にVBAをこき下ろせばいいのに。
0537デフォルトの名無しさん
2016/03/16(水) 21:30:53.11ID:XCH1ZELV全くその通りだな。
まだ「こうすると代用が効く」と言う話ならともかく、
ただ重箱の隅を突いて「VBAのクラスは糞だ!C++SUGEEE」って言ってる奴から
何か学べることが有るのかと言われると疑問ではあるな。
どっちかといえば、またC++かと思うだけだ。
0538デフォルトの名無しさん
2016/03/16(水) 21:31:17.58ID:055k0p4jそんなことはない
継承ができない以外はだいたい一般的なクラスベースのオブジェクト指向言語のクラスと同じだよ
念のため言っておくが俺は同じクラスの別インスタンスのPrivateを触れないなんて大した問題ではないし
VBAでカプセル化なんてどうでもいいと思っている方だ
0539デフォルトの名無しさん
2016/03/16(水) 21:41:43.36ID:P1US5avI重箱の隅?
実際に大いに困ってるから言ってんじゃねーか。
それに代用案はもともとこっちが知りたかったことだ。
意に反して「そんなの必要ない」の声が出てきたからどっかにいっちゃったけど。
0540デフォルトの名無しさん
2016/03/16(水) 21:44:27.31ID:XCH1ZELV何をそんなに大いに困ってるんだ?
そもそもVBAでPublic指定にしてそんなに困ることって何よ?
何かVBAにやらせること間違ってるんじゃないの?
0541デフォルトの名無しさん
2016/03/16(水) 21:50:26.51ID:X1wUkCGNネーミングルールでいいじゃん
名前にウンコチンコ付いてたら触ろうとは思わないでしょ
0542デフォルトの名無しさん
2016/03/16(水) 21:51:08.11ID:08Q65Pye例えば今流行りのswiftはクラスじゃなく構造体でプロパティとメソッド作って、それぞれpublicとprivate設定出来て
それでいてクラスやオブジェクトはまた別に"オブジェクト指向でプログラミング出来る"という線引きを持って
それぞれswift内で存在してるんだけどvbsにはそういうしっかりとした区別無いでしょう?
swift内で構造体と呼べるものがvbsではクラスオブジェクトと呼べてるし
0543デフォルトの名無しさん
2016/03/16(水) 21:58:31.99ID:XCH1ZELV俺はswift知らないけれど
あれやってる人はみんないいって言うよね。
ただMac買ってまでやりたいとは思えない。
0544デフォルトの名無しさん
2016/03/16(水) 22:05:01.48ID:P1US5avIオブジェクト(Me)の属性のうち1ヶ所だけを変えたオブジェクトをNewして返すメソッドを作りたい。
それ以外の属性としてはそれなりの過程を経て組み立てられたDouble行列なんかを複数持っている。
内部的な整合性の面ではデリケートに扱わざるを獲ない感じ。
変えたい属性は単なるLong値なのでPublicでもいい。
だからclone作りたい。
0545デフォルトの名無しさん
2016/03/16(水) 22:10:28.91ID:6prA8Vtkあきらめろ
0546デフォルトの名無しさん
2016/03/16(水) 22:11:32.97ID:XCH1ZELVうむ。あきらめろ。
0547デフォルトの名無しさん
2016/03/16(水) 22:19:16.12ID:iNKCnWDyいや勝手に作れよw
ここでクダクダ暴れてる暇があればとっくに出来てるだろそんなもん
0548デフォルトの名無しさん
2016/03/16(水) 22:35:11.31ID:XCH1ZELV0549デフォルトの名無しさん
2016/03/16(水) 22:42:24.68ID:P1US5avIえっえっそんなことができるの?
0550デフォルトの名無しさん
2016/03/16(水) 22:58:36.65ID:XCH1ZELVて言うかObject指向知ってるんだよね?
今までC++ではシングルトンパターンとか使ったことないの?
0551デフォルトの名無しさん
2016/03/16(水) 23:06:13.93ID:055k0p4j同じクラスの別のインスタンスのPrivateフィールドにアクセスする必要があります
以下ループ
0552デフォルトの名無しさん
2016/03/16(水) 23:06:49.26ID:XCH1ZELV0553デフォルトの名無しさん
2016/03/16(水) 23:10:47.78ID:XCH1ZELV別のインスタンスと言うより生成した自身のプロパティだろ?
何でループする必要があるんだ?
0554デフォルトの名無しさん
2016/03/16(水) 23:16:17.22ID:P1US5avIクローンだよ。自分そのものじゃないよ。
0555デフォルトの名無しさん
2016/03/16(水) 23:21:42.03ID:XCH1ZELVごめん、何をもってクローンと言ってるのか分からない。
自分自身の内部で生成するということは当然格納されているアドレスも違うし
インスタンスとしても別物だし、プロパティに設定すれば当然別の値として設定される訳だけど、
何をもってクローンと言ってるの?
0556デフォルトの名無しさん
2016/03/16(水) 23:23:04.93ID:P1US5avIhttp://java.keicode.com/lang/clone.php
フィールドの値まるごとコピーだけど別の実体。
クローンに何か操作しても元のオブジェクトにはもう影響は及ばない。
0557デフォルトの名無しさん
2016/03/16(水) 23:25:52.96ID:XCH1ZELVその認識があってなんで自分そのものって話が出て来るの?
0558デフォルトの名無しさん
2016/03/16(水) 23:27:00.84ID:08Q65Pyeパブリックメソッドで自身をオプション付きで生成するしか無いんじゃないですかね?その内容なら
どの道言語仕様としてやり方が極端に少ないからそんなのしか思い付かない、、
0559デフォルトの名無しさん
2016/03/16(水) 23:28:40.04ID:P1US5avIFunction clone() As myClass
Set clone = New myClass
' ここ
End Function
「ここ」でどうやってMeの属性をcloneにコピるかだけど、
Me ≠ clone だからclone のPrivate属性には触れないよ。
0560デフォルトの名無しさん
2016/03/16(水) 23:32:36.78ID:XCH1ZELVそのメソッドはMyClassに書かれているという認識でいい?
0561デフォルトの名無しさん
2016/03/16(水) 23:38:58.03ID:iNKCnWDy0562デフォルトの名無しさん
2016/03/16(水) 23:44:04.84ID:P1US5avIそうだよ
>>561
一貫してPrivateを主張している。別にまだ諦めているわけではない。自分ももくは誰かが裏技を思い付く可能性はまだある。
0563デフォルトの名無しさん
2016/03/16(水) 23:47:04.33ID:iNKCnWDyねーよwとっととその無駄なこだわりは捨てろw
0564デフォルトの名無しさん
2016/03/16(水) 23:49:04.03ID:P1US5avIお前最初っから下らないレスしかしてないじゃん。
ゴミ。
0565デフォルトの名無しさん
2016/03/16(水) 23:58:10.46ID:XCH1ZELVPrivate m_Hoge As Long
Public property Let Hoge(ByVal value As Long)
m_Hoge = value
End Ploperty
Public property Get Hoge() As Long
Hoge = m_Hoge
End Property
Public Function GetClone() As MyClass
Dim clone as New MyClass
Clone.Hoge = 1
Set Getclone = clone
End function
俺が言いたいのは、Public指定でもこれで要件が満たせるから何を大いに困ることがあるのかと言うことなんだけど。
このクラスを生成したとき、Hogeには0が入っているがGetCloneで取得したときには1が入る。
他も自分自身から取得して、自分の中で生成したインスタンスのプロパティに設定すればそのままの値となるわな。
別にPublic指定で、今回の件について困るとは思えない。
0566デフォルトの名無しさん
2016/03/17(木) 00:01:06.36ID:SViIjcu4下らないのはお前だわw
最初から素直に聞いてればいくらでもいい方法教えてやるっつーのに
マジで損してるぞお前
0567デフォルトの名無しさん
2016/03/17(木) 00:01:21.08ID:t5Tl0ItQ0568デフォルトの名無しさん
2016/03/17(木) 00:10:21.08ID:8qNHX2VhそのProperty Let Hoge が Public だから全くの外部からでも(でたらめな)属性をセット可能となっている。
>>544で書いたように、そんなことはしたくない。
あなたは「オブジェクト指向が〜」と言ってたからそれはわかるよね。
0569デフォルトの名無しさん
2016/03/17(木) 00:19:58.82ID:XFm+eMc1privateだpublicだなんてのはオブジェクト指向とはみじんも関係ねーわw
生半可な知識で意地はってないで素直に頭下げろって恥ずかしい
0570デフォルトの名無しさん
2016/03/17(木) 00:20:34.85ID:t5Tl0ItQ論点がずれていると思うんだが。
したい、したくないと
大いに困ると言うのはまた別の話だ。
で、結局のところ何に大いに困ってるのか。
Privateのスコープが同クラスで他のインスタンスには効かなくても別段困らない例を
一つ挙げてしまっただけな訳だが。
0571デフォルトの名無しさん
2016/03/17(木) 00:30:45.73ID:t5Tl0ItQついでを言うと、ではこの新たに内部で生成されたインスタンスが返却されるまでにどうやってHogeにデタラメな値を入れるのか。
そもそも内部で大元のインスタンスがPrivate宣言で作成されているものだから、外部から変えようがないと思うんだが。
ちょっと、生成されてから返却されるまでに外部からHogeにデタラメな値を設定するコードを書いてみてくれないか?
0572デフォルトの名無しさん
2016/03/17(木) 00:34:09.94ID:Opt/41woその辺どうしたい?エラー値が来たらフィルタリングして規定値で我慢とか???
0573デフォルトの名無しさん
2016/03/17(木) 01:33:22.63ID:8qNHX2Vhメソッド内部で行った計算に従って内部の行列値が推移するんであって、計算結果を外からセットする訳じゃない。エラー値が来たらなんて状況はそもそもない。
値が推移する際、ある不変条件を保ちながら変化していくんだけど、値を丸ごとコピーするクローンならその不変条件を守れる。
0574デフォルトの名無しさん
2016/03/17(木) 03:28:42.76ID:O2I/XSsCただしマクロアドイン用に別ファイル(*.xlam)が必要になるけど
■ Excelアドイン(例: test.xlam → ★例としてVBAProject名をMyClassPrjとかにする)
'****** MyClassクラス(★MyClassクラスのInstancingプロパティを “PublicNotCreatable” に変更)
Private m_Hoge As Long
Friend Property Let Hoge(ByVal value As Long)
m_Hoge = value
End Property
Friend Property Get Hoge() As Long
Hoge = m_Hoge
End Property
Public Function GetClone() As MyClass
Dim clone As New MyClass
clone.Hoge = 1
Set GetClone = clone
End Function
'****** 標準モジュール(★ PublicNotCreatable のクラスは、外部の参照元からNewが出来ないため用意する)
Public Function CreateMyClass() As MyClass
Set CreateMyClass= New MyClass
End Function
■ 参照元のExcelブック本体(例: Book1.xlsm → ★参照設定で上記のアドインファイル(VBAProject:MyClassPrj)を追加)
Sub main()
Dim obj As MyClass
Dim obj2 As MyClass
Set obj = CreateMyClass
Set obj2 = obj.GetClone
End Sub
0575デフォルトの名無しさん
2016/03/17(木) 05:05:01.31ID:Bi20tHSa>その個人情報を扱うクラスを作ったのが俺なら、
>そのクラスの実装の詳細はもともと全て俺の手中にある
つまりそのクラスの実装を知ってるから、クラスの内部状態を変えれても問題ないんだと
この主張ならPrivateかPublicかなんてどうでもいいと言ってるのと同じですが
自分が実装をしってるかどうかで好き勝手やっていいとか
カプセル化全否定の主張
0576デフォルトの名無しさん
2016/03/17(木) 05:23:46.48ID:Bi20tHSa>それ以外の属性としてはそれなりの過程を経て組み立てられたDouble行列なんかを複数持っている。
>内部的な整合性の面ではデリケートに扱わざるを獲ない感じ。
それなりの過程は公開された方法で設定されてるんだろ
それで設定出来ない理由がない、つまりCloneできない理由が無い
デリケートに扱えば良いだけじゃないか。それが「内部的な」整合性にどうかかわるのか知らんが
つまりお前の主張は、邪魔くさいからカプセル化原則崩して横入させろって話
これが出来れば楽な面が多いのは否定しないけど
それを言語の欠陥見たいに言われてもなぁ
ちなみにVBA的な解決方法はFriend使う事だってとっくに指摘されてる筈だけど
0577デフォルトの名無しさん
2016/03/17(木) 06:14:34.52ID:idn05aqO意味不明すぎる
クラス作成者がクラスの内部状態を制御できなくて誰が制御するんだよw
0578デフォルトの名無しさん
2016/03/17(木) 06:42:52.62ID:8qNHX2Vh変遷の過程を全部記録してろと?
まず初期状態、それからメソッドが呼び出された順番やそこで渡された引数、ことによったら時刻まで必要になるんだぞ。
それに「とっくに指摘」って言うけどFriendのことは3時間前に出てきた話のようだが?
0579デフォルトの名無しさん
2016/03/17(木) 06:45:23.39ID:8qNHX2Vh0580デフォルトの名無しさん
2016/03/17(木) 06:47:31.75ID:XFm+eMc1> つまりお前の主張は、邪魔くさいからカプセル化原則崩して横入させろって話
それで全然構わんのだが
カプセル化されたデータを弄りたい事なんていくらでもあるし
publicだからカプセル化されていないという事でもない
そのデータをどう扱うかは全てプログラマー次第
いいかげんに覚えたての言葉をわめきちらすのやめろ
0581デフォルトの名無しさん
2016/03/17(木) 06:51:36.93ID:8qNHX2Vh同一クラス内でPrivateに触れるのを「カプセル化を崩す」と思うのは間違っている。
むしろカプセル化を推進している。Friendだってそう。
はっきり言語の欠陥なんだよ。
0582デフォルトの名無しさん
2016/03/17(木) 06:53:58.47ID:8qNHX2VhPublicにするとそのデータを触るののが「他のプログラマーやユーザー」になる訳だが?
0583デフォルトの名無しさん
2016/03/17(木) 07:03:08.23ID:idn05aqOという静的な責任範囲であって、実行時のオブジェクトの振る舞いとは直行する考え方なんだけど
>>575はその辺が理解できてないみたいだな
0584デフォルトの名無しさん
2016/03/17(木) 07:04:24.95ID:JRt4GWBY0585デフォルトの名無しさん
2016/03/17(木) 07:44:51.97ID:XFm+eMc1触れるから触らなければいけないという事にはならない
publicでも触りたくならないデザインにして規約を設ければ済む話
アクセス修飾子なんてのはその為の補助機能であり、なくてもなんら問題はない
0586デフォルトの名無しさん
2016/03/17(木) 07:44:53.23ID:8qNHX2VhB「この変なメソッド何?使うなってコメントされてるけど」
A「使うと整合性か保証できなくなる。内部的な処理でだけ使う。」
B「じゃあprivateにしとけよ」
A「でもcloneを実装するには...」
B「ちょっとは工夫しろよ。publicである以上使っちゃうぞ?」
0587デフォルトの名無しさん
2016/03/17(木) 07:46:48.69ID:8qNHX2Vhそんな主張は全く認められない
0588デフォルトの名無しさん
2016/03/17(木) 07:47:10.13ID:XFm+eMc1直後にそのバカレスはずかしいなw
0589デフォルトの名無しさん
2016/03/17(木) 08:18:33.52ID:yET/+Bsj> カプセル化されたデータを弄りたい事なんていくらでもあるし
基地害?
0590デフォルトの名無しさん
2016/03/17(木) 08:39:42.53ID:jLSJwXmm馬鹿は口を噤んでるといいよ。三流プログラマ君w
0591デフォルトの名無しさん
2016/03/17(木) 08:50:05.99ID:hi6BrK3gそんな人がVBAを必死に擁護する意味がわからん
公式にはVB.NETでJavaやC++と同様の仕様に変更された時点でどちらが正しいか議論の余地はもうないんだが
まさか意識高い系VB6専という希少種なのか
0592デフォルトの名無しさん
2016/03/17(木) 08:59:16.40ID:LceOLJ+f現実に起きそうな会話を書いたつもりなので、反論があるなら具体的にどうぞ。
0593デフォルトの名無しさん
2016/03/17(木) 09:05:13.11ID:LceOLJ+f>>591
全くその通りだよね。
disるべきところはちゃんとdisっとかないと、何が正しいのか混沌としてしまう。
>>575は基地害だが主張の一貫性はあるかもwww
0594デフォルトの名無しさん
2016/03/17(木) 09:08:03.91ID:jLSJwXmm馬鹿は口を閉じてるといいよ。
マ板に行け。消えろ。
0595デフォルトの名無しさん
2016/03/17(木) 09:20:59.65ID:FvTUx9u3個人情報を完璧に保護するには
個人情報を持たない事
つまり個人情報を利用しない事
セキュリティや原理を厳密に守ることで利便性が低下する
0596デフォルトの名無しさん
2016/03/17(木) 09:38:55.36ID:LceOLJ+fお前精神に障害でもあるんじゃないのか?本当に心配になってくるレベルだぞ。
0597デフォルトの名無しさん
2016/03/17(木) 09:44:46.04ID:WKWxISAvいや、VBAでその点が駄目なのはみんな分かっているとは思うが、
正直、だから?としか言えない。
VBAで多人数開発でもするつもりなの?
元々VB6を引き継いでるようなもので、
特に改善されなくても小さいアプリケーション内での
開発が多いから然程問題視されなかったというところだろ?
VBAにやらせようとすること間違ってるんじゃないの?
0598デフォルトの名無しさん
2016/03/17(木) 09:46:47.72ID:jLSJwXmmお前の精神に問題があるのはよくわかるよww間抜けが
0599デフォルトの名無しさん
2016/03/17(木) 09:56:38.69ID:iopJbUiO相談お願いします
@あいう
Aかきく
Bさしす
Dなにぬ
・丸数字と文字列は同じセルに入っています
・丸数字は@はじまり、多くてIくらいまで
・文字列に規則性はありません
このとき、C抜けを検知させたいのですが、どうすればよいでしょうか
(BかD(か両方)のセルに色付け、など)
0600デフォルトの名無しさん
2016/03/17(木) 09:59:37.75ID:gLZk6EBmんだったらなんらか印を付ける…ぐらいしかないでしょ。
0601デフォルトの名無しさん
2016/03/17(木) 10:25:05.53ID:DbQdeQVj接頭文字の@〜IをASCIIコードに変換して並びに抜けがないか確認すればいいんじゃないの?
0602デフォルトの名無しさん
2016/03/17(木) 10:34:09.62ID:0LueaVXu0603デフォルトの名無しさん
2016/03/17(木) 11:03:29.78ID:wB2trTuTこれでどうかな?
Sub TEST()
STR1 = "@ABCDEFGHI" '並び順
START_ROW = 1 'チェックする最初の行
For I = 0 To Len(STR1) - 1
With Cells(START_ROW + I, "A")
If .Value = "" Then
Exit For
ElseIf Left(.Value, 1) <> Mid(STR1, I + 1, 1) Then
.Interior.Color = vbRed
Exit For
End If
End With
Next
End Sub
0604デフォルトの名無しさん
2016/03/17(木) 19:07:42.03ID:Bi20tHSa>>444でとっくに言われてるだろ
0605デフォルトの名無しさん
2016/03/17(木) 20:39:20.57ID:+sywC49lWebページの情報を取り出すツールを作っているのですが
もしそのWebページがフレームを使ってるとうまくいきません。
具体的には
CreateObject("Shell.Application").Windowsのコレクションのうち
該当するページをみつけてそれを
Dim IE as Object
のIE変数に入れます。
そして
IE.document.framesコレクションのうち
該当するフレームをみつけてそれを
Dim Page as Object
のPage変数に入れます。
そしてPage.Documentのなかを検索しようとしているのですが
その中身がうまく見れないのです。
なにか間違っていることありましたか?
0606デフォルトの名無しさん
2016/03/17(木) 20:56:11.73ID:XFm+eMc10607デフォルトの名無しさん
2016/03/17(木) 22:59:13.25ID:kck3yFH+c♯でブラウザコントロール使った時の話で参考にならんかもしれないけど、
フレームが複数あるとdocumentcompleteが複数発生してちゃんと最後まで待たないとフレームの中身とれないんだよね。
IE.busyのステータス見て完全に読まれるのを待てばとれるかも。
0608デフォルトの名無しさん
2016/03/18(金) 00:06:39.79ID:gzqbq4hZ>>300です。どうもありがとうございます。お礼が遅くなってすみませんでした。
その後いろいろ試したら、以下のことがわかりました。
結論的には、無事に目的は達成されました。
・同じことを、いくつかのPCで試すと、LinkedCellが記入できるものとやはり消えてしまうものとがありました。
結局、消えてしまう゛んいんはわかりませんでした。
・>>317の通りにやってみたら、LinkedCellこそできないものの、スライドバーを
Excel表罫状に置くことができ、「その名前.value」で、現在のスライドバーの値を
取り込むことができ、目的を達成しました。
どうもありがとうございました。
0609デフォルトの名無しさん
2016/03/18(金) 01:13:26.33ID:jEcicrol丸囲みの数字は、MSのCP932の環境依存文字だよ
他の環境では、使えない文字だから、使わない方がいい
0610デフォルトの名無しさん
2016/03/18(金) 06:14:33.44ID:0x7A7Hbzそれここでする話かな
unicodeにも普通にあるしファイル名にもできる
VBAで見知らぬ環境のこと気にしても仕方ないでしょ
0611デフォルトの名無しさん
2016/03/18(金) 07:09:47.90ID:5tpKuuIb質問に関係ない俺ルールなんていらねーんだよ
与えられた質問に答えてやれアホ
0612デフォルトの名無しさん
2016/03/18(金) 08:17:22.27ID:w3IkMPkd「C++こそ至高ッ!!」
「C++を使っている我ららこそ最高ッ!!」
「だからお前らVBAをdisれッ」
って、畑違いのところで荒らしまくってたから分からないでもないけどな。
0613デフォルトの名無しさん
2016/03/18(金) 09:00:55.60ID:FVNcSrUO0614デフォルトの名無しさん
2016/03/18(金) 12:31:09.56ID:aCc0i0GX質問すら出来ずに暴れてる奴はウザいから叩かせて頂く
0615デフォルトの名無しさん
2016/03/18(金) 13:00:28.28ID:FVNcSrUO0616デフォルトの名無しさん
2016/03/18(金) 13:07:07.98ID:/sEv9MLSうだうだと、Publicにすれば解決する問題を頑なにPrivateでなんとかしようとするオカシナ老人も
叩いてくれ。ここで議論なんて邪魔ですからね。
0617デフォルトの名無しさん
2016/03/18(金) 18:26:18.33ID:Q3YFIWD/> Privateでなんとかしようとするオカシナ老人
Public にすれば無問題とか言ってるアホもついでに逝ってくれ
0618デフォルトの名無しさん
2016/03/18(金) 19:34:40.07ID:VVAqKgVCプwww おまえみたいなアホの事を言うんだよww
0619デフォルトの名無しさん
2016/03/18(金) 19:54:28.22ID:4tYt5GvE自覚はあるんだなw
0620デフォルトの名無しさん
2016/03/18(金) 20:10:07.16ID:OhlAheOJ0621デフォルトの名無しさん
2016/03/18(金) 20:56:54.26ID:ftR+bG10イミディエイトをあきらめてテキストファイルに吐き出してしまえば楽になれる。
0622デフォルトの名無しさん
2016/03/18(金) 21:57:00.28ID:FVNcSrUOいやそれは...
ログとかだったらそれでいいけど、イミディエイトをシェルがわりにしてるスタイルなので。
0623デフォルトの名無しさん
2016/03/18(金) 21:59:48.59ID:FVNcSrUOPrivateかpublicかがオブジェクト指向と関係あるんだってさ〜。理由は責任範囲に関わってくるからなんだってさ〜。
意味不明だよね〜
0624デフォルトの名無しさん
2016/03/18(金) 23:51:46.04ID:oMMRZOpRByRef As Variant で受け取ったとき、VarType とかで区別できると思ったのですが同じ値でした。
0625デフォルトの名無しさん
2016/03/19(土) 00:17:01.16ID:ZkF236zX凄い適当なことを言うと
Redimして落ちれば固定長
0626デフォルトの名無しさん
2016/03/19(土) 01:31:21.44ID:ZkF236zXB「この変なメソッド何?使うなってコメントされてるけど」
A「人が作ったファイル勝手に触ってんじゃねーよ」
C「C++最高ォーッ!!」
A、B「死ね」
0627デフォルトの名無しさん
2016/03/19(土) 08:37:05.36ID:WiXahnNx本当はBさんが使うっていう想定の下で作るのはダメなはずだけど、
やっぱみんな普通にマクロファイル渡すよな。
0628デフォルトの名無しさん
2016/03/19(土) 10:10:22.17ID:IAjs3zZu0629デフォルトの名無しさん
2016/03/19(土) 10:20:10.28ID:H80uBE1CB「この変なメソッド何?使うなってコメントされてるけど」
A「気にするな。Bookごともってっていいぞ。」
B「ではお言葉に甘えて・・・」
>>628「.cls を公開するのに、本来PrivateであるべきものをPublicでいい、なんてあり得ない。」
B「いや、Book単位で公開するし」
>>628「C++最高ォーッ!!フォーッ!!」
A、B「おまわりさん、この人です」
0630デフォルトの名無しさん
2016/03/19(土) 10:28:20.58ID:8xzNOdhjじゃ、そうすれば?
ここで話題にしてる事はそういう事じゃないってのがわかってないようだが?ww
一部のアホが仕様上出来ない事をPrivatePrivateいって喚いてる事について語って
るのに、何詭弁持ち出してんの?ww
0631デフォルトの名無しさん
2016/03/19(土) 10:45:20.86ID:IAjs3zZuたいていは変なメソッドがあるなと思った時点で離れていくんじゃないか?
0632デフォルトの名無しさん
2016/03/19(土) 11:06:06.35ID:KdJH+mheなら離れて行けばいい。
実際にこれが大きなシステム開発用であれば問題だろう。だからVB6はVB.Netになった。
VBAはその用途からそこまで厳密になるより旧態依然として残った方が都合良かったんだろう。
でなければVariantなんて危険な型、真っ先に消されているだろうしな。
というわけでその辺が納得行かないならとっとと
離れて巣に帰ってくれないか?
どう騒いだところで仕様が変わる訳でもなし、使って無理にストレス溜めることもないだろう。
0633デフォルトの名無しさん
2016/03/19(土) 11:09:05.00ID:8xzNOdhj今も昔も殆ど進化していないVBAはあくまでも個人で且つ、小規模な
ファイル内で動かすスクリプト言語だからね。
大規模開発(笑)だし、いわゆる現代のプログラミングのいろはで語る
ようなものでもないし。
0634デフォルトの名無しさん
2016/03/19(土) 11:14:18.24ID:IAjs3zZuなんでおれに言うんだよwww
0635デフォルトの名無しさん
2016/03/19(土) 12:04:34.49ID:WiXahnNxExcelにそういうのは無いかな?
CurrentDBやThisWorkbookで指定しているマクロをうっかり移植してエラー起こすことがよくあるけど、
Accessファイルの場合はConnection通せば移植してもそのまま動くので、
これでExcelにも同じようなのがあれば楽だと思ったんだけど。
0636デフォルトの名無しさん
2016/03/19(土) 12:22:17.36ID:aVqCTfNkクラスにコンストラクタ持てないとか他にも中途半端な部分はある
開発された時代背景考えればいつまでも引っ張るような話題じゃないだろ
と言うことでMSは早く C# for Application もサポートしてくれ
0637デフォルトの名無しさん
2016/03/19(土) 12:42:54.92ID:YkVYTtmN値を設定出来ないと騒いでるバカが話の元だからな
言語仕様上許されているからと言ってそんな暴挙をはたらいたら
ブライベートだろうとカプセル化の意味が台無しになると言うことが分かってない
0638デフォルトの名無しさん
2016/03/19(土) 12:57:30.81ID:2Yqb1TGj>>625氏の言ってるのが正解だと思う。事前に知ることは無理じゃないか。
>>637
言語仕様上は「許されてない」はずですよ?
0639デフォルトの名無しさん
2016/03/19(土) 13:07:08.84ID:WiXahnNxもしかしてオペコードのレベルでカプセル化とかいう状態が保たれるとでも思ってんのかね。
0640デフォルトの名無しさん
2016/03/19(土) 13:27:19.53ID:gM0wAlBb俺ら「あっ(察し)」
0641デフォルトの名無しさん
2016/03/19(土) 14:17:03.57ID:aVqCTfNk> 言語仕様上は「許されてない」はずですよ?
仮定の話でしょ
日本語読めればわかると思うが...
>>640
言いたいことがあるならはっきり書けば?
0642デフォルトの名無しさん
2016/03/19(土) 14:28:21.77ID:gM0wAlBbいや、たぶん「コンストラクタが持てない」って
「コンストラクタに引数を渡すことができない」って
言うつもりで言っちゃったんだろうなって
察し易い文章だなって思ったんだ。
0643デフォルトの名無しさん
2016/03/19(土) 14:41:35.82ID:H80uBE1C>>641は突っ込まなければとんだ赤っ恥かかなくて済んだのに
世の中知らない方がいいことってあるよね
0644デフォルトの名無しさん
2016/03/19(土) 14:56:31.53ID:IAjs3zZu「言語仕様上許されているからと言って」を
「言語仕様上仮に許されたとしても」と解釈しろってか?
それこそ日本語として無理があるんじゃないか、
0645デフォルトの名無しさん
2016/03/19(土) 14:56:47.93ID:8xzNOdhjプw
0646デフォルトの名無しさん
2016/03/19(土) 15:17:46.23ID:S6HwApMW平たく言うとしない方がマシな方法しか思いつかなかった
そいつがやりたい事はその時皆にしなくていいとかボカボカ言われてたけど俺はとてもよく理解出来るんだが無念
0647デフォルトの名無しさん
2016/03/19(土) 15:22:54.25ID:H80uBE1C模索は悪いことじゃないと思うけど・・・
何故にVBS?Excel持ってないからってこと?
0648デフォルトの名無しさん
2016/03/19(土) 16:15:31.54ID:2Yqb1TGjちょっと聞きたい
0649デフォルトの名無しさん
2016/03/19(土) 16:24:29.27ID:aVqCTfNkああ、そうだったな
うっかりしてたわ
まあ、はっきり「VBA もコンストラクタ位持てるわ、持てねーのはコンストラクタの引数だろ」って書いてくれればいい
主旨にはたいして影響しないし
>>643, >>645
そんなことにしか突っ込めないのかよ w
0650デフォルトの名無しさん
2016/03/19(土) 16:27:43.33ID:aVqCTfNk日本語不得意なの?
> そんな暴挙をはたらいたら
仮定に基づく行動だろ
0651デフォルトの名無しさん
2016/03/19(土) 16:34:48.64ID:H80uBE1Cいやいや
人聞きの悪いこというなよ
勝手に突っ込んで自爆して
恥かいたのはそっちだから
0652デフォルトの名無しさん
2016/03/19(土) 16:47:37.97ID:m2k0cx68みんな生暖かい目で見守ってますよ〜( ´ ▽ ` )ノ
0653デフォルトの名無しさん
2016/03/19(土) 16:57:05.21ID:M34OaI99あまりにも条件が多くなってきたことと2年ほど前から書いたコードだから統一がされてないのとで
超スパゲッティコードになってしまいました。
合計1万行、モジュール20、クラス4、ボタン10個、ユーザーフォーム2ぐらいあるんですが
こういうのはやっぱり新しく書き直した方がいいんでしょうか…?
またこのように自分で作ったプログラムを1から書き直したことがある方、気をつけることがあれば教えていただけますでしょうか?
0654デフォルトの名無しさん
2016/03/19(土) 17:03:27.42ID:IAjs3zZu「許されているからと言って」は仮定で使う表現じゃない。「許されてるとしても」等とすべきだ。
また、同一クラスの中で他のインスタンスのプライベートメンバに値を設定できたってカプセル化の破壊とは言えない。
VBAでは単にエラーになるってだけ。「カプセル化の破壊だから」禁止してるなんて言える根拠どこにもないだろ。
0655デフォルトの名無しさん
2016/03/19(土) 17:57:04.45ID:EIXPsoT/プw
0656デフォルトの名無しさん
2016/03/19(土) 18:52:00.41ID:SmPDnaAH>>654が言ってることは正しいんだろうけど結構どうでもいい
だってVBAですもの
0657デフォルトの名無しさん
2016/03/19(土) 18:56:00.65ID:S6HwApMW0658デフォルトの名無しさん
2016/03/19(土) 19:16:22.90ID:EIXPsoT/だいたい、今更な話だわな。
VBAって基本進化が止まってる今どきの言語じゃねぇのに、他の言語の
話もちこんであーだこーだ
0659デフォルトの名無しさん
2016/03/19(土) 19:26:06.76ID:RudxjvbX安かったからvbsのポケットリファレンス買って読んで
おおclassとかまであるんかとか思ったが最後まで読んであれ?classあるのに色々足りてない、???ってなったべ
0660デフォルトの名無しさん
2016/03/19(土) 19:44:00.07ID:Wf9uNcUK0661デフォルトの名無しさん
2016/03/19(土) 19:52:16.09ID:WiXahnNx0662デフォルトの名無しさん
2016/03/19(土) 19:59:45.13ID:/sT7mkad最初は「あの手法を何とかVBAで再現出来ないか」って頑張るんだけど
その内その考えを持ち出すと色々破綻することに気がつくんだよな
例えば継承なんか本来 Is a 関係にあるものを我慢してインターフェースで何とかしても
じゃインターフェース自体の継承はどうするのとか
他にもちょっと上に出ていたシングルトンも
わざわざ標準モジュールとクラス組み合わせて再現させるならもう
標準モジュールに初期化関数で良いんじゃね?とか
で、その内そもそもVBAとは何かというところまで
考えを戻すようになって
VBAにはVBAのお作法があることに気がつくと
「そんなふうに考えてた時期が俺にもありました」ってなるんだよな
0663デフォルトの名無しさん
2016/03/19(土) 20:01:09.63ID:S6HwApMWというか言語側がクラスという単語の使い方が悪いな
class宣言をobject宣言にでもすりゃこんな面倒な会話起きなかった
0664デフォルトの名無しさん
2016/03/19(土) 20:07:23.76ID:WiXahnNx確かにC++なんかのClassと同じ物と考えると壁にぶち当たるんだよな。
機能と呼び方が言語ごとに違うのが当たり前だった時代の産物だしな。
0665デフォルトの名無しさん
2016/03/19(土) 20:08:36.07ID:kZqOhklDvbaでやれないこと、やるべきではないこと
をまとめあげれば幸せになれるな
0666デフォルトの名無しさん
2016/03/19(土) 20:20:16.80ID:Vh/tRJ7p0667デフォルトの名無しさん
2016/03/19(土) 20:38:21.14ID:2Yqb1TGjそうなってないと叩かれる、みたいな。
0668デフォルトの名無しさん
2016/03/19(土) 20:42:38.47ID:ZHLdlz8Sそういう行為はリファクタリングと呼ばれてるからググれ
>>654
お前の揚げ足取りレベルの日本語指導なんていらんが
>プライベートメンバに値を設定できたってカプセル化の破壊とは言えない。
その言語で許されてるならば何をやっても考え方の原則に反してないと?
それともプライベートメンバはカプセル化で隠蔽されるべき情報ではないと?
0669デフォルトの名無しさん
2016/03/19(土) 20:52:56.49ID:IAjs3zZuそりゃプライベートメンバはカプセル化で隠蔽されるべき情報にきまってるが、ここで問題に成ってるのは隠蔽する「範囲」の話だ。
お前さんの考えは「同一インスタンス限り」なのか?
俺の考えは「同一クラス限り」だ。
0670デフォルトの名無しさん
2016/03/19(土) 21:11:42.05ID:ZHLdlz8Sカプセル化の原則はあらゆる「範囲」で適用される考え方なわけだが
お前の考えは少なくとも、インスタンスのカプセル化原則を破壊してるわけだが
お前がインスタンスはカプセル化しなくても問題ないとか言う主張をするのなら勝手にすればいいけど
カプセル化の意味が台無しになると言う主張は何も間違ってない
0671デフォルトの名無しさん
2016/03/19(土) 21:16:09.93ID:Vh/tRJ7pなんだよ同一クラス限りのカプセル化ってw
そんなカプセル化ねえよ
0672デフォルトの名無しさん
2016/03/19(土) 21:20:36.69ID:WiXahnNx0673デフォルトの名無しさん
2016/03/19(土) 21:22:07.11ID:IAjs3zZuここで言ってるのは「privateがどこまで見えているか」のはずだ。
それ以外に一般化するな。
0674デフォルトの名無しさん
2016/03/19(土) 21:23:28.43ID:7CKqxOgF「誰が」「誰に対して」カプセル化しているのかということだよ
同一クラスの別インスタンス間のカプセル化というのはつまり「俺が」「俺自身に対して」カプセル化しているわけだ
何の意味があると思う?
俺自身が信用できないならイスタンスメソッドからMeのフィールドへのアクセスだって信用できないだろう
0675デフォルトの名無しさん
2016/03/19(土) 21:25:24.43ID:Vh/tRJ7p見えるから破壊してもいいとは限らんのだぜ
ちなみに俺はネギがあればなんでも食えるぜ
0676デフォルトの名無しさん
2016/03/19(土) 21:26:37.35ID:Vh/tRJ7p0677デフォルトの名無しさん
2016/03/19(土) 21:26:49.29ID:IAjs3zZuじゃあ同一インスタンス内でも隠蔽するべきだなwww
0678デフォルトの名無しさん
2016/03/19(土) 21:28:43.75ID:Vh/tRJ7p0679デフォルトの名無しさん
2016/03/19(土) 21:30:36.13ID:qOC5h4tk同一インスタンスでも隠蔽するべきだよ
0680デフォルトの名無しさん
2016/03/19(土) 21:31:24.29ID:IAjs3zZu俺は言ってないぞ。
0681デフォルトの名無しさん
2016/03/19(土) 21:36:06.02ID:2Yqb1TGj個人のプライバシーみたいなものを想像してるんじゃあるまいか。
0682デフォルトの名無しさん
2016/03/19(土) 21:37:47.20ID:Vh/tRJ7p単なる屁理屈なのかガチでバカなのかこっちが混乱するやつだなお前
面倒だから真面目に話をするけど
別インスタンスからの値の設定はカプセル化されたオブジェクトの破壊だ
カプセル化されたオブジェクト内の値の設定は常に自分自身によってなされるべき物
例え言語仕様で許されているC++やJavaであってもだ
それが作法というもの
0683デフォルトの名無しさん
2016/03/19(土) 21:37:59.14ID:aVqCTfNk外部に公開する必要のない情報は公開しない
スコープは可能な限り狭める
書き換える必要のない情報は読み出し専用にする
etc...
ある程度の規模のソフトを組んで痛い目にあった奴は普通にやってる
言語がサポートしてりゃ利用するし、サポートしてなきゃコメントなりドキュメント等の運用でやるってだけのこと
0684デフォルトの名無しさん
2016/03/19(土) 21:40:01.61ID:/sT7mkadもう一つ言うと他の言語がクラスのスコープが責任範囲だから
同一クラスのインスタンスのみがスコープの有効範囲になるという説明は片手落ち
0685デフォルトの名無しさん
2016/03/19(土) 21:40:24.81ID:aVqCTfNk> 人聞きの悪いこというなよ
そうは言っても事実でしょ? w
0686デフォルトの名無しさん
2016/03/19(土) 21:42:27.21ID:M34OaI99ありがとうございます。リファクタリングですね、
・外部的な振る舞いは変えない
・内部構造を洗練していく
・作業は一歩ずつ進める
・安全に変更を行う
非常にためになる言葉ですね。開発当時の自分をぶん殴りたい気分です。
内部構造の洗練はとても難しいですね。
でも調べてくうちに
excel標準機能にあるワークシート関数やら書式設定やらはコードに実装しない
if文やselect caseがあるとその分だけテストケース増やさなければならない=複雑になる
行数が多い=それだけ読まなければいけない=他の関数との凝集度が悪くなる
この辺は痛感しました…書き直してきます
0687デフォルトの名無しさん
2016/03/19(土) 21:43:18.44ID:ZHLdlz8Sカプセル化の考え方では
プログラマが信用できるならカプセル内の情報にアクセスして良いとはならないのだよ
>イスタンスメソッドからMeのフィールドへのアクセスだって信用できないだろう
それはカプセル内の話
インスタンス外から、公開された方法によらずにインスタンスの情報をいじるのは
あきらかにカプセルの境界をこえてアクセスしてるから問題なんだが
0688デフォルトの名無しさん
2016/03/19(土) 21:43:49.44ID:H80uBE1Cえ?何が?
突っ込んで自爆したこと?
0689デフォルトの名無しさん
2016/03/19(土) 21:45:58.17ID:7CKqxOgFいいからどういうケースでどう問題になるのか具体的にとうぞ
0690デフォルトの名無しさん
2016/03/19(土) 21:46:24.44ID:H80uBE1Cあ、単一責任の原則も一読しておいた方がいいよ。
0691デフォルトの名無しさん
2016/03/19(土) 21:53:40.84ID:H80uBE1Cまぁそうだな。
あれだとPrivate指定したプロパティやメソッドが
他のクラスからも場合によって見れる説明がつかないもんな。
0692デフォルトの名無しさん
2016/03/19(土) 21:56:45.03ID:IAjs3zZu「値の設定は常に自分自身によってなされるもの」
そうだね。
いきなりother.member = val なんてやっちゃいかんよね。
でも自分で設定するためメソッド作ったとしてどうする?privateメソッドも他のインスタンスからは呼べないんだぜ?
0693デフォルトの名無しさん
2016/03/19(土) 22:01:48.03ID:ZHLdlz8Sカプセル化が何のためにあるかわかる?
カプセルの境界を越えてアクセスするってことは、まさにそのオブジェクトを破壊できるって事だぞ
お前は自分が信頼できるからやらないって主張してるけど
俺は境界を越えてアクセスする事が便利な場面がある事を否定してないし
それをやったから問題だと言ってるわけじゃない
反則技を使おうとして、これは反則じゃないって主張してるから
いやそれは反則だよって指摘しただけ
0694デフォルトの名無しさん
2016/03/19(土) 22:03:39.78ID:IAjs3zZuそりゃパブリックインタフェースだけでは必要十分なら何も悩むところはない。
それだけでは無理なとき、「同一クラス内なら公開する」のと「パブリックインタフェース化する」のどっちを選ぶかって話。
0695デフォルトの名無しさん
2016/03/19(土) 22:05:51.59ID:IAjs3zZu「公開する」ってのはデータをそのまま晒せって意味じゃないよ。privateメソッドを呼べるようにするってのを含んだ概念だよ。
0696デフォルトの名無しさん
2016/03/19(土) 22:07:57.73ID:Vh/tRJ7pそれはvbaでならどうするか?という質問だな。
どうしてもアクセス制御したいならリードオンリーのプロパティを公開すればいい
俺なら面倒だら全部publicでやるが
0697デフォルトの名無しさん
2016/03/19(土) 22:37:09.48ID:IAjs3zZuきみもプライベートな「データ」メンバに直接アクセスすることの是非しか問題にしてないみたいだね。
0698デフォルトの名無しさん
2016/03/19(土) 22:44:45.63ID:ZHLdlz8Sカプセル化の原則の話をしただけで、べつにデータに限った話をした覚えはないが
0699デフォルトの名無しさん
2016/03/19(土) 22:48:23.81ID:H80uBE1C見つけたよ。VBAで同じクラスのインスタンスに
Privateなプロパティ設定する方法。
ちとまどろっこしいけどな。
>>684がヒントになったな。
0700デフォルトの名無しさん
2016/03/19(土) 22:51:33.67ID:ZHLdlz8S外部への依存なしに実現できるならぜひやり方晒してくれ
0701デフォルトの名無しさん
2016/03/19(土) 22:52:24.17ID:IAjs3zZuそうか。でもオブジェクトの破壊に繋がるようなことを言ってたよね。
値の設定はまあそのオブジェクトにメソッドに任せるさ。そうすりゃ自分自身の整合性は担保してくれるだろう。
でもその操作自体がクラス外には無関係なときはprivateにしたいのさ。
0702デフォルトの名無しさん
2016/03/19(土) 23:01:28.59ID:IAjs3zZuデータ破壊の可能性はあるもののクラス内で閉じていて、呼び出し側で変なことはできないので一応妥協範囲。
0703デフォルトの名無しさん
2016/03/19(土) 23:16:32.96ID:H80uBE1C正しいかどうかは微妙なところだが、一応理に適っているとは思う。
任意の標準モジュール
Sub Hoge()
Dim cls1 As IClass
Set cls1 = New TargetClass
Dim cls2 As IClass
Set cls2 = New TargetClass
Set cls2 = cls1.GetClone()
Call MsgBox(CStr(cls2.TaegetValue))
End Sub
クラスモジュール:IClass
Option Explicit
Property Get TaegetValue() As Long
End Property
Property Let TaegetValue(ByVal value As Long)
End Property
Public Function GetClone() As IClass
End Function
0704デフォルトの名無しさん
2016/03/19(土) 23:17:40.92ID:H80uBE1COption Explicit
Implements IClass
Private m_value As Long
Private Property Get IClass_TaegetValue() As Long
IClass_TaegetValue = m_value
End Property
Private Property Let IClass_TaegetValue(ByVal value As Long)
m_value = value
End Property
Public Function IClass_GetClone() As IClass
Dim cls As IClass
Set cls = New TargetClass
cls.TaegetValue = 1
Set IClass_GetClone = cls
End Function
0705デフォルトの名無しさん
2016/03/19(土) 23:19:16.95ID:H80uBE1Cだがインターフェースを介在させない場合Privateは隠蔽されるので、
通常通りにNewして見えてしまうことはない。
0706デフォルトの名無しさん
2016/03/19(土) 23:43:25.08ID:ZHLdlz8SIClassとして宣言して、TargetClassとしてNewして下さいってルールを徹底させる必要があるわけだが
それならこのメソッドは使うなってルールを徹底させるのと大差ない気がする
0707デフォルトの名無しさん
2016/03/19(土) 23:50:00.02ID:H80uBE1Cちょっとまて。
TaegetClassとして宣言すれば
Privateで設定されているプロパティが隠蔽されるって言ってるんだけど。
内容、読み取れてる?
0708デフォルトの名無しさん
2016/03/19(土) 23:53:46.48ID:IAjs3zZuSub Hoge() の中のは違うってことか?
0709デフォルトの名無しさん
2016/03/19(土) 23:59:43.58ID:H80uBE1C一度インターフェースを噛ませるという手順を踏むことで
Privateのプロパティにもアクセス出来るようにしている例を挙げているんであって
Privateで指定されているプロパティだから通常のNewでは隠蔽される。
0710デフォルトの名無しさん
2016/03/19(土) 23:59:48.64ID:ZHLdlz8Sああ、通常使いたいプロパティはTaegetClassに別途設定しろって事か
0711デフォルトの名無しさん
2016/03/20(日) 00:06:44.02ID:qgldDaIbもしこの方法でよいということであれば、
利用価値が有るかどうかはともかく、
旧VBやVBAの方が細やかなスコープを設定出来るということになる。
良かったな。
0712デフォルトの名無しさん
2016/03/20(日) 00:27:59.83ID:GdGOCP5U0713デフォルトの名無しさん
2016/03/20(日) 00:29:29.84ID:TtjNwfG20714デフォルトの名無しさん
2016/03/20(日) 00:36:40.94ID:TtjNwfG2IClassだから触れるだろ
当然IClassにキャストすればどこからでもガバガバ
0715デフォルトの名無しさん
2016/03/20(日) 00:39:03.27ID:qgldDaIb動作確認済み。
>>713
そう。だけど、逆に同じクラス、違うインスタンスのPrivateなものを隠蔽することが出来ない。
するべきなのかどうかは置いておいてね。
0716デフォルトの名無しさん
2016/03/20(日) 00:43:23.34ID:qgldDaIbわざわざキャストさせるということは触ること前提だからそうなるね。
でもそれを言ったら.Netも同じ。
0717デフォルトの名無しさん
2016/03/20(日) 08:44:46.30ID:TtjNwfG2元々他インスタンスのPrivateにアクセスできるから不要だけど
0718デフォルトの名無しさん
2016/03/20(日) 09:00:59.71ID:qgldDaIbそうか、インナークラスの概念か。迂闊だったわ。
ま、今回はインターフェースだけど同じだな。
0719デフォルトの名無しさん
2016/03/20(日) 09:31:47.19ID:qgldDaIbカプセル化に足り得ることなのかどうかということと、
本当に同一クラスで違うインスタンスのPrivate宣言されたものが
隠蔽されるスコープが必要なのかということの2点か。
どうだろな。
0720デフォルトの名無しさん
2016/03/20(日) 11:02:49.50ID:jHsQHzI20721デフォルトの名無しさん
2016/03/20(日) 13:05:40.51ID:8HbjV0ulですね。
0722デフォルトの名無しさん
2016/03/20(日) 13:45:04.69ID:f66aE8wcそこまで出来れば十分だろ
>>720の言うとおりこれ以上
マヌケなC++erに付き合う必要もないだろう
0723デフォルトの名無しさん
2016/03/20(日) 14:07:56.82ID:pfOQftnX0724デフォルトの名無しさん
2016/03/20(日) 17:17:01.45ID:J2K9MuYg好きにすればいいよ。
むしろ業務の方が要件を満たしてればそれ以上のカプセル化とか考えなくていいかも。
公開するんであればまた別だろう。
>>723
投稿できなからやらない
0725デフォルトの名無しさん
2016/03/21(月) 00:12:02.37ID:K4l5ex/e0726デフォルトの名無しさん
2016/03/21(月) 04:03:07.99ID:lZ+XcLv2処理によって1秒かからないものもあれば
1日以上かかるものもあるけど
何でそんなことを聞いているのかな?
0727デフォルトの名無しさん
2016/03/21(月) 04:44:20.97ID:4m5Wnyvmな?
0728デフォルトの名無しさん
2016/03/21(月) 05:50:50.72ID:3ccLXt3S0729デフォルトの名無しさん
2016/03/21(月) 09:02:53.74ID:TTV7yA8/いいね。
前にちらっと見たことがあるかも。
0730デフォルトの名無しさん
2016/03/21(月) 09:26:02.08ID:Xz9aFOH3何かに取り憑かれているのでしょうか?
終いにはグループで開発とかVBAでそんな寝言を言い始める人が出てくる始末で。
0731デフォルトの名無しさん
2016/03/21(月) 09:51:04.04ID:hQVzfahhその話はVBAもその気になればPrivateでアクセス出来るという話で落ち着いたから
PublicでもPrivateでも好きな方を選べ
0732デフォルトの名無しさん
2016/03/21(月) 10:10:14.63ID:IyXG4J1C> 今日も、アンチPublic使用教の信者が蠢いていますね。
今日 Public ガーって言ってるのは君しかいないが? w
0733デフォルトの名無しさん
2016/03/21(月) 10:44:59.64ID:hQVzfahh最初に使われてるパソコンが
X68000っぽいな
0734デフォルトの名無しさん
2016/03/21(月) 10:49:06.77ID:TTV7yA8/誰かに不適切なPublicを指摘されたトラウマとかな?
0735デフォルトの名無しさん
2016/03/21(月) 11:39:14.58ID:x3vAjPCr0736デフォルトの名無しさん
2016/03/21(月) 12:31:30.37ID:9OwgQuju? がついてるから質問なんだろうけど 質問の意図が分らない
Static がどんなものか 分らないんだったら↓
http://officetanaka.net/excel/vba/variable/10.htm
0737デフォルトの名無しさん
2016/03/21(月) 12:51:59.24ID:S6t6aFh8「また、Endステートメントを実行すると、やはり静的変数はクリアされます。」
これは知らなかったな。
0738デフォルトの名無しさん
2016/03/21(月) 14:19:33.49ID:j2Rjw7j2同じボタンを押した時、1回目と2回目で処理を切り分けたりするような
モジュールレベルのスコープにするほどでもないけど、
前回の状態を保持していたいような変数のときかな。
初期状態の設定が限られているし、本当にあまり使い道はないけどね。
0739デフォルトの名無しさん
2016/03/21(月) 16:33:18.95ID:Tj/3rFFi作っています。
(1)Excelシート2で定期的に為替レートを取得させる
(2)計算しある条件でフラグを立てる(1を立てる)
(3)シート2のフラグをシート1で表示する
(4)シート1で1が立つと、
別に用意したUwscというソフトが起
動して注文する。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim test As Long
If Range(Target.Address).Value = 1 Then
test = Shell("UWSC実行までのpass", 1)
End If
End Sub
という事をやろうとしています。
自動でシート1に1が立ったらUwscをさせたいのですが、シート2で計算をしているので
シート1には計算式が入っています。
シート1で1を手入力すると実行するようにはなったのですが、
計算式の結果が1になっても自動で起動しません。
どう直せばいいでしょうか
0740デフォルトの名無しさん
2016/03/21(月) 17:47:26.23ID:3ccLXt3SVBAでもこの計算できるの?
アルゴリズムの組み込みとかも
0741デフォルトの名無しさん
2016/03/21(月) 17:51:17.45ID:XSVJMcUiこの辺が参考になるんじゃないの?
http://m.chiebukuro.yahoo.co.jp/detail/q1175058971
0742デフォルトの名無しさん
2016/03/21(月) 17:58:04.07ID:3/YvApPzこんな感じ↓のユーザー定義関数
Function Uwsc() as long
Uwsc = Shell("UWSC実行までのpass", 1)
End Function
を作って、適当なセルに
=IF([フラグのセル]=1,Uwsc(),"")
と入れる、とか
0743デフォルトの名無しさん
2016/03/21(月) 19:04:07.29ID:x3vAjPCr気持ち悪いな。
Static変数は初期化の代入をせずに使えってことか。
もし宣言後すぐに
Static a as Integer
a=100
すると意味がないから宣言だけしてa=100みたいなことはしちゃダメってことだし。
0744デフォルトの名無しさん
2016/03/21(月) 19:05:12.57ID:x3vAjPCr最初は文字なしのままの変数として使わないと強制されてるようなもんだよな。
0745デフォルトの名無しさん
2016/03/21(月) 19:06:12.62ID:49NnzOUUでは、他の言語でも使ってろ
0746デフォルトの名無しさん
2016/03/21(月) 19:10:17.34ID:Evlnb4qfだからあまり使い道がないし、
ここもあまり話題にすらのぼらない。
0747デフォルトの名無しさん
2016/03/21(月) 19:14:00.67ID:Evlnb4qf再帰のときに何となく使ったような
でも無理して使うようなもんじゃないことは確か
0748デフォルトの名無しさん
2016/03/21(月) 20:35:53.39ID:hYgxa+c0今日の夕飯にラーメンと餃子を食べて屁がとても臭いんです
c++やjavaならブレスケアを飲めば治るんですが
vbaはどうすればよいのでしょうか?
0749デフォルトの名無しさん
2016/03/21(月) 20:37:15.41ID:Y+CQ6vla0750デフォルトの名無しさん
2016/03/21(月) 20:43:56.24ID:hYgxa+c0ありがとうございます
試してみます
0751デフォルトの名無しさん
2016/03/21(月) 21:05:13.65ID:Q4dyYWAF動きました。
Uwscの定義を決めて
If分で1が表示されれば実行という意味ですね。
シンプルでわかりやすくなりました
ありがとうございます
0752デフォルトの名無しさん
2016/03/21(月) 21:14:04.22ID:1m1Wp84GVariantで宣言してEmptyかどうかチェックして初期化させるロジック書けばよい
0753デフォルトの名無しさん
2016/03/21(月) 22:08:39.28ID:4hvaz5Bm多分そういうとんち問答をしている訳ではないと思うよ
0754デフォルトの名無しさん
2016/03/21(月) 22:34:01.88ID:Bm9213Hu0755デフォルトの名無しさん
2016/03/21(月) 22:35:11.26ID:1m1Wp84GとんちじゃなくてStaticな変数を初期化するまっとうな方法だけど
Static変数は(Variant前提とはいえ)初期化されてるかどうか区別できるって話で
これをとんち問答だと言うなら、そもそもの発言の意図がわからんわ
0756デフォルトの名無しさん
2016/03/21(月) 22:42:56.19ID:S6t6aFh8「一意」って「唯一」の意味で言ってる?
>>755
数値は0でデフォルト初期化されるけど、初期値なのかたまたま0という値になったのか判別不能だから
あんたの考えで正しいと思うよ。
0757デフォルトの名無しさん
2016/03/21(月) 22:53:29.96ID:4hvaz5BmじゃあStaticはVariantみたいなデカい枠使うことと
VariantはEnptyが必ず初期という決めにしておくということが必要になるということだろ?
それだったらString型のものがVbNullStringであったり
数値型のものが0であったり
Boolean型のものがFalseであるのと変わらない。
まだ自前クラスのインスタンスがNotingである方が
その判別のために使っていると明確に出来る分、分かり易くはなるが、
それでも結局はNotingである場合は初期化状態であるという決めが見て取れない、
初期で決められないのが気持ち悪いって話だと思うんだが。
0758デフォルトの名無しさん
2016/03/21(月) 23:01:01.75ID:4hvaz5BmひょっとしてVariantは一度何か設定すると二度とEmptyを設定出来なくなるのか?
だとしたら分からなくもないけどな。
0759デフォルトの名無しさん
2016/03/21(月) 23:20:58.07ID:Y+CQ6vla0760デフォルトの名無しさん
2016/03/21(月) 23:23:32.17ID:4hvaz5Bm0761デフォルトの名無しさん
2016/03/21(月) 23:26:10.29ID:Y+CQ6vla0762デフォルトの名無しさん
2016/03/21(月) 23:27:32.62ID:4hvaz5Bm0763デフォルトの名無しさん
2016/03/21(月) 23:33:31.98ID:wDZuq9VI0764デフォルトの名無しさん
2016/03/21(月) 23:35:17.19ID:p3S9wzo30765デフォルトの名無しさん
2016/03/21(月) 23:47:53.45ID:49NnzOUUないです。
0766デフォルトの名無しさん
2016/03/21(月) 23:54:14.48ID:S6t6aFh8gitが使えないの?
0767デフォルトの名無しさん
2016/03/21(月) 23:57:19.38ID:S6t6aFh8Emptyを再度入力は出来るけどたいていの場合は想定外とできるだろう。
そんな仮定はおけないから厳密にやれと言うなら2フェーズコミットでもするしかない
0768デフォルトの名無しさん
2016/03/22(火) 00:06:16.80ID:mGdonu1j俺だったら別に気持ち悪くてもいいからそんな細かいこと考えずに使ってしまうか
それが嫌ならそんな面倒なこと考えずにモジュールレベルの変数にしてしまうがな
なぜそこまでStatic変数にこだわる必要があるのか分からん
0769デフォルトの名無しさん
2016/03/22(火) 00:13:55.78ID:mGdonu1j後よく分からんのだが、VBAで二層コミットってどうやってやるんだ?
0770デフォルトの名無しさん
2016/03/22(火) 01:04:29.84ID:dJvZYtfqお前ら何がしたいんだよホントに
0771デフォルトの名無しさん
2016/03/22(火) 07:46:36.57ID:MJ9VuNgaモジュールレベル変数でも初期化の問題は同じなんじゃ?
0772デフォルトの名無しさん
2016/03/22(火) 08:24:45.98ID:99TVABME標準モジュールなら初期化関数、クラスモジュールならコンストラクタとか、
いくらでも初期化するところを作れるでしょ。
初期化関数とかで銘打って初期化を行う場合、そこで行うことは初期化な訳だから
むしろそこで設定されている値は初期値であることが見て取れる訳だ。
それは例えばInteger指定した変数が1であっても1が初期値であることを見て取れるよな。
ところがStatic変数はInteger型であれば常に初期値は0固定。
しかも初期値として銘打った訳でもなく、常にデフォルト値であるから何のためにその初期値を設定しているかもへったくれもない。
初期値が設定出来ないからそれに合わせてプログラムを組んで行くことを良しとするなら
そもそもVariantがどうの何て関係ないし、
良しとしないならモジュールレベル変数を外部で初期化してそれを使えばいいって話。
0773デフォルトの名無しさん
2016/03/22(火) 09:12:47.63ID:a24Ufvum1 hoge foo bar hige moge
2 hoge foo hige
3 hoeg bar
Selection.End(xlToLeft).Select
を使うと、
セルF1にいれば、A1に移動することが出来ます。
セルF2や、F3だと途中で引っかかってしまします。
現在位置から、一番左端のセル(A列)に確実に移動させることのできる
方法を教えてください。Excelは2010です。お願いします。
0774デフォルトの名無しさん
2016/03/22(火) 11:02:58.23ID:dSAc+PcyCells(i,1).Select
じゃダメ?
0775デフォルトの名無しさん
2016/03/22(火) 11:34:58.64ID:MJ9VuNgaちょっとよくわからない。
その初期化関数というのは誰がどのタイミングで呼ぶんだ?
0776デフォルトの名無しさん
2016/03/22(火) 11:49:23.44ID:nMkuIUa1772では無いが
book_open()とか?
0777デフォルトの名無しさん
2016/03/22(火) 18:32:17.03ID:a24Ufvumありがとございます!
正直、その手があったか!って感じです・・。
発想力に脱帽です。
0778デフォルトの名無しさん
2016/03/22(火) 21:13:31.63ID:7bpCpVCV>モジュールレベル変数を外部で初期化してそれを使えばいいって話。
そもそもの議論はStatic変数の使いどころなんだから
プロシジャレベルのStatic変数で良いところを、スコープ広げてモジュールレベル変数使えば良いと言う主張なら勝手にやってくれ
Emptyを未初期化以外の状態として使おうなんて考えるやつは他の言語使うかプログラミングやめてくれ
0779デフォルトの名無しさん
2016/03/22(火) 21:18:02.82ID:hxwXC9nK原理原則的なローレベルの話を今頃盛んにやってるのはどういう了見なわけ?
して意味有るの?wwこれから進化するわけでもないし、下手すりゃVBAなん
て消滅する可能性のほうが高いのに。
0780デフォルトの名無しさん
2016/03/22(火) 21:19:22.05ID:7bpCpVCV言語のデフォルト値がセットされてるかどうか以外で初期化されてるかどうか判断できる言語を俺は知らんが
0781デフォルトの名無しさん
2016/03/22(火) 21:20:48.45ID:7bpCpVCV最近プログラミング初めて、最近の言語と比較して不足点が多いから文句言ってるんじゃないの?
0782デフォルトの名無しさん
2016/03/22(火) 21:26:31.05ID:hxwXC9nK言ってどうにかなるわけでもなし。飲み屋の愚痴じゃんww
そういうもんだとして受け止めるのがVBAでしょ。疑問を持つなと。
0783デフォルトの名無しさん
2016/03/22(火) 21:28:15.42ID:plzhPaGGC/C++「おっ、そうだな」
>>781
最近始めてっていうよりはスクリプト言語をしばらく学んでいて下手な自信つけたやつが、
いざ仕事始めたらVBAで初めてのコンパイラ言語に直面してプライドがガタガタになって、
必死にVBAのせいにしてる印象。
不満点もC/C++みたいな「ポインタがいじれない!」よりは、
「配列が勝手に伸びない!」みたいなスクリプト言語の特徴と比べてるものが多いし。
0784デフォルトの名無しさん
2016/03/22(火) 21:43:07.31ID:9EEMgYOF・固定の初期値で我慢する
・Variant を使った少し面倒なコードを書く
のどれを選ぶかだろ
ケースバイケースだけど、個人的には Variant は極力使わない質なのでカウンタとかで初期値が 0 でいいとかでなきゃ、スコープを諦めることが多いかな
0785デフォルトの名無しさん
2016/03/22(火) 22:04:12.54ID:dJvZYtfq使いどころが分からなきゃ使わなければいいんだよ
理解出来ないもんは「今はまだ分からん」でほっとけ
本質を見誤ったままムリヤリ理解したつもりになっても
後々苦労するのは自分だという事も知っておいた方がいいな
0786デフォルトの名無しさん
2016/03/22(火) 22:17:04.92ID:7bpCpVCV他の言語でこういう機能を、VBAで実現するにはどうするか?という話ならまだ有益な面がある
VBAでのやり方に納得いかないなら他の言語使えって話だけどな
>>785
その言語の機能を理解しようとする事は良い事だと思うぞ
問題は、俺の理解と言語の機能が違うから、言語の機能がおかしいとか欠陥だとかわめくやつ
0787デフォルトの名無しさん
2016/03/22(火) 22:27:39.94ID:plzhPaGG他の言語で学んだ作法を捨ててVBAと向き合えば使いやすくなる。
0788デフォルトの名無しさん
2016/03/22(火) 22:34:50.40ID:tjbCDibP>Emptyを未初期化以外の状態として使おうなんて
話の流れとはあまり関係ないけど、
何らかのサーチの結果「見つかりませんでした」を意味する値としてEmptyを入れることはある。
これは未初期化とはちょっと意味が違う。
0789デフォルトの名無しさん
2016/03/22(火) 22:36:27.83ID:dJvZYtfq悪いと言ってるのではない
知らない事を理解する為にはその背景にある思想や新たな概念が必要になる
自分の中にそのバックボーンの準備が出来てない時には回り道する事も重要なんだよ
それを億劫がって知らない部分だけピンポイントで理解しようとあがくから
最近のこのスレみたいなとっちらかったカオスな状態になってんだよw
0790デフォルトの名無しさん
2016/03/22(火) 22:53:24.79ID:7bpCpVCVいまさらVBAのバックボーンまで理解するメリットがあるかどうかは疑問だけどな
理解しようとしてるなら良いし、古い言語だしそう言うもんだと割り切るならそれはそれでよいんじゃない
VBAの言語仕様に文句あるならさっさと別の言語使えば良いだけの話
カオスなのはVBAでも俺の思う仕様でプログラミングしないと気が済まないって奴が暴れるからだよ
0791デフォルトの名無しさん
2016/03/22(火) 22:56:31.81ID:9n/g/Em00792デフォルトの名無しさん
2016/03/22(火) 23:07:04.74ID:dJvZYtfqお前もよく分かってないやつだな
なんで急にVBAのバックボーンなんて大げさな話になるんだよ
今の流れでバックボーン言ったらローカルスタティックが存在する理由だろ
それが分からずに初期化云々を話しても無駄だって事だよ
2フェーズコミットとか亜空間からのトンデモキーワードまで飛び出す始末だぞw
0793デフォルトの名無しさん
2016/03/22(火) 23:25:18.54ID:tjbCDibPダブル・チェック・ロッキング
http://monobook.org/wiki/%E3%83%80%E3%83%96%E3%83%AB%E3%83%BB%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%BB%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0
0794デフォルトの名無しさん
2016/03/23(水) 06:28:08.77ID:IK9U7Mum0795デフォルトの名無しさん
2016/03/23(水) 07:18:32.22ID:+NSqh0Ud客先への説明でもカオスカオス言うのかな
普段変な言葉使ってるとふっと出ちゃうよね
0796デフォルトの名無しさん
2016/03/23(水) 07:25:38.39ID:wQhSXLia0797デフォルトの名無しさん
2016/03/23(水) 07:43:08.61ID:kkwy+h67そりゃここで言ってるんだから漢なら
「テラカオス〜w」くらい言うだろ
ネット弁慶でヘタレでもなければな
0798デフォルトの名無しさん
2016/03/23(水) 07:45:00.31ID:U+mfgt1qまあ現実でここまでカオスな議論に似た何かに遭遇する事もないから
2ちゃん以外で出てくる事はないんだけどな
0799デフォルトの名無しさん
2016/03/23(水) 07:52:40.21ID:Qpwk82GG0800デフォルトの名無しさん
2016/03/23(水) 08:05:18.31ID:0uNM7+MP0801デフォルトの名無しさん
2016/03/23(水) 08:18:47.37ID:Qpwk82GG0802デフォルトの名無しさん
2016/03/23(水) 08:30:15.82ID:0uNM7+MP言い出した人が満足してるかどうかはわからんけど。
0803デフォルトの名無しさん
2016/03/23(水) 08:33:36.89ID:ftHundBiくだらねぇ議論を投稿してる奴ってさ、以前からここに貼り付いてる約一名の馬鹿なんじゃね?
糞ニートでココ以外居場所がない奴なんだがね、そいつ。
0804デフォルトの名無しさん
2016/03/23(水) 20:29:56.83ID:vV1MpbSN糞ニートというかC++erだよそいつ
たまに丁寧語でそういう類のことを質問してきて
不意に別人を装って荒らし始める
今回は丁寧語ではなかったけど>>433で
質問してきてしばらくしてから別人を装って
>>494から荒らし始めてるな
確か前に関数の戻り値が参照で
渡せないとかなんとか騒いでたやつだよ
多分C++のスレで相手にされなくて
憂さ晴らしにここで自分スゲーって
やりたいんだろ?ほっとけばいいよ
0805デフォルトの名無しさん
2016/03/23(水) 21:09:33.52ID:Scz4/P5aBASICって言ったらむしろCよりも低レベルな知識がないと(処理速度的に)お話にならないでお馴染みの言語だろ?
0806デフォルトの名無しさん
2016/03/23(水) 21:37:17.53ID:GH1QWbAT0807デフォルトの名無しさん
2016/03/23(水) 21:57:29.27ID:Ki194qo0Rubyスゲーとかいうアホも時々現れるよね。
0808デフォルトの名無しさん
2016/03/23(水) 21:58:24.12ID:Ki194qo0いたいた。そういえば。
0809デフォルトの名無しさん
2016/03/23(水) 22:01:31.28ID:80VClmuKByRefを知らないの?www
0810デフォルトの名無しさん
2016/03/24(木) 15:50:34.60ID:ZS8UeVhQ0811デフォルトの名無しさん
2016/03/24(木) 20:22:34.52ID:LqdatXKY↓
「ふーん。変数なんてものもあるんやな。これ使えばセルの位置とか考えずに値を保存しとけて便利や」
↓
「は!? 今までセルでやってた作業を配列に入れたら処理が一瞬で終わったわ。セルとかゴミやん!」
↓
「ほーん。オフィス製品は全部VBAで扱えるんやな。各工程ごとに適したソフト選んでマクロ組むで」
↓
「VBAを介して連動できるんやからオフィス製品のソフトの違いなんてガワの問題に過ぎん」
だいたいこんな感じの流れで最後にたどり着くから、
Excelとか「知ってる。緑色のアイコンだろ」くらいにしか意識しなくなる。
0812デフォルトの名無しさん
2016/03/24(木) 21:01:52.77ID:K0zm5kYLVB6なら仕事上使うことあるんだけどな。
0813デフォルトの名無しさん
2016/03/24(木) 22:07:11.20ID:Tk6GVu5k>>300のスクロールバーの者です。
>>300で質問した問題は、原因がわからずに、別の方法で回避したのですが、
やはり、セルとのリンクをとる必要がでてきました。
・スクロールバーを動かすと、リンクされたセルの表示値も連動して変化して
・逆に、セルの値を手打ちず変更しても、スクロールバーも連動してその値に移動する
ということを実現するために、
スクロールバーのコントロールのプロパティ
http://imgur.com/jkhPHef
の「LinkedCell」の右の枠に、「表示したいセルの位置」座標を入力しても、
記憶してくれません。受け付けてくれません。
どのようにしたら、この設定を覚えてくれるのでしょうか?
宜しくお願いいたします。
0814デフォルトの名無しさん
2016/03/24(木) 23:31:45.94ID:2oMwx5tvLinkedCellの枠に A1 とかじゃなくて "A1" とか入力してない?
こっちはExcel2007だけど、ダブルコート付けて座標入力したら駄目だった
それで駄目ならVBAコードから書き換えてみるとか
Sub main()
Sheet1.ScrollBar1.LinkedCell = "c1"
End Sub
0815デフォルトの名無しさん
2016/03/25(金) 00:31:30.75ID:+WYmBYFtありがとうございます。
>LinkedCellの枠に A1 とかじゃなくて "A1" とか入力してない?
それも含めて、いろいろな形式で入力してみましたが、どれも受け付けてくれませんでした。
A1 $A$1 "$A$1"
何か設定がfalseになっているだけなのかなぁ と考えていましたが
難しそうですね。
プロパティで設定するものを、VBAでセットできるんですか??
今初めて知りました。ありがとうございます。
ちょっと調べてみます。というか、明日やってみます。
0816デフォルトの名無しさん
2016/03/25(金) 10:48:23.84ID:Gxz2Mc9s環境によって出来たり出来なかったりするのって
フォームコントロールのスクロールバーと
アクティブXのスクロールバーとの違いだったりしてない?
たしかアクティブXつかってるとセキュリティーがやばいとか何とかの理由で
2014年ぐらいのウインドウズアップデートで
VBAじゃアクティブX関連の機能が使えなくなったんだよね?
0817デフォルトの名無しさん
2016/03/25(金) 12:27:40.49ID:TWVXpUq5a1:e1
↓ ここで条件に当てはまった場合セ↓ ルの挿入処理
a2:e2
↓
↓
a30000:e30000
これを実現するための構文を教えていただきたいです。
0818デフォルトの名無しさん
2016/03/25(金) 12:28:38.35ID:TWVXpUq5a1:e1
↓ ここで条件に当てはまった場合セ
↓ ルの挿入処理
a2:e2
↓
↓
a30000:e30000
これを実現するための構文を教えていただきたいです。
0819デフォルトの名無しさん
2016/03/25(金) 13:25:20.34ID:e4gujGfGそれとも丸投げ依頼か
0820デフォルトの名無しさん
2016/03/25(金) 13:44:36.17ID:apTYUlYg選択範囲を保持したまま1つ下の行に移動するというループができないです
0821デフォルトの名無しさん
2016/03/25(金) 13:48:43.79ID:1OrvczFU使えるみたいだけど?
ちょっとイジらないといけないが
0822デフォルトの名無しさん
2016/03/25(金) 13:50:38.87ID:VxIVobturange("a1:e1").offset(rowi,0)
でrowiをforで変化させるとか
0823デフォルトの名無しさん
2016/03/25(金) 14:06:31.50ID:apTYUlYgありがとう!やってみます!
0824デフォルトの名無しさん
2016/03/25(金) 14:59:33.43ID:e4gujGfG選択範囲はそのままなんだろ
何を、一つ下の行に移動させるんだ?
今あるセルを下にずらして新しいセルを挿入したいなら
RangeのInsertでShift:=xlDown指定すれば良いんじゃないか
0825デフォルトの名無しさん
2016/03/25(金) 15:04:05.08ID:1OrvczFU配列使って、
配列上でそういう処理はやって、最後に貼り付けるといいよww
そういうマクロ的な考えはVBAではやらないってのが、まず入門編
です。
0826デフォルトの名無しさん
2016/03/25(金) 15:30:27.32ID:i3XIX2iS0827デフォルトの名無しさん
2016/03/25(金) 16:07:47.84ID:apTYUlYg選択範囲は保持したままではありませんでした。
選択範囲の形は保持したまま下にずらすという意味です。
a1:e1
↓
a2:e2
0828デフォルトの名無しさん
2016/03/25(金) 16:18:33.35ID:e4gujGfGSelection.Offset(1, 0).Select とかやってやればできるだろうけど
そもそも選択範囲をずらしていく必要があるのかどうか
VBAでセルの値をチェックするに選択する必要とかないぞ
0829デフォルトの名無しさん
2016/03/25(金) 16:45:18.91ID:apTYUlYgピンポイントでa1からe1までのcellを挿入することってできるのでしょうか
0830デフォルトの名無しさん
2016/03/25(金) 17:28:09.29ID:Bx31LFpZ少しは調べろ
ヒントをやる
リサイズ
0831デフォルトの名無しさん
2016/03/25(金) 18:06:52.51ID:e4gujGfGRange("A1:E1").Insert Shift:=xlDown
つか>>824にそう書いてやっただろうが
0832デフォルトの名無しさん
2016/03/25(金) 18:14:24.19ID:/rfU1X9kFor c = 1 To 30
Cells(r, c) = num
Next c
Cells(r, 31).FormulaR1C1 = "=sum(RC1:RC30)"
Next r
このループを大量にやるとき、最初からセルに関数を入れておけば
Formulaはなくてもいいじゃないですか。でも値が入るたびに計算されると処理に時間がかかりますよね?
時間短縮するなら一度クリアしてFormulaで計算するほうが速いですか?
0833デフォルトの名無しさん
2016/03/25(金) 18:46:06.95ID:w1vZyChWhttps://sites.google.com/site/compositiosystemae/home/vbaworld/primitive/exp1/stopredrow
0834デフォルトの名無しさん
2016/03/25(金) 19:35:29.57ID:aAJg3A5q3万回もSelection移動したらたぶんくそ遅い。
データ挿入は配列かRangeオブジェクトの操作でやって、同時にデータ挿入行数をカウントして、データ挿入完了後にSelectionを行数分移動する方が圧倒的に速い。
まあセルの処理をSelectionで書いてるからこういう質問なんだろうけど、Selectionの移動には基本Rangeオブジェクトの取得が必要だから、どのみちRangeのいじり方の習得は必要。
と若干エスパーしてみる
0835デフォルトの名無しさん
2016/03/25(金) 19:41:28.94ID:X2mooKXb0836デフォルトの名無しさん
2016/03/27(日) 10:47:37.19ID:z2+I0/g2荒らしの後の静けさだな
0837デフォルトの名無しさん
2016/03/28(月) 15:51:08.26ID:di4OCp5Mそんなことはないと思うんだけど。
0838デフォルトの名無しさん
2016/03/28(月) 16:47:51.14ID:szf/wSg3・Selectするのは遅い
・Selectしなくても普通は大丈夫
↓
だから、Selectしないコードを書きましょう
↓
Selectが許されるのは小学生までだね
0839デフォルトの名無しさん
2016/03/28(月) 16:52:21.25ID:keXJiS/R遅いとか気にするのは大学生までだね
↓
Selectでええやん
0840デフォルトの名無しさん
2016/03/28(月) 16:52:48.74ID:CG2l5UCc遅いというソースを出してくれ
0841デフォルトの名無しさん
2016/03/28(月) 17:02:47.98ID:qRQAYvKvSelectionの是非について言われたのか、Withについて言われたのかもわからん
ダメだと言われて理由が知りたいなら、そう言った人に聞けよ
まあ俺ならSelectionが変更された場合どうなるかわからんから
With Selection なんてコードは怖くて書けんが
0842デフォルトの名無しさん
2016/03/28(月) 17:03:15.83ID:YQC0RxKd0843デフォルトの名無しさん
2016/03/28(月) 17:19:51.49ID:szf/wSg3ゆとり世代ですか
知りたきゃ自分で試してね
0844デフォルトの名無しさん
2016/03/28(月) 19:07:23.25ID:QYng5XP1With Selection が必要なケースもあるけどかなり珍しいケースだしそれがわかってる奴は何を言われても気にしないから、アホなコードと一刀両断していいと思う
0845デフォルトの名無しさん
2016/03/28(月) 19:51:08.80ID:keXJiS/RWith Selectionが必要なんて事金輪際ないで
使うのは全く問題ないけどな
0846デフォルトの名無しさん
2016/03/28(月) 20:02:48.39ID:d9R/jMr4ここで質問するレベルだと使わない方が利便性の高い場合しかないからなぁ。
0847デフォルトの名無しさん
2016/03/29(火) 07:01:30.59ID:cLoCouWaコピーペーストする際のActivateも同じような危険を
はらんでると思うんだけどみんなどうやって回避してる?
それともあれは回避出来ないものなの?
0848デフォルトの名無しさん
2016/03/29(火) 07:20:12.96ID:tPbPM7VA0849デフォルトの名無しさん
2016/03/29(火) 08:50:17.89ID:nvewoInJ「セミオート」って?
インタラクティブ的な意味だったら自分もSelectionは使う。セル範囲を選択した状態で「ctrl + なんとか」で何かする、みたいな。
0850デフォルトの名無しさん
2016/03/29(火) 12:40:16.41ID:gFuADHyB> With Selectionが必要なんて事金輪際ないで
お前はそうかもな w
>>849
> インタラクティブ的な意味だったら
そう言う意味だと思う
0851デフォルトの名無しさん
2016/03/29(火) 22:38:04.33ID:vHd5hQDWそれをWithする事が「必要」な場面なんてあり得ないけど
Withする事が有益かどうかは議論の余地があるかもしれんが
俺的には絶対やらん
0852デフォルトの名無しさん
2016/03/29(火) 23:11:53.16ID:nwi+vARHでも俺は隙あらば使う派
0853デフォルトの名無しさん
2016/03/30(水) 03:56:22.22ID:e4rqtyoVPerprog = .Value/.Max
End With
みたいな時は使う。あとWithは動作遅いらしくて純然たる見た目にしかアドバンテージがないステートメントだとか。
0854デフォルトの名無しさん
2016/03/30(水) 04:53:52.71ID:9cdJknoO>>851は、With Selectionは俺的にはなしだってことな
普通のWithは俺も使う
>>853
>Withは動作遅いらしくて純然たる見た目にしかアドバンテージがない
Withしてるのが単純なオブジェクトとか、行数が少ないとかならそりゃ遅くなるだろう
VB6での話だと
a.b.c.X
a.b.c.Y
a.b.c.Z
なんかのパターンだと
With a.b.c
.X
.Y
.Z
End With
の方が早い(場合が多い)
理由はa.b.cがキャッシュされるから、bやcの評価が1度で済むから
まあbやcに副作用があったりしたら同じ結果にはならんから厳密には同じコードじゃないけど
0855デフォルトの名無しさん
2016/03/30(水) 06:46:39.89ID:qkOTAIEEset d=a.b.c
d.X
の方が速い?
0856デフォルトの名無しさん
2016/03/30(水) 07:10:05.14ID:05PwI6sW副作用って?
0857デフォルトの名無しさん
2016/03/30(水) 07:28:33.37ID:gjgR4bIq> それをWithする事が「必要」な場面なんてあり得ないけど
お前はそうなんだろうな
0858デフォルトの名無しさん
2016/03/30(水) 07:44:14.00ID:qapVujES0859デフォルトの名無しさん
2016/03/30(水) 07:51:47.15ID:0bB0WDH9SelectionもObjectということか。
型、何だろう?
0860デフォルトの名無しさん
2016/03/30(水) 08:04:12.88ID:qkOTAIEErange?
typename()で調べられたはず
0861デフォルトの名無しさん
2016/03/30(水) 08:07:46.18ID:rtr/ZoOr0862デフォルトの名無しさん
2016/03/30(水) 14:34:34.76ID:9cdJknoO速いってのは何と比べて?
そこから何回もdを使えば、b,cの処理が1回で済むから速くなるって言ってるんだよ
Withは実質的にはそれと同じ事をやるだけ
ただWithでやると明示的に変数が作られないから、dを取得できない
>>856
ざっくり言えば、複数回呼び出したときに違う結果になる事
>>859
Application.Selectionなら、型はObject
実際に返されるオブジェクトは
>Selection プロパティで返されるオブジェクトの種類は、何を選択するかによって異なります
まあ大抵はRangeを想定されてる事が多い
ちゃんとチェックしないと選択セルが無いときにこけたりする
>>861
まあ、ちゃんと理解してWith使えって話なんだが
Withが怖いのは、オブジェクト返せばプロパティだろうがメソッドだろうがフィールドだろうが使える
プロパティのゲッターは副作用なしに出来るとしても
あらゆるメソッドにまで副作用なしにするのは現実的じゃないし
0863デフォルトの名無しさん
2016/03/30(水) 16:08:31.72ID:qkOTAIEEwithと比べてだ
withがキャッシュしてるかどうか判るだろう
0864デフォルトの名無しさん
2016/03/30(水) 17:01:14.94ID:1HCefgskよく分からんのだけど副作用って何?
Withで指定した場合とそうでない場合で
挙動が変わることがあるって言ってるの?
ということはWithでキャッシュされるのはその
Objectの参照先ではなく値ってこと?
0865デフォルトの名無しさん
2016/03/30(水) 17:06:37.39ID:rtr/ZoOrbやcを呼び出すことについての副作用じゃないかな
0866デフォルトの名無しさん
2016/03/30(水) 19:12:03.72ID:gdMVs/6Wドットで区切って呼び出すのとWithで呼び出すので
その副作用とやらの起こりかたがどう変わるのか。
素人考えで言うとドットで区切って呼び出すのもWithで呼び出すのも
実行する相手は変わらないから副作用とやらがあったとして
同じ順序で実行している限り結果として同じになりそうなもんだけどな。
0867デフォルトの名無しさん
2016/03/30(水) 19:27:45.38ID:qapVujES0868デフォルトの名無しさん
2016/03/30(水) 19:35:15.74ID:9cdJknoOWithと自分でキャッシュするのとどっちが早いかって?
誤差程度の差しか出ないと思うけど実測してみるしかないんじゃない?
キャッシュって意味を違う理解してるような気もするな
>>866
>>854のパターンで行けば、bとcが呼び出される回数が違うのは理解できる?
bに副作用があるって事は、1回目のa.bと2回目のa.bが同じ結果にならないって事だぞ
つまりbを呼び出した回数によって違う結果になるって事
0869デフォルトの名無しさん
2016/03/30(水) 19:56:33.21ID:rtr/ZoOr0870デフォルトの名無しさん
2016/03/30(水) 20:06:31.07ID:e4rqtyoVProperty Get value()
Static i As Long
value = i
i = i + 1
End Property
module1:
Sub test()
Dim c As New Class1
For i = 1 To 10
With c
Debug.Print .value
End With
Next
End Sub
こんな実験してみたけど普通に回ったし、呼び出しの副作用が何を指すのか分からない。
0871デフォルトの名無しさん
2016/03/30(水) 20:19:05.44ID:9cdJknoO単純なオブジェクトで、Withブロック内で1回しか使わん例をだされても...
0872デフォルトの名無しさん
2016/03/30(水) 20:24:33.37ID:VRmOt6d20873デフォルトの名無しさん
2016/03/30(水) 20:30:36.04ID:qapVujES0874デフォルトの名無しさん
2016/03/30(水) 20:39:47.07ID:e4rqtyoV事象を説明できる様な具体的な例を一度も出さずにそう言われても・・・
0875デフォルトの名無しさん
2016/03/30(水) 20:45:29.43ID:9cdJknoOPrivate count As Integer
Function b() As Class1
count = count + 1
Set b = Me
End Function
Sub X()
Debug.Print count
End Sub
Sub Y()
Debug.Print count
End Sub
--テストコード
Sub test()
Dim a As Class1
Debug.Print "ケース1"
Set a = New Class1
a.b.X
a.b.Y
Debug.Print "ケース2"
Set a = New Class1
With a.b
.X
.Y
End With
End Sub
bに副作用があるので、ケース1と2で結果が変わる
0876デフォルトの名無しさん
2016/03/30(水) 20:51:23.72ID:rtr/ZoOr0877デフォルトの名無しさん
2016/03/30(水) 21:03:28.25ID:rtr/ZoOr課金があるとしたら回数を減らすでしょ。With使って減らせる場合があるでしょ。
ってこと。
0878デフォルトの名無しさん
2016/03/30(水) 21:50:19.41ID:05PwI6sWなるほど、コードにして書いてもらうと理解しやすいな
特殊に見えて意外にあり得るケースかもな
0879デフォルトの名無しさん
2016/03/30(水) 21:57:45.44ID:qapVujES0880デフォルトの名無しさん
2016/03/30(水) 22:03:17.20ID:YrELR0Gg関係ない、とは?
0881デフォルトの名無しさん
2016/03/30(水) 22:13:52.67ID:qapVujESDim a As Class1
Debug.Print "ケース3"
Set a = New Class1
Wizz a.b
End Sub
Sub Wizz(b as Class1)
b.X
b.Y
End Sub
以外どころか日常茶飯事やろ
0882デフォルトの名無しさん
2016/03/30(水) 22:21:23.09ID:WcRChq9Cケース1を With で書くと With a のはず
ケース2を With で書かない場合は
Set a = new Class1
のあと
Set ab = a.b
とでもしておいて
ab.X
ab.Y
としなければならないはず
副作用のあるプロパティの例にはなってるけど
Withについての例としては成り立っていない
0883デフォルトの名無しさん
2016/03/30(水) 22:30:20.94ID:YrELR0Gg>としなければならないはず
?
0884デフォルトの名無しさん
2016/03/30(水) 22:32:17.11ID:05PwI6sWどっちにしても纏める範囲で挙動が変わるということか
いやはやお前ら頭いいなぁ
0885デフォルトの名無しさん
2016/03/30(水) 22:44:54.54ID:05PwI6sW周りの人達は「またNew Withか」って呆れてたな
あれ何かマズいんかな?
0886デフォルトの名無しさん
2016/03/30(水) 22:46:46.42ID:05PwI6sWWith New → ○
0887デフォルトの名無しさん
2016/03/30(水) 22:48:18.62ID:0VGmSTQPExcelVBAの「イミディエイトウインドウ」に相当するものはどこにありますか?
0888デフォルトの名無しさん
2016/03/30(水) 22:50:36.30ID:YrELR0Ggそれで思い出したけど、以前
Set Me = Nothing
ってステートメントがエラーになることを知ってショックを受けた。
0889デフォルトの名無しさん
2016/03/30(水) 22:51:08.58ID:05PwI6sWスレ違いだけどコマンドウィンドウでimmedって打つと
多分幸せになれる
0890デフォルトの名無しさん
2016/03/30(水) 22:53:15.45ID:YrELR0GgCtrl + Alt + I
0891デフォルトの名無しさん
2016/03/30(水) 22:58:34.94ID:05PwI6sWよしんばエラーにならなかったとして
自分で自分の参照を消そうとするわけだから
以降にステートメントが書かれていた場合
どうなっちゃうんだろうな
0892デフォルトの名無しさん
2016/03/30(水) 23:01:41.93ID:NTEY1++2宣言しますが、アレをカレントディレクトリのを優先で読むようにするにはどうしたらいいですかね?
0893デフォルトの名無しさん
2016/03/30(水) 23:02:52.75ID:YrELR0Ggそりゃもちろん
「それ以降にステートメントは書いちゃダメ」
だろう
0894デフォルトの名無しさん
2016/03/30(水) 23:10:14.09ID:XzoNTFsbWithの範囲だけで有効な一時オブジェクトを使えるという意味では
個人的にはWith Newはありのような気もする
'***クラス:Class1
Private Sub Class_Initialize()
Debug.Print "init"
End Sub
Private Sub Class_Terminate()
Debug.Print "term"
End Sub
'***標準モジュール
Sub macro1()
With New Class1
Debug.Print "with"
End With
Debug.Print "exit"
End Sub
'===イミディエイトウインドウ出力
init
with
term
exit
0895デフォルトの名無しさん
2016/03/30(水) 23:19:35.85ID:05PwI6sW優先は分からないけどとりあえずファイル名の前に
パスを指定すればそこから読むようには
なるんじゃないかな
>>893
まぁたらればの話だから結局はダメなんだろうけどな
ぁ
>>894
VB.NetでいうところのUsingの代わりになると思って使ってるけど
今々使ってて別段変なことも困ったことも起きてないんだよなぁ
0896デフォルトの名無しさん
2016/03/30(水) 23:28:19.82ID:0VGmSTQPすばらしい!
しかしそれやりかた忘れたら困りますね。
普通はどうやって出すんですか?
>>890
それも同様。
表示から探してもイミディエイトウインドウの項目もないし。
0897デフォルトの名無しさん
2016/03/30(水) 23:32:05.55ID:GO4KFIifvbs だと With New RegExp とかたまに使う
0898デフォルトの名無しさん
2016/03/30(水) 23:36:53.27ID:NTEY1++2じゃぁ、CurrentProject.path & “¥kinoko.dll”でイケるって事ですかね?
0899デフォルトの名無しさん
2016/03/30(水) 23:38:51.86ID:05PwI6sW上の方のメニューで
デバッグ → ウインドウ → イミディエイト
で出てこない?
0900デフォルトの名無しさん
2016/03/30(水) 23:41:41.97ID:05PwI6sW何か2010だと相対パスだとエラーになるとかいう話は聞いたことがあるけど
色々試してみたらいかがでしょうか
0901デフォルトの名無しさん
2016/03/30(水) 23:53:43.97ID:qkOTAIEEwith より 直前のオブジェクトをsetした方が平均的に速い
withだと分散が大きいから、場合によっては速いこともあるだろう
t-検定: 一対の標本による平均の検定ツール
with set d
平均 53.1 48.96666667
分散 94.23103448 45.82643678
観測数 30 30
ピアソン相関 -0.600253965
仮説平均との差異 0
自由度 29
t 1.530000008
P(T<=t) 片側 0.06842648
t 境界値 片側 1.699127027
P(T<=t) 両側 0.136852961
t 境界値 両側 2.045229642
0902デフォルトの名無しさん
2016/03/31(木) 00:07:28.38ID:nmFtqRPTデバッグ実行してる最中に、だよ?
0903デフォルトの名無しさん
2016/03/31(木) 09:07:13.71ID:A5eNZi27それを呼んだ元のSubまたはFunctionの名前を取得するには
どうすればいいですか?
0904デフォルトの名無しさん
2016/03/31(木) 12:23:29.73ID:BZ6lcS+0デバッグ目的?
0905デフォルトの名無しさん
2016/03/31(木) 12:31:40.21ID:VnTWApk1デバッグ中だったらctrl+Lで判るけど
0906デフォルトの名無しさん
2016/03/31(木) 12:35:44.14ID:A5eNZi27コードでそれをもとに条件分岐します。
0907デフォルトの名無しさん
2016/03/31(木) 12:37:22.41ID:bs8v4Uzc0908デフォルトの名無しさん
2016/03/31(木) 12:39:23.10ID:5VtmjZ4SMsgbox procname & " 実行中エラー" みたいな
ボタンなら Application.caller というのがあるんだけど
0909デフォルトの名無しさん
2016/03/31(木) 12:40:58.98ID:VnTWApk1呼び出し側から引数を渡せば良い
自分のプロシージャ名でも何でも
0910デフォルトの名無しさん
2016/03/31(木) 13:35:42.37ID:BZ6lcS+0じゃあ「条件判断のために必要な情報」を渡せばいい。
普通それは「Function名/Sub名」なんかじゃないと思うけど?
0911デフォルトの名無しさん
2016/03/31(木) 13:41:20.16ID:A5eNZi27そういう回答が来る予想はしてたけどまさか本当になるとは。
すでに本格的にシステムをつくってあるから
そこを変えると他の多くの部分でコードの修正が必要になるし
それに伴うバクが発生しないか確認しないといけない。
なので単純にどこから呼ばれてるか書いてあるプロパティみたいなのはないの?
0912デフォルトの名無しさん
2016/03/31(木) 13:45:48.39ID:YUafZk1C0913デフォルトの名無しさん
2016/03/31(木) 14:00:48.25ID:VnTWApk1無い
0914デフォルトの名無しさん
2016/03/31(木) 14:08:18.20ID:A5eNZi27それだとそのグローバル変数に名前を放りこまない従来の多数のプロシージャから呼び出したときに
古い値が残っていた場合にバグや誤動作の原因になる。
0915デフォルトの名無しさん
2016/03/31(木) 14:11:30.78ID:pWjpUb41出来ませんので諦めて下さい
0916デフォルトの名無しさん
2016/03/31(木) 14:13:19.86ID:A5eNZi27それだとあなたのスキルが無いという結論で確定になる。
0917デフォルトの名無しさん
2016/03/31(木) 14:16:30.51ID:pWjpUb410918デフォルトの名無しさん
2016/03/31(木) 14:17:07.06ID:A5eNZi27日本語だ。しゃべれる?
0919デフォルトの名無しさん
2016/03/31(木) 14:19:57.02ID:YUafZk1C0920デフォルトの名無しさん
2016/03/31(木) 14:24:42.99ID:pWjpUb41答えてもらう態度じゃないなお前ww 何様だよww
0921デフォルトの名無しさん
2016/03/31(木) 14:25:22.42ID:pWjpUb410922デフォルトの名無しさん
2016/03/31(木) 14:37:28.71ID:D9jQ+Opu0923デフォルトの名無しさん
2016/03/31(木) 14:39:19.00ID:pWjpUb41まぁ、そんなんで、既存のプロシージャの修正の手間惜しんで、ここで
悪態ついてるレベルだから、程度が知れると思うよ。
要するに設計がクソってことだから。
0924デフォルトの名無しさん
2016/03/31(木) 15:40:27.04ID:A5eNZi27正解。
そうすることによって既存の他のコードを一切修正することなく望むことができる。
0925デフォルトの名無しさん
2016/03/31(木) 15:47:28.75ID:pWjpUb41プww
0926デフォルトの名無しさん
2016/03/31(木) 15:53:08.17ID:BZ6lcS+0それは半分わかるけど、追加するのがFunction名/Sub名である事には全く繋がらないよね?
OptionalでもParamArrayでも好きなの使っていろいろな情報を渡せるようになるわけだし。
0927デフォルトの名無しさん
2016/03/31(木) 15:57:01.70ID:BZ6lcS+0Optional引数を追加するってことはその関数はインタフェースが変更されるってことだよね。
それは厳密にいうと既存のコードに影響がある。たいていは問題ないだろうけど。
0928デフォルトの名無しさん
2016/03/31(木) 16:59:58.10ID:ssKy5xLR本末転倒
実務者が望むのは問題の解決であり、議論の勝利を求める2chネラーとは目的が異なる
ってか、ここに所謂「2chネラー」が出没してアドバイス(?)するのは百害あって一利なしだな
(そういうおれも2chネラーなんだが)
0929デフォルトの名無しさん
2016/03/31(木) 17:15:17.89ID:AghJqbjM一言で言えば、クズだ
相手にする必要なし
0930デフォルトの名無しさん
2016/03/31(木) 17:49:44.87ID:skxU2C+jそのレスした人への謝礼もなく
偉そうに「正解」とか言うだけの質問者、
前にも見たことがある…どのスレかは忘れたけど
まぁ、なんていうか、すごく、すごく…
…呆れます
0931デフォルトの名無しさん
2016/03/31(木) 18:23:15.32ID:BZ6lcS+00932デフォルトの名無しさん
2016/03/31(木) 18:24:12.09ID:ssKy5xLR>偉そうに「正解」とか言うだけの質問者
>…呆れます
これには同意
>>926-927は>>904,910ということは、>>911の
>そういう回答が来る予想はしてたけどまさか本当になるとは
に触発されたようなのでこりゃ仕方ないかな (>>928は撤回、スマン)
ID:pWjpUb41はどうしようもない2chネラーだが、こいつがレスする前に>>911を書いているから
>>930のいう通り、ID:A5eNZi27も似たり寄ったりだな
0933デフォルトの名無しさん
2016/03/31(木) 18:34:44.28ID:OULRWxoO0934デフォルトの名無しさん
2016/03/31(木) 18:43:40.16ID:CJ4bVKwJID:A5eNZi27
バカ発見
0935デフォルトの名無しさん
2016/03/31(木) 20:19:21.05ID:YUafZk1Cクイズかな?
まあどうでもいいけど。
0936デフォルトの名無しさん
2016/03/31(木) 20:27:12.77ID:ItJYSn/0ギャグみたいな事言うやつが定期的に現れるな。
同一人物かどうか知らないが。
0937デフォルトの名無しさん
2016/03/31(木) 20:43:41.29ID:SHkTxCKM0938デフォルトの名無しさん
2016/03/31(木) 20:53:44.50ID:HmHgOVJX0939デフォルトの名無しさん
2016/03/31(木) 21:11:41.79ID:ssKy5xLR気持ち悪いのはお前らだ
0940デフォルトの名無しさん
2016/03/31(木) 21:14:01.02ID:ScXuRFRf抜ける時にクリアしとけばいいだけ
応用力 "0" かよ
0941デフォルトの名無しさん
2016/03/31(木) 22:01:05.72ID:A5eNZi27このコードを数か月後あるいは数年後くらいにひさしぶりに見た場合に
このクリアは一体なんのためにやっているのだろうか、と自問自答して無駄な時間を過ごすことになるので不可。
0942デフォルトの名無しさん
2016/03/31(木) 22:21:59.94ID:5/bJTEuo0943デフォルトの名無しさん
2016/03/31(木) 22:38:08.63ID:Tq9AKUqvそう言う奴は訳のわからん引数で悩むから同じだろ w
0944デフォルトの名無しさん
2016/03/31(木) 22:40:41.99ID:+v8smRGz本格的に面倒臭い奴だなコイツ
0945デフォルトの名無しさん
2016/03/31(木) 23:04:42.89ID:A5eNZi27コメントに頼るのはやめたほうがいいよ。
なぜかと言うと、
もしコードを修正した場合そこの部分にコメントがあった場合に必ずコメントも修正しなければならず
そのコメントのほうの修正を忘れてしまうリスクがあるから。
もし忘れてしまった場合コメントがウソになってしまい、混乱してコード全体のすべてのコメントについてなにが本当でなにがウソか疑心暗鬼になる。
0946デフォルトの名無しさん
2016/03/31(木) 23:19:59.63ID:VnTWApk1ソースコードが正しいか疑心暗鬼にならないの?
0947デフォルトの名無しさん
2016/03/31(木) 23:35:59.42ID:Tq9AKUqv0948デフォルトの名無しさん
2016/03/31(木) 23:42:43.40ID:5/bJTEuoもはやネタだな。
0949デフォルトの名無しさん
2016/03/31(木) 23:54:16.11ID:Tq9AKUqv携わってる人のスキルがあまりにも...
って感じかと
0950デフォルトの名無しさん
2016/03/31(木) 23:56:23.02ID:A5eNZi270951デフォルトの名無しさん
2016/03/31(木) 23:59:08.74ID:VnTWApk1単純じゃないコードほどコメント必要じゃないか?
複数人で進めることもあるし
バージョン管理システムとか使うからコードとコメントの非同期とかも判るし
0952デフォルトの名無しさん
2016/03/31(木) 23:59:11.31ID:BZ6lcS+00953デフォルトの名無しさん
2016/04/01(金) 00:01:59.77ID:X9A67GyV0954デフォルトの名無しさん
2016/04/01(金) 00:13:33.21ID:/ahH6pAH0955デフォルトの名無しさん
2016/04/01(金) 00:28:39.43ID:objfS9dqコメントのありがたみも解らないし
プロシジャの呼び出し元で処理を変えようなんて設計するのか
まあ結局は自分で思う事以外は認められないタイプなんだろうけど
だったら掲示板で質問とかやめときゃいいのにな
もはや壮大なネタとしか思えんな
0956デフォルトの名無しさん
2016/04/01(金) 00:32:12.69ID:otLOlCKW0957デフォルトの名無しさん
2016/04/01(金) 01:40:15.03ID:SjT9nfv60958デフォルトの名無しさん
2016/04/01(金) 01:47:20.35ID:vf5GPZ8M> バージョン管理システムとか使うから
VBA でどうやってる?
.bas とかをエクスポートしてやってたけど面倒で挫折しそう
0959デフォルトの名無しさん
2016/04/01(金) 02:00:30.13ID:CW508Yj2C++erが荒らす前はVB.Netのような
他言語やってるっぽい人が話してても全く荒れていないのに
ここまで周りの人の神経を逆撫で出来るのはある意味才能だよな
嫌われ者の才能なんてこのスレでは全く必要ないけどな
0960デフォルトの名無しさん
2016/04/01(金) 02:07:09.88ID:4nPGRuN9スレ違いかも知れませんが、知っていたら教えてください。
xmlファイルのひな型を作り、そこからスキーマファイルを作って
エクセルで管理する方法を見つけたのですが、行き詰まってしまいました。
エクセルとxml使ってデータ整理と使用をやろうと考えています。
例えば、商品A B Cに対してID Name Numberという子要素が必ず1つはあります。
しかし、Cには子要素のID Name Numberが2つずつで付いていたり、4つずつ付いていたり不定期で最低は1最高は5
不定期の子要素をCに綺麗に収めたいと考えています
0961デフォルトの名無しさん
2016/04/01(金) 02:33:43.95ID:CW508Yj2ちなみに俺なら関数名などで分岐をさせる処理なら引数に渡すのは関数名や分岐条件ではなく
条件分岐毎の処理に対するコールバック情報を引数に持たせるがな
何故省略可能な引数を追加することが
「そうすることによって既存の他のコードを一切修正することなく望むことができる。」と
「正解」とか斜め上視線で自信満々で言い切れるのか意味不明
とっとと自分の巣に帰れ
0962デフォルトの名無しさん
2016/04/01(金) 02:44:55.22ID:vf5GPZ8Mhttp://dobon.net/vb/dotnet/file/xmlserializer.html
0963デフォルトの名無しさん
2016/04/01(金) 05:10:10.02ID:U11k/mIJ結果としては管理する方法を見つけてないんじゃねーか
あと綺麗にって何?
0964デフォルトの名無しさん
2016/04/01(金) 05:42:28.55ID:U11k/mIJエクスポートする関数を作ってるけど
0965デフォルトの名無しさん
2016/04/01(金) 06:23:16.87ID:wuhWmzmB0966デフォルトの名無しさん
2016/04/01(金) 07:15:24.11ID:/ahH6pAH0967デフォルトの名無しさん
2016/04/01(金) 08:09:57.38ID:cIUJiKQrそもそも ID: ssKy5xLR って誰だよ w
0968デフォルトの名無しさん
2016/04/01(金) 08:13:16.31ID:B7A4ZaEe0969デフォルトの名無しさん
2016/04/01(金) 12:32:21.59ID:2VTiuO8B0970デフォルトの名無しさん
2016/04/01(金) 19:26:25.13ID:hr4pCajV0971デフォルトの名無しさん
2016/04/01(金) 19:40:44.37ID:/ahH6pAH0972デフォルトの名無しさん
2016/04/01(金) 20:30:52.17ID:ZljdcUzp0973デフォルトの名無しさん
2016/04/01(金) 23:56:44.74ID:7FzX8frNあれだろ
今日の xamarin for Visual Studio で
C++が対応されず死に絶えることが確定したから
荒れてるんだろ
0974デフォルトの名無しさん
2016/04/02(土) 09:10:09.91ID:GN/uL4b1なんでもかんでもC++erのせいにするなw
>>966 で書いた通り今回は ID:BZ6lcS+0だからな
0975デフォルトの名無しさん
2016/04/02(土) 09:45:40.47ID:EygFVZgc最低だな
0976デフォルトの名無しさん
2016/04/02(土) 10:37:11.62ID:GN/uL4b10977デフォルトの名無しさん
2016/04/02(土) 11:46:57.62ID:4vUR39xe0978デフォルトの名無しさん
2016/04/02(土) 11:54:07.75ID:+Ndb7soQ0979デフォルトの名無しさん
2016/04/02(土) 11:58:40.87ID:GN/uL4b1クラス内限定でPrivateメソッドを呼ぶ方向でいくつかアイデアが出て解決してるよ。
問題点自体をわかってない連中が騒いでいただけで、むしろそいつらこそが荒らしだった。
0980デフォルトの名無しさん
2016/04/02(土) 12:12:17.12ID:4vUR39xeC++erが度々荒らしに来ていることが問題になっているという自覚がないんだな
0981デフォルトの名無しさん
2016/04/02(土) 12:21:29.04ID:KxNKncUCC++erってのはもっと昔に出てたやつだ。お前こそ成り済ましのJavaerだろ?
0982デフォルトの名無しさん
2016/04/02(土) 12:53:12.41ID:4vUR39xe>>804
以前のもC++erだったようだが?
俺はjavaはよく知らないが戻り値を参照で返せるのか?
以前のも「C++なら」って連呼してたぞそいつ
いもしないザバーに罪をなすりつけるって
C++erって汚い ほんっと汚い
0983デフォルトの名無しさん
2016/04/02(土) 13:27:35.20ID:KxNKncUC以前のがC++erで参照うんぬんの話をしてたやつさ。
>>979はPrivate荒らし
0984デフォルトの名無しさん
2016/04/02(土) 13:43:22.64ID:GN/uL4b1?
0985デフォルトの名無しさん
2016/04/02(土) 13:43:23.32ID:4vUR39xeそれはC++erどころか
同一人物だってよ
0986デフォルトの名無しさん
2016/04/02(土) 18:14:56.28ID:mScz+IyK0987デフォルトの名無しさん
2016/04/02(土) 18:40:02.75ID:+Ndb7soQDo
i=i+1
if i = Columns.count then j= j+1:i=1
Cells(i,j).Value = "素数"
Loop
0988デフォルトの名無しさん
2016/04/02(土) 18:48:23.36ID:tgAORIfk0989デフォルトの名無しさん
2016/04/02(土) 19:46:56.56ID:sGfFvhYb0990デフォルトの名無しさん
2016/04/02(土) 20:16:47.02ID:J8WwcBeU0991デフォルトの名無しさん
2016/04/02(土) 21:21:12.07ID:tgAORIfk0992デフォルトの名無しさん
2016/04/02(土) 21:37:57.48ID:+Ndb7soQ0993デフォルトの名無しさん
2016/04/02(土) 21:52:06.77ID:tgAORIfkそれスベり芸のつもりか?誰も盛り上げてくれんぞ
0994デフォルトの名無しさん
2016/04/02(土) 21:54:58.37ID:nCRmOOwG0995デフォルトの名無しさん
2016/04/02(土) 21:59:32.57ID:tgAORIfkハードがリソースじゃないと思ってる時点でスベりまくり、残念
0996デフォルトの名無しさん
2016/04/02(土) 23:28:22.73ID:sCf2jPzr0997デフォルトの名無しさん
2016/04/02(土) 23:39:39.12ID:pzIJ0TE90998デフォルトの名無しさん
2016/04/02(土) 23:57:21.28ID:GBkG0qug0999デフォルトの名無しさん
2016/04/03(日) 00:07:43.20ID:OcsyD6fv1000デフォルトの名無しさん
2016/04/03(日) 00:32:37.19ID:MwoPZf8b10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 43日 21時間 42分 53秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。