トップページtech
1001コメント341KB

Excel VBA 質問スレ Part37 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/01/10(土) 07:06:30.56ID:2VZ4g5kC
ExcelのVBAに関する質問スレです

                   ___
       ___      /____ヽ      ____
      /____\    | |´・ω・`| |    /___ヽ
      .l |´・ω・`|  ニX二 . ̄ ̄ ̄  二X二  |´・ω・`| l 俺たちに任せろ
      !、 ̄ ̄ ̄  ヽ   |       |    /    ̄ ̄ ̄/
       ヽ_/ヽ、  ヽ__)  \__/\_/.   /_/  ノヽ_/
             ̄                ̄ ̄

このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。

コードが嫌な人は別スレ建ててください。

※前スレ
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net・
http://peace.2ch.net/test/read.cgi/tech/1419718732/

※頭のレスの方でキチガイが束縛テンプレを貼る詐欺行為が前スレまで散見されましたので、十分にご注意ください。
0002デフォルトの名無しさん2015/01/13(火) 14:17:34.52ID:l9CvqMDc
四十年勤め上げた會社を退職し早二十年、何やら張り合いの無い日々を送る内、大學生の孫に「退屈しのぎに遣って見たまへ」と勸められた弐チヤンネル。
當初は「こんな電腦掲示板、何たる幼稚加減」と莫迦にしてゐたものの、遣つて見ると存外に面白ひ。
華やかな色彩の髪と目を持つうら若き乙女に「ゆとり乙」と何度と無く罵られるにつけ、食ふや食はずやで慌しく過ぎ去つた學生時代が自ずと思ひ返され、「戰爭さえ無ければ、小生もこのやうな青春が送れたやも知れぬ」と獨りごちることも屡々。
すつかり虜となつた今では、孫の部屋から白銀色の電腦計算機をせしめては書齋に篭もり存分に「祭り」を堪能する毎日を送つている。
「小四女兒遺棄事件」なるスレツドを拜讀した際には、その餘りに不憫な境遇と過酷な運命に落涙し、臺所で葱を刻む家内に「かような理不盡が許されていいものか!」と熱辯を振るって呆れられる始末。年甲斐もない、とはこのことと後で赤面することしきり。
下手の横好きとはいえ「繼續は力なり」の言葉通り、最近ではブラクラの回避やコピペの管理にも慣れ、「好きこそものの上手なれ」を座右の銘として弐ゲツトに勵んでいる。
同年代の友人達が癡呆や重い病に惱まされるなか、老いて尚矍鑠としてオフ會に向かえるのも、ひとえに弐チヤンネルのおかげかと思えば、再三に渡る「半年ROMつてろ」の罵り文句も、何やら「まだまだ死ぬには早いよ」と言われているようで愉快極まりない。
ひとつ間違えれば自らが乗り込んでいた機體と同じ名前を持つコテハンに出會える日を樂しみにしつつ、今日もデスプレヱに向かう。
それでは、弐ゲツト。
0003デフォルトの名無しさん2015/01/13(火) 20:21:25.89ID:GlIqiIHJ
しかしこいつが荒らしでなかったとしたらずっと教えて君でへばりついてることになるが
どんだけ頭悪いんだよ
0004デフォルトの名無しさん2015/01/24(土) 16:23:21.17ID:xRwObAQk
はいざんねーん

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1420790342/l50
0005デフォルトの名無しさん2015/04/01(水) 20:00:11.48ID:/egDYYol
ここプログラマ:非プログラマは1:2位かな?
0006デフォルトの名無しさん2015/04/01(水) 21:50:18.58ID:by1Nk6ea
>>5
前スレで、ここ使っておけばいいんじゃない?とか言っといて何なんだけど、まだ未消化のスレがあったわ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net・
http://peace.2ch.net/test/read.cgi/tech/1419718732/

こっちが先だな
0007デフォルトの名無しさん2015/04/06(月) 16:22:48.77ID:R0FU2E8+
Sub Test1()から呼び出したいSub Test2()があるんだけど
このTest2というのは必ずTest1の中からしか呼び出されないから
Test1とTest2を並列に並べる感じじゃなくて
Test1の内部にTest2に位置させる構造みたいにすることはできないですか?
0008デフォルトの名無しさん2015/04/06(月) 16:23:35.95ID:R0FU2E8+
× Test1の内部にTest2に位置させる構造
○ Test1の内部にTest2を位置させる構造
0009デフォルトの名無しさん2015/04/06(月) 16:52:48.52ID:PufGX+Fr
>>7
意味不明
0010デフォルトの名無しさん2015/04/06(月) 17:03:46.81ID:R0FU2E8+
>>9
意味がわからないのはプログラミング経験が少ないからだよ
0011デフォルトの名無しさん2015/04/06(月) 17:04:40.63ID:R0FU2E8+
JavaでいうインナーClassみたいな感じだ。
0012デフォルトの名無しさん2015/04/06(月) 17:50:46.40ID:iaxKA84j
予想屋かよ
0013デフォルトの名無しさん2015/04/06(月) 18:14:20.93ID:9rihMm0H
>>7
内部に配置は無理だから
Test1とTest2を同じ標準モジュールに定義して
Test2をPrivateにしとけばいいんじゃね
0014デフォルトの名無しさん2015/04/06(月) 18:22:01.26ID:F3YvzXsi
>>13
多分、それは分かってて、わざわざ>>7みたいな事をしたいって事なんだろう
それに何の意味があるのかは知らんが
0015デフォルトの名無しさん2015/04/06(月) 18:41:30.28ID:V7u5im+A
>>7
推奨されない方法だけど こゆこと?
http://officetanaka.net/excel/vba/statement/GoSubReturn.htm
0016デフォルトの名無しさん2015/04/06(月) 21:17:56.24ID:6qozZbmR
Object指向言語なら
0017デフォルトの名無しさん2015/04/06(月) 21:21:39.89ID:6qozZbmR
Object指向言語ならInnerClassやDelegateを使えばまぁ、それっぽい小洒落たものを作ることは出来るけど、
VBAではそう言うのないし、GOSUBは余りお勧め出来ない。
Test1以外から呼ばなきゃいいじゃんと言うのが結論。
0018デフォルトの名無しさん2015/04/06(月) 23:58:22.10ID:PqbjMR/u
>>11
ここはVBAのスレだからVBAで説明してくれ
0019デフォルトの名無しさん2015/04/07(火) 05:37:09.40ID:T6jm7qcv
だから先にこっち使ってくれ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net・
http://peace.2ch.net/test/read.cgi/tech/1419718732/
0020デフォルトの名無しさん2015/04/10(金) 13:14:42.52ID:Ayhlqbgx
プロシージャ間で値をやり取りすることが多いんですが、
モジュールレベル変数で宣言するのとcall byvalで参照渡しするのと
処理速度的にはどっちが速いですか?

プロシージャ間の行き来は数十万回レベルです。
同一プロシージャに書けばいいんでしょうけど…
0021デフォルトの名無しさん2015/04/10(金) 13:56:56.78ID:qqTdbdnb
>>20
実測すれば解決するよ
0022デフォルトの名無しさん2015/04/10(金) 16:22:02.68ID:Ayhlqbgx
>>21
適当に作ったマクロで実測してみた。

Call Byvalのほうが1.5倍近く遅いようだ。
0023デフォルトの名無しさん2015/04/10(金) 18:49:19.21ID:qqTdbdnb
>>22
宗教上の理由でByValをデフォルトとしたくて、その実行時間の差が許容できる範囲なら
そうすればいいし、特にこだわりがなければByRefをデフォルトとすればいいってことだね。
0024デフォルトの名無しさん2015/04/11(土) 15:57:52.11ID:Di7hwpD1
ByValで参照渡しってどういう意味?
参照渡しならByRefだよね?
0025デフォルトの名無しさん2015/04/11(土) 18:00:30.31ID:j7Y/pu4p
さすがにそこは流してはいけないところw
0026デフォルトの名無しさん2015/04/11(土) 18:39:12.87ID:QOc8rwlG
参照渡しの値渡しのことじゃないの?
0027デフォルトの名無しさん2015/04/11(土) 18:56:22.02ID:tS4MnGx5
ここは矢切の渡しとボケないといけないとこだろ
0028デフォルトの名無しさん2015/04/12(日) 23:06:14.03ID:PTItGJj5
渡しバカよね〜 おバカさんよね〜
0029デフォルトの名無しさん2015/04/15(水) 12:45:03.10ID:s88AraXc
12桁の数字で1の位がモジュラス11ウエイト2〜7のチェックデジットに
なっていて、そのデータが正しいかどうか調べるコードを書きましたが、
@の照合が機能しません。ご指導よろしくお願いします。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Variant, s As Variant, checkdigit_m11 As Variant

For i = 0 To Len(Cells(1, 1)) - 2

s = s + Mid(Cells(1, 1), Len(Cells(1, 1)) - 1 - i, 1) * (i Mod 6 + 2)

Next

If s Mod 11 <= 1 Then
checkdigit_m11 = 0
Else
checkdigit_m11 = 11 - s Mod 11
End If

Cells(2, 1) = checkdigit_m11

'@チェックデジットの照合

If Right(Cells(1, 1), 1) = checkdigit_m11 Then
MsgBox ("OK!")
End If


End Sub
0030デフォルトの名無しさん2015/04/15(水) 16:11:34.91ID:VbMyd246
だから先にこっち使ってくれ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/
0031デフォルトの名無しさん2015/04/15(水) 16:27:49.21ID:32OEEOG2
>>30
そちらのスレは荒らしが立て逃げした糞なスレだよ。
本来落として置かなければいけなかったものだ。
0032デフォルトの名無しさん2015/04/15(水) 17:38:42.58ID:VbMyd246
>>31
どうでもいいってか、どっちかと言うと荒らしが立てたのは
http://peace.2ch.net/test/read.cgi/tech/1420790342/l50
のほう
(実質的にこのスレの前々スレとして機能したけど、
本来は>>30で書いたスレのほうが先にたってた)
0033デフォルトの名無しさん2015/04/15(水) 21:40:21.80ID:uwjeRs/E
一時期酷かったもんな。やれコードは書くなとかヒントにとどめておけとか

結局テンプレを盾にとって1人が暴れていただけだったんだよな

今考えてみると「こうあるべき」と押し付ける荒らしの走りだったのかもな
0034デフォルトの名無しさん2015/04/18(土) 15:22:06.34ID:G8uXmJk6
vbaの変数名の合理的命名ルール教えてくれるところ無い?
本でも可。
カビの生えたおじいちゃんの価値観で染まったのはNG。
0035デフォルトの名無しさん2015/04/18(土) 15:39:26.25ID:mSwoExrO
>>34
そんなものはないし、お前のような馬鹿じゃ何やっても無駄
0036デフォルトの名無しさん2015/04/18(土) 17:16:49.33ID:vWBjvHtT
ロートルがファビョっとるw
0037デフォルトの名無しさん2015/04/26(日) 16:04:49.69ID:IDXPl2M+
最近VBAを勉強し始めたんですけど
=
:=
の違いは何ですか?
上は右辺を左辺に代入
下は何ですか?
0038デフォルトの名無しさん2015/04/26(日) 16:17:52.04ID:P1ipXLUA
http://www.relief.jp/itnote/archives/001014.php
「:=」(コロン・イコール)ってどういう意味?−名前付き引数

ぐぐれば判ることを聞こうとする辺り勉強する気ナッシングですね
0039デフォルトの名無しさん2015/04/26(日) 16:41:14.62ID:PlxCC65O
そう言いながら教えてやるおまいも屑
0040デフォルトの名無しさん2015/04/26(日) 18:22:52.99ID:se3i9COa
この程度の質問は田中さんに聞けよ



カルチャーブレーンの
0041デフォルトの名無しさん2015/05/03(日) 20:22:20.22ID:OEqGa4+Y
教えてください。
Excelで事務系のフリーウェアを公開してるのですが、全国でどのくらいの本数が動いているのか分かりません。
また、どの機能をどのくらい使われてるのかも分かりません。
起動させた時にこれらの情報を載せたメールを送信させようかとも思ったのですが、一筋縄では行かなそうでした。
利用者の名前や住所を載せるつもりはありませんが、そもそもそんなメールを出させて良いのかどうかも分かりません。
これらの情報を知りたい場合、一般的にどのような方法が取られているのでしょうか?
どうかご教示ください。
0042デフォルトの名無しさん2015/05/03(日) 21:36:32.07ID:7AJkLeM5
>>41
自分がほしい情報をボタン一つでファイルに吐き出せるようにして、メールで送ってもらうとか Web にアップロードできるようにするとか
ただし、俺なら送らないけどな
0043デフォルトの名無しさん2015/05/04(月) 04:00:08.42ID:O720nFZx
>>41
たとえばエクセルには、カスタマ エクスペリエンス向上プログラムと言う機能が組み込まれている
利用者の同意を得てデータを送信させれば良いんじゃね

自作のフリーウェアなら、情報の収集を利用条件にしてもいいんじゃn
俺ならそんなソフト使わんが
0044デフォルトの名無しさん2015/05/04(月) 08:03:17.60ID:MlDjNp+9
>>41
誰一人使って無くても良いじゃん別に
オレ様が素晴らしいソフトをオマエラに提供してやったんだから有り難く使いヤガレ!
って勢いで公開するべきだと思うよ
まれに自発的にお礼や感想要望のメールも来ると思うけど期待はするな
0045デフォルトの名無しさん2015/05/04(月) 08:39:58.31ID:nWEzAIy6
>>41
そういうの

企業のソフトウェアがやるならともかく、フリーウェアで手を出すと確実に
スパイウェア扱いされるでしょうね。下手なことにクビ突っ込まないほうが
身のためですよ。
0046デフォルトの名無しさん2015/05/04(月) 12:49:44.89ID:i+1DbMms
>>41です。

> 俺なら送らないけどな
> 俺ならそんなソフト使わんが
 ですよねー、私もそんなソフト嫌やわ。

> まれに自発的にお礼や感想要望のメールも来ると思うけど期待はするな
 新年版への切り替えの頃になると、丁重なお礼と「はよ新年版出せや(意訳)」メールは度々いただいてます。
 だからこそ、より使いやすいソフトのために…って思いからなんですけどね。

> スパイウェア扱いされるでしょうね。
 いっその事FTP鯖立てて、そこへ密かに情報転送したろかなとかまで思いました。
 けどバレたら確実にスパイウェアですからね。

 変なツール実装するのは止めときます。
 皆さんすいません、ありがとうございました。
0047デフォルトの名無しさん2015/05/11(月) 08:48:57.43ID:AU+j6osa
いまのプログラミング業界(オレの造語)って
配列はほとんど使ってないの?
例えばJavaとかだとコレクションを使う方がはるかに便利だとか。

ExcelのVBAでも配列をやめてコレクションを使ったほうが便利で可読性もよいコードになるのかな?
0048デフォルトの名無しさん2015/05/11(月) 09:17:16.73ID:jciykodT
特にパフォーマンスが要求されないドンガメアプリは好きな方式でいいんじゃないかな?(´・ω・`)
0049デフォルトの名無しさん2015/05/11(月) 09:17:50.67ID:AVa5yrsT
>>47
普通に配列つかったほうがいいよ。
0050デフォルトの名無しさん2015/05/11(月) 11:45:07.74ID:6rZgRYO9
最近の言語は配列じゃないコレクションが充実してるから
それらの言語では配列以外を使う事の方が多くなってる

VBAでは、コレクションが配列より良い場合もないではないけど
ほとんどの場合は配列の方がすっきりすると思うぞ
0051デフォルトの名無しさん2015/05/14(木) 22:31:05.69ID:F7V5bQJf
MsgBoxってあるけど
そうじゃなくて
メッセージをメモ帳を開いてそこに記述するにはどうすればいいのでしょうか?

こうすることでコピペができるなどいろいろ便利と思うので。
0052デフォルトの名無しさん2015/05/14(木) 23:41:41.84ID:dWCGk0JA
ファイルに吐いて>notepad ファイル名
で起動すればいいんちゃうの?

ちなみにMsgBoxはCtrl+Cでクリップボードに入る
0053デフォルトの名無しさん2015/05/15(金) 00:05:07.14ID:F85nAjYz
>>52
そうするとHDDのどこかにファイルを保存せねばならないでしょう。
そうしたくないんだ。
0054デフォルトの名無しさん2015/05/15(金) 05:28:12.57ID:X5a4op11
安定しないけど、Shellで起動してSendKeysとか

まあ俺ならコピペ前提ならそのままクリップボードにデータ入れるが
0055デフォルトの名無しさん2015/05/15(金) 08:29:51.60ID:OMVhwfYU
ちょっと編集してコピーするとかもできるからメモ帳に吐くのはありだと思う
SendKey はいい思い出がないから >>52 に一票
0056デフォルトの名無しさん2015/05/15(金) 17:08:00.10ID:SCDI1Wkq
>>53
log用シート追加して、そこに吐くんじゃダメなの?
そのシート残したくなければクローズ時に削除すればいいかと。
そんな単純じゃない話?
0057デフォルトの名無しさん2015/05/15(金) 17:16:38.65ID:VZDZSKvz
ユーザーフォームのテキストボックスに表示するとか?
0058デフォルトの名無しさん2015/05/16(土) 21:51:20.67ID:jUu32I5W
vbaにパスワード掛けても簡単に破られるじゃあないですか?
vbaで開発したものを有料の製品として販売している人や会社は、パスワードを破られてしまうとノウハウを簡単に盗まれてしまうという事ですよね。
それって、何か対策は有るんですか?
0059デフォルトの名無しさん2015/05/16(土) 22:15:03.75ID:Yi4ECWX2
どうやってパスワードを見破るんですか?
0060デフォルトの名無しさん2015/05/16(土) 23:23:55.08ID:HH6fpt1X
同じVBAを使う者としてとても心が痛むが、
できてしまう以上はその誘惑に勝てない。
0061デフォルトの名無しさん2015/05/16(土) 23:40:40.79ID:Yi4ECWX2
そのやりかたを聞いておるのだ
0062デフォルトの名無しさん2015/05/17(日) 00:29:03.42ID:TXM5pNIr
>>53
Linuxには、メモリ上だけに存在するファイルシステム、tmpfs とか、

tmp ディレクトリに、ファイルを作って書き込めば、
システム終了時に自動的に、
作ったファイルを消してくれる、などの機能がある

Win にはそういう機能は無いの?
0063デフォルトの名無しさん2015/05/17(日) 00:34:12.22ID:prFKBwN9
>>61
Google先生に聞いてね。
78とか76とか、いろいろめんどうだけどね。
0064デフォルトの名無しさん2015/05/17(日) 16:21:48.28ID:B0Fe1+FI
VBAで : が使われる場所って、
文字列の中を除くとあとは
GOTO Label:
くらいでしょうか?
0065デフォルトの名無しさん2015/05/17(日) 16:50:07.35ID:nnFlbvVf
>>64
名前付き引数の指定で使う

http://www.relief.jp/itnote/archives/001014.php
引数の指定方法には、標準引数と名前付き引数という2種類の方法があります。

▼標準引数を使った例
WorkSheets.Add ,,5

▼名前付き引数を使った例
WorkSheets.Add Count:=5
0066デフォルトの名無しさん2015/05/17(日) 16:53:28.95ID:lnYJDjFz
なぁ、ぼちぼち前スレに移動してくれないか?

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net・
http://peace.2ch.net/test/read.cgi/tech/1419718732/
0067デフォルトの名無しさん2015/05/17(日) 19:14:25.16ID:fv8Y2qXy
>>64
マルチステートメント(の区切り)に使う
0068デフォルトの名無しさん2015/05/17(日) 20:20:17.19ID:B0Fe1+FI
>>65>>67
詳しい解説、有難うございました。
この2例以外にはもう無いでしょうか?
0069デフォルトの名無しさん2015/05/19(火) 12:05:13.92ID:NTe3EXZz
Excel x97m_sugar.dの作り方を教えてください。
0070デフォルトの名無しさん2015/05/19(火) 23:05:06.59ID:Y2eIQ7MR
Excelのx97m_sugar.dの作り方は教えてあげないでください。
0071デフォルトの名無しさん2015/05/20(水) 00:01:24.67ID:HCLyDu6k
Excelのx97m_sugar.dの作り方が教えてあげられません。
0072デフォルトの名無しさん2015/05/30(土) 00:10:11.41ID:uAz+OfzT
VLOOKUPの列入力で質問です。

