Excel VBA 質問スレ Part43 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2016/09/17(土) 18:40:11.13ID:CG7Ng2Afコード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part42©2ch.net [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1466876143/
※関連スレ
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 123 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/bsoft/1466982445/
0002デフォルトの名無しさん
2016/09/18(日) 03:32:40.04ID:E6Ddg3cM早期に20書き込みしないとスレが落ちるんじゃなかったっけ
0003デフォルトの名無しさん
2016/09/18(日) 04:59:06.82ID:7hWjIaaGリファレンス本でオススメあります?
630、700、525あたりかな。
それともネットで十分か。
0004デフォルトの名無しさん
2016/09/18(日) 05:19:15.21ID:8xVAufzn>>3
ネットで十分だし何の関数やプロパティについて知りたいのか最初から決まっていればヘルプで十分
0005デフォルトの名無しさん
2016/09/18(日) 19:49:40.91ID:MSbonHvQ0006デフォルトの名無しさん
2016/09/18(日) 20:01:59.39ID:fo/KPIpx0007デフォルトの名無しさん
2016/09/18(日) 20:06:13.51ID:si+CVhCCあとpower biみたいにオンプレのデータソースに繋げられるようにして欲しい
0008デフォルトの名無しさん
2016/09/18(日) 20:21:31.92ID:7VrjSwLNエクセル関数で実現が
困難な場合
0009デフォルトの名無しさん
2016/09/18(日) 20:30:15.56ID:MSbonHvQなるほど
俺はまだそこまで困難な壁にぶつかってないだけなんだな
0010デフォルトの名無しさん
2016/09/18(日) 21:03:41.96ID:ynPmUZ3U100個くらいあって一回実行するたびいちいち変わりやがる
いちいち再起動が面倒くさい
0011デフォルトの名無しさん
2016/09/18(日) 21:15:27.36ID:fo/KPIpxPublic変数ってのが何を指しているのかいまいち分からないけど、
エクセルの標準的機能に関わるようなもんなら変更前の値を保存しておいて処理後に復帰させるべきだし、
自分で定義した変数の事を言っているなら、そもそもPublicにすべきでない。
0012デフォルトの名無しさん
2016/09/18(日) 21:45:09.40ID:MSbonHvQそもそもその作りが良いかどうかは別の話として
0013デフォルトの名無しさん
2016/09/18(日) 22:53:20.26ID:gWNbszTQまあ1回ブック閉じてまた開けばいいんじゃないか
0014デフォルトの名無しさん
2016/09/18(日) 22:57:29.19ID:kytYHMlO文句出ないのか?
001510
2016/09/19(月) 02:05:04.48ID:UNfXSNIe>そもそもPublicにすべきでない
そうできりゃ話は簡単なのは聞くまでもない
いろいろ渡世の義理があってそうはいかないんですよ
0016デフォルトの名無しさん
2016/09/19(月) 08:23:48.62ID:2AkIrPcv0017デフォルトの名無しさん
2016/09/19(月) 09:56:13.42ID:UNfXSNIeあんな大げさなプロシージャがいるのかと思うとうんざり
0018デフォルトの名無しさん
2016/09/19(月) 19:34:43.83ID:T/MKR8K7絶版になっていないものをお願いします。
0019デフォルトの名無しさん
2016/09/19(月) 19:50:09.23ID:2nuO43oRそもクラスはInitializeとTerminateが保証されているだけだから、
コラムくらいのサイズですらかなり詳しく紹介しているレベルじゃないかな。
0020デフォルトの名無しさん
2016/09/19(月) 20:02:19.61ID:nwIwSQT50021デフォルトの名無しさん
2016/09/19(月) 20:11:11.91ID:uXoHDK+mつまりもっと短くできる確信がないのに冗長と判断してはいけない
0022デフォルトの名無しさん
2016/09/19(月) 20:15:49.91ID:qy4qKHn4そんなことを聞いちゃう人はそもそも向いてないと思う
転職をすすめる
0023デフォルトの名無しさん
2016/09/19(月) 20:24:25.44ID:nwIwSQT5なんでこんな分かりにくい言葉を使うのかねこの業界は
0024デフォルトの名無しさん
2016/09/19(月) 20:37:30.29ID:fA1B/38Y0025デフォルトの名無しさん
2016/09/19(月) 20:52:16.32ID:0SdvYmSf0026デフォルトの名無しさん
2016/09/19(月) 21:05:11.46ID:uXoHDK+mでもオブジェクト指向って、コードを部品化して再利用性を高めるのが主目的だから
コードを短くするっていう目的に使うのはどうかなあ
0027デフォルトの名無しさん
2016/09/20(火) 05:22:29.02ID:7CXGcLuN文章が、分かりにくく済みません。
長さよりも、可読性が悪いのが問題で、可読性を良くして再利用出来る物を作りたいと思い、クラスの勉強がしたいと思いました。
分かり易い書籍等、ありませんか?
0028デフォルトの名無しさん
2016/09/20(火) 07:09:02.68ID:Z9+3PvfD可読性がよく無いのであればクラス使ったところで
良くなるとは思えないなぁ。
その前に構造化言語がどういうものかを勉強した方が良い気がする。
例えば単一責任原則とか。
0029デフォルトの名無しさん
2016/09/20(火) 08:47:37.18ID:8EipcP2aある程度ならこれでよみやすくなる
0030デフォルトの名無しさん
2016/09/20(火) 09:18:06.28ID:pi/Zyw6M「長さよりも」って言うけど、実際のところひとつの関数の平均的な長さは何行くらいになってる?
それだけで何かが判断できるわけじゃないけど、参考にはなる。
0031デフォルトの名無しさん
2016/09/20(火) 10:07:52.42ID:7CXGcLuN0032デフォルトの名無しさん
2016/09/20(火) 13:48:28.56ID:YRWH8aGZ0033デフォルトの名無しさん
2016/09/20(火) 14:02:44.97ID:UuN/AA1pこれはどう?
Debug.Print Cells(1, 1).Parent.Name
0034デフォルトの名無しさん
2016/09/20(火) 14:35:00.24ID:pZijh5laMe.Nameでいける
0035デフォルトの名無しさん
2016/09/20(火) 15:01:31.93ID:YRWH8aGZありがとうございます
シンプルなので Me.Name にしましたm(__)m
0036デフォルトの名無しさん
2016/09/20(火) 20:30:34.17ID:tqDRs8uwこれまた微妙な長さだなぁ。
いや、別に長さがどうのと言うより
一つのメソッドや関数に持たせている役割が一つかどうかというところが重要で
別に役割的に一つであれば長くても問題無いんだけど
キチンと細かく分けていれば
そんなに長くなることはまぁ無いだろうということで
何を一つの役割として捉えるかは結構センスによるところもあるので
どこまで細分化すれば見易いのか色々試してみると良いと思うよ。
0037デフォルトの名無しさん
2016/09/20(火) 20:39:23.40ID:7CXGcLuNありがとうございます。
もっと勉強します。
0038デフォルトの名無しさん
2016/09/20(火) 22:51:09.10ID:ufJFR4YNMe.NameってAccess専用じゃなかったのか。
ずっとActivesheet.Nameにしてたわ。
0039デフォルトの名無しさん
2016/09/20(火) 22:58:56.25ID:UuN/AA1p確かにMe.Nameの方がスマートだ・・・
0040デフォルトの名無しさん
2016/09/21(水) 10:37:23.74ID:yguOEPz4クラスが充実してる他言語の知識があれば応用きくんだが
0041デフォルトの名無しさん
2016/09/21(水) 10:42:56.93ID:yguOEPz4俺のリンク集を提供しよう
Excel VBAではじめるクラス入門
http://codezine.jp/article/detail/499
「 クラス 」 一覧
http://excelwork.info/excel/category/excel-vba/vba-class/
クラスの作成と使い方
http://www.petitmonte.com/excel/excel_vba_21.html
クラスモジュールの使い方
http://blog.livedoor.jp/midorityo/archives/50702769.html
0042デフォルトの名無しさん
2016/09/21(水) 17:56:04.19ID:YaI08LoPマクロでIE操作をする際テキストボックスに入力した文字が、submitボタンを押すと消えてしまい困っています。
具体的には
あるサイトにてID及びPWを入力しログインするマクロを書いています。
ID及びPWを
objIE.document.Forms("0").Item("username").Value = .Range("A" & r).Value 'ID
という感じで入力しています。
この段階で入力自体は出来ています。
しかし、送信しようとsubmitボタンを押したところ、ID及びPWが未入力と表示されてしまいます。
このようなタイプのテキストフォームにはどのように対応したらよろしいでしょうか。
よろしくお願いします。
0043デフォルトの名無しさん
2016/09/21(水) 18:41:40.60ID:oz2loU78Javascriptで入力内容をチェックしてる場合で、Sendkeysで1文字ずつ送り込まないと
正常に受け付けてくれないサイトがある
しかも入力が速すぎると取りこぼすから、1文字ずつSleepが必要というサイトに当たったことがある
0044デフォルトの名無しさん
2016/09/21(水) 20:00:21.99ID:B6Hnyf6U> クラスが充実してる他言語の知識があれば応用きくんだが
むしろ、あれもできないこれもできないでストレスたまるだけかと
0045デフォルトの名無しさん
2016/09/21(水) 20:33:54.05ID:FWWdfGmf車輪の再発明で理解が深まるぞ
こんな副作用はいらない
0046デフォルトの名無しさん
2016/09/21(水) 21:39:14.98ID:hlX5pROoあれも出来ないこれも出来ないとなるから
どうやって同じ効果を得ることが出来るか考えると
意外にクラスの本質を理解出来たり出来なかったり。
VBAのクラスは他のObject指向の言語と比べるとかなり異質ではあるとは思う。
0047デフォルトの名無しさん
2016/09/21(水) 21:58:20.17ID:SbIk1F/F0048デフォルトの名無しさん
2016/09/21(水) 22:12:13.86ID:FWWdfGmf0049デフォルトの名無しさん
2016/09/21(水) 22:14:44.76ID:G4TEirIPなんのこっちゃ?クラスだと面倒な事ってなんかあったっけか?
0050デフォルトの名無しさん
2016/09/21(水) 22:52:51.47ID:xTtUsgOH俺も何のことを言ってるのかよく分からなかったけど、
他のObject指向言語と比べるとクラスは一つ一モジュールであるのと
フォルダ階層が切れないのがちょっと不便ではあるかな。
もっともVBAなんだからそれで困るような規模になったらそれなりのフレームワーク使えよって
ことなんだろうなと思って諦めてる
0051デフォルトの名無しさん
2016/09/21(水) 23:09:55.29ID:SbIk1F/Fクラスモジュールはモジュール名がそのままクラスの宣言として使う名前になるから、
例えばApplicationオブジェクトからRangeオブジェクトまでの多層構造みたいなものを名前に意味を持たせつつ作ろうとすると、
画面上がごっちゃごちゃになってしまう欠点がある。
ただの関数なら目的毎に設定した名前の直下に、それぞれ独立した名前を持つ関数を置けるので、
この辺りの管理上の差がでかい。
せめてクラスモジュールというモジュールではなく関数と同じような宣言にして欲しかった。
0052デフォルトの名無しさん
2016/09/21(水) 23:22:32.25ID:OEKSb8ug0053デフォルトの名無しさん
2016/09/22(木) 16:23:03.33ID:ouE1p1JD無理やりオブジェクト指向に対応させたんだからしょうがない
0054デフォルトの名無しさん
2016/09/22(木) 18:07:24.84ID:uwLMVJ9HC++もJavaも実用重視のハイブリッドだから
0055デフォルトの名無しさん
2016/09/22(木) 22:37:36.44ID:yjTU9+gGだから>>54はちょっと的外れ。
0056デフォルトの名無しさん
2016/09/22(木) 22:43:14.46ID:GZW/lvPe0057デフォルトの名無しさん
2016/09/23(金) 05:08:00.16ID:n2ReBx3YOOP自体はやろうと思えばCでもアセンブラでも出来る、というところを理解してないと話がこんがらがりそう。
教則本によってはクラスなんかの機能を指して「これがOOPです」と書いてあるから、
機能そのものが「オブジェクト指向」なるものであると勘違いしてるらしいのが結構いるんだよね。
0058デフォルトの名無しさん
2016/09/24(土) 07:43:16.42ID:PqeOX5ogif 何とか then
a=1
else
a=2
endif
A
a=1
if 何とか then a=2
短い行数で書けるので、
Aの方が良いようなするんだけど、
何か問題ある?
0059デフォルトの名無しさん
2016/09/24(土) 07:53:36.59ID:rzwSyLnj個人で使うものなら何の問題もないと思う
0060デフォルトの名無しさん
2016/09/24(土) 08:05:00.58ID:SZp/zloCa = IIf( なんとか, 1, 2)
0061デフォルトの名無しさん
2016/09/24(土) 08:08:03.58ID:Kv2O3Uaeif 何とか then a=1 else a=2
の方が代入を一回減らせる。まぁ一回あたり何万分の一秒って単位だろうけど。
0062デフォルトの名無しさん
2016/09/24(土) 10:40:17.16ID:tTxE718Q@だと>>61が言ってるように1回変数に代入する回数が多い。
>>60が言ってるBはその「なんとか」に当たる条件によっては途轍もなく重くなる可能性もあるので、
VB.Netでは禁じ手にされているほど。
軽いと分かっているときに使えばいい。
残りのAでいいとは思うけど、可読性から
改行してEnd Ifはつけないといけないという
コーディングルールがある仕事場も多いので
そこだけ気をつければ。
0063デフォルトの名無しさん
2016/09/24(土) 12:00:02.95ID:ywjuOh2L条件分岐を減らして
可読性も配慮してこうする
a=2
if 何とか then
a=1
endif
0064デフォルトの名無しさん
2016/09/24(土) 12:01:15.73ID:cOEdH2sVイベント発生させるにはどうしたらいい?
Intersect(Target, Range("A1:C10"))〜だと
範囲内のどれか1つが書き込まれたときにイベント発生してしまう。
範囲内すべてに書き込まれたときに初めてイベント発生させたいんだが
0065デフォルトの名無しさん
2016/09/24(土) 12:15:31.15ID:2iJ0cqv8要は、その処理が目的なんでしょ?
0066デフォルトの名無しさん
2016/09/24(土) 12:27:32.26ID:1Ily8dcI代入を一回減らせるって
そうなの?
0067デフォルトの名無しさん
2016/09/24(土) 13:16:08.24ID:zS8IzkdZ違う
書き方が1行でも5行でも人間がソースを書く時、見る時の気分が変わるだけで処理は全く同じ
ただしIIfを使うと間違いなく重くなる
0068デフォルトの名無しさん
2016/09/24(土) 13:30:03.40ID:LOklgRF60069デフォルトの名無しさん
2016/09/24(土) 13:32:05.35ID:LOklgRF6a=1+(なんとか)
みたいなの
0070デフォルトの名無しさん
2016/09/24(土) 15:37:16.78ID:Kv2O3Uaeたぶんソースを見誤ってる。
@if 何とか then a=1 else a=2
Aa=2 : if 何とか then a=1
の比較だぞ。
0071デフォルトの名無しさん
2016/09/24(土) 15:44:45.17ID:1Ily8dcI@の方は常に一回
Aの方は一回または二回
だよね?
0072デフォルトの名無しさん
2016/09/24(土) 15:46:14.25ID:NAqJt7eCRange("A1:C10").Count = Application.WorksheetFunction.CountA(Range("A1:C10"))
これで判定
0073デフォルトの名無しさん
2016/09/24(土) 16:01:48.57ID:NAqJt7eC男女による分岐のようなものなら@
血液のRH-のような例外処理ならA
そのほうが他人も読みやすいと思うけど
まぁ個人的な使い分けだけど
0074デフォルトの名無しさん
2016/09/24(土) 16:25:59.23ID:Kv2O3Uaev = range("A1:C10").value
for each x in v
if len(x) = 0 then exit for
next
if len(x) then
処理
end if
という形にすれば。
0075デフォルトの名無しさん
2016/09/24(土) 19:23:24.92ID:TOidze/l0076デフォルトの名無しさん
2016/09/24(土) 21:22:22.86ID:eeyPDFifまぁ実際に例外処理でそう言う分岐使ったりするしね。
もっともここで言う例外処理とは違うみたいだけど。
0077デフォルトの名無しさん
2016/09/24(土) 21:53:14.89ID:cOEdH2sVありがとう試してくる
007858
2016/09/24(土) 22:24:31.06ID:PqeOX5og分岐より代入そのものが重いのね。
IIfはタイプミスかと思ったわw
0079デフォルトの名無しさん
2016/09/24(土) 22:43:00.90ID:zS8IzkdZ(右辺の評価を無視して考えれば)代入そのものは別に重くない
けど不必要な処理はできるだけスキップした方がプログラムの流れが理解しやすい
0080デフォルトの名無しさん
2016/09/25(日) 03:08:09.03ID:vbHA1Pf0実際に式が定数だったら評価するようなコードにコンパイルされるだろうか?
0081デフォルトの名無しさん
2016/09/25(日) 04:16:20.96ID:Jq/Gde1V両方の引数が単純な定数だったとしても、関数呼び出しのオーバーヘッドがあるから重くなるんだよ
0082デフォルトの名無しさん
2016/09/25(日) 07:50:31.92ID:leRSLVp8do while loopとwhile wend
って、
@while wendではできるが、do while loopにできない事って無いんですか?
A仮に、while wendではできるが、do while loopにできない事って無いなら、
なぜこういう似たようなものがあるんですか?
B今、Web上に転がってた他人が書いたコードを見てるんですけど、
繰り返し内にifがあって、そのifにTrueになった場合に抜ける処理(Exit do)が必要な場合Do while loopを使ってて、
繰り返し内にifが無く、while [condition]のcondition で抜ければ十分な場合、while wendを使ってるみたいなのですが、
これ何か処理上でメリットがある物なのでしょうか。
よろしくお姉害します。
0083デフォルトの名無しさん
2016/09/25(日) 09:04:12.78ID:WsJwhBfK同じ
ただし、do loopは評価位置(while)を始めか最後か可変可能
A
開発者に聞いてくれ
B
書いた人に聞いてくれ
あと文が長くて意図を読みとり難い
>>今、〜ですけど、〜があって、〜場合に〜を使ってて、〜が無く、〜な場合、〜なのですが、これ何か処理上でメリットがある物なのでしょうか。
0084デフォルトの名無しさん
2016/09/25(日) 09:29:04.94ID:leRSLVp8ありがとうございます。
A、Bについては書いた人じゃないとわからない意図があるんですね。
0085デフォルトの名無しさん
2016/09/25(日) 09:52:27.12ID:c4zbHkgZhttp://hirama.jp/pc/langcomp/while.html
にはwhile wendに関してこう書かれている
>古い BASIC との互換性を保つための書式で、あまり複雑な制御は出来ません。
実際、Do Loop はwhile wend の完全上位互換なんだから
宗教の戒律とか、父の遺言とか、キーボードの
0086デフォルトの名無しさん
2016/09/25(日) 09:56:46.52ID:c4zbHkgZダブルクォーテーション使ったらうまく投稿できないんだっけか…orz
オチが消えちゃったのでそこだけ再投稿
実際、Do Loop はwhile wend の完全上位互換なんだから
宗教の戒律とか、父の遺言とか、キーボードの 「o」が壊れてるとか、
そういう個人的な理由がない限り while wend を使う必要なんてまったくない
って書いてたんよ(元の書き込みでは「」部分がダブルクォーテーションだった)
0087デフォルトの名無しさん
2016/09/25(日) 10:05:00.40ID:X1jQqxRe0088デフォルトの名無しさん
2016/09/25(日) 11:06:53.40ID:5fN6GCqb関数名 = 値 って書くの最初は違和感あったけど、
今ではコピーが代入されるという挙動がはっきりしてていいと思うようになってきた。
0089デフォルトの名無しさん
2016/09/25(日) 11:22:45.88ID:leRSLVp8>>86
ありがとうございます。
ネットで見てみると、Do〜Loop派の方が多いってのも納得がいきました。
古い記法なんですね。
プログラミングっぽいプログラミングは初めてやっているのですが、
何かこう感覚と違うなぁ・・ってのがあってまだ戸惑っております。
Do while A Or Bと、Do while A And Bってのもどうも感覚と逆ですし、
(Or→どっちか満たせば、ループ終了、And→両方満たせば、ループ終了というのが感覚です)
また何かありましたらよろしくお願いします。
0090デフォルトの名無しさん
2016/09/25(日) 11:28:39.21ID:5fN6GCqb「while」だから終了条件を表してるんじゃなくて継続条件を表している
0091デフォルトの名無しさん
2016/09/25(日) 11:38:35.42ID:LockcY+Freturnは「Aレジスタへの書き込み」で、関数名 = 値は「指定アドレスへの書き込み」っていう違いがあるんじゃねぇかな。
0092デフォルトの名無しさん
2016/09/25(日) 11:39:52.71ID:kOqmTZW8[条件]を終了条件にしたいなら
Do While [条件] 〜 Loop を
Do Until [条件] 〜 Loop にすればいい
0093デフォルトの名無しさん
2016/09/25(日) 11:57:38.20ID:5fN6GCqbFunction funcA() As Variant
・・・
FuncA = 計算結果
End Function
・・・
v = funcA()
としたとき指定アドレスはvの位置になるね。
代入式は
FuncA =
v =
の2か所あるけど、その両方でコピー動作が発生するわけじゃない。
0094デフォルトの名無しさん
2016/09/25(日) 14:25:13.29ID:X1jQqxReAレジスタって何?
アキュムレーターなら知ってるけど。
0095デフォルトの名無しさん
2016/09/25(日) 14:45:43.68ID:LockcY+F正確にいつのCPUからアキュムレータが無くなったのかは知らないけど、
今はメインで使うレジスタに対する俗称に過ぎないから、
あたかもアキュムレータがあるかのように語るとまた別のところから突っ込みが入る。
そしてC言語はx86ではAL・AH・AX・EAX・RAXに関数の戻り値を入れる・・・はず。
0096デフォルトの名無しさん
2016/09/25(日) 17:37:39.59ID:Nz1Dz/ycっていうかおまえらがマシン語と思っているモノはインタプリタ動作しているんだけどな。
0097デフォルトの名無しさん
2016/09/25(日) 17:57:07.26ID:X1jQqxReまぁ普通に考えたら値型はスタックに格納してそれを使うだろうし、
参照型ならスタックに参照アドレスを格納してそれを返す気がするよな。
0098デフォルトの名無しさん
2016/09/25(日) 18:23:32.33ID:LockcY+FとりあえずC++では
https://msdn.microsoft.com/ja-jp/library/7572ztz4.aspx
にあるようにRAXレジスタ(128bitはXMM0)で返す事になってるみたいだが。
0099デフォルトの名無しさん
2016/09/25(日) 18:45:36.70ID:5fN6GCqb0100デフォルトの名無しさん
2016/09/25(日) 20:48:41.03ID:w1FIqJRkif で -100 から 100 以外の数字を判定したい場合はどう書けばいいのでしょうか?
101 や -100.01がTrue になるようにしたいのですが。 よろしくお願いいたします。
0101デフォルトの名無しさん
2016/09/25(日) 21:02:09.32ID:LockcY+Fabs(x) > 100
0102デフォルトの名無しさん
2016/09/25(日) 21:04:37.09ID:JBbCgXB6ありがとうございます。
2つの数字は変動して同じではない場合もあるのですが、、
-5 to 90000 意外などです。
0103デフォルトの名無しさん
2016/09/25(日) 21:42:26.57ID:Jq/Gde1V0104デフォルトの名無しさん
2016/09/25(日) 21:45:35.23ID:JBbCgXB6うひょこれはわかりませんでした。どうもありがとうございました!
>>101
重ねて高度な回答をありがとうございました。
0105デフォルトの名無しさん
2016/09/25(日) 22:08:16.90ID:BbO+P/NYif not (a >= -100 and a <= 100) then
end if
0106デフォルトの名無しさん
2016/09/25(日) 22:46:49.49ID:NHBiFXSOよく理解できましたありがとうございます。
0107デフォルトの名無しさん
2016/09/25(日) 23:09:38.88ID:WsJwhBfK個人的に不等号の向きは揃えたい
0108デフォルトの名無しさん
2016/09/26(月) 00:06:37.58ID:dKQ8SjzD0109デフォルトの名無しさん
2016/09/26(月) 19:35:17.11ID:BSCtXQVrend if
だろ
0110デフォルトの名無しさん
2016/09/26(月) 20:08:36.76ID:Yfirxt2qIf XyoriookiikaYyorichiisai(a, -100, 100) Then
にしないと
0111デフォルトの名無しさん
2016/09/26(月) 20:19:06.75ID:LsiBG9tt動かすとなぜかTera Termマクロまで固まってしまう。。
Shellだから非同期でTera Termマクロを実行してくれると期待してたんだけど。。
誰かなぜだかわかる?
0112デフォルトの名無しさん
2016/09/26(月) 21:21:02.62ID:BSCtXQVr俺も丁度勉強しようと思ってたとこなんだけど忙しくてなかなか手をだせないんだよなぁ
0113デフォルトの名無しさん
2016/09/27(火) 01:07:11.61ID:5qoNk6hy0114デフォルトの名無しさん
2016/09/27(火) 01:57:03.60ID:MbOb5QGW0115デフォルトの名無しさん
2016/09/27(火) 16:02:33.94ID:XN1tBgzC0116デフォルトの名無しさん
2016/09/27(火) 16:55:17.51ID:R4UIFVe00117デフォルトの名無しさん
2016/09/27(火) 17:09:08.59ID:HdmVWQSHCells(i , j)で変数を操作すれば良いだけだから
もっぱらCells形式でやってる。
0118デフォルトの名無しさん
2016/09/27(火) 17:10:34.51ID:dL5JNQU60119117
2016/09/27(火) 18:19:29.52ID:HdmVWQSH117で書いたのはあくまでもコーディングがその方が楽だからってことで。
0120デフォルトの名無しさん
2016/09/27(火) 18:59:52.69ID:bFdF3zA0計測してみればいいんじゃね?
0121デフォルトの名無しさん
2016/09/27(火) 19:57:55.17ID:xyD+O9Idその分だけ遅くなるっていう理屈だった気がする。
処理速度を気にするなら配列に入れてから処理した方がいいけどね。
0122デフォルトの名無しさん
2016/09/27(火) 20:16:58.37ID:XN1tBgzCRangeなんて、使っちゃダメ。おそいよ!!って
0123デフォルトの名無しさん
2016/09/27(火) 20:21:26.97ID:5qoNk6hy1セルだけ操作するならCellsの方が速いだろうけど。
0124デフォルトの名無しさん
2016/09/27(火) 20:22:01.78ID:QqTEjS1x0125デフォルトの名無しさん
2016/09/27(火) 22:20:48.40ID:HdmVWQSHVBAである単語(自分で作った変数)が使われているブックをリストアップというか、
探し出したい。こういう時っていちちブックを開いて確認していかないとダメなのかな?
何かブック間で使われている変数の検索手立てってあります?テキストエディタでいう
ところのgrepみたいなものを想定しているんだけど。
0126デフォルトの名無しさん
2016/09/27(火) 22:34:42.15ID:xyD+O9Idセキュリティセンターから「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェック入れておくと
Sub test()
Debug.Print ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(1, 3)
End Sub
という形で自身を吐き出す事が出来るんで、これ応用してみるとか。
0127デフォルトの名無しさん
2016/09/27(火) 23:07:30.64ID:HdmVWQSH何やら難しそうな…w それ、調べてみます。ありがとう
0128デフォルトの名無しさん
2016/09/28(水) 18:33:14.02ID:1e7C4OQD0129デフォルトの名無しさん
2016/09/28(水) 19:48:00.35ID:CMcQfU1+30万レコードのExcelから、●●を含むレコードを検索し、それに絡むレコード情報をひっぱり、別シートに一覧を作りたいとする。
一般的にはループでいく?。FindNextでいく?。
0130デフォルトの名無しさん
2016/09/28(水) 20:01:58.91ID:hvsJw4m/それか配列でFor
0131デフォルトの名無しさん
2016/09/28(水) 20:02:50.22ID:hvsJw4m/○ SQL
0132デフォルトの名無しさん
2016/09/28(水) 20:10:59.37ID:QXsV9Lll0133デフォルトの名無しさん
2016/09/28(水) 20:19:41.30ID:CMcQfU1+0134デフォルトの名無しさん
2016/09/28(水) 20:24:50.19ID:CZRqgB7ZフリーのRDBいくらでもあるよ。SQLServerExpressでも良いだろうし。
>>128
そういう手もあるんですな。考えてみます。
0135デフォルトの名無しさん
2016/09/28(水) 20:55:21.98ID:tSS67kgdadoでシートにsqlで検索
まーらくちん
0136デフォルトの名無しさん
2016/09/28(水) 21:46:26.40ID:2vtat6Ybadoでエクセル接続すると最初の何行かにもとづいて列のデータ型が自動判定される
その場合、たとえば数値と判定されたあと文字列が出現すると恐ろしいことにエラーも出ずにnullになる
adoでエクセル接続するのはやってはいけない禁忌
一度csvにしてschema.iniという定義ファイル用意したうえでado接続するか、db使うべき
0137デフォルトの名無しさん
2016/09/28(水) 21:54:39.73ID:QXsV9Lll0138デフォルトの名無しさん
2016/09/28(水) 22:02:18.68ID:mx6jwlppバカとハサミは使いようなのさ。
0139デフォルトの名無しさん
2016/09/28(水) 22:06:22.01ID:iRhzKGOO列ごとに表示形式を指定しておいた方がいいね
0140デフォルトの名無しさん
2016/09/28(水) 22:18:00.03ID:1e7C4OQDEXCELシートにADOで接続して、パフォーマンスどんなもんなん?
0141デフォルトの名無しさん
2016/09/28(水) 22:18:15.69ID:qqEtXyLk表示形式関係なし
回避方法も存在しない
https://support.microsoft.com/ja-jp/kb/278973
dao使っても同じ
https://support.microsoft.com/ja-jp/kb/194124
accessにインポートするのはウィザードでデータ型指定できるから問題ない
0142デフォルトの名無しさん
2016/09/28(水) 22:20:37.90ID:iRhzKGOOそうなんだ。。。
自分は直ODBCで読み込んで、表示形式で結果が変わったのを確認した。
0143デフォルトの名無しさん
2016/09/28(水) 22:22:00.69ID:/IYvXq3l0144デフォルトの名無しさん
2016/09/28(水) 22:25:46.25ID:mx6jwlpp検索加工結合といった観点なら良い。
rdbmsを常用してるやつなら分かると思う。
コード構造がスッキリするぞ。
0145デフォルトの名無しさん
2016/09/28(水) 22:27:01.71ID:mx6jwlpp加工結合の観点が抜けてる。
0146デフォルトの名無しさん
2016/09/28(水) 22:31:49.98ID:/IYvXq3l加工結合てなんだよw意味不明なオレオレ用語使って自己満足の言い訳すんなガキw
0147デフォルトの名無しさん
2016/09/28(水) 22:33:09.02ID:mx6jwlpp0148デフォルトの名無しさん
2016/09/28(水) 22:40:20.14ID:mx6jwlpp加工は演算やデータ整形。
結合はsqlでいうjoinに対応する。
select
cotnt(レス)
from
ID:/IYvXq3l
join 当
0149デフォルトの名無しさん
2016/09/28(水) 22:42:03.95ID:mx6jwlpp加工は演算やデータ整形。
結合はsqlでいうjoinに対応する。
select
cotnt(レス)
from
ID:/IYvXq3l
join 他スレ
当すれid=他スレid
結果
バカ発見w
0150デフォルトの名無しさん
2016/09/28(水) 22:47:45.79ID:/IYvXq3lお前なあ…
悔しいのは分かるけどいくら2chだからって無能ばかりじゃないんだぜ
僕勉強しました!って自慢したかったら素直に自分の身の回りだけにしよけよ
0151デフォルトの名無しさん
2016/09/28(水) 22:58:21.57ID:HiV0V+GFそれからさっきの説明適当だから。
なのに勉強とかw
0152デフォルトの名無しさん
2016/09/28(水) 23:05:02.92ID:cf+GMFaQ0153デフォルトの名無しさん
2016/09/28(水) 23:10:03.34ID:hvsJw4m/バカ、秘密だ!
0154デフォルトの名無しさん
2016/09/29(木) 00:05:16.80ID:+rOx+d2BExcelから、作画された図面とデータを連動性させたいのよ。
できるだけ、一つのbookのみで完結したくてね。
0155デフォルトの名無しさん
2016/09/29(木) 00:06:28.20ID:+rOx+d2Bまちがえた。Excelで作画された図面
0156デフォルトの名無しさん
2016/09/29(木) 07:01:30.72ID:eVR1TIX2EXCELのセルで指定された型で不十分というのなら
SQLで指定すればいいじゃない
0157デフォルトの名無しさん
2016/09/29(木) 08:15:46.82ID:DwfUORMdID:/IYvXq3l
バカ晒して
いいようにあしらわれて
なんか可哀想
0158デフォルトの名無しさん
2016/09/29(木) 12:28:44.84ID:gYTv7Thyその意味不明な態度はお前にとってどんなメリットがあるんだよ
お前のレスからはまるで合理性が感じられんよ
0159デフォルトの名無しさん
2016/09/29(木) 20:25:01.42ID:swUsBbZp更に弱い者を叩く〜♪
0160デフォルトの名無しさん
2016/09/29(木) 21:26:50.88ID:33/rSwr+自BookのデータもSQLで抜き取れる
0161デフォルトの名無しさん
2016/09/29(木) 22:05:13.96ID:O16LdL8vオイwなんで俺が更に弱い者みたいな扱いなんだよw
0162デフォルトの名無しさん
2016/09/29(木) 22:56:20.42ID:DwfUORMd図形に連動するデータが
わからん。
どんな利用シーン?
0163デフォルトの名無しさん
2016/09/29(木) 23:07:39.92ID:jpqqcMKLまあ、系統図的なものだけど、図形の名前にID振って、それとデータを連動させる。
ユーザーが図形を洗濯したら、IDをもとに多種多様な形式でデータを閲覧者させるのよ。
0164デフォルトの名無しさん
2016/09/29(木) 23:32:40.31ID:DwfUORMd面白い
ありがと
0165デフォルトの名無しさん
2016/09/29(木) 23:40:30.83ID:ko3apcYK0166デフォルトの名無しさん
2016/09/29(木) 23:42:29.52ID:+rOx+d2B予測変換で日本語おかしくなってるけど、通じてくれてると助かる
0167デフォルトの名無しさん
2016/10/01(土) 00:38:54.87ID:bCxX8rsYIEだと思ってたのが、実はEdgeだったとか?
0168デフォルトの名無しさん
2016/10/01(土) 14:26:13.29ID:YuIsEcyK0169デフォルトの名無しさん
2016/10/02(日) 02:24:09.42ID:P5/c+F9i現在Excel上のvbaからsqlを使用し、
accessの2つのテーブルをリレーションさせデータを取得するツールを作成しております。
そこで1点質問がございます。
このリレーションを記述する方法が
普段のリレーションとは異なりよい方法が
思い浮かばず苦戦しております。
「ある条件」とは
Aのテーブルのある項目で「〇〇」というデータ
Bのテーブルのある項目で「コード番号〇〇」というデータがあります。
この〇〇同士でリレーションさせるというものなのですが、普段使うリレーションの
記載方法では出来ません。
何かリレーションもしくは他に良い方法ご
無いものでしょうか?
長文大変失礼致しました。
不明な点あればぜひ聞かれてください。
0170デフォルトの名無しさん
2016/10/02(日) 02:32:06.76ID:z9CrEV1Ewhereでlike演算子で曖昧検索
0171デフォルトの名無しさん
2016/10/02(日) 02:57:38.30ID:P5/c+F9i私もlike演算子が使えるのではないかと
思ったのですが、抽出するデータは
〇〇とコード番号〇〇で一致するものだけでなく、△△とコード番号△△の場合と
複数のパターンが考えられるため、like演算子を使用する場合だと複数の条件はどうすればよいかと
悩んで降ります。
0172デフォルトの名無しさん
2016/10/02(日) 06:24:49.17ID:jCbeZdLq0173デフォルトの名無しさん
2016/10/02(日) 08:03:13.16ID:tQSn6Er/フィールド名でLike。
0174デフォルトの名無しさん
2016/10/02(日) 08:07:01.06ID:z9CrEV1E以下すべてsql
案1
文字結合like演算子
Bコード like `%`|| Aコード
案2
文字結合
Bコード = `コード番号`||Aコード
案3
文字置換
Aコード = replace(Bコード,`コード番号`)
案4
案3の正規表現
0175デフォルトの名無しさん
2016/10/02(日) 10:56:16.21ID:Z7pSw8C+0176デフォルトの名無しさん
2016/10/02(日) 11:05:53.28ID:Dc4CSNN9取り込んだ後に汎用アルゴリズムで処理した方がいいような・・・
0177デフォルトの名無しさん
2016/10/02(日) 11:39:30.68ID:I2UZY42b処理する件数によるけど
> 取り込んだ後に汎用アルゴリズムで処理した方がいいような・・・
はないわ
0178デフォルトの名無しさん
2016/10/02(日) 12:31:28.73ID:563QImfrなぜ?
汎用アルゴリズムのライブラリの手持ちがあればって条件付きにはなるけど、
SQLよりはいいでしよ。
0179デフォルトの名無しさん
2016/10/02(日) 12:51:43.12ID:SqpbWqXm0180デフォルトの名無しさん
2016/10/02(日) 12:59:32.73ID:563QImfr>>176は全然断定的ではないよね?
0181デフォルトの名無しさん
2016/10/02(日) 13:02:03.58ID:Z7pSw8C+問題の解決策になり得る手段を提示すべき。
否定やらなんやらでゴチャゴチャやるのは質問が終わってからにしろ。
0182デフォルトの名無しさん
2016/10/02(日) 13:02:17.48ID:HEAFBxCU0183デフォルトの名無しさん
2016/10/02(日) 13:03:29.88ID:I2UZY42bSQL の処理系書いた奴より優秀だ
って言うなら止めないけど
そんな奴が >>169 みたいな質問すると思う?
0184デフォルトの名無しさん
2016/10/02(日) 13:16:03.97ID:563QImfrそれはそうなので済まないんだけど、自分も質問したいんだよね。
なんでSQLがいいのか。
0185デフォルトの名無しさん
2016/10/02(日) 13:26:09.05ID:Z7pSw8C+Accessに取り込んだデータなら、SQLで解決するのが生産性も保守性も高い。
あと「汎用アルゴリズム」っていうアルゴリズムがあるわけではなく、
適用可能なケースが多ければ「汎用」と呼ぶだけなんで「汎用アルゴリズムによる解決」は漠然としすぎ。
0186デフォルトの名無しさん
2016/10/02(日) 13:26:11.81ID:LuSEImMd0187デフォルトの名無しさん
2016/10/02(日) 13:27:23.28ID:LuSEImMdsqlの処理系より正確で早い処理をかけるかどうかじゃねーの?
0188デフォルトの名無しさん
2016/10/02(日) 14:15:36.65ID:z9CrEV1E汎用アルゴリズムとは
一体どんなものを指してるのか?
0189デフォルトの名無しさん
2016/10/02(日) 14:19:44.31ID:z9CrEV1E今回の件なら結合があるから
vbaでやるより良手。
vbaからループが無くなる。
0190デフォルトの名無しさん
2016/10/02(日) 14:21:31.32ID:z9CrEV1Eその汎用ライブラリに入ってるよ。
0191デフォルトの名無しさん
2016/10/02(日) 14:41:31.89ID:563QImfrサーチ、ソート、マッピング、フィルタリング等のいわゆるアルゴリズム。
有名どころから自作までいろいろ選択できる前提で語ってました。
0192デフォルトの名無しさん
2016/10/02(日) 14:51:11.37ID:z9CrEV1Eサーチ select
ソート order by
マッピング join
フィルタリング where
上記4つを同時に実現できるのはメリット
でsqlの存在意義だと思う。
0193デフォルトの名無しさん
2016/10/02(日) 15:25:08.98ID:563QImfrなるほど。
ただ>>169氏の質問をみたとき、マスター系のテーブルだろうなあ、と思った。
その内容をいろんな角度から参照するため複数回クエリーするんだろうなあ、と。
自分はそういう場合、必要な範囲全件読んでオブジェクトの列としてメモリ上に持っとくパターンが多い。
そもそもの前提が>>169の状況にマッチしてないかもだから、言い過ぎたかも知れない。
0194デフォルトの名無しさん
2016/10/02(日) 15:45:27.02ID:wePFQlkp> サーチ select
> フィルタリング where
同じじゃね?
0195デフォルトの名無しさん
2016/10/02(日) 15:51:17.15ID:wePFQlkpお前は SQL って言うか DBMS について調べてから出直せよ
人に意見できるレベルじゃないぞ
0196デフォルトの名無しさん
2016/10/02(日) 15:59:29.91ID:Z7pSw8C+ただ質問スレみたいな初心者が来るところでやられると迷惑だからやめて欲しい。
0197デフォルトの名無しさん
2016/10/02(日) 16:05:11.58ID:SROemhUJ>何かリレーションもしくは他に良い方法ご無いものでしょうか?
ってあるんだからデータベース板のアクセススレでどういうSQL書けば良いか
聞いてそれ実行すれば良いだろ?それはしたのか?>>168
それをした上でここで書いてんだったらSQLがどうのこうのって話をここで
しなくても済むだろ?まずデータベース板のアクセススレに行ってこいよ
0198デフォルトの名無しさん
2016/10/02(日) 16:11:54.65ID:563QImfrちょっとわからない
>>193に間違えてる点あるなら教えてよ
0199デフォルトの名無しさん
2016/10/02(日) 16:27:16.68ID:I2UZY42b> その内容をいろんな角度から参照するため複数回クエリーするんだろうなあ、と。
勝手な思い込みで
> 自分はそういう場合、必要な範囲全件読んでオブジェクトの列としてメモリ上に持っとくパターンが多い。
みたいなオレオレ方式を開陳されても困るって話だろ
0200デフォルトの名無しさん
2016/10/02(日) 16:56:10.12ID:563QImfr確かに推測で語ったけどExcelのアプリだからね。
コマンド叩いて処理が完了したら終わるプログラムと違って、閉じるまではデータを抱えているわけだし。
このボタン押したらある処理をやり、別のボタン押したら他の処理をやる。そのとき使うマスターデータ群は一緒。
けっこう典型的だと思うんだが...
0201デフォルトの名無しさん
2016/10/02(日) 18:24:54.65ID:I2UZY42b要件ぐらい確認しろよ...
> accessの2つのテーブルをリレーションさせデータを取得するツールを作成しております。
0202デフォルトの名無しさん
2016/10/02(日) 18:53:50.86ID:XrTAfFf6まあまあ、実際にはACCESSで>>174の3番目辺りでクエリ組んでおけば済む話ではあるんだが
よく使う部分はEXCELでメモリに残しておいた方が効率いいんじゃないかって言いたいんだろうな。
答えだけ言って置くと、特に条件がない場合はそれはないな。
.NetではLinqというものがそれに該当するけど遅いので使用禁止になっているところも多い。
基本、こう言ったものは手続き型言語より集約型言語の方が得意分野で
INDEXも貼る事が出来るから当然検索も早く出来る可能性が高い。
ただ、使うデータがテーブルの極一部であることが決まっていて、
それを先に抽出しておけるなら、EXCELのシートとかに展開しておいてそれを使うのも有りと言えば有り。
つまり元々使用するデータを小さいビューに纏めて置くことが出来るのであれば、
以降態々大きなテーブルから検索しなくてもいいと言うこと。
ただ今回の要件にそれは含まれていないから考慮しないってだけ。
0203デフォルトの名無しさん
2016/10/02(日) 18:58:02.14ID:kPn//wmbエクセルスレで幼稚で間違ったDB論語ってないでデータベース板に行けば?
そしたら完膚無きまでに論破してやるから
0204デフォルトの名無しさん
2016/10/02(日) 19:09:46.13ID:XrTAfFf60205デフォルトの名無しさん
2016/10/02(日) 19:14:53.23ID:z9CrEV1E興味ある
削除フラグを論じて下さい
そして記載が終わったら連絡下さい
0206デフォルトの名無しさん
2016/10/02(日) 19:22:17.75ID:MrUKlr4Wちんけな知識自慢要らんわ
0207デフォルトの名無しさん
2016/10/02(日) 19:25:54.10ID:XrTAfFf6おまえのちんこよりは役に立ってるかもよ
0208デフォルトの名無しさん
2016/10/02(日) 19:27:44.46ID:kPn//wmbいやお前の知識はちんけというより全て間違っているぞw
0209デフォルトの名無しさん
2016/10/02(日) 19:31:37.20ID:XrTAfFf60210デフォルトの名無しさん
2016/10/02(日) 19:50:06.95ID:N6X9aY0s皆様のご回答ありがとうございます。
四苦八苦しつつ今日も作成していましたが
やはり上手くいきませんでした…
0211デフォルトの名無しさん
2016/10/02(日) 19:51:31.08ID:563QImfr具体的には読み出した値をちまちまとProperty Set するとかコレクション構築するとかさ。
それはメモリ上に取って置いときたい。
要件確認してないって言われたのでそれは反省する。
0212デフォルトの名無しさん
2016/10/02(日) 20:01:56.85ID:I2UZY42b> 具体的には読み出した値をちまちまとProperty Set するとかコレクション構築するとかさ。
勝手な思い込みは要らん
って言われたはずだが?
0213デフォルトの名無しさん
2016/10/02(日) 20:12:49.63ID:kPn//wmbお前さあw
お前より>>211の方が遥かに高度が知識を持ってるんだから
そういうみっともない強がりはやめたら?
どうしてこのスレは意味もなく上に立ちたがるガキばっかなのかねえw
0214デフォルトの名無しさん
2016/10/02(日) 20:17:30.72ID:/NJe37n/ハア?質問者に対して反省してるんであってお前に対してじゃ寝ーよ馬鹿が。
だいたい何らかの仮定をおかないと回答できねえじゃねえか。
俺は俺の考える「ありそうなパターン」に応じて答えたんであってそれが当たってるかどうかは質問者が判断すればいいこと。
0215デフォルトの名無しさん
2016/10/02(日) 20:21:32.00ID:SROemhUJだからデータベース板のアクセス板に逝けって言ってんだよクソボケ
0216デフォルトの名無しさん
2016/10/02(日) 20:22:10.74ID:SROemhUJ訂正
だからデータベース板のアクセススレに逝けって言ってんだよクソボケ
0217デフォルトの名無しさん
2016/10/02(日) 20:26:57.73ID:XrTAfFf6出力するときの加工とかにコレクションを使ったりするのは分かる。
けど、IEnumelableも備えていないVBAでプロパティ(しかもSetと言うことはインスタンス)を
加工やら何やらに使うほど大袈裟な作りにする必要ってあるんだろうか?
どんなことに使う想定?
0218デフォルトの名無しさん
2016/10/02(日) 20:27:11.52ID:z9CrEV1Eでは検証観点替えてみはどう?
データに微妙な違いがあるのでないかい?
例えば文頭文末の空白、全半角といった類い。
一つだけデータをシートで関数で
比較してみたら。
エディタに張り付けると空白が、可視化
できたるする。
0219デフォルトの名無しさん
2016/10/02(日) 20:28:40.17ID:z9CrEV1E完了予定日はいつ?
楽しみです。
0220デフォルトの名無しさん
2016/10/02(日) 20:30:12.88ID:kPn//wmbお前はバカなんだから黙ってろw
0221デフォルトの名無しさん
2016/10/02(日) 20:31:22.98ID:kPn//wmbん?何だお前?
0222デフォルトの名無しさん
2016/10/02(日) 20:32:14.62ID:XrTAfFf60223デフォルトの名無しさん
2016/10/02(日) 20:32:45.08ID:z9CrEV1Esql上手く行かないから
vbaでの検証方法を
アドバイスしてみたら?
0224デフォルトの名無しさん
2016/10/02(日) 20:33:19.54ID:Z7pSw8C+クエリ自体を理解できてないようだから、Accessで直接弄って試行錯誤してからの方がいいよ。
VBAで間接的に弄るとかは、両方に精通してからにしよう。
0225デフォルトの名無しさん
2016/10/02(日) 20:33:56.46ID:z9CrEV1E>>203
だよ
テーマは削除フラグ提案してます
0226デフォルトの名無しさん
2016/10/02(日) 20:35:31.44ID:kPn//wmbいやだから何?データベース行ったのお前?
0227デフォルトの名無しさん
2016/10/02(日) 20:35:34.88ID:I2UZY42b> 遥かに高度が知識を持ってる
日本語もまともに使えないのかよ w
あと高度かどうかなんて関係ないから
>>214
あさっての仮定置いてバカみたい
ってはっきり言った方がいい?
そもそもそう言うのは質問スレだと迷惑だって >>196 に言われてるだろ
0228デフォルトの名無しさん
2016/10/02(日) 20:37:10.83ID:kPn//wmbお前もバカなんだからもう黙っとけw
0229デフォルトの名無しさん
2016/10/02(日) 20:42:02.74ID:z9CrEV1E行ってる。
スレ
http://echo.2ch.net/test/read.cgi/db/1468932188/4
0230デフォルトの名無しさん
2016/10/02(日) 20:46:00.04ID:kPn//wmbなんでよりによってアクセススレなんだよwヘタレがw
0231デフォルトの名無しさん
2016/10/02(日) 20:49:15.78ID:IZYoHPa0あれ?
それともDBって基本的な考え方が一緒だから
ORACLEやSQLSERVERとかでもいいとか思っちゃってた?
0232デフォルトの名無しさん
2016/10/02(日) 20:52:00.95ID:z9CrEV1E後だしかよ。
データベース板しか言ってないだろ。
始めるにあたり必要な要件を挙げて。
小出しは面倒。
できる範囲でやるよ。
0233デフォルトの名無しさん
2016/10/02(日) 20:55:26.40ID:kPn//wmbいや後だしもクソもお前削除フラグについて語りたいんだろw
DB設計かなんかのスレじゃなかったっけ?前やってたの
もうとっくに飽きられてるけどなw
後はもうアクセススレでやれ俺も行くからw
0234デフォルトの名無しさん
2016/10/02(日) 21:02:07.09ID:I2UZY42b>>222
0235デフォルトの名無しさん
2016/10/02(日) 21:02:12.00ID:z9CrEV1E始めた
0236デフォルトの名無しさん
2016/10/02(日) 21:12:24.81ID:XrTAfFf6そもそも今回の話題は最初からスレ違いだったしな。
0237デフォルトの名無しさん
2016/10/02(日) 21:19:05.20ID:kPn//wmbおいwなんでお前が締めてんだよw
お前もあっちに行けば>>202の間違いについて語るぞw
0238デフォルトの名無しさん
2016/10/02(日) 21:27:36.25ID:XrTAfFf6正直次の日月曜日で気分が滅入ってて
ぎゃーぎゃーやる気分じゃないんだ。
とりあえずそっちはそっちで答えてあげればいいんじゃない?
0239デフォルトの名無しさん
2016/10/02(日) 21:30:50.09ID:kPn//wmbだからその無意味な上から目線やめろw
それが全ての禍根だw
0240デフォルトの名無しさん
2016/10/02(日) 21:35:25.37ID:XrTAfFf6だが俺にとってちびまる子ちゃんと
サザエさんは天敵なのさ
0241デフォルトの名無しさん
2016/10/02(日) 22:09:47.74ID:I2UZY42b0242デフォルトの名無しさん
2016/10/02(日) 22:31:36.82ID:jCbeZdLqだからその無意味な上から目線やめろw
それが全ての禍根だw
0243デフォルトの名無しさん
2016/10/02(日) 22:44:26.50ID:kPn//wmbは?何で突然お前が絡んでくるんだよw面倒くせーよお前w
0244デフォルトの名無しさん
2016/10/02(日) 23:39:20.35ID:XrTAfFf60245デフォルトの名無しさん
2016/10/03(月) 00:59:59.02ID:bAB4hkMKだからその無意味な上から目線やめろw
それが全ての禍根だw
0246デフォルトの名無しさん
2016/10/03(月) 04:02:15.68ID:aqlWwy5x気に入らないならそいつの主旨に反論するか、出来ないならスルーしとけ
0247デフォルトの名無しさん
2016/10/03(月) 21:13:40.02ID:6aFrnC92遅レスだが、
>有名どころから自作までいろいろ選択できる前提で語ってました。
汎用アルゴリズムのVBAライブラリの有名どころってどういうの?
そういうのあまり知らないけど仕事でも使えるんだろうか。
0248デフォルトの名無しさん
2016/10/03(月) 22:00:45.51ID:JnCMPlAr参照設定で使用可能になる
機能とか。
例えばソルバー、ADOとか
0249デフォルトの名無しさん
2016/10/03(月) 23:54:13.74ID:aV2esLKeアドバイス通り、配列やったら処理時間激減しました。
ありがとうです!!
0250デフォルトの名無しさん
2016/10/04(火) 00:25:18.44ID:kYsgZgns0251デフォルトの名無しさん
2016/10/04(火) 14:03:43.51ID:2cOlNhmt0252デフォルトの名無しさん
2016/10/04(火) 18:05:04.97ID:3QsqaDAihttps://www.wareko.jp/wordpress/?p=17508
にある洋書
0253デフォルトの名無しさん
2016/10/04(火) 19:44:03.88ID:fCtFz61+0254デフォルトの名無しさん
2016/10/04(火) 19:46:40.53ID:fCtFz61+職場で使っている人がいるけど
ドットで始まる行のコードはその前にあるべきWithを探さねばならないし
いちいち頭でそれを補ってコードを解釈しないとならない。
他言語ではこういうWithがあるものってマレだよね?
0255デフォルトの名無しさん
2016/10/04(火) 19:58:46.49ID:4cFMscS10256デフォルトの名無しさん
2016/10/04(火) 20:03:01.19ID:luzzRI32まぁVBAはローカル変数がない代わりみたいなもんだろ。
With Newの使い勝手の良さは異常。
0257デフォルトの名無しさん
2016/10/04(火) 20:38:22.16ID:g1jJRFKk他の言語でもあればいいのにって思うわ(知らんけど)
0258デフォルトの名無しさん
2016/10/04(火) 20:38:58.89ID:2AWlMUg/With を探さないといけないぐらい広範囲に使うのは見辛いわな
ただ普通はインデントしてるだろうし 20行程度ならそんなに苦じゃないと思うが
0259デフォルトの名無しさん
2016/10/04(火) 20:58:50.57ID:pK2NF8fu例えばセル範囲を指定するとき
同じブックの同じシートにあるセルを参照するとして
ブックとシートでWith切っておくと逆に見易くなる例もある。
インスタンスの入った変数でさえ記述すると見辛くなるときに使うかなぁ。
もっともその辺は部品化しとけばもっと簡潔に纏ったりするけどね。
0260デフォルトの名無しさん
2016/10/04(火) 21:06:20.03ID:kYsgZgnsローカル変数?
0261デフォルトの名無しさん
2016/10/04(火) 21:08:05.39ID:luzzRI32如何にその言語に習熟しているかで決まるから、見やすい見にくいはあんまり気にしても仕方ないんじゃないかな。
0262デフォルトの名無しさん
2016/10/04(火) 21:15:15.58ID:kLakclq7あとはコメントで補完
0263デフォルトの名無しさん
2016/10/04(火) 21:23:12.88ID:pK2NF8fu何の為にやってるかだけ書こうと努力はしてるけど
中々難しい。
0264デフォルトの名無しさん
2016/10/04(火) 21:34:42.19ID:ixQnj8Kq> 何の為にやってるかだけ書こうと努力はしてるけど
こういうのが良いコメントの例として言葉だけ一人歩きしてるけど
本来このコメントは主に速度の為に難解なコードを書かざるを得ない時だけ必要なものだからな
全体を通して目的をコメントしなきゃいけないようなプログラムなんか1から作りなおした方がいい
コメントなんか将来の自分宛てのメモみたいに適当に書いときゃいいんだよ
それが他人にとっても一番役に立つ
0265デフォルトの名無しさん
2016/10/04(火) 21:52:12.34ID:luzzRI32結局コードの流れを地道に追うことになるんですね分かります。
0266デフォルトの名無しさん
2016/10/04(火) 22:00:15.60ID:pK2NF8fu考え方の違いだね。
そもそもトリッキーな作りはなるべく避けるし、
慣れてる人なら分かると思うけど、
何をやってるかはコード見れば大体分かる。
見て大体分かるようなコードで無ければむしろ
リファクタリングの対象になり得ると思うし、
ましてやVBAは比較的規模が小さいから
何をやっているかより何でやっているかの方が
自分的には役に立つことが多いなぁ。
特に業務絡みだとコードレベルの細かいことになると
何でそうしてるのか
書いてあると凄く助かることがある。
大体これを書かない人は詳細設計レベルでも何の為にやってるのか書かないことが多い。
0267デフォルトの名無しさん
2016/10/04(火) 22:07:37.24ID:ixQnj8Kqお前自分で何を言ってるか分かってるか
規模が小さいのに目的が分からないコードを書いているのかお前は?そうじゃないだろ?
ただ反論したいが為に無理矢理レスするからそうなる
もう少し素直に人の話を聞けよ
0268デフォルトの名無しさん
2016/10/04(火) 22:11:58.40ID:kYsgZgns〜
肝心な一行 ' ← ここ
〜
0269デフォルトの名無しさん
2016/10/04(火) 22:13:19.60ID:9J4Qs306If a = b Then
'カウントアップ
a = a +1
'それ以外の場合
Else
'カウンターを初期値に戻す
a = 0
End If
みたいに書いてるわwwww
0270デフォルトの名無しさん
2016/10/04(火) 22:16:07.63ID:9J4Qs306他人が書いたコメントで、
'ググったら、これをやると早くなるらしい
Application.ScreenUpdating = False
ってのを見たことある。
0271デフォルトの名無しさん
2016/10/04(火) 22:17:49.66ID:pK2NF8fu自分の作ったものならいいよ?
人の作ったものだとそれがないと有識者に聞きに行くことになったりするし
教えてくれる有識者がいなければ目も当てられないよ。
何をやっているかなんて実際きちんと単一責任の原則に則って作っていれば
せいぜい多くて1メソッド100行も行けばいいとこ。
ヘッダコメントで何やってるかとI/O書いておけば大体事足りる。
逆 に聞くけど、いつも1メソッドどんな単位で書いてるの?
0272デフォルトの名無しさん
2016/10/04(火) 22:19:43.98ID:kYsgZgns個々の実装箇所にはほんの少ししか書かないことが多いな。
0273デフォルトの名無しさん
2016/10/04(火) 22:29:13.80ID:ixQnj8Kq1メソッド100行も書いてるから目的すら見失うんだよ
本当に単一責任原則てのが分かってれば最大でも50行を越えるような事はない平均なら十数行だ
自分の未熟さを思いしって謙虚になれよ
0274デフォルトの名無しさん
2016/10/04(火) 22:29:34.48ID:luzzRI32いまいち一言で表せる文言がないと長文化してしまうのが難点。
Module:ファイルパス取得
Sub:検索開始するフォルダパスの設定(ファイルパスも可 As String)
Sub:先頭のフォルダパスをPOPしてフォルダとファイルの探索
Function:探索続行可能の有無 As Boolean
Function:取得したパスの返却 As Variant()
みたいな感じで。
0275デフォルトの名無しさん
2016/10/04(火) 22:38:49.24ID:pK2NF8fuバカでしょ。
もっと短くなると言うなら尚更そうじゃない。
なんか文句言いたいだけっぽいね。
役割によっては1行2行のメソッドも出来るし、
極稀に100行近くになることもある。
50行程度ならもっとヘッダコメントも分かれるから
尚更解読するのは楽だろうに。
で、メソッド何単位で作ってるの?
0276デフォルトの名無しさん
2016/10/04(火) 22:49:11.25ID:ixQnj8Kq文句言いたいのだけなのはお前だわw
もう俺にレスする目的すら見失ってるだろお前
0277デフォルトの名無しさん
2016/10/04(火) 22:53:52.00ID:pK2NF8fuで?
>>275に対して反論はないの?
メソッドは何単位で組んでるのかの回答もまだなんだけど。
0278デフォルトの名無しさん
2016/10/04(火) 23:00:36.62ID:ixQnj8Kqお前は自分で目的すら分からないコードを書いてるのか?
まずはこっちに答えるのが先だろ都合のいい奴だな
何でも親切に人が付き合ってくれると思うなよ
0279デフォルトの名無しさん
2016/10/04(火) 23:04:21.77ID:kYsgZgns>本来このコメントは主に速度の為に難解なコードを書かざるを得ない時だけ必要なものだ
↑
これが間違っていると思う。
なぜそう断じた?
0280デフォルトの名無しさん
2016/10/04(火) 23:05:18.79ID:ixQnj8Kq次の行も読めよ
0281デフォルトの名無しさん
2016/10/04(火) 23:06:00.09ID:pK2NF8fu文盲か?
それに対しては>>271でとっくに回答している。
自分の作ったものなら自分で作ってるんだから
分からない訳ないだろう。
で>>277への回答は?
0282デフォルトの名無しさん
2016/10/04(火) 23:08:53.20ID:ixQnj8Kq他人が書いたものが分からないのは何をしているか
よく考えろ何が目的なのか分からないようなプログラムをいじろうと思うかお前?
0283デフォルトの名無しさん
2016/10/04(火) 23:09:34.52ID:laeEfM5k自分で作った物ならわかってて当然、なんてのは経験の浅い若造の幻想だ
0284デフォルトの名無しさん
2016/10/04(火) 23:12:50.62ID:kYsgZgns>全体を通して目的をコメントしなきゃいけないようなプログラムなんか1から作りなおした方がいい
の行のことか?
Aの前にBをやっているのはなぜ? → それはAの事前条件である〜を満たすため
↑
こういったコードの意図・目的はコメントじゃないと表現しにくい
0285デフォルトの名無しさん
2016/10/04(火) 23:13:47.55ID:ixQnj8Kqそれは仕様と言ってコード内で表明する物ではない
0286デフォルトの名無しさん
2016/10/04(火) 23:16:54.92ID:pK2NF8fu本当に頭大丈夫か?
それが分からないと下手に弄れないから
何の為にやっているのかが重要だって言ってるんだろ?
いい加減話をはぐらかしていないで
>>277に答えてみろよ。見え見えなんだよ。
0287デフォルトの名無しさん
2016/10/04(火) 23:19:13.30ID:pK2NF8fuいや、何作ったか忘れることはあっても
今自分が何作ってるのか分からないのはヤバいよ
0288デフォルトの名無しさん
2016/10/04(火) 23:20:47.41ID:kYsgZgns関数Aの事前条件・事後条件そのものは仕様としてどっか別のところに書くかもしれないが、
>>284では関数Aを利用しているそれぞれの個所でコメントをつける場合のことを言っている。
目的を表現したコメントだ。
0289デフォルトの名無しさん
2016/10/04(火) 23:23:00.13ID:ixQnj8Kqいや下手に弄れないならコード見るなよ
せめて仕様が分かってから見てくれ
0290デフォルトの名無しさん
2016/10/04(火) 23:23:39.39ID:50xH+Aa70291デフォルトの名無しさん
2016/10/04(火) 23:28:33.52ID:vNhxY/wh0292デフォルトの名無しさん
2016/10/04(火) 23:30:38.04ID:ixQnj8Kqそれは目的を書いたコメントじゃないな
いいかもう一度言う
コードが難解にならざるを得ない時はやっている事とその目的がちょっと読んだだけでは一致しない
そういう時に必要なのが「何を目的にしているか?」というコメントだ
逆に言えばそういうコメントがコード全体に必要だというのなら
それは設計時点で混乱してコードが難解になっている証拠だ
設計からやりなおした方がいい
目的の表明が必要なのは一部の難解なコードだけ
それが全体に必要だと思ったら始めからやりなおせ
0293デフォルトの名無しさん
2016/10/04(火) 23:30:59.37ID:pK2NF8fu何だまだ逃げ回るつもりか?
コードレベルで何の為にやってるのか分からないことが出てくるなんてよくあることだぞ。
だからそう言ったところに説明のコメントがあれば
わざわざ調査したり
有識者に聞きに行かなくても良いという話だ。
お前、どうやら>>277に答えられないみたいだな。
よくそれで斜め上から目線で偉そうに能書き垂れられるもんだな。
0294デフォルトの名無しさん
2016/10/04(火) 23:32:14.37ID:1OpjxEYO0296デフォルトの名無しさん
2016/10/04(火) 23:36:07.19ID:luzzRI32それにコード見ても何やってるか分からないってくらい長大だったり複雑だったりするものはVBAには向かない。
0297デフォルトの名無しさん
2016/10/04(火) 23:38:04.38ID:kYsgZgns>それは目的を書いたコメントじゃないな
だったらあんたは「コードの目的」という言葉を誤解して一般とは違う意味に取っている。
0298デフォルトの名無しさん
2016/10/04(火) 23:39:49.33ID:ixQnj8Kqいやもう素直にごめんなさいしろよ
本当にお前らには素直さが足りん
0299デフォルトの名無しさん
2016/10/04(火) 23:43:58.96ID:kYsgZgnsおいおい、
' 関数myFuncの事前条件を満たす
〜その処理〜
・・・
myFunc(引数)
上のコメントが目的を表すコメントじゃないってのかよ?ちょっと考え方おかしいぞ
0300デフォルトの名無しさん
2016/10/04(火) 23:45:40.44ID:pK2NF8fu275 名前:デフォルトの名無しさん [sage] :2016/10/04(火) 22:38:49.24 ID:pK2NF8fu
>>273
バカでしょ。
もっと短くなると言うなら尚更そうじゃない。
なんか文句言いたいだけっぽいね。
役割によっては1行2行のメソッドも出来るし、
極稀に100行近くになることもある。
50行程度ならもっとヘッダコメントも分かれるから
尚更解読するのは楽だろうに。
で、メソッド何単位で作ってるの?
の回答が>>292??
メソッドを何単位で作ってるかすら答えていないし
そもそもトリッキーに作る前提がその回答?!
ちょっとおかしいんじゃないの?
0301デフォルトの名無しさん
2016/10/04(火) 23:46:21.78ID:ixQnj8Kq違うよ
お前は完全に誤解している
誤解した上で大切な格言をさらに誤解している
プログラミングの格言が言う目的を表明するコメントってのは>>292の事だ
0302デフォルトの名無しさん
2016/10/04(火) 23:48:40.44ID:ixQnj8Kqお前はもう目的が俺にレスを返す事だけになってるから
これ以上お前にレスするのはやめるよ
0303デフォルトの名無しさん
2016/10/04(火) 23:51:28.16ID:pK2NF8fu答えられずに敗走するなら
一言謝れば済む話なのに
0304デフォルトの名無しさん
2016/10/04(火) 23:54:58.23ID:kYsgZgnsじゃあお前の主張は
>目的の表明が必要なのは一部の難解なコードだけ
なんだな?
0305デフォルトの名無しさん
2016/10/04(火) 23:58:12.71ID:luzzRI32前提処理が必要な関数を前提処理無視して触れる設計にしちゃダメじゃないですかね。
0306デフォルトの名無しさん
2016/10/04(火) 23:59:03.45ID:ixQnj8Kqお前人が親切に何度も書いてやってんのにちゃんと読んでるか?
何度同じ事を言わせたいんだ?
0307デフォルトの名無しさん
2016/10/05(水) 00:00:14.29ID:srvtImFwふつう事前条件は呼び出し側の責務で事後条件は呼び出された側の責務では?
0308デフォルトの名無しさん
2016/10/05(水) 00:01:00.71ID:srvtImFwキチガイだということを確認したのさ
0309デフォルトの名無しさん
2016/10/05(水) 00:05:24.14ID:Bd5OrliE責務的にはそう。
けど設計書上は呼び出される関数の仕様に前提条件として記述されることが多い。
0310デフォルトの名無しさん
2016/10/05(水) 00:14:13.26ID:srvtImFw>>299は呼び出す側のコードで
「ここから事前条件を満たすための処理を始めます」というコメントなんだけど。。。
0311デフォルトの名無しさん
2016/10/05(水) 00:47:38.39ID:bI5Lxzujなにその
If args(1) = True Then 'args配列の一番目の要素がTrueである事を確認している
みたいな無駄なコメント
0312デフォルトの名無しさん
2016/10/05(水) 00:56:11.34ID:icXstXaqRange("A1:C25").Copy Destination:=Cells(29,5)
0313デフォルトの名無しさん
2016/10/05(水) 04:30:03.80ID:KwBFnIVvブロック変数のことを言いたいんだと思う
0314デフォルトの名無しさん
2016/10/05(水) 06:49:41.19ID:srvtImFwそれが
If args(1) = True Then 'myFuncを呼び出す事前条件の確認
だったら意味があるっちゅうの
0315デフォルトの名無しさん
2016/10/05(水) 07:20:29.26ID:Hl1+r7j+コメントに意味があるかどうかよりわざわざそんなコメントが必要なコードに疑問を持て
良いコメントとは自分の醜いコードを正当化する為の言い訳じゃないぞ
0316デフォルトの名無しさん
2016/10/05(水) 07:24:59.83ID:yHjUirFa意味はあるかも知れないけど変数名で何とかなりそう
0317デフォルトの名無しさん
2016/10/05(水) 07:33:36.90ID:yHjUirFaまさに>>292がそれだよね
複雑怪奇になったコードの言い訳につけるとか
0318デフォルトの名無しさん
2016/10/05(水) 07:53:29.70ID:8EEbZfH60319デフォルトの名無しさん
2016/10/05(水) 08:03:23.74ID:qrm+YPUBやっと少しは理解したようだな
つまり目的を表明するコメントが必要だと思ったらまずは自分のコードを疑え
それは決して良いコメントではない
0320デフォルトの名無しさん
2016/10/05(水) 08:12:56.98ID:j41jgZNt名前から意味を汲み取るのはまずはクラス名、関数名まで。そこから先は時間のロス。
開発途中は別ね。
0321デフォルトの名無しさん
2016/10/05(水) 12:43:27.76ID:j41jgZNt「全体を通して」ってどういう意味?
0322デフォルトの名無しさん
2016/10/05(水) 13:18:48.84ID:Q0piKuAf双方でご自慢のコードの一部を提示して現物勝負しろ
おれはどっちかっつーと、要望に応えるために急遽取り込んだとか、現場で改変した
とかって時に忘備録がわりに書き残すな
設計時通りならいちいち書かない 必死こいて練ったようなのも書かない
もののついでとか、咄嗟の思い付きでみたいなのは書き残しとかないと後日自分で
判らなくなるんで書いておく 苦しんだ時のは結構いつまでも記憶してるわな
0323デフォルトの名無しさん
2016/10/05(水) 13:33:19.11ID:llm582RG0324デフォルトの名無しさん
2016/10/05(水) 13:46:41.30ID:j41jgZNt↓
263 デフォルトの名無しさん sage 2016/10/04(火) 21:23:12.88 ID:pK2NF8fu
コメントは出来るだけ何をやっているかは書かないように変数名やメソッド名、プロパティ名で頑張ってる。
何の為にやってるかだけ書こうと努力はしてるけど
中々難しい。
0325デフォルトの名無しさん
2016/10/05(水) 14:48:02.18ID:wRaKuTZM0326デフォルトの名無しさん
2016/10/05(水) 18:53:02.22ID:CThI016C0327デフォルトの名無しさん
2016/10/05(水) 20:14:20.47ID:bI5Lxzuj0328デフォルトの名無しさん
2016/10/05(水) 21:12:49.34ID:3M5c1lQKそれは何故?
理由を知りたい
0329デフォルトの名無しさん
2016/10/05(水) 21:14:35.54ID:j41jgZNt標準モジュール994行に対して8個だった。(Function/Sub合計55個)
ヘッダコメントとか関数一覧とかは除いてる。
0330デフォルトの名無しさん
2016/10/05(水) 21:20:49.28ID:bI5LxzujVBAは多人数で作る事を想定していないから、他人に見せる為のコメントが入る事がおかしい
VBAは大規模なオートメーション化をする為のものではないから、コメントがないと覚えきれないほど大がかりなプログラムを組むのがおかしい
そして小規模なのにコメントがないといちいち覚えられないような、とっちらかったプログラムを組むのは素人だからVBAに限らず好ましくない
0331デフォルトの名無しさん
2016/10/05(水) 21:21:31.84ID:Hl1+r7j+0332デフォルトの名無しさん
2016/10/05(水) 21:25:27.08ID:JiyI3+0P自分が仕事場を去るとき引き継ぎとかしないの?
逆に誰かから引き継ぐときコメントもない
汚ったないソース渡されても平気なの?
0333デフォルトの名無しさん
2016/10/05(水) 21:33:10.14ID:JiyI3+0P設計書の項番が各処理にコメントとして振られている
辞めたい。早く辞めたい。
0334デフォルトの名無しさん
2016/10/05(水) 21:36:02.49ID:j41jgZNt...さすがに不要コードをコメントアウトで残してはいないよね?
0335デフォルトの名無しさん
2016/10/05(水) 21:42:01.85ID:JiyI3+0P一応StarTeamで管理してるからそれは無いけど、
一時期そうしようかという話も上がっていたらしい
0336デフォルトの名無しさん
2016/10/05(水) 22:05:56.47ID:bI5LxzujVBAに限っては誰かに引き継いだり誰かから引き継いだりっていう事自体が本来、意図されている範疇を超える
仕様を正確に伝えられている事を前提にした場合、一日以内に組めないものはマクロの範疇外
0337デフォルトの名無しさん
2016/10/05(水) 22:10:16.45ID:j41jgZNt0338デフォルトの名無しさん
2016/10/05(水) 22:17:04.14ID:3M5c1lQKありがとー
感想は結論ありきの理由と感じた。
0339デフォルトの名無しさん
2016/10/05(水) 22:34:42.85ID:5xEMF8RFなんか原発が事故に遭う前の自民党の言い分みたい
0340デフォルトの名無しさん
2016/10/05(水) 22:35:19.62ID:vqewxUaXコード書いてからコメント書く奴多いのか?
俺は先にコメントで全体構造を書いてから、
コードを埋め込んで行くけどな。
普通、
要件定義→設計→作成→テスト
だろ?
その「作成」の段階も設計をコードに落とす前にフローに落とし込むのが
常識じゃないのか?
0341デフォルトの名無しさん
2016/10/05(水) 22:41:20.97ID:3M5c1lQKそうするとどんなメリットを得て
どんなデメリットが生ずるのかな?
その常識が嵌まるケースは
どんな場合なんだろうか?
0342デフォルトの名無しさん
2016/10/05(水) 22:47:56.03ID:srvtImFwテストコードならそれでいいだろうが、一般にそれではコメント量が多すぎる
0343デフォルトの名無しさん
2016/10/05(水) 23:16:53.27ID:Hl1+r7j+どこで揉めてんだよお前らw
0344デフォルトの名無しさん
2016/10/06(木) 00:19:24.24ID:+At5cwpl0345デフォルトの名無しさん
2016/10/06(木) 03:42:12.60ID:WnMuVEy/ここ質問スレだぞ
0346デフォルトの名無しさん
2016/10/06(木) 07:49:07.35ID:cJ+lgsQnhttp://echo.2ch.net/test/read.cgi/tech/1205953427/
0347デフォルトの名無しさん
2016/10/06(木) 10:53:24.14ID:gQ9THITDこのすれだとどこまで遡ればよいやらわからん。
ネタ切れなんだろうか?
0348デフォルトの名無しさん
2016/10/06(木) 11:22:01.67ID:4/PjwsDS0349デフォルトの名無しさん
2016/10/06(木) 11:47:55.17ID:0yCCPD8C例えるならデータベース設計で1つのデータをいろんなところに分散して登録している極悪な設計だ。
>>269の悪い例が単純化されてはいるもののよくあらわしている。
もしコードをかえたらコメントもかえなければならない。
これは単純なコードだけど実際はコードを1か所でも変えたらそのプログラム中の「す」「べ」「て」のコメント行を変更しないといけないか吟味しなくてはならない。
逆に>>270がコメントが必要であるいい例。
あとで他人が見たときに
「プッ(ワラ。この人はなにもわからずに書いたのか。じゃあオレが早くするよういろんなコードを修正しといてやるか。
あと、ScreenUpdatingをFalseにするのはこれから加える予定の新機能に邪魔になるからこの行は削除」
と判断できる。
もしそのコメントがない場合は、
「この人はなにか理由があってScreenUpdatingをFalseにしてるんだろうから勝手にはいじれないな」
としか判断できずなにもできない。
コメントが必要である他の例とすれば
本来はこうコードを書いたほうがスマートだけど、なんらかMicrosoft側のバグかなにかでよきせぬ動作をするので
' もちろんここは○○○と書いたほうがスマートだけど、それだとバグが発生するのでわざわざこう書いた
みたいなのだな。
0350デフォルトの名無しさん
2016/10/06(木) 12:33:03.57ID:ln2yCF000351デフォルトの名無しさん
2016/10/06(木) 12:57:08.03ID:gQ9THITD0352デフォルトの名無しさん
2016/10/06(木) 17:51:12.96ID:prbbit7d正論。
0353デフォルトの名無しさん
2016/10/06(木) 18:29:24.04ID:pwZHamux> 「プッ(ワラ。この人はなにもわからずに書いたのか。じゃあオレが早くするよういろんなコードを修正しといてやるか。
こういう知ったが一番迷惑なんだよな
0354デフォルトの名無しさん
2016/10/06(木) 18:59:29.41ID:prbbit7dただコメントが少ないだけじゃなくて変数名とかを解り易いものにして処理も解り易く書く
実行速度との兼ね合いになるときもあるけど
基本そんなところなんだろうな
って勝手に纏めちゃっていい?
0355デフォルトの名無しさん
2016/10/06(木) 19:29:42.35ID:DIpiBblJ認める
0356デフォルトの名無しさん
2016/10/06(木) 19:42:54.38ID:gQ9THITDそれって発端となった>>263の意見と両立するんだよね。
0357デフォルトの名無しさん
2016/10/06(木) 19:50:21.31ID:DIpiBblJシートの表記そのままを配列にしたいが
上手く行かない。
具体的には、時間hh:mm:ssを配列にすると
double型のシリアル値になってしまう。
配列化はrangeをvariantに入れてます。
前提条件
結果は二次元配列で得る。
vbaで実装。
元データはエクセルで提供される。
試したこと
時間を判別する。→小数が時間表記になる。
お願いします。
0358デフォルトの名無しさん
2016/10/06(木) 20:17:20.93ID:prbbit7dちまちまと1セルづつValueで取るか
時間が掛かってもいいならそう言った加工を含めた
SQL投げて
RecordSetに取得してから配列に入れ込むか
もっともRecordSetに取っておけばわざわざ配列に入れなくてもそのままシートに貼れるけどね
まあ仕様用途が分からないし配列に入れることが要件みたいだからその話は余談だけれども
0359デフォルトの名無しさん
2016/10/06(木) 20:28:13.34ID:gQ9THITD最終的にセルに貼るのであれば配列はそのままでもいいんだけどね。値としては合ってるわけだし。
0360デフォルトの名無しさん
2016/10/06(木) 20:28:50.57ID:gW8SdMMlCSVに書き出していいなら、その後でFSOでテキストファイルとして開いて取得するとか。
0361デフォルトの名無しさん
2016/10/06(木) 20:48:05.23ID:ypzLwK7tシートに貼り付ける直前に、
セルを日付型にするのは駄目なの?
0362デフォルトの名無しさん
2016/10/06(木) 20:50:07.03ID:ypzLwK7t0363デフォルトの名無しさん
2016/10/06(木) 21:17:37.74ID:9eJl1FnY質問者の想定しているのがどういうシチュエーションなのか知らないけど、
レンジをヴァリアントに入れる形の配列取得は
値のコピーだけで書式の情報はコピーされないから
取得したデータを別のセルにコピーすると
元データの書式情報が反映されないしダメでしょ
0364デフォルトの名無しさん
2016/10/06(木) 21:24:47.83ID:KB+ca5Zz判定なら気にせずそのままでできるけど
気になるのならCDateで型変換すればいいんじゃないかな
0365デフォルトの名無しさん
2016/10/06(木) 21:31:26.42ID:KB+ca5ZzDim MyRange As Variant
MyRange = Selection
これで配列を作れるのに
Dim MyRange As Variant
MyRange = Selection.Font.Name
これで配列ができないのにはいつもがっかり
0366デフォルトの名無しさん
2016/10/06(木) 21:47:49.82ID:SvXA3ig5セルに対してだと遅いので配列に入れてやろうとした
ガーン
なんか方法ない?
って感じ?
0367デフォルトの名無しさん
2016/10/06(木) 22:23:01.60ID:4Mq5rf4n時間ともう1つの要素の構造体作って構造体の1次元配列にする
0368デフォルトの名無しさん
2016/10/06(木) 23:15:51.45ID:DIpiBblJ方向性は>>360のテキスト経由を
試そうと思います。
ちなみに目的はDBへの
インサートになります。
0369デフォルトの名無しさん
2016/10/06(木) 23:41:47.71ID:fU1btjXzFormat関数を
m(i, j) = Format(m(i, j), "hh:mm:dd")
とループさせるんじゃダメなのかい?
0370デフォルトの名無しさん
2016/10/06(木) 23:48:51.33ID:cJ+lgsQnDBに入れるなら項目数分の構造体作ることをお勧めする
初期値の操作とかいろいろ楽になるはず
0371デフォルトの名無しさん
2016/10/07(金) 08:23:54.94ID:NQgtqPydどなたかbasp21でipv6を設定する方法をご存じないですか?
(ヘルプは情報が古くてv6については未記載です)
winsockで書かないとダメですかね?
0372デフォルトの名無しさん
2016/10/07(金) 12:34:20.33ID:oJOHJwZWExcelで通信とかやってる人ってそんなにいないとは思うけどこっちで聞いてみたら?
古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net・
http://echo.2ch.net/test/read.cgi/tech/1440930335/
0373デフォルトの名無しさん
2016/10/08(土) 19:50:48.94ID:jNc1kWL3Sub テスト()
MsgBox Range("a1").Row
MsgBox Range("a1").Column
Cells((Range("a1").Row) & "," & (Range("a1").Column)).Value = "ここはA1?"
End Sub
↑こう書くとA1セルに文字が書き出されると考えましたが、実行するとそうならないのはなぜでしょうか?
よろしくお願いいたします。
0374デフォルトの名無しさん
2016/10/08(土) 19:54:09.94ID:jNc1kWL3答えはなんと K1 セルに表示されます。一体どうなっているのでしょうか?!
0375デフォルトの名無しさん
2016/10/08(土) 20:05:30.23ID:ssQHBd36Cells((Range("a1").Row), (Range("a1").Column)).Value = "ここはA1?"
0376デフォルトの名無しさん
2016/10/08(土) 20:07:01.05ID:ssQHBd36Cells(Range("a1").Row, Range("a1").Column).Value = "ここはA1?"
0377デフォルトの名無しさん
2016/10/08(土) 20:07:12.39ID:+vtWpikFCells(Range("a1").Row , Range("a1").Column).Value = "ここはA1?"
ならどう?
0378デフォルトの名無しさん
2016/10/08(土) 20:08:34.08ID:jNc1kWL3>>377
なんと!!! ありがとうございます!!助かりました。
0379デフォルトの名無しさん
2016/10/08(土) 20:11:40.53ID:jNc1kWL3ありがとうございます。
0380デフォルトの名無しさん
2016/10/08(土) 20:12:51.66ID:ssQHBd36Cells("234") は Cells(1, 234) と解釈されるという仕様になっている
また、途中と最後のカンマは無視される仕様なので
Cells("5,6,,7,,,") は Cells(1, 567) と解釈される
その例だと引数は "1,1" という文字列になっているので
Cells("1,1") は Cells(1, 11) と解釈され、K1セルを指定したことになる
0381デフォルトの名無しさん
2016/10/08(土) 20:16:07.28ID:jNc1kWL3すばらしい答えをありがとうございます。 更に勉強になりました。
0382デフォルトの名無しさん
2016/10/08(土) 21:34:28.01ID:yo/AP7TXhttp://ateitexe.com/change-alphabet-integer/
0383デフォルトの名無しさん
2016/10/09(日) 04:02:09.41ID:RCJ/QWRcへえぇ、これは知らなかった。
むしろあまり無茶な設定したときはエラーで落ちる方が
皆が混乱しないで済むと思うけど
そういう仕様なんだから仕方ないといったところか。
0384デフォルトの名無しさん
2016/10/09(日) 06:01:04.77ID:vqay/UXI試してみたらCells(",1")は普通にエラーになるし、なんなんだいったい
0385デフォルトの名無しさん
2016/10/09(日) 06:35:15.42ID:pq9cwjZk>Cells("234") は Cells(1, 234) と解釈されるという仕様になっている
それは正確ではない
それはCells(234)と解釈されて、引数が一つのときは
>左から右に、次に上から下に数えて、アクセスするセルのインデックス番号を指定します。
だ。右端超える数値指定したら下の行に行くぞ
>>384
指定するのは数値とみなされるから
CLng("5,6,,7,,,")は567
CLng("1,1")は11になるけど
CLng(",1")はエラーになるからな
VBAの数値変換の問題で直接的にはCellsの問題ではない
0386デフォルトの名無しさん
2016/10/09(日) 15:48:03.71ID:qBi7fi4IあるセルにA1+A2×B1と書かれていた場合、その横に7+2×3=13みたく書いてくれるやつです。
とくに、p()と、スクエア()は認識してくれればいいです。
すみませんお願いします。
0387デフォルトの名無しさん
2016/10/09(日) 17:25:14.65ID:BXUtyFnD0388デフォルトの名無しさん
2016/10/09(日) 21:15:03.42ID:CYLhEXLs=A1&"+"&A2&"×"&B1&"="&A1+A2&B1
って書くんじゃ駄目なの?
0389デフォルトの名無しさん
2016/10/09(日) 21:16:56.55ID:CYLhEXLs=A1&"+"&A2&"×"&B1&"="&A1+A2*B1
0390デフォルトの名無しさん
2016/10/09(日) 21:31:44.83ID:6tfHmpJCそれってセルのFormulaプロパティを解析して単一セルへの参照と思われる式を
そのValueと置き換えたいってこと?
0391デフォルトの名無しさん
2016/10/09(日) 23:12:58.36ID:TK5uRNHfあらゆる式に対応してないと。
なにもA1+A2×B1だけじゃないし
0392デフォルトの名無しさん
2016/10/09(日) 23:32:39.87ID:eMbKvgyN0393デフォルトの名無しさん
2016/10/09(日) 23:33:31.43ID:eMbKvgyN0394デフォルトの名無しさん
2016/10/10(月) 00:00:40.23ID:zsdTnO8QSub 選択範囲の式の右に式を出力()
'’161009a Mambow
Dim Yoyaku As Variant
Yoyaku = Split("||=|+|-|/|*|(|)|INT|SQRT", "|")
Dim FF As Range
Dim myParts As Variant
Dim myFormula As Variant
For Each FF In Selection
'’単語で区切る
myFormula = FF.Formula
For Each KK In Yoyaku
myFormula = Replace(myFormula, KK, "|" & KK & "|")
Next
0395デフォルトの名無しさん
2016/10/10(月) 00:01:24.88ID:zsdTnO8Q'’スプリットしてセルを文字に置換
myParts = Split(myFormula, "|")
myResult = ""
For Each PP In myParts
Flag = 0 '’1なら予約語
For Each KK In Yoyaku
If PP = KK Then Flag = 1: Exit For
Next
If Flag = 1 Then
myResult = myResult & KK
Else: myResult = myResult & Range(PP)
End If
Next
FF.Cells(1, 2) = "'" & FF.Formula
FF.Cells(1, 3) = "'" & myResult
Next
End Sub
0396デフォルトの名無しさん
2016/10/10(月) 05:00:45.95ID:DbNhouaCそのくらいなら選択範囲かつ現在選択してるセルと同じ縦方向のセルを対象とする条件を入れたいね
0397デフォルトの名無しさん
2016/10/10(月) 06:13:34.87ID:Sulf2nkUさすがっすあんがと
あとドルマークは認識できるよう
できますか
0398デフォルトの名無しさん
2016/10/10(月) 08:03:52.61ID:DbNhouaCドルマークの認識ってのもどういう意味かわかんないし
0399デフォルトの名無しさん
2016/10/10(月) 08:54:10.50ID:dDEIeJH+まあ俺的にはドルマークより、
たけしマークの方がいいと思うけどな。
0400デフォルトの名無しさん
2016/10/10(月) 09:55:17.68ID:DbNhouaC絶対参照のことを仰られてるのならば既にできてると思う
まず認識ってのはどういう意味か明確じゃない
その文字列も演算子のように扱いたいのかもしれない
表示形式として$を利用しててそれぞれの数値に対して付けたいのか
もっと言うと範囲選択するような演算はすべて出力するべきか
空白は空白と見るか0と見るか
いろいろ曖昧
0401デフォルトの名無しさん
2016/10/10(月) 14:21:19.54ID:1ElBVdQb0402デフォルトの名無しさん
2016/10/10(月) 18:17:08.01ID:GbyvKkwGまぁ好みだが
0403デフォルトの名無しさん
2016/10/10(月) 18:36:42.71ID:Rkc5P+nq避けられるけど相対指定が逆に面倒なことに...
0404デフォルトの名無しさん
2016/10/10(月) 18:55:14.86ID:GbyvKkwGむしろ相対指定は理解しやすくなると思う
なんならVBAやるならまずR1C1形式にした方が吸収早いまであると思ってる
0405デフォルトの名無しさん
2016/10/10(月) 19:25:31.59ID:Rkc5P+nqパーサーの話じゃないのか?
0406デフォルトの名無しさん
2016/10/11(火) 19:36:41.03ID:8lv9/W5a0407デフォルトの名無しさん
2016/10/11(火) 21:04:48.77ID:uE+dGCKQ累乗^がないことに気づきました。どうしましょうか、ご教示願います。
0408デフォルトの名無しさん
2016/10/11(火) 21:15:41.70ID:A78WpH6/条件に入れればいいと思います
0409デフォルトの名無しさん
2016/10/11(火) 21:41:00.07ID:tnbZj/qD0410デフォルトの名無しさん
2016/10/11(火) 21:47:29.29ID:pV4XBJlB0411デフォルトの名無しさん
2016/10/11(火) 21:51:58.86ID:5BwnOKl0何を求めているかをまとめるところから始めなきゃ
ところで認識の条件ってどういう意味?
0412デフォルトの名無しさん
2016/10/11(火) 21:54:22.31ID:uE+dGCKQスプリット()の中に^を追加するのですか
0413デフォルトの名無しさん
2016/10/11(火) 21:58:54.40ID:qypiSMEg0414デフォルトの名無しさん
2016/10/11(火) 22:00:21.92ID:A78WpH6/そうです
どのsplitを指しているかはわかりませんが、、、
たぶん合ってます
0415デフォルトの名無しさん
2016/10/11(火) 23:35:36.11ID:xiBeBfeC0416デフォルトの名無しさん
2016/10/12(水) 17:30:07.41ID:AIygAMtfhttp://qiita.com/diaphragm/items/e2a98508790e71d08f95
関数対応してないけどちょっと改造すればなんとかなるでしょ
0417デフォルトの名無しさん
2016/10/12(水) 17:43:36.26ID:dHnq6pJNなら>>416で事足りるな
0418デフォルトの名無しさん
2016/10/12(水) 19:06:52.22ID:DQ7vhDEH質問者です。
= PI()*A1+ A1^A1
もできるようにしていただけないでしょうか。
すぐプログラム読みとくことができないです。どうかお願いします
0419デフォルトの名無しさん
2016/10/12(水) 19:17:07.52ID:iTXTBuwT0420デフォルトの名無しさん
2016/10/12(水) 19:54:17.41ID:Fl7ioEoiFormura解析して変換可能な全てのセル指定を見つけ出してValueにするプログラムとか、
まともに見積もりしたら一千万以下にはならないんじゃないの。
0421デフォルトの名無しさん
2016/10/12(水) 20:17:07.90ID:AoMg70NU>>416試した?
0422デフォルトの名無しさん
2016/10/12(水) 20:48:36.16ID:2t1rsNohクリックイベントを一つずつ書いてある為、コードがとても長くなってしまっているので、見やすく変えたいのですが、クリックイベントを一つにまとめてselectcaseか何かで分岐処理を行う、という事は可能でしょうか?
現在、行数が2500位になってしまっていて見るだけで大変なのでなんとかしたいのでお願いします。
0423デフォルトの名無しさん
2016/10/12(水) 21:01:46.25ID:jVnO+0C4可能です
0424デフォルトの名無しさん
2016/10/12(水) 21:07:19.11ID:2t1rsNoh申し訳ありませんが、詳しく教えて下さい。
0425デフォルトの名無しさん
2016/10/12(水) 21:17:48.62ID:jVnO+0C4http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P-Ctrl_Arrays.htm
0426デフォルトの名無しさん
2016/10/12(水) 21:17:55.30ID:MDgm7R4P冷静になって考えろ分岐が増える分さらに読みづらくなるとは思わんか?
0427デフォルトの名無しさん
2016/10/12(水) 21:34:46.21ID:85o/YoqyVBAはVB6と違ってコントロール配列を持っていないので擬似的に設置する必要があるけど
>>426の人がいうように寧ろ長く見辛くなる可能性が高いな。
あくまで俺ならだけど、ボタンを押して処理の違うところはクラスかコールバックで
多態性を持たせてゴニョゴニョするかな。
0428デフォルトの名無しさん
2016/10/12(水) 21:47:55.18ID:Fl7ioEoi別々の処理してるならあんまり関係ないよなぁ。
WithEvents キーワードを使ったイベントプロシージャ
http://excelwork.info/excel/classwitheventskeyword/
0429デフォルトの名無しさん
2016/10/12(水) 21:55:30.16ID:xfv6IRFQ0430デフォルトの名無しさん
2016/10/12(水) 22:14:30.34ID:demRx8+z0431デフォルトの名無しさん
2016/10/12(水) 23:17:02.96ID:pT37b7Zo標準モジュールにマクロを書いて
クリックイベントでCallで呼び出すだけでいいんじゃないの
3行 x ボタン20個 で60行で収まるよ
0432デフォルトの名無しさん
2016/10/13(木) 00:32:11.97ID:aniHJH6t再利用できる処理を、関数化すればいい
switch文は、キーイベント・セレクトメニューなどに使う
0433デフォルトの名無しさん
2016/10/13(木) 10:11:28.68ID:iJbRnyC1例えばイミディエイトのウインドウで
? ActiveWindow.ActiveSheet.Name
と入力しても
? ActiveWorkbook.ActiveSheet.Name
と入力しても
同じシート名「Sheet1」が返ってきます。
このへん、竹を割ったようにスッキリ、ニュースの池上さんもびっくりの、わかりやすい解説をしてくださるかたはいらっしゃらないでしょうか?
0434デフォルトの名無しさん
2016/10/13(木) 11:03:21.11ID:LsJ9lYTO新しいウィンドウを開く を使ったことはありますか
0435デフォルトの名無しさん
2016/10/13(木) 11:20:09.38ID:iJbRnyC1新しいBookを開く、という意味ですか?もしそうならあります。
0436デフォルトの名無しさん
2016/10/13(木) 11:57:22.70ID:wxrySSRE0437デフォルトの名無しさん
2016/10/13(木) 12:16:33.00ID:HiNO0LyXActiveWindowは最前面に表示されているウィンドウ(Window オブジェクト)を操作する時に使う
ウィンドウのスクロールや最大化、最小化など…
Window オブジェクト (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff835196.aspx
0438デフォルトの名無しさん
2016/10/13(木) 12:18:10.94ID:LsJ9lYTO違う。
https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=015989
0439デフォルトの名無しさん
2016/10/13(木) 12:51:41.96ID:ySuNgeDQ=2+3のようになるのですが、
2+3=5となるように改造したいのですが
どこどうやって改造すれば良いでしょうか。
0440デフォルトの名無しさん
2016/10/13(木) 13:29:52.85ID:LsJ9lYTO=2+3から、"="を""に置換して、右側に"="と答えを連結
0441デフォルトの名無しさん
2016/10/13(木) 13:45:08.39ID:2x/LH7yrそのくらいExcel側の数式でなんとかしろよ
0442デフォルトの名無しさん
2016/10/13(木) 14:26:51.35ID:iJbRnyC1でもいまいちわからないなあ。竹を割ってくださいよ、池上さんをあっぱれさせてくださいよ。
WindowsコレクションにはWorkbooksコレクションと同じ数だけ要素が入ってるけど
なぜわざわざ似たようなものを2つ作った、このExcelを作った開発者は?
あと、そのIndexはWindowsコレクションの場合新しいほど数字が若いのも謎だ。
便利なのはWindowsを使った場合ActiveSheetプロパティやActiveCellプロパティがあるからそれぞれのWorkBookをactivateしたときにActiveになっているSheetやCellを簡単に取得できることだ。
0443デフォルトの名無しさん
2016/10/13(木) 14:52:28.57ID:OKlZx9RXむしろなんでWindowとWorkbookが似たようなクラスだと思ったの?
WorksheetとShapeぐらい別物だよ?
0444デフォルトの名無しさん
2016/10/13(木) 14:55:06.62ID:iJbRnyC10445デフォルトの名無しさん
2016/10/13(木) 15:05:21.75ID:LsJ9lYTO>あと、そのIndexはWindowsコレクションの場合新しいほど数字が若いのも謎だ。
手前のものほど若いIndex。なのでころころ変わる。
0446デフォルトの名無しさん
2016/10/13(木) 16:41:56.33ID:BNcdAEv0Bookは その表示する対象
って考えれば良いと個人的には思う
(反論・異論は 当然受け入れる)
ちなみに
同一Bookを 2つの Windowで表示する事もできる
ActiveWindow.NewWindow
Debug.Print Workbooks.Count, Windows.Count
0447デフォルトの名無しさん
2016/10/13(木) 17:15:42.92ID:YJOiLUR+A B
1 東京
2 東京
3 東京
4 大阪 東京
5 大阪 ⇒ 大阪
6 大阪 九州
7 九州
8 九州
9 九州
のように抽出するマクロを教えてください
0448デフォルトの名無しさん
2016/10/13(木) 17:30:16.76ID:d9iZbaMS0449デフォルトの名無しさん
2016/10/13(木) 17:31:46.84ID:YJOiLUR+出来ればマクロで動かしたいんです・・・
0451デフォルトの名無しさん
2016/10/13(木) 19:28:58.60ID:IrII3OZKdictionary
error resume next入れてからやれば重複登録されません
0452デフォルトの名無しさん
2016/10/13(木) 20:13:06.62ID:zfOuIJiz0453デフォルトの名無しさん
2016/10/13(木) 20:34:29.03ID:VRwClJkChttp://stat.ameba.jp/user_images/20161011/20/cadetpost3/2f/cd/j/o0960071913770498881.jpg
0454デフォルトの名無しさん
2016/10/13(木) 20:34:50.02ID:VRwClJkC0455デフォルトの名無しさん
2016/10/13(木) 20:35:10.00ID:IrII3OZK無駄に条件分岐いれなくてよくなると思うのですが
0456デフォルトの名無しさん
2016/10/13(木) 20:42:43.29ID:g/xIBVYn俺も真っ先にCollectionかScriptingDictionary使う方法思いついたけど、
Keyに値入れておけばそれで既に登録されているか判断できるからそれでやった方がいい気がする。
エラー正常系はなんか気持ち悪い。
そっちの方が遥かにレスポンスが良いのであれば話は別だけど。
0457デフォルトの名無しさん
2016/10/13(木) 21:09:53.38ID:zfOuIJiz内部的にはやってる事ほとんど同じはずだから宗派の問題に過ぎないし、
エラーを無視する手法は初心者に教えるべきでない。
0458デフォルトの名無しさん
2016/10/13(木) 22:36:11.04ID:hvG1pVAXErr オブジェクトを作ったりする必要もあるから処理が同じとは思えない
0459デフォルトの名無しさん
2016/10/13(木) 23:56:51.99ID:IedkuVXeすんげーめんどくさい方法をあえて採るならこんな感じ
dim s() as string
redim s(1)
set rng = cells(1,1)
do while 0<len(rng)
if len(s(1))=0 then
s(1)=rng
elseif s.indexof(rng)<0 then
redim preserve s(ubound(s)+1)
s(ubound(s))=rng
endif
set rng=rng(2,1)
loop
0460デフォルトの名無しさん
2016/10/14(金) 12:47:09.71ID:OGGQVJFa引数の数って上限あるの?
0461デフォルトの名無しさん
2016/10/14(金) 13:38:08.50ID:5MfmEsZu引数の制限は
〇 Range("A1","B1").Select
× Range("A1","B1","C1").Select
だったぞ(By Excel2016)
そうぢゃなく
Range("A1,A2,A3・・・・")
とやった時の話なら 文字数 255文字 の制限に引っかかてると思うよ
↓なら 66セル選択できる
Range("A1,A2,A3,A3,A4,A5・・・途中省略w・・・,A66").Select
0462デフォルトの名無しさん
2016/10/14(金) 15:23:34.35ID:kSpw8ZOi0463デフォルトの名無しさん
2016/10/14(金) 16:45:52.26ID:faSrM5ysdictionaryで出来ました!
深く感謝です
因みにもう一つ質問なんですが、
逆に重複しているデータだけを抽出する方法ってありますか?
0464デフォルトの名無しさん
2016/10/14(金) 17:18:02.86ID:RTTbB8nK助かりました!
0465デフォルトの名無しさん
2016/10/14(金) 18:53:14.83ID:fd80Aw32そのdictonaryのexistsで弾いたやつを別のdictonaryに入れとけばええ
0466デフォルトの名無しさん
2016/10/14(金) 18:57:00.12ID:k2yMsJsWぱっと思いつくのはディクショナリのキー側に「大阪」やら「東京」やらを入れておいて値に0を入れる。
シートの対象範囲をループ中に既にディクショナリに登録されていたらそのキーに該当する値を1にする。
最後にディクショナリで値が1のやつだけシートに展開すれば出来上がり。
ディショナリに設定する値は別にTrue、Falseでも、
被ったときに1設定でなくてインクリメントも何でもいいけど、
インクリメントにしておけば何回重複したかを確認することができるから便利かも。
0467デフォルトの名無しさん
2016/10/14(金) 19:01:20.50ID:k2yMsJsW0468デフォルトの名無しさん
2016/10/14(金) 23:03:45.18ID:oi5LDJU/2個以上のもの→重複
0469デフォルトの名無しさん
2016/10/15(土) 06:48:18.20ID:jNvmg4HHまた、更新回数のカウンタも持たせたい。
Property Setで値を放り込み、Property Getで初期値、最大値、最小値、現在値を取ればいいと思うんですが、
新しいインスタンスで元のものとは初期値と現在値を入れ換えたものを作ろうとして
0470デフォルトの名無しさん
2016/10/15(土) 06:59:12.87ID:jNvmg4HH初期値と最大値、最小値、現在値を持ち、新たに値を放り込むとそれらを更新するクラスを作りたい。
また、更新回数のカウンタも持たせたい。
Property Setで現在値を取り込みつつ他の値を更新し、それぞれの値を取るProperty Getを
用意すればいいと思うんですが、元のものと初期値と現在値を入れ換えた
新しいインスタンスを返すメソッドを作ろうとして詰まりました。
現在値以外は直接値をセットできないようにしたいんですが、どういう書き方にすればいいでしょうか?
0471デフォルトの名無しさん
2016/10/15(土) 07:14:01.90ID:PJeRYX3DVBAのクラスはコンストラクタに引数を持たせることが出来ない。
よってファクトリークラスかメソッドか関数のような生成用の役割を持つものを用意して
そこで生成後に以前生成した渡したい値を渡してやれば良いだろうう。
通常時、特定のゲッタ、セッタを参照させないようにしたいのであれば、
一つインターフェースを用意してそのインターフェースを介在して呼ばれたときは設定出来るように、
そうでないときは設定出来ないようにすれば、
そのインスタンスを生成したときの型であれば外部から隠蔽することが出来るんじゃないかな?
まだ試してないから何とも言えないけどそれで行けそうな気がする。
0472デフォルトの名無しさん
2016/10/15(土) 07:52:03.81ID:jNvmg4HHもうひとつクラスモジュールを用意してそれをInplementsとかすればいいんでしょうか。
やったことないのでまず調べてみます。
0473デフォルトの名無しさん
2016/10/15(土) 09:30:00.80ID:PJeRYX3Dちょっと説明が分かり辛いと思うからコードで書いておく
'標準モジュール:Main
Option Explicit
Private Sub Main()
Dim masterInstance As testClass
Dim slaveInstance As testClass
Dim factory As New TestFactory
Set masterInstance = factory.GetMasterInstance
masterInstance.PresentValue = 1
Set slaveInstance = factory.GetSlaveInstance(masterInstance)
'Call MsgBox(slaveInstance.InitialValue)
'Call MsgBox(slaveInstance.IinitialSetting_InitialValue)
End Sub
'クラスモジュール(インターフェース):IinitialSetting
Option Explicit
Public Property Get InitialValue() As Long
End Property
Public Property Let InitialValue(ByVal value As Long)
End Property
Public Property Get PresentValue() As Long
End Property
Public Property Let PresentValue(ByVal value As Long)
End Property
0474デフォルトの名無しさん
2016/10/15(土) 09:30:52.68ID:PJeRYX3DOption Explicit
Implements IinitialSetting
Dim m_InitialValue As Long
Dim m_PresentValue As Long
Private Property Get IinitialSetting_InitialValue() As Long
IinitialSetting_InitialValue = m_InitialValue
End Property
Private Property Let IinitialSetting_InitialValue(ByVal value As Long)
m_InitialValue = value
End Property
Private Property Get IinitialSetting_PresentValue() As Long
IinitialSetting_PresentValue = PresentValue
End Property
Private Property Let IinitialSetting_PresentValue(ByVal value As Long)
PresentValue = value
End Property
Public Property Get PresentValue() As Long
PresentValue = m_PresentValue
End Property
Public Property Let PresentValue(ByVal value As Long)
m_PresentValue = value
End Property
0475デフォルトの名無しさん
2016/10/15(土) 09:38:39.02ID:PJeRYX3DOption Explicit
Public Function GetMasterInstance() As testClass
Dim masterInstance As IinitialSetting
Set masterInstance = New testClass
masterInstance.InitialValue = 0
masterInstance.PresentValue = 0
Set GetMasterInstance = masterInstance
End Function
Public Function GetSlaveInstance(ByRef masterInstance As testClass) As testClass
Dim slaveInstance As IinitialSetting
Set slaveInstance = New testClass
slaveInstance.InitialValue = masterInstance.PresentValue
End Function
標準モジュールのMain関数から実行する。
まずはトレースで動きを追ってみて欲しい。
MsgBoxが書いてあるコメントを外すとどちらも参照出来ずにコンパイルエラーと
なることが確認できるはず。
所々にある変数のtestClass型宣言は、本当はTestClassとなるはずだったのに
変数名をtestClassとしたらなぜか削除しようがなにしようがtestClassとなってしまった。
そこはご愛嬌ってことで。
0476デフォルトの名無しさん
2016/10/15(土) 10:42:31.46ID:jNvmg4HHなるほど。
最初のMsgBoxの方はできるようにしたいので、TestClassにPublicなGetを追加したらうまくいきました。
2番目のMsgBoxがエラーなのはイメージ通りです。
あとはTestFactoryの機能をTestClassに寄せられないか検討してみます。
ありがとうございました。
0477デフォルトの名無しさん
2016/10/15(土) 11:31:40.67ID:v3Q8BTMcああ、初期設定値はReadOnlyにしたいんだっけ。
だったらGetの部分は現在値と同じ作りにしておけばいいよ。
寄せるのは余りお勧めしない。
.NetみたいにSheardがあるならクラスとして生成しなくても自分から自分を生成出来たりするけど、
VBAではクラスは自分を生成するためには生成する側がインスタンスである必要がある。
言葉で言っててもややこしいけど、コードにすると
もっと解り辛くなるかも知れないよ。
基本、クラスを生成する役割とクラスそのもののが持っている役割は違うはずなので
個人的には別にしておいた方がいいと思うよ。
0478デフォルトの名無しさん
2016/10/15(土) 13:10:17.32ID:jNvmg4HH初期設定値というか、「最初に入った値」ですね。
まあ為替の4本値です。
役割分割の件は慎重に考えて決めようと思います。て言うかまずユースケース出しですね。
0479デフォルトの名無しさん
2016/10/15(土) 13:32:03.97ID:phNDkCd2どう考えても不利だろ。MT4とか専用のツール使えよ。
0480デフォルトの名無しさん
2016/10/15(土) 14:35:56.92ID:F0NY5SKqここは VBA スレなので自称株の℃玄人の話は要らん
0481デフォルトの名無しさん
2016/10/15(土) 20:50:19.08ID:fhWY5JBEエクセルで何でも出来ると思ってるからに決まってるじゃないか!
本人じゃないから知らんけど。
0482デフォルトの名無しさん
2016/10/15(土) 22:43:48.49ID:taq3g4A+方法についてお伺いしたいです。
例えば、
Aテーブル A項目
東京都港区赤坂
神奈川県川崎市
とう京千代田
神奈川県川さきし
千葉県船橋市
Bテーブル B項目
かながわけん川崎 共通最長は「赤坂」
ときょう八王子 共通最長は「川崎」
あ赤坂 共通最長は「と」
埼玉さいたま市 共通最長は「神奈川県」
神奈川県横浜市 共通最長は「県」「市」
比較対象列の中で何かしら共通文字があり、その最長だけ抜き出したいのです。
共通文字の最長が抽出できればACCESSでもEXCELでも構わないです。
何かいいアイデアはありませんでしょうか。
0483デフォルトの名無しさん
2016/10/15(土) 22:46:22.95ID:9QPZg1sB0484デフォルトの名無しさん
2016/10/15(土) 22:47:12.25ID:taq3g4A+Aテーブル A項目
東京都港区赤坂 共通最長は「赤坂」
神奈川県川崎市 共通最長は「川崎」
とう京千代田 共通最長は「と」
神奈川県川さきし 共通最長は「神奈川県」
千葉県船橋市 共通最長は「県」「市」
Bテーブル B項目
かながわけん川崎
ときょう八王子
あ赤坂
埼玉さいたま市
神奈川県横浜市
0485デフォルトの名無しさん
2016/10/15(土) 22:54:22.91ID:9QPZg1sB0486デフォルトの名無しさん
2016/10/15(土) 22:54:58.27ID:taq3g4A+例えばAテーブルA項目の1行目と、BテーブルB項目の全行を比較して
共通する文字を見つけ出したいです。
Bテーブルの3行目に「赤坂」の文字があり、Bテーブルの他の行にはないので
Bから探し出せる最長の共通文字は「赤坂」です。
ますます意味不明でしょうか。
0487デフォルトの名無しさん
2016/10/15(土) 22:56:28.06ID:taq3g4A+その通りです。確認不足ですみません。
0488デフォルトの名無しさん
2016/10/15(土) 22:57:13.04ID:2htE+SYs相当難しそう
0489デフォルトの名無しさん
2016/10/15(土) 22:58:17.72ID:2htE+SYsでもn^2より大きいだろう
0490デフォルトの名無しさん
2016/10/15(土) 23:02:11.11ID:zn7eUDrO>>神奈川県川崎市 共通最長は「川崎」
>>神奈川県川さきし 共通最長は「神奈川県」
これ前者は なぜ「川崎」なの?
"共通最長"が文字列として最も長いものなら 3文字の 「神奈川県」じゃね?
0491デフォルトの名無しさん
2016/10/15(土) 23:05:00.95ID:taq3g4A+確認不足です。最長は「神奈川県」です。
0492デフォルトの名無しさん
2016/10/15(土) 23:18:19.83ID:9QPZg1sBfunction a(もじれつ())as string()
for s in もじれつ
if 検索する(s、対象場所)
rslt.add(s)
else
つぎ(0)=left(s,len(s)-1)
つぎ(1)=right(s,len(s)-1)
rslt.add(a(つぎ))
endif
next
a=rslt
endfunction
function 検索する(もじ、range)as boolean
rslt=false
for r in range
if rに文字がある then rslt=true
next
検索する=rslt
endfunction
0493デフォルトの名無しさん
2016/10/15(土) 23:19:21.30ID:CMu4YX8dでも、それよりも難しそう
0494デフォルトの名無しさん
2016/10/16(日) 00:04:29.68ID:GUtPQfk2もうひとつ
三番目は「と」「う」だよな?
0495デフォルトの名無しさん
2016/10/16(日) 00:11:33.93ID:mMAa4MBf質問する側なのに間違えてすみません。
0496デフォルトの名無しさん
2016/10/16(日) 00:24:01.23ID:mMAa4MBf考えて頂いてありがとうございます。
明日テストしてみます。
0497デフォルトの名無しさん
2016/10/16(日) 00:33:04.12ID:lku+utzV文字列の長さという変数もある
0498デフォルトの名無しさん
2016/10/16(日) 00:41:16.01ID:GUtPQfk2もちろんそのままじゃ動かないしチューニングが必要になる
そのまま使って「できませんでした」ってなっても「そうだと思います」としか返せないのでお気をつけ!
0499デフォルトの名無しさん
2016/10/16(日) 00:43:47.60ID:mMAa4MBf承知しました。ありがとうございます。
0500デフォルトの名無しさん
2016/10/16(日) 08:41:29.48ID:S24dnzpa0501デフォルトの名無しさん
2016/10/16(日) 08:46:49.70ID:hDEVytTt0502デフォルトの名無しさん
2016/10/16(日) 11:49:32.99ID:1wgF90sm0503デフォルトの名無しさん
2016/10/16(日) 12:03:40.10ID:xiInhvwBさて何のメロディでしょう?
0504デフォルトの名無しさん
2016/10/16(日) 12:08:09.43ID:JwryRgxI分からないよりは分かった方がいい。
0505デフォルトの名無しさん
2016/10/16(日) 12:25:51.62ID:S24dnzpaは冗談だが、ただの興味本位です。
0506デフォルトの名無しさん
2016/10/16(日) 12:54:31.83ID:f4ANn6Rkホント、社内の事務処理とか、
何かの商品開発に使うようなものでなければ、
教えてほしいわ。
0507デフォルトの名無しさん
2016/10/16(日) 14:11:09.80ID:vO80GlXI0508デフォルトの名無しさん
2016/10/16(日) 15:30:55.27ID:lWuTgRPC位置をずらして検索を再帰で実現とか
0509デフォルトの名無しさん
2016/10/16(日) 15:58:59.14ID:vXiXdAba0510デフォルトの名無しさん
2016/10/17(月) 17:11:10.51ID:32MU29jg毎回プロシージャの呼び出し、引数が不正ってでてしまう。Excel 2016です。
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
0511デフォルトの名無しさん
2016/10/17(月) 22:09:22.98ID:pGCt3vVl0512デフォルトの名無しさん
2016/10/18(火) 18:50:16.02ID:IBZ8SVf/真夜中の12時でかたっぽ停止してしまいます
いろいろ調べた結果
Sub 時計1()
Dim 一分 As Date
一分 = TimeValue(
0513デフォルトの名無しさん
2016/10/18(火) 18:50:48.79ID:IBZ8SVf/Dim 一分 As Date
一分 = TimeValue("0:01:00")
Cells(1, 1) = Now
Application.OnTime Now + 一分, "時計1"
End Sub
Sub 時計2()
Dim 一分 As Date
一分 = TimeValue("0:01:00")
Cells(1, 2) = Now
Application.OnTime Now + 一分, "時計2"
End Sub
表示とSub名以外まったく同じですが
同時に実行すると時計1は0:00で停止しません
時計2は停止します
フォーマットに日付入れたりいろいろ変えても同じです
これはどういうわけでしょうか
0514デフォルトの名無しさん
2016/10/18(火) 18:52:39.90ID:IBZ8SVf/ちなみに変数の待機時間は入れても入れなくても同じでした
0515デフォルトの名無しさん
2016/10/18(火) 19:56:28.90ID:R+rxit560516デフォルトの名無しさん
2016/10/18(火) 19:59:35.54ID:2HRIW/jKそこが知りたいエクセルvbaプロの技
の様な書籍ありませんか?
0517デフォルトの名無しさん
2016/10/18(火) 20:23:08.04ID:Rkr+8rjt0518デフォルトの名無しさん
2016/10/18(火) 20:47:41.49ID:2U/oDSXEon timeを設定した時刻が重なると上書きされるとか
先にセットした方が優先されるとか
試しにちょうど同じ時刻で二つon timeをセットしてみたら?
0519デフォルトの名無しさん
2016/10/18(火) 20:55:32.25ID:kGzTkRLu絶版の為、手に入らないのです。
クラスなどについて深く記載されてるらしいので欲しいのですが、アマゾンなどにも出回っていないので、近い内容の書籍があったらたすかるなと思ったのでお聞きしました。
15000円以内だと助かります。
0520デフォルトの名無しさん
2016/10/18(火) 21:35:25.00ID:q8Y2lqKG多分クラスについての初心者的なことはネットで調べれば十分だと思う。
その辺を踏まえて次のステップに行くなら
正直VBAの本漁っても殆ど情報は出てこない。
やっぱりjavaが一番そういった本が多いね。
一応お勧めとしてはjavaの本だけど
オライリーのデザインパターンの本
https://www.amazon.co.jp/Head-Firstデザインパターン-―頭とからだで覚えるデザインパターンの基本-Eric-Freeman/dp/4873112494
コードも載っているけど概念的な説明から入るのでどういうものか解り易い。
俺もjavaは知らないけどなんとか理解できた。
0521デフォルトの名無しさん
2016/10/18(火) 21:46:21.34ID:4Ny7N2e6初心者がいきなりそんなもの覚えたところまともに使えないどころか
必要以上にデザインパターンに固執してしまってかえって上達の妨げにしかならんよ
0522デフォルトの名無しさん
2016/10/18(火) 21:56:54.58ID:AebkJyW4>>520氏の言う通りだと思うけど、もしJava等は知ってるけどVBAの事情を知りたいというなら残念ながらあまり情報はない。
「VBA クラスモジュール活用」とかで検索すればあるけど。
洋書でこれはいいらしい(やはり価格高騰)
https://www.amazon.co.jp/exec/obidos/ASIN/0782129781/thomjp0d-22/
0523デフォルトの名無しさん
2016/10/18(火) 22:19:34.39ID:3aNui5NZ0524デフォルトの名無しさん
2016/10/18(火) 22:29:32.27ID:48uEKUjyでも、俺しか見ないしな・・。
普通にaにしとくか。
0525デフォルトの名無しさん
2016/10/18(火) 22:48:20.77ID:3aNui5NZ色んな機能をそのまま書き込んでいるタイプのものでaとかbとかにされると、
後で読んだときに訳分からなくて困るんだよな(自分で書いたコード見ながら
0526デフォルトの名無しさん
2016/10/18(火) 23:04:09.37ID:q8Y2lqKG何かっていうとこの本出てくるなぁ
中読んだことないけどそれだけ話題に上るということは良いのかも知れないね
0527デフォルトの名無しさん
2016/10/18(火) 23:31:43.22ID:+IoGGEzP横浜中央図書館にあるよ。
市民じゃなくても閲覧席があるからゆっくり読める。
近くに風俗街もあるし。
0528デフォルトの名無しさん
2016/10/18(火) 23:39:27.41ID:+IoGGEzP近くに競輪場も風俗街もあるし。
0529デフォルトの名無しさん
2016/10/18(火) 23:51:31.44ID:AebkJyW40530デフォルトの名無しさん
2016/10/19(水) 20:55:01.92ID:4EiJpNnxそれともその図書館はDVDにコピーするサービスでもやってくれてるのか?
デリヘルはどこまで来てくれるんだ?
0531デフォルトの名無しさん
2016/10/19(水) 21:38:07.86ID:o0JXy/150532デフォルトの名無しさん
2016/10/19(水) 22:14:18.08ID:XiGtjnpX特に効率と応用が両立しないぞゴラァ!
0533デフォルトの名無しさん
2016/10/19(水) 22:39:46.92ID:0fflT7Gv0534デフォルトの名無しさん
2016/10/20(木) 21:45:19.28ID:fztyo9E+For Nextとか、一旦セルにコピーするんじゃなく、
一撃弾平で。
0535デフォルトの名無しさん
2016/10/20(木) 22:36:00.75ID:gHA+zw4/1 2 3
4 5 6
と
7 8 9
2 1 3
を連結して
1 2 3
4 5 6
7 8 9
2 1 3
にしたいってこと?
For Nextを使った関数を作るしかないかと。
0536デフォルトの名無しさん
2016/10/20(木) 23:12:57.88ID:/SsGDeE80537デフォルトの名無しさん
2016/10/20(木) 23:15:22.44ID:gHA+zw4/0538デフォルトの名無しさん
2016/10/20(木) 23:20:29.22ID:/SsGDeE80539デフォルトの名無しさん
2016/10/20(木) 23:28:00.38ID:m4ouL4Z80540デフォルトの名無しさん
2016/10/20(木) 23:34:27.76ID:gHA+zw4/0541デフォルトの名無しさん
2016/10/21(金) 00:10:11.43ID:g7JyAyW/具体例を書いてくれ
0542デフォルトの名無しさん
2016/10/21(金) 06:43:28.19ID:j70gXNzHシートに行を挿入したり削除したり出来ない様にイベントを発生させたいのですが、excelvbaで可能でしょうか?
RaizeEventを使うのかなと思うのですが、ネット検索しても情報がないのでお願いします。
0543デフォルトの名無しさん
2016/10/21(金) 07:14:09.62ID:ru3MSCG6>>535
0544デフォルトの名無しさん
2016/10/21(金) 07:20:59.55ID:8srp9xCJシートに行を挿入したり削除したりしないようにするにはシートを保護すればできると思うけど、
「イベントで」のくだりが分からないなぁ。
挿入や削除するときの直前を捕まえてキャンセルしたいってこと?
0545デフォルトの名無しさん
2016/10/21(金) 07:30:55.31ID:8srp9xCJ削除されたときを捕まえて元に戻すことになるみたい。
ネットで見たらこんなの載ってた
http://sp.okwave.jp/qa/q3027310.html
0546デフォルトの名無しさん
2016/10/21(金) 07:57:41.73ID:K84vLDbs>>545
返答ありがとうございます。
行を削除したり挿入した際に特定の処理を発生させたいのです。
0547デフォルトの名無しさん
2016/10/21(金) 08:07:22.14ID:RUPp7NOtだし意味わからん
Raize とか書いてるからネタの可能性も捨てられないし
0548デフォルトの名無しさん
2016/10/21(金) 08:10:45.27ID:RUPp7NOt> 行を削除したり挿入した際に特定の処理を発生させたいのです。
>>542
> シートに行を挿入したり削除したり出来ない様に
言ってることがちぐはぐすぎる
0549デフォルトの名無しさん
2016/10/21(金) 08:49:36.66ID:O+Ombm1t0550デフォルトの名無しさん
2016/10/21(金) 11:32:46.70ID:3pfbI0SC.netとかでよくあるイベントをhandleでキャンセルするタイプをやりたいとか?
0551デフォルトの名無しさん
2016/10/21(金) 11:42:55.50ID:NPTRaxQ1前任者が置いていったあるエクセルファイルについてなのですが、このファイル内にある7枚のワークシート上に、それぞれ1つのクエリデータをアクセスから取り込む形になっています(つまり7つのクエリデータをインポートしています)。
前任者からは、ファイルオープン時にそれらワークシート上のクエリデータを更新する為のマクロを記述しておくので、ファイルを開く時には実行するようにと申し送りされたのですが、そのマクロの中身を見ると、
まずワークシート1に移動(Sheets1.select)し、selection.QueryTable.Refreshメソッド実行(BackgroundQuery=False)、次にワークシート2に移動しそこでまたselection.QueryTable.Refreshメソッド実行、
さらにワークシート3に移動しselection.QueryTable.Refreshメソッド実行・・・以下シート7までこれを繰り返しています。
これはこれでデータとしては正しく更新されるのでいいのですが、シート移動、クエリ更新の繰り返しで結構な時間を待たされます。
一度の命令でファイル内全てのクエリデータを更新することができないものかと思い、質問させていただきました。
宜しくお願いします。
0552デフォルトの名無しさん
2016/10/21(金) 11:52:19.37ID:cKA7Taypそれってトータルの時間が変わらないような気もするけど、早くなるよって見込みはあるの?
0553デフォルトの名無しさん
2016/10/21(金) 12:08:02.59ID:qQvprj9D0554デフォルトの名無しさん
2016/10/21(金) 12:18:04.77ID:K84vLDbsすみません。
行を削除、挿入時に処理を行いたいです。
特定の範囲でしか、発生させたくないのですが可能でしょうか?
0555デフォルトの名無しさん
2016/10/21(金) 12:30:37.89ID:KQ3X4+w0一緒ならどうしようもない 待つしかない
ん?ボタン一つに1Sheet分のクエリ割り当ててボタン七つを手早くポチポチ押せば早くなるのか?
今度やってみよう Access側から8Sheetを更新するのはやったことあるが、早くしようとか思ったことは無い
確実に更新されることの方が百倍重要だから
0556デフォルトの名無しさん
2016/10/21(金) 12:31:27.54ID:1eYeIrpy出来るんじゃないかい
0557デフォルトの名無しさん
2016/10/21(金) 12:50:39.77ID:RUPp7NOt範囲はイベントハンドラ内で判定して範囲外ならなにもしなければいいだけだけど挿入削除に限定するのは無理じゃね?
VBA で undo バッファの中身を参照できればいいんだが
0558デフォルトの名無しさん
2016/10/21(金) 15:30:06.27ID:YTB2M68F質問する場所がここでいいのかわかりませんが…
VB.NETでExcelのスライサーを表示させようとしています。
コードの記述方法がわからないため、マクロの記録で出来た
コードをVB.NETに転記してみたのですが、パラメーターが
間違っていますというエラーがでます。
マクロ記録のソース
ActiveWorkbook.SlicerCaches.Add2(ActiveSheet.PivotTables("ピボットテーブル1"), "担当者" _
).Slicers.Add ActiveSheet, , "担当者", "担当者", 0, 0, 150, 200
VB.NET上に転記したソース
book.SlicerCaches.Add2(book.ActiveSheet.PivotTables("ピボットテーブル1"), "担当者" _
).Slicers.Add(book.ActiveSheet, , "担当者", "担当者", 0, 0, 150, 200)
どこを直せばいいのかわからず困っております。
分かる方いらっしゃれば教えてください。
0559デフォルトの名無しさん
2016/10/21(金) 19:35:28.32ID:PyVjGIxMVBAとVB.NETは異なる言語じゃね?
0560デフォルトの名無しさん
2016/10/21(金) 20:34:15.33ID:SKijMLmF0561デフォルトの名無しさん
2016/10/21(金) 21:07:35.79ID:xeCh0sUKスライサーのObjectとかは分からないけど
とりあえずいっぺんにやろうとしないで
もう少し分けようか。
どっちにしたってComだから
使うObjectは全て変数に入れて使い終わったら
明示的に解放しないと解放されないし。
0562デフォルトの名無しさん
2016/10/21(金) 21:15:09.12ID:ru3MSCG6んだんだ、田に戻んべ
0563デフォルトの名無しさん
2016/10/21(金) 22:23:52.68ID:aVFrSkNGbookがどうやって設定されてるかわからんけど
book.ActiveSheetが想定されたものじゃないんじゃね
まあ再現に最低限必要なコードもエラーメッセージも正確に書かないやつの情報はあてにならんけど
0564デフォルトの名無しさん
2016/10/23(日) 23:41:38.70ID:aW3HZ+99オートシェイプ画像なら軽いけど、
弄られたくないからActiveXにしたい。
何とかなりません?
0565デフォルトの名無しさん
2016/10/24(月) 01:33:01.35ID:Uhchgf0Y0566デフォルトの名無しさん
2016/10/24(月) 09:18:58.14ID:OcK9A6lJそうですよね…
VB系の掲示板で聞いてもExcelの操作に関しては
あまり回答をもらえないことがあってこちらで聞いてみました
>>561
分けてみたりもしたのですが、スライサーのObjectを取得する際に
既にエラーになってますね…
>>563
ActiveSheet.Nameをするとシート名も返ってくるのでシート自体は
想定された場所を取ってこれてはいます。
とりあえず聞く場所を変えてもう少し頑張ってみます。
回答くださった方ありがとうございました。
0567デフォルトの名無しさん
2016/10/24(月) 23:53:02.89ID:5ZagFF8p「図 1」というデフォ名だと画像と認識しないのに、
「図 1」に変えると画像と認識するんですけど、
このエクセル、なんかバゴってないですかね。
ホント、半角を全角に変える以外、何も変えてないんですけど。
0568デフォルトの名無しさん
2016/10/25(火) 11:53:54.61ID:bwb8FIUq他の人も書いてるけどvb.netは全く関係ない言語だから1から勉強してね
ヒントとしてはDLL参照でoffice.coreとoffice.interop.excelを入れます
Microsoft.office.interop.〜でvba関数が参照できる
0569デフォルトの名無しさん
2016/10/25(火) 21:48:16.58ID:VE8oMcUBdim b as integer
b=b+1
debug.print b
next a
としたら、bは次々と1ずつ増えます。
おかしくないですか?
dim b as integerの行を通過するときにbはリセットされると思うのですが。
0570デフォルトの名無しさん
2016/10/25(火) 21:59:54.02ID:4vxsSSjG0571デフォルトの名無しさん
2016/10/25(火) 22:13:21.76ID:oixUAf99そんなに b=0 って書くの嫌なのか?
あとピラニアンローズの刑な。
0572デフォルトの名無しさん
2016/10/25(火) 22:14:06.62ID:EGdLeg7dVBAはプロシージャレベルの変数になるので仕様です
ブロックレベルの変数はありません
https://support.microsoft.com/ja-jp/kb/141693
0573デフォルトの名無しさん
2016/10/25(火) 22:20:21.51ID:VE8oMcUBdim b as integer を2行書くとエラーが出るのに
for next無いでdim b as integerを1つ書いたら複数回その行を通過しているのにエラーが出ないのはおかしくないですか?
0574デフォルトの名無しさん
2016/10/25(火) 22:40:22.53ID:oMEIgCxEそんなけったいなコード組んだことないから何ともいえないけど調べて何か分かったら教えてくれ。
For Next 内に変数宣言した場合というのはひょっとすると.Netでも同じことが言えるかも知れないな。
0575デフォルトの名無しさん
2016/10/25(火) 22:42:39.94ID:/7P6AN2fならば結論はその前提が
間違えていたとなるね。
0576デフォルトの名無しさん
2016/10/25(火) 22:45:58.85ID:xcqxECReDim ステートメントの行にブレークポイントは置けない。
つまりそこで何かを実行しているわけではない、と解釈できないか?
0577デフォルトの名無しさん
2016/10/25(火) 22:52:30.15ID:egkoIRPPDim ステートメントでコンパイラ(注)に変数の型を指示してるだけ
(注)
VBAでは明示的にコンパイル作業が必要ないから わすれがちだけど
内部的に コンパイル→実行 ってやってるぞ
>>dim b as integer を2行書くとエラーが出るのに
だから コンパイル エラーなのねw
0578デフォルトの名無しさん
2016/10/26(水) 21:15:19.55ID:9BOnbnuhPコードにする際にDimで宣言された変数と値が代入される変数(に当たるコード)が関数の先頭に追いやられている。
つまり昨今の言語ではごく当たり前な2バッチ式コンパイルをしているだけなんだけど、
ブロック変数がないせいでコードを読んだ時の感覚と実際の挙動との隔たりが大きいんだろうね。
0579デフォルトの名無しさん
2016/10/26(水) 21:24:10.47ID:AudvuqkaDimの前でその変数を使うと怒られるもんな
0580デフォルトの名無しさん
2016/10/26(水) 23:14:11.14ID:6rPQDKeR自分の変数名はセンスが無いんじゃないかと不安になる。
自分しか見ないのに。
0581デフォルトの名無しさん
2016/10/26(水) 23:32:57.78ID:Audvuqkaたとえば?
0582デフォルトの名無しさん
2016/10/26(水) 23:40:53.24ID:LebVIXiL0583デフォルトの名無しさん
2016/10/26(水) 23:45:20.79ID:6PxwPUcPおれも
0584デフォルトの名無しさん
2016/10/26(水) 23:59:47.76ID:6rPQDKeRFor yoko = 1 to 10
Cells(1,yoko)・・・
Next
vlup = WorksheetFunction.Vlookup・・・
cell_hani = Range("A1:D16")
tx1 = Me.TextBox1.Text
なんか・・そのまんま。
0585デフォルトの名無しさん
2016/10/27(木) 01:44:05.06ID:o34mWVu+zipファイルを解凍しないで中に特定のフォルダやファイルがないか調べる方法はないでしょうか?
仕事上拡張子に頼らずにOfficeファイルの種類を判別する必要が出てきたので
http://d.hatena.ne.jp/tt_clown/20090819/p1
を参考にしてExcel VBAでファイルフォーマットを調べるマクロを書いて一応成功したのですが、
このやり方だとOffice2007形式のファイルはzipとみなしてCopyHereメソッドで解凍する必要があるので、
数百KB程度の大して大きくないサイズのファイルを1つ判別するのにも10秒くらいかかってしまいます
(Office2003形式の場合はバイナリを読み込んでファイル先頭付近のマジックナンバーを探す方法なので
数十MBのサイズの大きなファイルであってもはるかに高速に判別できる)
必要なのは解凍処理ではなく、zipファイル内部の特定の場所に特定のファイルがあるかどうか知ることなので、
解凍せずにそれができればもっと早く判別できるのではと思ったのですが、実際に可能なのかどうかわからず
頭を抱えています
もし外部のライブラリ等なしでそれが可能でしたら教えてもらえるとありがたいです
0586デフォルトの名無しさん
2016/10/27(木) 04:02:39.56ID:s+hjDNi9バイナリで先頭の方だけよみこんでマッチするか調べたらどうだろう
たとえば0x1000までに以下のパターンが出ればdocxと判定するとか
word/document.xml
77 6F 72 64 2F 64 6F 63 75 6D 65 6E 74 2E 78 6D 6C
今ちょっとファイル見ただけだから適当だけど
もっと補完する情報があれば足した方がいいと思う
これだけじゃ精度が心配だから
0587デフォルトの名無しさん
2016/10/27(木) 12:43:58.17ID:uoSnPm98作ってる時: センスあるじゃん俺
一週間後に見てる時: なんだこのセンスよ欠片もない名前つけたの誰よ... orz
0588デフォルトの名無しさん
2016/10/27(木) 13:03:54.55ID:dGx1j3A/vlupって...
なんとかnameとか、なんとかvalueとか、探しているモノに応じて名付ければいいだけじゃないの?
0589WEBクエリ
2016/10/27(木) 17:45:28.18ID:8avn7aCOデータにコロンが含まれるとデータの書式がユーザー定義の時間となり困っています。
あらかじめデータを取り込むシート全体を文字列にしてもダメでした。
解決策や別の方法等あればお知恵をお借りしたくよろしくお願いいたします。
過去に同じようなこと質問をされている方がいらっしゃいましたがそちらでは解決しなかったようです。
http://okwave.jp/qa/q8943600.html
0590デフォルトの名無しさん
2016/10/27(木) 18:21:04.81ID:ULPMzfggクエリの設定の中に指定できる所があったと思ったけど
0591WEBクエリ
2016/10/27(木) 19:41:23.25ID:8avn7aCOご返信ありがとうございます。
ハイフンやスラッシュに対しては「日付認識を無効にする」が有効なんですが
コロンに対するものがあるのかもう一度自分なりに調べてみます。
0592デフォルトの名無しさん
2016/10/27(木) 20:21:29.86ID:noYS4HoAセル範囲の重複部分はintersectで取得できますが
Set Rng1 = Range("A1:D5")
Set Rng2 = Range("C4:E10")
Set Target = Intersect(Rng1, Rng2)
重複しない部分(Rng1からRng2を除いた部分)はどうやったら取得できますでしょうか
0593デフォルトの名無しさん
2016/10/27(木) 21:23:47.94ID:3i9jCYg7range1の各セルでintersectがfalseのセルをdictionaryに追加する
0594デフォルトの名無しさん
2016/10/27(木) 21:39:10.40ID:3i9jCYg7これを2分木みたいに半分のレンジでやって
更に半分でやって更に半分でやって
0595デフォルトの名無しさん
2016/10/27(木) 21:41:36.74ID:3i9jCYg7レンジ2のセルに1を書き込んで
0のままのセルがレンジ1-レンジ2
0596デフォルトの名無しさん
2016/10/27(木) 21:50:50.84ID:noYS4HoAありがとうございます
ForEachで回すしかないんですね
重なりのないセルをunionで蓄積していくのかと思いましたが
dictionaryの方が処理が早いんですかね
dictionaryに追加して最後に範囲にさくっと変換できましたっけ
2分木はむずかしそうなので私には無理です
0597デフォルトの名無しさん
2016/10/27(木) 22:26:55.65ID:m+eE2WYvこれは面白い質問だね。
やり方は色々あるから色んな答えが挙がりそうだよ。
ちなみに自分だったら
もしそのセル範囲にテーブルのようにヘッダがついてたらSQL投げて取得するかな。
0598デフォルトの名無しさん
2016/10/28(金) 00:05:45.43ID:c60G8k2P0599デフォルトの名無しさん
2016/10/28(金) 00:50:53.59ID:2KwqNiX5セル範囲の引き算
Forでひたすらループする方法、言うのは簡単だけど実装は微妙に面倒だった
取得と言うよりは再構築してる
Sub Macro1()
Set rng1 = Range("A1:D5")
Set rng2 = Range("C4:E10")
s = ","
For Each c In rng1
s = s & c.Address(0, 0) & ","
Next
For Each c In rng2
s = Replace(s, "," & c.Address(0, 0) & ",", ",")
Next
a = Split(s, ",")
Set t = Range(a(1))
For i = 2 To UBound(a) - 1
Set t = Union(t, Range(a(i)))
Next
Set Target = t
End Sub
0600デフォルトの名無しさん
2016/10/28(金) 06:24:47.34ID:3G27cx4Xありがとうございます
Office2003形式の場合はマジックナンバーの出現地点が決まっていたのでそこだけ読めばOKでしたが、
2007形式でその方法となると出現地点が必ずしも固定ではないのが悩みどころですね
仮に指定した範囲を適当な配列に読み込むとして、その中に任意のバイト列があるかどうかの判定は
やはり自作関数でやるしかないですかね・・・??
0601デフォルトの名無しさん
2016/10/28(金) 10:12:26.95ID:lL0cSoUlVBAで使えるZIP用のライブラリとか、昔はいくらでもあった気がするんだが
ZIPがエクスプローラー標準で扱えるようになって見なくなったな
たぶんUNZIP32.DLLとか7-ZIP32.DLLとか使えばいけるんじゃね
0602デフォルトの名無しさん
2016/10/29(土) 01:24:26.69ID:Ku4sBrlI私はは、参照渡しを覚え、嬉しくなって使いまくることになりますが、
フラグ管理が面倒になり、結局、全部Publicにしてしまう事でしょう。
0603デフォルトの名無しさん
2016/10/29(土) 01:38:52.21ID:H+ayOhDL0604デフォルトの名無しさん
2016/10/29(土) 04:50:57.89ID:3gyU/Q8i参照渡しされた引数に設定したものを
呼ばれた側で変更する方法を最近覚えて
使いまくろうかなと思っていたんだけれど
よくよく考えてみたら沢山フラグとかを
引数で渡したりするのは面倒なので
結局変数をPublicにしておいて
モジュール間をやり取りすることに
なるんじゃないかと言いたかったとエスパー。
そうだとすればプロパティや
エンティティクラスを作って渡してやれば
解決なんだけど多分まだそこまでは
覚えていないって感じか。
0605デフォルトの名無しさん
2016/10/29(土) 07:10:27.55ID:Hi/Ho+7t器用な人がいるよねー
俺なんか渡し方をいくらシンプルにしても状態がたくさんあること自体が脳のキャパを超えてしまってダメだわ。
0606デフォルトの名無しさん
2016/10/29(土) 07:24:39.06ID:ozL8cz/2自分まさにそうだわ
関数A→B→Cと下請け関数を呼んでいく構造の時
共通するフラグ変数を引数でバトンタッチしていくのが苦痛なのでPublicにしてしまう
0607デフォルトの名無しさん
2016/10/29(土) 07:47:49.35ID:H+ayOhDLやってもprivateのメンバ変数まで
どうしても外の処理結果で処理をわけたいし同じような処理なのでまとめたいってなったらクラスにしちゃう
0608デフォルトの名無しさん
2016/10/29(土) 09:56:28.49ID:ozL8cz/2例えば、シートを印刷する処理で
Sub A:ユーザーにシート名、「印刷」or「印刷ページ数を表示してから印刷」を選択させBへ
Sub B:印刷ページ数表示の指定だったらページ数を数えてCへ
Sub C:対象シートをフラグに従って印刷、またはページ数表示してから印刷する
これだとシート名と印刷フラグをABCと引数で受け渡していく必要があるのだけど
クラスにすると解決するのなら勉強してみようかな
0609デフォルトの名無しさん
2016/10/29(土) 10:25:50.24ID:H+ayOhDLそもそもマクロ組む必要性を感じない
俺ならページを表示させたりさせなかったりしなきゃならないエクセルの運用を見直す
0610デフォルトの名無しさん
2016/10/29(土) 10:40:27.53ID:DOcPl4sK> これだとシート名と印刷フラグをABCと引数で受け渡していく必要があるのだけど
Type 印刷条件型
シート名 As String
ページ数表示 As Boolean
ページ数 As Integer
フラグ As ...
End Type
Dim 印刷条件 As 印刷条件型
Call A(印刷条件)
Call B(印刷条件)
Call C(印刷条件)
0611デフォルトの名無しさん
2016/10/29(土) 15:22:28.05ID:8grHgeXDユーザー定義型って他のモジュールの関数の引数に使うときPrivate指定で出来るんだっけ?
Public指定なら引数にする必要性ないんだが。
0612デフォルトの名無しさん
2016/10/29(土) 16:21:02.37ID:ZloojbFD> ユーザー定義型って他のモジュールの関数の引数に使うときPrivate指定で出来るんだっけ?
Public Type 印刷条件型
> Public指定なら引数にする必要性ないんだが。
意味わからん
型と変数の区別がついてないのか?
0613デフォルトの名無しさん
2016/10/29(土) 16:46:20.85ID:3gyU/Q8iいや、標準モジュールにユーザー定義型を設定することを前提に言ってるんじゃないのか?
クラスにユーザー定義型を設定するのはこのケースだとあまり意味がないぞ。
クラス自体をエンティティとしてそのインスタンスを引数に渡せばいいだけだからな。
クラス自体に変数を纏める役割を持たせることが出来るので
わざわざユーザー定義型を設定する意味がない。
0614デフォルトの名無しさん
2016/10/29(土) 16:55:04.62ID:3gyU/Q8iその観点で言えばプロパティやセッタ、ゲッタで渡せないなら引数にしないで直接やり取りしてしまっているのと同じ。
ただ変数が纏められているというだけで、
それならまだDictionaryを引数に渡してやるほうがマシ。
0615デフォルトの名無しさん
2016/10/29(土) 17:47:37.89ID:8r545GuTユーザにページとかを指定させるGUIはフォームなんじゃね?
そのフォームから値を取れば良いんじゃないの?
シートの関数とかの引数ならそのセルから値を取れる
0616デフォルトの名無しさん
2016/10/29(土) 18:09:47.45ID:ZloojbFD> クラスにユーザー定義型を設定する
誰もそんな話しはしてない
クラスを使いたいならそうすればいい
クラスファイルを別に作るとか面倒だとは思うけど
ただインテリセンスも効かない Dictionary を勧めるのはアホすぎる
0617デフォルトの名無しさん
2016/10/29(土) 18:18:27.88ID:8r545GuTインテリセンスが効かないって例えばどんなとき?
0618デフォルトの名無しさん
2016/10/29(土) 18:28:37.14ID:ZloojbFDDictionary 使ったこと無いの?
0619デフォルトの名無しさん
2016/10/29(土) 18:30:12.36ID:3gyU/Q8i何がいいたいのか分からない。だとすれば
>>612で俺に「変数と型の区別がついていないのか」と聞いた意図は何なのか?
もちろんDictionaryを使う方法は最善とは思っていない。
むしろよりスマートな方法を既に提示している通り、
この方法はお勧めしないが、それでもユーザー定義型を使って依存関係を崩すくらいなら
まだDictionaryを使った方がマシだと言っただけだ。
ちなみにDictionayにインテリセンスが効かせられないと言っていたが、
今回のケースは別にDictionary側にインテリセンスを利かせる必要はない。
引数名に当たるものを呼ばれる側のモジュールに定数でも良いので定義しておいて、
それをゲッタかリードオンリーのプロパティで取得すれば良い。
0620デフォルトの名無しさん
2016/10/29(土) 19:02:35.59ID:k6C/Bs810621デフォルトの名無しさん
2016/10/29(土) 19:05:45.44ID:3gyU/Q8iいや、流石にそう言う意味で言っているほど
レベルが低い訳ではないと願いたい。
0622デフォルトの名無しさん
2016/10/29(土) 19:17:23.84ID:ZloojbFDマジで言ってるのか引っ込みつかなくなってるのかはっきりしてくれ
話はそれからだ
0623デフォルトの名無しさん
2016/10/29(土) 19:19:33.51ID:3gyU/Q8iもちろんおおマジだ。
だからまず最初の問いに答えてくれ。
こっちはまずそっちが何を言いたいのか
よく分からないんだ。
0624デフォルトの名無しさん
2016/10/29(土) 19:30:35.46ID:ZloojbFD> ユーザー定義型って他のモジュールの関数の引数に使うときPrivate指定で出来るんだっけ?
型を Public にすればできる
> Public指定なら引数にする必要性ないんだが。
変数自体は Private にもできるし Sub/Function 内に定義した変数でも渡せる
Public にする必要はない
0625デフォルトの名無しさん
2016/10/29(土) 19:38:32.30ID:3gyU/Q8i一番最初の話に戻るんだが、他のモジュールに
ユーザー定義型で指定した頭の部分そのものをPrivateのかたちで
プロパティやゲッタで渡せるんだっけ?
Publicで渡すのは結局話の起点になっている>>602の方式と何ら変わりがないことと
何度も言っているが依存関係を壊すので俺的には無しだと思っているが。
0626デフォルトの名無しさん
2016/10/29(土) 19:56:41.11ID:biIggA6Xpublicなインスタンスは扱いが難しいので俺ならあまり使わないだけ
0627デフォルトの名無しさん
2016/10/29(土) 20:02:06.07ID:ZloojbFD> 頭の部分そのもの
オレオレ用語で言われてもわからん
> プロパティやゲッタで渡せるんだっけ?
試せよ
> Publicで渡すのは
(変数そのものは) Private でもローカル変数でもいいと書いてあるんだが
> 何度も言っているが依存関係を壊すので俺的には無しだと思っているが。
Public で渡すとか言ってるのはお前だけ
0628デフォルトの名無しさん
2016/10/29(土) 21:11:59.62ID:3gyU/Q8i調べてみた。状況によっては使えるようだが、
状況によっては使えないようだ。
http://oshiete.goo.ne.jp/qa/2157914.html
俺の中ではこの方法は却下という結論が出たのでもういいや。
0629デフォルトの名無しさん
2016/10/29(土) 21:39:13.76ID:ZloojbFDなんで話にも出てない複数の型を受ける関数の話を持ってきたのか理解に苦しむが
> もういいや。
と言うのが君にとって正解だと思う
0630デフォルトの名無しさん
2016/10/29(土) 21:46:31.28ID:256R+KmZ簡単なことだ。クラスで設定すれば何も問題起きないところを
ユーザー定義型を使えば問題が発生することがあるのであれば
モジュール跨ぎの際は使わない方が賢明だろう。
0631デフォルトの名無しさん
2016/10/29(土) 21:57:38.71ID:ZloojbFDそんなケースがどんだけあるんだ?
って話
必要もない場所でそんなことする奴は単なるアホ
0632デフォルトの名無しさん
2016/10/29(土) 22:29:17.19ID:256R+KmZどうやら多態性に対する知識は持ち合わせていないようだな。
君がこういうことがどういうケースに当てはまるか想定出来ない時点でそれは理解出来た。
つまりインターフェースを使うどころかVariantに入れるような真似をしてもユーザー定義型であれば
多態性を持たせることが出来ないということだ。
「そんなケースがどんだけあるんだ?」と言ってるということは
今までにそういうごく一般的なケースに当たったことがないということだろうから
まぁ仕方ないんだろうけどな。
これは知識不足というより経験不足の類だな。
0633デフォルトの名無しさん
2016/10/29(土) 23:28:42.86ID:Hi/Ho+7t上手く使えばなんかできるかも。
0634デフォルトの名無しさん
2016/10/30(日) 00:03:33.14ID:Fr0VQAVA下手にこだわるよりもレコードセットか何か作って入れてしまった方が汎用性も保守性も高いから、
異なる形式のファイルを読み込む際とかの非常に限定されたケースでしか使わないんだよな。
0635デフォルトの名無しさん
2016/10/30(日) 00:38:19.36ID:m1gQvIw9レコードセットは複数の配列やオブジェクトをしまうのに向いてないし
クラスは上手く使えば一挙に分岐を減らせるから好き
0636デフォルトの名無しさん
2016/10/30(日) 01:28:15.97ID:eH6CF+l2何でもかんでもPublicにしないようにって書いてあるのを見るけど、
そもそもPublicだったら何が悪い?
メモリを余計に消費するとか、重いとか?
変数名が被った時だけの問題?
0637デフォルトの名無しさん
2016/10/30(日) 01:37:02.64ID:o8ctfvwB0638デフォルトの名無しさん
2016/10/30(日) 02:15:31.64ID:Fr0VQAVA変数名がかぶった時だけの問題。
あと自関数内→モジュール全体→プロジェクト全体の順で変数を見つけに行くから、
別モジュールに書かれたPublic変数を使う時は少し処理が遅くなるらしいけど、
そもそもそんなアホな事しないから実験する気力もない。
0639デフォルトの名無しさん
2016/10/30(日) 06:26:55.45ID:uBoGqZ5Dいや、継承とかじゃなくて関係ないクラス間でもダックタイピングできるって意味。
0640デフォルトの名無しさん
2016/10/30(日) 08:25:57.80ID:2kQlDpFEで、>>608 のどこに多態が必要なんだ? w
そもそも継承できない VBA のクラスって結局 >>628 のリンク先のように自分で分岐を記述する必要があるから面倒なだけでほとんどメリット無いし
カプセル化のために使うならまだしも VBA のクラスで多態って言う奴はまともなオブジェクト志向の言語を使ったこと無いんだろうと思う
>>633
>>682 のリンク先の回答者も Variant で受けてるけど本来は Object で受けるべき
0641デフォルトの名無しさん
2016/10/30(日) 09:33:13.44ID:VEnZGhDR0642デフォルトの名無しさん
2016/10/30(日) 10:00:12.63ID:uBoGqZ5D>If TypeOf arg1 Is Class1 Then '引数がClass1
とか確かに良くないな。
ダックタイピングの方がずっとまし。
0643デフォルトの名無しさん
2016/10/31(月) 21:07:01.13ID:KAknawzjなぁ、こんな酷い突っ込みどころ満載のレス、
どこから突っ込めばいい?
>そもそも継承できない VBA のクラスって結局>>628 のリンク先のように自分で分岐を記述する必要があるから面倒なだけでほとんどメリット無いし
これは完全に知識不足。
リンク先がそうなっているからって
VBAで通常あんなところに分岐を記述する必要など全くない。
>カプセル化のために使うならまだしも VBA のクラスで多態って言う奴はまともなオブジェクト志向の言語を使ったこと無いんだろうと思う
全く意味不明。
10歩譲って「オブジェクト志向」は唯の書き間違い
(それでも普段オブジェクト指向という文言を使っていればこんな自動変換にはならないはず)
だったとしても、
多態性を持たせる為に.Netでいうクラスの継承しか使ったことがないような発言だが、
だとしたら余りにも陳腐。
>>>682 のリンク先の回答者も Variant で受けてるけど本来は Object で受けるべき
これはもう目も当てられない。
「お前、型を舐めてるだろ」としか言いようがない。
もちろんVarian型も駄目だがObject型も同様に駄目だということを全く理解していない。
よくこれで人に「オブジェクト志向の言語を使ったこと無いんだろう」なんてドヤ顏で言えたもんだ。
0644デフォルトの名無しさん
2016/10/31(月) 21:18:45.29ID:PlDOR6RYバカの特徴: ダメ出しするけど正解は書かない(書けない)
0645デフォルトの名無しさん
2016/10/31(月) 21:20:56.68ID:KAknawzjここまで色々書いても全く読み返しも調べ直しもしない奴に与える知識などない。
0646デフォルトの名無しさん
2016/10/31(月) 21:24:42.83ID:ZJdINGKMVBAはVariant型でやりとりするタイプのオブジェクト指向言語なので、
これをつぶしに掛かるとか愚の骨頂。
関数なりメソッドなりの内側で型チェックするかエラーをキャッチして弾くべき。
0647デフォルトの名無しさん
2016/10/31(月) 21:28:20.50ID:J/jjf+10>VBAはVariant型でやりとりするタイプのオブジェクト指向言語なので、
www
0648デフォルトの名無しさん
2016/10/31(月) 21:31:51.10ID:KAknawzjセル範囲や配列のことを考えると
まぁ言いたいことは分からないでもないんだけどな。
0649デフォルトの名無しさん
2016/10/31(月) 21:52:33.89ID:ZJdINGKMもしかしてカプセル化・多態性・継承だけがOOPと呼ばれるものだと勘違いしてる?
0650デフォルトの名無しさん
2016/10/31(月) 21:54:56.76ID:PlDOR6RYはいはい w
知ったかの知識なんて要らんしどうでもいいわ
>>648
セルとかDBから受けたりする時はそうすればいいと思うよ
でも >>628 のケースは違うでしょ
0651デフォルトの名無しさん
2016/10/31(月) 22:00:12.02ID:KAknawzj大体ここ見てるとそんなものだと思うけど、
他に何かあるっけ?
https://ja.m.wikipedia.org/wiki/オブジェクト指向プログラミング
ちなみにLinqとかラムダ式はVB.NetやC#で使えるものの、あれは関数型言語の範囲という認識。
0652デフォルトの名無しさん
2016/10/31(月) 22:04:37.62ID:KAknawzj知ったかってことにしておかないと
面目も立たないしな。
でもある程度知識がある人が見ると>>640は見た方が赤面するレベルだということは
知っておいた方がいい。
0653デフォルトの名無しさん
2016/10/31(月) 22:10:15.48ID:34rFxEXFそれは暴論だし型チェックはまっぴらごめんだ。
しかしVBAはいろんな原則論をスルーできる言語ではある。
0654デフォルトの名無しさん
2016/10/31(月) 22:20:05.22ID:PlDOR6RY具体的に何も書けないから知ったかって言ってるだけ
ダメ出しだけならアホでもできる
ここら辺で >>628 を自慢の知識でかっこよく書いて見たらいいんじゃね? w
0655デフォルトの名無しさん
2016/10/31(月) 22:28:37.72ID:Zh9I3UBQなるほど確かにこれはちょっとw
\(//∇//)\
0656デフォルトの名無しさん
2016/10/31(月) 22:32:50.93ID:ZJdINGKMそのページにも書いてあるけどOOPの基本はメッセージングだよ。
共通の抽象型でやりとり出来るVBAはオブジェクト指向言語の範疇内。
0657デフォルトの名無しさん
2016/10/31(月) 22:47:59.64ID:KAknawzjああ言われて見ると確かにそっちの方が基本だわな。
ただ「共通の抽象型」って何を持ってそう呼ぶの?
例えば二つの自作クラスを使用するときにVariant型やObject型も含めてそう呼んでそれを許容する?
0658デフォルトの名無しさん
2016/10/31(月) 22:52:00.50ID:KAknawzj二つの自作クラスのインスタンスを格納するとき、Variant型やObject型も「共通の抽象型」と呼ぶのかと、それをそう使うことを許容するのか、ということね。
0659デフォルトの名無しさん
2016/10/31(月) 23:00:44.80ID:KAknawzjもういいよそいつは。
実際このスレにも以前同じような、って言うか
呼び口を変えることで違う挙動をするような
真逆のパターンのコードを書いてたりしているんだけどそれすら目を通していないか
或いは理解出来ない程度ということだろう。
0660デフォルトの名無しさん
2016/10/31(月) 23:24:59.37ID:vEy2KB8X100件もいかないような軽い処理なんか、
別に未指定(Variant)でいいのに、一々指定しちまう。
後、全然関係ないが、
絶対DimよりDomの方が格好いいって。
0661デフォルトの名無しさん
2016/10/31(月) 23:29:46.78ID:PlDOR6RYはいはい w
0662デフォルトの名無しさん
2016/10/31(月) 23:33:10.41ID:KAknawzj残念だったな。その無知のまま死ぬまでVBAで安月給でこき使われればいいと思うよ。
0663デフォルトの名無しさん
2016/10/31(月) 23:50:59.11ID:PlDOR6RY別に俺は VBA で頑張らなくても C++, C#, PowerShell とかから Excel 使えるからなんの問題もないし
そもそも VBA で飯食ってる訳じゃなくて半分趣味だし
まあ >>662 は頑張って VBA を極めればいいんじゃね? w
0664デフォルトの名無しさん
2016/10/31(月) 23:54:20.41ID:KAknawzjはいはいwww
0665デフォルトの名無しさん
2016/10/31(月) 23:55:45.56ID:5Lvs06Cq100件て処理件数のこと?
軽い処理ならローカル変数使わない技にチャレンジすると面白いよ。
つまり引数と関数名以外には変数というものを使わない縛りだ
0666デフォルトの名無しさん
2016/11/01(火) 00:00:31.36ID:jYbqWcmm0667デフォルトの名無しさん
2016/11/01(火) 00:05:09.66ID:Y7fan+vq地雷臭しかしない
0668デフォルトの名無しさん
2016/11/01(火) 03:56:57.25ID:x4knKNqkOOP自体は共通の型であれば整数型でもString型でも成立する。
VBAはOffice製品全体を操作する事が目的なのでVariant型のみが「共通の抽象型」と言える。
0669デフォルトの名無しさん
2016/11/01(火) 04:03:54.73ID:2HgdLJ2l調べても全然出てこないんで書き逃げ
Private Declare Function UrlMkSetSessionOption Lib "urlmon.dll" _
(ByVal dwOption As Long, ByVal pBuffer As Any, _
ByVal dwBufferLength As Long, _
ByVal dwReserved As Long) As Integer
Private Sub UserForm_Initialize()
Dim UserAgent As String
UserAgent = "Mozilla/5.0 (Android; Tablet; rv:26.0) Gecko/26.0 Firefox/26.0"
Dim ret As Integer
ret = UrlMkSetSessionOption("&H10000001", UserAgent, 62, 0)
Me.WebBrowser1.Navigate "http://google.com"
End Sub
このままだとスクリプトエラーが出るので、WebbrowserのIEのバージョンを変更
ttps://www.ipentec.com/document/document.aspx?page=csharp-change-webbrower-control-internet-explorer-version
を参考に実行ファイルはEXCEL.EXEでレジストリの設定
0670デフォルトの名無しさん
2016/11/01(火) 07:34:56.36ID:RNE49ydt「VBAで共通の抽象型と言えばVariant」というそちらの主張は分かったけど、
>>658で言うように二つの自作クラスのインスタンスを同じ変数に格納したいときVariant型を使うの?
0671デフォルトの名無しさん
2016/11/01(火) 09:28:00.71ID:jIYKFvUJ以前は正常に使えていたプログラムが止まるんですが、
ページの表示完了を調べるにはどうすればいいんでしょうか?
ぐぐったらVisibleを操作すればいいとあったのですが、確かにそれでも動くのですが画面がチカチカするのと、
動作中に別のアプリを立ち上げるとVBAがエラーで止まってしまうので困っています
0672デフォルトの名無しさん
2016/11/01(火) 11:59:29.90ID:lqbzbD2j0673デフォルトの名無しさん
2016/11/01(火) 12:07:49.71ID:RNE49ydtそれは設計の問題じゃないのか?
0674デフォルトの名無しさん
2016/11/01(火) 12:14:56.41ID:lqbzbD2j後からじゃグルーコードでしか対応出来ないよね
0675デフォルトの名無しさん
2016/11/01(火) 12:44:21.90ID:OMcNOMYMそいつに具体的な話を聞いても無駄だよ
0676デフォルトの名無しさん
2016/11/01(火) 12:49:16.62ID:OMcNOMYMReadyState はサポートしないから代わりに onload イベント使え
ってことらしい
https://msdn.microsoft.com/ja-jp/library/bg182625(v=vs.85).aspx
0677デフォルトの名無しさん
2016/11/01(火) 15:50:45.84ID:B6kgVjS60678デフォルトの名無しさん
2016/11/01(火) 16:05:27.81ID:QvtFUXm40679デフォルトの名無しさん
2016/11/01(火) 17:56:49.62ID:jIYKFvUJ今までのようにプロパティをチェックする方法は使えなくて、イベントハンドラを書かないとだめのようですね
だいぶ面倒そうですが、ちょっとやってみます
0680デフォルトの名無しさん
2016/11/01(火) 20:29:54.74ID:x4knKNqkいまいち言っていることが分からないけど、
Dim v As Variant
Set v = New 自作クラス
とした場合に、これは自作クラス型ではなくVariant型であると考えているなら、
そもそもVariant型というものに対するイメージが間違っている。
この場合はNewした自作クラス型インスタンスのポインタをVariantに渡しているだけ。
あるいは「二つの自作クラス間でのやりとりにVariant型が適していない状況でも共通の抽象型として強いるべきか」という意味なら、
引数と戻り値の型を意識しなくて済むようにするのがOOPの第一義なので、
「俺はコマンドプロンプトの様な文字列だけで機能が完結するプロジェクトを作るぜ!」とかでない限りはVariant型が無難。
もしこれが答えにならないとしたら、もうちょっと詳しく説明してくれないと理解が及ばないわ。
0681デフォルトの名無しさん
2016/11/01(火) 21:01:48.60ID:lMJOpFFx関数の引数を ByRef v As Variant としてクラスインスタンスを渡すんでしょ?
(この場合 ByVal でもいいけど)
で、v をどう使うの?TypeName は見るの?
0682デフォルトの名無しさん
2016/11/01(火) 21:03:10.68ID:II5/lrXvそうだな。すまん、説明が少し足りなかった。
まず、なぜ「二つの自作関数」としたかについて。
Variantを使わざるを得ないケースもあるので、それを除外するためにそういうケースに限定させてもらった。
簡単にいうと、もしAとBという二つのクラスが存在した場合、
そのインターフェースを作成して型の安全性を担保しないのかということが聞きたかったんだ。
どちらかと言えば後者のほうの話だな。
0683デフォルトの名無しさん
2016/11/01(火) 21:07:19.57ID:HKalO/rx> 引数と戻り値の型を意識しなくて済むようにするのがOOPの第一義なので、
はあ?
お前はスクリプト言語でも使っとけよ...
0684デフォルトの名無しさん
2016/11/01(火) 21:10:31.09ID:II5/lrXvそりゃデータベースのオブジェクトマッピングとか
テーブル構成を変更したら作り直しになるケースもあるとは思うけど、
出来る限り追加で済ませて変更を行わないようにしてデグレ検証の工数を減らせるように
設計の時点で結合度を下げてきちんと役割考えて作っておけばかなり対応出来るとおもうけどなぁ。
0685デフォルトの名無しさん
2016/11/01(火) 21:41:34.39ID:x4knKNqk必要なOffice製品の操作を自作クラスでラップして、共通のインターフェースのみで例外なくやりとりするっていう前提なら
そのクラスは「共通の抽象型」と呼べると思う。
でも継承を含む方の、広義のOOPが目的としている生産性第一の考え方を前提とした場合、
VBA上でそんな事をするのはOOPと言えるのかどうか・・・。
0686デフォルトの名無しさん
2016/11/01(火) 21:56:41.23ID:S2XAyews0687デフォルトの名無しさん
2016/11/01(火) 21:58:59.56ID:S2XAyewsちなみに>>685にレスしてる俺は>>682と同一人物ね。
0688デフォルトの名無しさん
2016/11/01(火) 22:48:08.08ID:4xEbagYF0689デフォルトの名無しさん
2016/11/02(水) 06:54:16.45ID:64RcP31b0690デフォルトの名無しさん
2016/11/02(水) 11:42:10.89ID:Yw0kRdidまあまあ。
どうやっても不便さが解消されないからしょうがないのさ
無毛な議論だけどね〜
0691デフォルトの名無しさん
2016/11/02(水) 11:55:25.28ID:R/WpPams0692デフォルトの名無しさん
2016/11/02(水) 13:00:59.81ID:A9UccZAb0693デフォルトの名無しさん
2016/11/02(水) 15:02:30.51ID:qOvtD6b4dimentionには「大きさ」という意味がある
変数の表現できる範囲やビット幅、消費するメモリ量などを定義しているから「大きさ」で問題ない
0694デフォルトの名無しさん
2016/11/02(水) 15:22:41.28ID:1v9qW2Lt○不毛な議論
ある意味ハァハァ w
0695デフォルトの名無しさん
2016/11/02(水) 16:32:13.33ID:cswDNzjo昔は配列以外の変数は宣言が必要なかった(まあ今でも Option Explicit つけなきゃ同じだが)
でも配列は宣言しないと関数呼び出しと区別がつかないから配列宣言文として Dim が作られた
その後で普通の変数も宣言するようになったが予約語増やすのもなんなので Dim を流用した
0696デフォルトの名無しさん
2016/11/02(水) 16:50:43.21ID:A9UccZAbありがとう
やっぱその説が最有力候補か
0697デフォルトの名無しさん
2016/11/02(水) 18:05:34.18ID:UqjLMoVv懐かしいなぁ。まだ頭に「Visual」がついていなかった頃の話だよな。
WindowsどころかMS-DOSすらなかった
PC-8001とかPC-8801とかが全盛期だったころの話。
0698デフォルトの名無しさん
2016/11/02(水) 19:00:28.78ID:MaMEq4Kz0699デフォルトの名無しさん
2016/11/02(水) 21:42:14.93ID:MMGUl9NMどっちも、知ってる人にとっては話膨らみ易いよね。
興味のない人ごめんね。
0700デフォルトの名無しさん
2016/11/02(水) 21:55:24.53ID:Yw0kRdid× dimention
○ dimension
0701デフォルトの名無しさん
2016/11/02(水) 22:10:03.32ID:dzejWKHl「ディメン ジョン 」と覚えればヴィジョンとかの連想から-sionと書くようになる。
0702デフォルトの名無しさん
2016/11/02(水) 22:13:31.23ID:MMGUl9NM0703デフォルトの名無しさん
2016/11/02(水) 22:24:45.63ID:SLAFVIbmその頃はPC用のOSと言ったらCP/Mだったな
>>698
あったあった
0704デフォルトの名無しさん
2016/11/02(水) 22:32:20.04ID:Yw0kRdid0705デフォルトの名無しさん
2016/11/02(水) 22:43:27.94ID:4QljUUb8変わらないが
>>704
ナイスセンス
0706デフォルトの名無しさん
2016/11/02(水) 22:57:12.00ID:EkFiU+Sm逆だと思ってたわ。
Variant型っていう便利なのが出来て、宣言不要になりましたって。
>>704
何か、Redimって言いたいだけじゃね?
って思うときあるわ。
0707デフォルトの名無しさん
2016/11/02(水) 23:45:30.80ID:wsFczBeEA(1)がB、A(2)がC〜A(25)がZなんて割り当てになってた
0708デフォルトの名無しさん
2016/11/03(木) 17:47:38.98ID:if4cNPkvセルA1には100が入力されている状態。
@
Sub Sample()
ActiveCell = Func1(Activecell)
End sub
Funcion Func1(tmp as long)
Fun1 = Func1*10
End Function
→A1には0が出る
0709デフォルトの名無しさん
2016/11/03(木) 17:47:54.07ID:if4cNPkvA
Sub Sample()
ActiveCell = Func1(Activecell)
End sub
Funcion Func1(tmp as long)
Fun1 = tmp*10
End Function
→A1には1000が出る
この@とAの結果が理解できないのだが・・・。
@はアクティブセルに100が入ってるんだから、
100×10で1000じゃないの?
なぜ0になる?
解説読んでも分からない俺に丁寧に教えてほしい。
Aはtmp = Func1 =Activecell = 100だから100×10で1000という認識で良い?
※解説には引数を使用せず、Func1の初期値は0なので、0になる
と書いてあってワケワケメ。
0710デフォルトの名無しさん
2016/11/03(木) 17:49:03.05ID:if4cNPkvVBAマジ初心者なのでよろ
0711デフォルトの名無しさん
2016/11/03(木) 18:02:45.01ID:9GUNfw2l@
Fun1 = Func1*10
これはFun1 = 0 *10
なのでFun1 = 0
0712デフォルトの名無しさん
2016/11/03(木) 18:12:11.10ID:rcOPv7wxまず Func と Fun を間違えてるけど問題はそこじゃなくて、正解はたぶん
Func1 = tmp * 10
0713デフォルトの名無しさん
2016/11/03(木) 18:12:40.04ID:rhExFOFrFunc1(ActiveCell)と呼び出した場合、ActiveCellの値はFunc1に渡るのではなくtmpに渡る。
@の場合はtmpからFunc1へ値を渡す手段が存在していない。
0714デフォルトの名無しさん
2016/11/03(木) 18:38:54.88ID:NjbREez3> @はアクティブセルに100が入ってるんだから、
> 100×10で1000じゃないの?
> なぜ0になる?
> Funcion Func1(tmp as long)
> Func1 = Func1*10
> End Function
の中の
Func1 = Func1*10
で、右側の Func1 は関数の戻り値用の変数で誰も設定してないから 0 になってる
(正しくは Variant の Empty だけど説明がめんどいので知ってる人は突っ込まないでね)
なのでこの式を実行した結果として左側の Func1 に 0 が代入されてこれが関数の戻り値となるため
0715デフォルトの名無しさん
2016/11/03(木) 20:02:49.56ID:Zd6a9awnレスくれた人、ありがとう。
・・・しかし理解できないorz
>>714
Func1はアクティブセルって設定してるからいいんじゃないの?100になるのでは?
これはダメなの?
@とAの違いがどうしても分からない。
0716デフォルトの名無しさん
2016/11/03(木) 20:12:16.93ID:Zd6a9awn0717デフォルトの名無しさん
2016/11/03(木) 20:13:45.02ID:hi6D5Bdbなんでこんな無意味な問題を出すんだか
0718デフォルトの名無しさん
2016/11/03(木) 20:15:43.34ID:Zd6a9awnFuncion Func1(tmp as long)
これはどう理解すればいいの?↑
Func1 = tmp なの?
0719デフォルトの名無しさん
2016/11/03(木) 20:17:39.43ID:Z2ns8N+e「戻り値」だけじゃなく、「引数」も分かってないんじゃない?
解説の
>引数を使用せず、Func1の初期値は0なので、0になる
がすべてなんだけどな
0720デフォルトの名無しさん
2016/11/03(木) 20:20:39.28ID:Zd6a9awn>引数を使用せず、Func1の初期値は0なので、0になる
いや、これが理解できないんだわ。
Activecellは100だから、Func1(activecell)=100じゃないの??
0721デフォルトの名無しさん
2016/11/03(木) 20:27:15.48ID:OnkSCOBV根本的に勘違いしてる
ActiveCell = Func1(Activecell)
↑こう書いたらFunc1にActivecellの値が渡されると思い込んでるでしょ?それが間違い
実際にはFunc1の冒頭で Func1(tmp As Long) って書いてるんで、Activecellの値が渡されるのは
Func1内のtmpって変数になるわけ
ところがFunc1の内部ではtmpが使われてないので、引数としてFunc1に渡したActivecellの値は
どこにも使われることなくスルーされてるんだよ
つまりこのFunc1という関数は全く意味のない死に関数
Func1に引数の値を渡したかったらFunc1の内部で Func1 = tmp と書かないとダメ
0722デフォルトの名無しさん
2016/11/03(木) 20:29:22.84ID:Z2ns8N+eまず「引数」を理解してほしいかな…
関数に「渡す」ものだよ。
関数の値が「それになる」わけじゃない
VBAの場合、戻り値を関数名に代入するから、それとごっちゃになって分からなくなってるのかな…?
0723デフォルトの名無しさん
2016/11/03(木) 20:32:34.42ID:Zd6a9awn>ActiveCell = Func1(Activecell)
>↑こう書いたらFunc1にActivecellの値が渡されると思い込んでるでしょ?それが間違い
そうだよ。
>実際にはFunc1の冒頭で Func1(tmp As Long) って書いてるんで、Activecellの値が渡されるのは
>Func1内のtmpって変数になるわけ
>ところがFunc1の内部ではtmpが使われてないので、引数としてFunc1に渡したActivecellの値は
>どこにも使われることなくスルーされてるんだよ
>Func1に引数の値を渡したかったらFunc1の内部で Func1 = tmp と書かないとダメ
な、なるほど・・・・・・・・・・。
少し分かってきたけど、
>Funcion Func1(tmp as long)
はどういう意味なの?
tmp(=func1)はlong型の変数です、って意味?
0724デフォルトの名無しさん
2016/11/03(木) 20:42:27.23ID:OnkSCOBV>はどういう意味なの?
Func1はLong型の変数tmpを参照渡しで受け取って加工して何かの値を返す変数です っていう意味
ただし、さっきも言ったとおり何もしなくてもtmpの値がFunc1に渡されるわけではないので、
tmpをどう使うかはきちっとプログラマーがFunc1の内部に記述する必要がある
それを忘れると↑のような意味のない関数になってしまう
ちなみに関数がどういう型を返すかは引数のカッコの後に As を付けて指定する
Function Func1(tmp As Long) As Double
とすれば、Func1はLong型の引数を受け取って加工してDouble型の値を返す関数になる
0725デフォルトの名無しさん
2016/11/03(木) 20:44:00.90ID:OnkSCOBV誤:Func1はLong型の変数tmpを参照渡しで受け取って加工して何かの値を返す"変数"です
正:Func1はLong型の変数tmpを参照渡しで受け取って加工して何かの値を返す"関数"です
0726デフォルトの名無しさん
2016/11/03(木) 20:49:33.71ID:CvLLcWs6Func1と言うのは関数の名前
tmpは変数の名前
Activecell=Func1(Activecell)
は関数Func1にActivecell.valueを渡して呼び出すと言う事
そして関数Func1()からの戻り値をActivecell.valueに設定すると言う事
Function Func1(tmp as Long)は
関数Func1()の内容を決めますよと言う宣言
そしてFunc1()の中では呼び出された時に渡された値をtmpという変数に入れて扱うと言う事
て言うかなんで基礎知識も無いのに問題解いてるの?
0727デフォルトの名無しさん
2016/11/03(木) 20:53:23.23ID:Zd6a9awn引数の意味がよく分からんのだが・・・。
0728デフォルトの名無しさん
2016/11/03(木) 20:55:18.37ID:rhExFOFr関数は数学の授業とかで使う関数と同じ意味。読み方も一緒。
ActiveCell = Func1(Activecell)はy = f(x)と同じ。
引数は検索すりゃ意味が出てくる。
0729デフォルトの名無しさん
2016/11/03(木) 20:57:00.47ID:CvLLcWs6sumとかと一緒
sumとかに足し算する対象を指定するじゃん
それが引数
VBAでは関数を自分で作れる
その自作関数にFunc1と言う名前をつけるのが
Function Func1(tmp as Long)
そして引数はLong型の値を取りますよ
と言う事
0730デフォルトの名無しさん
2016/11/03(木) 21:02:16.85ID:OnkSCOBV関数ってのはある値を入力すると内部で加工して何かの値を返してくるブラックボックスだと思えばいい
ブラックボックスに入力する「ある値」が引数、加工されて返ってくる「何かの値」が戻り値とか返り値とか呼ばれるもの
SUMとかIFとかのアレも「ある値を入力すると何かの加工をして値を返す」という意味では関数だけど、
VBAのコード中でFunction hoge〜の形で使われる関数とは別モノ(「ワークシート関数」とか呼ばれて区別されてるようだ)
関数とか引数を知らないとなると余りにも基本的な知識がなさすぎる
まずはVBAの入門者向け解説書を1冊じっくり読んだ方がいいと思う
0731デフォルトの名無しさん
2016/11/03(木) 21:04:59.49ID:Zd6a9awnなるほど、分かりやすい。
テキストは田中亨のVBAベーシックは読んだけど、分かりにくいのが本音。
今日はこれから出かけるので、また今度スレに来るかも。
レスくれた人、ありがとうm(_ _)m
0732デフォルトの名無しさん
2016/11/03(木) 21:12:59.53ID:NjbREez3(1) Sub Sample()
(2) ActiveCell = Func1(ActiveCell)
(3) End sub
(4) Funcion Func1(tmp as long)
(5) Func1 = Func1*10
(6) End Function
で1ステップ毎に説明すると
(1) 開始
(2) ActiveCell の値 (100) を持って関数 Func1 を呼び出す
(4) 持って来た値 (100) を tmp に入れる (tmp が 100 になる)
Func1 と言う戻り値用の変数が作られる (初期値は 0)
(5) 0 * 10 の計算結果の 0 が Func1 に書き込まれる
(6) Func1 変数の値 (0) を持って呼び出し元に戻る
(2) 戻された値 (0) を ActiveCell に書き込む
(3) 終わり
ってこと
0733デフォルトの名無しさん
2016/11/03(木) 21:16:51.03ID:NjbREez3> 同一スコープで変数名と関数名が被るのってアリ?
VBA の仕様を理解してないなら ROM ってなさいよ
0734デフォルトの名無しさん
2016/11/03(木) 21:26:03.24ID:OnkSCOBVVB.NETからVBAに入ったけど、最初関数の値の返し方が分からなくて戸惑ったわw
return辺りで返すのかなと思ってたらまさか関数名に値を代入して返す仕様とは・・・
0735デフォルトの名無しさん
2016/11/03(木) 21:59:36.56ID:NjbREez3Pascal を真似たんだろうがちょっと理解しづらい仕様だと思う
0736デフォルトの名無しさん
2016/11/03(木) 22:34:34.93ID:Xw98VJcy0737デフォルトの名無しさん
2016/11/04(金) 01:40:01.99ID:jyKXR8RP0738デフォルトの名無しさん
2016/11/04(金) 08:49:30.77ID:MzKLrXxJと書くだけでだいぶわかりやすくなると思う
0739デフォルトの名無しさん
2016/11/04(金) 08:59:12.73ID:sU8qFob4X is Y ⇒ X は Y だ
X as Y ⇒ X を Y として
宣言時なら as でしょ
0740デフォルトの名無しさん
2016/11/04(金) 11:31:22.21ID:J71JD+W40741デフォルトの名無しさん
2016/11/04(金) 11:50:13.81ID:FBxZsWlPYes
0742デフォルトの名無しさん
2016/11/04(金) 12:04:26.76ID:yq4B+Q21なんだか面倒な仕様だな
(4) Function Func1(tmp As Long)
(5) Func1 = Func1 * 10
(6) End Function
0743デフォルトの名無しさん
2016/11/04(金) 12:05:46.88ID:MzKLrXxJ0744デフォルトの名無しさん
2016/11/04(金) 12:16:27.54ID:8TwcW80xDim Func1(10) As Long
Func1 = Func1(1) * 10
End Function
0745デフォルトの名無しさん
2016/11/04(金) 17:02:16.56ID:FBxZsWlPムリ
0746デフォルトの名無しさん
2016/11/04(金) 18:39:59.28ID:MzKLrXxJ0747デフォルトの名無しさん
2016/11/04(金) 21:25:17.31ID:wIulNpszパラメータ?
モジュールレベルスコープの変数のこと?
0748デフォルトの名無しさん
2016/11/04(金) 22:26:44.93ID:MzKLrXxJ0749デフォルトの名無しさん
2016/11/04(金) 22:58:10.62ID:FBxZsWlP0750デフォルトの名無しさん
2016/11/04(金) 22:58:42.01ID:wIulNpsz調子に乗って使うとスタックがオーバーフローしたりするのと
ちょっと普通の作りより癖があるので扱いに慣れるまで注意が必要。
0751デフォルトの名無しさん
2016/11/05(土) 01:38:57.19ID:JVJJflNV0752デフォルトの名無しさん
2016/11/05(土) 02:08:42.34ID:fEy9fbAW0753デフォルトの名無しさん
2016/11/05(土) 05:11:11.62ID:uHyI3o9M特にシート操作が
0754デフォルトの名無しさん
2016/11/05(土) 05:51:08.02ID:YXcxY70Qシート操作のどこで引っかかったかは知らないけどマクロの記録でやりたい操作をやったらある程度のプログラムもできてる
+αをくっつけてやればいったん完成
vbaは汚くても動けば目的を達成できてる
後は趣味の世界
きれいに並び替えたり共通点見つけてメソッド化したりメソッド増えてきたら種類ごとにモジュールけたり
0755デフォルトの名無しさん
2016/11/05(土) 07:05:50.52ID:vH5G11t0何してもいいと割り切ると意外と拡張できて実用的な言語ではある。
0756デフォルトの名無しさん
2016/11/05(土) 10:08:16.98ID:i5CUd//Y0757デフォルトの名無しさん
2016/11/05(土) 10:25:32.07ID:cY9pivXaデータを放り込んでゆくだけで自動的に格納・拡張されていき
添え字管理が不要ないわゆるリスト?はあるんでしょうか
あるならどうやれば使えますか
0758デフォルトの名無しさん
2016/11/05(土) 10:29:10.03ID:i5CUd//YCollection型使えばいいんじゃないの?
0759デフォルトの名無しさん
2016/11/05(土) 10:54:31.98ID:p62EnB4HVB6の文法のまま進化すれば良かったのに
COBOL並みに過去資産が膨大過ぎてVBA.NETには移行できなさそう
0760デフォルトの名無しさん
2016/11/05(土) 11:03:07.76ID:Eh5dh6IOマジレスすると、使えないことはない
アセンブラでDLL作ってDeclareでリンクすればいいんで
0761デフォルトの名無しさん
2016/11/05(土) 11:09:10.40ID:xa6BaB1I確かにCollectionが一番近い。
ただジェネリックも使えないし
IEnumerableを実装している訳ではないので
.NetのListと同じ訳には行かない。
って言うか.NetにもCollectionはあるから分かるか。
そう言った意味では、ない。
0762デフォルトの名無しさん
2016/11/05(土) 15:42:59.66ID:6wNzhQFs> .NetのListと同じ訳には行かない。
そんな後付けの要件言われてもなぁ...
0763デフォルトの名無しさん
2016/11/05(土) 18:40:13.12ID:dOhxOPN3後付けも何も最初からリストって言ってるじゃん
0764デフォルトの名無しさん
2016/11/05(土) 19:03:02.53ID:6wNzhQFsいちいち説明しないとわからんのか...
「 .Netの」Listと同じ
0765デフォルトの名無しさん
2016/11/05(土) 19:05:04.94ID:LRmP76b+Range(Range("A1"), Cells(Rows.Count, 2).End(xlUp)).Delete Shift:=xlToLeft
↑これは期待した通りに作動したのですが、それに加えてC列1番からC列n番を範囲指定し左詰めに削除するためにはどうすればいいかが分かりません。
どなたかご教示お願いします。
0766デフォルトの名無しさん
2016/11/05(土) 19:11:16.23ID:dOhxOPN3じゃあ何のリストだと思ってるのさ
0767デフォルトの名無しさん
2016/11/05(土) 19:24:53.01ID:6wNzhQFs日本語読めないバカは黙ってろよ
> データを放り込んでゆくだけで自動的に格納・拡張されていき
> 添え字管理が不要ないわゆるリスト
0768デフォルトの名無しさん
2016/11/05(土) 19:32:51.78ID:vH5G11t00769デフォルトの名無しさん
2016/11/05(土) 19:41:59.58ID:YXcxY70Q0770765
2016/11/05(土) 19:42:37.22ID:LRmP76b+また質問で恐縮なんですがお願いします。
A列に入力がある最終行を特定し(仮にn番とします)、A1〜Anのセル内が空白か「a」と入力されているか「b」と入力されているかのどれかに当てはまる場合、
そのA列該当セル〜C列の同じ行番号までを上詰めで削除するにはどうすればいいでしょうか。
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "" Or Cells(i, 1) = "a" Or Cells(i, 1) = "b" Then
Range(Cells(i, 1), Cells(i, 4)).Delete shift:=xlShiftUp
End If
Next
↑このように書いて動作させてみたのですが思うようにいきませんでした。
0771デフォルトの名無しさん
2016/11/05(土) 19:44:27.24ID:dOhxOPN3それは「いわゆるリスト」ではないな
0772デフォルトの名無しさん
2016/11/05(土) 19:49:50.80ID:9mC8a8qM行削除は最下行から上に向ってループして、
現在行の下の行を削除していくようにすると行番号がずれなくていいよ
0773デフォルトの名無しさん
2016/11/05(土) 19:55:40.66ID:LRmP76b+ありがとうございます。書き換えるとしたら
Range(Cells(i, 1), Cells(i, 4)).Delete shift:=xlShiftUp
この部分になるのでしょうか?
0774デフォルトの名無しさん
2016/11/05(土) 19:57:42.64ID:6wNzhQFsえ゛っ?
> ただジェネリックも使えない
> IEnumerableを実装している訳ではない
って言うのをただの感想ってとる人もいるんだな...
>>771
はいはい
君のリストの定義には興味がないからどうでもいい
0775デフォルトの名無しさん
2016/11/05(土) 20:02:40.97ID:Dz6KYDLTforのto前後を入れ替えてstep -1を最後に追加する
0776デフォルトの名無しさん
2016/11/05(土) 20:03:17.58ID:Dz6KYDLT無ければ作れば良いじゃない
0777デフォルトの名無しさん
2016/11/05(土) 20:06:35.21ID:LRmP76b+For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
↓
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
こんな感じでしょうか
0778デフォルトの名無しさん
2016/11/05(土) 20:07:03.11ID:dOhxOPN3今シートの列を1→Aとか27→AAとか、或いはその逆に変換するロジックを組んでいるんだけど、
どういった組み方が短くて見易いコードになると思う?
とりあえず今は敢えて再帰は入れてないけど。
0779デフォルトの名無しさん
2016/11/05(土) 20:34:26.52ID:4BVVHIRI内容に関わらず当事者じゃない者のコメントなんだから感想みたいなもんさ。
「後付け」ってのは言い出した本人が後から条件を追加することを言うわけだろ?
0780デフォルトの名無しさん
2016/11/05(土) 20:37:53.33ID:4BVVHIRI> データを放り込んでゆくだけで自動的に格納・拡張されていき
> 添え字管理が不要ないわゆるリスト
これは「いわゆるリスト」のイメージに合ってはいる
0781デフォルトの名無しさん
2016/11/05(土) 20:53:42.34ID:6wNzhQFs「後付け」じゃなくて「勝手な」って言えばいいのか?
0782デフォルトの名無しさん
2016/11/05(土) 21:04:44.33ID:Eh5dh6IOSplit(Cells(列).Address, "$")(1)
Cells(, "AA").Column
0783デフォルトの名無しさん
2016/11/05(土) 21:06:38.33ID:Dz6KYDLT26進数に変換するだけじゃね?
0784デフォルトの名無しさん
2016/11/05(土) 21:08:12.47ID:cY9pivXaまさに後付けなんですが、他に知っている言語がPythonだったから
うっかり「いわゆるリスト」って書きましたが、不適切でしたね
VBAのコレクションはキーを一緒に指定する(連想辞書と同じ?)ようで
残念ながら私の欲しいものとは違いました
0785デフォルトの名無しさん
2016/11/05(土) 21:23:54.07ID:6wNzhQFsバカに限って必要もないのに再帰とか言い出して笑うわ
・このアルゴリズムを実装する
⇒ https://support.microsoft.com/ja-jp/kb/833402
・Address( ) を使う
・テーブル作って一発変換
等々なんとでもなるやろ
0786デフォルトの名無しさん
2016/11/05(土) 21:24:08.28ID:dOhxOPN3有難う。一瞬シートオブジェクトに依存するからダメかと思ったけど考えてみたら
シートが無い状態ってブックがグラフのみで構成されているかアドインくらいしかないから
そもそもそう言ったマクロを走らせることがおかしいということで大丈夫だね。
これいいわ。
>>783
まぁそう。後はアスキーコードで変換すればいいと思ってたけど、>>782で行けそうだから
とりあえず何も問題が起きなければこれを使わせて貰うかな。
0787デフォルトの名無しさん
2016/11/05(土) 21:31:12.06ID:6wNzhQFsああ、最初に
連想配列を使う方法はわかった
って書いてあるな、見落としてた
直接にはないので ReDim で自分で拡張するか、個数が知れてるなら文字列に変換して適当なセパレータとともに追加していくとかぐらいしかやったことない
0788デフォルトの名無しさん
2016/11/05(土) 21:33:33.34ID:dOhxOPN3何とでも作れるところで「どうすれば短くて見やすいコードになるか」と言ったはずだ。
>>767の暴言をそっくりお返しさせて貰うわ
「日本語読めないバカは黙ってろよ」
0789デフォルトの名無しさん
2016/11/05(土) 22:00:31.03ID:6wNzhQFs選択肢書いてあるだろ?
Address 使う奴が短いのはわかりきってるがシートがない状態で使えないって後付けで条件追加されても困るしな w
0790デフォルトの名無しさん
2016/11/05(土) 22:01:56.06ID:cY9pivXaリストに放り込んだデータをFor Each i in〜的に処理するコーディングを
他言語で知ってしまうと、VBAのデータ構造は使いづらくて・・・
.NETにリストはあるようなので、それをVBAから利用する方法がないか調べてみます
0791デフォルトの名無しさん
2016/11/05(土) 22:06:16.00ID:YXcxY70Q必要なメソッドを必要に応じて追加していけば使いやすい個人用array型を作れる
0792デフォルトの名無しさん
2016/11/05(土) 22:12:01.43ID:gy9UaMj50793デフォルトの名無しさん
2016/11/05(土) 22:17:01.49ID:dOhxOPN3Linqやラムダ式は使えないけど、絞り込みや並べ替えを行う程度であれば
ひょっとするとRecordSetで何とかなるかもよ。
0794デフォルトの名無しさん
2016/11/05(土) 22:17:32.77ID:Dz6KYDLT自作クラスの中でCollectionを使えば良いんじゃね
キーをクラス変数で要素追加毎にインクリメントすれば良いのでは?
0795デフォルトの名無しさん
2016/11/05(土) 22:20:50.87ID:G9TH40zBそれならリスト的には使えないな
0796デフォルトの名無しさん
2016/11/05(土) 22:22:33.32ID:9mC8a8qM0797デフォルトの名無しさん
2016/11/05(土) 22:26:23.21ID:YXcxY70Qprivate var() as string
Public Sub Class_Initialize()
redim var(0)
End Sub
public sub add(s as string)
if(0<len(var(0))) then redim preserve var(ubound(var)+1)
var(ubound(var))=s
end sub
public property get getList() as string()
getList=var
end property
0798デフォルトの名無しさん
2016/11/05(土) 22:29:00.64ID:i5CUd//Y標準で実装されている機能の組み合わせだけで表面上はだいたい表現出来るしな。
0799デフォルトの名無しさん
2016/11/05(土) 22:35:44.04ID:6wNzhQFsまあ Python や C#、最近だと C++ とかでもリスト作ってさくっと for each みたいな構文で処理できるから、それら使った後で VBA 使うと色々もどかしいわな
一応 ReDim 使った動的配列でも for each は使えるみたいだけどね
>>795
一意キーだよ
>>794 の言うように自前で生成すれば重複しないって話
0800デフォルトの名無しさん
2016/11/05(土) 22:46:37.73ID:6wNzhQFsそれなにも追加してない状態で for each 回すと var(0) が参照されてループが一回回っちゃうとか
add("")
add("a")
ってやると要素が "a" だけになるとか
ちょっと問題あるかと
まあ、VBA では空の配列を表現できないので最初の問題はしょうがないとしても
クラスにするなら普通に上限を別の変数で管理した方がいいと思う
0801デフォルトの名無しさん
2016/11/05(土) 22:47:47.97ID:dOhxOPN3本当のところは>>796が言うように
設定しなければ一意とはならずに
値のみ設定して行くことができる。
0802デフォルトの名無しさん
2016/11/05(土) 22:52:48.85ID:YXcxY70Qまぁこのままだとそうだな
こんな雑なものをそのまま使うことはないしその辺は使うときにチョコチョコ手を入れればいいと思う
0803デフォルトの名無しさん
2016/11/05(土) 23:21:28.04ID:G9TH40zB空の配列ってArray()のこと?
0804デフォルトの名無しさん
2016/11/06(日) 03:18:43.48ID:10u3IhnOVBAだけで普通にやってたら作成できんはず
WebServiceToolkitで取得したデータが要素数0個の配列になって困った覚えがあるな
0805デフォルトの名無しさん
2016/11/06(日) 03:36:25.68ID:pNBJcExn・画像検索でスライドの特定の1枚から興味のあるスライド本コンテンツ
を辿る俺は情況
0806デフォルトの名無しさん
2016/11/06(日) 04:17:25.35ID:3q2RctVy0807デフォルトの名無しさん
2016/11/06(日) 06:13:06.49ID:WIxoq9wl0808デフォルトの名無しさん
2016/11/06(日) 07:27:01.07ID:dZD22YhG0809デフォルトの名無しさん
2016/11/06(日) 07:43:36.88ID:ZJ/PQVXx?
0810デフォルトの名無しさん
2016/11/06(日) 08:01:02.31ID:TsO3NfE3IsMissing = True かつ IsArray = True になるんだ。
これを実行してみ?
Sub MissingExpr(ByRef a As Variant, Optional ByRef b As Variant)
If IsMissing(a) Then
Debug.Print "a is missing"
Else
Debug.Print "a is not missing"
End If
If IsArray(a) Then
Debug.Print "a is an array"
Else
Debug.Print "a is not an array"
End If
If IsMissing(b) Then
Debug.Print "b is missing"
Else
Debug.Print "b is not missing"
End If
If IsArray(b) Then
Debug.Print "b is an array"
Else
Debug.Print "b is not an array"
End If
End Sub
Sub MissingExprTest()
Call MissingExpr(Array())
End Sub
0811デフォルトの名無しさん
2016/11/06(日) 08:41:07.14ID:GihBZw3q0812デフォルトの名無しさん
2016/11/06(日) 08:50:36.06ID:TsO3NfE3なるほど。
しかし b の方はEmptyでもNullでもなくIsMissing属性しか持っていないようだ。
0813デフォルトの名無しさん
2016/11/06(日) 08:54:41.12ID:TsO3NfE3Array() が IsMissing = True になることの意外さを言いたかったんだ。
0814デフォルトの名無しさん
2016/11/06(日) 10:01:01.90ID:aWGLyRUtああすまん array() は確かに空の配列なんだけど Variant の配列になるから
String とかの配列を想定してた
0815デフォルトの名無しさん
2016/11/06(日) 12:56:27.94ID:XCfSw/Uaフォーマットの許す限りどんな判定の組み合わせもあり得るだろ。
0816デフォルトの名無しさん
2016/11/06(日) 13:54:57.24ID:gUXTTT9Mってことでしょ
組み合わせとか言ってる奴は意味わからん
0817デフォルトの名無しさん
2016/11/06(日) 14:33:51.86ID:ZJ/PQVXxだけど明示的に Array() を渡したとき IsMissing だけで判断すると誤認するよ。
0818デフォルトの名無しさん
2016/11/07(月) 15:18:15.66ID:nniwu0bC0819デフォルトの名無しさん
2016/11/07(月) 15:37:35.30ID:VYBRu5rOSub ごみ箱を開く()
With CreateObject("Shell.Application")
.Explore "shell:RecycleBinFolder"
End With
End Sub
0820デフォルトの名無しさん
2016/11/07(月) 21:56:27.64ID:2N1s34vg0821デフォルトの名無しさん
2016/11/07(月) 22:05:53.92ID:a2KGFTus0822デフォルトの名無しさん
2016/11/07(月) 22:37:20.14ID:ASyIjsM70823デフォルトの名無しさん
2016/11/07(月) 23:13:32.43ID:hti3dUBlでもそこは突っ込まないのがお約束
0824デフォルトの名無しさん
2016/11/08(火) 00:07:19.86ID:6Fz71b9fいろいろ調べて、コレクションをリスト的に使えた感じなので書いておきます
引数にカッコを付けるものと付けないものがあったり
位置指定の引数が前だったり後ろだったりと少し統一感に欠けるところがありますが
ともかくこれで配列の煩わしいところを回避できそうです
Dim ar As Object
Set ar = CreateObject("System.Collections.ArrayList")
'全データ削除
ar.Clear
'末尾にデータ追加
ar.Add "A"
'要素数を求める
MsgBox ar.Count
'指定位置のデータ参照
MsgBox ar(0)
'指定位置にデータ挿入
ar.Insert 0, "B"
'指定位置から右方向へデータ位置を検索
ar.IndexOf("A", 0)
'指定位置のデータ削除
ar.Removeat(1)
'指定位置のデータ置換
ar(0) = "C"
'データの存在確認
If ar.Contains("B") Then 〜
'全要素の順参照
For Each Variant型変数 In ar 〜
0825デフォルトの名無しさん
2016/11/09(水) 00:32:05.84ID:nfVB7G/H普通に、セルにリンク貼ればいいじゃん。
$リサイコー.ビンの中にゴミ箱あるから。
0826デフォルトの名無しさん
2016/11/09(水) 14:31:54.77ID:J2xqIWXl(例)
A1 ☑ B1 True C1 □ D1 False E1 ☑ F1 True
A2 □ B2 False C2 ☑ D2 True E2 □ F2 False
となっている場合、
別シートのA1に「元シートB1のTrue数/元シートF1のTrue数」、別シートA2に「元シートB2のTrue数/元シートF2のTrue数」が転記される関数を入力しています。
(この場合だと、別シートA1には「1/1」、別シートA2には「0/0」の計算結果が反映されます)。
しかしこのやり方だと、
「元シートにチェックを入れる→別シートにおいて集計→二度目の集計として元シートにチェックを入れる
→別シートにおいて1回目の集計結果に加えるかたちで2回目の集計結果を反映→3回目の集計として元シートに……」
といった繰り返しの計算ができません。
そこで、以下のような処理が可能なボタンを作りたいと思っています。
元シートのチェック入れ作業が終わってから押す→別シートにおいて集計される。なおかつ元シートのチェック欄がまっさらになる
→再び元シートでのチェック作業を終えてから押す→別シートにおいて1回目の結果に上乗せされるかたちで集計される。なおかつ再び元シートのチェック欄がまっさらになる。
→再び元シートのチェック作業を終えてから……
こういった感じで繰り返しの処理ができるボタンを作りたいと思っています。
こういったことは可能でしょうか。もしも可能ならば手順を教えていただきたいと思っています。
0827デフォルトの名無しさん
2016/11/09(水) 14:57:26.81ID:PFTCi+bF>別シートのA1に「元シートB1のTrue数/元シートF1のTrue数」、別シートA2に「元シートB2のTrue数/元シートF2のTrue数」が転記される関数を入力
ここを、sheet2として、A1に元のB1のt数、A2に元のF1のt数、A3に元のB2のt数、A4にF2のt数とする。この場合だと1,1,0,0
で、下方向にデータが積み上がっていくようにしては?
2回目のデータは2行目、3回目は3行目、以下略
計算(割り算、足し算)はそのデータを使ってsheet3で行う。
0828デフォルトの名無しさん
2016/11/09(水) 14:57:30.76ID:mLDsYS4Lデータ入力をする「元シート」、元シートの計算をする「別シート」の他に
「別シート」での計算結果を累積していく「合計シート」を作る
で、更に「別シート」と「合計シート」を串刺し計算する「作業シート」を作っておく
そうするとVBAで作るのは
1.「作業シート」をまるっと「合計シート」に値で貼り付け
2.「元シート」のチェックをクリア
だけですむんじゃないかな
0829デフォルトの名無しさん
2016/11/09(水) 21:43:35.15ID:4D6UFStsシートチェンジのイベントを使えばいいんじゃ?
0830デフォルトの名無しさん
2016/11/10(木) 12:42:24.44ID:d3OX96o+「sub」で始まるときのように"標準モジュールにコードを入力→F5でマクロ実行"という手順を踏もうとすると
このブック内で既に存在しているマクロ名を選択させられるダイアログボックスが出現するだけで他はなにもおこりません。
どのようにすればいいのでしょうか
0831デフォルトの名無しさん
2016/11/10(木) 13:01:12.38ID:ABjoCTHbPublic Sub で始まるコードの中からそいつを呼ぶ
0832デフォルトの名無しさん
2016/11/10(木) 13:21:53.74ID:ho/Pu//S「Private sub」だからというよりも
引数が必要な プロシージャを F5で実行しようとしてない?
Private sub Test(hoge as Long)
のように ( ) の中に 引数指定が あるんじゃね?
この場合は F5では 実行できないと思うよ
0833デフォルトの名無しさん
2016/11/10(木) 13:47:12.35ID:X35QhmbOいや、privateだからだよ。
加えて、引数がある場合はpublicでも実行できないというだけ。
0834デフォルトの名無しさん
2016/11/10(木) 17:53:16.33ID:ho/Pu//Sよく分らんけど
なんか俺が想定してる操作とは違うんだな 了解した
ごめんね >>830
Vbeで 実行したいプロシージャに カーソル置いて F5 って操作の事だと思ったのよね(^^
0835デフォルトの名無しさん
2016/11/10(木) 18:17:00.43ID:X35QhmbOごめん、俺の方が間違ってた。
sub内にカーソルがあるときにF5の場合だね。
>>832が正しい。
0836デフォルトの名無しさん
2016/11/10(木) 20:15:41.20ID:N2YC4I8NIf .Show Then SourcePath = .SelectedItems(1)
End With
If Len(SourcePath) Then
TempPath = CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2).Path & "\Temp.tmp"
Shell "copy " & SourcePath & " " & TempPath
End If
とやると、Shellのところで「ファイルがありません」と出てしまいます。
Debug.Print "copy " & SourcePath & " " & TempPath
とやって出てきた文字列と同じものをコマンドプロンプトで打ち込むと成功するのですが、何が間違ってるのでしょうか?
0837デフォルトの名無しさん
2016/11/10(木) 20:22:35.36ID:bXVtYMGathisworkbook.pathを追加するとか
0838デフォルトの名無しさん
2016/11/10(木) 20:51:10.18ID:65UijVtD0839デフォルトの名無しさん
2016/11/10(木) 21:12:48.06ID:APk4FFQWShell "cmd /c copy " & SourcePath & " " & TempPath
もしくは
Shell "xcopy " & SourcePath & " " & TempPath
0840デフォルトの名無しさん
2016/11/10(木) 21:18:18.99ID:N2YC4I8Nありがとうございます。試してみたいと思います。
0841デフォルトの名無しさん
2016/11/10(木) 22:01:34.16ID:y/H7xYoYEXCEL 2007
IE11
を使用しています
VBAを使用し
BASEURL =
0842デフォルトの名無しさん
2016/11/10(木) 22:43:49.15ID:pEVMYV3p2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
0843デフォルトの名無しさん
2016/11/10(木) 22:44:35.78ID:y8lx0u6hD12~D16を結合、D17~D21を結合、D22~D26を結合・・という形で縦に規則的に
複数行のまとまりを作っていく作業を300回行いたいのですが、どのようにしたらよいでしょうか。
0844デフォルトの名無しさん
2016/11/10(木) 22:47:42.61ID:65UijVtD0845デフォルトの名無しさん
2016/11/10(木) 22:48:48.86ID:ERyYOelv相対アドレスでマクロの記録をして
forで繰り返す
0846デフォルトの名無しさん
2016/11/10(木) 22:51:30.51ID:C4thLsRU相対アドレスでマクロの記録をして
300回実行を押す
0847デフォルトの名無しさん
2016/11/10(木) 23:09:42.95ID:y8lx0u6hみなさんすごいっすね。。
いや自分が大したことないのはわかってますけども。
0848デフォルトの名無しさん
2016/11/10(木) 23:11:38.54ID:C6WoAcNNで、1500行ちょいまで、5行ずつ結合したセルをズラーっと並べるということ?
0849デフォルトの名無しさん
2016/11/10(木) 23:24:17.22ID:C6WoAcNN(1)D12から16を結合して、すべてを範囲選択(Ctrl+A)
(2)その結合したセルに数値の1を入力する。
(3)すべての行の高さを小さくする。まあ、4くらいかな。
(4)1で結合したセルの右下の小さな四角(フィルハンドル)を、したにずーとドラッグ。数値が300になるまで。
(2)は300個目がわかりやすくするため、(3)はドラッグしやすくするため。
数字が邪魔ならD列を選択してデリート。
行の高さは好きなように変更。
0850デフォルトの名無しさん
2016/11/10(木) 23:26:46.61ID:C6WoAcNN0851デフォルトの名無しさん
2016/11/11(金) 00:01:52.59ID:zMjrip9kdim i as integer
for i=1 to 300
でやってください。
0852デフォルトの名無しさん
2016/11/11(金) 00:03:08.39ID:GlnYZJcU0853デフォルトの名無しさん
2016/11/11(金) 23:20:47.66ID:8zpQ9HPA変数名がウンコとかゲロだったら、
私は、どんな気持ちになるでしょう。
0854デフォルトの名無しさん
2016/11/12(土) 00:09:36.73ID:nJWkDdF70855デフォルトの名無しさん
2016/11/12(土) 00:45:03.30ID:UW74nP38そう言えば昔、変数名がサザエさんに出てくる人物名で出来てたのを見たことがあるぞ。
海平やなぎえの名前が出てきたときはネタ切れ近いなと思ったもんだ。
0856デフォルトの名無しさん
2016/11/12(土) 01:17:42.88ID:cF4FMkKtシートが保護されているかどうかではなく、オブジェクトが保護されているか、列削除が許されているかなどの引数になる部分を判別したいです。
0857デフォルトの名無しさん
2016/11/12(土) 02:00:51.27ID:/qY7Fe9vこれじゃね?
Protection オブジェクト
https://msdn.microsoft.com/ja-jp/library/office/ff839872.aspx
0858デフォルトの名無しさん
2016/11/12(土) 07:09:25.09ID:gb02QdrdVisual Basic Advent Calendar 2016
「Visual Basic Advent CalendarはVisual Basic絡めば.NETでもVBでもOfficeでも発表できるAdvent Calendarです。」
ToolやライブラリのTipsから、書籍紹介、Visual Basicへの熱い思い吐露、何でも良いので是非ご参加ください!!
※毎年記事が少ないため、新規記事でなくても今年書いた記事であれば、リンクするといった方法でも構いません。
0859デフォルトの名無しさん
2016/11/12(土) 13:05:10.42ID:bdV5Mpg7↓こうやって書くぐらいなら
Dim Saidai As Long '最大値
↓最初からこうするか、
Dim 最大値 As Long
↓こんなんでも良いんじゃないかって。
Dim a As Long '最大値
0860デフォルトの名無しさん
2016/11/12(土) 14:24:02.76ID:bhw+jnlA3番目は絶対にない
保守性が落ちるから自分の首を絞めるだけ
使い捨ての小規模なコードならコメントなんて書かないし、型指定も省略するのが普通だから
0861デフォルトの名無しさん
2016/11/12(土) 15:03:04.04ID:11HP6hAMそうかな?
ローカル変数がひとつだけのプロシージャはかなりの割合を占めるし、だいたい a, b, x, tmp のたぐいで済ますよ。
0862デフォルトの名無しさん
2016/11/12(土) 15:17:25.70ID:Ayj+NND50863デフォルトの名無しさん
2016/11/12(土) 15:19:08.08ID:11HP6hAM変数名は考えたらむしろ損した気分
0864デフォルトの名無しさん
2016/11/12(土) 16:03:05.47ID:aSOc4HNcグループや会社でとかなら命名規則ってのを作ってそれに従えで済む。また作って無くてもそれなりに他者のこと考えて命名するだろ。
0865デフォルトの名無しさん
2016/11/12(土) 17:09:28.07ID:kLqJUNFvコメントがなくても分かりやすいな
さすがに最大値をaとするとある程度長いコードでは混乱しそうだ
0866デフォルトの名無しさん
2016/11/12(土) 17:44:53.99ID:gb02Qdrd0867デフォルトの名無しさん
2016/11/12(土) 17:45:13.81ID:0OeGt4X70868デフォルトの名無しさん
2016/11/12(土) 18:26:27.18ID:gRMP0FIA0869デフォルトの名無しさん
2016/11/12(土) 18:31:28.81ID:ZDhDT3ub名前で悩むってことはその変数の意味が不明瞭ってことだからね
綺麗なコードを書けば変数の意図が明確になり名前では悩まない
というか名前で悩むどころか変数そのものが不要だったと気が付くことも多い
0870デフォルトの名無しさん
2016/11/12(土) 20:31:49.31ID:Ayj+NND5まあ最終的には宗教論争になるのは間違いないけどw
0871デフォルトの名無しさん
2016/11/12(土) 23:08:09.58ID:l9OhshgV理想論で言えばそうだけどね
人間は不完全な生き物だから仕方がない
うまくやっている前提で名前に悩むより
名前に悩んでるってことはうまくできてないんだって考えたほうがいい
0872デフォルトの名無しさん
2016/11/12(土) 23:14:22.54ID:gAoMoCce関数をそのまま変数と同じ扱いに出来るから、本当に後から変数が不要である事に気がつくケースも結構ある。
0873デフォルトの名無しさん
2016/11/12(土) 23:22:30.47ID:jqiT4x9G0874デフォルトの名無しさん
2016/11/12(土) 23:51:13.13ID:Cma5TRha一時的な変数なら
tmp1とかで良いんじゃね
0875デフォルトの名無しさん
2016/11/12(土) 23:57:16.26ID:ZEtGmRlw【IT】エクセルをワープロのように使うとデータの再利用が困難、河野太郎議員が文科省へ全廃を指示★2 [無断転載禁止]©2ch.net
http://potato.2ch.net/test/read.cgi/bizplus/1478338699/
0876デフォルトの名無しさん
2016/11/13(日) 00:09:41.63ID:5nPhLLJA教育にも啓蒙にも金がかかるから絶対無理
0877デフォルトの名無しさん
2016/11/13(日) 01:30:53.78ID:kb3K5XaB0878デフォルトの名無しさん
2016/11/13(日) 04:17:38.04ID:UKerATrZ2番目に落ち着いてる
いかにもシロート臭いがそんなんで格好つけても仕方ねえ
一目瞭然なのが一番だ
0879デフォルトの名無しさん
2016/11/13(日) 16:37:49.03ID:mDEMZo5d@アクティブなexcelからi eのウインドウを起動する
(この時点でieのウインドウがアクティブになる)
A既存のexcelのウインドウをアクティブにする
@は簡単なのですがAがうまくいきません。
以下のものを使ってみたのですが、タスクバーのexcelが点滅するだけです。
appactivate
setforeground
何かいい方法はございますでしょうか。
0880デフォルトの名無しさん
2016/11/13(日) 17:35:33.42ID:C4V9mz3A=2・PI()は表示できるようになった(yoyakuにPIを追加した)
のですが
PI()・2はエラーになる。
どうしてだろう。
0881デフォルトの名無しさん
2016/11/13(日) 18:35:09.11ID:X+rsvORYieのobject.visible=false
じゃダメ?
0882デフォルトの名無しさん
2016/11/14(月) 03:28:25.66ID:qE38ruGrその右の列にデータを入力cからh列を入力
行は2行目から10行目
そのうえでb列のチェックボックスにチェックを入れてコマンドボタンを押すと
cからh列の値のみ削除されデータを繰り上げるということをしたいのですが
今のところできたのがチェックボックスとコマンドボタンで中の制御構文
をどうしたらいいのかわかりません。
どなたか作っていただけませんか?
データは入力規則で入力したいのであくまで行の削除ではなくて値のみの削除で
そのデータを削除したら下のデータが繰り上がるということをしたいです。
0883デフォルトの名無しさん
2016/11/14(月) 04:36:57.62ID:Gs7eAaE8よくわからない。特にB列
あとチェックボックスをワークシートに配置は面倒臭いしあんまりおすすめでないけど、チェックボックスじゃないといけないのかな。
0884デフォルトの名無しさん
2016/11/14(月) 05:24:55.36ID:vkotuMbCi1739584-1479068655.jpg
0885デフォルトの名無しさん
2016/11/14(月) 05:29:43.18ID:vkotuMbCむしろまだはじまってないくマクロでシクハクしている状態です。
やりたいのは削除を各行を選択後削除のコマンドボタンを押して
さらに開いた行にデータを以降させるということです。
いろいろ調べた結果一行チェックボックスにマクロを登録し一行ごとに削除
並べ替えのコマンドボタンにて行の並べ替えを実行でき一応やりたいことができました。
がこれを一つのコマンドボタンで行いたいです。
http://iup.2ch-library.com/i/i1739584-1479068655.jpg
0886895
2016/11/14(月) 05:33:25.88ID:vkotuMbCRange("C3:H3").Select
Selection.ClearContents
というコードをマクロの記録にて登録しました。
0887883
2016/11/14(月) 06:04:36.90ID:Gs7eAaE8'(1)まずチェックした行のデータ削除
For i = 2 To 10 'データ範囲の行数(ここでは2から10で固定)
For j = 3 To 8 'データ範囲の列数(ここではC-Hで固定)
If Cells(i, 2) = True Then
Cells(i, j) = ”” 'B列がTRUEの場合、C-H列の値をクリア
End If
Next j
Next i
'(2)C-Hが空白か調べて、空白なら上に詰める
For i = 2 To 10
For j = 3 To 8
If Cells(i, j) = ”” Then
Cells(i, j) = Cells(Cells(i, j).End(xlDown).Row, j)
Cells(Cells(i, j).End(xlDown).Row, j) = ””
End If
Next j
Next i
'チェックボックスのチェックを全て外す
Dim chkbox As Object
For Each chkbox In ActiveSheet.CheckBoxes
chkbox.Value = 0
Next
End Sub
0888883
2016/11/14(月) 06:08:32.00ID:Gs7eAaE8ダブルクォーテーション3か所、全角にしてるので半角に直してください。
(1)と(2)の処理は同時にできるかもしれないけど、分けてます。
あとチェックボックスのリンク先をB列にしてるので、ほかの列にするなら、
If Cells(i, 2) = Trueのところを変更。
0889デフォルトの名無しさん
2016/11/14(月) 06:22:41.23ID:vkotuMbCちなみに難易度はどれくらいですか?
0890デフォルトの名無しさん
2016/11/14(月) 06:31:19.90ID:Gs7eAaE810段階で1か1.5くらいでしょう。
基本を勉強すれば2週間くらいで書けると思います。最後のチェックを外すところはネットで調べましたが。
(2)のところはあとから思ったけど、空白かどうか判定するよりも1と同じようにtrueかどうかにした方が良かったかもしれません。
0891デフォルトの名無しさん
2016/11/14(月) 06:36:14.46ID:Gs7eAaE8k as integerのところは消しておいてください。
0892デフォルトの名無しさん
2016/11/14(月) 06:42:53.80ID:vkotuMbC自分でそれを一から考えても全く思い浮かびませんでした。
助かりました。
0893デフォルトの名無しさん
2016/11/14(月) 07:30:43.10ID:zK1b0bJzシクハク → 四苦八苦
0894デフォルトの名無しさん
2016/11/14(月) 08:16:07.77ID:9G/79pzu0895デフォルトの名無しさん
2016/11/14(月) 08:38:57.31ID:VJoz8++wおお!ありがとう
こういう検索しても出ないオブジェクトってどうやって探してるの?
0896デフォルトの名無しさん
2016/11/14(月) 09:42:06.08ID:XBbATuSOWindowsAPIのが確実な気がする
0897デフォルトの名無しさん
2016/11/14(月) 10:01:20.25ID:y/BxAY6M×WindowsAPIのが確実な気がする
◎WindowsAPIの方が確実な気がする
〇WindowsAPIが確実な気がする
正しい日本語をしゃべりなさい。
0898デフォルトの名無しさん
2016/11/14(月) 10:06:41.68ID:mMXXKTme一番簡単なのは
Sendkeys "%{TAB}"
ただしタイミングによっては失敗することがある
AppActivateで失敗するのは、これがウィンドウの切り替えだけでなくテキストボックスなどにフォーカスを移す命令だから
入力エリアなどが存在しない場合は失敗してタスクバーのアイコンが点滅して知らせてくれる
ほかにもAppActivateが失敗する条件は色々あるけど、詳しくはマニュアルを読んでくれ
0899デフォルトの名無しさん
2016/11/14(月) 10:09:58.91ID:y/BxAY6Mただしタイミングによっては失敗することがある
AppActivateで失敗するのは、これがウィンドウの切り替えだけでなくテキストボックスなどにフォーカスを移す命令だから
入力エリアなどが存在しない場合は失敗してタスクバーのアイコンが点滅して知らせてくれる
ほかにもAppActivateが失敗する条件は色々あるけど、詳しくはマニュアルを読んでくれ
×
ただしタイミングによっては失敗することのがある
AppActivateで失敗するのは、これのがウィンドウの切り替えだけでなくテキストボックスなどにフォーカスを移す命令だから
入力エリアなどのが存在しない場合は失敗してタスクバーのアイコンのが点滅して知らせてくれる
ほかにもAppActivateのが失敗する条件は色々あるけど、詳しくはマニュアルを読んでくれ
0900デフォルトの名無しさん
2016/11/14(月) 10:11:55.47ID:bYidlaNb0901デフォルトの名無しさん
2016/11/14(月) 10:20:11.44ID:3bgtRy5M今api解読してますありがとう。
declare以下の仕組みに四苦八苦。
>>898
ありがとうございます。
試してみます。
0902デフォルトの名無しさん
2016/11/14(月) 11:06:26.96ID:3bgtRy5Mありがとうございました。
0904デフォルトの名無しさん
2016/11/14(月) 21:12:12.23ID:YreTgBx8標準モジュールは
Sub a (ByVal control as IRibboncontrol)
msgbox "hoge"
End sub
Sub b()
Dim control as IRibboncontrol
Call a(control)
End sub
Sub auto_open()
Dim control as IRibboncontrol
With Application.CommandBars("Cell").Controls.Add()
.Caption = "hogeを表示"
.OnAction = "'a(control)'"
End With
End Sub
でbからは呼び出して手動でも実行でき、またcustomUI14.xmlで作ったリボンからも実行できましたが、追加した右クリックメニューからは実行出来ません。
引数の渡し方もしくは引数にしているcontrolの宣言が違うと思うのでググって色々書き方を変えてみましたが
追加したメニューから実行すると「オブジェクトがありません」か「引数を省略出来ません」になってしまいます。
bでcontrolが宣言だけで何もSETしてないのに動くのも謎です。
どこをどう直せば良いでしょうか
hoge
0905デフォルトの名無しさん
2016/11/14(月) 21:31:58.98ID:RYCjZu6fとりあえずdebug.printとかデバッガでどう呼び出されてるか確認したら?
0906デフォルトの名無しさん
2016/11/14(月) 21:32:22.95ID:E11ED6xYデータ http://iup.2ch-library.com/i/i1739863-1479124886.png
これを所定の様式に入力し、以下のような一覧表
様式 http://iup.2ch-library.com/i/i1739864-1479124886.png
を作成するためのマクロを作成していますが、管理番号・納入年月が
同じ場合、入力欄へデータを横並びに入力させ、異なる場合は
入力欄を移動させる方法がわかりません。
(条件)
・一つの管理番号には、一つの納入先(+納入場所)しか対応しない。
・管理番号と販売月度が同じなら、異なる製品分類でも横列でまとめる。
・管理番号、販売月度のいずれかが異なる場合、次の入力欄へ移動する。
当初、元データに対して、
1.管理番号、納入先名称。納入年月を変数で取得、様式へ転記
2.select case で分類毎の入力列を指定し、それをDo while 〜Loop で
で繰り返し処理(管理番号・納入年月が同じ間は繰り返し)
というやり方を考え、自分でコードを作ってみたのですが、どうしても
こちらが希望するような処理ができません。
0907デフォルトの名無しさん
2016/11/14(月) 21:35:18.69ID:E11ED6xY様式 http://iup.2ch-library.com/i/i1739864-1479124886.png
のようにデータ入力させることができるのか、どなたかお知恵を
お貸し頂けますよう、お願いいたします。
0908デフォルトの名無しさん
2016/11/14(月) 21:41:04.76ID:Gs7eAaE80909デフォルトの名無しさん
2016/11/14(月) 21:45:22.91ID:pylbFMMVどの方法が速いかで考えて、
ハマったでござる。
0910デフォルトの名無しさん
2016/11/14(月) 22:03:21.82ID:34lnUZ5uセルの連結しまくりとか自分が作らされるのでなければ考えたくないw
0911デフォルトの名無しさん
2016/11/14(月) 22:22:01.19ID:p26anzny最初のレコードへの行オフセットとレコードの行数とレコード内の各プロパティへの行列オフセットを定数で用意すればシンプルなループ処理だけでデータを読み込めるよ
0912デフォルトの名無しさん
2016/11/14(月) 22:25:51.06ID:/njF1aB/Vector 辺りにいろいろフリーソフト出してる作者に依頼して¥20,000 程度の案件
やたらと言葉遣いが丁寧だけれど、業務として請け負ってるものをここで聞くなら
それなりに偽装は必要 成果物があからさまなのでこれは発注側からクレーム来るケース
発注者は上司かも知らんが
0913デフォルトの名無しさん
2016/11/14(月) 22:37:50.59ID:tO38JPdIそういうフォーマットに印刷したいだけでしょ
ならばAccessでやるのがふつう
0914デフォルトの名無しさん
2016/11/14(月) 23:18:07.65ID:8ZP1uHGR横並びにするのが勿体無い
0915デフォルトの名無しさん
2016/11/14(月) 23:53:46.11ID:7yXlcOLW・管理番号、販売月度のいずれかが異なる場合、次の入力欄へ移動する。
そのまま書けばよいと思うのですけれど・・・。どこでひっかかってる?
セル結合とかの書式は別のマクロで整えれば後々の変更もやりやすいかな。
(条件の順序かえたけど)
(ソートが必要ならまずソート)1行づつ最後までなめる
管理番号、販売月と前行管理番号、前行販売月と比較
・管理番号、販売月度のいずれかが異なる場合、新レコード記入
・管理番号と販売月度が同じなら、製品分類を該当列に記入
記念日だったら、メッセージを出して終了
0916デフォルトの名無しさん
2016/11/15(火) 00:39:37.66ID:XpOheRi2OnActionの引数には変数の値は使えなかったと思う
(.OnAction = "'a ""引数""'" ←とかのように文字列の引数は出来るけど)
a()関数の引数をOptionalにしてメニューからの呼び出し時は引数無しにしたら?
-----------------
Sub a(Optional ByVal control As IRibbonControl)
If (control Is Nothing) Then
MsgBox "hoge->menu"
Else
MsgBox "hoge->Ribbon"
End If
End Sub
Sub auto_open()
With Application.CommandBars("Cell").Controls.Add()
.Caption = "hogeを表示"
.OnAction = "a"
End With
End Sub
0917デフォルトの名無しさん
2016/11/15(火) 01:07:54.55ID:B219Se7j0918デフォルトの名無しさん
2016/11/15(火) 04:40:03.19ID:v8aL5YBj基本は「適切に使い分ける」
どちらかと言えば、付けなくていいように考える
0919デフォルトの名無しさん
2016/11/15(火) 07:02:23.61ID:B219Se7jありがとうございます
やはり速くする為でしょうか?
変数の再利用に気を付けなければ
0920デフォルトの名無しさん
2016/11/15(火) 07:44:01.78ID:+FB/ARQGbyval と byref の違いは理解してますか?
byrefの必要がなければbyvalの方が安全だと思う
0921デフォルトの名無しさん
2016/11/15(火) 07:48:04.12ID:MOCCR4Fa速度に違いはないと思う
個人的にはどのように扱うかを見分けるために記載するイメージ
詳しくはココ
https://msdn.microsoft.com/ja-jp/library/cc436524(v=vs.71).aspx
0922デフォルトの名無しさん
2016/11/15(火) 08:08:55.68ID:wcWx6QZb・そういうフォーマットからデータを入力したい
・すでにあるデータをそのフォーマットで出力したい
どっち?
>>913
Access 廚は巣に帰れよ
0923デフォルトの名無しさん
2016/11/15(火) 08:14:24.73ID:I1rOpQ0I>管理番号、販売月と前行管理番号、前行販売月と比較
この部分で引っかかっています。
手元に残っている、Do Loop文を設定する前の式ですが、どこを修正するべきでしょうか?
Sub Main_Make()
Dim DataFileName, strFileName As String
'DataFileName = データファイル名、strFileName = 様式ファイル名
Dim Data_GYO As Integer
Dim KANRI,NONYU,BUNRUI,MONTH,BASYO,JURYO As String
Dim MaxRow_Data2 As Integer
Workbooks(DataFileName).Worksheets(1).Activate
Workbooks(DataFileName).Worksheets(1).Range(
0924923
2016/11/15(火) 08:17:50.12ID:I1rOpQ0ISub Main_Make()
Dim DataFileName, strFileName As String
'DataFileName = データファイル名、strFileName = 様式ファイル名
Dim Data_GYO As Integer
Dim KANRI,NONYU,BUNRUI,MONTH,BASYO,JURYO As String
Dim MaxRow_Data2 As Integer
Workbooks(DataFileName).Worksheets(1).Activate
Workbooks(DataFileName).Worksheets(1).Range("A1").Select
MaxRow_Data2 = Workbooks(DataFileName).Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
0925923
2016/11/15(火) 08:19:17.53ID:I1rOpQ0IWorkbooks(strFileName).Worksheets(1).Range("C10").Select
For Data_GYO = 1 To MaxRow_Data2
'//転記データを変数として取得
KANRI = Workbooks(DataFileName).Worksheets(1).Cells(Data_GYO, 1).Value
NONYU = Workbooks(DataFileName).Worksheets(1).Cells(Data_GYO, 4).Value
MONTH = Workbooks(DataFileName).Worksheets(1).Cells(Data_GYO, 6).Value
BASYO = Workbooks(DataFileName).Worksheets(1).Cells(Data_GYO, 8).Value
JURYO = Workbooks(DataFileName).Worksheets(1).Cells(Data_GYO, 9).Value
'//管理番号と納入先を入力する。
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 1) = KANRI
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 3) = NONYU
BUNRUI = Workbooks(DataFileName).Worksheets(1).Cells(Tmp_GYO2, 5).Value
0926923
2016/11/15(火) 08:20:19.39ID:I1rOpQ0ICase 1
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 3).Value = MONTH
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 3).Value = BASYO
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 3).Value = JURYO
Case 2
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 4).Value = MONTH
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 4).Value = BASYO
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 4).Value = JURYO
Case 3
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 5).Value = MONTH
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 5).Value = BASYO
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 5).Value = JURYO
Case Else
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 6).Value = MONTH
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 6).Value = BASYO
Workbooks(strFileName).Worksheets(1).Cells((4 * str_GYO -1), 6).Value = JURYO
End Select
Next Tmp_GYO2
End Sub
0927923
2016/11/15(火) 08:21:39.53ID:I1rOpQ0I0928デフォルトの名無しさん
2016/11/15(火) 08:51:10.12ID:B219Se7jperの参照渡し・Cのポインタ的なものと認識してます
呼び出し元のを変える必要がなければByValで良さそうですね
ありがとうございました
0929デフォルトの名無しさん
2016/11/15(火) 10:30:41.82ID:pbCCsymdシートに書き込みたいのですが良い方法はありませんか?
0930915
2016/11/15(火) 10:36:13.00ID:qrZELqcdやり方はいくらでもあるのだけれど「比較してから分岐」って書いたでしょ。
それを試みたのならともかく、
夏井いつき先生じゃないんだから、あなたの書いたものを全部読むのもうまく修正するのも面倒です。
「引っかかる」というのは「書いたけどうまく動作しない、なぜだ?」というときに
使ってください。まるっきり書けないなら「わかりません」です。
整理できてきましたか?cells(a,b)とcells(a-1,b)を比較すればいいんですよ。
あぁエクセルって便利。他言語だと配列とかコレクションとかしたり入れ替えたりしなきゃならない。
0932デフォルトの名無しさん
2016/11/15(火) 11:01:19.80ID:qrZELqcd>>929
マクロの記録、全選択、コピー、別シート、形式を選択して貼り付け--数式と数値の書式
マクロの記録終了 alt+F11 でらしいマクロを見る。
ということではなくて、PasteSpecialの定数を引っ張りだしたいということ?
0933デフォルトの名無しさん
2016/11/15(火) 11:49:08.54ID:3RGLlSyj条件付き書式を全取得って具体的にはどう言うこと?
0934デフォルトの名無しさん
2016/11/15(火) 11:53:38.10ID:pbCCsymd条件付き書式で色をつけてるんだが
その条件を取得したいんや
結合セルの取得方法がイマイチわからん
0935デフォルトの名無しさん
2016/11/15(火) 12:00:39.77ID:C8x5T/URrange.formatconditionsコレクションで取得できるみたいだが
0936デフォルトの名無しさん
2016/11/15(火) 12:04:32.51ID:MOCCR4Fa夏井いつきって何?
実際コードが出てくるのだから「書いたけどうまく動作しない、なぜだ?」に当てはまる
お前が書いたことと特定の相手に伝わったかどうかは別問題
0937デフォルトの名無しさん
2016/11/15(火) 12:21:13.41ID:mEh6VPdi速度に関して、配列は違いが出るからそこだけ注意すればおk
0938デフォルトの名無しさん
2016/11/15(火) 12:26:01.35ID:xzLWMGHaそのコードの
>管理番号、販売月と前行管理番号、前行販売月と比較
しているつもりのところはどこですか
0939デフォルトの名無しさん
2016/11/15(火) 12:39:15.10ID:b39+S9Edこの手のBBAはまるで利用価値がない
0940923
2016/11/15(火) 13:00:16.35ID:I1rOpQ0I>cells(a,b)とcells(a-1,b)を比較すればいいんですよ。
こんな単純な事に気が付いていませんでした。。。
ご指摘ありがとうございます。
残る原因は、ループ処理させるポイントが間違っている事ですが、
こちらについては自分で虱潰しに調べて直してみます。
本当にありがとうございました!
0941デフォルトの名無しさん
2016/11/15(火) 13:17:06.92ID:pbCCsymd適用先はどうしる?
0942932
2016/11/15(火) 13:49:04.47ID:qrZELqcdfcds = cells(a,b).FormatConditions
value = fcds(i).propaty
って感じ?未だに2002だからあてずっぽ。
結合はMergeCellsとMergeAreaあたりを検索してみてはいかがでしょうか。
この辺ってマクロの記録じゃでてこんなのかな。
>>938
フォローありがとう。
>>939
きっと、その人とは違うと思います。
>>940
上から言うようで気がひけるけれど、マクロは自分がやっていること
(操作の手順、目で見てこれとこれを比べるとか手の動き以外も含む)
をその順番に書く、繰り返してるならループするし、分岐するならifする。
そんだけのことです。お礼はあるがお詫びはないのね。がんばってね。
0943932
2016/11/15(火) 13:55:09.54ID:qrZELqcdCountプロパティ
・・・なんか最初っから俺のこと無視てるよなー。まぁいいけど。以降、黙りますです。
0944デフォルトの名無しさん
2016/11/15(火) 18:52:44.86ID:mEh6VPdi0945デフォルトの名無しさん
2016/11/15(火) 19:19:23.49ID:C8x5T/URapplication.nameでなんか取れそう
0946デフォルトの名無しさん
2016/11/15(火) 20:28:16.40ID:mEh6VPdiそれはダメだったんですよ
#If Right(Application.Name, 5) = "Excel" Then
とか
0947デフォルトの名無しさん
2016/11/15(火) 20:37:21.04ID:+FB/ARQGなんで#付けないといけない?
プリプロセッサじゃなくて普通のifでよく無い?
0948デフォルトの名無しさん
2016/11/15(火) 20:45:18.05ID:DZRsu6fB条件付きコンパイラ定数を宣言すればいいんじゃ
0949デフォルトの名無しさん
2016/11/15(火) 21:51:06.87ID:mEh6VPdiRange オブジェクトを持つ関数がある(エクセルのときだけの関数)。
できればこれを #If で選択コンパイルしたい。
関数ひとつだけで .bas ファイルを作るのもなんか悔しいし。
0950デフォルトの名無しさん
2016/11/15(火) 22:33:36.55ID:vvWxU9vKどうしてもセル使わないと出来ない事ならbasを分離するか、
必ずExcel.Applicationを生成して使うようにするかのどっちかしかないと思うんだが。
0951デフォルトの名無しさん
2016/11/15(火) 22:47:46.37ID:M+oXlzF6As Objectでレイトバインディングでいけないかね?
0952デフォルトの名無しさん
2016/11/15(火) 23:29:01.88ID:mEh6VPdiまあそうなりますかね。。。
As Object で TypeName をチェックしてやってみます。
0953デフォルトの名無しさん
2016/11/16(水) 12:28:26.30ID:rMPmma8iいや合ってるわwそれともお前ブスBBA専か?w
0954デフォルトの名無しさん
2016/11/16(水) 13:00:12.92ID:Df5TP3Hlそれはどうかな
0955942
2016/11/16(水) 13:29:13.73ID:X37uQtHl人の価値は性的なもの以外もたくさんあるのですよ。
ヤれない方のBBAということはヤれる方のBBA(とは限らんか)が存在するわけで
その人がわからないのでそんなVBAだったらエラーがでる。とスレにあわす。
>>954
操作をそのまま書く旨のことを指して言っているのであれば、
操作をそのまま書くもの以外なら他の言語を使って必要ならところでExcelを
他言語から操作するほうが楽な例しか思いつかんのだが間違っているかもしれんね。
0956デフォルトの名無しさん
2016/11/16(水) 20:54:02.15ID:ZWRfUawlウヒューーー!
そんな手があったのか、出来ました!
サンキューーーーーう!うひゅー!!
0957デフォルトの名無しさん
2016/11/16(水) 22:39:50.85ID:3axx9vSGSub b()とはいったい何だったのか
0958デフォルトの名無しさん
2016/11/17(木) 02:46:59.40ID:hgkL7lQNSub a単体でひとつの目的を叶えるもので利便性のためリボンとコンテキスト両方から実行可能にしたいけど、
もっと大きい目的を叶えるsub bの中の1ステップとしてもsub aを流用しています
0959デフォルトの名無しさん
2016/11/17(木) 02:52:59.36ID:hWgAVNcQ0960デフォルトの名無しさん
2016/11/17(木) 06:31:14.61ID:NGDL6wiI0961デフォルトの名無しさん
2016/11/17(木) 08:48:55.51ID:p1ecJ/vxうんこれこれ
0962デフォルトの名無しさん
2016/11/17(木) 12:29:40.77ID:ir/fHuQ7もはや支離滅裂だなw
知らんくせに分かったふりしたかるからそうなる
たかがブスBBAの話題なのにw
0963デフォルトの名無しさん
2016/11/17(木) 13:35:40.91ID:cCW+kjNAそれぞれ、1〜253行目までデータが存在しています。
新たなブックBまたはブックAの101枚目でも構わないのですが、
その1枚のシートに、上から
「店舗1の253行のデータ」→「店舗2の253行のデータ」→・・・
と、縦に並べたデータベースを作りたいのですが、
どのようなマクロを記述したらいいでしょう?
0964デフォルトの名無しさん
2016/11/17(木) 13:46:54.01ID:SIbcJcrOSub CollectData()
Dim w As Worksheet
Dim dst As Worksheet
Dim rowNum As Long
Set dst = Worksheets("Summary")
rowNum = 1
For Each w In Worksheets
If w.Name <> "Summary" Then
dst.Rows(rowNum) = w.Rows(253).Value
rowNum = rowNum + 1
End If
Next
End Sub
0965デフォルトの名無しさん
2016/11/17(木) 14:13:15.10ID:cCW+kjNA早速ありがとうございます!
末尾の空のシート名を「Summary」にすればいいのですね?
動作確認できました!が・・・説明が下手ですみません。
「253行目のデータ」ではなく「全253行のデータ(1〜253行)」をコピーしたかったのです><
0966デフォルトの名無しさん
2016/11/17(木) 14:31:59.15ID:SIbcJcrOIf w.Name <> "Summary" Then
dst.Range(rowNum & ":" & rowNum + 252) = w.Range("1:253").Value
rowNum = rowNum + 252
End If
Next
0967デフォルトの名無しさん
2016/11/17(木) 14:33:57.96ID:SIbcJcrOrowNum = rowNum + 252
↓
rowNum = rowNum + 253
0968デフォルトの名無しさん
2016/11/17(木) 14:35:39.10ID:/vRe99Sl↓
rowNum = rowNum + 253
0969デフォルトの名無しさん
2016/11/17(木) 15:33:17.59ID:cCW+kjNAありがとうございます!神です!
0970デフォルトの名無しさん
2016/11/17(木) 16:14:03.10ID:UCWuOxD40971デフォルトの名無しさん
2016/11/17(木) 17:36:30.49ID:cCW+kjNAVBAのレベルはまだまだペーペーなので(ペーパーではないです!)
これから精進します!
0972デフォルトの名無しさん
2016/11/17(木) 20:01:47.45ID:ymY9UHmKを記述しないと
Dim i, m, k As Integer
Dim Re, Im As Single
のように型宣言してもすべてVariant型として扱われてしまうのでしょうか?
0973デフォルトの名無しさん
2016/11/17(木) 20:12:15.62ID:2uEvXvbESheet1.Range("hoge")
Sheet2.Range("piyo")
2つは、同じ構造で値だけが違う表の範囲です。
hoge の各セルには、piyo と値が異なっていれば
フォントを太字にする条件付き書式が設定されています。
hoge から、条件付き書式で太字になっているセルを
抽出しようと思い、試しに各セルの
.FormatConditions(i).Font.Bold の値を調べてみました。
しかし、実際は hoge と piyo の値は同じで、
太字になっていないにもかかわらず、すべてのセルで
.Font.Bold = True が返ってきます(Italic などは False です)。
また、各セルの条件付き書式は、表の先頭(左肩)のセルの
ものがすべてのセルに設定されているように見えます。
しかし、条件付き書式自体は正しく動作しています。
これはなぜでしょうか?
また、この方法で条件付き書式で太字になっているセルを
取り出すことはできないのでしょうか?
0974デフォルトの名無しさん
2016/11/17(木) 20:12:24.96ID:+ZjZtLcR0975デフォルトの名無しさん
2016/11/17(木) 20:26:41.30ID:tywuRODYoption explicit
は変数宣言を省略できなくなるだけ
宣言したらその型になる
0976デフォルトの名無しさん
2016/11/17(木) 20:29:15.27ID:tywuRODYなんでformatconsitionsの値を見るの?
fontとかの値を見るんじゃね?
0977デフォルトの名無しさん
2016/11/17(木) 20:42:12.97ID:/vRe99SlFormatConditionsから見たら条件付き書式のtrue時にどう設定するかを見てる
0978デフォルトの名無しさん
2016/11/17(木) 20:45:05.64ID:bN2Unndlエクセルに限った話ではないけど
GUIって全部アプリの内部状態を評価して描画してるだけだよ
シートや行や列やセルのスタイルや条件付き書式などを全部評価した結果が画面に表示される
逆方向はなにも保障されていない
0979972
2016/11/17(木) 20:50:57.77ID:ymY9UHmKPublic Sub BitRev()
Dim i, m, k, N, tmp As Integer
Dim X(8) As Integer
N = 8
For i = 0 To N - 1
X(i) = Cells(i + 5, 3)
Next i
m = N / 2 'ビットリバース
For i = 1 To N - 1
If m < i Then
tmp = X(i): X(i) = X(m): X(m) = tmp
End If
k = N / 2
Do While m >= k
m = m - k
k = k / 2
Loop
m = m + k
Next i
For i = 0 To N - 1
Cells(i + 5, 4) = X(i)
Next i
End Sub
0980972 続き
2016/11/17(木) 20:51:38.46ID:ymY9UHmKN = 8 でコードを追っていてわからないところがあります。i ループの一番最後です。
i = 7: m = 7
tmp = X(7): X(7) = X(7): X(7) = tmp → X(7) = X7 つまり変化なし
m = 7,k = 4 なので Do Loop 実行
m = m - k = 3: k = k/2 = 2
m = 3,k = 2 なので Do Loop 実行
m = m - k = 1: k = k/2 = 1
m = 1,k = 1 なので Do Loop 実行
m = m - k = 0: k = k/2 = 0
m = 0,k = 0 なので Do Loop 実行 ----> 無限ループになるのではないか?
k はIntger で宣言されているので k=1 のとき k = k/2 = 0 になりそうな気がしますが、ウォッチ式
で確認すると k や m はVarian 型になるため無限ループに陥ることなく無事に終了します(笑)。
このへんがよくわからないのです。
0981デフォルトの名無しさん
2016/11/17(木) 21:09:22.18ID:BkewidrXDim i, m, k As Integer
は
Dim i As Variant, m As Variant, k As Integer
と同じ。
カンマ(,)で区切られた宣言は別々のもの。kだけがInteger
そしてお前は
「な、何だってーーーーーーーーーーーーーーーー!!!」
と叫ぶ。
0982デフォルトの名無しさん
2016/11/17(木) 21:22:15.07ID:tywuRODYk as integer, N as integer...て書かないとダメ
0983979
2016/11/17(木) 21:25:28.05ID:ymY9UHmK「な、何だってーーーーーーーーーーーーーーーー!!!」(wwwwwwww
しかし、変な仕様だね。オリジナルのVBもそうなの?
0984デフォルトの名無しさん
2016/11/17(木) 21:58:42.86ID:Ys/NYtTFあまりにも勘違いしてるやつが多いから.NETでは変更された
0985デフォルトの名無しさん
2016/11/17(木) 23:13:33.57ID:bKtKjNO60986デフォルトの名無しさん
2016/11/18(金) 00:45:04.30ID:U1YQXM59Dim i%, m%, k%
と書くといいよ
%記号がIntegerの意味になってる
0987デフォルトの名無しさん
2016/11/18(金) 00:51:57.72ID:vUpgzFVU1!で1.0とか。
何でそんな無茶な省略(?)するのか分からんが。
0988デフォルトの名無しさん
2016/11/18(金) 00:57:03.99ID:tuDs4bs9% ←1byte
0989デフォルトの名無しさん
2016/11/18(金) 01:55:24.71ID:2VD0UvCt処理速度も上限もlongのほうが優れてるのに
0990デフォルトの名無しさん
2016/11/18(金) 02:06:53.26ID:AbvFQZDc変数名とAsをスペースで区切るから10バイト必要
0991デフォルトの名無しさん
2016/11/18(金) 03:50:41.11ID:Wcv7uPyj0992デフォルトの名無しさん
2016/11/18(金) 07:25:21.94ID:rPv8IQdAExcel VBA 質問スレ Part44 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1479421482/
0993デフォルトの名無しさん
2016/11/18(金) 08:56:22.56ID:UEe/F1lM省略じゃなくて計算結果の型を指定するため
整数/整数の答えの型が整数となるため小数部分がなくなる
なので1!で小数のある型を混ぜる
0994デフォルトの名無しさん
2016/11/18(金) 10:23:41.19ID:Be0cF+Zw中級者以上なら、longでいいかもしれないが。
0995デフォルトの名無しさん
2016/11/18(金) 12:30:47.79ID:2VD0UvCtなぜ発見しやすいの?
0996デフォルトの名無しさん
2016/11/18(金) 12:32:42.63ID:2VD0UvCt0997デフォルトの名無しさん
2016/11/18(金) 16:14:17.83ID:EHaPpLVd0998デフォルトの名無しさん
2016/11/18(金) 16:25:13.14ID:QgeexoD70999デフォルトの名無しさん
2016/11/18(金) 22:17:33.62ID:juYsShrJIntegerでもLongでもいいときは
俺はLongを使ってるな
1000デフォルトの名無しさん
2016/11/18(金) 22:28:38.19ID:0glHI/U7・・・
そんなことってある?
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 62日 3時間 48分 27秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。