一つのセルに「=(VLOOKUP($検索値,$範囲,列,FALSE)+(VLOOKUP($検索値,$範囲,列,FALSE)+(VLOOKUP($検索値,$範囲,列,FALSE))」と入れてるのですが、列を連続で入れたいです。

A1セルに=(VLOOKUP(検索値,範囲,1,FALSE)+(VLOOKUP(検索値,範囲,2,FALSE)+(VLOOKUP(検索値,範囲,3,FALSE))」
A2セルに=(VLOOKUP(検索値,範囲,4,FALSE)+(VLOOKUP(検索値,範囲,5,FALSE)+(VLOOKUP(検索値,範囲,6,FALSE))」
A3セルに=(VLOOKUP(検索値,範囲,7,FALSE)+(VLOOKUP(検索値,範囲,8,FALSE)+(VLOOKUP(検索値,範囲,9,FALSE))」..............と自動入力したいです。

COLMUN関数を列に入れてみましたが、そうすると
A1セルの列が、1,2,3
A2セルの列が、2,3,4
A3セルの列が、3,4,5と希望通りになりませんでした。

お助け下さい。
0073デフォルトの名無しさん2015/05/30(土) 00:17:17.37ID:mU8J0Ylc
ここは VBAのスレですよ?
0074デフォルトの名無しさん2015/05/30(土) 00:24:06.68ID:4IPDAfwH
>>72
ROW()*3-2+COLUMN()
0075デフォルトの名無しさん2015/06/02(火) 23:40:59.47ID:iC0H3P5x
Application.EnableEvents = Falseで、
別のブックのイベントを停止させることはできるの?

どうもできないように思うのだが。
0076デフォルトの名無しさん2015/06/03(水) 04:24:08.92ID:+cwo1qGY
>>75
2007で試してみたが
普通にやると複数ブック開いてもExcelのプロセスは一つなので
全てのブックのイベントが停止するっぽい

別プロセスで開いたブックでなら
そのプロセスに対応するApplicationで指定すれば
そのブックだけ停止出来てるようだ

Dim ap As Application
Dim wb As Workbook
Set ap = New Excel.Application
ap.Visible = True
Set wb = ap.Workbooks.Open("w:\book1.xlsm")
wb.Application.EnableEvents = False
こんな感じでテストしてみた
0077752015/06/03(水) 14:31:44.71ID:fXq4Zk1N
>>76
Resありがとう。
確かにExcel2010で複数のExcelファイルを同じWindowで開いたら、
1個のブックでApplication.EnableEvents = False とすれば、
全てのブックのイベントが停止すると思う。

しかし、複数のExcelファイルを別のWindowで開いたら、
1個のブックでApplication.EnableEvents = False としても、
別のWindowのブックのイベントを停止できないのです。

なお、Excel2010で別のWindowで開く方法は、
新たにExcelブックを立上げ、そこにExcelファイルをDrug&Dropするのです。
Excel2013はDefaultで別のWindowで立ち上がりますが、
2010や2007は同じWindowで立ち上がります。
0078デフォルトの名無しさん2015/06/03(水) 20:08:13.04ID:ZKJDLKuD
Sheet2に編集済みの文字列はform上に張り付けたコンボックスで下記のコードで読めたしシートの書き込みができた。
でも問題はformを利用せずSheet1に張り付けたコンボックスまたはリスト
で同じSheet1に編集済みの文字列A1:B1を複数表示選択して同じSheet1の
セルA10:A11に書き込みたいが、どうしてもオブジェクトエラーになる。
シート上でのコンボックスまたはリスト利用は制限がでるのですかね?
'form上からコンボックスでセル参照
Private Sub UserForm_Initialize()

Dim lRow As Long
With Worksheets("Sheet2")
lRow = .Range("A" & Rows.count).End(xlUp).Row
End With
With ComboBox1
.ColumnCount = 3
.ColumnWidths = "50;50;50"
.RowSource = "Sheet2!A18:B" & "A24"
End With
End Sub
'シートに連続書き込み
Sub test(kazu As Integer, mode As Integer)
’前処理コード
Do
  bs.LineStyle = xlContinuous
bs.Weight = xlThick
Range(Mid(W_Right, 1, 1) & CStr(count)).Value = UserForm1.ComboBox1.List(ListNo, 0)
Range(Mid(W_RightPlas, 1, 1) & CStr(count)).Value = UserForm1.ComboBox1.List(ListNo, 1)

count = count + 1

Loop Until count = count_end
end sub
0079デフォルトの名無しさん2015/06/03(水) 20:18:44.73ID:+cwo1qGY
>>77
いやだから、別のプロセスで開いたらその対応するApplication操作しろって言ってるんだが
問題はどうやってそのブックへの参照を得るかだが、自分で立ち上げるなら実例は示した
2013でどうなってるか知らんが、あとは自分で考えろ

あとWindowとプロセスの区別ついてないっぽいけど
Windowが別だからってプロセスが別だとは限らんぞ

2013からMDI廃止らしいけど、プロセスも別なのがデフォになったのかねぇ
0080デフォルトの名無しさん2015/06/03(水) 22:56:11.47ID:ZxJD2qlU
Office 2013ではWordもExcelもSDIに
ttp://www.relief.jp/itnote/archives/018148.php

便利なのか不便なのか分からん。
ブック間の不作為なリンクを避けられるなら仕方ないが、勝手にリンクする上にApplicationを取得しないと別のブックが見えないとかだったら嫌だな。
0081デフォルトの名無しさん2015/06/06(土) 00:01:08.07ID:JzYI2Rbi
Applicationて名前なのにWindowが別だと別物とかとんでもない罠だな
Excel作ってる人はバカなのかな
0082デフォルトの名無しさん2015/06/06(土) 08:30:57.59ID:nnpJvQGY
>>81
少なくともお前よりは頭いいよ
0083デフォルトの名無しさん2015/06/06(土) 09:03:14.59ID:JzYI2Rbi
Excel作ってる人いたwww
0084デフォルトの名無しさん2015/06/12(金) 11:53:50.80ID:P3g0DnhS
997 デフォルトの名無しさん sage 2015/06/12(金) 03:53:05.71 ID:V1caHJYS
>>988
後ろゼロ埋めして長さ揃えてソートして、その順に元の文字連結する

それ題意に合ってない。
例えば 3 < 31 になっちゃう
0085デフォルトの名無しさん2015/06/12(金) 13:22:48.26ID:3WPnrkkp
ゼロで埋めずにその数字の最後の桁の数で埋めればいいんじゃね?
たとえば
72 と 568 だったら 72 を722 にするの
0086デフォルトの名無しさん2015/06/12(金) 14:55:54.39ID:nFg05tfI
文字列にして降順ソートで
0087デフォルトの名無しさん2015/06/12(金) 17:29:03.95ID:9iuD3EDL
>>86
正解
0088デフォルトの名無しさん2015/06/12(金) 17:36:58.20ID:P3g0DnhS
>>86
だからそれだと 3 < 31 になっちゃうんじゃないの?
0089デフォルトの名無しさん2015/06/12(金) 20:29:11.94ID:aMl82aru
>>85
多分それで上手く行くと思う。
0090デフォルトの名無しさん2015/06/12(金) 21:00:11.26ID:P3g0DnhS
最初に全体をなめて桁数の上限を求めんとあかんの?
0091デフォルトの名無しさん2015/06/12(金) 21:03:00.99ID:P3g0DnhS
つか
https://blog.svpino.com/2015/05/08/solution-to-problem-4
0092デフォルトの名無しさん2015/06/12(金) 21:03:54.12ID:aMl82aru
>>90
そこは本題の論点じゃなさそうだから、どっちでもいいんじゃない?
0093デフォルトの名無しさん2015/06/12(金) 21:10:46.93ID:aMl82aru
>>91
すまん、じじいだから英語分からんし、VBAしか分からん。
VBAのスレだからVBAに直して教えてくれ。
0094デフォルトの名無しさん2015/06/12(金) 21:25:28.34ID:P3g0DnhS
>>93
おれは多分あんたよりずっとじじいだと推測するが教えよう。
aとbが数値型だとして、このふたつを比較するのに、 CStr(a) & CS
tr(b) と CStr(b) & CStr(a) の比較に帰着させようってことだ
0095デフォルトの名無しさん2015/06/12(金) 22:03:15.51ID:hZ3veipK
>>94
なるほどね。どっちの方が効率いいんだろうな。
0096デフォルトの名無しさん2015/06/13(土) 04:27:57.02ID:ds8D2Sdy
>>91のURLが見れないんだが
0097デフォルトの名無しさん2015/06/13(土) 10:20:57.75ID:YcieRO9y
あれれ?おかしいですよ。

Dim i as Integer = 5

みたいに宣言と代入を同時にできなかった?
0098デフォルトの名無しさん2015/06/13(土) 10:51:54.20ID:P6q2Jefi
もしかしてだけど?(´・ω・`)
as じゃなくて As じゃないかな?(´・ω・`)
0099デフォルトの名無しさん2015/06/13(土) 10:54:17.52ID:YcieRO9y
>>98
それは関係ないみたいですよ
0100デフォルトの名無しさん2015/06/13(土) 10:55:47.86ID:aBb0zzsM
できない
constだと宣言と同時に代入できるってか代入が必須
0101デフォルトの名無しさん2015/06/13(土) 10:56:07.32ID:yb+K2D/k
Const j as Integer = 5 みたいに定数宣言ではできるけど

http://www.dotup.org/uploda/www.dotup.org365418.jpg

コンパイルエラー
0102デフォルトの名無しさん2015/06/13(土) 10:58:11.23ID:5fbKckS6
VB.NETでは出来るけどVBAでは出来ないんだよな。
っていうかVBSとVBAとVB.NETでは仕様が違うから平行して使うと混乱する。
0103デフォルトの名無しさん2015/06/13(土) 13:09:18.97ID:EK7iCI9D
>>97
Dim i as Intger :i=5
じゃなくて?
0104デフォルトの名無しさん2015/06/13(土) 13:11:08.13ID:EK7iCI9D
Integer
0105デフォルトの名無しさん2015/06/13(土) 13:59:15.72ID:ZT8kHOu5
>>103
それ、2つの命令を1行に書いてるだけじゃん
0106デフォルトの名無しさん2015/06/13(土) 14:56:58.35ID:xAuM0Ioe
インタプリタとコンパイラの違いをまずは勉強した方が良いと思うよ。
今の人って逆ポーランド記法とかも知らないだろうなぁ。
0107デフォルトの名無しさん2015/06/13(土) 15:05:13.23ID:5fbKckS6
記法なんてコンパイラの胸三寸じゃねぇか。
0108デフォルトの名無しさん2015/06/13(土) 15:10:58.98ID:FxAuvF7G
いきなりなんの話だ?
0109デフォルトの名無しさん2015/06/13(土) 16:36:33.75ID:DqJYPwIz
また面倒なのが出てきた
0110デフォルトの名無しさん2015/06/13(土) 16:46:02.45ID:rvHURxqt
宣言と初期化が同時にできるのは間違いなく良いことだし、それができないのはVBAの困った点。
0111デフォルトの名無しさん2015/06/13(土) 16:57:27.94ID:DqJYPwIz
そりゃ昔からの言語なんだから色々あるさ。
0112デフォルトの名無しさん2015/06/13(土) 16:59:19.80ID:7lUoI+DV
初歩的な書式設定レベルのツールを開発しました。
その仕様書を作成するよう言われたのですが、書き方が分かりません。
仕様書・設計書の書き方で、初心者用のオススメ本とかありますか?
0113デフォルトの名無しさん2015/06/13(土) 17:08:42.08ID:yb+K2D/k
サンプルが同じ部署の中に転がってんでしょ。それを参考にし作れば良いのでは
0114デフォルトの名無しさん2015/06/13(土) 21:23:10.21ID:DqJYPwIz
>>112
書き方が分からないのは分かった。

どう言った立場でどんなシチュエーションで言われたのかで答えが変わる質問っぽいな。

もう現場で実際に使うようなものであれば、>>113が言ってるように、
周りにサンプルが転がってるんじゃないか?

研修中と言うなら取り敢えず何のためにどんな仕様書が必要なのか洗い出して、
それぞれどうすれば自分の伝えたいことが伝わり易いのかを考えれば必然的にどう作成するか見えてくるはず。

例えば何を目的として作成されたツールなのか、画面にはどんな項目があるのか、
ボタンを押したらどんな処理が走るのか、とかね。

ま、仕事で分からない人にいきなりレクチャーも無しに作れと言うのは少し考え辛いな。

分からなければ取り敢えず上の人に聞いた方がいいと思うよ。
0115デフォルトの名無しさん2015/06/13(土) 21:55:36.91ID:FQeTzdta
>>110
今さらそんな些細なこと言われても...
VBA は初期値が決まってるから、Fortran とか C/C++ と違って単体テストちゃんとやれば大丈夫だしね
0116デフォルトの名無しさん2015/06/13(土) 23:50:09.98ID:xAuM0Ioe
直接的な仕事の話なら、先輩か上司に聞けよ。
分からないなら、分からないとちゃんと伝えないと、手取り足取りでは教えてもらえない。
適切な質問を適切なタイミングで行うことで、
コミュニケーションが深まり、信頼されるようになっていくんだから。
新人のうちは、作業を依頼されたら、
「何を/何時までに/どのように」
が、頭に浮かばない状態では、受けちゃだめ。
分からないところは、ちゃんと質問しろ。
で、2割できたと思った時に、それを説明して確認して方向性が間違ってないか聞け。
そして8割できたと思った時に、もう一度確認しろ。
その状態でOKがでたら、その作業は完了として、次の作業に移れば良い。
もう少し、といわれたら10割まで進めろ。

「やります」って約束してから初心者本を探すようでは、失格だよ。
0117デフォルトの名無しさん2015/06/14(日) 08:07:46.62ID:XH+fyzBI
>>106
インタプリタとコンパイラの関係については
ここではあまり関係がある話とは思えないなぁ。

VBAとVB.Netでは、VBAはエラーになるし、VB.Netでは動く。

中間コードがPコードかILかって違いはあるけど、どっちもインタプリタの
要素を含んだコンパイラっていう形式であることは変わらないし。

逆ポーランド記法なんて中間コードを挟まない場合や、
直で中間コードを弄る場合には今でも使うし、
そうでなければ昔でも使わない。

結局のところ、>>107の人が言ってることが正解ってことになるんだろうなぁ。
0118デフォルトの名無しさん2015/06/14(日) 11:42:28.09ID:gLTCEjdN
>>117
>>116 もそうだけど、誤爆でなきゃ話の流れに関係なく自分の思い付いたことを語り始めるアレな人みたいなので、相手しない方がいい
0119デフォルトの名無しさん2015/06/14(日) 12:46:31.01ID:inpQDwIg
文字列を分割するユーザー定義関数を作ろうとしているのですが、
下記のコードだと関数の結果がvalueになってしまいます。
途中のMsbBoxでは思い通りの結果が表示されるのですが、
何を直せばよいか教えてください
よろしくお願いします。

Function spr(ByRef 対象セル As Range, Optional 分割文字 As String = " ", Optional N番目 As Long = 1) As Variant
'セルの文字列を分割し、N番目を参照する関数
Application.Volatile

Dim 分割文字列 As Variant

分割文字列 = Split(対象セル.Item(1).Text, 分割文字)

MsgBox 分割文字列(0)
MsgBox 分割文字列(1)
MsgBox 分割文字列(2)

spr = 分割文字列(N番目 - 1)

End Function
0120デフォルトの名無しさん2015/06/14(日) 13:34:47.08ID:pyKjCLa1
Function AnySplit(TargetRange As Range, Optional SplitStr As String = " ", Optional PutNum As Long = 1) As String
Dim Spstr() As String
Spstr = Split(TargetRange.Value, SplitStr)

AnySplit = Spstr(PutNum)
End Function
0121デフォルトの名無しさん2015/06/14(日) 13:47:46.11ID:9sCLitNc
>>119
そのままコピペして、別に問題なく動いてるけど
あえて言うなら、MsgBoxは全部削除かコメントアウトした?
0122デフォルトの名無しさん2015/06/14(日) 13:53:29.18ID:pyKjCLa1
修正ついでにこっちの方が面白いかな。

Function AnySplit(TargetRange As Range, Optional SplitStr As String = " ", Optional PutNum As Long = 1) As String
Dim str As String
Dim Spstr() As String
Dim c As Range

str = TargetRange(1).Value

If TargetRange.Count > 1 Then
For Each c In Range(TargetRange(2), TargetRange(TargetRange.Count))
str = str & SplitStr & c.Value
Next
End If

Spstr = Split(str, SplitStr)

AnySplit = Spstr(PutNum - 1)
End Function
0123デフォルトの名無しさん2015/06/14(日) 14:06:12.12ID:inpQDwIg
>>121
原因分かりませんがもともと自分で作ったものでも動きました(汗
なにか勘違いしていたみたいです

修正案作ってくれった方々も有難うございます。
0124デフォルトの名無しさん2015/06/14(日) 16:28:13.01ID:aLL1Dt0J
糞テンプレ捏造の重複スレより転載
>22 :デフォルトの名無しさん:2015/06/14(日) 14:14:40.48 ID:Qy/1/K9E
>非表示のシートをselectするとエラーが出るのですが仕様ですか

仕様みたいよ
Activateを使えばエラーでないらしい
http://d.hatena.ne.jp/paz3/20090824/1251086123
0125デフォルトの名無しさん2015/06/14(日) 21:09:14.94ID:1Cglll13
>>123
書いてみたので載せときましたw
よかったらご参考にしてくださいw
あと、N番目は関数を呼び出す前には分かっているようなので、引数から
外してみました。あしからずw

Function spr(ByRef 対象セル As Range, Optional 分割文字 As String = " ") As Variant
'セルの文字列を分割文字で分割し配列を返す。

Application.Volatile
spr = Split(対象セル.Text, 分割文字)
If UBound(spr) < 0 Then
spr = Array() '分割できなかった時の戻り値
End If
End Function

Sub test()
'、N番目を参照する関数
MsgBox spr(Sheet1.Range("B2"))(0)
MsgBox spr(Sheet1.Range("B2"))(1)
MsgBox spr(Sheet1.Range("B2"))(2)
End Sub
0126デフォルトの名無しさん2015/06/14(日) 21:41:53.64ID:1Cglll13
なんかバグ見つけたので書き直しました。
もう見てないかもしれませんがどうぞ。

Function spr(文字列 As String, _
Optional 分割文字 As String = " ", _
Optional N番目 As Integer = 1) As String
'文字列を分割文字で配列に変換し、N番目の値を返す。
Dim arr As Variant

spr = ""

If N番目 >= 1 Then
arr = Split(文字列, 分割文字)
If UBound(arr) <> -1 And UBound(arr) >= N番目 - 1 Then
spr = arr(N番目 - 1)
End If
End If
End Function

Sub test()
Application.Volatile
MsgBox spr(Sheet1.Range("B2").Text, , 1)
MsgBox spr(Sheet1.Range("B2").Text, , 2)
MsgBox spr(Sheet1.Range("B2").Text, , 3)
End Sub
0127デフォルトの名無しさん2015/06/14(日) 21:47:43.34ID:9sCLitNc
>>123
配列を1回しか使わないなら、いちいち変数に代入しなくても直接取り出せる

Function spr(ByRef 対象セル As Range, Optional 分割文字 As String = " ", Optional N番目 As Long = 1) As Variant
  Application.Volatile
  spr = Split(対象セル.Item(1).Text, 分割文字)(N番目 - 1)
End Function
0128デフォルトの名無しさん2015/06/14(日) 22:42:59.92ID:1Cglll13
>>29
詳しくはありませんが、
チェックデジットが最後で値が違うからじゃないですかねぇ。
以下の部分がおかしいのかなぁ。
s = s + Mid(Cells(1, 1), Len(Cells(1, 1)) - 1 - i, 1) * (i Mod 6 + 2)
0129デフォルトの名無しさん2015/06/14(日) 22:59:58.84ID:1Cglll13
>>72
こんな感じですかね?
あとはカスタマイズしてみてくださいな。
Sub test()
Sheet1.Range("D2").Value = "=VLOOKUP(""d"",A1:B7,B:B,TRUE)"
End Sub
0130デフォルトの名無しさん2015/06/16(火) 20:01:33.86ID:/YX6SlcO
zipの中身(csvのファイルが百個超入ってる)を直接閲覧する方法ってないかな。

ネットを調べてみた限りだと解凍する方法しか出てこないから、やっぱ一時ファイルに中身を出して読み込むまでを自動化して、
あたかもzipを直接読んでいるかの様に振る舞うくらいしか方法ないのかな。
0131デフォルトの名無しさん2015/06/16(火) 20:07:11.57ID:bDVKNfTy
>>130
Windowsのエクスプローラーなら(あたかも)解凍せずにフォルダのように見る機能がついてるじゃん
0132デフォルトの名無しさん2015/06/16(火) 20:09:36.92ID:OQMU+FkQ
むしろ最近のWindowsはダブルクリックで解凍してくれなくて困る。
0133デフォルトの名無しさん2015/06/16(火) 20:10:52.60ID:/YX6SlcO
>>131
あ、ごめん。閲覧って書いたけど本当は読み込みだ。
エクセルが閲覧する≒内部情報を読み込んでいる。という発想から閲覧と書いてしまった。
0134デフォルトの名無しさん2015/06/16(火) 20:25:01.91ID:bDVKNfTy
>>132
解凍アプリ入れて関連付けするだけの簡単なお仕事で解決ですよ
0135デフォルトの名無しさん2015/06/16(火) 23:33:39.61ID:CTMSSCrl
解凍ソフト入れるくらいなら
右クリックですべて展開の方が好きだな
0136デフォルトの名無しさん2015/06/20(土) 12:47:52.85ID:0iDXtIw3
windows7
excel2010

「wsock32.dll」を使用したいのですが
参照設定になにを追加したらいいのかわかりません。
ご教授お願い致します。
0137デフォルトの名無しさん2015/06/20(土) 12:49:24.67ID:ICg+mTIe
>>136
VBAでDeclare Functionで宣言して使うんなら参照設定は必用ない
0138デフォルトの名無しさん2015/06/20(土) 12:55:09.99ID:0iDXtIw3
>>137
そうなんですね!ありがとうございます!
勉強不足で申し訳ありません。
0139デフォルトの名無しさん2015/06/20(土) 13:37:12.86ID:GrEUy4+j
予め形式の分かっている差分データを取り込む際に、日付の書いてある範囲や合計欄、個別に集計するエリアなどを設定したいのですが、
シート単位またはセル単位で設定ができ、かつエクセルの通常画面からは見えない様な設定の仕方はありませんか?

IDというメンバ変数を見つけたのですが、保存する時に消えてしまうのでシート単位で個別に保存して運用する可能性があって使えません。
XPathやSmartTagsが自由に設定できれば使えそうなんですが、これは何か形式が決まっているんでしょうか?
0140デフォルトの名無しさん2015/06/20(土) 13:49:23.06ID:ICg+mTIe
>>139
シートを非表示にする
0141デフォルトの名無しさん2015/06/20(土) 16:01:17.17ID:VnYjkKK/
>>139
シート非表示で良いと思う。
但し、表示されちゃうとまずいから
VBA側でVeryHiddenにしとく
0142デフォルトの名無しさん2015/06/20(土) 18:25:10.11ID:GrEUy4+j
>>140-141
やっぱりそういう方法しかないんですね。

直接読み込ませるのではなく、各ファイルが自分でバッチファイルを生成して元のデータベースに統合する形にしたいと思います。
ありがとうございました。
0143デフォルトの名無しさん2015/06/20(土) 23:34:52.81ID:VnYjkKK/
>>142
そこまで大掛かりにするならExcelにやらせるのではなく
.Netフレームワークとかでシステム作ってそっちにやらせた方が楽かも知れないよ。

それ用のテンプレートファイル作って
そこに展開するようにしておけば、
隠しシート仕込まないことも視野に入れられるし。
0144デフォルトの名無しさん2015/06/21(日) 12:05:02.10ID:QrPate9Z
Excel2010(64bit)ですが画面描画を繰り返していると途中で描画が止まってしまいます。

縦×横がそれぞれ数10レベルの配列とセル領域(固定)に対する出力なんですが、
最初に Application.EnableEvents = False したあと、ループ内で
1. 配列の値を再計算
2. 配列をセルに貼り付け(毎回同じ場所)
3. カウンタを表示(特定セル)
4. Application.ScreenUpdating = True
とやってます。(一種のアニメーションです。)
だいたいカウンタが50くらいまでは順調に表示を更新するんですが、そのあと砂時計となって表示が固まります。
その間も計算はしてるようなんですが、最後に一気に飛んだ状態でカウンタが表示されます。
計算モードはずっと xlCalculationManual で、個々の値は長さ1の文字列です。
ずっと表示し続けるにはどうすればいいでしょうか?
0145デフォルトの名無しさん2015/06/21(日) 12:06:24.53ID:8nB0S4aH
>>144
5. DoEvents
0146デフォルトの名無しさん2015/06/21(日) 12:06:37.25ID:QrPate9Z
まちがい

× 最初にApplication.EnableEvents = False したあと、ループ内で
〇 最初にApplication.ScreenUpdating = False したあと、ループ内で
0147デフォルトの名無しさん2015/06/21(日) 12:08:02.54ID:QrPate9Z
>>145
うお!一瞬で解決しました!
0148デフォルトの名無しさん2015/06/21(日) 14:33:38.20ID:c2TFF1xN
2シートのセルに書かれた時刻を比較し、同時刻かどうかを判別させたいです。

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim time1 As Date
Dim time2 As Date
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
ws1.Activate
ws2.Activate
For i = 2 To 100
For j = 2 To 100
If ws1.Cells(j, 1).Value = ws2.Cells(i, 1).Value And ws2.Cells(i, 1).Value <> "" Then
For m = 2 To 20
time1 = ws1.Cells(j, 2).Value
time2 = ws2.Cells(1, m).Value
If time1 = time2 Then
MsgBox ("Insert" & time1 & "," & time2)
ws2.Cells(i, m).Value = 1
End If
Next m
End If
Next j
Next i

これで一致判別ができません。何故かtime1=time2=9:30:00の時だけは一致判別できます…
0149デフォルトの名無しさん2015/06/21(日) 14:43:05.97ID:c2TFF1xN
http://imgur.com/oLGlGUU

↑の画像のsheet1に記載されたデータをsheet2に反映させて、簡単なシフト表を作りたいと思っています。
0150デフォルトの名無しさん2015/06/21(日) 14:57:40.61ID:KB1pzFAk
>>148
たぶんここ

正 ws2.Cells(j, m).Value = 1
誤 ws2.Cells(i, m).Value = 1

だと思うけど、それ以外にもおかしいところがたくさんありすぎて、突っ込んでいいのかどうか迷うところ
0151デフォルトの名無しさん2015/06/21(日) 15:18:00.34ID:KB1pzFAk
>>148
>>150は間違い。これで動いた
シリアル値を別シートから持って来ると小数誤差が出るのってExcelの仕様なのかな
こりゃ初心者にはわからんわ

time1 = ws1.Cells(j, 2).Text
time2 = ws2.Cells(1, m).Text
0152デフォルトの名無しさん2015/06/21(日) 15:30:19.64ID:c2TFF1xN
>>150
>>151

time1,2をstringに変え、.textでの比較に変えたら動きました!ありがとうございました。

お察しの通りVBAは超初心者、プログラムも大学の授業でCを学んだ程度です。
0153デフォルトの名無しさん2015/06/21(日) 16:47:35.17ID:nnV9xOPw
>>151
浮動小数点なんで誤差が出ないわけではないが、たぶん誤差じゃなくて
実際に違うシリアル値なんだが表示上同じに見えてるだけ だと思われ
単純な比較で「誤差」はでないから、一度セルの表示形式変えて確認してみたら
0154デフォルトの名無しさん2015/06/21(日) 17:17:11.91ID:KB1pzFAk
>>153
新規ブックで、どっちのシートもセルの書式もデフォルト(@標準)のまま手作業で打ち込んだのに、
比較すると異なるとか罠以外の何者でもないと思う

自動判断と隣のセルの書式に影響される機能のせいだと思うんだけど
0155デフォルトの名無しさん2015/06/21(日) 18:21:49.45ID:nnV9xOPw
>>154
同じものを打ちこめば、表示形式が違っても同じと判断されるはずだがなぁ...
どんな入力でどんな表示になってるんだ?
0156◇◇2015/06/21(日) 18:27:30.32ID:RGV/Ctvq
テスト
◇◆◇◆◇◆◇◆◇◆
0157◇◇◇◇◇◇◇◇◇◇◇◇2015/06/21(日) 18:28:21.43ID:RGV/Ctvq
本文が空です!
0158デフォルトの名無しさん2015/06/21(日) 19:53:56.30ID:2F73xJXZ
cells(y,x)=1 をyが10にまでやって11からはxをインクリメントして右に並べるみたいな
マクロを書く場合、最初にyをリセットしてループしますが
y=y+1を先に書きますか?
それとも処理のあとに書きますか?
どちらが一般的なんでしょうか?
0159デフォルトの名無しさん2015/06/21(日) 22:17:42.92ID:ApDmoctC
>>158
処理に整合が取れていれば見やすい、あるいは扱い易い方で良い。

ケースバイケースになるので、どちらが一般的ということはない。
0160デフォルトの名無しさん2015/06/22(月) 00:49:07.54ID:oXOTOpou
cells(y,x)の並びの方が気になるw
0161デフォルトの名無しさん2015/06/22(月) 06:14:25.06ID:0q8cyi70
俺も最初は(y, x)と書いてた
気持ちはわかる
今は素直に(r, c)にしてるけど
0162デフォルトの名無しさん2015/06/22(月) 11:05:48.79ID:8PARE+E6
コラ「Excel VBAによるOffice連携プログラミング」の本がAmazon中古で安くなったからさっき買おうと思ったが
その安い値段のが売り切れてまた数万円の価格に戻ってるじゃないか。

誰だ買ったのは?
0163デフォルトの名無しさん2015/06/22(月) 19:22:55.46ID:r2iC/9tS
>>162
コラって怒る前に数万円で買ってくれ


読み終わったら売ってね❤️
0164デフォルトの名無しさん2015/06/22(月) 20:34:37.81ID:8PARE+E6
コラ
0165デフォルトの名無しさん2015/06/22(月) 22:00:35.23ID:gH+fd3zN
この本そんなに凄いのか?
0166デフォルトの名無しさん2015/06/22(月) 23:49:49.64ID:QLWOuCWb
>>161
変数1文字命名派?
0167デフォルトの名無しさん2015/06/23(火) 15:25:42.35ID:kPbxmHHZ
yyyy/mm/dd hh:mm
の形式で入ってるセルはFindで検索しても該当なしになっちゃう
検索できないものなのかな(´・ω・`)
エクセル2013を使用しています
0168デフォルトの名無しさん2015/06/23(火) 16:47:54.31ID:vVXy/YjI
>>167
とりあえずこの辺の内容を理解して
http://officetanaka.net/excel/vba/tips/tips131.htm
0169デフォルトの名無しさん2015/06/23(火) 17:51:09.10ID:kPbxmHHZ
>>168
やっぱりシリアル値取らないとダメですか
ありがとうございます やってみます
0170デフォルトの名無しさん2015/06/23(火) 18:14:50.22ID:WNvMOvej
直値で検索することはできる。
Range("A:A").Find(#6/23/2015#)
「日付」として値が入力されているなら、
Range("A:A").Find(DateValue("2015/6/23"))
文字列なら、
Range("A:A").Find("2015/06/23")
0171デフォルトの名無しさん2015/06/23(火) 19:08:58.22ID:vVXy/YjI
時刻入るとたしかにうまくいかないときあるな
Excel側とVBAでシリアル値の内部フォーマットに違いあるのかもしれん
0172デフォルトの名無しさん2015/06/23(火) 19:25:51.74ID:vVXy/YjI
2003以降でどうなってるかわからんが、こんな情報見つけた
https://support.microsoft.com/ja-jp/kb/416317/ja

>この現象は Excel の仕様による動作になります。
仕様だったら2003以降もそのままのはずだが
原因はっきり示さないのに仕様で押しとおされてもなぁ

時刻 0:00:00ですら合わないんだから、それ以外でも合わない事はありそうだし
0173デフォルトの名無しさん2015/06/23(火) 20:03:13.96ID:Yra6/pdr
浮動小数だから = で比較するなんて

って思う俺がおかしいのか...
0174デフォルトの名無しさん2015/06/23(火) 23:20:34.97ID:vVXy/YjI
まあ、浮動小数点には正規化の問題もあるにはあるけど
同じ型での(代入と)比較だけなら問題ないはずだろ
演算すると誤差が問題になるだけで
0175デフォルトの名無しさん2015/06/24(水) 06:05:16.06ID:Dt+PoWxm
>>173
浮動小数点数を浮動小数って思うお前がおかしい
0176デフォルトの名無しさん2015/06/24(水) 07:43:50.26ID:mSDBMbUW
>>174
何をもって問題ないって言ってるのかよくわからんが、入力時点から既に種々の演算がされてるんだけどな

>>175
なにか突っ込みたかったことはわかった
次はもう少し内容に突っ込めるようになろうな w
0177デフォルトの名無しさん2015/06/24(水) 08:02:11.33ID:Dt+PoWxm
>>176
なにか反論したいのかな?
それじゃ誰にも何も伝わらんよ意識高い系君
0178デフォルトの名無しさん2015/06/24(水) 08:26:33.72ID:mSDBMbUW
>>177
やはり内容には突っ込めませんでしたね w
0179デフォルトの名無しさん2015/06/24(水) 08:41:15.29ID:BjoO3mYW
>>169
20年前からの常識ですよ。
lookup系の関数じゃないんだから。
0180デフォルトの名無しさん2015/06/24(水) 09:08:06.38ID:4zqa0pLf
>>171
シリアル値の内部形式は同じだよ
問題があるのはワークシート側の書式の自動解釈(自動変換)のアルゴリズムで、これは簡単に検証できる

シリアル値で誤差が出る例
同じデータを入力したつもりなのに、比較すると違っている
http://www.42ch.net/UploaderAnime/source/1435071846.png

これの理由がわかってれば、どこで誤差が出たかもわかるはず
0181デフォルトの名無しさん2015/06/24(水) 09:12:46.00ID:4zqa0pLf
自分で確かめてみたい人用
>>180の検証に使ったブック
http://www.42ch.net/UploaderSmall/source/1435072251.xlsx
0182デフォルトの名無しさん2015/06/24(水) 16:33:23.38ID:RGIhvJyS
>>1

はいざんねーん
http://peace.2ch.net/test/read.cgi/tech/1433920729/l50
0183デフォルトの名無しさん2015/06/24(水) 19:47:23.16ID:JvkNGhgS
見た目上の値で検索したい場合はFindのLookIn引数にxlValuesを設定すればいいはず。
長らく使ってないからちょっと自信ないけど。
0184デフォルトの名無しさん2015/06/24(水) 20:47:09.13ID:THF2Ta19
>>180-181
これどうやって「入力」したのか教えて欲しいんだが
どうも連続データで作ったんじゃないかと思うが、それだったら
連続データを計算するときの計算誤差だと思うが

すくなくとも表示形式を変えて確認する限り
FALSE判定のところは別のシリアル値になってるが
これのどこが書式の自動解釈アルゴリズムの問題なのか教えてくれ
0185デフォルトの名無しさん2015/06/25(木) 01:07:53.01ID:xC+7jf1V
エクセル2010使ってるんですけど
どなたかキッチンタイマー作ってくれませんか?
0186デフォルトの名無しさん2015/06/25(木) 03:59:08.65ID:xvRMitSK
>>185
高いよ!

百均で買った方が1/100以下で済むんだが
0187デフォルトの名無しさん2015/06/25(木) 06:38:29.82ID:vom2QN3t
>>185
そんなもん何に使うんだ?
エクセルやりながら料理するのか??
0188デフォルトの名無しさん2015/06/25(木) 06:45:51.00ID:O+p39R1b
自分でやれよ、怠慢だな!…タイマーだけにw
0189デフォルトの名無しさん2015/06/25(木) 07:20:44.32ID:jos0XzUP
おおかた授業か研修の宿題だろう

これは丸投げする前に自分でちょっと調べるなり考えるなりしてからやって欲しいところだな
0190デフォルトの名無しさん2015/06/25(木) 12:01:24.84ID:eg4063Fk
マクロでキッチンタイマー・・
スマホアプリで作れば?
と思う。
0191デフォルトの名無しさん2015/06/25(木) 12:24:55.04ID:/nf6gI0I
スマホでアプリ作るには
どういう開発環境が必要ですか?

ExcelVBAならExcel立ち上げてALT+F11押すだけでいいけど。
0192デフォルトの名無しさん2015/06/25(木) 12:25:48.10ID:Aa2Tx6yB
スマホアプリならダウンロードすればいいだけ
0193デフォルトの名無しさん2015/06/25(木) 13:04:29.02ID:eg4063Fk
AndroidならAndroidStudioかeclipse入れる。
iosは知らん。

最初は自分の端末にハローワールドするのでもけっこう大変かな。
まあ󾠓、興味あれば別スレみてくれ。
0194デフォルトの名無しさん2015/06/25(木) 13:08:20.51ID:/nf6gI0I
>>193
大変なのですねあきらめます
0195デフォルトの名無しさん2015/06/25(木) 13:13:25.19ID:/nf6gI0I
ExcelじゃなくWordなのですがそのスレがないのでここで質問です。

Wordの文書にいっぱい写真が貼り付けてあります。
各写真について
(1)何ページに貼りついているか
(2)どの段落にくっついているか(Word用語でAnchorしてあるか)
(3)その写真の幅と高さ
(4)そのページ内での位置情報(写真の左上の場所が左上余白から数えてどのくらい右/下にあるか
の情報を取ってきたいのですが、どういうコードを書けばいいですか?

ExcelでいえばFor Eachで全シートや全ブックを取得する方法で
Wordの写真を取得する方法もありそうですが。
そしてもし取得できればExcelと同様、各オブジェクトの情報もそのプロパティをみれば簡単にできそうですが。
0196デフォルトの名無しさん2015/06/25(木) 13:46:08.46ID:/IyRWZfA
>>191
> スマホでアプリ作るには
> どういう開発環境が必要ですか?
Visual Studio 2015があれば、iOSアプリもAndroidアプリも作れるよ。
http://blogs.msdn.com/b/visualstudio_jpn/archive/2015/06/23/visual-studio-2015-and-windows-10-countdown-03.aspx
やったことないけど、多分ひな形のプロジェクトビルドしたら、Hello, World!的なアプリができるんじゃないかな。
0197デフォルトの名無しさん2015/06/25(木) 17:23:14.85ID:It1tnYUr
VBA タイマーでググればいくらでもでてくるわな
http://ateitexe.com/count-down-timer/
0198デフォルトの名無しさん2015/06/25(木) 20:03:34.57ID:D6HVq1fH
>>195
shapeをFor Eachで回す
0199デフォルトの名無しさん2015/06/25(木) 21:29:48.64ID:/nf6gI0I
>>196
そんなことができるようになってましたか。
すごいですね。
いつかためしてみます。

>>198
そんなことは知ってて聞いたのですが。
特にshapeの具体的にどのプロパティを見て
(1)ページ数
(2)所属段落
(3)大きさ
(4)位置
を知ることができるのですか?
0200デフォルトの名無しさん2015/06/25(木) 21:46:32.28ID:3cfr+YD9
オブジェクトブラウザ使えよ猿
0201デフォルトの名無しさん2015/06/25(木) 21:53:11.56ID:/nf6gI0I
>>200
じゃページ数は?
0202デフォルトの名無しさん2015/06/25(木) 22:03:42.70ID:It1tnYUr
anchorプロパティとRangeオブジェクトとInformationプロパティでわかるな
0203デフォルトの名無しさん2015/06/25(木) 22:08:34.62ID:3cfr+YD9
>>201
オブジェクトブラウザ使えよ猿
0204デフォルトの名無しさん2015/06/25(木) 22:15:11.11ID:/nf6gI0I
>>203
うるさいハゲ
0205デフォルトの名無しさん2015/06/25(木) 22:58:36.14ID:4a2fuGbQ
また髪の話してる
0206デフォルトの名無しさん2015/06/26(金) 02:03:05.40ID:rHu+vvV1
>>196
これは興味深いな。

今までJavaが嫌いでiOSはMAC買わないとiiPhoneの開発厳しいから手が出せなかった俺にはぴったりだ。

やっぱりこれから勉強するならC#だな。WindowsPhoneはC#の後、VB.Netにも対応されたけど、
どうせ文法以外大して変わらないし、良いとこ取りと言われているC#で間違いないだろう。

C++?元々VBやVBAやってた俺の肌には合わないな。あれはあれで良いところあるんだろうが
以前入門書ちょっとだけ読んで肌に合わなくてそっ閉じだった。
0207デフォルトの名無しさん2015/06/26(金) 03:20:29.75ID:EJ0mDEW7
>>206
C#でやる場合、別途mac上でobj-cなりswiftなり使ってUI作ら無いといけないんじゃないの
0208デフォルトの名無しさん2015/06/26(金) 07:15:07.75ID:4k0f5kGN
>>207
本当だ。これは後のざまりんフォームとやらに期待するしかないな。
0209デフォルトの名無しさん2015/06/26(金) 07:58:14.16ID:YNfE8rZU
参照型と値型を峻別するのって変だよね
0210デフォルトの名無しさん2015/06/26(金) 08:10:34.10ID:6WgjR2Fv
>>209
えー何で。
ちゃんとどう言うものか知って使いどころを分けるもんじゃないの?
0211デフォルトの名無しさん2015/06/26(金) 08:24:22.85ID:YNfE8rZU
>>210
あらゆる型どうしの間で使いどころを分けるべきっていうのはその通りだけど、参照型と値型なんて一線を引いて区別することに意味はないですよね?
0212デフォルトの名無しさん2015/06/26(金) 11:05:38.76ID:vRL8h3oN
別々のファイルにそれぞれ macro1 と macro2 を作り、同じショートカットキーを割り当てたところ、
それらのファイルを両方開いてからキーを押すとmacro1 と macro2が両方実行されてしまいます。

これを回避する方法はありますか?
作業性の面から、ファイルは同時に起動しておきたく、
またショートカットキーも割り当ての種類をこれ以上増やしたくないと思っています
(上記の例では2つですが、実際にはファイルが数個あり、マクロも複数あるためです)
0213デフォルトの名無しさん2015/06/26(金) 11:21:37.03ID:cSb2GBc3
>>212
マクロの最初にActiveWindowで自分がアクティブかどうか調べる
0214デフォルトの名無しさん2015/06/26(金) 11:22:44.69ID:t/kzaQZM
アクティブじゃないシートのも実行されるんだっけ?
そんな仕様だったかなぁ。
0215デフォルトの名無しさん2015/06/26(金) 11:35:28.88ID:cSb2GBc3
複数のブックを開いて、ショートカットがバッティングしている場合は、
ウィンドウがアクティブかどうか関係なく先に開いた方が実行される
0216デフォルトの名無しさん2015/06/26(金) 13:29:25.44ID:vRL8h3oN
>>213
なるほど!
それなら上手く捌けそうですね、ありがとうございました!
0217デフォルトの名無しさん2015/06/26(金) 18:30:00.40ID:6WgjR2Fv
>>211
何でそう思うの?
0218デフォルトの名無しさん2015/06/26(金) 18:49:28.66ID:o/Regl21
>>211
引数にしてそれを変更したときに差がでるから、その時は意識しないとダメ
0219デフォルトの名無しさん2015/06/26(金) 19:24:10.62ID:YNfE8rZU
>>218
参照と値の区別じゃなくて、参照になれる型とそうでない型を区別することを言ってるんです。
クラス型と基本型を峻別するみたいな。
0220デフォルトの名無しさん2015/06/26(金) 19:28:17.43ID:6WgjR2Fv
>>219
だからなんでそう思うの?
0221デフォルトの名無しさん2015/06/26(金) 19:31:54.25ID:YNfE8rZU
>>220
分けることで対称性というか統一性ががなくなるでしょ。
Integer とMyClass型に何か本質的な違いがあるかっていうと無いですよね?
0222デフォルトの名無しさん2015/06/26(金) 20:02:48.85ID:6WgjR2Fv
>>221
本質的に違うよ。

なんか根本的なところの理解が抜けてるような気がするな。
0223デフォルトの名無しさん2015/06/26(金) 20:10:16.64ID:o/Regl21
>>219
いやだから、参照型か値型の話で、参照渡し/値渡しの話じゃないよ
0224デフォルトの名無しさん2015/06/26(金) 20:22:29.70ID:3miAOepO
何の話なんだ?

Type MyRecord
   [...]
End Type

みたいな形で宣言したヤツを引数として渡せなかったり関数の戻り値として戻せなかったりしてイラついた事あるけどそういう事?
0225デフォルトの名無しさん2015/06/26(金) 20:36:56.53ID:YNfE8rZU
>>222
VBAでは違うとかJavaでは違うとかいうのは理解できる。
でもそれは「根本的なところの理解」とは違うでしょ?
0226デフォルトの名無しさん2015/06/26(金) 20:43:49.33ID:6WgjR2Fv
>>225
「根本的なところの理解が抜けてる」で合ってると思うよ。
0227デフォルトの名無しさん2015/06/26(金) 20:52:09.52ID:YNfE8rZU
>>226
ふむ、そこまで言うなら基本型とクラス型とを峻別する本質的な違いというものを教えてよ。
0228デフォルトの名無しさん2015/06/26(金) 20:56:41.52ID:YNfE8rZU
補足すると、
IntegerとBooleanを区別する、
MyClassAとMyClassBを区別する、
というものを超えてIntegerとMyClassAを峻別すべきだ、というあたなたの主張の根拠をね。
0229デフォルトの名無しさん2015/06/26(金) 21:02:35.80ID:6WgjR2Fv
>>228
自信満々だね。当然、そこまで言うからには何故参照型と値型に分かれているのか、それぞれどう言った用途で使うのか知ってるって認識でいいんだよね?
0230デフォルトの名無しさん2015/06/26(金) 21:07:27.12ID:YNfE8rZU
>>229
いや、そうではない。素直に受け取ってくれ。
そのふたつを峻別する言語に不便を感じているから聞いてるんだ。
0231デフォルトの名無しさん2015/06/26(金) 21:37:55.47ID:PNhnKrNT
そんな高度な質問すんなやハゲ。VBAスレやでここ。
0232デフォルトの名無しさん2015/06/26(金) 21:40:32.73ID:cSb2GBc3
また髪の話してる
0233デフォルトの名無しさん2015/06/26(金) 21:50:53.62ID:6WgjR2Fv
>>230
メモリ上には3つの領域が存在しているのはご存知だろうか。

変数の値や関数の戻りアドレス、インスタンスの入ったアドレスなどを格納しているスタック領域、
標準モジュールの内容やクラスの型を格納しているスタティック領域、
クラスのインスタンスを格納しているヒープ領域の3つ。

この内、スタック領域は頻繁に値のやり取りが行われる場所であり、大きな容量を扱うものには向いていない。
頻繁にやり取りが行われるその領域にそれだけ負担が掛かるからだ。
属に言う値型のものがここに格納される。
つまり、比較的大きなクラスで扱うようなものはこの領域には向かないということだね。

では参照型はというと、そのインスタンスの参照先のみをスタック領域に保持し、インスタンスそのものはヒープ領域に展開される。
つまり、大きいのはそんなに頻繁にアクセスするようなとこに置いとくなよと言うこと。

だから、構造体を持つような言語ではMSDNでもよく小さいのは構造体で、ある程度大きいのはクラスで作れと書いてある。
どの程度の大きさだったかは忘れたけど。

そもそも論として、参照型と値型の峻別を付ける付けないではなく、そう言った根本的な違いがあるので、
設計するとき対象物をどちらで作るかの
峻別が必要になると言うこと。

多分、C++などはその辺を考慮したかたちになっておらず、作り手の判断に委ねられているんだろうな。

だからより高度な判断が必要で、逆に言えば理解が無ければ処理が無駄に遅くなるコードを組むことになる。
0234デフォルトの名無しさん2015/06/26(金) 22:19:34.74ID:PNhnKrNT
そんなレベルの低い話やないと思うでハゲ
0235デフォルトの名無しさん2015/06/26(金) 22:27:36.30ID:YNfE8rZU
上野にGH9というビルがあってな、ゲーハーナインと読むんだが、オーナーがハゲで9階建てなんだと。
0236デフォルトの名無しさん2015/06/26(金) 22:51:03.11ID:JS2Oq9WD
話しについて行けない。そもそも「峻別」の読み方が分からない。悲しい。
0237デフォルトの名無しさん2015/06/26(金) 23:03:05.06ID:6WgjR2Fv
>>236
「しゅんべつ」で、物事にきっちり区別を付けるような意味だったはず。
0238デフォルトの名無しさん2015/06/27(土) 08:37:06.18ID:AVtNDrad
>>236
読み方がわからない?
お前の目の前にある物体は素敵なオブジェですか?検索することも
わからんような奴がなんでここにいるわけ?www
0239デフォルトの名無しさん2015/06/27(土) 08:40:33.01ID:Q5FOX3Kq
検索する労力をひり出す事すら億劫になるほど下らない話題だったって事だろ
0240デフォルトの名無しさん2015/06/27(土) 12:39:07.92ID:zOIiCC8H
おじいちゃんかよw
0241デフォルトの名無しさん2015/06/27(土) 12:43:18.23ID:AVtNDrad
>>239
そのうち、息するのも面倒くさいとか言い始めるだろう。
0242デフォルトの名無しさん2015/06/27(土) 13:33:09.49ID:IT1CkKd8
冗談によくそこまで噛みつけるなぁ
逆に感心するよ
0243デフォルトの名無しさん2015/06/27(土) 13:47:41.34ID:z31C3xpF
アスペだから冗談と理解できないんだろ
0244デフォルトの名無しさん2015/06/27(土) 14:05:59.98ID:RNAxIVzO
>>242
冷やかし・噛みつき目的で質問スレに来ている人には
>>236のような軟弱なレスは格好の餌だから仕方ないね
2ちゃんはそういうところだ
0245デフォルトの名無しさん2015/06/27(土) 14:30:57.67ID:GuUT6nNb
で、片付いたんだっけ?
0246デフォルトの名無しさん2015/06/27(土) 20:12:32.32ID:qGo9dR/B
>>247
うるさいハゲ
0247デフォルトの名無しさん2015/06/27(土) 20:16:45.25ID:Q5FOX3Kq
ルイズ!ルイズ!ルイズ!ルイズぅぅうううわぁああああああああああああああああああああああん!!!
あぁああああ…ああ…あっあっー!あぁああああああ!!!ルイズルイズルイズぅううぁわぁああああ!!!
あぁクンカクンカ!クンカクンカ!スーハースーハー!スーハースーハー!いい匂いだなぁ…くんくん
んはぁっ!ルイズ・フランソワーズたんの桃色ブロンドの髪をクンカクンカしたいお!クンカクンカ!あぁあ!!
間違えた!モフモフしたいお!モフモフ!モフモフ!髪髪モフモフ!カリカリモフモフ…きゅんきゅんきゅい!!
小説12巻のルイズたんかわいかったよぅ!!あぁぁああ…あああ…あっあぁああああ!!ふぁぁあああんんっ!!
アニメ2期放送されて良かったねルイズたん!あぁあああああ!かわいい!ルイズたん!かわいい!あっああぁああ!
コミック2巻も発売されて嬉し…いやぁああああああ!!!にゃああああああああん!!ぎゃああああああああ!!
ぐあああああああああああ!!!コミックなんて現実じゃない!!!!あ…小説もアニメもよく考えたら…
ル イ ズ ち ゃ ん は 現実 じ ゃ な い?にゃあああああああああああああん!!うぁああああああああああ!!
そんなぁああああああ!!いやぁぁぁあああああああああ!!はぁああああああん!!ハルケギニアぁああああ!!
この!ちきしょー!やめてやる!!現実なんかやめ…て…え!?見…てる?表紙絵のルイズちゃんが僕を見てる?
表紙絵のルイズちゃんが僕を見てるぞ!ルイズちゃんが僕を見てるぞ!挿絵のルイズちゃんが僕を見てるぞ!!
アニメのルイズちゃんが僕に話しかけてるぞ!!!よかった…世の中まだまだ捨てたモンじゃないんだねっ!
いやっほぉおおおおおおお!!!僕にはルイズちゃんがいる!!やったよケティ!!ひとりでできるもん!!!
あ、コミックのルイズちゃああああああああああああああん!!いやぁあああああああああああああああ!!!!
あっあんああっああんあアン様ぁあ!!シ、シエスター!!アンリエッタぁああああああ!!!タバサァぁあああ!!
ううっうぅうう!!俺の想いよルイズへ届け!!ハルゲニアのルイズへ届け!
0248デフォルトの名無しさん2015/06/27(土) 21:53:55.80ID:wYPgFXnx
>>245
どうかなぁ。10を聞いて1を知る人には全く理解出来ないだろうし、
1を聞いて1を知る人なら言ってることくらいは理解するだろうし、
1を聞いて10を知る人なら、同じような理由で標準モジュールのモジュールレベルで
変数の定義を多用してはいけないくらいまで理解するだろうけど、
聞いてきた本人がその後分かったとも何とも言ってこないし、
ハゲに夢中になってるからなぁ。

ま、質問の内容からして、前戻り値に参照型が返せない言語は糞だと言ってたC++使いだと俺は思ってるけど、
今回はいつも一緒に登場するコード厨キャラが出て来てないからそこは何とも言えないかな。
0249デフォルトの名無しさん2015/06/27(土) 22:11:34.57ID:GuUT6nNb
1を聞いて10を知るのは大体思い込みの激しいジジイに過ぎないのでは?
0250デフォルトの名無しさん2015/06/27(土) 22:19:16.76ID:wYPgFXnx
>>249
いや、むしろ俺みたいなじじいの方が頭が堅くて呑み込み悪いし応用も効かない。

基本若い奴の方が多少先走る感はあるものの、理解も早いし応用力もあるよ。
0251デフォルトの名無しさん2015/06/27(土) 22:37:46.20ID:GuUT6nNb
>>250
1を聞いて10を知るなんて、単に潜在的にわかっていたことを初めて意識しましたって現象か、もしくは分かってないのに分かったと思い込むジジイ。
それはともかく、能いは値、参照は参照なんで、型とは直交する概念。
0252デフォルトの名無しさん2015/06/27(土) 22:39:12.44ID:GuUT6nNb
あれ、
× 能いは値
○ 値は値
0253デフォルトの名無しさん2015/06/27(土) 22:42:40.13ID:pIBbDm3i
アタイはアンタと性交するからね!
0254デフォルトの名無しさん2015/06/27(土) 22:44:12.46ID:WGuYPvoX
>>251
ちょっと何言ってるか分かりませんね
0255デフォルトの名無しさん2015/06/27(土) 22:54:13.85ID:GuUT6nNb
>>254
直交もわからないの?
0256デフォルトの名無しさん2015/06/27(土) 22:56:12.48ID:pIBbDm3i
直交を知る男現わる!
0257デフォルトの名無しさん2015/06/27(土) 22:56:24.38ID:WGuYPvoX
直交が分からないんじゃなくてそれはともかく以降の文章の意味が分からない
0258デフォルトの名無しさん2015/06/27(土) 23:06:36.52ID:GuUT6nNb
>>257

型Aに対してAの値の型とAへの参照の型両方がある。Aが何であっても同じ
と言ってる。
それに対して、AがIntegerのような基本型の場合とクラス型との場合では本質的に違うんだ、
と主張してる人たちがいる。しかも言語によらずそうだと思っている模様。
0259デフォルトの名無しさん2015/06/27(土) 23:09:00.59ID:wYPgFXnx
>>258
で、どっちだと思う?
0260デフォルトの名無しさん2015/06/27(土) 23:14:56.51ID:WGuYPvoX
>>251
>それはともかく、値は値、参照は参照なんで、型とは直交する概念。

なんかそれと>>258で言ってる今まで色々言われて来たことって、
関係あるように見えてリンクしてないんで何が言いたいかよく分からないんですケド?

結局何が言いたかったの?
0261デフォルトの名無しさん2015/06/27(土) 23:15:44.99ID:GuUT6nNb
>>259
任意の型に値と参照の両方があるというのは単に事実だから何も「思う」ことはない。
問題は後者の主張に根拠が出てこないこと。>>233は悪いけどトンチンカン過ぎ。
0262デフォルトの名無しさん2015/06/27(土) 23:35:18.81ID:pIBbDm3i
おまえが直交とか言いだすから悪いんやで
0263デフォルトの名無しさん2015/06/27(土) 23:39:55.57ID:wYPgFXnx
>>261
ごめん、俺もあなたが何を言いたいのか、何をどこまで理解してるのか分からなくなった。

任意の型に値と参照の両方があるってどういうこと?
例えばインスタンスの生成を行わないString型やInteger型は値型、インスタンスは参照型って
どちらかになるんであって、任意の型一つで両方の特性をもつ型は少なくとも俺は知らない。どの型?

あと>>233の領域の話に関してトンチンカンだと言うのであれば、
もう少しコンピューター自体の本を読むなりネットで調べるなりしてパソコンの基礎知識自体を身につけた方がいいと思うよ。

特にスタック領域なんてハード、ソフトどちらで制御してるにしても概念的には同じだし、
遠い昔のパソコンどころか、ファミコンにすらある概念だからね。ていうか載ってないの見たこと無いし。
0264デフォルトの名無しさん2015/06/27(土) 23:57:22.19ID:Q5FOX3Kq
Dim A as Integer
Dim B as MyClass

Aを読み出す時はimmをEAXに格納して返し、
Bを読み出す時はフェッチして実行した結果をEAXに格納して返すから即値と関数じゃ扱いが違って当然なんだけど、
そういう認識がすっぽ抜けてるって事でいいの?
0265デフォルトの名無しさん2015/06/27(土) 23:57:39.37ID:PyizvsFG
>>261
「値は値、参照は参照なんで、型と直交する概念」なのに、
「任意の型に値と参照の両方があるのは単に事実」って、
言ってることが支離滅裂じゃない?

1を聞いて10を分かったと思いこんじゃった?
0266デフォルトの名無しさん2015/06/28(日) 00:03:41.06ID:wBeyl/iu
>>263
もともとは参照に「なれる」型とそうでない型との区別の話だったんだよ。
ひとつの型で値と参照の両方の特性を持つわけじゃない。
>>233はこの話に無関係だがらトンチンカンと言ってるんで、スタックだのヒープだの先刻承知だよ。
>>233はまずクラス型がスタックに置くのが憚られるほど「大きい」なんて前提を置いてるみたいだけど、データインスタンスかなんかとごっちゃになってるんじゃない?
普通クラスのインスタンスなんてせいぜい数十バイトのものだろ。
0267デフォルトの名無しさん2015/06/28(日) 00:05:26.80ID:ljCE11NJ
>>264
フェッチと言うと意味が広域になるから判断付け難いけど、
アセンブラやCで言う間接参照だと言うならほぼそれで合ってる。
0268デフォルトの名無しさん2015/06/28(日) 00:07:38.82ID:wBeyl/iu
>>264
それは特定の言語固有の仕様でしょ。
そういうのは初めから認めている。
>>225-226 を読んでくれ。>>226氏は言語に関係なく基本型とクラス型とで「本質的な違いがある」と主張しているのでは?
0269デフォルトの名無しさん2015/06/28(日) 00:12:01.68ID:wBeyl/iu
>>265
任意の型Aに対して、Aそのものの型とAへの参照型があると言っているだけ。
intに対してintそのものとint&がある、
それを「両方ある」と表現した。
0270デフォルトの名無しさん2015/06/28(日) 00:18:49.92ID:F7aWi8CN
>>269
VBAにintなんて型は存在しないんですが、それは・・・
0271デフォルトの名無しさん2015/06/28(日) 00:45:52.22ID:ljCE11NJ
>>266

>もともとは参照に「なれる」型とそうでない型との区別の話だったんだよ。

だから参照に「なれる」型って何?
型はその時の気分で参照型になれたり値型になれたりするものだと思ってるの?
何の言語?ひょっとしてまたC++か!

後、容量の話は前後逆になっている。
例えばクラスと構造体の場合、他にも制約は色々あるが、容量は16バイト未満のクラスは、構造体にすることを検討しろとMicrosoftも言っている。
つまり、用途で使い道を分けろと言ってる訳だ。

https://msdn.microsoft.com/ja-jp/library/ms229017(v=vs.100).aspx

別にそれを無視して小さなクラス作ろうが、大きな配列や構造体作ろうが、
それで処理が重くなろうがどうなろうが、そんなのはそっちの勝手だ。
こっちは峻別する必要があるか聞かれたから答えただけだ。後は勝手にしろ。

ヒープエリアとか知っているとか言ってたくせに、根拠が無いとか、いちゃもん付けてるようにしか見えない。

これだからC++やっててここに来てる奴って嫌なんだ。
聞いてきた癖に教えると、絶対「分かった」とは言わない。無視するか否定するかのどちらか。人としてちょっとどうなんだろうと思うよ。
0272デフォルトの名無しさん2015/06/28(日) 00:46:00.61ID:IJkReOHB
何の議論をしたかったのかしらんが、アセンブラやCのレベルでの参照と
VBA(やVBやC#)での参照型とを同じに語るとか議論にならん

元の質問者はまだいるのか?
論議したかったのはVBAの言語仕様の思想なのか?
0273デフォルトの名無しさん2015/06/28(日) 01:01:18.14ID:Lt0oVZOg
>>272
別にお前さんが議論のその部分に参加する必要はない。
〜のようなことなんじゃないの?という例えにたまたま俺の方に知識があったから
それに答えただけだ。
VBAではそもそも参照型と値型できっちり別れているんだから議論の余地などない。
0274デフォルトの名無しさん2015/06/28(日) 01:10:50.67ID:wBeyl/iu
>>271
俺が何を聞いたというのだ?
俺が元々言ったのは>>209>>211>>225だ。初めからVBAのことは理解した上で、でも「変だよね」「意味ないよね」と文句を言っている。それ自体はいいだろ?
それを>>222とか>>226が「理解」の話にすりかえた。
0275デフォルトの名無しさん2015/06/28(日) 01:16:05.76ID:F7aWi8CN
>>274
とりあえず値型と参照型っていうのが何なのかがネックになってるんで、
その辺りの宣言なり実装なりをVBAのコードで見せてくれませんかね。
0276デフォルトの名無しさん2015/06/28(日) 01:23:19.92ID:ljCE11NJ
>>274
だから変だし意味があるって言ってる。
根本的な理解がすっぽ抜けてたのも確かだし、
それについての説明を求めて来たのもそっちだ。
説明受けた後で知ってるのどうのと後出ししてきて、結局のところ
どう言う仕組みになっててどう言う用途の場合、どう使うものなのか、
全て説明して、だから使い方を峻別するべきだと結論まで出しても
現時点で理解出来ない上に話をそらしているとか訳の分からないことを言い出す。

一体何がしたいんだ?
0277デフォルトの名無しさん2015/06/28(日) 01:31:10.42ID:IJkReOHB
>>274
>初めからVBAのことは理解した上で
もしお前がちゃんとVBAでの違いと使い分けをちゃんと理解した上で、なぜその二つがあるのか聞きたかったのなら
ちゃんとそう書くべきだった(このスレが適切だったかどうかも疑問ではあるが)
すくなくともお前の書き方では、違いや使い分けが理解できてるとは思えないから「理解」の話になったわけで
議論をすり替えたわけではないと思うぞ
0278デフォルトの名無しさん2015/06/28(日) 01:36:07.87ID:wBeyl/iu
>>276
どこの理解がすっぽ抜けているんだ?ぜんぜん的はずれだよ。
実際出てきた説明も「峻別すべき」理由付けには全然なっていない。
現時点で峻別されていることを知った上で文句を言っている。単純に不便だからだ。
0279デフォルトの名無しさん2015/06/28(日) 01:43:23.20ID:wBeyl/iu
なによりも俺は>>225で「VBAとかJavaでは違うというのは理解できる。」と断っている。
それなのに「根本的なところの理解ができていない」と貶されたら、言語や環境を越えた原則があってそれを破っている、と言われたようにしか思えなかった。
0280デフォルトの名無しさん2015/06/28(日) 01:48:52.32ID:F7aWi8CN
もしかして全ての言語に共通する仕様としてC++のint&に当たるものがあると考えてる?
0281デフォルトの名無しさん2015/06/28(日) 02:02:11.55ID:wBeyl/iu
>>280
無いから不便だ、って不平だ。
参照を返せないんだよ。
0282デフォルトの名無しさん2015/06/28(日) 02:06:09.90ID:F7aWi8CN
>>281
参照を返せないってどういう事?
ByRefで参照渡しすれば中身を変更した変数やクラスが呼び出し元で手に入るよね?
0283デフォルトの名無しさん2015/06/28(日) 02:11:12.93ID:IJkReOHB
>>279
>なによりも俺は>>225で「VBAとかJavaでは違うというのは理解できる。」と断っている。
あの流れで、もとになってる>>221が Integer とMyClass型に ってのがなぁ
値型と参照型の区別がついてないと思われても仕方ないと思うぞ
せめてそこで値型と参照型にって言っとくべきだったな

で、なんで違うかは言語の設計思想と実装の都合上の問題だと思うが
大きくは
 パフォーマンス
 リソース(主にメモリ)の利用効率
 互換性
の3点だろ
これ以上はマイクロソフトの中の人でもないと何とも言えんのじゃないかね

そろそろこの話題終わりにしてくれ
0284デフォルトの名無しさん2015/06/28(日) 02:22:00.77ID:IJkReOHB
>>281-282
別スレか前スレだったか?
その流れは飽きたからやめて欲しい
思わせぶりな事言うだけだった奴もいたな
0285デフォルトの名無しさん2015/06/28(日) 02:25:17.19ID:Lt0oVZOg
>>278
どこの理解がすっぽ抜けてるか説明するとどうせまた話そらしてるとか的はずれだとか言い出すんだろ?全く意味がないよ。

最初に話した通り、普段頻繁に使われているところにそう言った大きいものをしまわない。これは昔からある概念。

そのため、後々になってヒープエリアという概念が出来てインスタンスをヒープエリアに持っていってる訳で、
インスタンスならクラスからいくらでも生成される可能性がある訳で。
それを役割の違う基本型と同じに考えて扱おうというのは理解出来てないとしか言いようがない。

そうなると、あなたみたいにちゃんと理解出来てない人が適当なところにしまっちゃったりするから
C++からC#に移行したときにも、取り入れられたのかもと俺は思ってる。

ま、もういいや。納得行かないなら峻別しないで使えばいいさ。
0286デフォルトの名無しさん2015/06/28(日) 05:31:47.55ID:OeLQkQMR
一体全体何が原因でこんな流れに成っているんだ?
0287デフォルトの名無しさん2015/06/28(日) 07:59:50.07ID:VTU14O1b
参照型を覚えたばかりの的はずれな説明をしたがる人が話をややこしくしてる
0288デフォルトの名無しさん2015/06/28(日) 08:18:07.25ID:Lt0oVZOg
>>286

これまでのあらすじ

「C++って値型とか参照型なんて無駄なもん持ってなくて、
変数なら何でも値と参照が取れちゃうスゲー言語なんだぜ、VBAにはそんなのねーだろw」

と、自慢したかったCプラプラーが鼻っ柱へし折られて悔しくて暴れまわってる。

次回予告

「C++って参照先に参照もたせたりできるスゲー言語なんだぜ、VBAにはそんなのねーだろw」と自慢しにやってくる
0289デフォルトの名無しさん2015/06/28(日) 08:35:55.56ID:VTU14O1b
話をすればいつでもすぐに現われる頓珍漢w
0290デフォルトの名無しさん2015/06/28(日) 08:37:50.47ID:X2j1Txu9
どうでもよすぎこの流れ
VBA関係無いじゃん
よそでやれ
0291デフォルトの名無しさん2015/06/28(日) 08:38:39.61ID:Lt0oVZOg
頓珍漢。

いい響きだな。昭和のニオイがプンプンするw
0292デフォルトの名無しさん2015/06/28(日) 08:45:23.63ID:6HPl6VuL
>>271
> https://msdn.microsoft.com/ja-jp/library/ms229017(v=vs.100).aspx
それ C# の話
C++ は構造体とクラスはほとんど違いがなくて、クラスのインスタンスをスタック上に作成することもできる
>>233 は標準モジュール云々と書いたり色々突っ込みどころが多すぎなのでスルーでいいと思う
0293デフォルトの名無しさん2015/06/28(日) 09:05:56.48ID:Lt0oVZOg
>>292
アホか?
VBAなら静的クラスは標準モジュールが該当するだろ。
ここはVBAのスレなのになんでC++目線で説明しなけりゃならないんだよ。
その時点ではまだ相手がCプラプラーだと確証だって持てないだろ。

つまり、Cプラプラーはアレか、VBAスレでも俺のために最初から全てC++目線で書いとけってことか。

ならそう言うスレ立ててそこでやってくれよ。
0294デフォルトの名無しさん2015/06/28(日) 09:13:23.18ID:OeLQkQMR
どうでもいいけど、
C++とVBAを比較して議論して何が得られるんだ?
何を期待しているんだ?
オラにはサッパリ分からん。まあ、好きにしてくれ
0295デフォルトの名無しさん2015/06/28(日) 09:16:27.24ID:cPvRhGo9
>>293
だから VBA の話と C# の話混ぜて話すなよってこと
まあ、本人もよく理解できてないんだろうけど
0296デフォルトの名無しさん2015/06/28(日) 09:21:41.97ID:Lt0oVZOg
>>294
そりゃそうさ。
前から「VBAに出来ないこんなことが出来るC++SUGEEE」って暗に言いたいのが見え見えなんだもの。

特にそれが分かることが目的じゃないんであればそうなるよ。
0297デフォルトの名無しさん2015/06/28(日) 09:27:55.17ID:Lt0oVZOg
>>295
はい?
それを言うなら「VBA」と「C#」じゃなくて
「VBA」と「.Netフレームワーク」だろ?
そこ、なんのページだと思ってるの?

とてもC++の考え方ばかりで語ってる奴の言う事とは思えないなw
0298デフォルトの名無しさん2015/06/28(日) 09:34:12.52ID:SnEMphd5
>>285
>そう言った大きいものをしまわない

自分はその容量の話はすこし疑問に感じた。
スタックを逼迫させるような大きなオブジェクトっていう点。せいぜい数十バイトだというのは例の彼が言ってる通りだから。
0299デフォルトの名無しさん2015/06/28(日) 09:34:20.19ID:Lt0oVZOg
Cプラプラーが言うことはデタラメばっかりだな。
前も

645 名前:デフォルトの名無しさん :2015/05/05(火) 08:03:11.47 ID:Gy6WgfTU
それならエクセルが直接コントロールできるC++14でいいじゃないか

とか言ってて、結局COM介在させなかったら出来なかったりするしな。
0300デフォルトの名無しさん2015/06/28(日) 09:38:31.63ID:VTU14O1b
>>299
はっきり言おう。お前が頓珍漢なだけだ。
0301デフォルトの名無しさん2015/06/28(日) 09:40:36.43ID:Lt0oVZOg
>>298
で、どうしまうの?
その>>285でも書いたけど、インスタンスはクラスがあれば幾らでも生成出来るんだけど。
生成する度にスタックエリアに実体を詰め込むの?
0302デフォルトの名無しさん2015/06/28(日) 09:46:55.00ID:SnEMphd5
>>301
たとえばDoubleと同じ8バイトのクラスがあるとして、
Dim a As Double, b As Double, c As Double...と生成していくのと、
クラスのインスタンスを x,y,z,...と生成するのではスタックエリアに対する負荷って違うの?
0303デフォルトの名無しさん2015/06/28(日) 09:47:09.48ID:cPvRhGo9
>>297
ああ、.NET Framework だったな
で? それがどうかしたのか?
VBA に関係ないことには変わりないと思うけど?
0304デフォルトの名無しさん2015/06/28(日) 09:48:23.84ID:Lt0oVZOg
>>300
なら>>299のどこが頓珍漢なんだか言えるか?

にしても、Cプラプラーって妙に「頓珍漢」って言葉乱発するな。

普段、言われてるんだろな。
0305デフォルトの名無しさん2015/06/28(日) 10:20:04.92ID:VTU14O1b
>>304
どこもクソもCプラプラーガーとか今の話題には一切関係ない。
そういうズレたやつの事を頓珍漢て言うんだぜ。

ちなみに、スタックガーとかヒープガーも元の話題とは金輪際関係ない。
0306デフォルトの名無しさん2015/06/28(日) 10:30:02.01ID:Lt0oVZOg
>>305
別に末尾に「ガー」なんて付けた覚えはないが、どこかの思想が偏っているスレに常駐でもしてんの?

参照型、値型の話で、格納される場所によって挙動が変わるのに関係ないとか、
本当に頓珍漢が好きなCプラプラーさんは、頓珍漢なこと言うのも大好きなんですね。
0307デフォルトの名無しさん2015/06/28(日) 10:33:06.96ID:VTU14O1b
>>306
元々お前の理解の範疇を越えた話なんだから、無理矢理くちばし突っこまなくてもいいんだよ。
0308デフォルトの名無しさん2015/06/28(日) 10:37:46.18ID:wBeyl/iu
>>301
>インスタンスはクラスがあれば幾らでも生成出来るんだけど。

基本型だって宣言のたびにスタックかヒープに生成されるんだから、それはおかしな主張だな。
0309デフォルトの名無しさん2015/06/28(日) 10:41:09.88ID:Lt0oVZOg
>>307
もう既に論理的な話も出来ないんですね。
頓珍漢のCプラプラーさんw

ほら、早く304にも答えないと、頓珍漢ってただの逃げ口上だってバレちゃいますよw
0310デフォルトの名無しさん2015/06/28(日) 10:41:20.53ID:wBeyl/iu
Dim i As Integer はスタック上だし、
Dim arr() As Integer の中身はヒープに取られるだろう。
0311デフォルトの名無しさん2015/06/28(日) 10:45:52.60ID:Lt0oVZOg
>>308
うわ、終いには宣言と生成まで一緒くただよw

流石頓珍漢さん。考えることが違いますね。
0312デフォルトの名無しさん2015/06/28(日) 10:48:00.27ID:Lt0oVZOg
>>310
何の言語の話をしてるんです?
またC++か!w
0313デフォルトの名無しさん2015/06/28(日) 10:49:07.49ID:wBeyl/iu
さすがにバカ過ぎて相手をするのが疲れる。
0314デフォルトの名無しさん2015/06/28(日) 10:55:36.89ID:Lt0oVZOg
>>313
何でVBAのIntegerの配列がクラスに配置されることもなしにヒープエリアに展開されるのか教えてくれよw
0315デフォルトの名無しさん2015/06/28(日) 11:17:18.31ID:6HPl6VuL
>>306
> 参照型、値型の話で、格納される場所によって挙動が変わる
VBA の用語でなにがどう違うのか書いてみてよ
0316デフォルトの名無しさん2015/06/28(日) 11:29:33.84ID:SnEMphd5
>>314
Integerの配列の中身はSafeArrayCreate関数で領域確保されるけど、MSDNでは
allocates and initializes the data for the array
と書かれているから、ヒープに取られるんじゃないですかね?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221234(v=vs.85).aspx
0317デフォルトの名無しさん2015/06/28(日) 12:20:12.63ID:wBeyl/iu
>>311
基本型なら宣言すればデフォルト値で生成されるだろ。厳密なタイミングは知らんが。
Dim i As Long
とすれば4バイトスタックにLongのインスタンスが発生する。
それとも使わなきゃ最適化で消えるとかそういう主張か?
0318デフォルトの名無しさん2015/06/28(日) 12:23:50.22ID:z6q4unEs
参照とか面倒臭いからruby使おうぜ
0319デフォルトの名無しさん2015/06/28(日) 12:38:55.07ID:VTU14O1b
VBAみたいな初心者用言語に値だの参照だの、くだらない型の区別をとり入れてしまったおかげで
ID:Lt0oVZOg のような可哀想なバカが大量生産されてしまった事は確かだろうな
これは、プログラミング界の悲劇と言ってもいいだろう。
0320デフォルトの名無しさん2015/06/28(日) 13:19:19.11ID:F7aWi8CN
VBAに値と参照を区別した型宣言なんてあったっけ?
0321デフォルトの名無しさん2015/06/28(日) 13:24:19.89ID:Lt0oVZOg
>>317
なんか言ってる意味が相変わらず訳分からないんだけど、生成って言葉、なんだか分かって使ってる?大丈夫?

>基本型なら宣言すればデフォルト値で生成されるだろ。

エリアに使う部分の領域が確保されて、そこにデフォルト値が設定されると言うなら分からんでもないけど、
ここで何でいきなり「生成される」の?

は?
0322デフォルトの名無しさん2015/06/28(日) 13:28:34.05ID:Lt0oVZOg
>>320
ないと思うよ。

というか、インスタンスを生成させる奴が参照型、させないのが値型になると思うけど。
0323デフォルトの名無しさん2015/06/28(日) 13:31:27.16ID:Lt0oVZOg
>>319
はいはい、頭のいい頓珍漢Cプラプラーさんは
そんな頭の悪い人達のところに来ないでC++スレに引きこもってて下さいね〜
0324デフォルトの名無しさん2015/06/28(日) 13:44:30.23ID:6HPl6VuL
>>320
引数の宣言の ByRef, ByVal の話かと思ったけど違うみたいだし >>315 の質問もスルーしてるし
生半可な知識で語って自爆してるだけにしか見えない
誰とは言わないけど w
0325デフォルトの名無しさん2015/06/28(日) 13:57:25.82ID:F7aWi8CN
>>322
機械語レベルでの仕組みの話をしてるのかと思えば「特定の言語の仕様でしょ」とか言われるし、
ヒープだのスタックだのでも話が違うって言われるから、ならVBA上での見え方の問題だと推測できるんだけど、
値渡しでも参照渡しでも無く、ただひたすら「値と参照」なるものが「峻別」されていると主張し続ける。

まず意識合わせしないと話がかみ合わないんだけど、「値と参照」に具体的に突っ込むと無視されるんだよな。
0326デフォルトの名無しさん2015/06/28(日) 14:10:13.12ID:VTU14O1b
>>322
まだやってんのかよ。お前には羞恥心という物がないのか?
まずインスタンスの意味調べてこいよw
0327デフォルトの名無しさん2015/06/28(日) 14:26:23.23ID:Lt0oVZOg
>>325
VBAでは値渡しや参照渡しとは無関係じゃないけど、他に値型と参照型と言うものが型によって振り分けられ、決められるんだよ。

それを組み合わせて引数では値型の値渡し、値型の参照渡し、参照型の値渡し、参照型の参照渡しとなるんだけど、
戻り値は値渡ししか使えないって、この間Cプラプラーが騒いでたので、
なら、参照型使えばいいんじゃないのと教えてあげたら、
今回「参照型と値型を峻別するのって変だよね」とか言い出してるから、
何で参照型と値型が存在するのか、どう言う用途で使うのか、何で峻別されているのか、
全て答えたら、話をそらしているだの、全くの検討違いだの言い出してるけど、
結局何が検討違いなのかも言わないし、終いにはバカだの罵る始末。

ようは、VBAを卑下したいだけみたいだよ。

コード厨キャラも出したし、>>326みたいな煽りもくれてるし、
まあいつものCプラプラーだから負けず嫌いなのは分かってるけどね。
0328デフォルトの名無しさん2015/06/28(日) 14:29:16.43ID:T3lgZQh9
VBAを使う理由
「だって便利なんだもん」
0329デフォルトの名無しさん2015/06/28(日) 14:32:50.46ID:ljCE11NJ
そもそもさ、VBAのスレでC++の話で引っ掻き回すやつって頭おかしくね?
0330デフォルトの名無しさん2015/06/28(日) 14:41:47.40ID:OeLQkQMR
vba vs c++論争したい奴は、今c++スレにも変なのが湧いているから
そいつと好きなだけ議論して来いよ!
0331デフォルトの名無しさん2015/06/28(日) 14:45:43.46ID:7wl/BqXR
>>330
うえぇ・・・
こんなのがいっぱいいるのかなぁ
0332デフォルトの名無しさん2015/06/28(日) 15:01:10.84ID:F7aWi8CN
コンパイル言語がどういうものなのかを理解してないと「あっちの言語は高尚で、こっちの言語は低俗」みたいな与太話を真に受けがちだよな。

>>327
値型と参照型っていう呼び方は初めて知ったわ。検索しなきゃいけなかったな。

そして一連の話は、あくまで関数の戻り値として使えないって話なのか。確かにC言語ならアドレスを返す事が出来るからなぁ。
でもそれならVBAだと値型を返してるんじゃなくて値型の値を戻り値に代入してるわけだから実装上は参照型と同じ手順を踏んでるよなぁ。
0333デフォルトの名無しさん2015/06/28(日) 16:04:03.58ID:URqhXen8
>>322
インスタンスを生成しない型ってなんだよ?お前はそういうところが根本的に理解できてないんだよ。
値型といわれるIntegerだって、変数宣言して値を代入して使えばそこにIntegerのインスタンスが発生しているんだよ。
0334デフォルトの名無しさん2015/06/28(日) 16:19:31.99ID:3j8PstlS
どうでもいい議論してるマヌケは死ぬといいよ。
ここはお前らウジ虫の議論する場ではないからwww
三流プログラマってギークフリークにこういうくだらない論争するn好きだよねぇwww

それしか誇れるものないのはよくわかったから、秋葉にでm繰り出してこいよクソども
0335デフォルトの名無しさん2015/06/28(日) 16:29:45.85ID:SnEMphd5
>>333
それはそうだし、別にヒープ上にnewして作るものだけがオブジェクトと法律で決まってるわけじゃない。
スタック上にクラスインスタンス作ってもいいけど、寿命はそのスコープに限られるよね。
VBAとかはそういうスコープ管理はプログラマの自由に委ねない言語だから。
0336デフォルトの名無しさん2015/06/28(日) 16:52:07.38ID:7wl/BqXR
>>333
ぼちぼちよそでやった方がいいよ



気持ち悪いし
0337デフォルトの名無しさん2015/06/28(日) 16:55:35.09ID:SnEMphd5
ところで>>314氏は自分の説明わかってくれたのかな...
0338デフォルトの名無しさん2015/06/28(日) 17:03:11.81ID:z6q4unEs
ところで早く死なないかな
0339デフォルトの名無しさん2015/06/28(日) 17:58:10.01ID:6HPl6VuL
>>327
> 他に値型と参照型と言うものが型によって振り分けられ、決められるんだよ。
VB.NET の話じゃないんだよね?
MSDN のどこかに書いてあるの?
0340デフォルトの名無しさん2015/06/28(日) 18:06:49.84ID:URqhXen8
>>318
ずっと昔のことだけど、MATZ氏がスタック上のオブジェクトのことについてコメントしてたのを思い出した。たしか公式サイト上だった。
いま検索しても出てこない。
0341デフォルトの名無しさん2015/06/28(日) 20:44:03.33ID:hAVUrhR0
あるセル範囲の中で
一番出現頻度が高い文字列を返す関数を作っていただけますか?

引数=Range
返り値=String

処理速度が一番短い人にはなにかプレゼントも考えています。
0342デフォルトの名無しさん2015/06/28(日) 20:45:27.16ID:hAVUrhR0
例えば、

うんこ しっこ しっこ ちんこ しっこ まんこ しっこ

という7つのセル範囲だと、しっこ、が返るような関数です。
0343デフォルトの名無しさん2015/06/28(日) 20:54:16.01ID:/nDPxHEX
>>341
できた 簡単やろ
プレゼントが決まり次第公開するよ
0344デフォルトの名無しさん2015/06/28(日) 21:03:42.72ID:z6q4unEs
VBAでも余裕だしワークシート関数だだけでも余裕だな
プレゼント何
0345デフォルトの名無しさん2015/06/28(日) 22:01:01.29ID:hAVUrhR0
まずは回答をお聞きしましょうか。
試さないとどれが一番処理速度が速いかわからないので。
0346デフォルトの名無しさん2015/06/28(日) 22:19:53.72ID:RJYMt8ab
Function しっこ()
  しっこ = "しっこ"
End Function

これより速くしっこを返す関数を作るのは不可能
0347デフォルトの名無しさん2015/06/28(日) 22:28:57.66ID:URqhXen8
>>345
もうちょっと条件を付けてよ。
ループの使用禁止とか、ドSなやつ。
0348デフォルトの名無しさん2015/06/28(日) 22:52:28.34ID:hAVUrhR0
>>346
こら0点だ。
0349デフォルトの名無しさん2015/06/28(日) 22:53:06.94ID:dOcFp/SG
>>345
http://blog-imgs-53.fc2.com/p/a/n/panpilog2/Y2lT23y.gif
0350デフォルトの名無しさん2015/06/28(日) 22:54:35.18ID:hAVUrhR0
>>347
お、スキルのあるっぽいかた登場かな
条件はないですよ、どんなことしてもokです。
0351デフォルトの名無しさん2015/06/28(日) 22:56:41.67ID:hAVUrhR0
>>349
まんこ だ
0352デフォルトの名無しさん2015/06/28(日) 23:23:25.78ID:z6q4unEs
>>350
ほらよ

require 'win32ole'
def mode(range)
range.Value.flatten.group_by{|x|x}.max_by{|k,v|v.size}.first
end
app = WIN32OLE.connect('Excel.Application')
mode(app.Selection)
0353デフォルトの名無しさん2015/06/29(月) 00:17:51.71ID:QSQZKtdk
>>333
VBAでIntegerにインスタンスが出来るって初めて聞いた
.Netなら全ての型はObject型を継承してるから分かるけど
どこかに載ってる?
0354デフォルトの名無しさん2015/06/29(月) 01:39:35.86ID:RWXntF+6
>>353
>>299と同じようにいつものデタラメだと思うよ。悔しまぎれの。

或いはこのプラプラーはVBAのスレだろうがなんだろうがC++の考えで全て押し通せると思ってるアスペか。

逆にちゃんと載ってるところ晒せたら大したもんだと思うわ。
0355デフォルトの名無しさん2015/06/29(月) 06:37:01.76ID:EM+B505w
ここってインスタンスとか生成とか用語を定義しないまま言い争う遊び?
0356デフォルトの名無しさん2015/06/29(月) 06:56:22.06ID:QSQZKtdk
VBAのスレなんだからVBAで言うところのインスタンスだと思うけど
普通に考えて
0357デフォルトの名無しさん2015/06/29(月) 07:14:49.86ID:bvi+oDiY
>>301 >>322でのLt0oVZOgの考え方が奇妙だ
0358デフォルトの名無しさん2015/06/29(月) 07:19:17.63ID:RWXntF+6
>>356
無駄だよ。結局>>354で言ってた後者に該当して、
一生懸命誤魔化すために定義をすり替えようとしてるの見え見えじゃん。
いつものようになんだかんだ御託を付けて煙に巻こうとする
それがCプラプラークオリティ。
0359デフォルトの名無しさん2015/06/29(月) 08:01:33.83ID:s7kCM2zI
>>356
定義あったんか
0360デフォルトの名無しさん2015/06/29(月) 08:06:21.49ID:2N/zEhbN
>>358
お前は馬鹿なんだから黙ってろってw
0361デフォルトの名無しさん2015/06/29(月) 08:28:14.08ID:TRRTpdMk
少なくとも >>339 への回答がない間は、知ったか君がオレオレ定義で吹いてるだけにしか見えない
まあ、>>316 みたいな具体的な回答をスルーしてることで実力はお察しレベルなんだろうけど
0362デフォルトの名無しさん2015/06/29(月) 08:56:57.99ID:s7kCM2zI
ちょっと検索した感じじゃ特に定義された用語じゃなさそうだね。「インスタンス」
VBAもしープラプラも全面オブジェクト指向してないから、これの最初の段落のことしか言えなそう。
http://sp.e-words.jp/w/%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9.html
Wikipediaの解説の方は「問題点あり」になってる。
0363デフォルトの名無しさん2015/06/29(月) 11:50:32.15ID:s7kCM2zI
>>361
まあSafaArrayCreate 関数が、ってはその通りなんだけど、可変長のものをヒープ以外のところに確保できると思ってたのかねえ>>314は。謎だ。
0364デフォルトの名無しさん2015/06/29(月) 12:37:41.33ID:TRRTpdMk
>>362
まあ、ヒープ上に作られた実体をインスタンスって言ってるんだと思うけど...
まあ、オレオレ定義でいいからちゃんと定義晒してもらわないとなんとも言えんわな

>>363
実装方法知ってたらまずそこ思うよね
0365デフォルトの名無しさん2015/06/29(月) 16:41:03.08ID:s7kCM2zI
師匠のライブラリ使えばある程度解決するんだよ
0366デフォルトの名無しさん2015/06/29(月) 16:53:34.08ID:ZS1C/3AC
>>365
師匠って誰だよ?
0367デフォルトの名無しさん2015/06/29(月) 18:13:06.76ID:n/Ot7XJM
定義の話をするなら、そもそも
VBAの公式の資料で値型/参照型という用語をみたことがないんだが
0368デフォルトの名無しさん2015/06/29(月) 19:16:29.87ID:s7kCM2zI
話は変わるけど64bitのExcel2010のイミディエイトペインで 2.5^ 2 とか巾乗計算するとExcelが落ちない?
2.5と^の間にスペースを挟めば大丈夫なんだけど、そうしないと落ちる。
0369デフォルトの名無しさん2015/06/29(月) 19:53:15.12ID:UcQNe/b5
>>367
「VBA 値型」で検索したらMSDNで
ttps://msdn.microsoft.com/ja-jp/library/dd314344.aspx

が出てきたけどよく見たら.Netだった紛らわしい。
0370デフォルトの名無しさん2015/06/29(月) 21:42:09.79ID:/k/OkC/p
>>369
それとか、
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm
とか見て早とちりしたんだろうなって思う
このページも VBA 参照型 でヒットするくせに VB6/VB.NET が混在してて分かりにくいし
0371デフォルトの名無しさん2015/06/29(月) 21:46:02.65ID:2N/zEhbN
話は変わるけど今何の話してるの?
0372デフォルトの名無しさん2015/06/29(月) 22:10:14.97ID:s7kCM2zI
いままでに見た最も痛いVBAコードの話
0373デフォルトの名無しさん2015/06/29(月) 22:22:02.06ID:rq2QsCgv
・Option Expicitがない
・日本語で型指定なし変数宣言
・1サブプロシージャ1000行
・ボタンがたくさんあるのにModule1個
痛くはないけど、解析がとにかく辛かった
0374デフォルトの名無しさん2015/06/29(月) 23:18:19.68ID:s7kCM2zI
ループカウンタはLongで、あとは全部Variant。だけどそうするしかないコード。
0375デフォルトの名無しさん2015/06/29(月) 23:22:41.60ID:3jcGZRUX
Integerはだめか?
0376デフォルトの名無しさん2015/06/30(火) 00:08:24.22ID:oheNslA5
intのほうが遅いという罠
0377デフォルトの名無しさん2015/06/30(火) 07:51:30.16ID:ZBtEU6fC
まじかよやっぱりVBA糞だわ
0378デフォルトの名無しさん2015/06/30(火) 07:59:10.10ID:cuvzrYNR
Variantは遅い、とかも含めて実用上の観点ではほとんど都市伝説の域ではないか。
0379デフォルトの名無しさん2015/06/30(火) 08:15:01.29ID:+uB1KRi8
>>378
Cell とかのアクセスの方が全然遅いし、そもそも Variant で遅いとか言うほどデータ量でかいなら Access とか SQL-Server 使うべきだしね
地味にいまだに 64KB 制限あったりするし w
0380デフォルトの名無しさん2015/06/30(火) 09:40:46.17ID:GcuTOY9X
>>379
「VBA 64kb制限」でぐぐってみたら、小学生並みの文章のgoo質問が出てきてすっかり萎えた。
0381デフォルトの名無しさん2015/06/30(火) 19:46:24.84ID:K4kCbRr+
アクセスって使えるのか?
エクセルと同じデータ持たせて何十倍ってデータ量になって実用に耐えないと感じた記憶しかないんだが。
0382デフォルトの名無しさん2015/06/30(火) 20:22:54.40ID:YayzGG6j
Excelでデータ管理してるよりはまだマシ
Excelだけじゃ集計処理とか大変だし
SQL使えないし、コード突き合わせもクエリで一発
自分だけ使う分ならAccessで十二分
ただし複数人共有で使うのは論外
0383デフォルトの名無しさん2015/06/30(火) 21:10:44.20ID:I4Ac0QOz
>>381
Excel と同じデータで mdb が xls の何十倍になってるならなにか間違えてる
0384デフォルトの名無しさん2015/06/30(火) 21:11:03.98ID:Ws6hqNxp
>>381
確か1Mくらいまで使えたような
0385デフォルトの名無しさん2015/06/30(火) 21:26:58.91ID:Ws6hqNxp
>>382
アクセスと同じようにJet4.0使うならExcel のシートにもSQL投げられるよ。
それどころかフォーマットさえしっかりしていればCSVにだって投げられる。
0386デフォルトの名無しさん2015/06/30(火) 22:16:11.34ID:BiTNAw1o
そもそもデータの持ち方として、テーブル形式はもはや時代後れ。
xmlとかjsonとかが主流になるよ。
SQLは性能劣化とバグの温床だし。
SQLちょいと書き直すと処理能力10倍とかざらだから。
0387デフォルトの名無しさん2015/06/30(火) 23:01:31.71ID:fROSMXtx
VBAでセルに数式を代入する場合、数式を文字列で代入すればよいですが、
連想配列をセルに代入する場合は、どのようにコードを書けばよいのわからず、ハマっています。
手で入力する場合の、Ctrl+Shit+Enterをどうやればいいのか...
VBAで連想配列処理を行うのではなく、連想配列式をVBAでセルに代入したいのですが、やり方がわからない。。
詳しい先輩方、ご指導くださいませ。
0388デフォルトの名無しさん2015/06/30(火) 23:18:25.32ID:fROSMXtx
自己解決しまぢた。
FormulaArrayプロパティで設定するんですね。

失礼致しました。。
0389デフォルトの名無しさん2015/06/30(火) 23:31:59.27ID:tOsGp7lH
>>388
それ連想配列じゃなくて配列数式だろ?
連想配列ってmapとかのことだぜ。
0390デフォルトの名無しさん2015/06/30(火) 23:46:00.56ID:fROSMXtx
>>389
ですね。。
なんで検索しても引っかからなくて、質問しちゃったんですね。
"配列数式"って単語がウル覚えで、
検索したら"連想配列"がいっぱいでてくたもんで...
0391デフォルトの名無しさん2015/06/30(火) 23:56:03.52ID:tOsGp7lH
VBA的にはDictionaryか
0392デフォルトの名無しさん2015/07/01(水) 01:10:32.10ID:jqNSI/h3
>>386
xamlは流行りませんかそうですか
0393デフォルトの名無しさん2015/07/01(水) 07:04:49.59ID:6h4b9tb7
SQLがバグの温床とかありえん。使う人の頭が悪いだけだよ。
0394デフォルトの名無しさん2015/07/01(水) 07:53:05.06ID:jqNSI/h3
xmlは設定ファイルとかで使うことはあるけど、
データベースとして使うのに耐えうるものなの?
0395デフォルトの名無しさん2015/07/01(水) 08:53:19.12ID:D21eOTfg
ステマっぽさある
0396デフォルトの名無しさん2015/07/01(水) 11:52:06.80ID:yoCegXat
なんだってそう  悪いのは相手 向こう 道具  おれはこれっぽっちも悪くない まちがってない!
0397デフォルトの名無しさん2015/07/01(水) 12:03:15.44ID:tJW6CsdE
>>394
全くと言っていいほど使い物にならないので、廃れましたよ。
完全敗北です。

いまじゃ、MongoDBのようなものも出てきていますしね。XMLDBが復権する
事はもうありませんよ。
0398デフォルトの名無しさん2015/07/01(水) 12:04:30.63ID:tJW6CsdE
ちなみにXMLDBの遅さは、

第三形態になったフリーザ vs ベジータの戦いみたいなもの。
もちろんベジータがXMLDBだ。
0399デフォルトの名無しさん2015/07/01(水) 12:17:10.42ID:mPxMjEr/
XMLDB ってそのままの形で扱う訳じゃないでしょ
他のプログラムが出力した XML を読み込んで処理するためのものだと思ってたけど...
要するに CSV の代替じゃないのかな?
0400デフォルトの名無しさん2015/07/01(水) 12:27:12.70ID:iTWnMbVI
おいエクセルは?VBAは?!
0401デフォルトの名無しさん2015/07/01(水) 12:33:07.87ID:D21eOTfg
>>400
セル範囲に対して
範囲.Value ってやると2次元配列が取得できて便利だね!
だけど 矩形(長方形)じゃない飛び飛びの範囲だと思わぬ結果になって罠だね!
0402デフォルトの名無しさん2015/07/01(水) 21:49:36.73ID:r6P8NuLo
>>399
過去の歴史を勉強したまえよww
0403デフォルトの名無しさん2015/07/01(水) 22:24:17.39ID:huUe7xTB
>>402
アホ晒して楽しいのか? w
0404デフォルトの名無しさん2015/07/01(水) 22:25:12.56ID:r6P8NuLo
>>403←アホの事例ですね。
0405デフォルトの名無しさん2015/07/01(水) 23:43:00.11ID:s4VVys9R
ワシはティンコを2本もっている
2本目はとっておきだ(´・ω・`)b
0406デフォルトの名無しさん2015/07/02(木) 05:03:52.50ID:D0UhKb7j
>>404
具体的な内容を書けないなら無理にレスするなよ w
0407デフォルトの名無しさん2015/07/02(木) 05:22:03.78ID:9qb5cWlQ
xml形式はその昔、「人が読めて、実装も簡単で、拡張性もあり、内容構造の変更も簡単」という利点を強調されてたな。
でも意味づけする為に修飾子が大量にくっついてくるわけだから大型のデータベースには向かないのは確かだろうな。
0408デフォルトの名無しさん2015/07/02(木) 09:37:50.18ID:CcSdJJgr
>>406
おまえなんか具体的な事書いてんの?
0409デフォルトの名無しさん2015/07/02(木) 20:19:18.42ID:RENWNoB4
シート毎(シート名は対象月)に翌月10日を指定し、指定日以降に対象シートを開いたら処理A を行う 
という動きをさせたいのですが、以下の式では、1月以降を指定月日としたシートを開くと、処理が実行されてしまいます。
(年を見ていないので当然ですが・・・)
これを回避するには、どのようにすればよいのでしょうか?

※指定月日を"年月日"にすれば回避できますが、毎年のメンテナンスが必要となるので、それは避けたいです。

Sub Sheetlock()
Dim MyMonth As String
Dim MyDate As Date '指定月日
MyMonth = ActiveSheet.Name

Select Case MyMonth
Case "4月度"
MyDate = "5/10"
Case "5月度"
MyDate = "6/10"
〜略〜
Case "12月度"
MyDate = "1/10"
Case "1月度"
MyDate = "2/10"
Case "2月度"
MyDate = "3/10"
Case Else
MyDate = "4/10"
End Select

If MyDate <= Date Then
処理A
End If
End Sub
0410デフォルトの名無しさん2015/07/02(木) 20:26:36.22ID:cgPWlYAt
>>409
指定日はDateと比べるんだから、指定日の年はDateの年を設定すればいい
指定日は終了日だけじゃなくて開始日も必要だろう
0411デフォルトの名無しさん2015/07/02(木) 20:49:29.04ID:RENWNoB4
>>410

5/10から12/10まで MyDate = year(Date)&"月日"
1/10から4/10まで MyDate = year(Date)+1&"月日" とせよ、
という理解であっておりますでしょうか?

その場合、例えば2016/1/10に"12月度"のシートを開いても、
指定日が2016+1 /1/10 となってしまい、処理は実行されないと思うのですが、、、
0412デフォルトの名無しさん2015/07/02(木) 20:50:31.63ID:9qb5cWlQ
>>409
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim oMonth As Byte, oYear As Integer, oDate As Date

oMonth = CByte(Left(Sh.Name, Len(Sh.Name) - 2)) + 1
oYear = Year(Date)

If oMonth > 12 Then
oMonth = 1
oYear = oYear + 1
End If

oDate = CDate(oYear & "/" & oMonth & "/" & 10)

If oDate <= Date Then
MsgBox "処理A"
End If
End Sub

ThisWorkbookに貼り付け。
0413デフォルトの名無しさん2015/07/02(木) 21:01:08.22ID:9qb5cWlQ
>>411を読んで「確かにそうだわ」と思って書き直し。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim oMonth As Byte
Dim f As Boolean

oMonth = CByte(Left(Sh.Name, Len(Sh.Name) - 2)) + 1
If oMonth > 12 Then oMonth = 1

If oMonth < Month(Date) Then
f = True
ElseIf oMonth = Month(Date) Then
If Day(Date) >= 1 Then f = True
End If

If f Then
MsgBox "処理A"
End If
End Sub

12月度が反応しちゃうけど「いつまで反応し続けるか」が条件にないし、年度管理しないとそんなもんかなぁ。
0414デフォルトの名無しさん2015/07/02(木) 21:04:45.30ID:9qb5cWlQ
>>413
あ、Dayの指定をテスト状態から戻して無かったわ。
下から6行目の所、

If Day(Date) >= 10 then f = True

にしといて。
0415デフォルトの名無しさん2015/07/02(木) 21:28:54.52ID:cgPWlYAt
>>411
12月ってのは、当年のなのか?前年または翌年なのか?
当年の12月なら、2016/1/10において12月度(2016/12/11-2017/1/10)はまだ到達してないから
処理が実行されないのは正常だよね
当年度の12月というのであれば、当日が4/1以降かどうかで当年か前年か切り替えないとダメだろう(年度切り替えが4/1だとして)
0416デフォルトの名無しさん2015/07/02(木) 21:39:28.39ID:R9hbfqH1
ブックに対象年度の情報がなければ正確な処理は論理的に不可能です
0417デフォルトの名無しさん2015/07/02(木) 21:59:38.14ID:cgPWlYAt
>>416
対象の年度が何らかの方法で確定できるなら、ブックに対象年度が無くても理論的には可能です
たとえば
対象の年度は現在の年度とし、現在の年度はPCの操作時の日付より確定できるときとかな
まあ、対象年度の情報はいらないが、年度に関する何らかの情報は必要かもしれんが
年度確定のための情報(年度開始日)とかな

つか俺VBAの話一切してないなw
0418デフォルトの名無しさん2015/07/02(木) 22:22:25.92ID:R9hbfqH1
>>417
それはまた随分非論理的な理論ですね。
どこかで発表されているのでしょうか、その理論は?
0419デフォルトの名無しさん2015/07/02(木) 23:49:36.87ID:PhnYLcQw
>>416
うん。俺も無理だと思った。
頭が決まってないんだから、何をもって年が始まったばかりなのか、
1周して来たのかを確定出来ないと思う。
0420デフォルトの名無しさん2015/07/03(金) 00:18:24.08ID:xQFZnjt9
どうせbook名に2015とかついてるだろうからそこから取得すれば?
0421デフォルトの名無しさん2015/07/03(金) 08:21:48.74ID:zaw8UGxR
>>420
もうそういう反吐の出るような作り方してる奴は無視でいいよ。
0422デフォルトの名無しさん2015/07/03(金) 10:14:07.01ID:bMlB0lVi
>>420
そういう解決法はありありだと思うけどなぁ。
シート名に情報入れといて抜き出すとかも。
0423デフォルトの名無しさん2015/07/03(金) 10:48:31.53ID:tIDo5nwi
マクロと一緒のディレクトリにテキストファイル置いて
「2015」とか書いて読み取るとか。
0424デフォルトの名無しさん2015/07/03(金) 11:10:15.29ID:zaw8UGxR
>>422
ドキュメントプロパティを使えよ・・・ブック名なんていい加減なもの使わないで。
0425デフォルトの名無しさん2015/07/03(金) 12:22:12.36ID:xJ8vVgP9
ファイル名は確実なアイデンティティだぞ
0426デフォルトの名無しさん2015/07/03(金) 12:26:17.84ID:vPK10GoB
別なページに「2015」って年度入れると、
その年度の月度毎のテーブル作るようにしといて、
他のページはそこを参照させるとかなら簡単、というかメンテしやすい

まあ、ページ開くとマクロ実行なんてオレは実装しないんで良いけど
0427デフォルトの名無しさん2015/07/03(金) 13:20:39.05ID:bMlB0lVi
>>424
ドキュメントプロパティの読み込みは時間かかるからね。
例えば、1000ファイルの中の処理対象100ファイルを特定するのに、Dir.glob()系の機能で
探した方が高速でしょ。

ドキュメントプロパティにしか情報が無いと、全ファイルをオープンしないと、処理対象が
わからない。

それと、hoge_2015.xlsxというファイルをコピーして2016年用のファイルを作るとき、大抵の
人ならhoge_2016.xlsxというファイル名にするはず。
ドキュメントプロパティに設定しないといけないなんて、思いつく人はほとんどいない。

ただ、ドキュメントファイル内のメタデータを活用できるツールを使ってるなら、ドキュメント
プロパティは積極的に使うのがいいと思う。
0428デフォルトの名無しさん2015/07/03(金) 14:04:17.97ID:R//i/7GN
>>422
同意
ただし、速度とかじゃなくて、大抵の利用者にとってその方が簡単で、分かりやすくて、間違いにくいから
データ量が多いなら >>423 とかもあるけど年号程度ならファイル名で充分
ドキュメントプロパティとか言ってる奴は自称℃玄人の臭いがする w
ユーザーに触らせないちょっとした設定とかを置くにはいいんだけどね
0429デフォルトの名無しさん2015/07/03(金) 14:05:48.12ID:R//i/7GN
>>408
>>402 に比べれば >>399 の方がより具体的だろ?
0430デフォルトの名無しさん2015/07/04(土) 13:21:08.55ID:U38uGtdG
しょうもないけど分かりやすいソリューションは生き残る
0431デフォルトの名無しさん2015/07/04(土) 14:34:10.54ID:WvwJxr10
>>424
次にお前は「コピペしたままプロパティ修正漏れの犯人誰だ!? コロセ」という
0432デフォルトの名無しさん2015/07/04(土) 14:47:41.85ID:n+Lf90L5
コピペしたままプロパティ修正漏れの犯人誰だ!? コロセ


はっ!!
0433デフォルトの名無しさん2015/07/04(土) 19:49:31.36ID:CDSb/b0p
居たぞ!あいつだ!
撃てー!!
0434デフォルトの名無しさん2015/07/05(日) 01:16:07.81ID:YU79Y+KK
Dim myCell As Range
myCell = ThisWorkbook.Worksheets("Sheet1").Range("A1")

このような記述の後は、その都度ブック名やワークシート名を明記しなくても、
myCellがThisWorkbookのSheet1のA1セルであることは保証されますか?
つまりブック名やワークシート名を省略しても大丈夫でしょうか?
0435デフォルトの名無しさん2015/07/05(日) 01:42:12.25ID:SLIL1g2F
Dim myCell As Range
Set myCell = ThisWorkbook.Worksheets("Sheet1").Range("A1")
これで大丈夫
0436デフォルトの名無しさん2015/07/05(日) 03:20:04.46ID:YU79Y+KK
>>435
ありがとうございました。
0437デフォルトの名無しさん2015/07/05(日) 09:04:41.96ID:vbphD8dy
あるアプリケーションソフトで
データファイルを与えたらそれを分析して画像ファイルとして出力してくれるものがあるのですが
これらの操作をVBAのコードで書いて自動化することはできますか?
0438デフォルトの名無しさん2015/07/05(日) 09:08:34.05ID:vbphD8dy
「データファイルを与えたらそれを分析して画像ファイルとして出力」の部分は
本来ならそのアプリケーションを立ち上げた状態で
ファイル(F)→開くで開いて、そのアプリに特有な操作(といってもツール→出力みたいな操作)をしないといけません。
0439デフォルトの名無しさん2015/07/05(日) 09:09:42.08ID:vbphD8dy
つまりVBAで
・あるアプリを開く
・そのアプリを操作する (メニューバーからの選択だけのわりと単純)
のコードは書けますか?
0440デフォルトの名無しさん2015/07/05(日) 09:28:22.63ID:ayYTjQLc
>>439
コマンドラインからの操作ならWScriptを介せば出来る。ただそのソフトからの出力を直接受け付ける事は出来ない。
0441デフォルトの名無しさん2015/07/05(日) 09:50:10.08ID:vbphD8dy
>>440
ありがとうございます。
ところでWScriptとはなんでしょうか?
出力はそのソフトが勝手にファイルを作ってくれるなら大丈夫でしょうか?
0442デフォルトの名無しさん2015/07/05(日) 11:30:21.63ID:XIvEwRaJ
Windows Script Host (WSH)

VBScript (VB)か、JScript (JavaScript)で、
プログラミングする
0443デフォルトの名無しさん2015/07/05(日) 14:55:03.32ID:CZs4iz8t
)))))))))))(´・ω・`)b
04444442015/07/05(日) 14:55:29.29ID:CZs4iz8t
444げっち(´・ω・`)b
0445デフォルトの名無しさん2015/07/07(火) 06:53:14.99ID:N5IK5nOl
質問です

今VB6でExcelのシートを追加して一覧を作成する処理を作ってるんですが
BookやSheetを扱うときはBookやSheet用の変数を用意してそれを使って
最後に必ず解放しないとメモリにゴミが残ると聞きました

RangeやCellsもそうしないとだめですか?
0446デフォルトの名無しさん2015/07/07(火) 08:28:55.91ID:xJTxnmtV
適当に解放は不要だと言ってみる
0447デフォルトの名無しさん2015/07/07(火) 12:33:14.63ID:L2fl7GI9
>>435
Sheet1.Range()ってやればいいのに、なんでworksheets()ってやる馬鹿が多いの?
シート名変えたら動かなくなっちゃうじゃん。
0448デフォルトの名無しさん2015/07/07(火) 12:34:16.38ID:IXfNO3Pf
シート変えても動くようにするためでしょ
0449デフォルトの名無しさん2015/07/07(火) 12:35:47.32ID:4626lywF
>>447
オブジェクト名変えたら動かなくなっちゃうじゃん
0450デフォルトの名無しさん2015/07/07(火) 12:38:02.42ID:L2fl7GI9
>>448
はw?
シート変えるなら
Sheet2って変えればいいだけでしょ、

コレクションで指定だと、存在しないシート指定してたら実行時までエラーがわからんぞ。
コンパイルで弾くようにしろって。
0451デフォルトの名無しさん2015/07/07(火) 12:40:05.65ID:L2fl7GI9
>>449
オブジェクト名変えたら動かなくていいんだよw
シート名変えて、コードないの変えるべきとこ変えないで動いてる方が問題だろw
0452デフォルトの名無しさん2015/07/07(火) 12:41:29.85ID:L2fl7GI9
動的って条件がなかったな。
そういう条件があればそれでいいよ
0453デフォルトの名無しさん2015/07/07(火) 12:42:58.35ID:L2fl7GI9
でも、この場合Sheet1をベタ打ちしてるんだからSheet1しか参照しないだろ
0454デフォルトの名無しさん2015/07/07(火) 12:43:24.00ID:4626lywF
>>451
落ち着いて自分のレス読み直してみろ
0455デフォルトの名無しさん2015/07/07(火) 12:46:45.79ID:L2fl7GI9
>>454
Sheet1って指定しときゃシート名変えても動くのしらなかった?
名前経由じゃなくてオブジェクトを直接参照してるって仕組みわかってる?
0456デフォルトの名無しさん2015/07/07(火) 12:46:47.13ID:4626lywF
まあ、そんなもんはどっちでも良いんだよ。
本当に問題があるのは、こうでなければいけないっつー凝り固まった頭。
0457デフォルトの名無しさん2015/07/07(火) 12:48:12.35ID:L2fl7GI9
>>456
学習能力がないっていうんだよ。そういうの。
プログラムに関心がないならそう言えばいいじゃん。
0458デフォルトの名無しさん2015/07/07(火) 13:48:16.88ID:xJTxnmtV
プログラムには関心があるのでMSの仕様は積極的に無視していこうぜ!
0459デフォルトの名無しさん2015/07/07(火) 16:38:29.00ID:qt5SIPya
そりゃ、Sheet1ってのはオブジェクト名であって、シート名じゃないからな
まあシートのオブジェクト名わざわざ変えるやつはそうそう居ないだろうけど
シートのオブジェクト名変えてもWorksheetsなら動くけど、Sheet1だと動かなくなるぞ
0460デフォルトの名無しさん2015/07/07(火) 18:55:06.01ID:L2fl7GI9
>>459
コンパイルエラーと実行時エラーを同じエラーで済ますのならこれ以上話すことはないです。
0461デフォルトの名無しさん2015/07/07(火) 19:05:50.43ID:PadiFETB
結局のところ、俺の中では
Worksheets(Sheet1.Name)って指定してやることで落ち着いた
0462デフォルトの名無しさん2015/07/07(火) 19:14:05.52ID:C/6MhKU5
thisworkbook以外のブックのsheet1オブジェクトってどうやって参照すんの
0463デフォルトの名無しさん2015/07/07(火) 19:22:06.93ID:kLzThONO
エクセルのシートってマクロ実行中でもユーザーが削除出来ちゃうんだぜ
怖いよねこれ
0464デフォルトの名無しさん2015/07/07(火) 21:04:00.08ID:ng2chkeI
設定シートとか、原本シートならオブジェクト名分かりやすいのにいつも変えてるわ
それ消されたら、プログラム自体動かなくなるんだし
あとworksheets("名前")って自動メンバ表示されないよね
いっぱいworksheets("名前")って書いてあると、間違えたりしないのかなと気になる
書き方って人それぞれなんだとは思うけど
0465デフォルトの名無しさん2015/07/07(火) 22:17:02.95ID:kLzThONO
シートを特定するコードはいっぱい書くものじゃないよ
0466デフォルトの名無しさん2015/07/07(火) 22:18:48.65ID:RkSJtY+g
>>455
おれは知ってるけど
sheet1だの2だの連番だと分かりにくいから名前指定する派
オブジェクト名わざわざ変えるのもメンドイし

シート名を変えるとプログラム動かなくなるから
変えないでねって、禁止すればいいだけの話
ユーザーが勝手にシート名変えられると、
統一感無いシート名になるから嫌だ
パートのおばちゃんとか変なシート名つけるんだよ
全角半角混在とか
0467デフォルトの名無しさん2015/07/07(火) 22:19:51.01ID:XzarvOcj
>>462
ThisWorkbookから別のブックを開いて参照するのなら以下の方法
手操作などで別途開いてあるブックを参照する方法はわからん

Dim bk1 as Workbook
Set bk1 = Workbooks.Open(ブックを開くための各種パラメータ)
これでブックを開く
あとは
bk1.Sheets("sheet1")で参照する
0468デフォルトの名無しさん2015/07/07(火) 23:01:33.41ID:L2fl7GI9
>>466
置換しろ。初心者か
0469デフォルトの名無しさん2015/07/07(火) 23:37:06.41ID:ZBt1Rm7d
>>466
あなたの主張の本質と関係ないところで悪いけど、データじゃなくて名前だろ?
全角半角混在なんて何も悪いことはないと思うよ。
0470デフォルトの名無しさん2015/07/08(水) 00:27:04.34ID:MD3q7WpQ
コードのリファクタリングで置換とかそれマジで言ってるの
0471デフォルトの名無しさん2015/07/08(水) 01:35:24.93ID:Jtek8cfL
そんなのリファクタリングと呼べるのか?
0472デフォルトの名無しさん2015/07/08(水) 05:58:09.06ID:dAdTeSHa
VBA弄れるヤツじゃないと修正出来ない様なエラー出しても問題ない環境ならオブジェクト名を直に選択してもいいだろうけど、
普通、VBA使うような職場だったらメッセージ出して素人でも修正可能な状態に出来るWorksheets()を使うだろうなぁ。
0473デフォルトの名無しさん2015/07/08(水) 06:36:39.00ID:20FcS8oh
>>469
シート名も本質的にはデータだよ
0474デフォルトの名無しさん2015/07/08(水) 06:48:28.72ID:6TnygTyi
>>473
であればデータ型は文字列なんだから文字列として許されるものならなんでもいい
0475デフォルトの名無しさん2015/07/08(水) 06:57:00.68ID:z3zUBBg1
>>473
視覚的に認識しやすいから名前は重要だ
Sheet1って書いてあって何を示すのかはわからないだろ?
そりゃ名前つけたくなるだろ
パートのおばちゃんが正しい

Sheetの左隅にでもルール上の連番アンカ文字列つけて
それを見て判定する様な処理を追加すれば解決する
重複は検出してエラーではじく
0476デフォルトの名無しさん2015/07/08(水) 07:19:46.04ID:Jtek8cfL
Sheet1と言うのは例えだと思うよ。

どんな作りにするかは、個人で組むなら何でもありだろうけど、
仕事なら社内での取り決めありきじゃないの?

シートの横っちょにアンカー文字付けてたって、
何のゴミだこれと思って消しちゃうパートのおばちゃんだっているかもよ。
0477デフォルトの名無しさん2015/07/08(水) 07:27:05.60ID:b3kmvtlv
ブックもシートもSetしてから使うもんだろ
基本中の基本
個人的には、小規模ならWithでも可としてる
0478デフォルトの名無しさん2015/07/08(水) 07:55:49.21ID:Jtek8cfL
>>477
なんで直接弄らないで変数に一度入れないといけないの?

基本中の基本が分からなくてごめん。
でも本当に分からないから教えて下され。
0479デフォルトの名無しさん2015/07/08(水) 08:02:24.36ID:20FcS8oh
>>475
そんな面倒なこと考えなくても重要なデータはプロテクトかければいいんだよ。

シート名は重要だからこそ、パートのおばちゃんにへんてこな名前に変えられないように
してあげるのが優しいやり方。
そもそも、基本的にマクロを含むエクセルファイルはプロテクトをかけるべきだね。
0480デフォルトの名無しさん2015/07/08(水) 10:11:14.20ID:G6HCaUBj
他人に使わせるという発想!
0481デフォルトの名無しさん2015/07/08(水) 11:28:53.11ID:NFLl29uw
至急!
Officeアップデートしたら使えなくなったよ。KB2596787かKB2920794だと思うけど。その後すぐにMicrosoft.NET Framework3.5.1の更新もあてて、最新状態だけど動かない。

「'CommandButton1'コントロールは作成されていないため、デザインモードを終了できません。」と出てきてvbaが動かないよ。

助けて
0482デフォルトの名無しさん2015/07/08(水) 12:13:25.57ID:Fjn1PRGp
>>477
なぜ、Setするのが基本なの?

set ws = thisworkbook.worksheet(sheet1.name)

は 結局sheet1と等価なものなのに。
0483デフォルトの名無しさん2015/07/08(水) 12:19:49.04ID:HWq2i8Xl
ヨソ様に使って戴くという謙虚な慎み深さ!
0484デフォルトの名無しさん2015/07/08(水) 15:53:22.41ID:HMKJDSG5
>>481
それ、最近まで有名になってた問題じゃんww

とっくに解決策でてるよ
0485デフォルトの名無しさん2015/07/08(水) 18:53:12.84ID:pxdeghu8
forguncyっていうアプリ気になるんだけど使ってる人いますかね
VBAでDBに接続して、出力するセルを指定して
既存の帳票にデータを表示するのが面倒臭くなってきたし
何よりweb化できるっていうのが気になる
0486デフォルトの名無しさん2015/07/08(水) 19:44:47.46ID:dAdTeSHa
>>482
Set WS = ThisWorkbook.Worksheets("Sheet1")

はSheet1と等価じゃないから。
というかこの話が分からないのはVBA触ったことないヤツだけだろ。
0487デフォルトの名無しさん2015/07/08(水) 20:42:07.16ID:20FcS8oh
俺はどっちかというと等価派だな
0488デフォルトの名無しさん2015/07/08(水) 20:46:23.12ID:PAkk6Hqa
>>486
等価でない理由を教えてちょーだぁ〜
0489デフォルトの名無しさん2015/07/08(水) 22:13:57.79ID:NCKypISk
質問。
小数点がピリオドじゃない言語圏で、小数を含む文字列を安全に数値に変換するとしたらどんな方法があるでしょうか。
同じソフトを流用したいのだけど、おフランスだと小数点がカンマなんだよね。。。
0490デフォルトの名無しさん2015/07/08(水) 22:45:14.03ID:85bEY6Fg
カンマをピリオドに置き換えちゃえばいいんでね?ダメかな?w
0491デフォルトの名無しさん2015/07/08(水) 23:40:21.27ID:FO1XXzvv
>>489
オプションで小数点記号と桁記号を変更できるから
おフランス式に設定した後に
=value("123.456,789")
でいいんじゃないかい
0492デフォルトの名無しさん2015/07/08(水) 23:43:19.85ID:Czg0GgmD
>>486
等価かわからないけど、こう書く派。
後から読んでわかりやすいから。

ま、書きたいようにかけ。
規約があるなら則れ。
0493デフォルトの名無しさん2015/07/08(水) 23:52:44.95ID:oZ2b660+
マジックナンバーや設定値は、プログラム中に書かずに、外部ファイルから読み出せよ。
おれは面倒だから、設定値記入用のワークシート(これだけは名前固定)を用意しているけどな。
04944892015/07/09(木) 00:41:06.11ID:AOeRDpks
ありがとうございます。

>>490
じつは自分も最初そう思った。w
でももっと安全な方法もないかな〜とここで質問させて貰いました。
ケースが限定されているので、それでもたぶん大丈夫だとは思うんだけど。

>>491
そんな設定があったのですね。
設定を変えてしまうと影響範囲が大きいかも知れないので、まずそっちを確認してみるです。
‥‥逆に、小数点の情報をプロパティから拾えれば、変換前に双方を置換で済ませられるかも。
0495デフォルトの名無しさん2015/07/09(木) 02:54:43.58ID:Vp2Vvxuo
>>486
=で比較してみろハゲ
0496デフォルトの名無しさん2015/07/09(木) 03:35:26.14ID:JlZfMmHC
>>489
試した事ないからちゃんと動くかどうかは知らんが
CCurとかのCxxx系の変換関数は、国別情報に従って変換するはず
0497デフォルトの名無しさん2015/07/09(木) 03:43:39.04ID:JlZfMmHC
>>495
=で何を比べろと?
Sheet1やWorksheetにデフォルトプロパティはなかったはずだけどなぁ
If Sheet1 = ws とかやれって言ってるの?
そもそもSetされてる変数は参照をもってるわけで
参照となにかが等価ってのがどういう状況の事を言ってるのかよくわからんが

ちなみに
Set ws = ThisWorkbook.Worksheets("Sheet1")
MsgBox ws Is Sheet1
だとTrueって表示されるんだが、これについてはどう思ってるの?
0498デフォルトの名無しさん2015/07/09(木) 04:43:53.99ID:IJ3FUG93
>>488
Worksheetの名前がSheet1である事と、オブジェクト名がSheet1である事は保証されていないから。

特に複数ファイル読み込んでバッチ処理するような時にオブジェクト名を直に指定とかしてたら、
一つでも該当のオブジェクト名が無かったらその度に止まって使い物にならない。
シート名で指定するなら最初に目的のシート名がブック内にあるかどうか探せばエラーを回避できるんで、普通はWorksheets()を使う。

真面目に解説するのがアホらしくなるくらい基本中の基本。

というか今までの流れ見てるとシートに直接コード書いちゃうヤツが結構いるのか。
ワークシートはセルに情報を書いたり消したりする度に容量が増えるから定期的に新しいシート作ってコード全て移すメンテナンスが必要になるぞ。
0499デフォルトの名無しさん2015/07/09(木) 06:09:50.02ID:4VH0pnre
>>497
ああ、演算子の等値比較とか等価比較の事だと勘違いしちゃったんだね。
でも、今は言語のシンタックスを論じてる訳ではないからそういう区別はいらないよ。
普通は、等値=等価という意味で使って問題ない。
0500デフォルトの名無しさん2015/07/09(木) 06:15:21.28ID:0cZHnh39
>>498
>ブックもシートもSetしてから使うもんだろ

と、

>Worksheetの名前がSheet1である事と、オブジェクト名がSheet1である事は保証されていないから。

は、全然関係無さそうな気がするなぁ。どっちも変えられるのこそ当たり前の話だし。

そもそも直接Objectを設定したり、その名前を使うと言うのなら
Objectが無い時点でコンパイルエラー起こすからその場ですぐ判る訳だし。

そこを踏まえて何で基本中の基本なのかもう一度説明して欲しいなぁ。
0501デフォルトの名無しさん2015/07/09(木) 06:32:59.88ID:M1CA7AhU
>>498
シートに直接コードを書くとはどういう意味ですか?
それがよくないのなら、どうすればよいですか?
0502デフォルトの名無しさん2015/07/09(木) 06:58:14.40ID:0cZHnh39
シートのイベントって標準モジュール側でも拾えるんだっけ?
0503デフォルトの名無しさん2015/07/09(木) 07:03:09.36ID:yvZx6GXv
>>502
確かダメ
0504デフォルトの名無しさん2015/07/09(木) 07:22:06.12ID:0cZHnh39
複数のブックを開いて対象のシートを処理するという流れなら確かにシート名から見た方がいいかもね。

でもObjectから指定する場合は自ブックひとつで纏まってるもので、
運用的にシートを削除してはいけない取り決めがあるものなら、
運用から「シート名を変えてはいけない」という規制を外すことができる。

だから最初の設計の時点でどっちにするか決めることで
その前に絶対どっちかに決まることじゃないと思うけどな。

もっともそれはSetを使うのが基本中の基本と言うのとは全く別の話。

Set使わなくてもシート名指定でもObject指定でも使えるからね。
0505デフォルトの名無しさん2015/07/09(木) 08:09:53.67ID:r4sommXw
約5000ページあるwebページを、
30秒以内にすべてコピーペーストすることって技術的に可能ですか?
1ページずつやってたら、一回のコピーペーストで0.5秒くらいかかっちゃいますが
なので一遍にやる事って可能です?
もしくはコピーペーストじゃなくても、内容を更新の度にそのまま転送できる方法とかってあるんですか?

よくなんかの情報サイトとかで、
一分一秒で一気に更新されてる情報サイトとかありますよね。
ああいうのもプログラムで一遍にやってるわけですよね?


あとIQテストの問題みたいに、あるデータの中にある規則性を発見させる事って技術的に可能ですかね?
プログラムを書く自分が答えをわかってなくても、です。
人工知能の領域に入っちゃいますかね?

例えば
●●●?●●●

この?に入るものは何か(答えは●)
って時に
予めプログラムで●って入力してれば、この問題が出た時に●って入れるんでしょうけど
一切自分答えがわからなくても、コンピュータが自分で計算して●って答えを出してくれるような感じです。


例えば将棋のソフトなんて、作ってる人は将棋の初心者程度の実力しかなかったりっていいますよね。
にも関わらず、人間より強いソフトを作ったりしますよね。
チェスやオセロなんか、人間をはるかに超えてるわけじゃないですか。
0506デフォルトの名無しさん2015/07/09(木) 08:34:48.47ID:n0IdOdTN
シート名が変更されてるケースがあるから >>486 が等価でないと言うのはわかるけど、>>482 へレスしてる意図がわからん
0507デフォルトの名無しさん2015/07/09(木) 08:39:00.10ID:Vp2Vvxuo
>>498
コンパイルって機能しってますか?
基本中の基本ですよ
0508デフォルトの名無しさん2015/07/09(木) 08:50:08.88ID:yvZx6GXv
>>505
webページをコピペする速さと、更新する速さは別の作業を比較しているようで、意味無いんじゃあないのか?
0509デフォルトの名無しさん2015/07/09(木) 09:39:12.22ID:0zCUc4Y+
>>505
機械学習の分野だなぁ
0510デフォルトの名無しさん2015/07/09(木) 10:05:02.59ID:r4sommXw
>>508
どういうことでしょうか?
例えば
ttp://www.chikuwachan.com/live/
これなんかはニコニコ生放送の何千とあるほぼすべての放送のコメント数をリアルタイムで表示しています。
こういうのはどうやってるんでしょうか?
一気に数千窓開いてコピーしたりっていう?

まあこんな感じで一気に数千のデータをリアルタイムで集めてエクセルに記録したいのですが。
可能なんですか?
どういう方法をやってるんでしょうか?

>>509
エクセルのVBAでは無理がありますか?
0511デフォルトの名無しさん2015/07/09(木) 10:08:15.75ID:hn2NpzTq
Excelのwebクエリでできなきゃ諦めろん。
0512デフォルトの名無しさん2015/07/09(木) 10:23:16.06ID:yvZx6GXv
>>510
そのサイト開いて見たが、時事刻刻変化しているようには見えないが。
0513デフォルトの名無しさん2015/07/09(木) 10:35:12.65ID:SLWTmnwe
>>505
> 約5000ページあるwebページを、
> 30秒以内にすべてコピーペーストすることって技術的に可能ですか?

対象が第三者のサーバなら、技術的に可能か不可能かの前に、それはやってはいけない。
常識的なアクセス頻度は1ページ/1secまで。
それを超えるとアタックと見なされる恐れがある。
0514デフォルトの名無しさん2015/07/09(木) 12:01:20.85ID:r4sommXw
>>513
何か方法ありませんか?
>>510のページもダメなことしてるってことなんです?
違うページでもダメなんですか?
0515デフォルトの名無しさん2015/07/09(木) 12:32:46.98ID:/PjUCdQU
そのサイトのソース見ろ 下端あたりに概略書いてある
どうしてもExcelでやりたい? まずはHTMLでどうしてるか理解できないと移植はむつかしい
0516デフォルトの名無しさん2015/07/09(木) 12:57:12.58ID:mTsNKsHF
googleスプレッドシート上でgas取得して、Excel形式で保存料すればいいw
0517デフォルトの名無しさん2015/07/09(木) 16:48:31.07ID:JlZfMmHC
>>499
お前は>>495なのか?
=で比較しろっていっておいて、シンタックスの問題じゃないってか
等値でも等価でも同一インスタンスでもいいけど、=で比較する方法教えろよ
0518デフォルトの名無しさん2015/07/09(木) 17:09:41.27ID:I9vTAnY9
うざい
0519デフォルトの名無しさん2015/07/09(木) 20:02:37.24ID:3YNneEoi
>>514
例えばニコ生のコメント数なんていちいち生放送のページ開かなくても、
検索結果やランキングを見れば50件ぐらいは一気に確認できる
更に言うと、そういう外部サービス向けに情報を利用しやすいようにAPIというものがある

Excelどうこう以前にお前には根本的に発想や知識が足りない
0520デフォルトの名無しさん2015/07/09(木) 20:05:37.19ID:rrX8SuEu
VBAに関係なさすぎだろ
馬鹿すぎ
0521デフォルトの名無しさん2015/07/09(木) 20:15:01.97ID:4VH0pnre
>>517
>>495じゃないしうざい
05224892015/07/09(木) 22:45:25.15ID:AOeRDpks
>>496
ありがとう。
確認してみる。
0523デフォルトの名無しさん2015/07/10(金) 14:36:27.94ID:X6oggqUX
IEでようけタブを開いてる時に
アクティブになっているタブをExcelVBAから取得するにはどうやればいいですか?
0524デフォルトの名無しさん2015/07/10(金) 19:15:07.74ID:jiYZdnGq
ようけタブって何ですか?
0525デフォルトの名無しさん2015/07/10(金) 19:31:25.87ID:w5pjce7S
なんでもかんでもエクセルはんでやったらいいちゅーもんちゃうでホンマに
0526デフォルトの名無しさん2015/07/10(金) 19:56:00.17ID:E85QWjLb
いやホントExcelに何でもやらせようとする人多すぎ
あくまで表計算ソフトですからね?
0527デフォルトの名無しさん2015/07/10(金) 20:35:34.68ID:X6oggqUX
>>524
そんなんもわからんのか
たくさんタブ、という意味だ
0528デフォルトの名無しさん2015/07/10(金) 20:38:09.45ID:I8IKrBJT
>>527
ようけ
ようさん
は同じですか?どう使い分けるんですか?
0529デフォルトの名無しさん2015/07/10(金) 21:25:28.34ID:jiYZdnGq
>>527
ごめんなさい。
ネットで調べて分かりました。方言なんですね。
茶受けの一種かと思ってしまいました。
0530デフォルトの名無しさん2015/07/10(金) 23:12:56.17ID:bM2M5Hwn
Undefined identifier: ようけタブ
0531デフォルトの名無しさん2015/07/12(日) 04:10:07.01ID:AZzVj68F
質問

フィルターかけたあと
最終行の1行下に文字を入力したい

例えば
1 あ
2 い
3 う
4 あ
5 え

として 「あ」にフィルターをかけると
1 あ
4 あ
となる

抽出結果が少なければ
offset(1,0)で組めばいいのですが
5 え 以下
大量に情報があればoffset(1,0)でやってしまうと
文字が上書きされてしまい、画面に表示されない場合があります。

フィルター抽出結果の見たままで
下に文字を入れたい場合
どうすればよいですか?

ググっても別シートに貼り付ける方法しかなく
やり方が見つからなく困ってます。
0532デフォルトの名無しさん2015/07/12(日) 04:33:35.01ID:CzmmcRK9
>>531
Rows( ).Hiddenプロパティを順番に調べてくのが順当な方法なんだろうけど

最後にデータを追加するのが目的なら、まず最終行の次の空白に「あ」を入れといてからフィルターをかけて、
xlUpすれば追加した「あ」のセルに一発で飛ぶから、そこに目的のデータを入れればいいんでない?
0533デフォルトの名無しさん2015/07/12(日) 08:19:33.12ID:1BRWNEUl
>>531
無理
フィルター結果はそれ一つで特別な固まりになってる
「フィルター結果の最終行の一つ下」という概念はExcelにはない
素直に別シートに貼り付けましょう
0534デフォルトの名無しさん2015/07/12(日) 12:21:39.75ID:kAinUgxG
>>531
最終データの位置とかまじめに考えると結構むずかしい
オートフィルター対象になってる範囲とかならとれるから、それの下なら
With Sheet1.AutoFilter.Range
Set r = .Offset(.Rows.Count).Resize(1)
End With
r.Value = 設定する文字(配列)
見たいなコードでいけるんじゃね
0535デフォルトの名無しさん2015/07/12(日) 14:53:58.22ID:eG/EvVrG
>>531
こういうのはどう

Sub テーブルの見出しを選択してから実行せよ()
ActiveCell.Offset(ActiveSheet.AutoFilter.Range.Rows.Count).Select
End Sub
0536デフォルトの名無しさん2015/07/12(日) 20:53:56.57ID:2hDUKmaR
>>531のものです。

>>535ありがとうございます。
更に一行下にする場合はCount+1で出来ました。
濡れました。
0537デフォルトの名無しさん2015/07/13(月) 12:35:11.35ID:/ic4VC8c
分かる方お願いします。

顧客名簿があります。

A列に名前
B列に性別が書かれているとします。

ボタンを押すと
B列の性別をA列の名前のセルの頭に挿入することはできますか?
関数とかで参照とかはしたくない感じなのですが。
どういう風にすれば良いか教えてください。
0538デフォルトの名無しさん2015/07/13(月) 14:08:29.28ID:W8qekCen
>>537
「とか」ってなんやねんというツッコミをいれたい
B列の情報(性別)を一切「参照せずに」どうやって処理を実行できるのか
そんな方法があるならむしろこっちが教えてほしい
0539デフォルトの名無しさん2015/07/13(月) 14:17:15.88ID:/ic4VC8c
>>538
ごめんなさいね
おいちゃん他人のコードを見様見真似でやってるものであまり詳しくないものでね。

なんと言えばいいのか、、A列にはB列を参照する数式を入れたくないのです。
0540デフォルトの名無しさん2015/07/13(月) 14:49:13.44ID:Q4XdJ0tC
A列のセル = B列のセル.Value & A列のセル.Value

こんな感じでいけるのでは
0541デフォルトの名無しさん2015/07/13(月) 15:15:47.26ID:W8qekCen
>>539

Sub test()
Dim i As Long
With ThisWorkbook.Sheets(1)
 For i = 1 To .Cells(1, 1).End(xlDown).Row
  .Cells(i, 1) = .Cells(i, 2) & .Cells(i, 1)
 Next i
End With
End Sub

ただし、実行するたびにノーチェックでB列の内容をA列の頭に付け加えるので
何度も実行すると
鈴木 男 の場合
男男男鈴木 男 とかになる
最初の一文字をチェックするとしても
苗字が「男」で始まるもの(男澤、男鹿、男谷、男山、など)や
「女」で始まるもの(女部田、女屋、女池、など)も実在するので
そういった場合はどうすんのってことにもなりかねない
0542デフォルトの名無しさん2015/07/13(月) 15:23:41.87ID:W8qekCen
そもそも、性別と名前はまったく関連のない属性情報なんだから
顧客名簿として管理するなら
一緒のセルに入れるべきではない(入れてはいけない)っていうのが大前提だけどね

仮に名簿を元に何かの分析をするために
この二つを一緒に出力するとかいうことならまぁわからなくもないけど
0543デフォルトの名無しさん2015/07/13(月) 15:38:21.93ID:sRi+Sfog
>>540
> A列のセル = B列のセル.Value & A列のセル.Value
自分自身を参照する計算式は設定はできないよ。
0544デフォルトの名無しさん2015/07/13(月) 15:39:16.96ID:DovdIZeB
VBA
0545デフォルトの名無しさん2015/07/13(月) 18:14:54.33ID:3PtJoPuU
>>541>>542
ああ、ごめん
ありがとう そうやればいいんですね!
実は先頭に挿入するのは性別ではないんです。

都道府県が入っていない住所録に郵便番号から都道府県を引っ張ってきて
都道府県を付与したかったんです
最初からそう書けば良かったですね。

ただ、都道府県が入ってるセルと入ってないセルが混在してるので分かり辛くなるかと思って

単にセルの先頭に代入する方法だけ知れればいいやと思って単純そうな性別の例で聞いてしまいました。
ありがとうございました。助かりました。
0546デフォルトの名無しさん2015/07/13(月) 19:11:00.10ID:Q4XdJ0tC
>>545
俺も回答したんだけど
俺は無視?
0547デフォルトの名無しさん2015/07/13(月) 19:58:13.21ID:CJJidPYg
>>546
´ω`)ごめんよ
おいちゃん助かったよ
まだ家帰れてないから両方試してないけど・・。
0548デフォルトの名無しさん2015/07/13(月) 21:07:44.12ID:/p9n5st7
うっわw 強要されるのかよw
せんぱい! 退職されて一年過ぎましたが・・ 部署の連中一同 ほんっっっっ・・・と、、、、、  せいせいしてますw
0549デフォルトの名無しさん2015/07/13(月) 23:21:50.92ID:XFV6VzSY
住所録は都道府県名だけで1セル使った方が管理修正しやすいんじゃないかな
0550デフォルトの名無しさん2015/07/16(木) 10:02:45.80ID:ehB1EJEE
Typeで定義したユーザ定義型の配列変数を作ってます。

Type PersonalData
ID as String
Name as String
Birthday as Date
・・・
End Type

Dim Person(100) as PersonalData

みたいな感じですわ。
これを配列内でソートするには、一番シンプルで速い方法はどんなものでしょうか?

ソートというのはたとえばBirthdayでソートするとPerson(1), Person(2)・・・・の順に生まれが早い順番に配列内で並べ替えたいんです。
0551デフォルトの名無しさん2015/07/16(木) 11:18:38.67ID:53Jo2ojE
>>550
> これを配列内でソートするには、一番シンプルで速い方法はどんなものでしょうか?
シートに書き出して、Excelの機能でソートして、シートの内容をデータに書き戻す。
0552デフォルトの名無しさん2015/07/16(木) 11:27:39.40ID:ehB1EJEE
>>551
それは邪道でしょう。
シートに書き出しは禁止しましょう。
0553デフォルトの名無しさん2015/07/16(木) 11:38:20.77ID:hFZ123Co
クイックソート使え。
0554デフォルトの名無しさん2015/07/16(木) 11:43:38.40ID:ehB1EJEE
>>553
クイックソートってなんですか?
0555デフォルトの名無しさん2015/07/16(木) 11:46:48.84ID:hFZ123Co
じゃあ、バブルソート使え。
0556デフォルトの名無しさん2015/07/16(木) 12:06:45.53ID:ehB1EJEE
>>555
バブルソートってなんですか?
0557デフォルトの名無しさん2015/07/16(木) 12:07:40.10ID:ehB1EJEE
>>558
ThredNumber(558).Message & "ってなんですか?"
0558デフォルトの名無しさん2015/07/16(木) 13:13:18.91ID:53Jo2ojE
>>552
バブルソートもクイックソートも、自分では実装できずググる気もないんだったら、
シートでソートするのが王道。

シートへの読み書きがわからんなら、もうソート不可能。
0559デフォルトの名無しさん2015/07/16(木) 14:15:51.16ID:J5o6Kg8h
>>552
じゃあVariant配列に書き出して、適当な配列ソートライブラリを使え。
0560デフォルトの名無しさん2015/07/16(木) 15:23:47.90ID:GEks0S8S
配列ソートは定期的にでてくる話たからネタとしか思えない。
0561デフォルトの名無しさん2015/07/16(木) 15:32:16.35ID:WG4jVMdb
>>550
質問の内容にExcelが全く絡んでないからスレ違い
0562デフォルトの名無しさん2015/07/16(木) 19:35:58.76ID:J5o6Kg8h
PersonalDataってユーザ定義型のうちキーとなるもの( たとえばBirthday )だけ取り出せばいいんだよね。
1列目にそれを入れて2列目に0〜Nの連番を入れた配列を作ってソートする。
そうすれば2列目にインデックスが出来上がるから、その順に並べかえればいいのさ。
0563デフォルトの名無しさん2015/07/16(木) 20:32:27.57ID:qYHM89ED
ちょっとググるだけでこんなん↓出てきたけど。

ttp://home.att.ne.jp/zeta/gen/excel/c04p41.htm
0564デフォルトの名無しさん2015/07/17(金) 09:45:36.21ID:oIBga42r
Excelのいくつかのセルに入った文字列を
Wordにどんどん貼り付けたいのですが
すでに開いているWord文書のアクティブDocumentの末尾にどんどん追加していくにはどうすればいいですか?

CreateObject("Word.Application")を使うと新たに新規文書としてそれを作ってしまう。
いま現状で開いているWord文書の末尾に追加したいのですが
05655642015/07/17(金) 11:11:01.99ID:oIBga42r
できません。
助けてください!

GetObject("Word.Application")と、「GET」のほうですでに開いてるWordを取得できないのですか?
0566デフォルトの名無しさん2015/07/17(金) 12:04:31.71ID:oIBga42r
ひょっとして
Set wd = GetObject(, "Word.Application")
として
wd.ActiveDocument.Content.InsertAfter ・・・
みたいにすればokか?
0567デフォルトの名無しさん2015/07/17(金) 12:06:19.86ID:oIBga42r
↑そのようでした。

ところでWordがまだ開かれてなければCreateObjectを
Wordがすでに開かれていたらGetObjectを使いたいのですが
その場合分けのif文はどう書けばいいですか?
0568デフォルトの名無しさん2015/07/17(金) 13:20:15.48ID:id5On6lD
>>567
ワードのことは知らんけどエクセルの場合だと
開かれてるワークブックはそのマクロを実行しているブック自身も含めて
Workbooksコレクションに入ってるから
Workbooks.countが2以上なら
自分自身以外のブックが既に開かれている事がわかる
ワードにもなんかそんなコレクションがあるんじゃないの?
0569デフォルトの名無しさん2015/07/17(金) 13:57:42.57ID:oIBga42r
>>568
開かれてなかったらDocumentsのコレクションは存在しないし
そもそもWordを参照するためのオブジェクトすら存在しないからできないんだよ。
0570デフォルトの名無しさん2015/07/17(金) 17:41:07.98ID:oIBga42r
どなたかこのわたしのファンダメンタル(fundamental)な疑問にお答えできないでしょうか?
0571デフォルトの名無しさん2015/07/17(金) 19:45:50.08ID:/l5uRIt/
ググれ
0572デフォルトの名無しさん2015/07/17(金) 20:33:19.18ID:syB7WThG
>>567
> Wordがすでに開かれていたらGetObjectを使いたいのですが
逆じゃね、GetObjectしないでどうやって既に開かれてるか知るつもりだよ。
0573デフォルトの名無しさん2015/07/17(金) 20:37:41.79ID:oIBga42r
>>572
開かれていない状態でGetObjecをするとエラーがでてしまうんだよ
0574デフォルトの名無しさん2015/07/17(金) 20:39:06.86ID:rBy1sMGX
オンエラー
0575デフォルトの名無しさん2015/07/17(金) 20:47:16.88ID:oIBga42r
リズームネクスト
0576デフォルトの名無しさん2015/07/17(金) 21:34:24.03ID:/wl7lj/J
Resume Nextの意味 ・・・ 履歴書たらい回し
0577デフォルトの名無しさん2015/07/18(土) 01:03:10.73ID:vrPIhyd3
コンボボックスを2行以上にするって、やっぱ無理でしょうか?
何がしたいかというと、ワードやOutlookのクイックパーツみたいなのを
作れればと便利かなと思ったのですが

他にはフォームにテキストボックスをずらりと並べて
ダブルクリックしたら選択中のセルに入力するとか・・・
くらいしか思いつかないです
0578デフォルトの名無しさん2015/07/18(土) 05:35:55.89ID:T5F58RSl
>>577
クイックパーツと複数行のコンボボックスがどう関係してるのかさっぱりわからん
0579デフォルトの名無しさん2015/07/18(土) 13:43:18.39ID:vrPIhyd3
クイックパーツのGUIがコンボボックスの各項目が複数行になったように見えるので、
コンボボックスの複数行が出来ればクイックパーツもどきが出来そう、という思いつきから
そういう発想になりました

朝からフォームにテキストボックス並べる方法で作ってみたところ、
イメージに近いものが出来たので、今はこれでいいかなと思ってます
0580デフォルトの名無しさん2015/07/19(日) 01:12:52.23ID:yGfbtuav
下のサイトのコードで
Forループのカウンタ変数をループから抜けた後で値の比較に使ってますが、
Exit Forを使わずにForループを抜けた場合にカウンタ変数は最終値+Step値になる
というような事がVBAの仕様として決まってるんでしょうか?
それともたまたまそうなったから深く考えず記載してるだけでしょうか?
後者だとしたらちょっと気持ち悪いなぁ
http://www.moug.net/tech/exvba/0050065.html
0581デフォルトの名無しさん2015/07/19(日) 01:20:46.05ID:rAxj5bhn
>>580
仕様かどうかは知らんけど経験則でそうなってるから俺も使ってる
少なくとも今後マイクロソフト側で変更しない限り
現行のものでは使えてるんだしそこまで気に病むことでもないと思う
0582デフォルトの名無しさん2015/07/19(日) 01:28:01.93ID:Pqkg92al
>>580
正確なVBAの言語仕様はみたことないけど、仕様としてそうなると思っていいんじゃね
たまたまではなくて、ヘルプ等で動作みるとそうならないとおかしい
保証はないかもしれんが、それで問題になった事はないし、そこに変更入るとも思えん

昔のFor Nextのヘルプ、思いっきり嘘書いてた時代もあるけどなw
0583デフォルトの名無しさん2015/07/19(日) 01:29:58.29ID:yGfbtuav
自分だったらこういう場合do loopに変えるから
何か根拠があってやってるのかと思った
0584デフォルトの名無しさん2015/07/19(日) 01:32:53.03ID:yGfbtuav
>>581-582
結構いい加減な感じなのね
参考になりました
0585デフォルトの名無しさん2015/07/19(日) 01:38:37.71ID:Pqkg92al
ああ、少なくとも2007のヘルプでも微妙な表現だな
For Nextは前判定するから、ループの最低実行回数は0回なんだが
あのヘルプの書き方だと後判定にしか読めん

昔は後判定でも誤動作しないように判断入れさせられたりしたなぁ
0586デフォルトの名無しさん2015/07/19(日) 02:12:32.63ID:OOt2nbBY
ループの外でカウンタ参照なんてバグの元
普通はDo Loopなど変数の変化が確実に制御できる方法で置き換えるし、
あとで必用になる値ならリミットやステップは変数に入れておくべき
ドキュメント外の経験則なんて不確実な物に頼るのは三流以下
0587デフォルトの名無しさん2015/07/19(日) 03:54:08.71ID:yGfbtuav
引継ぎのソースとかでこんな事やられてたら確かにぎょっとするな
つまり信用に関わるってこった
0588デフォルトの名無しさん2015/07/19(日) 06:01:07.14ID:mDVOiq6Z
お、この辺の意見は皆一致してるな
動作に確証が持てるならそのままでもいいんじゃと
言い出す人もいるかと思ったのに
0589デフォルトの名無しさん2015/07/19(日) 06:08:32.17ID:eGN6omT4
ドキュメントなんて当てにならんよ
間違いを放置していることも多々あるからな
俺は目の前の実装の動作を信じる派だ
0590デフォルトの名無しさん2015/07/19(日) 06:43:14.14ID:Unt8HnGc
ループカウンタのスコープを意識してやってるなら無問題。
例えば5行10行の関数内でやるとかなら。
0591デフォルトの名無しさん2015/07/19(日) 08:09:39.14ID:mDVOiq6Z
>>590
同意
例え正しい動作で動くとしてもスコープは意識しておかないと
煩雑になる可能性があるもんな
0592デフォルトの名無しさん2015/07/19(日) 08:40:06.43ID:0azLbtwj
つまりカウンタ変数のスコープがループより広いのだからループ後は最終値+Step値になる
それが仕様というもの

つーかループ抜けたらカウンタ変数使うなって誰が考えたんだろうか
仕様をよく理解してないから、こんなバカセオリーが作られていく
0593デフォルトの名無しさん2015/07/19(日) 10:45:03.48ID:gfc2emHi
>>580
どこかのヘルプかなんかでそう言う風な仕様って見たような気がする
0594デフォルトの名無しさん2015/07/19(日) 11:06:50.09ID:OOt2nbBY
ループの終了判定には色々な方法があって、最後にもう1回Stepが足されるかどうかは処理系による
個人が趣味で書く「動けばいい」コードなら何やっても自由だけど、それを他人にも薦めるのは問題がある

実験して結果を確認とか、一番やっちゃいけないレベル
仕様書を見れば、いちいち実験なんかしなくても結果は予測できる

もちろん仕様書にもミスはあるけど、ミスを完全になくすのは不可能だから、
そのミスがきちんと認知されていれば問題ない
0595デフォルトの名無しさん2015/07/19(日) 12:08:21.20ID:4JrdJist
言ってることが中途半端
仕様書に書いてないものはダメと言いながら
仕様書のミスは認知されてればおkって
そんなのダブルスタンダードじゃん

だったらfor nextのカウンターの件だって
認知されてるんだからおkって話になっちゃうよ
0596デフォルトの名無しさん2015/07/19(日) 12:16:27.67ID:OOt2nbBY
>>595
「書いてない(保証されない)、意図していない」

「間違ったことが書いてある、開発側が意図した正解はちゃんとある」
ってのは別

この違い、わかる?
0597デフォルトの名無しさん2015/07/19(日) 12:20:14.08ID:gdmrFD6e
>>596
「書いてない、開発側が意図した正解はちゃんとある」
「間違ったことが書いてある、意図していない」
0598デフォルトの名無しさん2015/07/19(日) 12:25:07.00ID:0azLbtwj
>>594
所謂「処理系依存」て言葉を誤解してるな。
これは、独立して言語仕様が定められていて、開発者がその仕様に準じた実装をする場合に用いられる言葉。
この時、言語仕様として明確な定義がない動作は、処理系依存として開発者に委ねられる。
つまり、ANSI Cなんかでよく使われる言葉。

VBAのようなマイクロソフト一社が開発、実装をしている言語に処理系依存の動作はなく
実装が唯一の仕様になるんだよ。
0599デフォルトの名無しさん2015/07/19(日) 12:25:45.05ID:r330jZtM
仕様書が絶対なら仮にミスだったとしても従わなければならないし、
読み手側が適宜修正を挟めるなら仕様書に書いてあっても実験して結果を確かめる必要性がある。
0600デフォルトの名無しさん2015/07/19(日) 12:29:40.33ID:MA6NEEKT
>>599
お前みたいなのを馬鹿丸出しっていうんですよwww
0601デフォルトの名無しさん2015/07/19(日) 12:33:18.63ID:WqS3++Gn
とりあえず公式にはStepはループの最後に足されると書いてあるんで、それを信じればいいと思うよ
https://msdn.microsoft.com/ja-jp/library/office/gg251601.aspx

でもStepの規定値が0とは知らんかった
てっきり1だと思ってた
0602デフォルトの名無しさん2015/07/19(日) 12:38:35.15ID:gdmrFD6e
>>601
英語の方はoneってなってた。oneを0に訳すってどんだけ・・・
https://msdn.microsoft.com/en-us/library/office/gg251601.aspx
0603デフォルトの名無しさん2015/07/19(日) 12:41:03.89ID:gdmrFD6e
つまりだ、ID:OOt2nbBY は仕様書を見てないし実験もしてないし
想像だけで突っ走ってたってこと?
0604デフォルトの名無しさん2015/07/19(日) 12:54:52.18ID:eGN6omT4
プログラミング系のスレによくいるタイプだよ
何かあるごとに俺ポリシーを唯一絶対の法則のごとく書き散らす
「一番やっちゃいけない」とかお前は何様かと
0605デフォルトの名無しさん2015/07/19(日) 13:17:43.83ID:UQShnz8E
確証が持てない、不安がある、ならより確実な手段で実装するってのは経験から得た教訓。
今回みたいな場合なら、こんな議論じみたことするの面倒だから別に変数を持たせて最後の比較時の値を残しておくことを考えるかな。


それはそれとして、ループカウンタって、現在値と指定された最大値とを比較してループの実行を決めると思ってたから
最後の step 数が加算されるかどうかが処理系によるってのは全く考えたことなかった。w ちょっと参考になった。
0606デフォルトの名無しさん2015/07/19(日) 13:39:37.34ID:0azLbtwj
>>605
処理系じゃなく言語仕様な。
ちなみにforループの仕様すらまともに決まってない言語仕様など見た事がない。
0607デフォルトの名無しさん2015/07/19(日) 13:45:54.11ID:bp/gXhOB
>>601
ひどい誤記だな
こういうのがあるからヘルプって信用できないよね!

ほかにも右と左を間違えるとか、ひどいよね
https://msdn.microsoft.com/ja-jp/library/dxs6hz0a.aspx
0608デフォルトの名無しさん2015/07/19(日) 13:48:28.95ID:bp/gXhOB
>>606
ループを抜けた後のカウンタ値ってforの仕様に含まれるっけ?
0609デフォルトの名無しさん2015/07/19(日) 13:52:17.65ID:gdmrFD6e
>>607
ふはは、めちゃくちゃやな
0610デフォルトの名無しさん2015/07/19(日) 14:06:50.40ID:Unt8HnGc
Forカウンタに関しては仕様上と経験則もどっちの観点からも問題ないんだがら、ぐたぐだ言うこと自体が雑音。
曖昧なのは仕様じゃなくてそいつの知識。
0611デフォルトの名無しさん2015/07/19(日) 14:14:40.40ID:gfc2emHi
>>606
end の値がいつ評価されるかをちゃんと書いてあるドキュメント教えてくれ

>>607
> こういうのがあるからヘルプって信用できないよね!

「日本語」ヘルプはって言ってくれ
0612デフォルトの名無しさん2015/07/19(日) 14:58:37.69ID:0azLbtwj
>>608
ループの仕様とかではなく、forで新たにスコープが作られる言語があって
そういう言語のバッドノウハウが、いつの間にか一人歩きしてるだけ。
VBAではスコープが同じなのでループ内での最後の値は変わらない。
0613デフォルトの名無しさん2015/07/19(日) 15:14:49.12ID:qsMi3+rD
for(int i = 0, i < 10, i++){}

C++では、forにスコープがあるから、
変数iは、for{}内のみで使える変数

var i = 0
for( , i < 10, i++){}

一方、JavaScriptでは、forにスコープが無いから、
for()内で変数宣言せずに、
for外で変数宣言した方が、誤解しない
0614デフォルトの名無しさん2015/07/19(日) 16:56:05.17ID:OryvopCI
なんか荒れてると思ったら
またC++の人か
鬱陶しいな
0615デフォルトの名無しさん2015/07/19(日) 16:56:51.47ID:o2GoxnAV
ループカウンタとか使わなければいい
0616デフォルトの名無しさん2015/07/19(日) 17:02:24.73ID:OryvopCI
>>615
男には使いたくないと思っていても
使わなければならないときがある
0617デフォルトの名無しさん2015/07/19(日) 17:12:38.77ID:kvcDaKH1
じゃあ女になればいい。
0618デフォルトの名無しさん2015/07/19(日) 18:12:50.64ID:ZuB4UjID
画像ファイルの解像度を知りたいんですが
Set pic = LoadPicture(PicFile)
はば = pic.Width / 100
高さ = pic.Height / 100
で、単位mmで、それぞれサイズが出るようなんですが
解像度を求めることは、できないんでしょうか?。
0619デフォルトの名無しさん2015/07/20(月) 19:12:04.97ID:51dMWdzw
ActiveSheet.Protect で保護しても選択とグラフ挿入をしたいのですがどうすればいいですか
0620デフォルトの名無しさん2015/07/20(月) 20:52:45.28ID:NI++k4bU
その時だけunprotectする
0621デフォルトの名無しさん2015/07/20(月) 21:46:50.67ID:4iREVrk0
女の子が生理中でもヤりたくてちんこを挿入をしたいのですがどうすればいいですか
0622デフォルトの名無しさん2015/07/20(月) 21:50:23.17ID:HZ7E+BkF
ヤればいいけど感染症には気をつけてな
0623デフォルトの名無しさん2015/07/20(月) 22:11:31.53ID:4iREVrk0
>>622
わかりました
0624デフォルトの名無しさん2015/07/20(月) 22:19:36.79ID:VFsFABu1
どうやって気をつけるつもりだよ
0625デフォルトの名無しさん2015/07/20(月) 22:29:25.25ID:4iREVrk0
>>622
どうやって気をつければいいんだよ
0626デフォルトの名無しさん2015/07/20(月) 23:15:10.11ID:AGKnnOa8
>>625
感染症になりそうなら素早く抜く
0627デフォルトの名無しさん2015/07/20(月) 23:26:21.65ID:dHG3/QFf
生じゃなきゃいいだろ
それよりもベッドが汚れるので必ずバスタオルを敷くこと
0628デフォルトの名無しさん2015/07/20(月) 23:26:55.15ID:th8mhDMf
ちんこにメンソレータム塗っときゃええねん
0629デフォルトの名無しさん2015/07/21(火) 00:37:29.30ID:s5SYmwNr
ひさしぶりにVBAのツールを作るんで
コレクションの使い方を復習しようと
なにか通勤列車で読めるような中上級向けの本がないか探したが
なくない?

なぜ入門書ばかりなんだろう
あれば教えてください
0630デフォルトの名無しさん2015/07/21(火) 04:27:12.96ID:1F0zJxbf
そもそもBASICが「Beginners’ All-purpose Symbolic Instruction Code」の略ですし。

というのはおいとくとしても、VBAは本買うより目的ごとに検索した方が早い。
0631デフォルトの名無しさん2015/07/21(火) 11:03:54.91ID:s5SYmwNr
>>630
そうですか。
不便ですね。
電車の中で本を読んで復習しようと思ったのに。

ところでVBAでクラスをつくるとき
わざわざsetterやgetterをつくるの面倒ではありませんか?
単にプロパティという読み書きできるようにできない?
0632デフォルトの名無しさん2015/07/21(火) 11:04:33.56ID:s5SYmwNr
x プロパティという
o プロパティとして
0633デフォルトの名無しさん2015/07/21(火) 15:47:35.82ID:rmCqwoyN
パブリックフィールドでも使っとけや
0634デフォルトの名無しさん2015/07/21(火) 15:58:52.78ID:s5SYmwNr
>>633
できた。
なんだできるじゃん。
0635デフォルトの名無しさん2015/07/21(火) 16:16:59.32ID:8Y3JIaa7
ご丁寧にプロパティ作るとデバッグであっちこっち飛ばされてうざいよなー。
0636デフォルトの名無しさん2015/07/21(火) 23:04:38.04ID:nI7QiMxB
>>634
VBAのプロパティは何故かLetとSetの使い分けがあるんだよね

あれ何で?
0637デフォルトの名無しさん2015/07/21(火) 23:20:44.80ID:1F0zJxbf
>>636
VBAでは任意のオーバーロードを作れないのと、ポインタを使えないという制約があるのと、
さらにポリモーフィズムも無いという環境のせいで、オブジェクトの代入を他のものと区別する為にあるんじゃないの?
0638デフォルトの名無しさん2015/07/22(水) 00:26:31.15ID:JGPtgvwf
>>637
あれ?ポリモーフィズム無いんだっけ?

じゃインターフェースは何のためにあるの?
0639デフォルトの名無しさん2015/07/22(水) 02:33:30.51ID:vbbcVbHR
>>636
何故かって、VBAではSetとLetは別だから、区別があるのがむしろ当然

>>637
オブジェクトの代入を区別できないのは、デフォルトプロパティのせいなんで
オーバーロードとかポインタとかポリモーフィズムとか直接無関係です
0640デフォルトの名無しさん2015/07/22(水) 05:40:28.69ID:E01nq8P+
代入でのSetの付け忘れはVBA上級者でもたまにハマる罠の一つ
あんなのなくても代入して欲しい
0641デフォルトの名無しさん2015/07/22(水) 06:11:09.77ID:hGLrxrN5
VBAだから今のVBに合わせてデリゲートの話が出てきてもここではおかしいけど
ポインタとかさらに意味不明だしね
0642デフォルトの名無しさん2015/07/22(水) 06:56:36.99ID:u4/X55np
ポインタを使う言語


あっ(察し)
0643デフォルトの名無しさん2015/07/22(水) 08:05:56.22ID:l4QssRUO
>>640
Set無しでおkにするとVariant型変数にセルの値を入れたいときに
ちょっと困る

Sub hoge()
Dim var As Variant
var = Range(A1:G5) 
Set var = Range(A1:G5) 
End Sub

上のコード、Set有りと無しでは挙動が変わるんだけど、こういう時どうすんの?
0644デフォルトの名無しさん2015/07/22(水) 08:07:30.81ID:l4QssRUO
ごめん、""付け忘れてた
0645デフォルトの名無しさん2015/07/22(水) 08:25:18.56ID:maciFGiV
>>643
Setありなしとは関係ないけど、上は
var = Range("A1:G5").Value
とValueを省略せず書くのがいいと思う。
0646デフォルトの名無しさん2015/07/22(水) 08:27:54.81ID:a/YZpM4j
>>643
セットしないとただの配列になった気がする
0647デフォルトの名無しさん2015/07/22(水) 14:00:12.80ID:vbbcVbHR
Letでオブジェクト(参照)の代入は出来ない
これはVBAのルール

ところでお前ら、Letって命令あるのちゃんと知ってるか?
常に省略可能な命令なんだぜw
0648デフォルトの名無しさん2015/07/22(水) 14:27:07.44ID:9uF/bA4u
>>647
おまえはなw
文末に書いてるw
「w」を省略したほうがいいぜw
0649デフォルトの名無しさん2015/07/22(水) 14:58:32.27ID:1AHyolcG
>>647
Call もあるし、別にどやるほどのネタじゃないぞ
0650デフォルトの名無しさん2015/07/22(水) 16:04:40.72ID:zA65uI1C
Letはオブジェクト以外の代入
動作の違いの確認

Sub test1()
  Range("A1").Value = "abc"

  Set v1 = Range("A1")
  Let v2 = Range("A1")

  Debug.Print TypeName(v1)
  Debug.Print TypeName(v2)
End Sub
0651デフォルトの名無しさん2015/07/22(水) 17:34:18.21ID:SOhZ1+VB
むしろLETが省略できないBASICってあるのか?
と思ったが、大昔のベーマガにはLETで代入してたソースがあった気もするな
0652デフォルトの名無しさん2015/07/22(水) 19:25:17.64ID:vbbcVbHR
>>651
機種によるけど、Then Let の場合、ThenかLetを省略できるので、Thenを省略してより短いLetを残すことがった
あとはLet省略しても、自動的に補完される機種もあったな
0653デフォルトの名無しさん2015/07/22(水) 20:53:03.95ID:h8BR7O6Q
昔すぎるのでは?
0654デフォルトの名無しさん2015/07/22(水) 21:51:43.71ID:JCiitdGg
>>653
今時 Let とか言い出したアホに言ってくれよ
0655デフォルトの名無しさん2015/07/22(水) 22:14:32.64ID:f2fD5abO
Then Gotoの場合、ThenまたはGotoを省略できたのと同じか
0656デフォルトの名無しさん2015/07/22(水) 23:16:34.02ID:EIwMW7nu
文字列をカットする関数で、start,endを位置で指定する関数ってないんだっけ?
MID(文字列,開始位置,文字数)
じゃなくて、
関数(文字列,開始位置,終了位置)
で指定したいです
0657デフォルトの名無しさん2015/07/23(木) 00:01:42.48ID:a8nLYx9Z
function 関数(文字列,開始位置,終了位置)
関数 = mid(文字列,開始位置, 終了位置 - 開始位置)
end function
0658デフォルトの名無しさん2015/07/23(木) 00:11:50.48ID:FtGSRY1f
>>675
ありがとう
天才だな
0659デフォルトの名無しさん2015/07/23(木) 00:19:40.71ID:FtGSRY1f
>>657
ありがとう
天才だな
0660デフォルトの名無しさん2015/07/23(木) 00:30:11.92ID:fIFeUYpQ
>>654
もともとはSetとの対比でLetって話だったはずだが
0661デフォルトの名無しさん2015/07/23(木) 05:50:04.22ID:OfB5opuk
>>660
Let の省略 って書かんとわからんか
0662デフォルトの名無しさん2015/07/23(木) 05:57:57.83ID:CPvEDQbc
>>656-659
>>657 だと一文字切れると思うよ
正しくは

function 関数(文字列,開始位置,終了位置)
関数 = mid(文字列,開始位置, 終了位置 - 開始位置 + 1)
end function

>>661
それがそもそもsetとの対比の話題で出てきたんでしょ?
0663デフォルトの名無しさん2015/07/23(木) 06:13:33.37ID:OfB5opuk
>>662
省略とか言い出したのは >>647
そもそも Let の話してるのに

> ところでお前ら、Letって命令あるのちゃんと知ってるか?

とか言い出したり、ちょっとアレな人なんだろうと思う
0664デフォルトの名無しさん2015/07/23(木) 06:48:31.93ID:H5D81+vI
>>662
「終了位置」の定義によるだろう。
普通は、長さ = end - begin となるようにするから>>657でいいと思うが。
0665デフォルトの名無しさん2015/07/23(木) 07:14:32.88ID:CPvEDQbc
>>664
>定義による
まさにその通りなんだけど、

たとえば、文字列 "あいうえお" から "うえ" を取り出したいときには
Midなら Mid("あいうえお", 3, 2)
となります

これの開始位置とはすなわち3文字目の "う" であり
終了位置は4文字目の "え" なわけですよ

そうするとこれを>>657に適用するなら
関数 = Mid("あいうえお", 3, (4 - 3))
ではなく
関数 = Mid("あいうえお", 3, (4 - 3) + 1)
にしとかないとおかしいんじゃないの?

というのが>>662の主張な訳です
こっちのほうが普通だと思いますね
0666デフォルトの名無しさん2015/07/23(木) 07:20:09.47ID:Vrk4ENFd
>>664
どんな普通だよ w
'あいうえお' の2文字目から4文字目って言われたら大抵の人は 'いうえ' って思うんじゃね?
0667デフォルトの名無しさん2015/07/23(木) 07:21:49.64ID:Vrk4ENFd
>>666
リロードしとらんかった...
例えが同じすぎて笑たわ
0668デフォルトの名無しさん2015/07/23(木) 07:22:43.57ID:Z5SWxUfX
その場合>>657でやるなら
関数("あいうえお", 3, 5)
とするわけだが、配列の長さは UBound - LBound + 1 だったりするから何が「普通」かは一概に言えない。
0669デフォルトの名無しさん2015/07/23(木) 07:53:15.29ID:h4tQPyFC
配列ってここで何か関係あるの?
0670デフォルトの名無しさん2015/07/23(木) 07:57:28.09ID:Z5SWxUfX
UBound +1を指定するところ。
つまり終了位置のひとつ先を引数に設定するのは「普通」のうちに含まれるという主張。
0671デフォルトの名無しさん2015/07/23(木) 08:13:20.35ID:h4tQPyFC
よく分かんないけどそれってOption Base 1指定してもそうなの?
0672デフォルトの名無しさん2015/07/23(木) 08:20:43.91ID:Vrk4ENFd
>>670
むしろその +1 って >>662 の +1 と同じだし

>>671
下限は LBound で取れるので Option で指定しても成り立つ
0673デフォルトの名無しさん2015/07/23(木) 09:36:32.54ID:Z5SWxUfX
"あいうえお"から"うえ"部分を取りたいとき、
>>657 方式だと
関数("あいうえお", 3, 5) と指定する
>>662方式だと
関数("あいうえお", 3, 4) と指定する

+1するってのは使う側が引数に+1するって意味だよ。
0674デフォルトの名無しさん2015/07/23(木) 09:41:39.58ID:P0N6qRSq
>>673
こういう場合に+1する・しないで俺は昔からよく混乱する事があったんだが、最近では何も考えずに無の境地でプログラミングすると、一発で上手く行くようになったよ。
0675デフォルトの名無しさん2015/07/23(木) 11:46:51.39ID:SI8SSCXa
>>673
誰がどう見ても>>662の勝ちだな
0676デフォルトの名無しさん2015/07/23(木) 11:54:13.42ID:Z5SWxUfX
そうかねえ?
俺は、[3, 5), [5, 9), [9, 11) みたいに漏れ重複なく区間を並べられる書き方が好み。
0677デフォルトの名無しさん2015/07/23(木) 11:56:02.55ID:dbj+2vsW
>>674
InStrで「う」と「え」をサーチしたあとに取り出したいとかあるから
関数("あいうえお", 3, 4)
の方が使い勝手がいいと思う

それから「あいうえお」からこの関数をあえて使って「えお」を取り出すときに
関数("あいうえお", 4, 6) だとちょっと気持ち悪いというのもある

個人的な意見だけど
0678デフォルトの名無しさん2015/07/23(木) 12:57:29.05ID:Vrk4ENFd
>>676
書き方は色々あっていいけど、終了位置って普通最後の文字を指すでしょ
0679デフォルトの名無しさん2015/07/23(木) 15:55:49.36ID:fIFeUYpQ
>>663
Set有りと無しではとか言ってる人に、Letって知ってるかって言うのはおかしくないだろ
そこはSetとLetでって書くべきなんだから
0680デフォルトの名無しさん2015/07/23(木) 16:12:59.04ID:mmfWdiQl
終了位置じゃなくて長さ・個数にすれば迷う余地なし
0681デフォルトの名無しさん2015/07/23(木) 16:53:53.03ID:Vrk4ENFd
>>679
スレを辿ることもできないのかよ...
>>636 からの話だぞ
0682デフォルトの名無しさん2015/07/23(木) 17:01:14.71ID:Vrk4ENFd
>>680
(出川口調で)お前はバカか w ⇒ >>656
0683デフォルトの名無しさん2015/07/23(木) 17:44:01.97ID:fIFeUYpQ
>>681
その流れがあるからこそ、SetのあるなしじゃなくてSetとLetだろって話なんだが
まあ話が通じないならもういいや
0684デフォルトの名無しさん2015/07/23(木) 19:13:36.15ID:Z5SWxUfX
(終了位置、長さ)

(長さ、終了位置)
のどっちだったか思い出せなくて悩むはめになる。
0685デフォルトの名無しさん2015/07/23(木) 19:23:54.97ID:Vrk4ENFd
>>683
> SetとLetだろって話なんだが

Set と Let の話してる奴等に

>> ところでお前ら、Letって命令あるのちゃんと知ってるか?

とか言い出したアホがいるって話なんだけど...
0686デフォルトの名無しさん2015/07/23(木) 19:24:52.80ID:jdzUEZ4l
そしたらコメントで…なんて書くと、またコメントがどうたらこうたらで荒れるんだな w
0687デフォルトの名無しさん2015/07/23(木) 19:25:27.87ID:jdzUEZ4l
>>686>>684に対してね
0688デフォルトの名無しさん2015/07/23(木) 21:34:40.50ID:fIFeUYpQ
>>685
Setのあるなしじゃなくて って所を外してるのは、わざとですか?
そこが重要だと理解できてないのですか?
0689デフォルトの名無しさん2015/07/23(木) 23:17:13.99ID:OfB5opuk
>>688
わざとです
論点はあくまでも >>636 ですから
06906362015/07/23(木) 23:55:08.79ID:h4tQPyFC
いやあテレるなぁ
0691デフォルトの名無しさん2015/07/26(日) 02:05:49.12ID:PMtslnm/
コンボボックスの選択完了された値ではなくて
選択中の値・・・ドロップダウンリストが表示された状態で
マウスカーソルがあわさっている値を取得、なんてできますか?
0692デフォルトの名無しさん2015/07/26(日) 02:31:29.01ID:2OSSYxBC
基本的にWindowsのコントロールはサブクラス化すれば何でもできると思っていいよ
0693デフォルトの名無しさん2015/07/26(日) 11:51:18.54ID:PMtslnm/
やはり難しいですよね
リストボックスにしてみます
0694デフォルトの名無しさん2015/07/29(水) 22:52:06.65ID:P4eNlM/m
workbook.sheets(1).copyで新しく作られたbookをactiveworkbookを使わずに取得する方法はありますか?
0695デフォルトの名無しさん2015/07/29(水) 22:54:37.84ID:c3o2n8R7
activeworkbookを使いたくない理由を聞きたいわ。
0696デフォルトの名無しさん2015/07/29(水) 23:36:18.80ID:P4eNlM/m
>>695
何かのタイミングでactiveが変わってしまったら危ないんじゃないかと思ったんですが、そういう事は起こり得ないんですか?
0697デフォルトの名無しさん2015/07/29(水) 23:50:54.16ID:c3o2n8R7
>>696
"Book1 - copy.xlsx"
みたいになると思うので、その名前を使えば良いんじゃないの?
0698デフォルトの名無しさん2015/07/29(水) 23:59:24.34ID:HfzTZxWN
自分で新規ブックをつくってそこにコピーすれば良いだけじゃ
0699デフォルトの名無しさん2015/07/29(水) 23:59:46.07ID:hQM1TMMz
その名前が既にあったらどうするんだ
0700デフォルトの名無しさん2015/07/30(木) 00:00:27.52ID:ds/Apgk5
>>697
名前もその時の状況で変わるので使いづらいです

自分が書いたコードではworkbookオブジェクトを新しく作ってからそこにシートコピーしてるのでactiveworkbookはつかってないんですが、
workbook.sheets(1).copyからもactiveworkbookを使わずオブジェクトを取得できたら楽かなぁと思って質問した次第です
0701デフォルトの名無しさん2015/07/30(木) 00:15:11.00ID:AfvBuYEQ
>>699
事前にチェックすれば良いだけだろハゲ
0702デフォルトの名無しさん2015/07/30(木) 01:58:48.20ID:iv9Zs1qn
Sub こんなんどないや()
Worksheets(1).Copy
Set mybook = Workbooks(Workbooks.Count)
mybook.Sheets(1).Range("A1") = "ABC"
End Sub
0703デフォルトの名無しさん2015/07/30(木) 04:18:29.77ID:3TLsFD+R
Sub NewSheet(Name As String, ByVal cnt As Long)
Dim WS As Worksheet, f As Boolean
Dim NameCnt As String

If cnt Then NameCnt = Name & cnt Else NameCnt = Name

For Each WS In ThisWorkbook.Worksheets
If WS.Name = NameCnt Then f = True: Exit For
Next

If f Then
Call NewSheet(Name, cnt + 1)
Else
Set WS = ThisWorkbook.Worksheets.Add
WS.Name = NameCnt
End If
End Sub
07046942015/07/30(木) 22:02:11.70ID:ds/Apgk5
やっぱりひと手間かけないと難しいですよね
ありがとうございました
0705デフォルトの名無しさん2015/07/31(金) 03:12:44.99ID:aPbYdwRE
>>699
馬鹿なのお前?
0706デフォルトの名無しさん2015/07/31(金) 23:33:53.17ID:q+UwAnSR
なんかお題をちょうだい
0707デフォルトの名無しさん2015/07/31(金) 23:40:31.13ID:pDlCqfLx
テトリスつくって
0708デフォルトの名無しさん2015/07/31(金) 23:44:01.31ID:q+UwAnSR
32LINE2048bytesが制限だからちょっとテトリスはゴメンちゃい
0709デフォルトの名無しさん2015/08/02(日) 08:29:07.26ID:lFlP6vKj
カンマがたくさん入力されたEXCELファイルをcsvファイルにしたい
ところが普通に名前をつけて保存だと"を付いてくれないっぽい

"aaa,bbb","cccc","d","eee","ff"
こういうcsvファイル作りたいんだけど、
VBAからテキストに書くしか方法ない?

元のEXCELファイルでは
カンマが入力されてる位置も数も法則性はありません
0710デフォルトの名無しさん2015/08/02(日) 09:24:03.34ID:js+6DYN9
>>709
それがExcelの仕様
諦めてVBAを書くか、""なしで書き出したテキストファイルを
PerlやRuby等の簡易な言語で加工するか
0711デフォルトの名無しさん2015/08/02(日) 10:54:43.64ID:pHbT44ug
大体他言語の話を持ち出すやつは糖質
特にC++はアスペ
0712デフォルトの名無しさん2015/08/02(日) 11:55:18.99ID:zAkA6wkz
>>711←これが病気の人の執着力です
0713デフォルトの名無しさん2015/08/02(日) 12:23:27.67ID:lFlP6vKj
仕様でしたか
行数多いので処理時間が少し心配ですが、
VBAでやってみます

他言語はvbsで保存後に「,」を「","」に置き換え
加工できるかなとは少し考えてました。
でも置き換え対象外の「,」もあるわけで、
保存後だと判定が難しそう
0714デフォルトの名無しさん2015/08/02(日) 13:06:35.44ID:ZRhH79SV
>>709
試した範囲では、少なくともセル中にカンマを含む場合はちゃんと""で囲んでくれるようだが
まあ、CSVはいろいろ細かいとこが違うから気に入らないなら自分で書き出すのが確実だけど
0715デフォルトの名無しさん2015/08/02(日) 14:52:37.26ID:egshDkuk
リンクされたセルの値が変化した際に実行する処理をWorksheet_Changeに記述しております。
この処理中にリンクされたセルの値が変化した場合、
実行中のWorksheet_Changeは中断され、新たにWorksheet_Changeが開始されるのでしょうか?
それとも、実行中のWorksheet_Changeは引き続き実行され、同時並行にWorksheet_Changeが開始されるのでしょうか?

また、上記のどちらであるかを確認する方法があるようでしたら教えていただきたいのです。
よろしくお願いします。
0716デフォルトの名無しさん2015/08/02(日) 15:09:53.80ID:QrDJWkft
>>715
処理の中に対象セルの値を変化させるコードがある場合、そこから新たに実行される。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i

Debug.Print "preexe"

Target = i

Debug.Print "Postexe"
End Sub

とかで実行してみてイミディエイトウィンドウを確認すると分かりやすい。
0717デフォルトの名無しさん2015/08/02(日) 15:18:10.64ID:9vFz/e2c
無限ループって怖くね?
0718デフォルトの名無しさん2015/08/02(日) 16:32:16.48ID:dkS/+hk9
>>715
A列 金種
B列 枚数
C列 金額
でB、Cの何れか片方に入力されたらもう片方を再計算するようにしたことならあるけど…
07197152015/08/02(日) 17:32:28.59ID:egshDkuk
あー間違えたー
>>715のWorksheet_ChangeはWorksheet_Calculateに読み替えてください。
↓が正しいです。すみません。
"リンクされたセルの値が変化した際に実行する処理をWorksheet_Calculateに記述しております。"

>>716
>そこから新たに実行される
実行中のWorksheet_Changeは中断され新たにWorksheet_Changeが実行されるということでしょうか?
提示してもらったコードを参考にWorksheet_Calculateでの動作を確認してみます。

>>717
Worksheet_Calculateが実行中にリンクされたセルの値が変化することもあれば、変化しないこともありますので
必ずしも無限ループとはなりません。
>>716は無限ですけど。
0720デフォルトの名無しさん2015/08/02(日) 18:39:22.01ID:MF9TQU9s
>>709
そういうのがわずらわしいからTab文字でセパレートするんやで
つーか全レコード舐めて使ってない文字なら何でもいいが
0721デフォルトの名無しさん2015/08/03(月) 10:07:35.51ID:IvRPgtVs
>>709
アドイン探したらあったよ?
Excel CSV I/O 
使ってみたら。
0722デフォルトの名無しさん2015/08/03(月) 15:40:21.92ID:JhhThk5t
2バイト文字の空白エリアからテキトウに選べばええ
0723デフォルトの名無しさん2015/08/04(火) 18:12:48.60ID:Xu3GeQZL
OWCのグラフについてですが、データがEmptyの箇所を非表示にするにはどうすればいいでしょうか?
0724デフォルトの名無しさん2015/08/04(火) 19:13:09.63ID:qaA+gaVg
PowerShell なら、import-csv, export-csv,
-encoding で、UTF-8, Shift-JIS のエンコードも指定できる

Excelのファイル形式では、
6 CSV
22 Mac CSV
23 Windows CSV
24 MSDOS CSV

"a,b","a b"
こういうように、文字列の中に、
カンマや空白が入っていると、
ややこしいので、タブ区切り(TSV)を使う
0725デフォルトの名無しさん2015/08/05(水) 00:47:49.40ID:Xk+R3C8+
特定のブックだけでしか使わないので、そのためにアドインってのはちょっと嫌かな
tsvってなんでExcelに関連付けされてないんだろう
名前をつけて保存でも出てこないし

拡張子協会?みたいのがあって、そこには認められて無くて
タブ区切りだからtsvって一部の人が呼んでるだけなのだろうか
なんて想像してしまう
0726デフォルトの名無しさん2015/08/05(水) 04:31:59.24ID:yfcMdSNW
>>725
Excelでのタブ区切りはテキスト形式指定で保存できる
関連付けは.txtなのでメモ帳になってるのが一般的だな
開くのはEXCELでちゃんと開ける

そもそもcsvはComma-Separated Valuesの略だとされてるから
タブ区切りがcsvじゃおかしいだろうって言う話があってtsvと呼んだりするけど
それ以外の区切り形式も全部ひっくるめてcsvと呼ぶこともある
いちおう今はRFCとかもあるけど、それ以前から存在するし実はかなりカオスな形式
0727デフォルトの名無しさん2015/08/06(木) 21:55:53.33ID:i7HDVQtV
ExcelからVBAでOutlooikを操作し
CreateObject("Outlook.Application").CreateItem(0)
でメールの下書きをいくつかたくさん作ります。

そのあとつくった全部に対して同じ処理をしたいのですが
このCreateItem(0)で作ったメールの下書きのコレクションを取得する方法ってどうやればよいでしょうか?
0728デフォルトの名無しさん2015/08/06(木) 22:24:14.34ID:JI2t4Gst
好きにやればいいよ
0729デフォルトの名無しさん2015/08/06(木) 23:00:42.60ID:hJ1X31cM
>>727
outlook研究所に行けよ
0730デフォルトの名無しさん2015/08/06(木) 23:53:13.21ID:3nTeNGfy
自分で作ってるんだから自分でコレクションに入れていけば良いんじゃね
0731デフォルトの名無しさん2015/08/11(火) 21:35:11.54ID:gtl50mbf
あるセルに
AAA BBB AAA CCC
と表示されているのを
AAA BBB CCC
と、つまり重複文字列を
削除するVBAのコードを何卒
お願いしますm(_ _)m
0732デフォルトの名無しさん2015/08/11(火) 22:49:00.10ID:my6QzTuQ
メニューに重複削除あるだろ
0733デフォルトの名無しさん2015/08/11(火) 23:00:31.84ID:gtl50mbf
>>732
一つにセル内の話です。
例えばA1内に
あああ あああ 200 200
と文字列がある場合に
マクロ実行で
あああ 200
のように。
(かなり困ってますので
お助けを…(_ _))
0734デフォルトの名無しさん2015/08/11(火) 23:02:52.20ID:Rnp54Swm
あるセルって単一セル内?4つのセル?
0735デフォルトの名無しさん2015/08/11(火) 23:14:47.60ID:Rnp54Swm
区切りにスペースは必ず入ってるのかな
0736デフォルトの名無しさん2015/08/11(火) 23:24:55.02ID:3YchA3jD
そんな馬鹿げた要件ないだろ
0737デフォルトの名無しさん2015/08/11(火) 23:43:59.37ID:gtl50mbf
>>734
単一セル内

>>735
スペースは入っています。
元のプログラムでは
文字列型の変数に
str = str & " " & Cell(i, j).Value
のようにして格納いています。
Dim i
Dim j
Dim str As String

For i = 1 To 100
str = str & " " & Cells(i, j).Value
Next i

Worksheets("紙").Cells(1, 1) = str

の様にしましたが結果が上記のようになって
しまいます。つまりstrの中身の重複を
削除する方法です(_ _)
0738デフォルトの名無しさん2015/08/12(水) 00:05:07.74ID:AxCPtTKK
>>731

Sub こんなんどないや()

Set stock = New Collection
barabara = Split(ActiveCell.Value, " ")
On Error Resume Next

For Each OnePiece In barabara
stock.Add OnePiece, OnePiece
Next
On Error GoTo 0
For Each OnePiece In stock
kekka = kekka & " " & OnePiece
Next

ActiveCell.Value = Trim(kekka)

End Sub
0739デフォルトの名無しさん2015/08/12(水) 00:26:19.28ID:g9g1aoHI
>>738
ありがとう御座います。
明日、会社で試してみます。

なんか出来そうな予感は
して来ました(笑)
(夜分遅くに本当に感謝です、他にも
ありましたら何方かなるべくシンプルな
やつでお願いします(^ ^;))
0740デフォルトの名無しさん2015/08/12(水) 01:06:27.62ID:svAFeBJn
>>738
エラー無視させるかキーが当たったら登録させないかは好みで分かれるところだな
0741デフォルトの名無しさん2015/08/12(水) 09:21:11.40ID:ybFGXm8Q
>>740
エラートラップとかはできる限り使いたくないから
> キーが当たったら登録させない
派だな
0742デフォルトの名無しさん2015/08/12(水) 12:37:40.94ID:bqbcCRVa
vba活用してスマホとEXCEL連携して何かできないかな
カメラで撮ったらシートに画像がすぐに貼り付けられるとか
バーコード呼んだらセルに入力されるとか
0743デフォルトの名無しさん2015/08/12(水) 13:40:00.14ID:CjCTxmpZ
dictionary使えばいいでしょ

まあ元のソースが別のセルに入ってるのをわざわざ連結してから処理してる意味がわからないけど
0744デフォルトの名無しさん2015/08/12(水) 13:42:43.23ID:Qp9NewvK
>>742
googleスプレッドシートでやるといいよ
0745デフォルトの名無しさん2015/08/12(水) 17:15:44.92ID:e6JBBjJ+
シートに図挿入したときのことなんですが、
挿入 ― 図 ― (d:\gazo\a000.jpg) ― ファイルにリンクで
貼り付けた画像があるとして、この画像のフルパス(d:\gazo・・・.jpg)を
知ることはできるでしょうか。Excel2007では,代替えテキストに
フルパスが入っていますが、Excel2010では、何も入りません。
(Excel側で、設定とかある?)、どこかに、情報は持っているはずと
思うのですが、VBAで知る方法、わかるかた教えてください。
代替えテキストは、下記でわかるようなのですが。
pic.ShapeRange.AlternativeText
0746デフォルトの名無しさん2015/08/12(水) 23:05:01.82ID:G8qcToBK
そこを方向転換してマクロで図を挿入するようにすればバージョンに依存せずいつでもパスを得られると思わないか
思わないな
07477452015/08/12(水) 23:40:12.65ID:e6JBBjJ+
>>746
じつは、マクロで図を挿入するのを作っていて、「Excel2010でPictures.Insertすると
リンク貼り付けになる」ということなので、いろいろ調べたら「代替テキストに画像のフルパスが
あるなら、挿入にできる」っていうのを見つけた。で、2007だと代替テキストにフルパスが
入ってるけど、2010は、なし。じゃ、ということで2010で代替テキストにフルパスを書き込む
ようにした。で、リンク貼り付け→挿入にできるようになったんだ。これ、>>745カキコしてから
ようやっとできた。だけど、んにゃ、どっかにフルパス情報当然あるはず、と思うんだけど。
ちなみに「AddPicture」は、どうもしっくりこなくて。
0748デフォルトの名無しさん2015/08/13(木) 01:00:44.65ID:CPI6SZk7
>>747
「代替テキストに画像のフルパスがあるなら、挿入にできる」って
なにそれリンクプリーズ
0749デフォルトの名無しさん2015/08/13(木) 01:24:42.76ID:UOPmO2ID
結局何が目的でどれがそのための手段なのかわからん
0750デフォルトの名無しさん2015/08/13(木) 09:28:42.30ID:jLoATrSc
>>748
これです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1284060567

要は、画像リンクで貼り付けられてる、画像のフルパスがわかれば、リンク貼り付け→挿入にできる。
Excel2007は、代替テキストに入ってるから、もしリンク貼り付けでも対処できる。2010は、手動貼付けや
Pictures.Insertでは、代替テキストにはフルパスは入らない。マクロで入るようには、もちろんできる。
じゃ、すでに手動なりでリンク貼り付けになってる(フルパス情報なし)のを、挿入にしたいから
図のフルパスを知りたい、ってことなんだわ。ネットで、いろいろググってるんだけど、見つからなくて。
0751デフォルトの名無しさん2015/08/13(木) 10:30:47.40ID:XEpKKFYz
図をコピーして形式を選択して貼り付けするとリンク切れるみたいだけどそれでどうにか
07527502015/08/13(木) 11:38:58.21ID:jLoATrSc
>>751
レスありがとう。教えてもらった通りの操作を、マクロ記録してみました。
それを利用して、画像フルパスなくても、一度に何枚のリンク画像でも、
挿入にできました。この方法は、思いつきませんでした。日頃のExcel操作が
大事だと改めて思いました。教えていただき、ありがとうございました。
(目的を達成したので、とりあえずリンク画像のフルパス取得は、保留にします。)
0753デフォルトの名無しさん2015/08/13(木) 14:10:15.23ID:XEpKKFYz
図のリンクの編集ぐらいExcelの機能としてあるかと思ったら意外に無いのな
コピペも対処療法的な感じで非常にアレだ
0754デフォルトの名無しさん2015/08/13(木) 18:40:42.85ID:e6rsnF6N
>>753
「対処療法」じゃなくて正しくは「対症療法」だよ
0755デフォルトの名無しさん2015/08/14(金) 20:13:43.07ID:8ARrFh/I
Range("a1").value = Range("b1").value

こう書くと数式も含まれてコピーされるようですが
値のみを繁栄させたい場合はどう書けばいいのでしょうか? 
0756デフォルトの名無しさん2015/08/14(金) 20:19:39.62ID:kkHnja52
>>755
マクロ記録モードにして
「値で貼り付け」の操作をするとわかる
07577552015/08/14(金) 20:21:57.58ID:8ARrFh/I
>>755
この質問の意図は

Range("A1").Copy

Range("B2").PasteSpecial Paste:=xlPasteValues

とすれば出来るのでしょうが1行で記述したいということです。


>>756
ありがとうございます
0758デフォルトの名無しさん2015/08/14(金) 20:43:22.05ID:GC+yzDGQ
>>755
私の記憶が確かなら、.valueは計算結果の値であって、数式はとれないはずですが。
EXCELのバージョンは?
07597552015/08/14(金) 20:54:01.53ID:8ARrFh/I
>>758
2003です、、 
表の集計で使っていますが
今まではダイレクトに書かれた数値をコピペしていたところを
=a1 のようなセル参照で抽出する用に変えたのですが
結果の数値が全部0になりよく調べると =a1  ごとコピーされて
結果セルの式は=a100とかと表示されていてだめだこれはといった感じです
07607552015/08/14(金) 22:12:02.80ID:yxgV65T9
結局の所
>>757

>>755
のように1行で書く事は出来ないのでしょうか?
0761デフォルトの名無しさん2015/08/14(金) 22:41:06.93ID:kkHnja52
>>760
できない
「値で貼り付け」はPasteSpecialメソッドにしかない機能なので
まずCopyしておく必要がある
07627552015/08/14(金) 23:04:41.66ID:heE1+va8
>>761
ありがとうございます。 長年の謎が溶けてすっきりしました。
0763デフォルトの名無しさん2015/08/14(金) 23:45:05.71ID:G78FLFmY
>>759
うちは2007だけど
Range("a1").Value = Range("b1").Value
でちゃんと数値がコピーされるなー

ところでこんなんどないや
Range("a1").Value = Evaluate(Range("b1").Formula)
0764デフォルトの名無しさん2015/08/15(土) 00:27:53.07ID:fL/PzS3/
>>763
2010でもその通り、値のコピーとなった。
>>761はウソ。
0765デフォルトの名無しさん2015/08/15(土) 00:46:57.24ID:tvgFL4BI
質問
これは動くのですが
Dim mm(2)
mm(1) = ActiveSheet.Shapes.AddLine(10, 10, 50, 50).Name
mm(2) = ActiveSheet.Shapes.AddLine(120, 20, 60, 60).Name
ActiveSheet.Shapes.Range(mm).Select

コレクションに置き換えると動きませんでした
Set nn = New Collection
nn.Add ActiveSheet.Shapes.AddLine(10, 10, 50, 50).Name
nn.Add ActiveSheet.Shapes.AddLine(120, 20, 60, 60).Name
ActiveSheet.Shapes.Range(nn).Select

諦めて配列を使うしかないのでしょうか それともcollectionの使い方がわるいのでしょうか
0766デフォルトの名無しさん2015/08/15(土) 07:06:47.86ID:j7Z0urAN
色々な事情で600シート分のデータを1〜2のブックに統合する必要が出てきたのですが

1つのブックに600シートぶち込んでしまうのと
300シートに分割して2ブックにするのと
200シートで3ブックにする

のではどれがお勧めでしょうか?
600シートの総データ数は300MBほどです。
1ブック200シートのデータ作成は成功しましてまあそれなりに止まることなく動くというのがわかりました。
0767デフォルトの名無しさん2015/08/15(土) 10:12:24.14ID:Rw3ql/9W
第3の答えとしてRDBを使用する
0768デフォルトの名無しさん2015/08/15(土) 10:27:23.30ID:cR607+81
開くの重そう。
自分で作れてるんなら、実用性次第じゃないの?
0769デフォルトの名無しさん2015/08/15(土) 10:42:17.52ID:p/7d84Nq
何もしていないxlsx形式やcsv形式で300MBなら統合した後にデータテーブル化すれば容量はだいぶ抑えられるはず。
0770デフォルトの名無しさん2015/08/15(土) 15:23:11.33ID:7AZQcdGh
>>766
150シートに分割して4ブックにすることもできすし
120シートに分割して5ブックにすることもできすし
100シートに分割して6ブックにすることもできす。

しかし分割して7ブックにすることはできません。
これは7が600の約数ではないからです。
小学生の算数の授業でした。
0771デフォルトの名無しさん2015/08/15(土) 15:48:36.88ID:Bgl+GJFE
>>770
分割は等分とは限らないんだぜ?
0772デフォルトの名無しさん2015/08/15(土) 16:23:48.83ID:mbZast3u
同一テーブルのデータをシートに分けるのは愚の骨頂 ひとつにまとめろ
0773デフォルトの名無しさん2015/08/15(土) 16:33:01.59ID:HxCw3c0C
重いとか色々理由あって、状況によっては必ずしも1つが正しいともいえないんだよなぁ。
0774デフォルトの名無しさん2015/08/15(土) 17:04:42.31ID:B4BgWceW
まあそもそもEXCELでやるべき処理かという問題
0775デフォルトの名無しさん2015/08/15(土) 17:10:19.88ID:B4BgWceW
>>765
Shapes.Rangeの引数は、配列は許すがコレクションは許さない
0776デフォルトの名無しさん2015/08/15(土) 22:40:04.13ID:+545fZTC
これからexcelvbaを学習しようと思うのですが、パソコンスクールとかに通ったほうがいいでしょうか。
0777デフォルトの名無しさん2015/08/15(土) 22:51:46.86ID:4BB87GxS
>>776
ネットの解説ページで充分
0778デフォルトの名無しさん2015/08/15(土) 22:53:48.65ID:fL/PzS3/
美人講師に教えてもらえるのなら
0779デフォルトの名無しさん2015/08/15(土) 22:55:28.05ID:EaRAq543
VBA教えるスクールなんてあるんかな
0780デフォルトの名無しさん2015/08/15(土) 22:58:58.19ID:UUBlauo7
たぶんこのスレ見てるやつでパソコンスクールに通ったことあるやつってほとんどいないと思うぞ...
07817662015/08/15(土) 22:59:00.32ID:4BB87GxS
>>766 ですが盆休みの暑い中あれこれ試して見ましたが
100メガぐらいある200シートあるファイルを作り3つを同じに開いて処理させようとしたら・・・
3つめでリソース不足で開けませんと出てきました THE END

まだ推測段階ですが1ブック400シート統合したファイルは開けたと思いますので巨大な1つのブックを作るのが正解のようです。
0782デフォルトの名無しさん2015/08/15(土) 23:01:44.13ID:fL/PzS3/
現状のサイズで打ち止めなのか、今後少しずつ増えていくのかどっちだ?
07837662015/08/15(土) 23:09:16.26ID:4BB87GxS
>>782
管理上多くのシートが束なった状態が有利でして
どちらかと言うと限界値を探っている感じです。
07847662015/08/15(土) 23:13:14.19ID:4BB87GxS
>>782
最大シート数は青天井です
DBを使うべきなのでしょうがDB未経験なのでVBAであがいています
0785デフォルトの名無しさん2015/08/15(土) 23:21:14.62ID:+545fZTC
776
アドバイスありがとうございます。
パソコンスクールは不要そうですね、自力でやります
07867662015/08/15(土) 23:28:20.54ID:FJpG/yMJ
>>785
プログラミングの基礎知識があればネットで充分 
プログラム未経験で1から始めるならネットで見てわからなければ、本でやってみて、それでもだめならスクールかな
0787デフォルトの名無しさん2015/08/15(土) 23:43:38.64ID:+545fZTC
>>786
ありがとうございます。プログラムは初心者ですが実務で使えるレベルになりたいのです。
カエルが出てくるベストセラー入門書を読み込んでみます
0788デフォルトの名無しさん2015/08/16(日) 00:07:46.48ID:ulfn6A7k
基礎知識は学生時代にやったからなあ
全くの未経験の感覚は分からん
0789デフォルトの名無しさん2015/08/16(日) 02:37:33.95ID:7WiTockH
マジレスすると最強のVBAスクールはここです
0790デフォルトの名無しさん2015/08/16(日) 05:49:34.88ID:ENl5jplp
マクロの記録だけでもいろいろ学べる
ループやifはないけど
0791デフォルトの名無しさん2015/08/16(日) 10:11:51.00ID:gGxBx6VU
マクロ記録は宝の山
下手にループを組んだりするより、圧倒的に短く済む書き方を発見することがある

俺のVBA人生で一番驚いたのが、セルポインタの右下の黒点をWクリすると
左隣のセルに沿ってセル内容を自動コピーできること
コピー範囲の指定やif判定など一切が不要
0792デフォルトの名無しさん2015/08/16(日) 10:29:13.12ID:piHLRckr
それは太陽の黒点のように出現時期や数の変化はありますか?
0793デフォルトの名無しさん2015/08/16(日) 11:32:03.58ID:ulfn6A7k
>>791
そんな事出来たのかと思って試してみたけど
これってつまりオートフィル?
0794デフォルトの名無しさん2015/08/16(日) 12:03:28.50ID:gGxBx6VU
>>793
オートフィルだね
ループ組んで1セルずつ処理するコードを書くことしか頭になかったから
当時かなりの衝撃を受けた
関数内のセル参照式を自動でインクリメントしてくれるので、関数を含む
表をVBAで作る(割とよくある)場合に非常に役立つ
0795デフォルトの名無しさん2015/08/16(日) 12:07:18.75ID:+v5OIrpT
空白があると止まっちゃうから、結局ループに戻ったな。
0796デフォルトの名無しさん2015/08/18(火) 00:21:58.08ID:XBdAgPin
でも大抵ループより専用のシート関数呼んだ方が速くて悔しくね?
このあいだ適当に安定ソート組んだら組み込みのシート関数のSortのが速くてショック死した
0797デフォルトの名無しさん2015/08/18(火) 04:01:26.32ID:fz3Mk9gj
Sortメソッドって安定なの?
0798デフォルトの名無しさん2015/08/18(火) 07:16:21.63ID:Nc1vlm2A
どうだろ。実験してみれば?
反例が出ればはっきりする。出なきゃ何とも言えんが。
0799デフォルトの名無しさん2015/08/18(火) 15:40:30.31ID:7IvcIIuj
反例が出るまで、あらゆるパターンをソートし続けるのか・・・
0800デフォルトの名無しさん2015/08/18(火) 21:06:25.20ID:Nc1vlm2A
>>799
そうさ。君ならできる。
0801デフォルトの名無しさん2015/08/20(木) 00:38:14.85ID:/DfWyQwS
>Sortメソッドって安定なの?
安定だよ
適当にセルに値埋めてキー列を変えながらソートしていけば不安定と何が違うか判る
0802デフォルトの名無しさん2015/08/20(木) 00:47:34.83ID:C5756yL1
その確信をどうやって持てばいいのか・・・
0803デフォルトの名無しさん2015/08/20(木) 09:33:43.09ID:X9vYl0u8
>>801
個人的な実験で調べるのは無理
安定ソートと同じ結果になったのが偶然じゃないと証明することはできない
0804デフォルトの名無しさん2015/08/20(木) 11:22:47.70ID:4mlXzkea
確信が持てないんだったらSort後にチェックのロジックを追加すればいい
(どうすんのかは知らんけど)
それか、最初から使わなければ良い
0805デフォルトの名無しさん2015/08/20(木) 12:06:50.75ID:mAnYGFvy
普通だったら仕様書なり規格のここに書いてあるという話題になるのに、そうならない言語を使ってる男のひとって
0806デフォルトの名無しさん2015/08/20(木) 12:09:54.61ID:mAnYGFvy
まあ安定にしたいというだけなら昇順インデックスを一列追加して第2キーに指定すれば良い。
0807デフォルトの名無しさん2015/08/20(木) 17:06:23.21ID:GEWaWf2/
なんでExcelVBAユーザーって他の言語だとごくごく当たり前のことを
訊かれてるのに頓珍漢な答えを返すの?
0808デフォルトの名無しさん2015/08/20(木) 18:11:06.62ID:n0ICmDs/
他の言語 = C++限定
0809デフォルトの名無しさん2015/08/20(木) 20:53:52.58ID:mAnYGFvy
その点OutlookVBAユーザーは偉い。
0810デフォルトの名無しさん2015/08/20(木) 22:46:58.59ID:abJwgas4
adoでAccessに接続しクエリのパラメーターにセルの値を渡すにはどのような方法がありますか?また、sqlでセルの値を使う場合もどのように書けば渡せますか?
0811デフォルトの名無しさん2015/08/20(木) 23:25:51.90ID:4mlXzkea
sqlstr = " select 〜 from ddd where fff = " & Cells(i,1)

With wkR
.CursorLocation = adUseClient
.Open sqlstr, MgDB, adOpenStatic, adLockReadOnly
End With

みたいにしてっけど、こういう事じゃない?
0812デフォルトの名無しさん2015/08/21(金) 00:12:09.87ID:AQjOsTG4
>>811
こういうことですが、&でセルの値はなにも囲まないんですね
0813デフォルトの名無しさん2015/08/21(金) 00:23:47.20ID:mP5B+B9x
>>812
811だけど、これMySQLで俺がやってるもの。ACCESSではどうだったか。
MySQL出やる時、日付や文字列は "'" 半角のクォーテーションでくくってる

sqlstr = " 〜 '" & Cells(i,3) & "'" みたいに
そこら辺は適時修正してくれ
0814デフォルトの名無しさん2015/08/21(金) 14:19:51.00ID:yaZ860HY
>>812,813
脆弱性たっぷりに見えるので、もう少し頑張れ・・・(´・ω・`)
0815デフォルトの名無しさん2015/08/21(金) 16:50:53.01ID:lpkbHdP+
FileSystemObjectを使ってファイルをMoveFileで移動した直後に
元の場所に同じ名前のファイルをCreateTextFileやOpenTextFileで新規作成すると
作成時にたまにランタイムエラーになる
MoveFileが非同期で処理してんのかなあと思った
FileExistsで移動が完了するまで待った方がいいのか、別名で新規作成するべきか
どっちがいいと思います?
0816デフォルトの名無しさん2015/08/21(金) 16:59:03.93ID:CXs5osz9
>>815
目的による
処理を急ぐなら別名で、同名じゃないと困るなら完了まで待つ
0817デフォルトの名無しさん2015/08/21(金) 17:29:16.31ID:U/GX80hF
book1の変数Nを使ってbook2のマクロをRunで使いたいのですが
book1で次のコードを実行するとNの値がエンプティになってしまいます。
変数を使うにはどうしたらいいですか?

Public N As Integer
N = 100
Application.Run "book2".xls!updata"
0818デフォルトの名無しさん2015/08/21(金) 17:55:38.56ID:CXs5osz9
>>817
Application.Run ("book2.xls!updata", N )
0819デフォルトの名無しさん2015/08/21(金) 18:38:34.66ID:lpkbHdP+
>>816
ありがとうございます
コメントも無い他人のソースなんで、何でこんなことしてるのかはまるで不明なんですが
別名路線でいくというか、もう移動先に直接作成することを考えております
参考になりました
0820デフォルトの名無しさん2015/08/21(金) 18:44:54.74ID:U/GX80hF
>>818
返信ありがとうございます
実行すると コンパイルエラー 修正候補: =
と出てしまいます。
0821デフォルトの名無しさん2015/08/21(金) 20:21:41.59ID:U/GX80hF
book2に変数N宣言してないからかな
ちょっと別の方法でやってみます
ありがとうございました
0822デフォルトの名無しさん2015/08/23(日) 14:00:42.68ID:mtt7apD7
adoでつなぐクエリがAccessのクロス集計でパラメーターある場合、Excelからどうやったらパラメーター渡せる??
0823デフォルトの名無しさん2015/08/23(日) 14:58:01.35ID:CbBvys+j
プログラム言語一般を勉強しているのですが
このVBAのVariant型の変数の正体ってなんですか?
かなり詳しく知りたいのですが。
0824デフォルトの名無しさん2015/08/23(日) 14:59:12.06ID:CbBvys+j
いろんな型を入れられるし、セル範囲も入れられて配列のようにも使える。
これらはメモリにどのように記憶されているか、ということまでは最低でも知りたいんです。
プロ目指してますんで(ワラ
0825デフォルトの名無しさん2015/08/23(日) 15:04:43.71ID:WA8SS6t8
>>824
VBAはソースも設計書も公開されていないので誰にもわからない
0826デフォルトの名無しさん2015/08/23(日) 15:14:25.56ID:CbBvys+j
>>825
そりゃないよかあちゃん
0827デフォルトの名無しさん2015/08/23(日) 15:20:55.56ID:J+cRYQ7V
>>826
VariantはOS(Windows)で定義されてる型
中は二つに分かれていて、データの種類と実際の内容が入ってる
VBAはそれを継承してるだけなので、Windowsクラスの仕様を探せば詳しいことがわかると思う
実際に消費するバイト数とかどっかで見た記憶があるんだけど思い出せん
0828デフォルトの名無しさん2015/08/23(日) 15:24:51.94ID:CbBvys+j
>>827
ありがとうございます。
ではなにを調べればよいのでしょ?
VBAの元になったVB.netの本には書いてそうですか?
0829デフォルトの名無しさん2015/08/23(日) 15:37:58.52ID:J+cRYQ7V
>>828
VB.netはVBAの元じゃないです
歴史的に見れば.netよりVBAの方がずっと古いです
VBAの言語仕様 (文法)はWindowsよりもっと前のMS-DOSの時代に流通していたMS-BASICの影響が強く残っています
とりあえずVariantについてはWindowsクラスを調べてください
0830デフォルトの名無しさん2015/08/23(日) 15:45:58.27ID:CbBvys+j
>>829
わかりました。
ではWindowsクラスはどうやって調べますか?
VBAのクラスだとコード書くところでF2押してそのオブジェクトウインドウでクラスを調べることができますが
Windowsクラスはどこをさわってどこを見ればよいのでしょうか?
0831デフォルトの名無しさん2015/08/23(日) 15:48:38.19ID:Sv2KumfA
>>829
あんたエラいな
もう面倒臭いから
「VB.Netを調べればVariantのことならバッチリです」って書き込む衝動に駆られたよ

どうせVB.NetにはVariantなんて概念無いから調べればすぐ分かるだろうし
0832デフォルトの名無しさん2015/08/23(日) 16:10:13.13ID:MIuOfpHO
typename(変数名)ってやれば今何として使われてるのかわかるよ
0833デフォルトの名無しさん2015/08/23(日) 16:12:01.44ID:HWLa8qp/
>>830
ほらよ
http://marupeke296.com/IKDADV_CPP_VARIANT.html
0834デフォルトの名無しさん2015/08/23(日) 16:14:09.85ID:CbBvys+j
>>833
ぉぉ、ありがとうございます。
さっそく読んでみます
0835デフォルトの名無しさん2015/08/23(日) 19:08:05.67ID:pAcPKBpl
VariantやSafeArrayのことなんて今さら知ったところで役に立つまいよ
08368342015/08/24(月) 11:52:15.07ID:kqGleJUR
さっぱり意味がわからないのですが
結局はVariant型の変数の正体はどうなっているのですか?
0837デフォルトの名無しさん2015/08/24(月) 11:58:00.74ID:mvfSohk+
It's 正体ム!
0838デフォルトの名無しさん2015/08/24(月) 12:07:55.55ID:v68vlkfs
>>836
>>833で紹介されてるサイトに明確に書いてるじゃんよ。
::VariantInitしたあとvtに型識別の定数入れてその型の値を入れりゃ使えるんだよ!
0839デフォルトの名無しさん2015/08/24(月) 12:23:46.05ID:yOjBToOI
>>836
C/C++を勉強しろ
0840デフォルトの名無しさん2015/08/24(月) 14:05:05.16ID:BYoao/vR
>>836
ヨボヨボのおじいさんと
何も聞かずにその荷物を持ってあげる親切な若者の2人組

ほら空港によくいるだろ
0841デフォルトの名無しさん2015/08/24(月) 17:05:32.04ID:J76Yg4NI
分かろうとしない。理解する気が無い。単純明快じゃないと
いやだ。という事だろう。
0842デフォルトの名無しさん2015/08/24(月) 17:34:27.17ID:Kuhf7pjv
>>836
833のリンク先を見て理解できないのは勉強が足りてないだけ

たいがいの変数は型が最初から1種類に決まってるのに対して、Variantは「型が何か」と「値」のペアを入れるようになってるから
同じ変数に色々な値を入れることができる
「型が文字列で値が"abc"」とか、「型が整数で値が1234」とか

VBAでは型を勝手に判定してくれるのと、その判定基準が(たぶん)非公開なので理解しにくいってのはあるけど
0843デフォルトの名無しさん2015/08/24(月) 18:06:39.68ID:CxEN4gra
VBAスレで>>833のリンク先を理解できないと勉強不足ってなかなかきついなw
私もこのリンク先は理解できませんでした
勉強します。はい。
0844デフォルトの名無しさん2015/08/24(月) 19:35:51.19ID:EZ01N8pB
でも勉強するなら後がないC++よりC#なんでしょ?
0845デフォルトの名無しさん2015/08/24(月) 19:41:39.58ID:L+YG8AD9
実はいまだに>>840がわからない。
0846デフォルトの名無しさん2015/08/24(月) 19:56:40.68ID:j4ltc4Df
>>844
目的によるがメモリ管理なんかを勉強するなら最低でもCの挙動について知っておく必要がある。
newすりゃインスタンスがメモリ上にポンと出来るなんて甘々の高級言語なんか使ってたらいつまでもプログラマになれんのですよ!
0847デフォルトの名無しさん2015/08/24(月) 20:07:49.84ID:EZ01N8pB
>>846
じゃCとC#でいいや
3DSよりVITAのソフト作れるようになりたい
0848デフォルトの名無しさん2015/08/24(月) 20:13:49.27ID:j4ltc4Df
>>847
「○○でいいや」精神でゲーム作るならUnityなんかのAPIに慣れておく方が建設的。
まぁ一回、根幹的な仕組みを勉強してからの方が覚えやすいから無駄にはならないけど。
0849デフォルトの名無しさん2015/08/24(月) 20:31:57.81ID:Kuhf7pjv
ゲーム専用機はもうすぐ死滅するから
今はスマホアプリで我慢しとけ
0850デフォルトの名無しさん2015/08/24(月) 20:48:16.48ID:EZ01N8pB
>>849
じゃWindowsパソコンしか持ってないからAndroidStadioでJavaか
0851デフォルトの名無しさん2015/08/24(月) 22:50:47.21ID:hopDjYVC
>>846
> newすりゃインスタンスがメモリ上にポンと出来る
そう言うのを作る側に回ったことはないのか?
もしそうなら、そりゃスクリプト言語使ってるのとたいして変わらんかもな w
0852デフォルトの名無しさん2015/08/24(月) 23:06:13.03ID:EZ01N8pB
>>851
ひょっとするとインスタンス作るのに物凄く苦労するとか
0853デフォルトの名無しさん2015/08/25(火) 00:20:48.67ID:fH+tecmU
メモリ管理ってもVariantの場合はどういうタイミングで::VariantClearが行われるかとか
それをどうコントロールするかに気を使うことになる。
0854デフォルトの名無しさん2015/08/25(火) 00:28:47.69ID:SVRUkRRq
ここのセルの値をここのセルに代入みたいなマッピングが100コほどあるんですが、簡単に早く書く方法ありませんでしょうか。
0855デフォルトの名無しさん2015/08/25(火) 00:51:30.40ID:LKq1O+0D
具体例で書いてください
0856デフォルトの名無しさん2015/08/25(火) 01:02:46.86ID:SVRUkRRq
cells(i,1)=range("a3")
とか、こんなのを100コなんですが。右辺のセルは連続してません。
0857デフォルトの名無しさん2015/08/25(火) 01:03:22.37ID:3oudZYDo
>>854
何を聞きたいのか質問がさっぱりわからん
「早く書く」って、どこに何を書きたいんだ
0858デフォルトの名無しさん2015/08/25(火) 01:05:58.97ID:3oudZYDo
>>856
その右辺のセルの一覧はどっから入手すんだよ
紙にでも印刷されてんのか?

で、左辺には法則があんの?
0859デフォルトの名無しさん2015/08/25(火) 01:11:57.38ID:SVRUkRRq
左辺は1のとこが100まで100行続きます。
右辺のセルはバラバラです。
cells(i,2)
cells(i,3)

0860デフォルトの名無しさん2015/08/25(火) 01:16:53.20ID:nOqJNbIK
数字が増えるだけなら、ソースをセルで書いてからオートフィルして、エディタに転記することをたまにやる。
0861デフォルトの名無しさん2015/08/25(火) 01:32:24.93ID:3oudZYDo
>>859
右辺は配列、左辺はForで回せば同じような行を並べて書く必要はなくなる
0862デフォルトの名無しさん2015/08/25(火) 04:35:55.37ID:viArKoao
100個程度なら、ワークシート側でハードコーディング用の配列等を関数使って作ってからマクロエディタにコピペした方が早くて楽だったり
0863デフォルトの名無しさん2015/08/25(火) 12:07:24.53ID:57Wb3jlh
FileSystemObjectを最近Excelから活用することを覚えたのですが
Web上にあるファイル(イントラネットにあるいろんな拡張子のファイル)を
コピーやら移動やらFileSystemObjectで操る方法ってありますか?

仕様なのか知らないがhttp://で始まるアドレスにあるファイルは扱えない。
0864デフォルトの名無しさん2015/08/25(火) 19:20:53.18ID:SVRUkRRq
一覧表からハイパーリンクで、単票を開いて修正して保存したら、一覧側に反映されるようにマクロ組むんですが、一覧表開いたままで、一覧表を更新できませんか?
開いてるので更新できないとエラーになるんです
0865デフォルトの名無しさん2015/08/25(火) 19:21:56.96ID:SVRUkRRq
>>860
>>861
>>862

トンくす
0866デフォルトの名無しさん2015/08/25(火) 22:55:10.89ID:trQirQ+3
エラーを無視するコードを書いておいても出てくる
コードの実行が中断されました とは一体何ですか?
メモリーオーバーか何かでしょうか?
どうやったら回避出来るのでしょうか?
0867デフォルトの名無しさん2015/08/25(火) 23:03:40.80ID:Fjt3Kipb
>>833
こうしてみると
やっぱCの構造体/共用体定義って秀でてるなあ
0868デフォルトの名無しさん2015/08/26(水) 09:29:51.16ID:1qA3LFtn
なぜ禿げてるんだ?
0869デフォルトの名無しさん2015/08/26(水) 11:55:22.88ID:CfN5/oSD
>>866
コードを全部もれなくあげてみてくれ。
0870デフォルトの名無しさん2015/08/26(水) 20:51:37.95ID:Mnky30GV
>>866
誰かがBreakキーを押した
ブレークポイントがあった
中断しましたというダイアログを出すコードを書いた
0871デフォルトの名無しさん2015/08/26(水) 21:17:40.72ID:jQcdD1vT
On Error命令は、その関数内でしか有効でないはずだから、エラーが出る可能性がある全ての関数に書く必要がある。
0872デフォルトの名無しさん2015/08/27(木) 19:04:23.08ID:8KYXppfO
ただのコンパイルエラーだったり
0873デフォルトの名無しさん2015/08/27(木) 23:39:27.94ID:DSwpBmOp
>>867
ハード知識であるアライメントを意識できない最近のシステム屋は、
致命的な欠陥を作り込む場合が多い。
マイグレーションとか外部接続システムで。
0874デフォルトの名無しさん2015/08/28(金) 06:58:15.39ID:h/70kqcI
まぁVBAで考えることじゃないけどな
0875デフォルトの名無しさん2015/08/29(土) 20:20:06.39ID:daYUkBJ7
マルチスレッドできないハナクソ
0876デフォルトの名無しさん2015/08/30(日) 13:57:40.38ID:TrC601ZP
VBAで、オートシェイプの図形変更はできるでしょうか。たとえば既にある円を、
四角に変更するとか。手操作だと変更できますが、マクロ記録してみても、
何もコードが作られません。ググってみても、その情報はないような感じです。
0877デフォルトの名無しさん2015/08/30(日) 14:41:34.46ID:0qE+mi+l
>>876
もしかして2007?
2007はシェイプのマクロが記録されないバグがあるから

図形の変更はAutoShapeTypeプロパティに図形の種類を代入するだけ
例えば四角にするにはmsoShapeRectangleを代入すればいい
08788762015/08/30(日) 17:14:45.13ID:fHgQRyXi
>>877
できました。どうもありがとう。2007です。助かりました。
0879デフォルトの名無しさん2015/08/30(日) 21:14:20.31ID:kboI7nNk
VBAからブラウザでURLを指定して開く方法を学んだのですが
うちの会社の社内のイントラページを開こうとすると
普通の開き方じゃなくVBAで開こうとするとそれを感知してるっぽくて
ログイン画面に飛ばされまたIDとPWを入力しないといけなくなります。

こんなことってよくあるのですか?
どうしてもVBAで開きたい場合その対策はどうすればいいですか?
0880デフォルトの名無しさん2015/08/30(日) 21:27:29.95ID:tJkk5ci/
>>879
何か特殊な仕掛けをイントラに施しているからそうなる
社内システム管理者に聞け
0881デフォルトの名無しさん2015/08/30(日) 22:44:25.09ID:PtUjiQ8D
>>879
まず、
>VBAからブラウザでURLを指定して開く方法
この方法を書かなければ、レス付きませんよ。
0882デフォルトの名無しさん2015/08/30(日) 23:14:42.89ID:0E1Z3mSN
プロキシあたりなんだろうけど、vbaを検知なんてできるのかな。
IEを呼び出してるだけだよね?
0883デフォルトの名無しさん2015/08/30(日) 23:34:06.80ID:tJkk5ci/
今は仮想化やセキュリティやログインパスワード一元化のための仕掛けを
かましてることがあるんで、単純には開けないこともあるよ
とにかく社内システム管理者に聞くことだ
0884デフォルトの名無しさん2015/08/31(月) 00:11:29.55ID:g6VDKMqY
別のwindowでsessionが引き継がれてないかrefererで弾かれてるだけだろ
0885デフォルトの名無しさん2015/08/31(月) 01:19:07.67ID:PyRduorc
>>879
シングルサインオンの認証基盤使っているんだろ。

フォームのブラウザ部品を使っているなら、
エクセルを立ち上げたあと、Webクエリを開いて、ログイン画面にID,PWを入れてログインする。
これでエクセルに認証済セッションが確立されるから、あとはマクロを実行すれば良い。

IEオブジェクトの場合は、ログイン済みのIEプロセスを取得するようにすれば良い。
もしくは、VBAで新規IE立ち上げてURLを開いた後に、タイトルを取得してログイン画面だったら、
IDをPWを流し込むようにすれば良い。
0886デフォルトの名無しさん2015/08/31(月) 02:55:31.01ID:7cfpxY0w
Microsoftクエリって内部はado?
0887デフォルトの名無しさん2015/08/31(月) 17:58:03.77ID:+ep0qKm5
>>879
たぶん、普通にIEをダブルクリックで開いてパスワードを入れた後で、VBAから新規にIEオブジェクトを作成してんだと思うけど、
その方法だとパスワード認証情報は引き継がれない
対策は色々あるけど、VBAで何をやりたいかによる
0888デフォルトの名無しさん2015/08/31(月) 18:06:40.81ID:ch2DQs3g
>>887
自動でテキストボックスやチェックボックスに文字をいれたりチェックしたりして
最後にボタンを押したいのです。
0889デフォルトの名無しさん2015/08/31(月) 18:48:32.91ID:lFDVUwIc
>>888
パソコンが完全に自分専用ですぐ終わる処理なら、IDとPWもVBAから入力してやれば全自動にできる
その場合VBAのソースにパスワードを書くことになるので、他人に見られる可能性がある場合は危険すぎておすすめできない

画面のデザインや操作の手順が完全に固定されてるならIEオブジェクトは使わずにSendKeysで操作する方法がある
フォーカスの移動はTabキー、チェックボックスはスペースキーでチェックできる
0890デフォルトの名無しさん2015/08/31(月) 18:49:46.39ID:lFDVUwIc
追記
ボタンを押すのはフォーカスを合わせてEnterな
0891デフォルトの名無しさん2015/08/31(月) 19:01:11.41ID:ch2DQs3g
>>889
なぜIEオブジェクトは使わない方法をすすめるのですか?
SendKeysはその間他の操作ができないしなんか不安になる。
0892デフォルトの名無しさん2015/08/31(月) 19:02:04.47ID:ch2DQs3g
GetElementByIDでちゃんと取れるのですが
問題は先に書いた、ログイン画面が表示されたり変な画面になることです
0893デフォルトの名無しさん2015/08/31(月) 19:31:11.66ID:I/nqUJvX
なんで >>881 に回答 しない/できない 奴の相手するかなぁ...
0894デフォルトの名無しさん2015/08/31(月) 19:32:10.78ID:LuRVaWQV
再度ログイン画面になるってことはセッションが切れてるんだろ
一つのIEオブジェクトで一貫して操作してないとか何かしら問題のあるスクリプトになってんじゃないか
0895デフォルトの名無しさん2015/09/02(水) 22:38:31.24ID:U41rngxq
ワークブック開いて、違うワークブックに転記するコードがあるんですが、ワークブック開かずセルの値を転記するにはどのように書くことできますか?また速度的にはかなり早くなりますか?
0896デフォルトの名無しさん2015/09/02(水) 22:43:43.58ID:Io8ALjDg
ワークブックを開かずにセルを参照することは不可能だよ
0897デフォルトの名無しさん2015/09/02(水) 23:07:09.38ID:LGUC5Icc
zipで展開してxmlを読み込んでパースしてセルの値を取得するしかないね。
0898デフォルトの名無しさん2015/09/02(水) 23:25:07.33ID:U41rngxq
ExecuteExcel4Macroで、対応できるようですね。ただ古いエクセルは使わないほうがいいんでしょうか。
0899デフォルトの名無しさん2015/09/03(木) 00:35:37.99ID:ZIG14SBg
フリーで EXCEL ブックにアクセスするツールってあったよね。
そう言うのじゃダメなん?
0900デフォルトの名無しさん2015/09/03(木) 01:10:03.90ID:7u8Pd6k9
>>895
直接操作はできないけど
ワークセルを介すればどうでしょうか?

Sub TEST()
Range("A1").Formula = "='D:\TEST\[TEST1.xlsm]Sheet1'!A5"
Debug.Print Range("A1").Value
End Sub

速度とかは知らない
ちなみに 自分は EXCEL2013
0901デフォルトの名無しさん2015/09/03(木) 01:13:49.44ID:S2+8lDDQ
For Each wname In Windowsですが 、これまで問題なかったのに
最近全部まわらず途中で終わってしまうことが増えました。
windows update でofficeが少し変わったからだと思いますが、
対処方法はありますか?
win7 X64です。
0902デフォルトの名無しさん2015/09/03(木) 01:46:10.33ID:5AuTPVsb
>>900
依頼者じゃないけどやってみたら動いた  そんな手があったのかw

それがいけるならこれでいいじゃん!
Debug.Print Evaluate("='D:\TEST\[TEST1.xlm]Sheet1'!A5")
と思ったが2023エラーがでちゃうね アララ 残念
09039002015/09/03(木) 02:08:19.63ID:7u8Pd6k9
>>902
じつはこれ
EXCEL97時代にブック壊れてEXCELでオープン出来なくなった時
データサルベージに使った手法なんですよね
全ての破損に対応できるとは限らないけど
これで かなりのデータ復旧できたのよ
なつかしす
0904デフォルトの名無しさん2015/09/03(木) 21:18:58.57ID:gI7qOxsQ
たとえば連続したセルに「Font」「Color」「RGB(255,0,0)」と入っていて、
それを直接的に利用してCells(1,1).Font.Color = RGB(255,0,0)という設定をする、みたいな方法はありませんか?

if文やSelection文を使って処理を分岐するという方法ですと全てのメンバーを網羅するのが大変なので、
あくまでマクロ側は「どのメンバーを」「どう弄るのか」を知らずに盲目的に受け取った文字列をメンバーや引数として処理するという方法が欲しいのですが、
VBAだとこういう処理は難しいのでしょうか?
0905デフォルトの名無しさん2015/09/03(木) 21:40:39.13ID:8gUdvpRg
>>904
無理じゃないかなあ
その三つをつなぐドットやイコールは誰がどうやって指示するの?
0906デフォルトの名無しさん2015/09/03(木) 22:07:28.37ID:5AuTPVsb
>>904
無理です
間接的に利用してください
0907デフォルトの名無しさん2015/09/03(木) 22:45:46.77ID:WEVKW98e
演算子の問題が解決したとして、テキストファイルに書き出してVBAプロジェクトオブジェクトからインポート
0908デフォルトの名無しさん2015/09/03(木) 23:06:04.80ID:PAfGEiTT
>>904
望みがありそうな方法としては

1.APIのコールバックで何とかする
2..Netフレームワークをインストールしてリフレクションで何とかする
3.Application.Runで何とかする

くらいか
0909デフォルトの名無しさん2015/09/03(木) 23:45:35.10ID:a3XAcmHw
>>904
動的に書き換えられたとして、コンパイルしなきゃだし
VBA単体では無理だと思います

代替案も思い付かず…
0910デフォルトの名無しさん2015/09/04(金) 00:45:19.08ID:Ehviu2S7
>>904
「VBAだと」って言うけど、そういうことができる言語ってあるの?
0911デフォルトの名無しさん2015/09/04(金) 01:33:24.64ID:ExFTHLbB
いわゆるEvalが実装されてる言語なら出来そうだけど、ExcelのVBAでは無理だな
EvaluateとCallByNameで何とか出来るかもしれんが、汎用的には無理だと思う
0912デフォルトの名無しさん2015/09/04(金) 02:18:22.69ID:PCIPeDCd
>>904
プロシージャをVBAで生成してそれを実行するとか
A1,B1,C1へそれぞれ「Font」「Color」「RGB(255,0,0)」とあったとして

Sub TEST()
Dim VBC As VBComponent
Set VBC = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)

VBC.CodeModule.InsertLines VBC.CodeModule.CountOfLines, "Sub TESTX()"
VBC.CodeModule.InsertLines VBC.CodeModule.CountOfLines, "Cells(1,1)." _
    & Range("A1") & "." & Range("B1") & "=" & Range("C1")
VBC.CodeModule.InsertLines VBC.CodeModule.CountOfLines, "End Sub"

Application.Run "TESTX"
ThisWorkbook.VBProject.VBComponents.Remove VBC

End Sub

上はただつなげてるだけだから
セル内容チェックを十分しないと コンパイルエラーになる可能性が大きいけど
0913デフォルトの名無しさん2015/09/04(金) 05:42:14.15ID:HtSUMw5S
>>905-912
回答ありがとうございます。
とりあえずApplication.Runで何とか出来ないか試してみたいと思います。
0914デフォルトの名無しさん2015/09/04(金) 12:34:46.44ID:5E7pI8p5
使うAPI名が決まってるなら名前と関数の対のテーブルで擬似的に呼び出すって方法が
つっても関数がファーストクラスじゃないんだよねえ
VBやめてjavascriptで実装してVBAから渡すとか・・・
0915デフォルトの名無しさん2015/09/04(金) 13:28:33.31ID:5E7pI8p5
つーか>>912でいいじゃん
面白いな
0916デフォルトの名無しさん2015/09/04(金) 19:20:11.14ID:bKoadVKQ
誰か開いてて読み取り専用の場合はworkbook_openに書いたマクロを無効にして、そのブックをダブルクリックで開きたいのですが、どのように書いたらいいですか?
0917デフォルトの名無しさん2015/09/04(金) 19:41:44.85ID:PCIPeDCd
>>916
読み取り専用で開いたかどうかは
ThisWorkbook.ReadOnly
で判定できるよ
0918デフォルトの名無しさん2015/09/04(金) 20:18:28.18ID:bKoadVKQ
>>917
そうなんですよね。ブックオープンが走る前にそのプロパティーで判別できたらいいんですけど
0919デフォルトの名無しさん2015/09/04(金) 20:26:04.68ID:PCIPeDCd
>>918
ブックオープンの最初で判定させればいいだけでは?
ブックオープンが動作した所で 一番最初に判定して EXIT SUB とかすれば
本来の処理が実行されないので 問題なくね
0920デフォルトの名無しさん2015/09/04(金) 20:27:29.34ID:ntJe9Vs/
>>918
オープンして読み取り専用なら何もせず閉じるコードを
Workbook_openの最初に追加すればいいじゃないか
0921デフォルトの名無しさん2015/09/04(金) 21:14:08.24ID:bKoadVKQ
そのとおりですね。排他処理がめんどくさい
0922デフォルトの名無しさん2015/09/04(金) 21:38:02.04ID:A59C16Ao
>>921
排他処理は Excel がやるだろ
何が難しいんだ?
0923デフォルトの名無しさん2015/09/04(金) 21:49:51.19ID:bKoadVKQ
>>922
その排他処理って読み取り専用になることをいってますか?
ファイルサーバで複数人が触るブックで、どうデータを入力すとか、順序とか考えるとこんがらがってきた
0924デフォルトの名無しさん2015/09/04(金) 22:30:27.78ID:HtSUMw5S
根本的な話として複数人が同時に触るんならエクセルファイルじゃなくてアクセスにすべきじゃねぇかな。
エクセルって基本的に電卓の亜種であってデータベースソフトじゃないし。
0925デフォルトの名無しさん2015/09/04(金) 22:44:40.65ID:uxFbuttR
>>923
そりゃ運用の問題だ
とりあえずブックの共有でいいんじゃね
マクロは知らんけど
0926デフォルトの名無しさん2015/09/04(金) 23:28:13.59ID:bKoadVKQ
>>925
運用も言うこと聞くようなおっさん達じゃないんだよなー。文句だけ言う奴らで
0927デフォルトの名無しさん2015/09/04(金) 23:42:32.76ID:uxFbuttR
お前んところの事情なんて語られてもしょうがない
0928デフォルトの名無しさん2015/09/04(金) 23:43:00.47ID:VusSFEWo
そりゃまぁ、2ちゃんねるで質問して喜んでるような輩に運用任せてる時点でお察し
0929デフォルトの名無しさん2015/09/04(金) 23:52:57.51ID:TmLEs7On
ここでの運用は特定の人たちを指す言葉ではなく、活用とか行動とか言う意味
0930デフォルトの名無しさん2015/09/05(土) 00:18:44.48ID:FRI4E2ZT
>>928
どこで喜んでるんだよw
0931デフォルトの名無しさん2015/09/05(土) 02:42:20.04ID:CmBaCyqy
>>924が正論かな。

多数の人が一度に書き込むときの制御はEXCELに向いていない。

何かファイルサーバ上で共有切ってるだけで不安定な気がする。

中にはOpenOfficeでアクセスしようとする奴もいるし。
0932デフォルトの名無しさん2015/09/05(土) 03:14:44.10ID:3MtyEdK2
SharePointってあったけど、あれはどうなん?
0933デフォルトの名無しさん2015/09/05(土) 13:16:01.25ID:x7KkU3nJ
ショートカットファイルがたくさんありますが
今回、そのドライブレターを変えたのと、半分くらいはフォルダを作ってそれに入れたのでリンクが少しだけ規則的にかわりました。

FileSystemObjectというのを知っていままで使ったことがありますが
このFileSystemObjectを使ってショートカットファイルのリンク先を変更するには
どうすればいいでしょうか?
0934デフォルトの名無しさん2015/09/05(土) 14:25:00.38ID:ZKXW4+L0
>>933
スレ違いでは?
Excelに全く関係ないと思うんだが
0935デフォルトの名無しさん2015/09/05(土) 14:31:39.79ID:Hu04yitT
漠然とした質問なんですが・・・

VBAで色々作るの面白いから仕事を自動化させてるんだが
コントロールフォームのボタンを沢山作り過ぎて逆に見栄えが悪い&使いづらくなってしまった・・・

ボタン押すだけで特定の業務を自動化できるのはいいんだがいかんせんボタンが多すぎ
こういう場合はどうしたはいいんだ?
何か定石というかアイディアないですか?
0936デフォルトの名無しさん2015/09/05(土) 14:37:21.77ID:ZKXW4+L0
>>935
君はさらにスレ違い
もはやVBAの話題ですらない
0937デフォルトの名無しさん2015/09/05(土) 14:42:39.88ID:L+jn/gme
>>935
同一の動作をするボタンをまとめて、組み合わせで特定の作業が出来る様にするとか、
動作をリストボックス表示にしてリストから選択した作業だけ実行する様にするとか。
0938デフォルトの名無しさん2015/09/05(土) 14:51:35.90ID:wnxJPoz8
>>933
Office TANAKA - 番外編[lnkファイルのリンク先を取得する]
http://officetanaka.net/other/extra/tips12.htm
0939デフォルトの名無しさん2015/09/05(土) 14:59:22.82ID:84U+9ZQ6
>>935
ボタンをセルと同サイズにして縦に並べて、横に進捗状況をプロットする様にしてる
順番に押していかないとエラーで止まる様にしたりもする
0940デフォルトの名無しさん2015/09/05(土) 15:01:26.21ID:x7KkU3nJ
>>935
フォームに「マルチページ」のコントロールを貼り付けて
ページごとに似通った機能をまとめたまえ。
0941デフォルトの名無しさん2015/09/05(土) 15:17:17.15ID:x7KkU3nJ
>>938
謝謝!
0942デフォルトの名無しさん2015/09/05(土) 15:47:59.73ID:x7KkU3nJ
LnkFile.TargetPathは、読み取りはできても書き込みはできないようなのですが。
0943デフォルトの名無しさん2015/09/05(土) 15:49:08.28ID:x7KkU3nJ
ところで
Sub Sample2()
 Dim WSH, LnkFile, DeskTopPath As String, LnkFileName As String
 Set WSH = CreateObject("WScript.Shell")
 DeskTopPath = WSH.SpecialFolders("Desktop")
 LnkFileName = DeskTopPath & "\メモ帳.lnk"
 Set LnkFile = WSH.CreateShortcut(LnkFileName)
 MsgBox LnkFile.TargetPath
 Set LnkFile = Nothing
 Set WSH = Nothing
End Sub
のようなコードがあったとして、LnkFileのクラス(?)のメンバをオブジェクトブラウザで見れるようにする方法はありますか?
0944デフォルトの名無しさん2015/09/05(土) 16:35:27.01ID:x7KkU3nJ
>>942
LnkFile.Save
とすればできるよ
0945デフォルトの名無しさん2015/09/05(土) 16:37:12.71ID:x7KkU3nJ
>>944
おお、すばらしい!!!
0946デフォルトの名無しさん2015/09/05(土) 16:52:31.34ID:x7KkU3nJ
>>943
Window Script Host Object Modelを参照設定したまえ
0947デフォルトの名無しさん2015/09/05(土) 18:53:28.77ID:McuB2/kQ
>>939
> 順番に押していかないとエラーで止まる様にしたりもする
俺は押せないボタンが事前にわかってるなら Enabled = False にするな
0948デフォルトの名無しさん2015/09/06(日) 06:51:37.28ID:uAyrTmIH
基本的なことで、はまっています。2007です。UserFormに、
チェックボックス3個あって、どれかにチェックが入ると
他はチェックがオフになるようにしたいんですが、うまくいきません。

Private Sub CheckBox1_Click()
CheckBox1.Value = True
CheckBox2.Value = False
CheckBox3.Value = False
end sub

同様に、CheckBox2,3も、それぞれ自身がTrueでほかはFalse。
CheckBox1をクリック → チェック入る
CheckBox2  〃  →  〃     1 チェック消える
CheckBox3  〃  →   〃     2   〃
CheckBox1または2クリック → チェックはいらず、3チェックはいったまま。(A)

最初にCheckBox3クリックすると、チェックはいり、その後
1または2クリックしても、(A)の状態。なせでしょう。
(フレームに入れてみても、それだけだと複数チェックがはいってしまう。)
0949デフォルトの名無しさん2015/09/06(日) 09:02:44.39ID:wPdoKzWW
>>948
check1クリックイベントハンドラー内に入った時点でcheck1の値は反転しているので、自身の値は設定不要。
そしてcheckの値を反転させると、それぞれのクリックイベントが発生する。

この辺りの挙動を整理して実装しないと、変なループが発生しますよ。
無限ループとか
0950デフォルトの名無しさん2015/09/06(日) 09:11:51.51ID:Rqv/7r06
「どれかひとつを選択」ならオプションボタンがいいよ。
0951デフォルトの名無しさん2015/09/06(日) 09:15:40.01ID:pMKgJlgc
クリックされたときに他のチェックをはずす処理が必要なのは自身の値がtrueになったときだけだよね

if check1.value = falseのときはexitするようにすればいいんじゃない?
0952デフォルトの名無しさん2015/09/06(日) 09:34:13.01ID:7OdEXCxT
>>950
オプションボタンだとオフにできないんじゃない?

>>948
チェックボックス+排他
で山ほどサンプルあるでしょ
0953デフォルトの名無しさん2015/09/06(日) 10:31:59.79ID:AH5FZdvj
CreateObjectじゃなくGetObjectでWordやOutlookを開きたいんです。
なぜならすでに開いてたら二重で開くことになるから。
でももしもまだそれを開いてなかったらエラーがでてえらいこっちゃとなります。
これは定跡的にはどうやって対策しますか?
0954デフォルトの名無しさん2015/09/06(日) 11:10:34.16ID:8yRgk1H4
チェックボックスで排他とか変なUI作るなよ
09559482015/09/06(日) 11:41:16.35ID:3umPcbKU
みなさん、アドバイスありがとうございました。
恥ずかしながら、チェックボックスとオプションボタンをよく理解しておりませんでした。
オプションボタンで、解決しました。いろいろ、勉強になりました。どうもです。
0956デフォルトの名無しさん2015/09/06(日) 16:33:37.25ID:tXhFn+ho
>>953
GetObjectでエラーになったらCreateObjectすれば
0957デフォルトの名無しさん2015/09/06(日) 16:51:05.77ID:Ir/JiN9v
>>954
でもマジで作るやついるんだよ
最初見た時はマジで意味わからんかった
なんか(間違った)独自性を出したかったんだろうか...
0958デフォルトの名無しさん2015/09/06(日) 17:09:04.33ID:kcKZyiZs
ラジオボタンを知らなかったんだろ
0959デフォルトの名無しさん2015/09/06(日) 17:10:50.93ID:tXhFn+ho
>>954 >>957
いやWindowsServerの役割と機能とか見たことない?
チェックボックスはただのOn/Offスイッチ的な側面もあるんだよ
なぜか他に適当なコントロールも無いし
0960デフォルトの名無しさん2015/09/06(日) 17:54:40.03ID:Ir/JiN9v
>>959
> いやWindowsServerの役割と機能とか見たことない?

どのバージョンの話?
2003, 2008, 2012 見たけど排他になってるやつなんてないけど?

> チェックボックスはただのOn/Offスイッチ的な側面もあるんだよ

つか、その機能しかないけど?
0961デフォルトの名無しさん2015/09/06(日) 18:02:14.05ID:AH5FZdvj
>>956
いやエラーになる前にCreateObjectしたいのですが。
そのためのif文でなにを書けばいいのでしょう?
0962デフォルトの名無しさん2015/09/06(日) 18:33:55.51ID:JKlgepEb
>>961
WordやOutlookが開いているかどうかはどうやって調べるつもり?
その為のGetObjectじゃないか とおもうが

GetObject成功・・・・開いてた →取得したオブジェクトを利用
GetObject失敗・・・・開いてない→CreateObjectしてそれを使用
0963デフォルトの名無しさん2015/09/06(日) 18:39:56.86ID:tXhFn+ho
>>960
スイッチとして扱うなら排他でも何も違和感ないでしょって話
0964デフォルトの名無しさん2015/09/06(日) 19:09:18.56ID:Ir/JiN9v
>>963
お前はそうかもしれないけど大多数の人はそうじゃない
反論するなら有名どころのソフトで排他になってる例を 10個ぐらい挙げてくれ
0965デフォルトの名無しさん2015/09/06(日) 19:12:40.91ID:JSf18249
>>964
それは無茶言うもんやろ。
無茶なこと言うて相手黙らせたら満足するんかい。
しょーもないやっちゃな。
0966デフォルトの名無しさん2015/09/06(日) 19:13:34.11ID:JSf18249
しょーもないやつやな言うとんねん。
ホンマしょーもないわ、かー。
0967デフォルトの名無しさん2015/09/06(日) 19:40:43.00ID:Ir/JiN9v
>>965
違和感あるから誰もそんな UI にしない
ないなら、そう言う UI がいくらでもあるはず
しょうもないとか言う負け犬の遠吠えは恥ずかしいだけ
0968デフォルトの名無しさん2015/09/06(日) 19:44:17.84ID:JSf18249
>>967
いくらでもあるんやったら10個ぐらい挙げてくれ
お前が言うたんやからないくらでもあるんやろ
はよしてや
0969デフォルトの名無しさん2015/09/06(日) 19:46:11.11ID:JSf18249
有名なやつやで
有名なやつ10個や
いくらでもある言うたんやから簡単やろ
はよしてや
0970デフォルトの名無しさん2015/09/06(日) 20:26:59.64ID:8yRgk1H4
独立オプションの為のUIがチェックボックス
排他オプションの為のUIがオプションボタン
あえてそのセオリーに逆らう必然性は全くない
0971デフォルトの名無しさん2015/09/06(日) 20:27:13.49ID:Ir/JiN9v
>>963 の言う通り排他でも何も違和感) ないなら、そう言う UI がいくらでもあるはず

あるなんてどこに書いてあるんだ?
まさか、「はず」の意味すら理解できないのか?
0972デフォルトの名無しさん2015/09/06(日) 20:33:21.40ID:JSf18249
>>971
いくらでもあるはずや言うたやんか。
あるんやったら言うてみい。
言えへんのやろ?せやったら他の人にも言うたらあかんわ。
それを無茶や言うとんねん。無茶言うたらあかん。
無茶だけはやめときい。あんたのためやで。
排他でもなんら違和感ない。それでええな?
0973デフォルトの名無しさん2015/09/06(日) 20:40:24.60ID:Ir/JiN9v
>>972
わざわざかっこ付きで書いてあるんだからちゃんと読め
仮定法わからないならしょうがないが w
0974デフォルトの名無しさん2015/09/06(日) 20:48:27.41ID:JSf18249
>>973
そんなんどうでもええ。
無茶だけは言うたらあかん。
チェックボックスで排他はええ。
0975デフォルトの名無しさん2015/09/06(日) 21:12:35.12ID:Ir/JiN9v
理解できなかったのか... w
0976デフォルトの名無しさん2015/09/06(日) 21:16:58.49ID:JSf18249
>>975
どうでもええとこにこだわりもてへん言うてんねん。
本筋から外れとるやろ。仮定法の話違うかったやろ。
本筋見失ってどうすんねんな。国語のスレちゃう。Excel VBAのスレや!!
0977デフォルトの名無しさん2015/09/06(日) 21:29:51.58ID:NotYgcdX
VBA関係ないから排他的なチェックボックスの話題はおしまい
0978デフォルトの名無しさん2015/09/06(日) 22:51:05.31ID:TqvVUxNb
>>976
そのうざい似非関西弁口語口調目障りだから止めろ
0979デフォルトの名無しさん2015/09/06(日) 22:54:27.27ID:JSf18249
>>978
このたびは不快な思いをさせてしまい誠にすんまへんでした。
0980デフォルトの名無しさん2015/09/07(月) 00:20:37.43ID:cu3gW1D3
すんまへんでんねんまんねん
0981デフォルトの名無しさん2015/09/07(月) 06:19:18.31ID:iIih6qgJ
排他のチェックボックス作るような奴はおかしい奴ってことがはっきりしたな
0982デフォルトの名無しさん2015/09/07(月) 07:17:25.51ID:o9/XMBwE
次スレは何処?
0983デフォルトの名無しさん2015/09/07(月) 07:55:12.25ID:7q49S6cJ
>>982
ここ?
Excel VBA 質問スレ Part37 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1433920729/
0984デフォルトの名無しさん2015/09/07(月) 13:54:06.26ID:qNXpHtIR
>>983
そこでいいの?
0985デフォルトの名無しさん2015/09/07(月) 14:07:41.21ID:qNXpHtIR
じゃー梅
0986デフォルトの名無しさん2015/09/07(月) 19:03:09.19ID:E2JS6OsF
>>982-984
そこは勝手に改悪したテンプレを盾にしてスレチだなんだと五月蝿いのが居るからダメ

本来の次スレはこっちに立てた
http://peace.2ch.net/test/read.cgi/tech/1441619979/
0987デフォルトの名無しさん2015/09/07(月) 22:43:17.03ID:EWpXgtHr
>>986


では埋めだな
0988デフォルトの名無しさん2015/09/07(月) 23:45:23.23ID:nzOhKJqK
>>986
乙です
0989デフォルトの名無しさん2015/09/08(火) 00:11:02.38ID:oVeubNzq
ゆっくり進行スレなのに埋める意味があるのかな
0990デフォルトの名無しさん2015/09/08(火) 00:18:05.36ID:knpqgMY3
980過ぎた翌日に自動的に落ちるシステムだから埋めても埋めなくても同じ
0991デフォルトの名無しさん2015/09/08(火) 06:41:21.95ID:ExO7c6Yl
うめしばー
0992デフォルトの名無しさん2015/09/08(火) 06:55:07.33ID:u1cdNMtc
Debug.Print "埋め"
0993デフォルトの名無しさん2015/09/08(火) 16:10:27.39ID:GKBL/Ew7
うめてんてー
0994デフォルトの名無しさん2015/09/08(火) 18:21:28.19ID:knpqgMY3
Hello 埋め world
0995デフォルトの名無しさん2015/09/08(火) 18:38:32.25ID:m7aBfM8f
sub()
0996デフォルトの名無しさん2015/09/08(火) 22:10:12.77ID:oGp/KliX
次スレ
Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/
0997デフォルトの名無しさん2015/09/09(水) 02:15:08.16ID:uHaCyZBl
Exit Sub
0998デフォルトの名無しさん2015/09/09(水) 02:31:10.17ID:qFTQoAT6
980過ぎた翌日に自動的に落ちるシステムの喪失
0999デフォルトの名無しさん2015/09/09(水) 06:14:26.58ID:ys1D99oR
うめちゃん
1000デフォルトの名無しさん2015/09/09(水) 06:50:57.03ID:aBvbVIMR
Excel VBA 質問スレ Part38 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。