2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Excel VBA 質問スレ Part37

1 :デフォルトの名無しさん:2015/01/10(土) 07:06:30.56 ID:2VZ4g5kC.net
ExcelのVBAに関する質問スレです

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

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

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

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

※頭のレスの方でキチガイが束縛テンプレを貼る詐欺行為が前スレまで散見されましたので、十分にご注意ください。

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

3 :デフォルトの名無しさん:2015/01/13(火) 20:21:25.89 ID:GlIqiIHJ.net
しかしこいつが荒らしでなかったとしたらずっと教えて君でへばりついてることになるが
どんだけ頭悪いんだよ

4 :デフォルトの名無しさん:2015/01/24(土) 16:23:21.17 ID:xRwObAQk.net
はいざんねーん

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

5 :デフォルトの名無しさん:2015/04/01(水) 20:00:11.48 ID:/egDYYol.net
ここプログラマ:非プログラマは1:2位かな?

6 :デフォルトの名無しさん:2015/04/01(水) 21:50:18.58 ID:by1Nk6ea.net
>>5
前スレで、ここ使っておけばいいんじゃない?とか言っといて何なんだけど、まだ未消化のスレがあったわ

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

こっちが先だな

7 :デフォルトの名無しさん:2015/04/06(月) 16:22:48.77 ID:R0FU2E8+.net
Sub Test1()から呼び出したいSub Test2()があるんだけど
このTest2というのは必ずTest1の中からしか呼び出されないから
Test1とTest2を並列に並べる感じじゃなくて
Test1の内部にTest2に位置させる構造みたいにすることはできないですか?

8 :デフォルトの名無しさん:2015/04/06(月) 16:23:35.95 ID:R0FU2E8+.net
× Test1の内部にTest2に位置させる構造
○ Test1の内部にTest2を位置させる構造

9 :デフォルトの名無しさん:2015/04/06(月) 16:52:48.52 ID:PufGX+Fr.net
>>7
意味不明

10 :デフォルトの名無しさん:2015/04/06(月) 17:03:46.81 ID:R0FU2E8+.net
>>9
意味がわからないのはプログラミング経験が少ないからだよ

11 :デフォルトの名無しさん:2015/04/06(月) 17:04:40.63 ID:R0FU2E8+.net
JavaでいうインナーClassみたいな感じだ。

12 :デフォルトの名無しさん:2015/04/06(月) 17:50:46.40 ID:iaxKA84j.net
予想屋かよ

13 :デフォルトの名無しさん:2015/04/06(月) 18:14:20.93 ID:9rihMm0H.net
>>7
内部に配置は無理だから
Test1とTest2を同じ標準モジュールに定義して
Test2をPrivateにしとけばいいんじゃね

14 :デフォルトの名無しさん:2015/04/06(月) 18:22:01.26 ID:F3YvzXsi.net
>>13
多分、それは分かってて、わざわざ>>7みたいな事をしたいって事なんだろう
それに何の意味があるのかは知らんが

15 :デフォルトの名無しさん:2015/04/06(月) 18:41:30.28 ID:V7u5im+A.net
>>7
推奨されない方法だけど こゆこと?
http://officetanaka.net/excel/vba/statement/GoSubReturn.htm

16 :デフォルトの名無しさん:2015/04/06(月) 21:17:56.24 ID:6qozZbmR.net
Object指向言語なら

17 :デフォルトの名無しさん:2015/04/06(月) 21:21:39.89 ID:6qozZbmR.net
Object指向言語ならInnerClassやDelegateを使えばまぁ、それっぽい小洒落たものを作ることは出来るけど、
VBAではそう言うのないし、GOSUBは余りお勧め出来ない。
Test1以外から呼ばなきゃいいじゃんと言うのが結論。

18 :デフォルトの名無しさん:2015/04/06(月) 23:58:22.10 ID:PqbjMR/u.net
>>11
ここはVBAのスレだからVBAで説明してくれ

19 :デフォルトの名無しさん:2015/04/07(火) 05:37:09.40 ID:T6jm7qcv.net
だから先にこっち使ってくれ

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

20 :デフォルトの名無しさん:2015/04/10(金) 13:14:42.52 ID:Ayhlqbgx.net
プロシージャ間で値をやり取りすることが多いんですが、
モジュールレベル変数で宣言するのとcall byvalで参照渡しするのと
処理速度的にはどっちが速いですか?

プロシージャ間の行き来は数十万回レベルです。
同一プロシージャに書けばいいんでしょうけど…

21 :デフォルトの名無しさん:2015/04/10(金) 13:56:56.78 ID:qqTdbdnb.net
>>20
実測すれば解決するよ

22 :デフォルトの名無しさん:2015/04/10(金) 16:22:02.68 ID:Ayhlqbgx.net
>>21
適当に作ったマクロで実測してみた。

Call Byvalのほうが1.5倍近く遅いようだ。

23 :デフォルトの名無しさん:2015/04/10(金) 18:49:19.21 ID:qqTdbdnb.net
>>22
宗教上の理由でByValをデフォルトとしたくて、その実行時間の差が許容できる範囲なら
そうすればいいし、特にこだわりがなければByRefをデフォルトとすればいいってことだね。

24 :デフォルトの名無しさん:2015/04/11(土) 15:57:52.11 ID:Di7hwpD1.net
ByValで参照渡しってどういう意味?
参照渡しならByRefだよね?

25 :デフォルトの名無しさん:2015/04/11(土) 18:00:30.31 ID:j7Y/pu4p.net
さすがにそこは流してはいけないところw

26 :デフォルトの名無しさん:2015/04/11(土) 18:39:12.87 ID:QOc8rwlG.net
参照渡しの値渡しのことじゃないの?

27 :デフォルトの名無しさん:2015/04/11(土) 18:56:22.02 ID:tS4MnGx5.net
ここは矢切の渡しとボケないといけないとこだろ

28 :デフォルトの名無しさん:2015/04/12(日) 23:06:14.03 ID:PTItGJj5.net
渡しバカよね〜 おバカさんよね〜

29 :デフォルトの名無しさん:2015/04/15(水) 12:45:03.10 ID:s88AraXc.net
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

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

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

31 :デフォルトの名無しさん:2015/04/15(水) 16:27:49.21 ID:32OEEOG2.net
>>30
そちらのスレは荒らしが立て逃げした糞なスレだよ。
本来落として置かなければいけなかったものだ。

32 :デフォルトの名無しさん:2015/04/15(水) 17:38:42.58 ID:VbMyd246.net
>>31
どうでもいいってか、どっちかと言うと荒らしが立てたのは
http://peace.2ch.net/test/read.cgi/tech/1420790342/l50
のほう
(実質的にこのスレの前々スレとして機能したけど、
本来は>>30で書いたスレのほうが先にたってた)

33 :デフォルトの名無しさん:2015/04/15(水) 21:40:21.80 ID:uwjeRs/E.net
一時期酷かったもんな。やれコードは書くなとかヒントにとどめておけとか

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

今考えてみると「こうあるべき」と押し付ける荒らしの走りだったのかもな

34 :デフォルトの名無しさん:2015/04/18(土) 15:22:06.34 ID:G8uXmJk6.net
vbaの変数名の合理的命名ルール教えてくれるところ無い?
本でも可。
カビの生えたおじいちゃんの価値観で染まったのはNG。

35 :デフォルトの名無しさん:2015/04/18(土) 15:39:26.25 ID:mSwoExrO.net
>>34
そんなものはないし、お前のような馬鹿じゃ何やっても無駄

36 :デフォルトの名無しさん:2015/04/18(土) 17:16:49.33 ID:vWBjvHtT.net
ロートルがファビョっとるw

37 :デフォルトの名無しさん:2015/04/26(日) 16:04:49.69 ID:IDXPl2M+.net
最近VBAを勉強し始めたんですけど
=
:=
の違いは何ですか?
上は右辺を左辺に代入
下は何ですか?

38 :デフォルトの名無しさん:2015/04/26(日) 16:17:52.04 ID:P1ipXLUA.net
http://www.relief.jp/itnote/archives/001014.php
「:=」(コロン・イコール)ってどういう意味?−名前付き引数

ぐぐれば判ることを聞こうとする辺り勉強する気ナッシングですね

39 :デフォルトの名無しさん:2015/04/26(日) 16:41:14.62 ID:PlxCC65O.net
そう言いながら教えてやるおまいも屑

40 :デフォルトの名無しさん:2015/04/26(日) 18:22:52.99 ID:se3i9COa.net
この程度の質問は田中さんに聞けよ



カルチャーブレーンの

41 :デフォルトの名無しさん:2015/05/03(日) 20:22:20.22 ID:OEqGa4+Y.net
教えてください。
Excelで事務系のフリーウェアを公開してるのですが、全国でどのくらいの本数が動いているのか分かりません。
また、どの機能をどのくらい使われてるのかも分かりません。
起動させた時にこれらの情報を載せたメールを送信させようかとも思ったのですが、一筋縄では行かなそうでした。
利用者の名前や住所を載せるつもりはありませんが、そもそもそんなメールを出させて良いのかどうかも分かりません。
これらの情報を知りたい場合、一般的にどのような方法が取られているのでしょうか?
どうかご教示ください。

42 :デフォルトの名無しさん:2015/05/03(日) 21:36:32.07 ID:7AJkLeM5.net
>>41
自分がほしい情報をボタン一つでファイルに吐き出せるようにして、メールで送ってもらうとか Web にアップロードできるようにするとか
ただし、俺なら送らないけどな

43 :デフォルトの名無しさん:2015/05/04(月) 04:00:08.42 ID:O720nFZx.net
>>41
たとえばエクセルには、カスタマ エクスペリエンス向上プログラムと言う機能が組み込まれている
利用者の同意を得てデータを送信させれば良いんじゃね

自作のフリーウェアなら、情報の収集を利用条件にしてもいいんじゃn
俺ならそんなソフト使わんが

44 :デフォルトの名無しさん:2015/05/04(月) 08:03:17.60 ID:MlDjNp+9.net
>>41
誰一人使って無くても良いじゃん別に
オレ様が素晴らしいソフトをオマエラに提供してやったんだから有り難く使いヤガレ!
って勢いで公開するべきだと思うよ
まれに自発的にお礼や感想要望のメールも来ると思うけど期待はするな

45 :デフォルトの名無しさん:2015/05/04(月) 08:39:58.31 ID:nWEzAIy6.net
>>41
そういうの

企業のソフトウェアがやるならともかく、フリーウェアで手を出すと確実に
スパイウェア扱いされるでしょうね。下手なことにクビ突っ込まないほうが
身のためですよ。

46 :デフォルトの名無しさん:2015/05/04(月) 12:49:44.89 ID:i+1DbMms.net
>>41です。

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

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

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

 変なツール実装するのは止めときます。
 皆さんすいません、ありがとうございました。

47 :デフォルトの名無しさん:2015/05/11(月) 08:48:57.43 ID:AU+j6osa.net
いまのプログラミング業界(オレの造語)って
配列はほとんど使ってないの?
例えばJavaとかだとコレクションを使う方がはるかに便利だとか。

ExcelのVBAでも配列をやめてコレクションを使ったほうが便利で可読性もよいコードになるのかな?

48 :デフォルトの名無しさん:2015/05/11(月) 09:17:16.73 ID:jciykodT.net
特にパフォーマンスが要求されないドンガメアプリは好きな方式でいいんじゃないかな?(´・ω・`)

49 :デフォルトの名無しさん:2015/05/11(月) 09:17:50.67 ID:AVa5yrsT.net
>>47
普通に配列つかったほうがいいよ。

50 :デフォルトの名無しさん:2015/05/11(月) 11:45:07.74 ID:6rZgRYO9.net
最近の言語は配列じゃないコレクションが充実してるから
それらの言語では配列以外を使う事の方が多くなってる

VBAでは、コレクションが配列より良い場合もないではないけど
ほとんどの場合は配列の方がすっきりすると思うぞ

51 :デフォルトの名無しさん:2015/05/14(木) 22:31:05.69 ID:F7V5bQJf.net
MsgBoxってあるけど
そうじゃなくて
メッセージをメモ帳を開いてそこに記述するにはどうすればいいのでしょうか?

こうすることでコピペができるなどいろいろ便利と思うので。

52 :デフォルトの名無しさん:2015/05/14(木) 23:41:41.84 ID:dWCGk0JA.net
ファイルに吐いて>notepad ファイル名
で起動すればいいんちゃうの?

ちなみにMsgBoxはCtrl+Cでクリップボードに入る

53 :デフォルトの名無しさん:2015/05/15(金) 00:05:07.14 ID:F85nAjYz.net
>>52
そうするとHDDのどこかにファイルを保存せねばならないでしょう。
そうしたくないんだ。

54 :デフォルトの名無しさん:2015/05/15(金) 05:28:12.57 ID:X5a4op11.net
安定しないけど、Shellで起動してSendKeysとか

まあ俺ならコピペ前提ならそのままクリップボードにデータ入れるが

55 :デフォルトの名無しさん:2015/05/15(金) 08:29:51.60 ID:OMVhwfYU.net
ちょっと編集してコピーするとかもできるからメモ帳に吐くのはありだと思う
SendKey はいい思い出がないから >>52 に一票

56 :デフォルトの名無しさん:2015/05/15(金) 17:08:00.10 ID:SCDI1Wkq.net
>>53
log用シート追加して、そこに吐くんじゃダメなの?
そのシート残したくなければクローズ時に削除すればいいかと。
そんな単純じゃない話?

57 :デフォルトの名無しさん:2015/05/15(金) 17:16:38.65 ID:VZDZSKvz.net
ユーザーフォームのテキストボックスに表示するとか?

58 :デフォルトの名無しさん:2015/05/16(土) 21:51:20.67 ID:jUu32I5W.net
vbaにパスワード掛けても簡単に破られるじゃあないですか?
vbaで開発したものを有料の製品として販売している人や会社は、パスワードを破られてしまうとノウハウを簡単に盗まれてしまうという事ですよね。
それって、何か対策は有るんですか?

59 :デフォルトの名無しさん:2015/05/16(土) 22:15:03.75 ID:Yi4ECWX2.net
どうやってパスワードを見破るんですか?

60 :デフォルトの名無しさん:2015/05/16(土) 23:23:55.08 ID:HH6fpt1X.net
同じVBAを使う者としてとても心が痛むが、
できてしまう以上はその誘惑に勝てない。

61 :デフォルトの名無しさん:2015/05/16(土) 23:40:40.79 ID:Yi4ECWX2.net
そのやりかたを聞いておるのだ

62 :デフォルトの名無しさん:2015/05/17(日) 00:29:03.42 ID:TXM5pNIr.net
>>53
Linuxには、メモリ上だけに存在するファイルシステム、tmpfs とか、

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

Win にはそういう機能は無いの?

63 :デフォルトの名無しさん:2015/05/17(日) 00:34:12.22 ID:prFKBwN9.net
>>61
Google先生に聞いてね。
78とか76とか、いろいろめんどうだけどね。

64 :デフォルトの名無しさん:2015/05/17(日) 16:21:48.28 ID:B0Fe1+FI.net
VBAで : が使われる場所って、
文字列の中を除くとあとは
GOTO Label:
くらいでしょうか?

65 :デフォルトの名無しさん:2015/05/17(日) 16:50:07.35 ID:nnFlbvVf.net
>>64
名前付き引数の指定で使う

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

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

▼名前付き引数を使った例
WorkSheets.Add Count:=5

66 :デフォルトの名無しさん:2015/05/17(日) 16:53:28.95 ID:lnYJDjFz.net
なぁ、ぼちぼち前スレに移動してくれないか?

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

67 :デフォルトの名無しさん:2015/05/17(日) 19:14:25.16 ID:fv8Y2qXy.net
>>64
マルチステートメント(の区切り)に使う

68 :デフォルトの名無しさん:2015/05/17(日) 20:20:17.19 ID:B0Fe1+FI.net
>>65>>67
詳しい解説、有難うございました。
この2例以外にはもう無いでしょうか?

69 :デフォルトの名無しさん:2015/05/19(火) 12:05:13.92 ID:NTe3EXZz.net
Excel x97m_sugar.dの作り方を教えてください。

70 :デフォルトの名無しさん:2015/05/19(火) 23:05:06.59 ID:Y2eIQ7MR.net
Excelのx97m_sugar.dの作り方は教えてあげないでください。

71 :デフォルトの名無しさん:2015/05/20(水) 00:01:24.67 ID:HCLyDu6k.net
Excelのx97m_sugar.dの作り方が教えてあげられません。

72 :デフォルトの名無しさん:2015/05/30(土) 00:10:11.41 ID:uAz+OfzT.net
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と希望通りになりませんでした。

お助け下さい。

73 :デフォルトの名無しさん:2015/05/30(土) 00:17:17.37 ID:mU8J0Ylc.net
ここは VBAのスレですよ?

74 :デフォルトの名無しさん:2015/05/30(土) 00:24:06.68 ID:4IPDAfwH.net
>>72
ROW()*3-2+COLUMN()

75 :デフォルトの名無しさん:2015/06/02(火) 23:40:59.47 ID:iC0H3P5x.net
Application.EnableEvents = Falseで、
別のブックのイベントを停止させることはできるの?

どうもできないように思うのだが。

76 :デフォルトの名無しさん:2015/06/03(水) 04:24:08.92 ID:+cwo1qGY.net
>>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
こんな感じでテストしてみた

77 :75:2015/06/03(水) 14:31:44.71 ID:fXq4Zk1N.net
>>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で立ち上がります。

78 :デフォルトの名無しさん:2015/06/03(水) 20:08:13.04 ID:ZKJDLKuD.net
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

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

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

2013からMDI廃止らしいけど、プロセスも別なのがデフォになったのかねぇ

80 :デフォルトの名無しさん:2015/06/03(水) 22:56:11.47 ID:ZxJD2qlU.net
Office 2013ではWordもExcelもSDIに
ttp://www.relief.jp/itnote/archives/018148.php

便利なのか不便なのか分からん。
ブック間の不作為なリンクを避けられるなら仕方ないが、勝手にリンクする上にApplicationを取得しないと別のブックが見えないとかだったら嫌だな。

81 :デフォルトの名無しさん:2015/06/06(土) 00:01:08.07 ID:JzYI2Rbi.net
Applicationて名前なのにWindowが別だと別物とかとんでもない罠だな
Excel作ってる人はバカなのかな

82 :デフォルトの名無しさん:2015/06/06(土) 08:30:57.59 ID:nnpJvQGY.net
>>81
少なくともお前よりは頭いいよ

83 :デフォルトの名無しさん:2015/06/06(土) 09:03:14.59 ID:JzYI2Rbi.net
Excel作ってる人いたwww

84 :デフォルトの名無しさん:2015/06/12(金) 11:53:50.80 ID:P3g0DnhS.net
997 デフォルトの名無しさん sage 2015/06/12(金) 03:53:05.71 ID:V1caHJYS
>>988
後ろゼロ埋めして長さ揃えてソートして、その順に元の文字連結する

それ題意に合ってない。
例えば 3 < 31 になっちゃう

85 :デフォルトの名無しさん:2015/06/12(金) 13:22:48.26 ID:3WPnrkkp.net
ゼロで埋めずにその数字の最後の桁の数で埋めればいいんじゃね?
たとえば
72 と 568 だったら 72 を722 にするの

86 :デフォルトの名無しさん:2015/06/12(金) 14:55:54.39 ID:nFg05tfI.net
文字列にして降順ソートで

87 :デフォルトの名無しさん:2015/06/12(金) 17:29:03.95 ID:9iuD3EDL.net
>>86
正解

88 :デフォルトの名無しさん:2015/06/12(金) 17:36:58.20 ID:P3g0DnhS.net
>>86
だからそれだと 3 < 31 になっちゃうんじゃないの?

89 :デフォルトの名無しさん:2015/06/12(金) 20:29:11.94 ID:aMl82aru.net
>>85
多分それで上手く行くと思う。

90 :デフォルトの名無しさん:2015/06/12(金) 21:00:11.26 ID:P3g0DnhS.net
最初に全体をなめて桁数の上限を求めんとあかんの?

91 :デフォルトの名無しさん:2015/06/12(金) 21:03:00.99 ID:P3g0DnhS.net
つか
https://blog.svpino.com/2015/05/08/solution-to-problem-4

92 :デフォルトの名無しさん:2015/06/12(金) 21:03:54.12 ID:aMl82aru.net
>>90
そこは本題の論点じゃなさそうだから、どっちでもいいんじゃない?

93 :デフォルトの名無しさん:2015/06/12(金) 21:10:46.93 ID:aMl82aru.net
>>91
すまん、じじいだから英語分からんし、VBAしか分からん。
VBAのスレだからVBAに直して教えてくれ。

94 :デフォルトの名無しさん:2015/06/12(金) 21:25:28.34 ID:P3g0DnhS.net
>>93
おれは多分あんたよりずっとじじいだと推測するが教えよう。
aとbが数値型だとして、このふたつを比較するのに、 CStr(a) & CS
tr(b) と CStr(b) & CStr(a) の比較に帰着させようってことだ


95 :デフォルトの名無しさん:2015/06/12(金) 22:03:15.51 ID:hZ3veipK.net
>>94
なるほどね。どっちの方が効率いいんだろうな。

96 :デフォルトの名無しさん:2015/06/13(土) 04:27:57.02 ID:ds8D2Sdy.net
>>91のURLが見れないんだが

97 :デフォルトの名無しさん:2015/06/13(土) 10:20:57.75 ID:YcieRO9y.net
あれれ?おかしいですよ。

Dim i as Integer = 5

みたいに宣言と代入を同時にできなかった?

98 :デフォルトの名無しさん:2015/06/13(土) 10:51:54.20 ID:P6q2Jefi.net
もしかしてだけど?(´・ω・`)
as じゃなくて As じゃないかな?(´・ω・`)

99 :デフォルトの名無しさん:2015/06/13(土) 10:54:17.52 ID:YcieRO9y.net
>>98
それは関係ないみたいですよ

100 :デフォルトの名無しさん:2015/06/13(土) 10:55:47.86 ID:aBb0zzsM.net
できない
constだと宣言と同時に代入できるってか代入が必須

101 :デフォルトの名無しさん:2015/06/13(土) 10:56:07.32 ID:yb+K2D/k.net
Const j as Integer = 5 みたいに定数宣言ではできるけど

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

コンパイルエラー

102 :デフォルトの名無しさん:2015/06/13(土) 10:58:11.23 ID:5fbKckS6.net
VB.NETでは出来るけどVBAでは出来ないんだよな。
っていうかVBSとVBAとVB.NETでは仕様が違うから平行して使うと混乱する。

103 :デフォルトの名無しさん:2015/06/13(土) 13:09:18.97 ID:EK7iCI9D.net
>>97
Dim i as Intger :i=5
じゃなくて?

104 :デフォルトの名無しさん:2015/06/13(土) 13:11:08.13 ID:EK7iCI9D.net
Integer

105 :デフォルトの名無しさん:2015/06/13(土) 13:59:15.72 ID:ZT8kHOu5.net
>>103
それ、2つの命令を1行に書いてるだけじゃん

106 :デフォルトの名無しさん:2015/06/13(土) 14:56:58.35 ID:xAuM0Ioe.net
インタプリタとコンパイラの違いをまずは勉強した方が良いと思うよ。
今の人って逆ポーランド記法とかも知らないだろうなぁ。

107 :デフォルトの名無しさん:2015/06/13(土) 15:05:13.23 ID:5fbKckS6.net
記法なんてコンパイラの胸三寸じゃねぇか。

108 :デフォルトの名無しさん:2015/06/13(土) 15:10:58.98 ID:FxAuvF7G.net
いきなりなんの話だ?

109 :デフォルトの名無しさん:2015/06/13(土) 16:36:33.75 ID:DqJYPwIz.net
また面倒なのが出てきた

110 :デフォルトの名無しさん:2015/06/13(土) 16:46:02.45 ID:rvHURxqt.net
宣言と初期化が同時にできるのは間違いなく良いことだし、それができないのはVBAの困った点。

111 :デフォルトの名無しさん:2015/06/13(土) 16:57:27.94 ID:DqJYPwIz.net
そりゃ昔からの言語なんだから色々あるさ。

112 :デフォルトの名無しさん:2015/06/13(土) 16:59:19.80 ID:7lUoI+DV.net
初歩的な書式設定レベルのツールを開発しました。
その仕様書を作成するよう言われたのですが、書き方が分かりません。
仕様書・設計書の書き方で、初心者用のオススメ本とかありますか?

113 :デフォルトの名無しさん:2015/06/13(土) 17:08:42.08 ID:yb+K2D/k.net
サンプルが同じ部署の中に転がってんでしょ。それを参考にし作れば良いのでは

114 :デフォルトの名無しさん:2015/06/13(土) 21:23:10.21 ID:DqJYPwIz.net
>>112
書き方が分からないのは分かった。

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

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

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

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

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

分からなければ取り敢えず上の人に聞いた方がいいと思うよ。

115 :デフォルトの名無しさん:2015/06/13(土) 21:55:36.91 ID:FQeTzdta.net
>>110
今さらそんな些細なこと言われても...
VBA は初期値が決まってるから、Fortran とか C/C++ と違って単体テストちゃんとやれば大丈夫だしね

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

「やります」って約束してから初心者本を探すようでは、失格だよ。

117 :デフォルトの名無しさん:2015/06/14(日) 08:07:46.62 ID:XH+fyzBI.net
>>106
インタプリタとコンパイラの関係については
ここではあまり関係がある話とは思えないなぁ。

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

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

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

結局のところ、>>107の人が言ってることが正解ってことになるんだろうなぁ。

118 :デフォルトの名無しさん:2015/06/14(日) 11:42:28.09 ID:gLTCEjdN.net
>>117
>>116 もそうだけど、誤爆でなきゃ話の流れに関係なく自分の思い付いたことを語り始めるアレな人みたいなので、相手しない方がいい

119 :デフォルトの名無しさん:2015/06/14(日) 12:46:31.01 ID:inpQDwIg.net
文字列を分割するユーザー定義関数を作ろうとしているのですが、
下記のコードだと関数の結果が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

120 :デフォルトの名無しさん:2015/06/14(日) 13:34:47.08 ID:pyKjCLa1.net
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

121 :デフォルトの名無しさん:2015/06/14(日) 13:47:46.11 ID:9sCLitNc.net
>>119
そのままコピペして、別に問題なく動いてるけど
あえて言うなら、MsgBoxは全部削除かコメントアウトした?

122 :デフォルトの名無しさん:2015/06/14(日) 13:53:29.18 ID:pyKjCLa1.net
修正ついでにこっちの方が面白いかな。

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

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

修正案作ってくれった方々も有難うございます。

124 :デフォルトの名無しさん:2015/06/14(日) 16:28:13.01 ID:aLL1Dt0J.net
糞テンプレ捏造の重複スレより転載
>22 :デフォルトの名無しさん:2015/06/14(日) 14:14:40.48 ID:Qy/1/K9E
>非表示のシートをselectするとエラーが出るのですが仕様ですか

仕様みたいよ
Activateを使えばエラーでないらしい
http://d.hatena.ne.jp/paz3/20090824/1251086123

125 :デフォルトの名無しさん:2015/06/14(日) 21:09:14.94 ID:1Cglll13.net
>>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

126 :デフォルトの名無しさん:2015/06/14(日) 21:41:53.64 ID:1Cglll13.net
なんかバグ見つけたので書き直しました。
もう見てないかもしれませんがどうぞ。

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

127 :デフォルトの名無しさん:2015/06/14(日) 21:47:43.34 ID:9sCLitNc.net
>>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

128 :デフォルトの名無しさん:2015/06/14(日) 22:42:59.92 ID:1Cglll13.net
>>29
詳しくはありませんが、
チェックデジットが最後で値が違うからじゃないですかねぇ。
以下の部分がおかしいのかなぁ。
s = s + Mid(Cells(1, 1), Len(Cells(1, 1)) - 1 - i, 1) * (i Mod 6 + 2)

129 :デフォルトの名無しさん:2015/06/14(日) 22:59:58.84 ID:1Cglll13.net
>>72
こんな感じですかね?
あとはカスタマイズしてみてくださいな。
Sub test()
Sheet1.Range("D2").Value = "=VLOOKUP(""d"",A1:B7,B:B,TRUE)"
End Sub

130 :デフォルトの名無しさん:2015/06/16(火) 20:01:33.86 ID:/YX6SlcO.net
zipの中身(csvのファイルが百個超入ってる)を直接閲覧する方法ってないかな。

ネットを調べてみた限りだと解凍する方法しか出てこないから、やっぱ一時ファイルに中身を出して読み込むまでを自動化して、
あたかもzipを直接読んでいるかの様に振る舞うくらいしか方法ないのかな。

131 :デフォルトの名無しさん:2015/06/16(火) 20:07:11.57 ID:bDVKNfTy.net
>>130
Windowsのエクスプローラーなら(あたかも)解凍せずにフォルダのように見る機能がついてるじゃん

132 :デフォルトの名無しさん:2015/06/16(火) 20:09:36.92 ID:OQMU+FkQ.net
むしろ最近のWindowsはダブルクリックで解凍してくれなくて困る。

133 :デフォルトの名無しさん:2015/06/16(火) 20:10:52.60 ID:/YX6SlcO.net
>>131
あ、ごめん。閲覧って書いたけど本当は読み込みだ。
エクセルが閲覧する≒内部情報を読み込んでいる。という発想から閲覧と書いてしまった。

134 :デフォルトの名無しさん:2015/06/16(火) 20:25:01.91 ID:bDVKNfTy.net
>>132
解凍アプリ入れて関連付けするだけの簡単なお仕事で解決ですよ

135 :デフォルトの名無しさん:2015/06/16(火) 23:33:39.61 ID:CTMSSCrl.net
解凍ソフト入れるくらいなら
右クリックですべて展開の方が好きだな

136 :デフォルトの名無しさん:2015/06/20(土) 12:47:52.85 ID:0iDXtIw3.net
windows7
excel2010

「wsock32.dll」を使用したいのですが
参照設定になにを追加したらいいのかわかりません。
ご教授お願い致します。

137 :デフォルトの名無しさん:2015/06/20(土) 12:49:24.67 ID:ICg+mTIe.net
>>136
VBAでDeclare Functionで宣言して使うんなら参照設定は必用ない

138 :デフォルトの名無しさん:2015/06/20(土) 12:55:09.99 ID:0iDXtIw3.net
>>137
そうなんですね!ありがとうございます!
勉強不足で申し訳ありません。

139 :デフォルトの名無しさん:2015/06/20(土) 13:37:12.86 ID:GrEUy4+j.net
予め形式の分かっている差分データを取り込む際に、日付の書いてある範囲や合計欄、個別に集計するエリアなどを設定したいのですが、
シート単位またはセル単位で設定ができ、かつエクセルの通常画面からは見えない様な設定の仕方はありませんか?

IDというメンバ変数を見つけたのですが、保存する時に消えてしまうのでシート単位で個別に保存して運用する可能性があって使えません。
XPathやSmartTagsが自由に設定できれば使えそうなんですが、これは何か形式が決まっているんでしょうか?

140 :デフォルトの名無しさん:2015/06/20(土) 13:49:23.06 ID:ICg+mTIe.net
>>139
シートを非表示にする

141 :デフォルトの名無しさん:2015/06/20(土) 16:01:17.17 ID:VnYjkKK/.net
>>139
シート非表示で良いと思う。
但し、表示されちゃうとまずいから
VBA側でVeryHiddenにしとく

142 :デフォルトの名無しさん:2015/06/20(土) 18:25:10.11 ID:GrEUy4+j.net
>>140-141
やっぱりそういう方法しかないんですね。

直接読み込ませるのではなく、各ファイルが自分でバッチファイルを生成して元のデータベースに統合する形にしたいと思います。
ありがとうございました。

143 :デフォルトの名無しさん:2015/06/20(土) 23:34:52.81 ID:VnYjkKK/.net
>>142
そこまで大掛かりにするならExcelにやらせるのではなく
.Netフレームワークとかでシステム作ってそっちにやらせた方が楽かも知れないよ。

それ用のテンプレートファイル作って
そこに展開するようにしておけば、
隠しシート仕込まないことも視野に入れられるし。

144 :デフォルトの名無しさん:2015/06/21(日) 12:05:02.10 ID:QrPate9Z.net
Excel2010(64bit)ですが画面描画を繰り返していると途中で描画が止まってしまいます。

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

145 :デフォルトの名無しさん:2015/06/21(日) 12:06:24.53 ID:8nB0S4aH.net
>>144
5. DoEvents

146 :デフォルトの名無しさん:2015/06/21(日) 12:06:37.25 ID:QrPate9Z.net
まちがい

× 最初にApplication.EnableEvents = False したあと、ループ内で
〇 最初にApplication.ScreenUpdating = False したあと、ループ内で

147 :デフォルトの名無しさん:2015/06/21(日) 12:08:02.54 ID:QrPate9Z.net
>>145
うお!一瞬で解決しました!

148 :デフォルトの名無しさん:2015/06/21(日) 14:33:38.20 ID:c2TFF1xN.net
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の時だけは一致判別できます…

149 :デフォルトの名無しさん:2015/06/21(日) 14:43:05.97 ID:c2TFF1xN.net
http://imgur.com/oLGlGUU

↑の画像のsheet1に記載されたデータをsheet2に反映させて、簡単なシフト表を作りたいと思っています。

150 :デフォルトの名無しさん:2015/06/21(日) 14:57:40.61 ID:KB1pzFAk.net
>>148
たぶんここ

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

だと思うけど、それ以外にもおかしいところがたくさんありすぎて、突っ込んでいいのかどうか迷うところ

151 :デフォルトの名無しさん:2015/06/21(日) 15:18:00.34 ID:KB1pzFAk.net
>>148
>>150は間違い。これで動いた
シリアル値を別シートから持って来ると小数誤差が出るのってExcelの仕様なのかな
こりゃ初心者にはわからんわ

time1 = ws1.Cells(j, 2).Text
time2 = ws2.Cells(1, m).Text

152 :デフォルトの名無しさん:2015/06/21(日) 15:30:19.64 ID:c2TFF1xN.net
>>150
>>151

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

お察しの通りVBAは超初心者、プログラムも大学の授業でCを学んだ程度です。

153 :デフォルトの名無しさん:2015/06/21(日) 16:47:35.17 ID:nnV9xOPw.net
>>151
浮動小数点なんで誤差が出ないわけではないが、たぶん誤差じゃなくて
実際に違うシリアル値なんだが表示上同じに見えてるだけ だと思われ
単純な比較で「誤差」はでないから、一度セルの表示形式変えて確認してみたら

154 :デフォルトの名無しさん:2015/06/21(日) 17:17:11.91 ID:KB1pzFAk.net
>>153
新規ブックで、どっちのシートもセルの書式もデフォルト(@標準)のまま手作業で打ち込んだのに、
比較すると異なるとか罠以外の何者でもないと思う

自動判断と隣のセルの書式に影響される機能のせいだと思うんだけど

155 :デフォルトの名無しさん:2015/06/21(日) 18:21:49.45 ID:nnV9xOPw.net
>>154
同じものを打ちこめば、表示形式が違っても同じと判断されるはずだがなぁ...
どんな入力でどんな表示になってるんだ?

156 :◇◇:2015/06/21(日) 18:27:30.32 ID:RGV/Ctvq.net
テスト
◇◆◇◆◇◆◇◆◇◆

157 :◇◇◇◇◇◇◇◇◇◇◇◇:2015/06/21(日) 18:28:21.43 ID:RGV/Ctvq.net
本文が空です!

158 :デフォルトの名無しさん:2015/06/21(日) 19:53:56.30 ID:2F73xJXZ.net
cells(y,x)=1 をyが10にまでやって11からはxをインクリメントして右に並べるみたいな
マクロを書く場合、最初にyをリセットしてループしますが
y=y+1を先に書きますか?
それとも処理のあとに書きますか?
どちらが一般的なんでしょうか?

159 :デフォルトの名無しさん:2015/06/21(日) 22:17:42.92 ID:ApDmoctC.net
>>158
処理に整合が取れていれば見やすい、あるいは扱い易い方で良い。

ケースバイケースになるので、どちらが一般的ということはない。

160 :デフォルトの名無しさん:2015/06/22(月) 00:49:07.54 ID:oXOTOpou.net
cells(y,x)の並びの方が気になるw

161 :デフォルトの名無しさん:2015/06/22(月) 06:14:25.06 ID:0q8cyi70.net
俺も最初は(y, x)と書いてた
気持ちはわかる
今は素直に(r, c)にしてるけど

162 :デフォルトの名無しさん:2015/06/22(月) 11:05:48.79 ID:8PARE+E6.net
コラ「Excel VBAによるOffice連携プログラミング」の本がAmazon中古で安くなったからさっき買おうと思ったが
その安い値段のが売り切れてまた数万円の価格に戻ってるじゃないか。

誰だ買ったのは?

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


読み終わったら売ってね❤️

164 :デフォルトの名無しさん:2015/06/22(月) 20:34:37.81 ID:8PARE+E6.net
コラ

165 :デフォルトの名無しさん:2015/06/22(月) 22:00:35.23 ID:gH+fd3zN.net
この本そんなに凄いのか?

166 :デフォルトの名無しさん:2015/06/22(月) 23:49:49.64 ID:QLWOuCWb.net
>>161
変数1文字命名派?

167 :デフォルトの名無しさん:2015/06/23(火) 15:25:42.35 ID:kPbxmHHZ.net
yyyy/mm/dd hh:mm
の形式で入ってるセルはFindで検索しても該当なしになっちゃう
検索できないものなのかな(´・ω・`)
エクセル2013を使用しています

168 :デフォルトの名無しさん:2015/06/23(火) 16:47:54.31 ID:vVXy/YjI.net
>>167
とりあえずこの辺の内容を理解して
http://officetanaka.net/excel/vba/tips/tips131.htm

169 :デフォルトの名無しさん:2015/06/23(火) 17:51:09.10 ID:kPbxmHHZ.net
>>168
やっぱりシリアル値取らないとダメですか
ありがとうございます やってみます

170 :デフォルトの名無しさん:2015/06/23(火) 18:14:50.22 ID:WNvMOvej.net
直値で検索することはできる。
Range("A:A").Find(#6/23/2015#)
「日付」として値が入力されているなら、
Range("A:A").Find(DateValue("2015/6/23"))
文字列なら、
Range("A:A").Find("2015/06/23")

171 :デフォルトの名無しさん:2015/06/23(火) 19:08:58.22 ID:vVXy/YjI.net
時刻入るとたしかにうまくいかないときあるな
Excel側とVBAでシリアル値の内部フォーマットに違いあるのかもしれん

172 :デフォルトの名無しさん:2015/06/23(火) 19:25:51.74 ID:vVXy/YjI.net
2003以降でどうなってるかわからんが、こんな情報見つけた
https://support.microsoft.com/ja-jp/kb/416317/ja

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

時刻 0:00:00ですら合わないんだから、それ以外でも合わない事はありそうだし

173 :デフォルトの名無しさん:2015/06/23(火) 20:03:13.96 ID:Yra6/pdr.net
浮動小数だから = で比較するなんて

って思う俺がおかしいのか...

174 :デフォルトの名無しさん:2015/06/23(火) 23:20:34.97 ID:vVXy/YjI.net
まあ、浮動小数点には正規化の問題もあるにはあるけど
同じ型での(代入と)比較だけなら問題ないはずだろ
演算すると誤差が問題になるだけで

175 :デフォルトの名無しさん:2015/06/24(水) 06:05:16.06 ID:Dt+PoWxm.net
>>173
浮動小数点数を浮動小数って思うお前がおかしい

176 :デフォルトの名無しさん:2015/06/24(水) 07:43:50.26 ID:mSDBMbUW.net
>>174
何をもって問題ないって言ってるのかよくわからんが、入力時点から既に種々の演算がされてるんだけどな

>>175
なにか突っ込みたかったことはわかった
次はもう少し内容に突っ込めるようになろうな w

177 :デフォルトの名無しさん:2015/06/24(水) 08:02:11.33 ID:Dt+PoWxm.net
>>176
なにか反論したいのかな?
それじゃ誰にも何も伝わらんよ意識高い系君

178 :デフォルトの名無しさん:2015/06/24(水) 08:26:33.72 ID:mSDBMbUW.net
>>177
やはり内容には突っ込めませんでしたね w

179 :デフォルトの名無しさん:2015/06/24(水) 08:41:15.29 ID:BjoO3mYW.net
>>169
20年前からの常識ですよ。
lookup系の関数じゃないんだから。

180 :デフォルトの名無しさん:2015/06/24(水) 09:08:06.38 ID:4zqa0pLf.net
>>171
シリアル値の内部形式は同じだよ
問題があるのはワークシート側の書式の自動解釈(自動変換)のアルゴリズムで、これは簡単に検証できる

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

これの理由がわかってれば、どこで誤差が出たかもわかるはず

181 :デフォルトの名無しさん:2015/06/24(水) 09:12:46.00 ID:4zqa0pLf.net
自分で確かめてみたい人用
>>180の検証に使ったブック
http://www.42ch.net/UploaderSmall/source/1435072251.xlsx

182 :デフォルトの名無しさん:2015/06/24(水) 16:33:23.38 ID:RGIhvJyS.net
>>1

はいざんねーん
http://peace.2ch.net/test/read.cgi/tech/1433920729/l50

183 :デフォルトの名無しさん:2015/06/24(水) 19:47:23.16 ID:JvkNGhgS.net
見た目上の値で検索したい場合はFindのLookIn引数にxlValuesを設定すればいいはず。
長らく使ってないからちょっと自信ないけど。

184 :デフォルトの名無しさん:2015/06/24(水) 20:47:09.13 ID:THF2Ta19.net
>>180-181
これどうやって「入力」したのか教えて欲しいんだが
どうも連続データで作ったんじゃないかと思うが、それだったら
連続データを計算するときの計算誤差だと思うが

すくなくとも表示形式を変えて確認する限り
FALSE判定のところは別のシリアル値になってるが
これのどこが書式の自動解釈アルゴリズムの問題なのか教えてくれ

185 :デフォルトの名無しさん:2015/06/25(木) 01:07:53.01 ID:xC+7jf1V.net
エクセル2010使ってるんですけど
どなたかキッチンタイマー作ってくれませんか?

186 :デフォルトの名無しさん:2015/06/25(木) 03:59:08.65 ID:xvRMitSK.net
>>185
高いよ!

百均で買った方が1/100以下で済むんだが

187 :デフォルトの名無しさん:2015/06/25(木) 06:38:29.82 ID:vom2QN3t.net
>>185
そんなもん何に使うんだ?
エクセルやりながら料理するのか??

188 :デフォルトの名無しさん:2015/06/25(木) 06:45:51.00 ID:O+p39R1b.net
自分でやれよ、怠慢だな!…タイマーだけにw

189 :デフォルトの名無しさん:2015/06/25(木) 07:20:44.32 ID:jos0XzUP.net
おおかた授業か研修の宿題だろう

これは丸投げする前に自分でちょっと調べるなり考えるなりしてからやって欲しいところだな

190 :デフォルトの名無しさん:2015/06/25(木) 12:01:24.84 ID:eg4063Fk.net
マクロでキッチンタイマー・・
スマホアプリで作れば?
と思う。

191 :デフォルトの名無しさん:2015/06/25(木) 12:24:55.04 ID:/nf6gI0I.net
スマホでアプリ作るには
どういう開発環境が必要ですか?

ExcelVBAならExcel立ち上げてALT+F11押すだけでいいけど。

192 :デフォルトの名無しさん:2015/06/25(木) 12:25:48.10 ID:Aa2Tx6yB.net
スマホアプリならダウンロードすればいいだけ

193 :デフォルトの名無しさん:2015/06/25(木) 13:04:29.02 ID:eg4063Fk.net
AndroidならAndroidStudioかeclipse入れる。
iosは知らん。

最初は自分の端末にハローワールドするのでもけっこう大変かな。
まあ󾠓、興味あれば別スレみてくれ。

194 :デフォルトの名無しさん:2015/06/25(木) 13:08:20.51 ID:/nf6gI0I.net
>>193
大変なのですねあきらめます

195 :デフォルトの名無しさん:2015/06/25(木) 13:13:25.19 ID:/nf6gI0I.net
ExcelじゃなくWordなのですがそのスレがないのでここで質問です。

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

ExcelでいえばFor Eachで全シートや全ブックを取得する方法で
Wordの写真を取得する方法もありそうですが。
そしてもし取得できればExcelと同様、各オブジェクトの情報もそのプロパティをみれば簡単にできそうですが。

196 :デフォルトの名無しさん:2015/06/25(木) 13:46:08.46 ID:/IyRWZfA.net
>>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!的なアプリができるんじゃないかな。

197 :デフォルトの名無しさん:2015/06/25(木) 17:23:14.85 ID:It1tnYUr.net
VBA タイマーでググればいくらでもでてくるわな
http://ateitexe.com/count-down-timer/

198 :デフォルトの名無しさん:2015/06/25(木) 20:03:34.57 ID:D6HVq1fH.net
>>195
shapeをFor Eachで回す

199 :デフォルトの名無しさん:2015/06/25(木) 21:29:48.64 ID:/nf6gI0I.net
>>196
そんなことができるようになってましたか。
すごいですね。
いつかためしてみます。

>>198
そんなことは知ってて聞いたのですが。
特にshapeの具体的にどのプロパティを見て
(1)ページ数
(2)所属段落
(3)大きさ
(4)位置
を知ることができるのですか?

200 :デフォルトの名無しさん:2015/06/25(木) 21:46:32.28 ID:3cfr+YD9.net
オブジェクトブラウザ使えよ猿

201 :デフォルトの名無しさん:2015/06/25(木) 21:53:11.56 ID:/nf6gI0I.net
>>200
じゃページ数は?

202 :デフォルトの名無しさん:2015/06/25(木) 22:03:42.70 ID:It1tnYUr.net
anchorプロパティとRangeオブジェクトとInformationプロパティでわかるな

203 :デフォルトの名無しさん:2015/06/25(木) 22:08:34.62 ID:3cfr+YD9.net
>>201
オブジェクトブラウザ使えよ猿

204 :デフォルトの名無しさん:2015/06/25(木) 22:15:11.11 ID:/nf6gI0I.net
>>203
うるさいハゲ

205 :デフォルトの名無しさん:2015/06/25(木) 22:58:36.14 ID:4a2fuGbQ.net
また髪の話してる

206 :デフォルトの名無しさん:2015/06/26(金) 02:03:05.40 ID:rHu+vvV1.net
>>196
これは興味深いな。

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

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

C++?元々VBやVBAやってた俺の肌には合わないな。あれはあれで良いところあるんだろうが
以前入門書ちょっとだけ読んで肌に合わなくてそっ閉じだった。

207 :デフォルトの名無しさん:2015/06/26(金) 03:20:29.75 ID:EJ0mDEW7.net
>>206
C#でやる場合、別途mac上でobj-cなりswiftなり使ってUI作ら無いといけないんじゃないの

208 :デフォルトの名無しさん:2015/06/26(金) 07:15:07.75 ID:4k0f5kGN.net
>>207
本当だ。これは後のざまりんフォームとやらに期待するしかないな。

209 :デフォルトの名無しさん:2015/06/26(金) 07:58:14.16 ID:YNfE8rZU.net
参照型と値型を峻別するのって変だよね

210 :デフォルトの名無しさん:2015/06/26(金) 08:10:34.10 ID:6WgjR2Fv.net
>>209
えー何で。
ちゃんとどう言うものか知って使いどころを分けるもんじゃないの?

211 :デフォルトの名無しさん:2015/06/26(金) 08:24:22.85 ID:YNfE8rZU.net
>>210
あらゆる型どうしの間で使いどころを分けるべきっていうのはその通りだけど、参照型と値型なんて一線を引いて区別することに意味はないですよね?

212 :デフォルトの名無しさん:2015/06/26(金) 11:05:38.76 ID:vRL8h3oN.net
別々のファイルにそれぞれ macro1 と macro2 を作り、同じショートカットキーを割り当てたところ、
それらのファイルを両方開いてからキーを押すとmacro1 と macro2が両方実行されてしまいます。

これを回避する方法はありますか?
作業性の面から、ファイルは同時に起動しておきたく、
またショートカットキーも割り当ての種類をこれ以上増やしたくないと思っています
(上記の例では2つですが、実際にはファイルが数個あり、マクロも複数あるためです)

213 :デフォルトの名無しさん:2015/06/26(金) 11:21:37.03 ID:cSb2GBc3.net
>>212
マクロの最初にActiveWindowで自分がアクティブかどうか調べる

214 :デフォルトの名無しさん:2015/06/26(金) 11:22:44.69 ID:t/kzaQZM.net
アクティブじゃないシートのも実行されるんだっけ?
そんな仕様だったかなぁ。

215 :デフォルトの名無しさん:2015/06/26(金) 11:35:28.88 ID:cSb2GBc3.net
複数のブックを開いて、ショートカットがバッティングしている場合は、
ウィンドウがアクティブかどうか関係なく先に開いた方が実行される

216 :デフォルトの名無しさん:2015/06/26(金) 13:29:25.44 ID:vRL8h3oN.net
>>213
なるほど!
それなら上手く捌けそうですね、ありがとうございました!

217 :デフォルトの名無しさん:2015/06/26(金) 18:30:00.40 ID:6WgjR2Fv.net
>>211
何でそう思うの?

218 :デフォルトの名無しさん:2015/06/26(金) 18:49:28.66 ID:o/Regl21.net
>>211
引数にしてそれを変更したときに差がでるから、その時は意識しないとダメ

219 :デフォルトの名無しさん:2015/06/26(金) 19:24:10.62 ID:YNfE8rZU.net
>>218
参照と値の区別じゃなくて、参照になれる型とそうでない型を区別することを言ってるんです。
クラス型と基本型を峻別するみたいな。

220 :デフォルトの名無しさん:2015/06/26(金) 19:28:17.43 ID:6WgjR2Fv.net
>>219
だからなんでそう思うの?

221 :デフォルトの名無しさん:2015/06/26(金) 19:31:54.25 ID:YNfE8rZU.net
>>220
分けることで対称性というか統一性ががなくなるでしょ。
Integer とMyClass型に何か本質的な違いがあるかっていうと無いですよね?

222 :デフォルトの名無しさん:2015/06/26(金) 20:02:48.85 ID:6WgjR2Fv.net
>>221
本質的に違うよ。

なんか根本的なところの理解が抜けてるような気がするな。

223 :デフォルトの名無しさん:2015/06/26(金) 20:10:16.64 ID:o/Regl21.net
>>219
いやだから、参照型か値型の話で、参照渡し/値渡しの話じゃないよ

224 :デフォルトの名無しさん:2015/06/26(金) 20:22:29.70 ID:3miAOepO.net
何の話なんだ?

Type MyRecord
   [...]
End Type

みたいな形で宣言したヤツを引数として渡せなかったり関数の戻り値として戻せなかったりしてイラついた事あるけどそういう事?

225 :デフォルトの名無しさん:2015/06/26(金) 20:36:56.53 ID:YNfE8rZU.net
>>222
VBAでは違うとかJavaでは違うとかいうのは理解できる。
でもそれは「根本的なところの理解」とは違うでしょ?

226 :デフォルトの名無しさん:2015/06/26(金) 20:43:49.33 ID:6WgjR2Fv.net
>>225
「根本的なところの理解が抜けてる」で合ってると思うよ。

227 :デフォルトの名無しさん:2015/06/26(金) 20:52:09.52 ID:YNfE8rZU.net
>>226
ふむ、そこまで言うなら基本型とクラス型とを峻別する本質的な違いというものを教えてよ。

228 :デフォルトの名無しさん:2015/06/26(金) 20:56:41.52 ID:YNfE8rZU.net
補足すると、
IntegerとBooleanを区別する、
MyClassAとMyClassBを区別する、
というものを超えてIntegerとMyClassAを峻別すべきだ、というあたなたの主張の根拠をね。

229 :デフォルトの名無しさん:2015/06/26(金) 21:02:35.80 ID:6WgjR2Fv.net
>>228
自信満々だね。当然、そこまで言うからには何故参照型と値型に分かれているのか、それぞれどう言った用途で使うのか知ってるって認識でいいんだよね?

230 :デフォルトの名無しさん:2015/06/26(金) 21:07:27.12 ID:YNfE8rZU.net
>>229
いや、そうではない。素直に受け取ってくれ。
そのふたつを峻別する言語に不便を感じているから聞いてるんだ。

231 :デフォルトの名無しさん:2015/06/26(金) 21:37:55.47 ID:PNhnKrNT.net
そんな高度な質問すんなやハゲ。VBAスレやでここ。

232 :デフォルトの名無しさん:2015/06/26(金) 21:40:32.73 ID:cSb2GBc3.net
また髪の話してる

233 :デフォルトの名無しさん:2015/06/26(金) 21:50:53.62 ID:6WgjR2Fv.net
>>230
メモリ上には3つの領域が存在しているのはご存知だろうか。

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

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

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

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

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

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

だからより高度な判断が必要で、逆に言えば理解が無ければ処理が無駄に遅くなるコードを組むことになる。

234 :デフォルトの名無しさん:2015/06/26(金) 22:19:34.74 ID:PNhnKrNT.net
そんなレベルの低い話やないと思うでハゲ

235 :デフォルトの名無しさん:2015/06/26(金) 22:27:36.30 ID:YNfE8rZU.net
上野にGH9というビルがあってな、ゲーハーナインと読むんだが、オーナーがハゲで9階建てなんだと。

236 :デフォルトの名無しさん:2015/06/26(金) 22:51:03.11 ID:JS2Oq9WD.net
話しについて行けない。そもそも「峻別」の読み方が分からない。悲しい。

237 :デフォルトの名無しさん:2015/06/26(金) 23:03:05.06 ID:6WgjR2Fv.net
>>236
「しゅんべつ」で、物事にきっちり区別を付けるような意味だったはず。

238 :デフォルトの名無しさん:2015/06/27(土) 08:37:06.18 ID:AVtNDrad.net
>>236
読み方がわからない?
お前の目の前にある物体は素敵なオブジェですか?検索することも
わからんような奴がなんでここにいるわけ?www

239 :デフォルトの名無しさん:2015/06/27(土) 08:40:33.01 ID:Q5FOX3Kq.net
検索する労力をひり出す事すら億劫になるほど下らない話題だったって事だろ

240 :デフォルトの名無しさん:2015/06/27(土) 12:39:07.92 ID:zOIiCC8H.net
おじいちゃんかよw

241 :デフォルトの名無しさん:2015/06/27(土) 12:43:18.23 ID:AVtNDrad.net
>>239
そのうち、息するのも面倒くさいとか言い始めるだろう。

242 :デフォルトの名無しさん:2015/06/27(土) 13:33:09.49 ID:IT1CkKd8.net
冗談によくそこまで噛みつけるなぁ
逆に感心するよ

243 :デフォルトの名無しさん:2015/06/27(土) 13:47:41.34 ID:z31C3xpF.net
アスペだから冗談と理解できないんだろ

244 :デフォルトの名無しさん:2015/06/27(土) 14:05:59.98 ID:RNAxIVzO.net
>>242
冷やかし・噛みつき目的で質問スレに来ている人には
>>236のような軟弱なレスは格好の餌だから仕方ないね
2ちゃんはそういうところだ

245 :デフォルトの名無しさん:2015/06/27(土) 14:30:57.67 ID:GuUT6nNb.net
で、片付いたんだっけ?

246 :デフォルトの名無しさん:2015/06/27(土) 20:12:32.32 ID:qGo9dR/B.net
>>247
うるさいハゲ

247 :デフォルトの名無しさん:2015/06/27(土) 20:16:45.25 ID:Q5FOX3Kq.net
ルイズ!ルイズ!ルイズ!ルイズぅぅうううわぁああああああああああああああああああああああん!!!
あぁああああ…ああ…あっあっー!あぁああああああ!!!ルイズルイズルイズぅううぁわぁああああ!!!
あぁクンカクンカ!クンカクンカ!スーハースーハー!スーハースーハー!いい匂いだなぁ…くんくん
んはぁっ!ルイズ・フランソワーズたんの桃色ブロンドの髪をクンカクンカしたいお!クンカクンカ!あぁあ!!
間違えた!モフモフしたいお!モフモフ!モフモフ!髪髪モフモフ!カリカリモフモフ…きゅんきゅんきゅい!!
小説12巻のルイズたんかわいかったよぅ!!あぁぁああ…あああ…あっあぁああああ!!ふぁぁあああんんっ!!
アニメ2期放送されて良かったねルイズたん!あぁあああああ!かわいい!ルイズたん!かわいい!あっああぁああ!
コミック2巻も発売されて嬉し…いやぁああああああ!!!にゃああああああああん!!ぎゃああああああああ!!
ぐあああああああああああ!!!コミックなんて現実じゃない!!!!あ…小説もアニメもよく考えたら…
ル イ ズ ち ゃ ん は 現実 じ ゃ な い?にゃあああああああああああああん!!うぁああああああああああ!!
そんなぁああああああ!!いやぁぁぁあああああああああ!!はぁああああああん!!ハルケギニアぁああああ!!
この!ちきしょー!やめてやる!!現実なんかやめ…て…え!?見…てる?表紙絵のルイズちゃんが僕を見てる?
表紙絵のルイズちゃんが僕を見てるぞ!ルイズちゃんが僕を見てるぞ!挿絵のルイズちゃんが僕を見てるぞ!!
アニメのルイズちゃんが僕に話しかけてるぞ!!!よかった…世の中まだまだ捨てたモンじゃないんだねっ!
いやっほぉおおおおおおお!!!僕にはルイズちゃんがいる!!やったよケティ!!ひとりでできるもん!!!
あ、コミックのルイズちゃああああああああああああああん!!いやぁあああああああああああああああ!!!!
あっあんああっああんあアン様ぁあ!!シ、シエスター!!アンリエッタぁああああああ!!!タバサァぁあああ!!
ううっうぅうう!!俺の想いよルイズへ届け!!ハルゲニアのルイズへ届け!

248 :デフォルトの名無しさん:2015/06/27(土) 21:53:55.80 ID:wYPgFXnx.net
>>245
どうかなぁ。10を聞いて1を知る人には全く理解出来ないだろうし、
1を聞いて1を知る人なら言ってることくらいは理解するだろうし、
1を聞いて10を知る人なら、同じような理由で標準モジュールのモジュールレベルで
変数の定義を多用してはいけないくらいまで理解するだろうけど、
聞いてきた本人がその後分かったとも何とも言ってこないし、
ハゲに夢中になってるからなぁ。

ま、質問の内容からして、前戻り値に参照型が返せない言語は糞だと言ってたC++使いだと俺は思ってるけど、
今回はいつも一緒に登場するコード厨キャラが出て来てないからそこは何とも言えないかな。

249 :デフォルトの名無しさん:2015/06/27(土) 22:11:34.57 ID:GuUT6nNb.net
1を聞いて10を知るのは大体思い込みの激しいジジイに過ぎないのでは?

250 :デフォルトの名無しさん:2015/06/27(土) 22:19:16.76 ID:wYPgFXnx.net
>>249
いや、むしろ俺みたいなじじいの方が頭が堅くて呑み込み悪いし応用も効かない。

基本若い奴の方が多少先走る感はあるものの、理解も早いし応用力もあるよ。

251 :デフォルトの名無しさん:2015/06/27(土) 22:37:46.20 ID:GuUT6nNb.net
>>250
1を聞いて10を知るなんて、単に潜在的にわかっていたことを初めて意識しましたって現象か、もしくは分かってないのに分かったと思い込むジジイ。
それはともかく、能いは値、参照は参照なんで、型とは直交する概念。

252 :デフォルトの名無しさん:2015/06/27(土) 22:39:12.44 ID:GuUT6nNb.net
あれ、
× 能いは値
○ 値は値

253 :デフォルトの名無しさん:2015/06/27(土) 22:42:40.13 ID:pIBbDm3i.net
アタイはアンタと性交するからね!

254 :デフォルトの名無しさん:2015/06/27(土) 22:44:12.46 ID:WGuYPvoX.net
>>251
ちょっと何言ってるか分かりませんね

255 :デフォルトの名無しさん:2015/06/27(土) 22:54:13.85 ID:GuUT6nNb.net
>>254
直交もわからないの?

256 :デフォルトの名無しさん:2015/06/27(土) 22:56:12.48 ID:pIBbDm3i.net
直交を知る男現わる!

257 :デフォルトの名無しさん:2015/06/27(土) 22:56:24.38 ID:WGuYPvoX.net
直交が分からないんじゃなくてそれはともかく以降の文章の意味が分からない

258 :デフォルトの名無しさん:2015/06/27(土) 23:06:36.52 ID:GuUT6nNb.net
>>257

型Aに対してAの値の型とAへの参照の型両方がある。Aが何であっても同じ
と言ってる。
それに対して、AがIntegerのような基本型の場合とクラス型との場合では本質的に違うんだ、
と主張してる人たちがいる。しかも言語によらずそうだと思っている模様。

259 :デフォルトの名無しさん:2015/06/27(土) 23:09:00.59 ID:wYPgFXnx.net
>>258
で、どっちだと思う?

260 :デフォルトの名無しさん:2015/06/27(土) 23:14:56.51 ID:WGuYPvoX.net
>>251
>それはともかく、値は値、参照は参照なんで、型とは直交する概念。

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

結局何が言いたかったの?

261 :デフォルトの名無しさん:2015/06/27(土) 23:15:44.99 ID:GuUT6nNb.net
>>259
任意の型に値と参照の両方があるというのは単に事実だから何も「思う」ことはない。
問題は後者の主張に根拠が出てこないこと。>>233は悪いけどトンチンカン過ぎ。

262 :デフォルトの名無しさん:2015/06/27(土) 23:35:18.81 ID:pIBbDm3i.net
おまえが直交とか言いだすから悪いんやで

263 :デフォルトの名無しさん:2015/06/27(土) 23:39:55.57 ID:wYPgFXnx.net
>>261
ごめん、俺もあなたが何を言いたいのか、何をどこまで理解してるのか分からなくなった。

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

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

特にスタック領域なんてハード、ソフトどちらで制御してるにしても概念的には同じだし、
遠い昔のパソコンどころか、ファミコンにすらある概念だからね。ていうか載ってないの見たこと無いし。

264 :デフォルトの名無しさん:2015/06/27(土) 23:57:22.19 ID:Q5FOX3Kq.net
Dim A as Integer
Dim B as MyClass

Aを読み出す時はimmをEAXに格納して返し、
Bを読み出す時はフェッチして実行した結果をEAXに格納して返すから即値と関数じゃ扱いが違って当然なんだけど、
そういう認識がすっぽ抜けてるって事でいいの?

265 :デフォルトの名無しさん:2015/06/27(土) 23:57:39.37 ID:PyizvsFG.net
>>261
「値は値、参照は参照なんで、型と直交する概念」なのに、
「任意の型に値と参照の両方があるのは単に事実」って、
言ってることが支離滅裂じゃない?

1を聞いて10を分かったと思いこんじゃった?

266 :デフォルトの名無しさん:2015/06/28(日) 00:03:41.06 ID:wBeyl/iu.net
>>263
もともとは参照に「なれる」型とそうでない型との区別の話だったんだよ。
ひとつの型で値と参照の両方の特性を持つわけじゃない。
>>233はこの話に無関係だがらトンチンカンと言ってるんで、スタックだのヒープだの先刻承知だよ。
>>233はまずクラス型がスタックに置くのが憚られるほど「大きい」なんて前提を置いてるみたいだけど、データインスタンスかなんかとごっちゃになってるんじゃない?
普通クラスのインスタンスなんてせいぜい数十バイトのものだろ。

267 :デフォルトの名無しさん:2015/06/28(日) 00:05:26.80 ID:ljCE11NJ.net
>>264
フェッチと言うと意味が広域になるから判断付け難いけど、
アセンブラやCで言う間接参照だと言うならほぼそれで合ってる。

268 :デフォルトの名無しさん:2015/06/28(日) 00:07:38.82 ID:wBeyl/iu.net
>>264
それは特定の言語固有の仕様でしょ。
そういうのは初めから認めている。
>>225-226 を読んでくれ。>>226氏は言語に関係なく基本型とクラス型とで「本質的な違いがある」と主張しているのでは?

269 :デフォルトの名無しさん:2015/06/28(日) 00:12:01.68 ID:wBeyl/iu.net
>>265
任意の型Aに対して、Aそのものの型とAへの参照型があると言っているだけ。
intに対してintそのものとint&がある、
それを「両方ある」と表現した。

270 :デフォルトの名無しさん:2015/06/28(日) 00:18:49.92 ID:F7aWi8CN.net
>>269
VBAにintなんて型は存在しないんですが、それは・・・

271 :デフォルトの名無しさん:2015/06/28(日) 00:45:52.22 ID:ljCE11NJ.net
>>266

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

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

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

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

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

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

これだからC++やっててここに来てる奴って嫌なんだ。
聞いてきた癖に教えると、絶対「分かった」とは言わない。無視するか否定するかのどちらか。人としてちょっとどうなんだろうと思うよ。

272 :デフォルトの名無しさん:2015/06/28(日) 00:46:00.61 ID:IJkReOHB.net
何の議論をしたかったのかしらんが、アセンブラやCのレベルでの参照と
VBA(やVBやC#)での参照型とを同じに語るとか議論にならん

元の質問者はまだいるのか?
論議したかったのはVBAの言語仕様の思想なのか?

273 :デフォルトの名無しさん:2015/06/28(日) 01:01:18.14 ID:Lt0oVZOg.net
>>272
別にお前さんが議論のその部分に参加する必要はない。
〜のようなことなんじゃないの?という例えにたまたま俺の方に知識があったから
それに答えただけだ。
VBAではそもそも参照型と値型できっちり別れているんだから議論の余地などない。

274 :デフォルトの名無しさん:2015/06/28(日) 01:10:50.67 ID:wBeyl/iu.net
>>271
俺が何を聞いたというのだ?
俺が元々言ったのは>>209>>211>>225だ。初めからVBAのことは理解した上で、でも「変だよね」「意味ないよね」と文句を言っている。それ自体はいいだろ?
それを>>222とか>>226が「理解」の話にすりかえた。

275 :デフォルトの名無しさん:2015/06/28(日) 01:16:05.76 ID:F7aWi8CN.net
>>274
とりあえず値型と参照型っていうのが何なのかがネックになってるんで、
その辺りの宣言なり実装なりをVBAのコードで見せてくれませんかね。

276 :デフォルトの名無しさん:2015/06/28(日) 01:23:19.92 ID:ljCE11NJ.net
>>274
だから変だし意味があるって言ってる。
根本的な理解がすっぽ抜けてたのも確かだし、
それについての説明を求めて来たのもそっちだ。
説明受けた後で知ってるのどうのと後出ししてきて、結局のところ
どう言う仕組みになっててどう言う用途の場合、どう使うものなのか、
全て説明して、だから使い方を峻別するべきだと結論まで出しても
現時点で理解出来ない上に話をそらしているとか訳の分からないことを言い出す。

一体何がしたいんだ?

277 :デフォルトの名無しさん:2015/06/28(日) 01:31:10.42 ID:IJkReOHB.net
>>274
>初めからVBAのことは理解した上で
もしお前がちゃんとVBAでの違いと使い分けをちゃんと理解した上で、なぜその二つがあるのか聞きたかったのなら
ちゃんとそう書くべきだった(このスレが適切だったかどうかも疑問ではあるが)
すくなくともお前の書き方では、違いや使い分けが理解できてるとは思えないから「理解」の話になったわけで
議論をすり替えたわけではないと思うぞ

278 :デフォルトの名無しさん:2015/06/28(日) 01:36:07.87 ID:wBeyl/iu.net
>>276
どこの理解がすっぽ抜けているんだ?ぜんぜん的はずれだよ。
実際出てきた説明も「峻別すべき」理由付けには全然なっていない。
現時点で峻別されていることを知った上で文句を言っている。単純に不便だからだ。

279 :デフォルトの名無しさん:2015/06/28(日) 01:43:23.20 ID:wBeyl/iu.net
なによりも俺は>>225で「VBAとかJavaでは違うというのは理解できる。」と断っている。
それなのに「根本的なところの理解ができていない」と貶されたら、言語や環境を越えた原則があってそれを破っている、と言われたようにしか思えなかった。

280 :デフォルトの名無しさん:2015/06/28(日) 01:48:52.32 ID:F7aWi8CN.net
もしかして全ての言語に共通する仕様としてC++のint&に当たるものがあると考えてる?

281 :デフォルトの名無しさん:2015/06/28(日) 02:02:11.55 ID:wBeyl/iu.net
>>280
無いから不便だ、って不平だ。
参照を返せないんだよ。

282 :デフォルトの名無しさん:2015/06/28(日) 02:06:09.90 ID:F7aWi8CN.net
>>281
参照を返せないってどういう事?
ByRefで参照渡しすれば中身を変更した変数やクラスが呼び出し元で手に入るよね?

283 :デフォルトの名無しさん:2015/06/28(日) 02:11:12.93 ID:IJkReOHB.net
>>279
>なによりも俺は>>225で「VBAとかJavaでは違うというのは理解できる。」と断っている。
あの流れで、もとになってる>>221が Integer とMyClass型に ってのがなぁ
値型と参照型の区別がついてないと思われても仕方ないと思うぞ
せめてそこで値型と参照型にって言っとくべきだったな

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

そろそろこの話題終わりにしてくれ

284 :デフォルトの名無しさん:2015/06/28(日) 02:22:00.77 ID:IJkReOHB.net
>>281-282
別スレか前スレだったか?
その流れは飽きたからやめて欲しい
思わせぶりな事言うだけだった奴もいたな

285 :デフォルトの名無しさん:2015/06/28(日) 02:25:17.19 ID:Lt0oVZOg.net
>>278
どこの理解がすっぽ抜けてるか説明するとどうせまた話そらしてるとか的はずれだとか言い出すんだろ?全く意味がないよ。

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

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

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

ま、もういいや。納得行かないなら峻別しないで使えばいいさ。

286 :デフォルトの名無しさん:2015/06/28(日) 05:31:47.55 ID:OeLQkQMR.net
一体全体何が原因でこんな流れに成っているんだ?

287 :デフォルトの名無しさん:2015/06/28(日) 07:59:50.07 ID:VTU14O1b.net
参照型を覚えたばかりの的はずれな説明をしたがる人が話をややこしくしてる

288 :デフォルトの名無しさん:2015/06/28(日) 08:18:07.25 ID:Lt0oVZOg.net
>>286

これまでのあらすじ

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

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

次回予告

「C++って参照先に参照もたせたりできるスゲー言語なんだぜ、VBAにはそんなのねーだろw」と自慢しにやってくる

289 :デフォルトの名無しさん:2015/06/28(日) 08:35:55.56 ID:VTU14O1b.net
話をすればいつでもすぐに現われる頓珍漢w

290 :デフォルトの名無しさん:2015/06/28(日) 08:37:50.47 ID:X2j1Txu9.net
どうでもよすぎこの流れ
VBA関係無いじゃん
よそでやれ

291 :デフォルトの名無しさん:2015/06/28(日) 08:38:39.61 ID:Lt0oVZOg.net
頓珍漢。

いい響きだな。昭和のニオイがプンプンするw

292 :デフォルトの名無しさん:2015/06/28(日) 08:45:23.63 ID:6HPl6VuL.net
>>271
> https://msdn.microsoft.com/ja-jp/library/ms229017(v=vs.100).aspx
それ C# の話
C++ は構造体とクラスはほとんど違いがなくて、クラスのインスタンスをスタック上に作成することもできる
>>233 は標準モジュール云々と書いたり色々突っ込みどころが多すぎなのでスルーでいいと思う

293 :デフォルトの名無しさん:2015/06/28(日) 09:05:56.48 ID:Lt0oVZOg.net
>>292
アホか?
VBAなら静的クラスは標準モジュールが該当するだろ。
ここはVBAのスレなのになんでC++目線で説明しなけりゃならないんだよ。
その時点ではまだ相手がCプラプラーだと確証だって持てないだろ。

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

ならそう言うスレ立ててそこでやってくれよ。

294 :デフォルトの名無しさん:2015/06/28(日) 09:13:23.18 ID:OeLQkQMR.net
どうでもいいけど、
C++とVBAを比較して議論して何が得られるんだ?
何を期待しているんだ?
オラにはサッパリ分からん。まあ、好きにしてくれ

295 :デフォルトの名無しさん:2015/06/28(日) 09:16:27.24 ID:cPvRhGo9.net
>>293
だから VBA の話と C# の話混ぜて話すなよってこと
まあ、本人もよく理解できてないんだろうけど

296 :デフォルトの名無しさん:2015/06/28(日) 09:21:41.97 ID:Lt0oVZOg.net
>>294
そりゃそうさ。
前から「VBAに出来ないこんなことが出来るC++SUGEEE」って暗に言いたいのが見え見えなんだもの。

特にそれが分かることが目的じゃないんであればそうなるよ。

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

とてもC++の考え方ばかりで語ってる奴の言う事とは思えないなw

298 :デフォルトの名無しさん:2015/06/28(日) 09:34:12.52 ID:SnEMphd5.net
>>285
>そう言った大きいものをしまわない

自分はその容量の話はすこし疑問に感じた。
スタックを逼迫させるような大きなオブジェクトっていう点。せいぜい数十バイトだというのは例の彼が言ってる通りだから。

299 :デフォルトの名無しさん:2015/06/28(日) 09:34:20.19 ID:Lt0oVZOg.net
Cプラプラーが言うことはデタラメばっかりだな。
前も

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

とか言ってて、結局COM介在させなかったら出来なかったりするしな。

300 :デフォルトの名無しさん:2015/06/28(日) 09:38:31.63 ID:VTU14O1b.net
>>299
はっきり言おう。お前が頓珍漢なだけだ。

301 :デフォルトの名無しさん:2015/06/28(日) 09:40:36.43 ID:Lt0oVZOg.net
>>298
で、どうしまうの?
その>>285でも書いたけど、インスタンスはクラスがあれば幾らでも生成出来るんだけど。
生成する度にスタックエリアに実体を詰め込むの?

302 :デフォルトの名無しさん:2015/06/28(日) 09:46:55.00 ID:SnEMphd5.net
>>301
たとえばDoubleと同じ8バイトのクラスがあるとして、
Dim a As Double, b As Double, c As Double...と生成していくのと、
クラスのインスタンスを x,y,z,...と生成するのではスタックエリアに対する負荷って違うの?

303 :デフォルトの名無しさん:2015/06/28(日) 09:47:09.48 ID:cPvRhGo9.net
>>297
ああ、.NET Framework だったな
で? それがどうかしたのか?
VBA に関係ないことには変わりないと思うけど?

304 :デフォルトの名無しさん:2015/06/28(日) 09:48:23.84 ID:Lt0oVZOg.net
>>300
なら>>299のどこが頓珍漢なんだか言えるか?

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

普段、言われてるんだろな。

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

ちなみに、スタックガーとかヒープガーも元の話題とは金輪際関係ない。

306 :デフォルトの名無しさん:2015/06/28(日) 10:30:02.01 ID:Lt0oVZOg.net
>>305
別に末尾に「ガー」なんて付けた覚えはないが、どこかの思想が偏っているスレに常駐でもしてんの?

参照型、値型の話で、格納される場所によって挙動が変わるのに関係ないとか、
本当に頓珍漢が好きなCプラプラーさんは、頓珍漢なこと言うのも大好きなんですね。

307 :デフォルトの名無しさん:2015/06/28(日) 10:33:06.96 ID:VTU14O1b.net
>>306
元々お前の理解の範疇を越えた話なんだから、無理矢理くちばし突っこまなくてもいいんだよ。

308 :デフォルトの名無しさん:2015/06/28(日) 10:37:46.18 ID:wBeyl/iu.net
>>301
>インスタンスはクラスがあれば幾らでも生成出来るんだけど。

基本型だって宣言のたびにスタックかヒープに生成されるんだから、それはおかしな主張だな。

309 :デフォルトの名無しさん:2015/06/28(日) 10:41:09.88 ID:Lt0oVZOg.net
>>307
もう既に論理的な話も出来ないんですね。
頓珍漢のCプラプラーさんw

ほら、早く304にも答えないと、頓珍漢ってただの逃げ口上だってバレちゃいますよw

310 :デフォルトの名無しさん:2015/06/28(日) 10:41:20.53 ID:wBeyl/iu.net
Dim i As Integer はスタック上だし、
Dim arr() As Integer の中身はヒープに取られるだろう。

311 :デフォルトの名無しさん:2015/06/28(日) 10:45:52.60 ID:Lt0oVZOg.net
>>308
うわ、終いには宣言と生成まで一緒くただよw

流石頓珍漢さん。考えることが違いますね。

312 :デフォルトの名無しさん:2015/06/28(日) 10:48:00.27 ID:Lt0oVZOg.net
>>310
何の言語の話をしてるんです?
またC++か!w

313 :デフォルトの名無しさん:2015/06/28(日) 10:49:07.49 ID:wBeyl/iu.net
さすがにバカ過ぎて相手をするのが疲れる。

314 :デフォルトの名無しさん:2015/06/28(日) 10:55:36.89 ID:Lt0oVZOg.net
>>313
何でVBAのIntegerの配列がクラスに配置されることもなしにヒープエリアに展開されるのか教えてくれよw

315 :デフォルトの名無しさん:2015/06/28(日) 11:17:18.31 ID:6HPl6VuL.net
>>306
> 参照型、値型の話で、格納される場所によって挙動が変わる
VBA の用語でなにがどう違うのか書いてみてよ

316 :デフォルトの名無しさん:2015/06/28(日) 11:29:33.84 ID:SnEMphd5.net
>>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

317 :デフォルトの名無しさん:2015/06/28(日) 12:20:12.63 ID:wBeyl/iu.net
>>311
基本型なら宣言すればデフォルト値で生成されるだろ。厳密なタイミングは知らんが。
Dim i As Long
とすれば4バイトスタックにLongのインスタンスが発生する。
それとも使わなきゃ最適化で消えるとかそういう主張か?

318 :デフォルトの名無しさん:2015/06/28(日) 12:23:50.22 ID:z6q4unEs.net
参照とか面倒臭いからruby使おうぜ

319 :デフォルトの名無しさん:2015/06/28(日) 12:38:55.07 ID:VTU14O1b.net
VBAみたいな初心者用言語に値だの参照だの、くだらない型の区別をとり入れてしまったおかげで
ID:Lt0oVZOg のような可哀想なバカが大量生産されてしまった事は確かだろうな
これは、プログラミング界の悲劇と言ってもいいだろう。

320 :デフォルトの名無しさん:2015/06/28(日) 13:19:19.11 ID:F7aWi8CN.net
VBAに値と参照を区別した型宣言なんてあったっけ?

321 :デフォルトの名無しさん:2015/06/28(日) 13:24:19.89 ID:Lt0oVZOg.net
>>317
なんか言ってる意味が相変わらず訳分からないんだけど、生成って言葉、なんだか分かって使ってる?大丈夫?

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

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

は?

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

というか、インスタンスを生成させる奴が参照型、させないのが値型になると思うけど。

323 :デフォルトの名無しさん:2015/06/28(日) 13:31:27.16 ID:Lt0oVZOg.net
>>319
はいはい、頭のいい頓珍漢Cプラプラーさんは
そんな頭の悪い人達のところに来ないでC++スレに引きこもってて下さいね〜

324 :デフォルトの名無しさん:2015/06/28(日) 13:44:30.23 ID:6HPl6VuL.net
>>320
引数の宣言の ByRef, ByVal の話かと思ったけど違うみたいだし >>315 の質問もスルーしてるし
生半可な知識で語って自爆してるだけにしか見えない
誰とは言わないけど w

325 :デフォルトの名無しさん:2015/06/28(日) 13:57:25.82 ID:F7aWi8CN.net
>>322
機械語レベルでの仕組みの話をしてるのかと思えば「特定の言語の仕様でしょ」とか言われるし、
ヒープだのスタックだのでも話が違うって言われるから、ならVBA上での見え方の問題だと推測できるんだけど、
値渡しでも参照渡しでも無く、ただひたすら「値と参照」なるものが「峻別」されていると主張し続ける。

まず意識合わせしないと話がかみ合わないんだけど、「値と参照」に具体的に突っ込むと無視されるんだよな。

326 :デフォルトの名無しさん:2015/06/28(日) 14:10:13.12 ID:VTU14O1b.net
>>322
まだやってんのかよ。お前には羞恥心という物がないのか?
まずインスタンスの意味調べてこいよw

327 :デフォルトの名無しさん:2015/06/28(日) 14:26:23.23 ID:Lt0oVZOg.net
>>325
VBAでは値渡しや参照渡しとは無関係じゃないけど、他に値型と参照型と言うものが型によって振り分けられ、決められるんだよ。

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

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

コード厨キャラも出したし、>>326みたいな煽りもくれてるし、
まあいつものCプラプラーだから負けず嫌いなのは分かってるけどね。

328 :デフォルトの名無しさん:2015/06/28(日) 14:29:16.43 ID:T3lgZQh9.net
VBAを使う理由
「だって便利なんだもん」

329 :デフォルトの名無しさん:2015/06/28(日) 14:32:50.46 ID:ljCE11NJ.net
そもそもさ、VBAのスレでC++の話で引っ掻き回すやつって頭おかしくね?

330 :デフォルトの名無しさん:2015/06/28(日) 14:41:47.40 ID:OeLQkQMR.net
vba vs c++論争したい奴は、今c++スレにも変なのが湧いているから
そいつと好きなだけ議論して来いよ!

331 :デフォルトの名無しさん:2015/06/28(日) 14:45:43.46 ID:7wl/BqXR.net
>>330
うえぇ・・・
こんなのがいっぱいいるのかなぁ

332 :デフォルトの名無しさん:2015/06/28(日) 15:01:10.84 ID:F7aWi8CN.net
コンパイル言語がどういうものなのかを理解してないと「あっちの言語は高尚で、こっちの言語は低俗」みたいな与太話を真に受けがちだよな。

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

そして一連の話は、あくまで関数の戻り値として使えないって話なのか。確かにC言語ならアドレスを返す事が出来るからなぁ。
でもそれならVBAだと値型を返してるんじゃなくて値型の値を戻り値に代入してるわけだから実装上は参照型と同じ手順を踏んでるよなぁ。

333 :デフォルトの名無しさん:2015/06/28(日) 16:04:03.58 ID:URqhXen8.net
>>322
インスタンスを生成しない型ってなんだよ?お前はそういうところが根本的に理解できてないんだよ。
値型といわれるIntegerだって、変数宣言して値を代入して使えばそこにIntegerのインスタンスが発生しているんだよ。

334 :デフォルトの名無しさん:2015/06/28(日) 16:19:31.99 ID:3j8PstlS.net
どうでもいい議論してるマヌケは死ぬといいよ。
ここはお前らウジ虫の議論する場ではないからwww
三流プログラマってギークフリークにこういうくだらない論争するn好きだよねぇwww

それしか誇れるものないのはよくわかったから、秋葉にでm繰り出してこいよクソども

335 :デフォルトの名無しさん:2015/06/28(日) 16:29:45.85 ID:SnEMphd5.net
>>333
それはそうだし、別にヒープ上にnewして作るものだけがオブジェクトと法律で決まってるわけじゃない。
スタック上にクラスインスタンス作ってもいいけど、寿命はそのスコープに限られるよね。
VBAとかはそういうスコープ管理はプログラマの自由に委ねない言語だから。

336 :デフォルトの名無しさん:2015/06/28(日) 16:52:07.38 ID:7wl/BqXR.net
>>333
ぼちぼちよそでやった方がいいよ



気持ち悪いし

337 :デフォルトの名無しさん:2015/06/28(日) 16:55:35.09 ID:SnEMphd5.net
ところで>>314氏は自分の説明わかってくれたのかな...

338 :デフォルトの名無しさん:2015/06/28(日) 17:03:11.81 ID:z6q4unEs.net
ところで早く死なないかな

339 :デフォルトの名無しさん:2015/06/28(日) 17:58:10.01 ID:6HPl6VuL.net
>>327
> 他に値型と参照型と言うものが型によって振り分けられ、決められるんだよ。
VB.NET の話じゃないんだよね?
MSDN のどこかに書いてあるの?

340 :デフォルトの名無しさん:2015/06/28(日) 18:06:49.84 ID:URqhXen8.net
>>318
ずっと昔のことだけど、MATZ氏がスタック上のオブジェクトのことについてコメントしてたのを思い出した。たしか公式サイト上だった。
いま検索しても出てこない。

341 :デフォルトの名無しさん:2015/06/28(日) 20:44:03.33 ID:hAVUrhR0.net
あるセル範囲の中で
一番出現頻度が高い文字列を返す関数を作っていただけますか?

引数=Range
返り値=String

処理速度が一番短い人にはなにかプレゼントも考えています。

342 :デフォルトの名無しさん:2015/06/28(日) 20:45:27.16 ID:hAVUrhR0.net
例えば、

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

という7つのセル範囲だと、しっこ、が返るような関数です。

343 :デフォルトの名無しさん:2015/06/28(日) 20:54:16.01 ID:/nDPxHEX.net
>>341
できた 簡単やろ
プレゼントが決まり次第公開するよ

344 :デフォルトの名無しさん:2015/06/28(日) 21:03:42.72 ID:z6q4unEs.net
VBAでも余裕だしワークシート関数だだけでも余裕だな
プレゼント何

345 :デフォルトの名無しさん:2015/06/28(日) 22:01:01.29 ID:hAVUrhR0.net
まずは回答をお聞きしましょうか。
試さないとどれが一番処理速度が速いかわからないので。

346 :デフォルトの名無しさん:2015/06/28(日) 22:19:53.72 ID:RJYMt8ab.net
Function しっこ()
  しっこ = "しっこ"
End Function

これより速くしっこを返す関数を作るのは不可能

347 :デフォルトの名無しさん:2015/06/28(日) 22:28:57.66 ID:URqhXen8.net
>>345
もうちょっと条件を付けてよ。
ループの使用禁止とか、ドSなやつ。

348 :デフォルトの名無しさん:2015/06/28(日) 22:52:28.34 ID:hAVUrhR0.net
>>346
こら0点だ。

349 :デフォルトの名無しさん:2015/06/28(日) 22:53:06.94 ID:dOcFp/SG.net
>>345
http://blog-imgs-53.fc2.com/p/a/n/panpilog2/Y2lT23y.gif

350 :デフォルトの名無しさん:2015/06/28(日) 22:54:35.18 ID:hAVUrhR0.net
>>347
お、スキルのあるっぽいかた登場かな
条件はないですよ、どんなことしてもokです。

351 :デフォルトの名無しさん:2015/06/28(日) 22:56:41.67 ID:hAVUrhR0.net
>>349
まんこ だ

352 :デフォルトの名無しさん:2015/06/28(日) 23:23:25.78 ID:z6q4unEs.net
>>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)

353 :デフォルトの名無しさん:2015/06/29(月) 00:17:51.71 ID:QSQZKtdk.net
>>333
VBAでIntegerにインスタンスが出来るって初めて聞いた
.Netなら全ての型はObject型を継承してるから分かるけど
どこかに載ってる?

354 :デフォルトの名無しさん:2015/06/29(月) 01:39:35.86 ID:RWXntF+6.net
>>353
>>299と同じようにいつものデタラメだと思うよ。悔しまぎれの。

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

逆にちゃんと載ってるところ晒せたら大したもんだと思うわ。

355 :デフォルトの名無しさん:2015/06/29(月) 06:37:01.76 ID:EM+B505w.net
ここってインスタンスとか生成とか用語を定義しないまま言い争う遊び?

356 :デフォルトの名無しさん:2015/06/29(月) 06:56:22.06 ID:QSQZKtdk.net
VBAのスレなんだからVBAで言うところのインスタンスだと思うけど
普通に考えて

357 :デフォルトの名無しさん:2015/06/29(月) 07:14:49.86 ID:bvi+oDiY.net
>>301 >>322でのLt0oVZOgの考え方が奇妙だ

358 :デフォルトの名無しさん:2015/06/29(月) 07:19:17.63 ID:RWXntF+6.net
>>356
無駄だよ。結局>>354で言ってた後者に該当して、
一生懸命誤魔化すために定義をすり替えようとしてるの見え見えじゃん。
いつものようになんだかんだ御託を付けて煙に巻こうとする
それがCプラプラークオリティ。

359 :デフォルトの名無しさん:2015/06/29(月) 08:01:33.83 ID:s7kCM2zI.net
>>356
定義あったんか

360 :デフォルトの名無しさん:2015/06/29(月) 08:06:21.49 ID:2N/zEhbN.net
>>358
お前は馬鹿なんだから黙ってろってw

361 :デフォルトの名無しさん:2015/06/29(月) 08:28:14.08 ID:TRRTpdMk.net
少なくとも >>339 への回答がない間は、知ったか君がオレオレ定義で吹いてるだけにしか見えない
まあ、>>316 みたいな具体的な回答をスルーしてることで実力はお察しレベルなんだろうけど

362 :デフォルトの名無しさん:2015/06/29(月) 08:56:57.99 ID:s7kCM2zI.net
ちょっと検索した感じじゃ特に定義された用語じゃなさそうだね。「インスタンス」
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の解説の方は「問題点あり」になってる。

363 :デフォルトの名無しさん:2015/06/29(月) 11:50:32.15 ID:s7kCM2zI.net
>>361
まあSafaArrayCreate 関数が、ってはその通りなんだけど、可変長のものをヒープ以外のところに確保できると思ってたのかねえ>>314は。謎だ。

364 :デフォルトの名無しさん:2015/06/29(月) 12:37:41.33 ID:TRRTpdMk.net
>>362
まあ、ヒープ上に作られた実体をインスタンスって言ってるんだと思うけど...
まあ、オレオレ定義でいいからちゃんと定義晒してもらわないとなんとも言えんわな

>>363
実装方法知ってたらまずそこ思うよね

365 :デフォルトの名無しさん:2015/06/29(月) 16:41:03.08 ID:s7kCM2zI.net
師匠のライブラリ使えばある程度解決するんだよ

366 :デフォルトの名無しさん:2015/06/29(月) 16:53:34.08 ID:ZS1C/3AC.net
>>365
師匠って誰だよ?

367 :デフォルトの名無しさん:2015/06/29(月) 18:13:06.76 ID:n/Ot7XJM.net
定義の話をするなら、そもそも
VBAの公式の資料で値型/参照型という用語をみたことがないんだが

368 :デフォルトの名無しさん:2015/06/29(月) 19:16:29.87 ID:s7kCM2zI.net
話は変わるけど64bitのExcel2010のイミディエイトペインで 2.5^ 2 とか巾乗計算するとExcelが落ちない?
2.5と^の間にスペースを挟めば大丈夫なんだけど、そうしないと落ちる。

369 :デフォルトの名無しさん:2015/06/29(月) 19:53:15.12 ID:UcQNe/b5.net
>>367
「VBA 値型」で検索したらMSDNで
ttps://msdn.microsoft.com/ja-jp/library/dd314344.aspx

が出てきたけどよく見たら.Netだった紛らわしい。

370 :デフォルトの名無しさん:2015/06/29(月) 21:42:09.79 ID:/k/OkC/p.net
>>369
それとか、
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm
とか見て早とちりしたんだろうなって思う
このページも VBA 参照型 でヒットするくせに VB6/VB.NET が混在してて分かりにくいし

371 :デフォルトの名無しさん:2015/06/29(月) 21:46:02.65 ID:2N/zEhbN.net
話は変わるけど今何の話してるの?

372 :デフォルトの名無しさん:2015/06/29(月) 22:10:14.97 ID:s7kCM2zI.net
いままでに見た最も痛いVBAコードの話

373 :デフォルトの名無しさん:2015/06/29(月) 22:22:02.06 ID:rq2QsCgv.net
・Option Expicitがない
・日本語で型指定なし変数宣言
・1サブプロシージャ1000行
・ボタンがたくさんあるのにModule1個
痛くはないけど、解析がとにかく辛かった

374 :デフォルトの名無しさん:2015/06/29(月) 23:18:19.68 ID:s7kCM2zI.net
ループカウンタはLongで、あとは全部Variant。だけどそうするしかないコード。

375 :デフォルトの名無しさん:2015/06/29(月) 23:22:41.60 ID:3jcGZRUX.net
Integerはだめか?

376 :デフォルトの名無しさん:2015/06/30(火) 00:08:24.22 ID:oheNslA5.net
intのほうが遅いという罠

377 :デフォルトの名無しさん:2015/06/30(火) 07:51:30.16 ID:ZBtEU6fC.net
まじかよやっぱりVBA糞だわ

378 :デフォルトの名無しさん:2015/06/30(火) 07:59:10.10 ID:cuvzrYNR.net
Variantは遅い、とかも含めて実用上の観点ではほとんど都市伝説の域ではないか。

379 :デフォルトの名無しさん:2015/06/30(火) 08:15:01.29 ID:+uB1KRi8.net
>>378
Cell とかのアクセスの方が全然遅いし、そもそも Variant で遅いとか言うほどデータ量でかいなら Access とか SQL-Server 使うべきだしね
地味にいまだに 64KB 制限あったりするし w

380 :デフォルトの名無しさん:2015/06/30(火) 09:40:46.17 ID:GcuTOY9X.net
>>379
「VBA 64kb制限」でぐぐってみたら、小学生並みの文章のgoo質問が出てきてすっかり萎えた。

381 :デフォルトの名無しさん:2015/06/30(火) 19:46:24.84 ID:K4kCbRr+.net
アクセスって使えるのか?
エクセルと同じデータ持たせて何十倍ってデータ量になって実用に耐えないと感じた記憶しかないんだが。

382 :デフォルトの名無しさん:2015/06/30(火) 20:22:54.40 ID:YayzGG6j.net
Excelでデータ管理してるよりはまだマシ
Excelだけじゃ集計処理とか大変だし
SQL使えないし、コード突き合わせもクエリで一発
自分だけ使う分ならAccessで十二分
ただし複数人共有で使うのは論外

383 :デフォルトの名無しさん:2015/06/30(火) 21:10:44.20 ID:I4Ac0QOz.net
>>381
Excel と同じデータで mdb が xls の何十倍になってるならなにか間違えてる

384 :デフォルトの名無しさん:2015/06/30(火) 21:11:03.98 ID:Ws6hqNxp.net
>>381
確か1Mくらいまで使えたような

385 :デフォルトの名無しさん:2015/06/30(火) 21:26:42.38 ID:QypIxxa4a
というかDBファイル用意してエクセルで読み書きすりゃいいじゃん

386 :デフォルトの名無しさん:2015/06/30(火) 21:26:58.91 ID:Ws6hqNxp.net
>>382
アクセスと同じようにJet4.0使うならExcel のシートにもSQL投げられるよ。
それどころかフォーマットさえしっかりしていればCSVにだって投げられる。

387 :デフォルトの名無しさん:2015/06/30(火) 22:16:11.34 ID:BiTNAw1o.net
そもそもデータの持ち方として、テーブル形式はもはや時代後れ。
xmlとかjsonとかが主流になるよ。
SQLは性能劣化とバグの温床だし。
SQLちょいと書き直すと処理能力10倍とかざらだから。

388 :デフォルトの名無しさん:2015/06/30(火) 23:01:31.71 ID:fROSMXtx.net
VBAでセルに数式を代入する場合、数式を文字列で代入すればよいですが、
連想配列をセルに代入する場合は、どのようにコードを書けばよいのわからず、ハマっています。
手で入力する場合の、Ctrl+Shit+Enterをどうやればいいのか...
VBAで連想配列処理を行うのではなく、連想配列式をVBAでセルに代入したいのですが、やり方がわからない。。
詳しい先輩方、ご指導くださいませ。

389 :デフォルトの名無しさん:2015/06/30(火) 23:18:25.32 ID:fROSMXtx.net
自己解決しまぢた。
FormulaArrayプロパティで設定するんですね。

失礼致しました。。

390 :デフォルトの名無しさん:2015/06/30(火) 23:31:59.27 ID:tOsGp7lH.net
>>389
それ連想配列じゃなくて配列数式だろ?
連想配列ってmapとかのことだぜ。

391 :デフォルトの名無しさん:2015/06/30(火) 23:46:00.56 ID:fROSMXtx.net
>>390
ですね。。
なんで検索しても引っかからなくて、質問しちゃったんですね。
"配列数式"って単語がウル覚えで、
検索したら"連想配列"がいっぱいでてくたもんで...

392 :デフォルトの名無しさん:2015/06/30(火) 23:56:03.52 ID:tOsGp7lH.net
VBA的にはDictionaryか

393 :デフォルトの名無しさん:2015/07/01(水) 01:10:32.10 ID:jqNSI/h3.net
>>387
xamlは流行りませんかそうですか

394 :デフォルトの名無しさん:2015/07/01(水) 07:04:49.59 ID:6h4b9tb7.net
SQLがバグの温床とかありえん。使う人の頭が悪いだけだよ。

395 :デフォルトの名無しさん:2015/07/01(水) 07:53:05.06 ID:jqNSI/h3.net
xmlは設定ファイルとかで使うことはあるけど、
データベースとして使うのに耐えうるものなの?

396 :デフォルトの名無しさん:2015/07/01(水) 08:53:19.12 ID:D21eOTfg.net
ステマっぽさある

397 :デフォルトの名無しさん:2015/07/01(水) 11:52:06.80 ID:yoCegXat.net
なんだってそう  悪いのは相手 向こう 道具  おれはこれっぽっちも悪くない まちがってない!

398 :デフォルトの名無しさん:2015/07/01(水) 12:03:15.44 ID:tJW6CsdE.net
>>395
全くと言っていいほど使い物にならないので、廃れましたよ。
完全敗北です。

いまじゃ、MongoDBのようなものも出てきていますしね。XMLDBが復権する
事はもうありませんよ。

399 :デフォルトの名無しさん:2015/07/01(水) 12:04:30.63 ID:tJW6CsdE.net
ちなみにXMLDBの遅さは、

第三形態になったフリーザ vs ベジータの戦いみたいなもの。
もちろんベジータがXMLDBだ。

400 :デフォルトの名無しさん:2015/07/01(水) 12:17:10.42 ID:mPxMjEr/.net
XMLDB ってそのままの形で扱う訳じゃないでしょ
他のプログラムが出力した XML を読み込んで処理するためのものだと思ってたけど...
要するに CSV の代替じゃないのかな?

401 :デフォルトの名無しさん:2015/07/01(水) 12:27:12.70 ID:iTWnMbVI.net
おいエクセルは?VBAは?!

402 :デフォルトの名無しさん:2015/07/01(水) 12:33:07.87 ID:D21eOTfg.net
>>401
セル範囲に対して
範囲.Value ってやると2次元配列が取得できて便利だね!
だけど 矩形(長方形)じゃない飛び飛びの範囲だと思わぬ結果になって罠だね!

403 :デフォルトの名無しさん:2015/07/01(水) 21:24:16.91 ID:G7iO5tSrE
てす

404 :デフォルトの名無しさん:2015/07/01(水) 21:28:50.04 ID:G7iO5tSrE
セルをマウスオーバーした時に別セルの値を表示したい、って時どう実現します?
要件は、
セルに記載されているコードを元に別ブックのセルの値を参照してそのコードに紐づく名称をとりたいといったものです。
自分はFindで見つかった値をセルのコメントに登録して表示するようにしたのですが、どうもコメント登録時の赤いポチがお気に召さないようで、どうしたもんかと考えています。
まあ見た目だけなんで業務的にはどうってことないんですけど。

405 :デフォルトの名無しさん:2015/07/01(水) 21:49:36.73 ID:r6P8NuLo.net
>>400
過去の歴史を勉強したまえよww

406 :デフォルトの名無しさん:2015/07/01(水) 22:24:17.39 ID:huUe7xTB.net
>>405
アホ晒して楽しいのか? w

407 :デフォルトの名無しさん:2015/07/01(水) 22:25:12.56 ID:r6P8NuLo.net
>>406←アホの事例ですね。

408 :デフォルトの名無しさん:2015/07/01(水) 23:43:00.11 ID:s4VVys9R.net
ワシはティンコを2本もっている
2本目はとっておきだ(´・ω・`)b

409 :デフォルトの名無しさん:2015/07/02(木) 05:03:52.50 ID:D0UhKb7j.net
>>407
具体的な内容を書けないなら無理にレスするなよ w

410 :デフォルトの名無しさん:2015/07/02(木) 05:22:03.78 ID:9qb5cWlQ.net
xml形式はその昔、「人が読めて、実装も簡単で、拡張性もあり、内容構造の変更も簡単」という利点を強調されてたな。
でも意味づけする為に修飾子が大量にくっついてくるわけだから大型のデータベースには向かないのは確かだろうな。

411 :デフォルトの名無しさん:2015/07/02(木) 09:37:50.18 ID:CcSdJJgr.net
>>409
おまえなんか具体的な事書いてんの?

412 :デフォルトの名無しさん:2015/07/02(木) 09:54:01.58 ID:DnmQ2SBtS
xmlなんてどうでもいい
dxfつかってCADデータベース操作するような意味不明なことしてるやつとかいねえのか

413 :デフォルトの名無しさん:2015/07/02(木) 20:19:18.42 ID:RENWNoB4.net
シート毎(シート名は対象月)に翌月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

414 :デフォルトの名無しさん:2015/07/02(木) 20:26:36.22 ID:cgPWlYAt.net
>>413
指定日はDateと比べるんだから、指定日の年はDateの年を設定すればいい
指定日は終了日だけじゃなくて開始日も必要だろう

415 :デフォルトの名無しさん:2015/07/02(木) 20:49:29.04 ID:RENWNoB4.net
>>414

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

その場合、例えば2016/1/10に"12月度"のシートを開いても、
指定日が2016+1 /1/10 となってしまい、処理は実行されないと思うのですが、、、

416 :デフォルトの名無しさん:2015/07/02(木) 20:50:31.63 ID:9qb5cWlQ.net
>>413
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に貼り付け。

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

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月度が反応しちゃうけど「いつまで反応し続けるか」が条件にないし、年度管理しないとそんなもんかなぁ。

418 :デフォルトの名無しさん:2015/07/02(木) 21:04:45.30 ID:9qb5cWlQ.net
>>417
あ、Dayの指定をテスト状態から戻して無かったわ。
下から6行目の所、

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

にしといて。

419 :デフォルトの名無しさん:2015/07/02(木) 21:28:54.52 ID:cgPWlYAt.net
>>415
12月ってのは、当年のなのか?前年または翌年なのか?
当年の12月なら、2016/1/10において12月度(2016/12/11-2017/1/10)はまだ到達してないから
処理が実行されないのは正常だよね
当年度の12月というのであれば、当日が4/1以降かどうかで当年か前年か切り替えないとダメだろう(年度切り替えが4/1だとして)

420 :デフォルトの名無しさん:2015/07/02(木) 21:39:28.39 ID:R9hbfqH1.net
ブックに対象年度の情報がなければ正確な処理は論理的に不可能です

421 :デフォルトの名無しさん:2015/07/02(木) 21:59:38.14 ID:cgPWlYAt.net
>>420
対象の年度が何らかの方法で確定できるなら、ブックに対象年度が無くても理論的には可能です
たとえば
対象の年度は現在の年度とし、現在の年度はPCの操作時の日付より確定できるときとかな
まあ、対象年度の情報はいらないが、年度に関する何らかの情報は必要かもしれんが
年度確定のための情報(年度開始日)とかな

つか俺VBAの話一切してないなw

422 :デフォルトの名無しさん:2015/07/02(木) 22:22:25.92 ID:R9hbfqH1.net
>>421
それはまた随分非論理的な理論ですね。
どこかで発表されているのでしょうか、その理論は?

423 :デフォルトの名無しさん:2015/07/02(木) 23:49:36.87 ID:PhnYLcQw.net
>>420
うん。俺も無理だと思った。
頭が決まってないんだから、何をもって年が始まったばかりなのか、
1周して来たのかを確定出来ないと思う。

424 :デフォルトの名無しさん:2015/07/03(金) 00:18:24.08 ID:xQFZnjt9.net
どうせbook名に2015とかついてるだろうからそこから取得すれば?

425 :デフォルトの名無しさん:2015/07/03(金) 08:21:48.74 ID:zaw8UGxR.net
>>424
もうそういう反吐の出るような作り方してる奴は無視でいいよ。

426 :デフォルトの名無しさん:2015/07/03(金) 10:14:07.01 ID:bMlB0lVi.net
>>424
そういう解決法はありありだと思うけどなぁ。
シート名に情報入れといて抜き出すとかも。

427 :デフォルトの名無しさん:2015/07/03(金) 10:48:31.53 ID:tIDo5nwi.net
マクロと一緒のディレクトリにテキストファイル置いて
「2015」とか書いて読み取るとか。

428 :デフォルトの名無しさん:2015/07/03(金) 11:10:15.29 ID:zaw8UGxR.net
>>426
ドキュメントプロパティを使えよ・・・ブック名なんていい加減なもの使わないで。

429 :デフォルトの名無しさん:2015/07/03(金) 12:22:12.36 ID:xJ8vVgP9.net
ファイル名は確実なアイデンティティだぞ

430 :デフォルトの名無しさん:2015/07/03(金) 12:26:17.84 ID:vPK10GoB.net
別なページに「2015」って年度入れると、
その年度の月度毎のテーブル作るようにしといて、
他のページはそこを参照させるとかなら簡単、というかメンテしやすい

まあ、ページ開くとマクロ実行なんてオレは実装しないんで良いけど

431 :デフォルトの名無しさん:2015/07/03(金) 13:20:39.05 ID:bMlB0lVi.net
>>428
ドキュメントプロパティの読み込みは時間かかるからね。
例えば、1000ファイルの中の処理対象100ファイルを特定するのに、Dir.glob()系の機能で
探した方が高速でしょ。

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

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

ただ、ドキュメントファイル内のメタデータを活用できるツールを使ってるなら、ドキュメント
プロパティは積極的に使うのがいいと思う。

432 :デフォルトの名無しさん:2015/07/03(金) 14:04:17.97 ID:R//i/7GN.net
>>426
同意
ただし、速度とかじゃなくて、大抵の利用者にとってその方が簡単で、分かりやすくて、間違いにくいから
データ量が多いなら >>427 とかもあるけど年号程度ならファイル名で充分
ドキュメントプロパティとか言ってる奴は自称℃玄人の臭いがする w
ユーザーに触らせないちょっとした設定とかを置くにはいいんだけどね

433 :デフォルトの名無しさん:2015/07/03(金) 14:05:48.12 ID:R//i/7GN.net
>>411
>>405 に比べれば >>400 の方がより具体的だろ?

434 :デフォルトの名無しさん:2015/07/03(金) 17:34:55.87 ID:KcmFW5ogi
データベース関数つかえば大抵のことはできるもよう(データベースとして使えるとはいってない)

435 :デフォルトの名無しさん:2015/07/04(土) 13:21:08.55 ID:U38uGtdG.net
しょうもないけど分かりやすいソリューションは生き残る

436 :デフォルトの名無しさん:2015/07/04(土) 14:34:10.54 ID:WvwJxr10.net
>>428
次にお前は「コピペしたままプロパティ修正漏れの犯人誰だ!? コロセ」という

437 :デフォルトの名無しさん:2015/07/04(土) 14:47:41.85 ID:n+Lf90L5.net
コピペしたままプロパティ修正漏れの犯人誰だ!? コロセ


はっ!!

438 :デフォルトの名無しさん:2015/07/04(土) 19:49:31.36 ID:CDSb/b0p.net
居たぞ!あいつだ!
撃てー!!

439 :デフォルトの名無しさん:2015/07/05(日) 01:16:07.81 ID:YU79Y+KK.net
Dim myCell As Range
myCell = ThisWorkbook.Worksheets("Sheet1").Range("A1")

このような記述の後は、その都度ブック名やワークシート名を明記しなくても、
myCellがThisWorkbookのSheet1のA1セルであることは保証されますか?
つまりブック名やワークシート名を省略しても大丈夫でしょうか?

440 :デフォルトの名無しさん:2015/07/05(日) 01:42:12.25 ID:SLIL1g2F.net
Dim myCell As Range
Set myCell = ThisWorkbook.Worksheets("Sheet1").Range("A1")
これで大丈夫

441 :デフォルトの名無しさん:2015/07/05(日) 03:20:04.46 ID:YU79Y+KK.net
>>440
ありがとうございました。

442 :デフォルトの名無しさん:2015/07/05(日) 09:04:41.96 ID:vbphD8dy.net
あるアプリケーションソフトで
データファイルを与えたらそれを分析して画像ファイルとして出力してくれるものがあるのですが
これらの操作をVBAのコードで書いて自動化することはできますか?

443 :デフォルトの名無しさん:2015/07/05(日) 09:08:34.05 ID:vbphD8dy.net
「データファイルを与えたらそれを分析して画像ファイルとして出力」の部分は
本来ならそのアプリケーションを立ち上げた状態で
ファイル(F)→開くで開いて、そのアプリに特有な操作(といってもツール→出力みたいな操作)をしないといけません。

444 :デフォルトの名無しさん:2015/07/05(日) 09:09:42.08 ID:vbphD8dy.net
つまりVBAで
・あるアプリを開く
・そのアプリを操作する (メニューバーからの選択だけのわりと単純)
のコードは書けますか?

445 :デフォルトの名無しさん:2015/07/05(日) 09:28:22.63 ID:ayYTjQLc.net
>>444
コマンドラインからの操作ならWScriptを介せば出来る。ただそのソフトからの出力を直接受け付ける事は出来ない。

446 :デフォルトの名無しさん:2015/07/05(日) 09:50:10.08 ID:vbphD8dy.net
>>445
ありがとうございます。
ところでWScriptとはなんでしょうか?
出力はそのソフトが勝手にファイルを作ってくれるなら大丈夫でしょうか?

447 :デフォルトの名無しさん:2015/07/05(日) 11:30:21.63 ID:XIvEwRaJ.net
Windows Script Host (WSH)

VBScript (VB)か、JScript (JavaScript)で、
プログラミングする

448 :デフォルトの名無しさん:2015/07/05(日) 14:55:03.32 ID:CZs4iz8t.net
)))))))))))(´・ω・`)b

449 :444:2015/07/05(日) 14:55:29.29 ID:CZs4iz8t.net
444げっち(´・ω・`)b

450 :デフォルトの名無しさん:2015/07/07(火) 06:53:14.99 ID:N5IK5nOl.net
質問です

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

RangeやCellsもそうしないとだめですか?

451 :デフォルトの名無しさん:2015/07/07(火) 08:28:55.91 ID:xJTxnmtV.net
適当に解放は不要だと言ってみる

452 :デフォルトの名無しさん:2015/07/07(火) 12:33:14.63 ID:L2fl7GI9.net
>>440
Sheet1.Range()ってやればいいのに、なんでworksheets()ってやる馬鹿が多いの?
シート名変えたら動かなくなっちゃうじゃん。

453 :デフォルトの名無しさん:2015/07/07(火) 12:34:16.38 ID:IXfNO3Pf.net
シート変えても動くようにするためでしょ

454 :デフォルトの名無しさん:2015/07/07(火) 12:35:47.32 ID:4626lywF.net
>>452
オブジェクト名変えたら動かなくなっちゃうじゃん

455 :デフォルトの名無しさん:2015/07/07(火) 12:38:02.42 ID:L2fl7GI9.net
>>453
はw?
シート変えるなら
Sheet2って変えればいいだけでしょ、

コレクションで指定だと、存在しないシート指定してたら実行時までエラーがわからんぞ。
コンパイルで弾くようにしろって。

456 :デフォルトの名無しさん:2015/07/07(火) 12:40:05.65 ID:L2fl7GI9.net
>>454
オブジェクト名変えたら動かなくていいんだよw
シート名変えて、コードないの変えるべきとこ変えないで動いてる方が問題だろw

457 :デフォルトの名無しさん:2015/07/07(火) 12:41:29.85 ID:L2fl7GI9.net
動的って条件がなかったな。
そういう条件があればそれでいいよ

458 :デフォルトの名無しさん:2015/07/07(火) 12:42:58.35 ID:L2fl7GI9.net
でも、この場合Sheet1をベタ打ちしてるんだからSheet1しか参照しないだろ

459 :デフォルトの名無しさん:2015/07/07(火) 12:43:24.00 ID:4626lywF.net
>>456
落ち着いて自分のレス読み直してみろ

460 :デフォルトの名無しさん:2015/07/07(火) 12:46:45.79 ID:L2fl7GI9.net
>>459
Sheet1って指定しときゃシート名変えても動くのしらなかった?
名前経由じゃなくてオブジェクトを直接参照してるって仕組みわかってる?

461 :デフォルトの名無しさん:2015/07/07(火) 12:46:47.13 ID:4626lywF.net
まあ、そんなもんはどっちでも良いんだよ。
本当に問題があるのは、こうでなければいけないっつー凝り固まった頭。

462 :デフォルトの名無しさん:2015/07/07(火) 12:48:12.35 ID:L2fl7GI9.net
>>461
学習能力がないっていうんだよ。そういうの。
プログラムに関心がないならそう言えばいいじゃん。

463 :デフォルトの名無しさん:2015/07/07(火) 13:48:16.88 ID:xJTxnmtV.net
プログラムには関心があるのでMSの仕様は積極的に無視していこうぜ!

464 :デフォルトの名無しさん:2015/07/07(火) 16:38:29.00 ID:qt5SIPya.net
そりゃ、Sheet1ってのはオブジェクト名であって、シート名じゃないからな
まあシートのオブジェクト名わざわざ変えるやつはそうそう居ないだろうけど
シートのオブジェクト名変えてもWorksheetsなら動くけど、Sheet1だと動かなくなるぞ

465 :デフォルトの名無しさん:2015/07/07(火) 18:55:06.01 ID:L2fl7GI9.net
>>464
コンパイルエラーと実行時エラーを同じエラーで済ますのならこれ以上話すことはないです。

466 :デフォルトの名無しさん:2015/07/07(火) 19:05:50.43 ID:PadiFETB.net
結局のところ、俺の中では
Worksheets(Sheet1.Name)って指定してやることで落ち着いた

467 :デフォルトの名無しさん:2015/07/07(火) 19:14:05.52 ID:C/6MhKU5.net
thisworkbook以外のブックのsheet1オブジェクトってどうやって参照すんの

468 :デフォルトの名無しさん:2015/07/07(火) 19:22:06.93 ID:kLzThONO.net
エクセルのシートってマクロ実行中でもユーザーが削除出来ちゃうんだぜ
怖いよねこれ

469 :デフォルトの名無しさん:2015/07/07(火) 21:04:00.08 ID:ng2chkeI.net
設定シートとか、原本シートならオブジェクト名分かりやすいのにいつも変えてるわ
それ消されたら、プログラム自体動かなくなるんだし
あとworksheets("名前")って自動メンバ表示されないよね
いっぱいworksheets("名前")って書いてあると、間違えたりしないのかなと気になる
書き方って人それぞれなんだとは思うけど

470 :デフォルトの名無しさん:2015/07/07(火) 22:17:02.95 ID:kLzThONO.net
シートを特定するコードはいっぱい書くものじゃないよ

471 :デフォルトの名無しさん:2015/07/07(火) 22:18:48.65 ID:RkSJtY+g.net
>>460
おれは知ってるけど
sheet1だの2だの連番だと分かりにくいから名前指定する派
オブジェクト名わざわざ変えるのもメンドイし

シート名を変えるとプログラム動かなくなるから
変えないでねって、禁止すればいいだけの話
ユーザーが勝手にシート名変えられると、
統一感無いシート名になるから嫌だ
パートのおばちゃんとか変なシート名つけるんだよ
全角半角混在とか

472 :デフォルトの名無しさん:2015/07/07(火) 22:19:51.01 ID:XzarvOcj.net
>>467
ThisWorkbookから別のブックを開いて参照するのなら以下の方法
手操作などで別途開いてあるブックを参照する方法はわからん

Dim bk1 as Workbook
Set bk1 = Workbooks.Open(ブックを開くための各種パラメータ)
これでブックを開く
あとは
bk1.Sheets("sheet1")で参照する

473 :デフォルトの名無しさん:2015/07/07(火) 23:01:33.41 ID:L2fl7GI9.net
>>471
置換しろ。初心者か

474 :デフォルトの名無しさん:2015/07/07(火) 23:37:06.41 ID:ZBt1Rm7d.net
>>471
あなたの主張の本質と関係ないところで悪いけど、データじゃなくて名前だろ?
全角半角混在なんて何も悪いことはないと思うよ。

475 :デフォルトの名無しさん:2015/07/08(水) 00:27:04.34 ID:MD3q7WpQ.net
コードのリファクタリングで置換とかそれマジで言ってるの

476 :デフォルトの名無しさん:2015/07/08(水) 01:35:24.93 ID:Jtek8cfL.net
そんなのリファクタリングと呼べるのか?

477 :デフォルトの名無しさん:2015/07/08(水) 05:58:09.06 ID:dAdTeSHa.net
VBA弄れるヤツじゃないと修正出来ない様なエラー出しても問題ない環境ならオブジェクト名を直に選択してもいいだろうけど、
普通、VBA使うような職場だったらメッセージ出して素人でも修正可能な状態に出来るWorksheets()を使うだろうなぁ。

478 :デフォルトの名無しさん:2015/07/08(水) 06:36:39.00 ID:20FcS8oh.net
>>474
シート名も本質的にはデータだよ

479 :デフォルトの名無しさん:2015/07/08(水) 06:48:28.72 ID:6TnygTyi.net
>>478
であればデータ型は文字列なんだから文字列として許されるものならなんでもいい

480 :デフォルトの名無しさん:2015/07/08(水) 06:57:00.68 ID:z3zUBBg1.net
>>478
視覚的に認識しやすいから名前は重要だ
Sheet1って書いてあって何を示すのかはわからないだろ?
そりゃ名前つけたくなるだろ
パートのおばちゃんが正しい

Sheetの左隅にでもルール上の連番アンカ文字列つけて
それを見て判定する様な処理を追加すれば解決する
重複は検出してエラーではじく

481 :デフォルトの名無しさん:2015/07/08(水) 07:19:46.04 ID:Jtek8cfL.net
Sheet1と言うのは例えだと思うよ。

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

シートの横っちょにアンカー文字付けてたって、
何のゴミだこれと思って消しちゃうパートのおばちゃんだっているかもよ。

482 :デフォルトの名無しさん:2015/07/08(水) 07:27:05.60 ID:b3kmvtlv.net
ブックもシートもSetしてから使うもんだろ
基本中の基本
個人的には、小規模ならWithでも可としてる

483 :デフォルトの名無しさん:2015/07/08(水) 07:55:49.21 ID:Jtek8cfL.net
>>482
なんで直接弄らないで変数に一度入れないといけないの?

基本中の基本が分からなくてごめん。
でも本当に分からないから教えて下され。

484 :デフォルトの名無しさん:2015/07/08(水) 08:02:24.36 ID:20FcS8oh.net
>>480
そんな面倒なこと考えなくても重要なデータはプロテクトかければいいんだよ。

シート名は重要だからこそ、パートのおばちゃんにへんてこな名前に変えられないように
してあげるのが優しいやり方。
そもそも、基本的にマクロを含むエクセルファイルはプロテクトをかけるべきだね。

485 :デフォルトの名無しさん:2015/07/08(水) 10:11:14.20 ID:G6HCaUBj.net
他人に使わせるという発想!

486 :デフォルトの名無しさん:2015/07/08(水) 11:28:53.11 ID:NFLl29uw.net
至急!
Officeアップデートしたら使えなくなったよ。KB2596787かKB2920794だと思うけど。その後すぐにMicrosoft.NET Framework3.5.1の更新もあてて、最新状態だけど動かない。

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

助けて

487 :デフォルトの名無しさん:2015/07/08(水) 12:13:25.57 ID:Fjn1PRGp.net
>>482
なぜ、Setするのが基本なの?

set ws = thisworkbook.worksheet(sheet1.name)

は 結局sheet1と等価なものなのに。

488 :デフォルトの名無しさん:2015/07/08(水) 12:19:49.04 ID:HWq2i8Xl.net
ヨソ様に使って戴くという謙虚な慎み深さ!

489 :デフォルトの名無しさん:2015/07/08(水) 15:53:22.41 ID:HMKJDSG5.net
>>486
それ、最近まで有名になってた問題じゃんww

とっくに解決策でてるよ

490 :デフォルトの名無しさん:2015/07/08(水) 18:53:12.84 ID:pxdeghu8.net
forguncyっていうアプリ気になるんだけど使ってる人いますかね
VBAでDBに接続して、出力するセルを指定して
既存の帳票にデータを表示するのが面倒臭くなってきたし
何よりweb化できるっていうのが気になる

491 :デフォルトの名無しさん:2015/07/08(水) 19:44:47.46 ID:dAdTeSHa.net
>>487
Set WS = ThisWorkbook.Worksheets("Sheet1")

はSheet1と等価じゃないから。
というかこの話が分からないのはVBA触ったことないヤツだけだろ。

492 :デフォルトの名無しさん:2015/07/08(水) 20:42:07.16 ID:20FcS8oh.net
俺はどっちかというと等価派だな

493 :デフォルトの名無しさん:2015/07/08(水) 20:46:23.12 ID:PAkk6Hqa.net
>>491
等価でない理由を教えてちょーだぁ〜

494 :デフォルトの名無しさん:2015/07/08(水) 21:35:47.85 ID:JmEjW40sv
セットしたら実行中にプロパティ格納するやん

495 :デフォルトの名無しさん:2015/07/08(水) 22:13:57.79 ID:NCKypISk.net
質問。
小数点がピリオドじゃない言語圏で、小数を含む文字列を安全に数値に変換するとしたらどんな方法があるでしょうか。
同じソフトを流用したいのだけど、おフランスだと小数点がカンマなんだよね。。。

496 :デフォルトの名無しさん:2015/07/08(水) 22:45:14.03 ID:85bEY6Fg.net
カンマをピリオドに置き換えちゃえばいいんでね?ダメかな?w

497 :デフォルトの名無しさん:2015/07/08(水) 23:40:21.27 ID:FO1XXzvv.net
>>495
オプションで小数点記号と桁記号を変更できるから
おフランス式に設定した後に
=value("123.456,789")
でいいんじゃないかい

498 :デフォルトの名無しさん:2015/07/08(水) 23:43:19.85 ID:Czg0GgmD.net
>>491
等価かわからないけど、こう書く派。
後から読んでわかりやすいから。

ま、書きたいようにかけ。
規約があるなら則れ。

499 :デフォルトの名無しさん:2015/07/08(水) 23:52:44.95 ID:oZ2b660+.net
マジックナンバーや設定値は、プログラム中に書かずに、外部ファイルから読み出せよ。
おれは面倒だから、設定値記入用のワークシート(これだけは名前固定)を用意しているけどな。

500 :489:2015/07/09(木) 00:41:06.11 ID:AOeRDpks.net
ありがとうございます。

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

>>497
そんな設定があったのですね。
設定を変えてしまうと影響範囲が大きいかも知れないので、まずそっちを確認してみるです。
‥‥逆に、小数点の情報をプロパティから拾えれば、変換前に双方を置換で済ませられるかも。

501 :デフォルトの名無しさん:2015/07/09(木) 02:54:43.58 ID:Vp2Vvxuo.net
>>491
=で比較してみろハゲ

502 :デフォルトの名無しさん:2015/07/09(木) 03:35:26.14 ID:JlZfMmHC.net
>>495
試した事ないからちゃんと動くかどうかは知らんが
CCurとかのCxxx系の変換関数は、国別情報に従って変換するはず

503 :デフォルトの名無しさん:2015/07/09(木) 03:43:39.04 ID:JlZfMmHC.net
>>501
=で何を比べろと?
Sheet1やWorksheetにデフォルトプロパティはなかったはずだけどなぁ
If Sheet1 = ws とかやれって言ってるの?
そもそもSetされてる変数は参照をもってるわけで
参照となにかが等価ってのがどういう状況の事を言ってるのかよくわからんが

ちなみに
Set ws = ThisWorkbook.Worksheets("Sheet1")
MsgBox ws Is Sheet1
だとTrueって表示されるんだが、これについてはどう思ってるの?

504 :デフォルトの名無しさん:2015/07/09(木) 04:43:53.99 ID:IJ3FUG93.net
>>493
Worksheetの名前がSheet1である事と、オブジェクト名がSheet1である事は保証されていないから。

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

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

というか今までの流れ見てるとシートに直接コード書いちゃうヤツが結構いるのか。
ワークシートはセルに情報を書いたり消したりする度に容量が増えるから定期的に新しいシート作ってコード全て移すメンテナンスが必要になるぞ。

505 :デフォルトの名無しさん:2015/07/09(木) 06:09:50.02 ID:4VH0pnre.net
>>503
ああ、演算子の等値比較とか等価比較の事だと勘違いしちゃったんだね。
でも、今は言語のシンタックスを論じてる訳ではないからそういう区別はいらないよ。
普通は、等値=等価という意味で使って問題ない。

506 :デフォルトの名無しさん:2015/07/09(木) 06:15:21.28 ID:0cZHnh39.net
>>504
>ブックもシートもSetしてから使うもんだろ

と、

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

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

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

そこを踏まえて何で基本中の基本なのかもう一度説明して欲しいなぁ。

507 :デフォルトの名無しさん:2015/07/09(木) 06:32:59.88 ID:M1CA7AhU.net
>>504
シートに直接コードを書くとはどういう意味ですか?
それがよくないのなら、どうすればよいですか?

508 :デフォルトの名無しさん:2015/07/09(木) 06:58:14.40 ID:0cZHnh39.net
シートのイベントって標準モジュール側でも拾えるんだっけ?

509 :デフォルトの名無しさん:2015/07/09(木) 07:03:09.36 ID:yvZx6GXv.net
>>508
確かダメ

510 :デフォルトの名無しさん:2015/07/09(木) 07:22:06.12 ID:0cZHnh39.net
複数のブックを開いて対象のシートを処理するという流れなら確かにシート名から見た方がいいかもね。

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

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

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

Set使わなくてもシート名指定でもObject指定でも使えるからね。

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

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


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

例えば
●●●?●●●

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


例えば将棋のソフトなんて、作ってる人は将棋の初心者程度の実力しかなかったりっていいますよね。
にも関わらず、人間より強いソフトを作ったりしますよね。
チェスやオセロなんか、人間をはるかに超えてるわけじゃないですか。

512 :デフォルトの名無しさん:2015/07/09(木) 08:34:48.47 ID:n0IdOdTN.net
シート名が変更されてるケースがあるから >>491 が等価でないと言うのはわかるけど、>>487 へレスしてる意図がわからん

513 :デフォルトの名無しさん:2015/07/09(木) 08:39:00.10 ID:Vp2Vvxuo.net
>>504
コンパイルって機能しってますか?
基本中の基本ですよ

514 :デフォルトの名無しさん:2015/07/09(木) 08:50:08.88 ID:yvZx6GXv.net
>>511
webページをコピペする速さと、更新する速さは別の作業を比較しているようで、意味無いんじゃあないのか?

515 :デフォルトの名無しさん:2015/07/09(木) 09:39:12.22 ID:0zCUc4Y+.net
>>511
機械学習の分野だなぁ

516 :デフォルトの名無しさん:2015/07/09(木) 10:05:02.59 ID:r4sommXw.net
>>514
どういうことでしょうか?
例えば
ttp://www.chikuwachan.com/live/
これなんかはニコニコ生放送の何千とあるほぼすべての放送のコメント数をリアルタイムで表示しています。
こういうのはどうやってるんでしょうか?
一気に数千窓開いてコピーしたりっていう?

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

>>515
エクセルのVBAでは無理がありますか?

517 :デフォルトの名無しさん:2015/07/09(木) 10:08:15.75 ID:hn2NpzTq.net
Excelのwebクエリでできなきゃ諦めろん。

518 :デフォルトの名無しさん:2015/07/09(木) 10:23:16.06 ID:yvZx6GXv.net
>>516
そのサイト開いて見たが、時事刻刻変化しているようには見えないが。

519 :デフォルトの名無しさん:2015/07/09(木) 10:35:12.65 ID:SLWTmnwe.net
>>511
> 約5000ページあるwebページを、
> 30秒以内にすべてコピーペーストすることって技術的に可能ですか?

対象が第三者のサーバなら、技術的に可能か不可能かの前に、それはやってはいけない。
常識的なアクセス頻度は1ページ/1secまで。
それを超えるとアタックと見なされる恐れがある。

520 :デフォルトの名無しさん:2015/07/09(木) 12:01:20.85 ID:r4sommXw.net
>>519
何か方法ありませんか?
>>516のページもダメなことしてるってことなんです?
違うページでもダメなんですか?

521 :デフォルトの名無しさん:2015/07/09(木) 12:32:46.98 ID:/PjUCdQU.net
そのサイトのソース見ろ 下端あたりに概略書いてある
どうしてもExcelでやりたい? まずはHTMLでどうしてるか理解できないと移植はむつかしい

522 :デフォルトの名無しさん:2015/07/09(木) 12:57:12.58 ID:mTsNKsHF.net
googleスプレッドシート上でgas取得して、Excel形式で保存料すればいいw

523 :デフォルトの名無しさん:2015/07/09(木) 16:48:31.07 ID:JlZfMmHC.net
>>505
お前は>>501なのか?
=で比較しろっていっておいて、シンタックスの問題じゃないってか
等値でも等価でも同一インスタンスでもいいけど、=で比較する方法教えろよ

524 :デフォルトの名無しさん:2015/07/09(木) 17:10:23.37 ID:q31E9GObR
511
5000ソースまるっとtext出力して拡張子をhtmlにすればコピーしたことになるんじゃね
画像の保存とかはしらん

525 :デフォルトの名無しさん:2015/07/09(木) 17:09:41.27 ID:I9vTAnY9.net
うざい

526 :デフォルトの名無しさん:2015/07/09(木) 20:02:37.24 ID:3YNneEoi.net
>>520
例えばニコ生のコメント数なんていちいち生放送のページ開かなくても、
検索結果やランキングを見れば50件ぐらいは一気に確認できる
更に言うと、そういう外部サービス向けに情報を利用しやすいようにAPIというものがある

Excelどうこう以前にお前には根本的に発想や知識が足りない

527 :デフォルトの名無しさん:2015/07/09(木) 20:05:37.19 ID:rrX8SuEu.net
VBAに関係なさすぎだろ
馬鹿すぎ

528 :デフォルトの名無しさん:2015/07/09(木) 20:15:01.97 ID:4VH0pnre.net
>>523
>>501じゃないしうざい

529 :デフォルトの名無しさん:2015/07/09(木) 22:59:57.56 ID:2ljVQkG8z
vbaでできることは全部vbaでいいんだよ
ハローワールドをバッチ出力してもいいんだよ

530 :489:2015/07/09(木) 22:45:25.15 ID:AOeRDpks.net
>>502
ありがとう。
確認してみる。

531 :デフォルトの名無しさん:2015/07/10(金) 14:36:27.94 ID:X6oggqUX.net
IEでようけタブを開いてる時に
アクティブになっているタブをExcelVBAから取得するにはどうやればいいですか?

532 :デフォルトの名無しさん:2015/07/10(金) 19:15:07.74 ID:jiYZdnGq.net
ようけタブって何ですか?

533 :デフォルトの名無しさん:2015/07/10(金) 19:31:25.87 ID:w5pjce7S.net
なんでもかんでもエクセルはんでやったらいいちゅーもんちゃうでホンマに

534 :デフォルトの名無しさん:2015/07/10(金) 19:56:00.17 ID:E85QWjLb.net
いやホントExcelに何でもやらせようとする人多すぎ
あくまで表計算ソフトですからね?

535 :デフォルトの名無しさん:2015/07/10(金) 20:35:34.68 ID:X6oggqUX.net
>>532
そんなんもわからんのか
たくさんタブ、という意味だ

536 :デフォルトの名無しさん:2015/07/10(金) 20:38:09.45 ID:I8IKrBJT.net
>>535
ようけ
ようさん
は同じですか?どう使い分けるんですか?

537 :デフォルトの名無しさん:2015/07/10(金) 21:25:28.34 ID:jiYZdnGq.net
>>535
ごめんなさい。
ネットで調べて分かりました。方言なんですね。
茶受けの一種かと思ってしまいました。

538 :デフォルトの名無しさん:2015/07/10(金) 23:12:56.17 ID:bM2M5Hwn.net
Undefined identifier: ようけタブ

539 :デフォルトの名無しさん:2015/07/12(日) 04:10:07.01 ID:AZzVj68F.net
質問

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

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

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

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

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

ググっても別シートに貼り付ける方法しかなく
やり方が見つからなく困ってます。

540 :デフォルトの名無しさん:2015/07/12(日) 04:33:35.01 ID:CzmmcRK9.net
>>539
Rows( ).Hiddenプロパティを順番に調べてくのが順当な方法なんだろうけど

最後にデータを追加するのが目的なら、まず最終行の次の空白に「あ」を入れといてからフィルターをかけて、
xlUpすれば追加した「あ」のセルに一発で飛ぶから、そこに目的のデータを入れればいいんでない?

541 :デフォルトの名無しさん:2015/07/12(日) 08:19:33.12 ID:1BRWNEUl.net
>>539
無理
フィルター結果はそれ一つで特別な固まりになってる
「フィルター結果の最終行の一つ下」という概念はExcelにはない
素直に別シートに貼り付けましょう

542 :デフォルトの名無しさん:2015/07/12(日) 10:58:38.83 ID:J0UWBmidq
えっと、それ、フィルター関係ないよね?
すでに入ってるデータを上書きしたくないんなら、最終行に追加すりゃいいんだよね?
末尾の行番号取得すりゃいいじゃん

543 :デフォルトの名無しさん:2015/07/12(日) 12:21:39.75 ID:kAinUgxG.net
>>539
最終データの位置とかまじめに考えると結構むずかしい
オートフィルター対象になってる範囲とかならとれるから、それの下なら
With Sheet1.AutoFilter.Range
Set r = .Offset(.Rows.Count).Resize(1)
End With
r.Value = 設定する文字(配列)
見たいなコードでいけるんじゃね

544 :デフォルトの名無しさん:2015/07/12(日) 14:53:58.22 ID:eG/EvVrG.net
>>539
こういうのはどう

Sub テーブルの見出しを選択してから実行せよ()
ActiveCell.Offset(ActiveSheet.AutoFilter.Range.Rows.Count).Select
End Sub

545 :デフォルトの名無しさん:2015/07/12(日) 20:53:56.57 ID:2hDUKmaR.net
>>539のものです。

>>544ありがとうございます。
更に一行下にする場合はCount+1で出来ました。
濡れました。

546 :デフォルトの名無しさん:2015/07/13(月) 12:35:11.35 ID:/ic4VC8c.net
分かる方お願いします。

顧客名簿があります。

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

ボタンを押すと
B列の性別をA列の名前のセルの頭に挿入することはできますか?
関数とかで参照とかはしたくない感じなのですが。
どういう風にすれば良いか教えてください。

547 :デフォルトの名無しさん:2015/07/13(月) 14:08:29.28 ID:W8qekCen.net
>>546
「とか」ってなんやねんというツッコミをいれたい
B列の情報(性別)を一切「参照せずに」どうやって処理を実行できるのか
そんな方法があるならむしろこっちが教えてほしい

548 :デフォルトの名無しさん:2015/07/13(月) 14:17:15.88 ID:/ic4VC8c.net
>>547
ごめんなさいね
おいちゃん他人のコードを見様見真似でやってるものであまり詳しくないものでね。

なんと言えばいいのか、、A列にはB列を参照する数式を入れたくないのです。

549 :デフォルトの名無しさん:2015/07/13(月) 14:49:13.44 ID:Q4XdJ0tC.net
A列のセル = B列のセル.Value & A列のセル.Value

こんな感じでいけるのでは

550 :デフォルトの名無しさん:2015/07/13(月) 15:15:47.26 ID:W8qekCen.net
>>548

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列の頭に付け加えるので
何度も実行すると
鈴木 男 の場合
男男男鈴木 男 とかになる
最初の一文字をチェックするとしても
苗字が「男」で始まるもの(男澤、男鹿、男谷、男山、など)や
「女」で始まるもの(女部田、女屋、女池、など)も実在するので
そういった場合はどうすんのってことにもなりかねない

551 :デフォルトの名無しさん:2015/07/13(月) 15:23:41.87 ID:W8qekCen.net
そもそも、性別と名前はまったく関連のない属性情報なんだから
顧客名簿として管理するなら
一緒のセルに入れるべきではない(入れてはいけない)っていうのが大前提だけどね

仮に名簿を元に何かの分析をするために
この二つを一緒に出力するとかいうことならまぁわからなくもないけど

552 :デフォルトの名無しさん:2015/07/13(月) 15:38:21.93 ID:sRi+Sfog.net
>>549
> A列のセル = B列のセル.Value & A列のセル.Value
自分自身を参照する計算式は設定はできないよ。

553 :デフォルトの名無しさん:2015/07/13(月) 15:39:16.96 ID:DovdIZeB.net
VBA

554 :デフォルトの名無しさん:2015/07/13(月) 18:14:54.33 ID:3PtJoPuU.net
>>550>>551
ああ、ごめん
ありがとう そうやればいいんですね!
実は先頭に挿入するのは性別ではないんです。

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

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

単にセルの先頭に代入する方法だけ知れればいいやと思って単純そうな性別の例で聞いてしまいました。
ありがとうございました。助かりました。

555 :デフォルトの名無しさん:2015/07/13(月) 19:11:00.10 ID:Q4XdJ0tC.net
>>554
俺も回答したんだけど
俺は無視?

556 :デフォルトの名無しさん:2015/07/13(月) 19:58:13.21 ID:CJJidPYg.net
>>555
´ω`)ごめんよ
おいちゃん助かったよ
まだ家帰れてないから両方試してないけど・・。

557 :デフォルトの名無しさん:2015/07/13(月) 21:07:44.12 ID:/p9n5st7.net
うっわw 強要されるのかよw
せんぱい! 退職されて一年過ぎましたが・・ 部署の連中一同 ほんっっっっ・・・と、、、、、  せいせいしてますw

558 :デフォルトの名無しさん:2015/07/13(月) 23:21:50.92 ID:XFV6VzSY.net
住所録は都道府県名だけで1セル使った方が管理修正しやすいんじゃないかな

559 :デフォルトの名無しさん:2015/07/16(木) 10:02:45.80 ID:ehB1EJEE.net
Typeで定義したユーザ定義型の配列変数を作ってます。

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

Dim Person(100) as PersonalData

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

ソートというのはたとえばBirthdayでソートするとPerson(1), Person(2)・・・・の順に生まれが早い順番に配列内で並べ替えたいんです。

560 :デフォルトの名無しさん:2015/07/16(木) 11:18:38.67 ID:53Jo2ojE.net
>>559
> これを配列内でソートするには、一番シンプルで速い方法はどんなものでしょうか?
シートに書き出して、Excelの機能でソートして、シートの内容をデータに書き戻す。

561 :デフォルトの名無しさん:2015/07/16(木) 11:27:39.40 ID:ehB1EJEE.net
>>560
それは邪道でしょう。
シートに書き出しは禁止しましょう。

562 :デフォルトの名無しさん:2015/07/16(木) 11:38:20.77 ID:hFZ123Co.net
クイックソート使え。

563 :デフォルトの名無しさん:2015/07/16(木) 11:43:38.40 ID:ehB1EJEE.net
>>562
クイックソートってなんですか?

564 :デフォルトの名無しさん:2015/07/16(木) 11:46:48.84 ID:hFZ123Co.net
じゃあ、バブルソート使え。

565 :デフォルトの名無しさん:2015/07/16(木) 12:06:45.53 ID:ehB1EJEE.net
>>564
バブルソートってなんですか?

566 :デフォルトの名無しさん:2015/07/16(木) 12:07:40.10 ID:ehB1EJEE.net
>>558
ThredNumber(558).Message & "ってなんですか?"

567 :デフォルトの名無しさん:2015/07/16(木) 13:13:18.91 ID:53Jo2ojE.net
>>561
バブルソートもクイックソートも、自分では実装できずググる気もないんだったら、
シートでソートするのが王道。

シートへの読み書きがわからんなら、もうソート不可能。

568 :デフォルトの名無しさん:2015/07/16(木) 14:15:51.16 ID:J5o6Kg8h.net
>>561
じゃあVariant配列に書き出して、適当な配列ソートライブラリを使え。

569 :デフォルトの名無しさん:2015/07/16(木) 15:23:47.90 ID:GEks0S8S.net
配列ソートは定期的にでてくる話たからネタとしか思えない。

570 :デフォルトの名無しさん:2015/07/16(木) 15:32:16.35 ID:WG4jVMdb.net
>>559
質問の内容にExcelが全く絡んでないからスレ違い

571 :デフォルトの名無しさん:2015/07/16(木) 19:35:58.76 ID:J5o6Kg8h.net
PersonalDataってユーザ定義型のうちキーとなるもの( たとえばBirthday )だけ取り出せばいいんだよね。
1列目にそれを入れて2列目に0〜Nの連番を入れた配列を作ってソートする。
そうすれば2列目にインデックスが出来上がるから、その順に並べかえればいいのさ。

572 :デフォルトの名無しさん:2015/07/16(木) 20:32:27.57 ID:qYHM89ED.net
ちょっとググるだけでこんなん↓出てきたけど。

ttp://home.att.ne.jp/zeta/gen/excel/c04p41.htm

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

CreateObject("Word.Application")を使うと新たに新規文書としてそれを作ってしまう。
いま現状で開いているWord文書の末尾に追加したいのですが

574 :564:2015/07/17(金) 11:11:01.99 ID:oIBga42r.net
できません。
助けてください!

GetObject("Word.Application")と、「GET」のほうですでに開いてるWordを取得できないのですか?

575 :デフォルトの名無しさん:2015/07/17(金) 12:04:31.71 ID:oIBga42r.net
ひょっとして
Set wd = GetObject(, "Word.Application")
として
wd.ActiveDocument.Content.InsertAfter ・・・
みたいにすればokか?

576 :デフォルトの名無しさん:2015/07/17(金) 12:06:19.86 ID:oIBga42r.net
↑そのようでした。

ところでWordがまだ開かれてなければCreateObjectを
Wordがすでに開かれていたらGetObjectを使いたいのですが
その場合分けのif文はどう書けばいいですか?

577 :デフォルトの名無しさん:2015/07/17(金) 13:20:15.48 ID:id5On6lD.net
>>576
ワードのことは知らんけどエクセルの場合だと
開かれてるワークブックはそのマクロを実行しているブック自身も含めて
Workbooksコレクションに入ってるから
Workbooks.countが2以上なら
自分自身以外のブックが既に開かれている事がわかる
ワードにもなんかそんなコレクションがあるんじゃないの?

578 :デフォルトの名無しさん:2015/07/17(金) 13:57:42.57 ID:oIBga42r.net
>>577
開かれてなかったらDocumentsのコレクションは存在しないし
そもそもWordを参照するためのオブジェクトすら存在しないからできないんだよ。

579 :デフォルトの名無しさん:2015/07/17(金) 17:41:07.98 ID:oIBga42r.net
どなたかこのわたしのファンダメンタル(fundamental)な疑問にお答えできないでしょうか?

580 :デフォルトの名無しさん:2015/07/17(金) 19:45:50.08 ID:/l5uRIt/.net
ググれ

581 :デフォルトの名無しさん:2015/07/17(金) 20:33:19.18 ID:syB7WThG.net
>>576
> Wordがすでに開かれていたらGetObjectを使いたいのですが
逆じゃね、GetObjectしないでどうやって既に開かれてるか知るつもりだよ。

582 :デフォルトの名無しさん:2015/07/17(金) 20:37:41.79 ID:oIBga42r.net
>>581
開かれていない状態でGetObjecをするとエラーがでてしまうんだよ

583 :デフォルトの名無しさん:2015/07/17(金) 20:39:06.86 ID:rBy1sMGX.net
オンエラー

584 :デフォルトの名無しさん:2015/07/17(金) 20:47:16.88 ID:oIBga42r.net
リズームネクスト

585 :デフォルトの名無しさん:2015/07/17(金) 21:34:24.03 ID:/wl7lj/J.net
Resume Nextの意味 ・・・ 履歴書たらい回し

586 :デフォルトの名無しさん:2015/07/18(土) 01:03:10.73 ID:vrPIhyd3.net
コンボボックスを2行以上にするって、やっぱ無理でしょうか?
何がしたいかというと、ワードやOutlookのクイックパーツみたいなのを
作れればと便利かなと思ったのですが

他にはフォームにテキストボックスをずらりと並べて
ダブルクリックしたら選択中のセルに入力するとか・・・
くらいしか思いつかないです

587 :デフォルトの名無しさん:2015/07/18(土) 05:35:55.89 ID:T5F58RSl.net
>>586
クイックパーツと複数行のコンボボックスがどう関係してるのかさっぱりわからん

588 :デフォルトの名無しさん:2015/07/18(土) 13:43:18.39 ID:vrPIhyd3.net
クイックパーツのGUIがコンボボックスの各項目が複数行になったように見えるので、
コンボボックスの複数行が出来ればクイックパーツもどきが出来そう、という思いつきから
そういう発想になりました

朝からフォームにテキストボックス並べる方法で作ってみたところ、
イメージに近いものが出来たので、今はこれでいいかなと思ってます

589 :デフォルトの名無しさん:2015/07/19(日) 01:12:52.23 ID:yGfbtuav.net
下のサイトのコードで
Forループのカウンタ変数をループから抜けた後で値の比較に使ってますが、
Exit Forを使わずにForループを抜けた場合にカウンタ変数は最終値+Step値になる
というような事がVBAの仕様として決まってるんでしょうか?
それともたまたまそうなったから深く考えず記載してるだけでしょうか?
後者だとしたらちょっと気持ち悪いなぁ
http://www.moug.net/tech/exvba/0050065.html

590 :デフォルトの名無しさん:2015/07/19(日) 01:20:46.05 ID:rAxj5bhn.net
>>589
仕様かどうかは知らんけど経験則でそうなってるから俺も使ってる
少なくとも今後マイクロソフト側で変更しない限り
現行のものでは使えてるんだしそこまで気に病むことでもないと思う

591 :デフォルトの名無しさん:2015/07/19(日) 01:28:01.93 ID:Pqkg92al.net
>>589
正確なVBAの言語仕様はみたことないけど、仕様としてそうなると思っていいんじゃね
たまたまではなくて、ヘルプ等で動作みるとそうならないとおかしい
保証はないかもしれんが、それで問題になった事はないし、そこに変更入るとも思えん

昔のFor Nextのヘルプ、思いっきり嘘書いてた時代もあるけどなw

592 :デフォルトの名無しさん:2015/07/19(日) 01:29:58.29 ID:yGfbtuav.net
自分だったらこういう場合do loopに変えるから
何か根拠があってやってるのかと思った

593 :デフォルトの名無しさん:2015/07/19(日) 01:32:53.03 ID:yGfbtuav.net
>>590-591
結構いい加減な感じなのね
参考になりました

594 :デフォルトの名無しさん:2015/07/19(日) 01:38:37.71 ID:Pqkg92al.net
ああ、少なくとも2007のヘルプでも微妙な表現だな
For Nextは前判定するから、ループの最低実行回数は0回なんだが
あのヘルプの書き方だと後判定にしか読めん

昔は後判定でも誤動作しないように判断入れさせられたりしたなぁ

595 :デフォルトの名無しさん:2015/07/19(日) 02:12:32.63 ID:OOt2nbBY.net
ループの外でカウンタ参照なんてバグの元
普通はDo Loopなど変数の変化が確実に制御できる方法で置き換えるし、
あとで必用になる値ならリミットやステップは変数に入れておくべき
ドキュメント外の経験則なんて不確実な物に頼るのは三流以下

596 :デフォルトの名無しさん:2015/07/19(日) 03:54:08.71 ID:yGfbtuav.net
引継ぎのソースとかでこんな事やられてたら確かにぎょっとするな
つまり信用に関わるってこった

597 :デフォルトの名無しさん:2015/07/19(日) 06:01:07.14 ID:mDVOiq6Z.net
お、この辺の意見は皆一致してるな
動作に確証が持てるならそのままでもいいんじゃと
言い出す人もいるかと思ったのに

598 :デフォルトの名無しさん:2015/07/19(日) 06:08:32.17 ID:eGN6omT4.net
ドキュメントなんて当てにならんよ
間違いを放置していることも多々あるからな
俺は目の前の実装の動作を信じる派だ

599 :デフォルトの名無しさん:2015/07/19(日) 06:43:14.14 ID:Unt8HnGc.net
ループカウンタのスコープを意識してやってるなら無問題。
例えば5行10行の関数内でやるとかなら。

600 :デフォルトの名無しさん:2015/07/19(日) 08:09:39.14 ID:mDVOiq6Z.net
>>599
同意
例え正しい動作で動くとしてもスコープは意識しておかないと
煩雑になる可能性があるもんな

601 :デフォルトの名無しさん:2015/07/19(日) 08:40:06.43 ID:0azLbtwj.net
つまりカウンタ変数のスコープがループより広いのだからループ後は最終値+Step値になる
それが仕様というもの

つーかループ抜けたらカウンタ変数使うなって誰が考えたんだろうか
仕様をよく理解してないから、こんなバカセオリーが作られていく

602 :デフォルトの名無しさん:2015/07/19(日) 10:18:20.11 ID:EbO9p28sY
wordが開いているかはプロセスリスト奪って確認すりゃいいんじゃね

603 :デフォルトの名無しさん:2015/07/19(日) 10:45:03.48 ID:gfc2emHi.net
>>589
どこかのヘルプかなんかでそう言う風な仕様って見たような気がする

604 :デフォルトの名無しさん:2015/07/19(日) 11:06:50.09 ID:OOt2nbBY.net
ループの終了判定には色々な方法があって、最後にもう1回Stepが足されるかどうかは処理系による
個人が趣味で書く「動けばいい」コードなら何やっても自由だけど、それを他人にも薦めるのは問題がある

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

もちろん仕様書にもミスはあるけど、ミスを完全になくすのは不可能だから、
そのミスがきちんと認知されていれば問題ない

605 :デフォルトの名無しさん:2015/07/19(日) 12:08:21.20 ID:4JrdJist.net
言ってることが中途半端
仕様書に書いてないものはダメと言いながら
仕様書のミスは認知されてればおkって
そんなのダブルスタンダードじゃん

だったらfor nextのカウンターの件だって
認知されてるんだからおkって話になっちゃうよ

606 :デフォルトの名無しさん:2015/07/19(日) 12:16:27.67 ID:OOt2nbBY.net
>>605
「書いてない(保証されない)、意図していない」

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

この違い、わかる?

607 :デフォルトの名無しさん:2015/07/19(日) 12:20:14.08 ID:gdmrFD6e.net
>>606
「書いてない、開発側が意図した正解はちゃんとある」
「間違ったことが書いてある、意図していない」

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

VBAのようなマイクロソフト一社が開発、実装をしている言語に処理系依存の動作はなく
実装が唯一の仕様になるんだよ。

609 :デフォルトの名無しさん:2015/07/19(日) 12:25:45.05 ID:r330jZtM.net
仕様書が絶対なら仮にミスだったとしても従わなければならないし、
読み手側が適宜修正を挟めるなら仕様書に書いてあっても実験して結果を確かめる必要性がある。

610 :デフォルトの名無しさん:2015/07/19(日) 12:29:40.33 ID:MA6NEEKT.net
>>609
お前みたいなのを馬鹿丸出しっていうんですよwww

611 :デフォルトの名無しさん:2015/07/19(日) 12:33:18.63 ID:WqS3++Gn.net
とりあえず公式にはStepはループの最後に足されると書いてあるんで、それを信じればいいと思うよ
https://msdn.microsoft.com/ja-jp/library/office/gg251601.aspx

でもStepの規定値が0とは知らんかった
てっきり1だと思ってた

612 :デフォルトの名無しさん:2015/07/19(日) 12:38:35.15 ID:gdmrFD6e.net
>>611
英語の方はoneってなってた。oneを0に訳すってどんだけ・・・
https://msdn.microsoft.com/en-us/library/office/gg251601.aspx

613 :デフォルトの名無しさん:2015/07/19(日) 12:41:03.89 ID:gdmrFD6e.net
つまりだ、ID:OOt2nbBY は仕様書を見てないし実験もしてないし
想像だけで突っ走ってたってこと?

614 :デフォルトの名無しさん:2015/07/19(日) 12:54:52.18 ID:eGN6omT4.net
プログラミング系のスレによくいるタイプだよ
何かあるごとに俺ポリシーを唯一絶対の法則のごとく書き散らす
「一番やっちゃいけない」とかお前は何様かと

615 :デフォルトの名無しさん:2015/07/19(日) 13:17:43.83 ID:UQShnz8E.net
確証が持てない、不安がある、ならより確実な手段で実装するってのは経験から得た教訓。
今回みたいな場合なら、こんな議論じみたことするの面倒だから別に変数を持たせて最後の比較時の値を残しておくことを考えるかな。


それはそれとして、ループカウンタって、現在値と指定された最大値とを比較してループの実行を決めると思ってたから
最後の step 数が加算されるかどうかが処理系によるってのは全く考えたことなかった。w ちょっと参考になった。

616 :デフォルトの名無しさん:2015/07/19(日) 13:39:37.34 ID:0azLbtwj.net
>>615
処理系じゃなく言語仕様な。
ちなみにforループの仕様すらまともに決まってない言語仕様など見た事がない。

617 :デフォルトの名無しさん:2015/07/19(日) 13:45:54.11 ID:bp/gXhOB.net
>>611
ひどい誤記だな
こういうのがあるからヘルプって信用できないよね!

ほかにも右と左を間違えるとか、ひどいよね
https://msdn.microsoft.com/ja-jp/library/dxs6hz0a.aspx

618 :デフォルトの名無しさん:2015/07/19(日) 13:48:28.95 ID:bp/gXhOB.net
>>616
ループを抜けた後のカウンタ値ってforの仕様に含まれるっけ?

619 :デフォルトの名無しさん:2015/07/19(日) 13:52:17.65 ID:gdmrFD6e.net
>>617
ふはは、めちゃくちゃやな

620 :デフォルトの名無しさん:2015/07/19(日) 14:06:50.40 ID:Unt8HnGc.net
Forカウンタに関しては仕様上と経験則もどっちの観点からも問題ないんだがら、ぐたぐだ言うこと自体が雑音。
曖昧なのは仕様じゃなくてそいつの知識。

621 :デフォルトの名無しさん:2015/07/19(日) 14:14:40.40 ID:gfc2emHi.net
>>616
end の値がいつ評価されるかをちゃんと書いてあるドキュメント教えてくれ

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

「日本語」ヘルプはって言ってくれ

622 :デフォルトの名無しさん:2015/07/19(日) 14:58:37.69 ID:0azLbtwj.net
>>618
ループの仕様とかではなく、forで新たにスコープが作られる言語があって
そういう言語のバッドノウハウが、いつの間にか一人歩きしてるだけ。
VBAではスコープが同じなのでループ内での最後の値は変わらない。

623 :デフォルトの名無しさん:2015/07/19(日) 15:14:49.12 ID:qsMi3+rD.net
for(int i = 0, i < 10, i++){}

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

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

一方、JavaScriptでは、forにスコープが無いから、
for()内で変数宣言せずに、
for外で変数宣言した方が、誤解しない

624 :デフォルトの名無しさん:2015/07/19(日) 16:56:05.17 ID:OryvopCI.net
なんか荒れてると思ったら
またC++の人か
鬱陶しいな

625 :デフォルトの名無しさん:2015/07/19(日) 16:56:51.47 ID:o2GoxnAV.net
ループカウンタとか使わなければいい

626 :デフォルトの名無しさん:2015/07/19(日) 17:02:24.73 ID:OryvopCI.net
>>625
男には使いたくないと思っていても
使わなければならないときがある

627 :デフォルトの名無しさん:2015/07/19(日) 17:12:38.77 ID:kvcDaKH1.net
じゃあ女になればいい。

628 :デフォルトの名無しさん:2015/07/19(日) 18:12:50.64 ID:ZuB4UjID.net
画像ファイルの解像度を知りたいんですが
Set pic = LoadPicture(PicFile)
はば = pic.Width / 100
高さ = pic.Height / 100
で、単位mmで、それぞれサイズが出るようなんですが
解像度を求めることは、できないんでしょうか?。

629 :デフォルトの名無しさん:2015/07/20(月) 19:12:04.97 ID:51dMWdzw.net
ActiveSheet.Protect で保護しても選択とグラフ挿入をしたいのですがどうすればいいですか

630 :デフォルトの名無しさん:2015/07/20(月) 20:52:45.28 ID:NI++k4bU.net
その時だけunprotectする

631 :デフォルトの名無しさん:2015/07/20(月) 21:46:50.67 ID:4iREVrk0.net
女の子が生理中でもヤりたくてちんこを挿入をしたいのですがどうすればいいですか

632 :デフォルトの名無しさん:2015/07/20(月) 21:50:23.17 ID:HZ7E+BkF.net
ヤればいいけど感染症には気をつけてな

633 :デフォルトの名無しさん:2015/07/20(月) 22:11:31.53 ID:4iREVrk0.net
>>632
わかりました

634 :デフォルトの名無しさん:2015/07/20(月) 22:19:36.79 ID:VFsFABu1.net
どうやって気をつけるつもりだよ

635 :デフォルトの名無しさん:2015/07/20(月) 22:29:25.25 ID:4iREVrk0.net
>>632
どうやって気をつければいいんだよ

636 :デフォルトの名無しさん:2015/07/20(月) 23:15:10.11 ID:AGKnnOa8.net
>>635
感染症になりそうなら素早く抜く

637 :デフォルトの名無しさん:2015/07/20(月) 23:26:21.65 ID:dHG3/QFf.net
生じゃなきゃいいだろ
それよりもベッドが汚れるので必ずバスタオルを敷くこと

638 :デフォルトの名無しさん:2015/07/20(月) 23:26:55.15 ID:th8mhDMf.net
ちんこにメンソレータム塗っときゃええねん

639 :デフォルトの名無しさん:2015/07/21(火) 00:37:29.30 ID:s5SYmwNr.net
ひさしぶりにVBAのツールを作るんで
コレクションの使い方を復習しようと
なにか通勤列車で読めるような中上級向けの本がないか探したが
なくない?

なぜ入門書ばかりなんだろう
あれば教えてください

640 :デフォルトの名無しさん:2015/07/21(火) 04:27:12.96 ID:1F0zJxbf.net
そもそもBASICが「Beginners’ All-purpose Symbolic Instruction Code」の略ですし。

というのはおいとくとしても、VBAは本買うより目的ごとに検索した方が早い。

641 :デフォルトの名無しさん:2015/07/21(火) 11:03:54.91 ID:s5SYmwNr.net
>>640
そうですか。
不便ですね。
電車の中で本を読んで復習しようと思ったのに。

ところでVBAでクラスをつくるとき
わざわざsetterやgetterをつくるの面倒ではありませんか?
単にプロパティという読み書きできるようにできない?

642 :デフォルトの名無しさん:2015/07/21(火) 11:04:33.56 ID:s5SYmwNr.net
x プロパティという
o プロパティとして

643 :デフォルトの名無しさん:2015/07/21(火) 15:47:35.82 ID:rmCqwoyN.net
パブリックフィールドでも使っとけや

644 :デフォルトの名無しさん:2015/07/21(火) 15:58:52.78 ID:s5SYmwNr.net
>>643
できた。
なんだできるじゃん。

645 :デフォルトの名無しさん:2015/07/21(火) 16:16:59.32 ID:8Y3JIaa7.net
ご丁寧にプロパティ作るとデバッグであっちこっち飛ばされてうざいよなー。

646 :デフォルトの名無しさん:2015/07/21(火) 23:04:38.04 ID:nI7QiMxB.net
>>644
VBAのプロパティは何故かLetとSetの使い分けがあるんだよね

あれ何で?

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

648 :デフォルトの名無しさん:2015/07/22(水) 00:26:31.15 ID:JGPtgvwf.net
>>647
あれ?ポリモーフィズム無いんだっけ?

じゃインターフェースは何のためにあるの?

649 :デフォルトの名無しさん:2015/07/22(水) 02:33:30.51 ID:vbbcVbHR.net
>>646
何故かって、VBAではSetとLetは別だから、区別があるのがむしろ当然

>>647
オブジェクトの代入を区別できないのは、デフォルトプロパティのせいなんで
オーバーロードとかポインタとかポリモーフィズムとか直接無関係です

650 :デフォルトの名無しさん:2015/07/22(水) 05:40:28.69 ID:E01nq8P+.net
代入でのSetの付け忘れはVBA上級者でもたまにハマる罠の一つ
あんなのなくても代入して欲しい

651 :デフォルトの名無しさん:2015/07/22(水) 06:11:09.77 ID:hGLrxrN5.net
VBAだから今のVBに合わせてデリゲートの話が出てきてもここではおかしいけど
ポインタとかさらに意味不明だしね

652 :デフォルトの名無しさん:2015/07/22(水) 06:56:36.99 ID:u4/X55np.net
ポインタを使う言語


あっ(察し)

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

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

上のコード、Set有りと無しでは挙動が変わるんだけど、こういう時どうすんの?

654 :デフォルトの名無しさん:2015/07/22(水) 08:07:30.81 ID:l4QssRUO.net
ごめん、""付け忘れてた

655 :デフォルトの名無しさん:2015/07/22(水) 08:25:18.56 ID:maciFGiV.net
>>653
Setありなしとは関係ないけど、上は
var = Range("A1:G5").Value
とValueを省略せず書くのがいいと思う。

656 :デフォルトの名無しさん:2015/07/22(水) 08:27:54.81 ID:a/YZpM4j.net
>>653
セットしないとただの配列になった気がする

657 :デフォルトの名無しさん:2015/07/22(水) 14:00:12.80 ID:vbbcVbHR.net
Letでオブジェクト(参照)の代入は出来ない
これはVBAのルール

ところでお前ら、Letって命令あるのちゃんと知ってるか?
常に省略可能な命令なんだぜw

658 :デフォルトの名無しさん:2015/07/22(水) 14:27:07.44 ID:9uF/bA4u.net
>>657
おまえはなw
文末に書いてるw
「w」を省略したほうがいいぜw

659 :デフォルトの名無しさん:2015/07/22(水) 14:58:32.27 ID:1AHyolcG.net
>>657
Call もあるし、別にどやるほどのネタじゃないぞ

660 :デフォルトの名無しさん:2015/07/22(水) 16:04:40.72 ID:zA65uI1C.net
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

661 :デフォルトの名無しさん:2015/07/22(水) 17:34:18.21 ID:SOhZ1+VB.net
むしろLETが省略できないBASICってあるのか?
と思ったが、大昔のベーマガにはLETで代入してたソースがあった気もするな

662 :デフォルトの名無しさん:2015/07/22(水) 19:25:17.64 ID:vbbcVbHR.net
>>661
機種によるけど、Then Let の場合、ThenかLetを省略できるので、Thenを省略してより短いLetを残すことがった
あとはLet省略しても、自動的に補完される機種もあったな

663 :デフォルトの名無しさん:2015/07/22(水) 20:53:03.95 ID:h8BR7O6Q.net
昔すぎるのでは?

664 :デフォルトの名無しさん:2015/07/22(水) 21:51:43.71 ID:JCiitdGg.net
>>663
今時 Let とか言い出したアホに言ってくれよ

665 :デフォルトの名無しさん:2015/07/22(水) 22:14:32.64 ID:f2fD5abO.net
Then Gotoの場合、ThenまたはGotoを省略できたのと同じか

666 :デフォルトの名無しさん:2015/07/22(水) 23:16:34.02 ID:EIwMW7nu.net
文字列をカットする関数で、start,endを位置で指定する関数ってないんだっけ?
MID(文字列,開始位置,文字数)
じゃなくて、
関数(文字列,開始位置,終了位置)
で指定したいです

667 :デフォルトの名無しさん:2015/07/23(木) 00:01:42.48 ID:a8nLYx9Z.net
function 関数(文字列,開始位置,終了位置)
関数 = mid(文字列,開始位置, 終了位置 - 開始位置)
end function

668 :デフォルトの名無しさん:2015/07/23(木) 00:11:50.48 ID:FtGSRY1f.net
>>675
ありがとう
天才だな

669 :デフォルトの名無しさん:2015/07/23(木) 00:19:40.71 ID:FtGSRY1f.net
>>667
ありがとう
天才だな

670 :デフォルトの名無しさん:2015/07/23(木) 00:30:11.92 ID:fIFeUYpQ.net
>>664
もともとはSetとの対比でLetって話だったはずだが

671 :デフォルトの名無しさん:2015/07/23(木) 05:50:04.22 ID:OfB5opuk.net
>>670
Let の省略 って書かんとわからんか

672 :デフォルトの名無しさん:2015/07/23(木) 05:57:57.83 ID:CPvEDQbc.net
>>666-669
>>667 だと一文字切れると思うよ
正しくは

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

>>671
それがそもそもsetとの対比の話題で出てきたんでしょ?

673 :デフォルトの名無しさん:2015/07/23(木) 06:13:33.37 ID:OfB5opuk.net
>>672
省略とか言い出したのは >>657
そもそも Let の話してるのに

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

とか言い出したり、ちょっとアレな人なんだろうと思う

674 :デフォルトの名無しさん:2015/07/23(木) 06:48:31.93 ID:H5D81+vI.net
>>672
「終了位置」の定義によるだろう。
普通は、長さ = end - begin となるようにするから>>667でいいと思うが。

675 :デフォルトの名無しさん:2015/07/23(木) 07:14:32.88 ID:CPvEDQbc.net
>>674
>定義による
まさにその通りなんだけど、

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

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

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

というのが>>672の主張な訳です
こっちのほうが普通だと思いますね

676 :デフォルトの名無しさん:2015/07/23(木) 07:20:09.47 ID:Vrk4ENFd.net
>>674
どんな普通だよ w
'あいうえお' の2文字目から4文字目って言われたら大抵の人は 'いうえ' って思うんじゃね?

677 :デフォルトの名無しさん:2015/07/23(木) 07:21:49.64 ID:Vrk4ENFd.net
>>676
リロードしとらんかった...
例えが同じすぎて笑たわ

678 :デフォルトの名無しさん:2015/07/23(木) 07:22:43.57 ID:Z5SWxUfX.net
その場合>>667でやるなら
関数("あいうえお", 3, 5)
とするわけだが、配列の長さは UBound - LBound + 1 だったりするから何が「普通」かは一概に言えない。

679 :デフォルトの名無しさん:2015/07/23(木) 07:53:15.29 ID:h4tQPyFC.net
配列ってここで何か関係あるの?

680 :デフォルトの名無しさん:2015/07/23(木) 07:57:28.09 ID:Z5SWxUfX.net
UBound +1を指定するところ。
つまり終了位置のひとつ先を引数に設定するのは「普通」のうちに含まれるという主張。

681 :デフォルトの名無しさん:2015/07/23(木) 08:13:20.35 ID:h4tQPyFC.net
よく分かんないけどそれってOption Base 1指定してもそうなの?

682 :デフォルトの名無しさん:2015/07/23(木) 08:20:43.91 ID:Vrk4ENFd.net
>>680
むしろその +1 って >>672 の +1 と同じだし

>>681
下限は LBound で取れるので Option で指定しても成り立つ

683 :デフォルトの名無しさん:2015/07/23(木) 09:36:32.54 ID:Z5SWxUfX.net
"あいうえお"から"うえ"部分を取りたいとき、
>>667 方式だと
関数("あいうえお", 3, 5) と指定する
>>672方式だと
関数("あいうえお", 3, 4) と指定する

+1するってのは使う側が引数に+1するって意味だよ。

684 :デフォルトの名無しさん:2015/07/23(木) 09:41:39.58 ID:P0N6qRSq.net
>>683
こういう場合に+1する・しないで俺は昔からよく混乱する事があったんだが、最近では何も考えずに無の境地でプログラミングすると、一発で上手く行くようになったよ。

685 :デフォルトの名無しさん:2015/07/23(木) 11:46:51.39 ID:SI8SSCXa.net
>>683
誰がどう見ても>>672の勝ちだな

686 :デフォルトの名無しさん:2015/07/23(木) 11:54:13.42 ID:Z5SWxUfX.net
そうかねえ?
俺は、[3, 5), [5, 9), [9, 11) みたいに漏れ重複なく区間を並べられる書き方が好み。

687 :デフォルトの名無しさん:2015/07/23(木) 11:56:02.55 ID:dbj+2vsW.net
>>684
InStrで「う」と「え」をサーチしたあとに取り出したいとかあるから
関数("あいうえお", 3, 4)
の方が使い勝手がいいと思う

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

個人的な意見だけど

688 :デフォルトの名無しさん:2015/07/23(木) 12:57:29.05 ID:Vrk4ENFd.net
>>686
書き方は色々あっていいけど、終了位置って普通最後の文字を指すでしょ

689 :デフォルトの名無しさん:2015/07/23(木) 15:55:49.36 ID:fIFeUYpQ.net
>>673
Set有りと無しではとか言ってる人に、Letって知ってるかって言うのはおかしくないだろ
そこはSetとLetでって書くべきなんだから

690 :デフォルトの名無しさん:2015/07/23(木) 16:12:59.04 ID:mmfWdiQl.net
終了位置じゃなくて長さ・個数にすれば迷う余地なし

691 :デフォルトの名無しさん:2015/07/23(木) 16:53:53.03 ID:Vrk4ENFd.net
>>689
スレを辿ることもできないのかよ...
>>646 からの話だぞ

692 :デフォルトの名無しさん:2015/07/23(木) 17:05:15.73 ID:/G5SjU2IS
そういう処理必要なら、パターン文字列抜き出せば?

693 :デフォルトの名無しさん:2015/07/23(木) 17:01:14.71 ID:Vrk4ENFd.net
>>690
(出川口調で)お前はバカか w ⇒ >>666

694 :デフォルトの名無しさん:2015/07/23(木) 17:44:01.97 ID:fIFeUYpQ.net
>>691
その流れがあるからこそ、SetのあるなしじゃなくてSetとLetだろって話なんだが
まあ話が通じないならもういいや

695 :デフォルトの名無しさん:2015/07/23(木) 19:13:36.15 ID:Z5SWxUfX.net
(終了位置、長さ)

(長さ、終了位置)
のどっちだったか思い出せなくて悩むはめになる。

696 :デフォルトの名無しさん:2015/07/23(木) 19:23:54.97 ID:Vrk4ENFd.net
>>694
> SetとLetだろって話なんだが

Set と Let の話してる奴等に

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

とか言い出したアホがいるって話なんだけど...

697 :デフォルトの名無しさん:2015/07/23(木) 19:24:52.80 ID:jdzUEZ4l.net
そしたらコメントで…なんて書くと、またコメントがどうたらこうたらで荒れるんだな w

698 :デフォルトの名無しさん:2015/07/23(木) 19:25:27.87 ID:jdzUEZ4l.net
>>697>>695に対してね

699 :デフォルトの名無しさん:2015/07/23(木) 21:34:40.50 ID:fIFeUYpQ.net
>>696
Setのあるなしじゃなくて って所を外してるのは、わざとですか?
そこが重要だと理解できてないのですか?

700 :デフォルトの名無しさん:2015/07/23(木) 23:17:13.99 ID:OfB5opuk.net
>>699
わざとです
論点はあくまでも >>646 ですから

701 :636:2015/07/23(木) 23:55:08.79 ID:h4tQPyFC.net
いやあテレるなぁ

702 :デフォルトの名無しさん:2015/07/26(日) 02:05:49.12 ID:PMtslnm/.net
コンボボックスの選択完了された値ではなくて
選択中の値・・・ドロップダウンリストが表示された状態で
マウスカーソルがあわさっている値を取得、なんてできますか?

703 :デフォルトの名無しさん:2015/07/26(日) 02:31:29.01 ID:2OSSYxBC.net
基本的にWindowsのコントロールはサブクラス化すれば何でもできると思っていいよ

704 :デフォルトの名無しさん:2015/07/26(日) 11:51:18.54 ID:PMtslnm/.net
やはり難しいですよね
リストボックスにしてみます

705 :デフォルトの名無しさん:2015/07/29(水) 22:52:06.65 ID:P4eNlM/m.net
workbook.sheets(1).copyで新しく作られたbookをactiveworkbookを使わずに取得する方法はありますか?

706 :デフォルトの名無しさん:2015/07/29(水) 22:54:37.84 ID:c3o2n8R7.net
activeworkbookを使いたくない理由を聞きたいわ。

707 :デフォルトの名無しさん:2015/07/29(水) 23:36:18.80 ID:P4eNlM/m.net
>>706
何かのタイミングでactiveが変わってしまったら危ないんじゃないかと思ったんですが、そういう事は起こり得ないんですか?

708 :デフォルトの名無しさん:2015/07/29(水) 23:50:54.16 ID:c3o2n8R7.net
>>707
"Book1 - copy.xlsx"
みたいになると思うので、その名前を使えば良いんじゃないの?

709 :デフォルトの名無しさん:2015/07/29(水) 23:59:24.34 ID:HfzTZxWN.net
自分で新規ブックをつくってそこにコピーすれば良いだけじゃ

710 :デフォルトの名無しさん:2015/07/29(水) 23:59:46.07 ID:hQM1TMMz.net
その名前が既にあったらどうするんだ

711 :デフォルトの名無しさん:2015/07/30(木) 00:00:27.52 ID:ds/Apgk5.net
>>708
名前もその時の状況で変わるので使いづらいです

自分が書いたコードではworkbookオブジェクトを新しく作ってからそこにシートコピーしてるのでactiveworkbookはつかってないんですが、
workbook.sheets(1).copyからもactiveworkbookを使わずオブジェクトを取得できたら楽かなぁと思って質問した次第です

712 :デフォルトの名無しさん:2015/07/30(木) 00:15:11.00 ID:AfvBuYEQ.net
>>710
事前にチェックすれば良いだけだろハゲ

713 :デフォルトの名無しさん:2015/07/30(木) 01:58:48.20 ID:iv9Zs1qn.net
Sub こんなんどないや()
Worksheets(1).Copy
Set mybook = Workbooks(Workbooks.Count)
mybook.Sheets(1).Range("A1") = "ABC"
End Sub

714 :デフォルトの名無しさん:2015/07/30(木) 04:18:29.77 ID:3TLsFD+R.net
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

715 :694:2015/07/30(木) 22:02:11.70 ID:ds/Apgk5.net
やっぱりひと手間かけないと難しいですよね
ありがとうございました

716 :デフォルトの名無しさん:2015/07/31(金) 03:12:44.99 ID:aPbYdwRE.net
>>710
馬鹿なのお前?

717 :デフォルトの名無しさん:2015/07/31(金) 23:33:53.17 ID:q+UwAnSR.net
なんかお題をちょうだい

718 :デフォルトの名無しさん:2015/07/31(金) 23:40:31.13 ID:pDlCqfLx.net
テトリスつくって

719 :デフォルトの名無しさん:2015/07/31(金) 23:44:01.31 ID:q+UwAnSR.net
32LINE2048bytesが制限だからちょっとテトリスはゴメンちゃい

720 :デフォルトの名無しさん:2015/08/02(日) 08:29:07.26 ID:lFlP6vKj.net
カンマがたくさん入力されたEXCELファイルをcsvファイルにしたい
ところが普通に名前をつけて保存だと"を付いてくれないっぽい

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

元のEXCELファイルでは
カンマが入力されてる位置も数も法則性はありません

721 :デフォルトの名無しさん:2015/08/02(日) 09:24:03.34 ID:js+6DYN9.net
>>720
それがExcelの仕様
諦めてVBAを書くか、""なしで書き出したテキストファイルを
PerlやRuby等の簡易な言語で加工するか

722 :デフォルトの名無しさん:2015/08/02(日) 10:54:43.64 ID:pHbT44ug.net
大体他言語の話を持ち出すやつは糖質
特にC++はアスペ

723 :デフォルトの名無しさん:2015/08/02(日) 11:55:18.99 ID:zAkA6wkz.net
>>722←これが病気の人の執着力です

724 :デフォルトの名無しさん:2015/08/02(日) 12:23:27.67 ID:lFlP6vKj.net
仕様でしたか
行数多いので処理時間が少し心配ですが、
VBAでやってみます

他言語はvbsで保存後に「,」を「","」に置き換え
加工できるかなとは少し考えてました。
でも置き換え対象外の「,」もあるわけで、
保存後だと判定が難しそう

725 :デフォルトの名無しさん:2015/08/02(日) 13:06:35.44 ID:ZRhH79SV.net
>>720
試した範囲では、少なくともセル中にカンマを含む場合はちゃんと""で囲んでくれるようだが
まあ、CSVはいろいろ細かいとこが違うから気に入らないなら自分で書き出すのが確実だけど

726 :デフォルトの名無しさん:2015/08/02(日) 14:52:37.26 ID:egshDkuk.net
リンクされたセルの値が変化した際に実行する処理をWorksheet_Changeに記述しております。
この処理中にリンクされたセルの値が変化した場合、
実行中のWorksheet_Changeは中断され、新たにWorksheet_Changeが開始されるのでしょうか?
それとも、実行中のWorksheet_Changeは引き続き実行され、同時並行にWorksheet_Changeが開始されるのでしょうか?

また、上記のどちらであるかを確認する方法があるようでしたら教えていただきたいのです。
よろしくお願いします。

727 :デフォルトの名無しさん:2015/08/02(日) 15:09:53.80 ID:QrDJWkft.net
>>726
処理の中に対象セルの値を変化させるコードがある場合、そこから新たに実行される。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i

Debug.Print "preexe"

Target = i

Debug.Print "Postexe"
End Sub

とかで実行してみてイミディエイトウィンドウを確認すると分かりやすい。

728 :デフォルトの名無しさん:2015/08/02(日) 15:18:10.64 ID:9vFz/e2c.net
無限ループって怖くね?

729 :デフォルトの名無しさん:2015/08/02(日) 16:11:43.31 ID:2Z/4WN4gX
>>720
前後に""じゃない、適当な文字列つけたら?

730 :デフォルトの名無しさん:2015/08/02(日) 16:32:16.48 ID:dkS/+hk9.net
>>726
A列 金種
B列 枚数
C列 金額
でB、Cの何れか片方に入力されたらもう片方を再計算するようにしたことならあるけど…

731 :715:2015/08/02(日) 17:32:28.59 ID:egshDkuk.net
あー間違えたー
>>726のWorksheet_ChangeはWorksheet_Calculateに読み替えてください。
↓が正しいです。すみません。
"リンクされたセルの値が変化した際に実行する処理をWorksheet_Calculateに記述しております。"

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

>>728
Worksheet_Calculateが実行中にリンクされたセルの値が変化することもあれば、変化しないこともありますので
必ずしも無限ループとはなりません。
>>727は無限ですけど。

732 :デフォルトの名無しさん:2015/08/02(日) 18:39:22.01 ID:MF9TQU9s.net
>>720
そういうのがわずらわしいからTab文字でセパレートするんやで
つーか全レコード舐めて使ってない文字なら何でもいいが

733 :デフォルトの名無しさん:2015/08/03(月) 10:07:35.51 ID:IvRPgtVs.net
>>720
アドイン探したらあったよ?
Excel CSV I/O 
使ってみたら。

734 :デフォルトの名無しさん:2015/08/03(月) 15:40:21.92 ID:JhhThk5t.net
2バイト文字の空白エリアからテキトウに選べばええ

735 :デフォルトの名無しさん:2015/08/04(火) 18:12:48.60 ID:Xu3GeQZL.net
OWCのグラフについてですが、データがEmptyの箇所を非表示にするにはどうすればいいでしょうか?

736 :デフォルトの名無しさん:2015/08/04(火) 19:13:09.63 ID:qaA+gaVg.net
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)を使う

737 :デフォルトの名無しさん:2015/08/05(水) 00:47:49.40 ID:Xk+R3C8+.net
特定のブックだけでしか使わないので、そのためにアドインってのはちょっと嫌かな
tsvってなんでExcelに関連付けされてないんだろう
名前をつけて保存でも出てこないし

拡張子協会?みたいのがあって、そこには認められて無くて
タブ区切りだからtsvって一部の人が呼んでるだけなのだろうか
なんて想像してしまう

738 :デフォルトの名無しさん:2015/08/05(水) 04:31:59.24 ID:yfcMdSNW.net
>>737
Excelでのタブ区切りはテキスト形式指定で保存できる
関連付けは.txtなのでメモ帳になってるのが一般的だな
開くのはEXCELでちゃんと開ける

そもそもcsvはComma-Separated Valuesの略だとされてるから
タブ区切りがcsvじゃおかしいだろうって言う話があってtsvと呼んだりするけど
それ以外の区切り形式も全部ひっくるめてcsvと呼ぶこともある
いちおう今はRFCとかもあるけど、それ以前から存在するし実はかなりカオスな形式

739 :デフォルトの名無しさん:2015/08/06(木) 21:55:53.33 ID:i7HDVQtV.net
ExcelからVBAでOutlooikを操作し
CreateObject("Outlook.Application").CreateItem(0)
でメールの下書きをいくつかたくさん作ります。

そのあとつくった全部に対して同じ処理をしたいのですが
このCreateItem(0)で作ったメールの下書きのコレクションを取得する方法ってどうやればよいでしょうか?

740 :デフォルトの名無しさん:2015/08/06(木) 22:24:14.34 ID:JI2t4Gst.net
好きにやればいいよ

741 :デフォルトの名無しさん:2015/08/06(木) 23:00:42.60 ID:hJ1X31cM.net
>>739
outlook研究所に行けよ

742 :デフォルトの名無しさん:2015/08/06(木) 23:53:13.21 ID:3nTeNGfy.net
自分で作ってるんだから自分でコレクションに入れていけば良いんじゃね

743 :デフォルトの名無しさん:2015/08/11(火) 21:35:11.54 ID:gtl50mbf.net
あるセルに
AAA BBB AAA CCC
と表示されているのを
AAA BBB CCC
と、つまり重複文字列を
削除するVBAのコードを何卒
お願いしますm(_ _)m

744 :デフォルトの名無しさん:2015/08/11(火) 22:49:00.10 ID:my6QzTuQ.net
メニューに重複削除あるだろ

745 :デフォルトの名無しさん:2015/08/11(火) 23:00:31.84 ID:gtl50mbf.net
>>744
一つにセル内の話です。
例えばA1内に
あああ あああ 200 200
と文字列がある場合に
マクロ実行で
あああ 200
のように。
(かなり困ってますので
お助けを…(_ _))

746 :デフォルトの名無しさん:2015/08/11(火) 23:02:52.20 ID:Rnp54Swm.net
あるセルって単一セル内?4つのセル?

747 :デフォルトの名無しさん:2015/08/11(火) 23:14:47.60 ID:Rnp54Swm.net
区切りにスペースは必ず入ってるのかな

748 :デフォルトの名無しさん:2015/08/11(火) 23:24:55.02 ID:3YchA3jD.net
そんな馬鹿げた要件ないだろ

749 :デフォルトの名無しさん:2015/08/11(火) 23:49:39.45 ID:UIGKpo35t
かたまりを格納してセルにはっつけて重複なんとかつかえば

750 :デフォルトの名無しさん:2015/08/11(火) 23:43:59.37 ID:gtl50mbf.net
>>746
単一セル内

>>747
スペースは入っています。
元のプログラムでは
文字列型の変数に
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の中身の重複を
削除する方法です(_ _)

751 :デフォルトの名無しさん:2015/08/12(水) 00:05:07.74 ID:AxCPtTKK.net
>>743

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

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

なんか出来そうな予感は
して来ました(笑)
(夜分遅くに本当に感謝です、他にも
ありましたら何方かなるべくシンプルな
やつでお願いします(^ ^;))

753 :デフォルトの名無しさん:2015/08/12(水) 01:06:27.62 ID:svAFeBJn.net
>>751
エラー無視させるかキーが当たったら登録させないかは好みで分かれるところだな

754 :デフォルトの名無しさん:2015/08/12(水) 09:21:11.40 ID:ybFGXm8Q.net
>>753
エラートラップとかはできる限り使いたくないから
> キーが当たったら登録させない
派だな

755 :デフォルトの名無しさん:2015/08/12(水) 12:37:40.94 ID:bqbcCRVa.net
vba活用してスマホとEXCEL連携して何かできないかな
カメラで撮ったらシートに画像がすぐに貼り付けられるとか
バーコード呼んだらセルに入力されるとか

756 :デフォルトの名無しさん:2015/08/12(水) 13:40:00.14 ID:CjCTxmpZ.net
dictionary使えばいいでしょ

まあ元のソースが別のセルに入ってるのをわざわざ連結してから処理してる意味がわからないけど

757 :デフォルトの名無しさん:2015/08/12(水) 13:42:43.23 ID:Qp9NewvK.net
>>755
googleスプレッドシートでやるといいよ

758 :デフォルトの名無しさん:2015/08/12(水) 17:15:44.92 ID:e6JBBjJ+.net
シートに図挿入したときのことなんですが、
挿入 ― 図 ― (d:\gazo\a000.jpg) ― ファイルにリンクで
貼り付けた画像があるとして、この画像のフルパス(d:\gazo・・・.jpg)を
知ることはできるでしょうか。Excel2007では,代替えテキストに
フルパスが入っていますが、Excel2010では、何も入りません。
(Excel側で、設定とかある?)、どこかに、情報は持っているはずと
思うのですが、VBAで知る方法、わかるかた教えてください。
代替えテキストは、下記でわかるようなのですが。
pic.ShapeRange.AlternativeText

759 :デフォルトの名無しさん:2015/08/12(水) 19:06:50.03 ID:KANlCZaRa
プロパティは?

760 :デフォルトの名無しさん:2015/08/12(水) 23:05:01.82 ID:G8qcToBK.net
そこを方向転換してマクロで図を挿入するようにすればバージョンに依存せずいつでもパスを得られると思わないか
思わないな

761 :745:2015/08/12(水) 23:40:12.65 ID:e6JBBjJ+.net
>>760
じつは、マクロで図を挿入するのを作っていて、「Excel2010でPictures.Insertすると
リンク貼り付けになる」ということなので、いろいろ調べたら「代替テキストに画像のフルパスが
あるなら、挿入にできる」っていうのを見つけた。で、2007だと代替テキストにフルパスが
入ってるけど、2010は、なし。じゃ、ということで2010で代替テキストにフルパスを書き込む
ようにした。で、リンク貼り付け→挿入にできるようになったんだ。これ、>>758カキコしてから
ようやっとできた。だけど、んにゃ、どっかにフルパス情報当然あるはず、と思うんだけど。
ちなみに「AddPicture」は、どうもしっくりこなくて。

762 :デフォルトの名無しさん:2015/08/13(木) 01:00:44.65 ID:CPI6SZk7.net
>>761
「代替テキストに画像のフルパスがあるなら、挿入にできる」って
なにそれリンクプリーズ

763 :デフォルトの名無しさん:2015/08/13(木) 01:24:42.76 ID:UOPmO2ID.net
結局何が目的でどれがそのための手段なのかわからん

764 :デフォルトの名無しさん:2015/08/13(木) 09:28:42.30 ID:jLoATrSc.net
>>762
これです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1284060567

要は、画像リンクで貼り付けられてる、画像のフルパスがわかれば、リンク貼り付け→挿入にできる。
Excel2007は、代替テキストに入ってるから、もしリンク貼り付けでも対処できる。2010は、手動貼付けや
Pictures.Insertでは、代替テキストにはフルパスは入らない。マクロで入るようには、もちろんできる。
じゃ、すでに手動なりでリンク貼り付けになってる(フルパス情報なし)のを、挿入にしたいから
図のフルパスを知りたい、ってことなんだわ。ネットで、いろいろググってるんだけど、見つからなくて。

765 :デフォルトの名無しさん:2015/08/13(木) 10:30:47.40 ID:XEpKKFYz.net
図をコピーして形式を選択して貼り付けするとリンク切れるみたいだけどそれでどうにか

766 :750:2015/08/13(木) 11:38:58.21 ID:jLoATrSc.net
>>765
レスありがとう。教えてもらった通りの操作を、マクロ記録してみました。
それを利用して、画像フルパスなくても、一度に何枚のリンク画像でも、
挿入にできました。この方法は、思いつきませんでした。日頃のExcel操作が
大事だと改めて思いました。教えていただき、ありがとうございました。
(目的を達成したので、とりあえずリンク画像のフルパス取得は、保留にします。)

767 :デフォルトの名無しさん:2015/08/13(木) 14:10:15.23 ID:XEpKKFYz.net
図のリンクの編集ぐらいExcelの機能としてあるかと思ったら意外に無いのな
コピペも対処療法的な感じで非常にアレだ

768 :デフォルトの名無しさん:2015/08/13(木) 18:40:42.85 ID:e6rsnF6N.net
>>767
「対処療法」じゃなくて正しくは「対症療法」だよ

769 :デフォルトの名無しさん:2015/08/14(金) 20:13:43.07 ID:8ARrFh/I.net
Range("a1").value = Range("b1").value

こう書くと数式も含まれてコピーされるようですが
値のみを繁栄させたい場合はどう書けばいいのでしょうか? 

770 :デフォルトの名無しさん:2015/08/14(金) 20:19:39.62 ID:kkHnja52.net
>>769
マクロ記録モードにして
「値で貼り付け」の操作をするとわかる

771 :755:2015/08/14(金) 20:21:57.58 ID:8ARrFh/I.net
>>769
この質問の意図は

Range("A1").Copy

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

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


>>770
ありがとうございます

772 :デフォルトの名無しさん:2015/08/14(金) 20:43:22.05 ID:GC+yzDGQ.net
>>769
私の記憶が確かなら、.valueは計算結果の値であって、数式はとれないはずですが。
EXCELのバージョンは?

773 :755:2015/08/14(金) 20:54:01.53 ID:8ARrFh/I.net
>>772
2003です、、 
表の集計で使っていますが
今まではダイレクトに書かれた数値をコピペしていたところを
=a1 のようなセル参照で抽出する用に変えたのですが
結果の数値が全部0になりよく調べると =a1  ごとコピーされて
結果セルの式は=a100とかと表示されていてだめだこれはといった感じです

774 :755:2015/08/14(金) 22:12:02.80 ID:yxgV65T9.net
結局の所
>>771

>>769
のように1行で書く事は出来ないのでしょうか?

775 :デフォルトの名無しさん:2015/08/14(金) 22:41:06.93 ID:kkHnja52.net
>>774
できない
「値で貼り付け」はPasteSpecialメソッドにしかない機能なので
まずCopyしておく必要がある

776 :755:2015/08/14(金) 23:04:41.66 ID:heE1+va8.net
>>775
ありがとうございます。 長年の謎が溶けてすっきりしました。

777 :デフォルトの名無しさん:2015/08/14(金) 23:45:05.71 ID:G78FLFmY.net
>>773
うちは2007だけど
Range("a1").Value = Range("b1").Value
でちゃんと数値がコピーされるなー

ところでこんなんどないや
Range("a1").Value = Evaluate(Range("b1").Formula)

778 :デフォルトの名無しさん:2015/08/15(土) 00:27:53.07 ID:fL/PzS3/.net
>>777
2010でもその通り、値のコピーとなった。
>>775はウソ。

779 :デフォルトの名無しさん:2015/08/15(土) 00:46:57.24 ID:tvgFL4BI.net
質問
これは動くのですが
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の使い方がわるいのでしょうか

780 :デフォルトの名無しさん:2015/08/15(土) 07:06:47.86 ID:j7Z0urAN.net
色々な事情で600シート分のデータを1〜2のブックに統合する必要が出てきたのですが

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

のではどれがお勧めでしょうか?
600シートの総データ数は300MBほどです。
1ブック200シートのデータ作成は成功しましてまあそれなりに止まることなく動くというのがわかりました。

781 :デフォルトの名無しさん:2015/08/15(土) 10:12:24.14 ID:Rw3ql/9W.net
第3の答えとしてRDBを使用する

782 :デフォルトの名無しさん:2015/08/15(土) 10:27:23.30 ID:cR607+81.net
開くの重そう。
自分で作れてるんなら、実用性次第じゃないの?

783 :デフォルトの名無しさん:2015/08/15(土) 10:42:17.52 ID:p/7d84Nq.net
何もしていないxlsx形式やcsv形式で300MBなら統合した後にデータテーブル化すれば容量はだいぶ抑えられるはず。

784 :デフォルトの名無しさん:2015/08/15(土) 15:22:05.44 ID:bQp9LOtRz
テキストにかきこんでdbsだなあ
dbsとかめっだにつかわないけど、使えると便利

785 :デフォルトの名無しさん:2015/08/15(土) 15:23:11.33 ID:7AZQcdGh.net
>>780
150シートに分割して4ブックにすることもできすし
120シートに分割して5ブックにすることもできすし
100シートに分割して6ブックにすることもできす。

しかし分割して7ブックにすることはできません。
これは7が600の約数ではないからです。
小学生の算数の授業でした。

786 :デフォルトの名無しさん:2015/08/15(土) 15:48:36.88 ID:Bgl+GJFE.net
>>785
分割は等分とは限らないんだぜ?

787 :デフォルトの名無しさん:2015/08/15(土) 16:23:48.83 ID:mbZast3u.net
同一テーブルのデータをシートに分けるのは愚の骨頂 ひとつにまとめろ

788 :デフォルトの名無しさん:2015/08/15(土) 16:33:01.59 ID:HxCw3c0C.net
重いとか色々理由あって、状況によっては必ずしも1つが正しいともいえないんだよなぁ。

789 :デフォルトの名無しさん:2015/08/15(土) 17:04:42.31 ID:B4BgWceW.net
まあそもそもEXCELでやるべき処理かという問題

790 :デフォルトの名無しさん:2015/08/15(土) 17:10:19.88 ID:B4BgWceW.net
>>779
Shapes.Rangeの引数は、配列は許すがコレクションは許さない

791 :デフォルトの名無しさん:2015/08/15(土) 22:40:04.13 ID:+545fZTC.net
これからexcelvbaを学習しようと思うのですが、パソコンスクールとかに通ったほうがいいでしょうか。

792 :デフォルトの名無しさん:2015/08/15(土) 22:51:46.86 ID:4BB87GxS.net
>>791
ネットの解説ページで充分

793 :デフォルトの名無しさん:2015/08/15(土) 22:53:48.65 ID:fL/PzS3/.net
美人講師に教えてもらえるのなら

794 :デフォルトの名無しさん:2015/08/15(土) 22:55:28.05 ID:EaRAq543.net
VBA教えるスクールなんてあるんかな

795 :デフォルトの名無しさん:2015/08/15(土) 22:58:58.19 ID:UUBlauo7.net
たぶんこのスレ見てるやつでパソコンスクールに通ったことあるやつってほとんどいないと思うぞ...

796 :766:2015/08/15(土) 22:59:00.32 ID:4BB87GxS.net
>>780 ですが盆休みの暑い中あれこれ試して見ましたが
100メガぐらいある200シートあるファイルを作り3つを同じに開いて処理させようとしたら・・・
3つめでリソース不足で開けませんと出てきました THE END

まだ推測段階ですが1ブック400シート統合したファイルは開けたと思いますので巨大な1つのブックを作るのが正解のようです。

797 :デフォルトの名無しさん:2015/08/15(土) 23:01:44.13 ID:fL/PzS3/.net
現状のサイズで打ち止めなのか、今後少しずつ増えていくのかどっちだ?

798 :766:2015/08/15(土) 23:09:16.26 ID:4BB87GxS.net
>>797
管理上多くのシートが束なった状態が有利でして
どちらかと言うと限界値を探っている感じです。

799 :766:2015/08/15(土) 23:13:14.19 ID:4BB87GxS.net
>>797
最大シート数は青天井です
DBを使うべきなのでしょうがDB未経験なのでVBAであがいています

800 :デフォルトの名無しさん:2015/08/15(土) 23:21:14.62 ID:+545fZTC.net
776
アドバイスありがとうございます。
パソコンスクールは不要そうですね、自力でやります

801 :デフォルトの名無しさん:2015/08/15(土) 23:34:34.55 ID:xECQEf0h2
スクールは専門でもなけりゃ、vbaどころかマクロすら知らない講師とかが教えるから。
このスレいたほうがはるかに解かりやすいかも

802 :766:2015/08/15(土) 23:28:20.54 ID:FJpG/yMJ.net
>>800
プログラミングの基礎知識があればネットで充分 
プログラム未経験で1から始めるならネットで見てわからなければ、本でやってみて、それでもだめならスクールかな

803 :デフォルトの名無しさん:2015/08/15(土) 23:43:38.64 ID:+545fZTC.net
>>802
ありがとうございます。プログラムは初心者ですが実務で使えるレベルになりたいのです。
カエルが出てくるベストセラー入門書を読み込んでみます

804 :デフォルトの名無しさん:2015/08/16(日) 00:07:46.48 ID:ulfn6A7k.net
基礎知識は学生時代にやったからなあ
全くの未経験の感覚は分からん

805 :デフォルトの名無しさん:2015/08/16(日) 02:37:33.95 ID:7WiTockH.net
マジレスすると最強のVBAスクールはここです

806 :デフォルトの名無しさん:2015/08/16(日) 05:49:34.88 ID:ENl5jplp.net
マクロの記録だけでもいろいろ学べる
ループやifはないけど

807 :デフォルトの名無しさん:2015/08/16(日) 10:11:51.00 ID:gGxBx6VU.net
マクロ記録は宝の山
下手にループを組んだりするより、圧倒的に短く済む書き方を発見することがある

俺のVBA人生で一番驚いたのが、セルポインタの右下の黒点をWクリすると
左隣のセルに沿ってセル内容を自動コピーできること
コピー範囲の指定やif判定など一切が不要

808 :デフォルトの名無しさん:2015/08/16(日) 10:29:13.12 ID:piHLRckr.net
それは太陽の黒点のように出現時期や数の変化はありますか?

809 :デフォルトの名無しさん:2015/08/16(日) 11:32:03.58 ID:ulfn6A7k.net
>>807
そんな事出来たのかと思って試してみたけど
これってつまりオートフィル?

810 :デフォルトの名無しさん:2015/08/16(日) 12:03:28.50 ID:gGxBx6VU.net
>>809
オートフィルだね
ループ組んで1セルずつ処理するコードを書くことしか頭になかったから
当時かなりの衝撃を受けた
関数内のセル参照式を自動でインクリメントしてくれるので、関数を含む
表をVBAで作る(割とよくある)場合に非常に役立つ

811 :デフォルトの名無しさん:2015/08/16(日) 12:07:18.75 ID:+v5OIrpT.net
空白があると止まっちゃうから、結局ループに戻ったな。

812 :デフォルトの名無しさん:2015/08/18(火) 00:21:58.08 ID:XBdAgPin.net
でも大抵ループより専用のシート関数呼んだ方が速くて悔しくね?
このあいだ適当に安定ソート組んだら組み込みのシート関数のSortのが速くてショック死した

813 :デフォルトの名無しさん:2015/08/18(火) 04:01:26.32 ID:fz3Mk9gj.net
Sortメソッドって安定なの?

814 :デフォルトの名無しさん:2015/08/18(火) 07:16:21.63 ID:Nc1vlm2A.net
どうだろ。実験してみれば?
反例が出ればはっきりする。出なきゃ何とも言えんが。

815 :デフォルトの名無しさん:2015/08/18(火) 15:40:30.31 ID:7IvcIIuj.net
反例が出るまで、あらゆるパターンをソートし続けるのか・・・

816 :デフォルトの名無しさん:2015/08/18(火) 21:06:25.20 ID:Nc1vlm2A.net
>>815
そうさ。君ならできる。

817 :デフォルトの名無しさん:2015/08/20(木) 00:38:14.85 ID:/DfWyQwS.net
>Sortメソッドって安定なの?
安定だよ
適当にセルに値埋めてキー列を変えながらソートしていけば不安定と何が違うか判る

818 :デフォルトの名無しさん:2015/08/20(木) 00:47:34.83 ID:C5756yL1.net
その確信をどうやって持てばいいのか・・・

819 :デフォルトの名無しさん:2015/08/20(木) 09:33:43.09 ID:X9vYl0u8.net
>>817
個人的な実験で調べるのは無理
安定ソートと同じ結果になったのが偶然じゃないと証明することはできない

820 :デフォルトの名無しさん:2015/08/20(木) 11:22:47.70 ID:4mlXzkea.net
確信が持てないんだったらSort後にチェックのロジックを追加すればいい
(どうすんのかは知らんけど)
それか、最初から使わなければ良い

821 :デフォルトの名無しさん:2015/08/20(木) 12:06:50.75 ID:mAnYGFvy.net
普通だったら仕様書なり規格のここに書いてあるという話題になるのに、そうならない言語を使ってる男のひとって

822 :デフォルトの名無しさん:2015/08/20(木) 12:09:54.61 ID:mAnYGFvy.net
まあ安定にしたいというだけなら昇順インデックスを一列追加して第2キーに指定すれば良い。

823 :デフォルトの名無しさん:2015/08/20(木) 12:26:40.09 ID:8gCc+4Mw/
昇順ソート、降順ソート、降順ソート後に昇順ソート
それぞれ比較すれば?

824 :デフォルトの名無しさん:2015/08/20(木) 17:06:23.21 ID:GEWaWf2/.net
なんでExcelVBAユーザーって他の言語だとごくごく当たり前のことを
訊かれてるのに頓珍漢な答えを返すの?

825 :デフォルトの名無しさん:2015/08/20(木) 18:11:06.62 ID:n0ICmDs/.net
他の言語 = C++限定

826 :デフォルトの名無しさん:2015/08/20(木) 20:53:52.58 ID:mAnYGFvy.net
その点OutlookVBAユーザーは偉い。

827 :デフォルトの名無しさん:2015/08/20(木) 22:46:58.59 ID:abJwgas4.net
adoでAccessに接続しクエリのパラメーターにセルの値を渡すにはどのような方法がありますか?また、sqlでセルの値を使う場合もどのように書けば渡せますか?

828 :デフォルトの名無しさん:2015/08/20(木) 23:25:51.90 ID:4mlXzkea.net
sqlstr = " select 〜 from ddd where fff = " & Cells(i,1)

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

みたいにしてっけど、こういう事じゃない?

829 :デフォルトの名無しさん:2015/08/21(金) 00:12:09.87 ID:AQjOsTG4.net
>>828
こういうことですが、&でセルの値はなにも囲まないんですね

830 :デフォルトの名無しさん:2015/08/21(金) 00:23:47.20 ID:mP5B+B9x.net
>>829
811だけど、これMySQLで俺がやってるもの。ACCESSではどうだったか。
MySQL出やる時、日付や文字列は "'" 半角のクォーテーションでくくってる

sqlstr = " 〜 '" & Cells(i,3) & "'" みたいに
そこら辺は適時修正してくれ

831 :デフォルトの名無しさん:2015/08/21(金) 14:19:51.00 ID:yaZ860HY.net
>>829,813
脆弱性たっぷりに見えるので、もう少し頑張れ・・・(´・ω・`)

832 :デフォルトの名無しさん:2015/08/21(金) 16:50:53.01 ID:lpkbHdP+.net
FileSystemObjectを使ってファイルをMoveFileで移動した直後に
元の場所に同じ名前のファイルをCreateTextFileやOpenTextFileで新規作成すると
作成時にたまにランタイムエラーになる
MoveFileが非同期で処理してんのかなあと思った
FileExistsで移動が完了するまで待った方がいいのか、別名で新規作成するべきか
どっちがいいと思います?

833 :デフォルトの名無しさん:2015/08/21(金) 16:59:03.93 ID:CXs5osz9.net
>>832
目的による
処理を急ぐなら別名で、同名じゃないと困るなら完了まで待つ

834 :デフォルトの名無しさん:2015/08/21(金) 17:29:16.31 ID:U/GX80hF.net
book1の変数Nを使ってbook2のマクロをRunで使いたいのですが
book1で次のコードを実行するとNの値がエンプティになってしまいます。
変数を使うにはどうしたらいいですか?

Public N As Integer
N = 100
Application.Run "book2".xls!updata"

835 :デフォルトの名無しさん:2015/08/21(金) 17:55:38.56 ID:CXs5osz9.net
>>834
Application.Run ("book2.xls!updata", N )

836 :デフォルトの名無しさん:2015/08/21(金) 18:38:34.66 ID:lpkbHdP+.net
>>833
ありがとうございます
コメントも無い他人のソースなんで、何でこんなことしてるのかはまるで不明なんですが
別名路線でいくというか、もう移動先に直接作成することを考えております
参考になりました

837 :デフォルトの名無しさん:2015/08/21(金) 18:44:54.74 ID:U/GX80hF.net
>>835
返信ありがとうございます
実行すると コンパイルエラー 修正候補: =
と出てしまいます。

838 :デフォルトの名無しさん:2015/08/21(金) 20:21:41.59 ID:U/GX80hF.net
book2に変数N宣言してないからかな
ちょっと別の方法でやってみます
ありがとうございました

839 :デフォルトの名無しさん:2015/08/23(日) 14:00:42.68 ID:mtt7apD7.net
adoでつなぐクエリがAccessのクロス集計でパラメーターある場合、Excelからどうやったらパラメーター渡せる??

840 :デフォルトの名無しさん:2015/08/23(日) 14:58:01.35 ID:CbBvys+j.net
プログラム言語一般を勉強しているのですが
このVBAのVariant型の変数の正体ってなんですか?
かなり詳しく知りたいのですが。

841 :デフォルトの名無しさん:2015/08/23(日) 14:59:12.06 ID:CbBvys+j.net
いろんな型を入れられるし、セル範囲も入れられて配列のようにも使える。
これらはメモリにどのように記憶されているか、ということまでは最低でも知りたいんです。
プロ目指してますんで(ワラ

842 :デフォルトの名無しさん:2015/08/23(日) 15:04:43.71 ID:WA8SS6t8.net
>>841
VBAはソースも設計書も公開されていないので誰にもわからない

843 :デフォルトの名無しさん:2015/08/23(日) 15:14:25.56 ID:CbBvys+j.net
>>842
そりゃないよかあちゃん

844 :デフォルトの名無しさん:2015/08/23(日) 15:20:55.56 ID:J+cRYQ7V.net
>>843
VariantはOS(Windows)で定義されてる型
中は二つに分かれていて、データの種類と実際の内容が入ってる
VBAはそれを継承してるだけなので、Windowsクラスの仕様を探せば詳しいことがわかると思う
実際に消費するバイト数とかどっかで見た記憶があるんだけど思い出せん

845 :デフォルトの名無しさん:2015/08/23(日) 15:24:51.94 ID:CbBvys+j.net
>>844
ありがとうございます。
ではなにを調べればよいのでしょ?
VBAの元になったVB.netの本には書いてそうですか?

846 :デフォルトの名無しさん:2015/08/23(日) 15:37:58.52 ID:J+cRYQ7V.net
>>845
VB.netはVBAの元じゃないです
歴史的に見れば.netよりVBAの方がずっと古いです
VBAの言語仕様 (文法)はWindowsよりもっと前のMS-DOSの時代に流通していたMS-BASICの影響が強く残っています
とりあえずVariantについてはWindowsクラスを調べてください

847 :デフォルトの名無しさん:2015/08/23(日) 15:45:58.27 ID:CbBvys+j.net
>>846
わかりました。
ではWindowsクラスはどうやって調べますか?
VBAのクラスだとコード書くところでF2押してそのオブジェクトウインドウでクラスを調べることができますが
Windowsクラスはどこをさわってどこを見ればよいのでしょうか?

848 :デフォルトの名無しさん:2015/08/23(日) 15:48:38.19 ID:Sv2KumfA.net
>>846
あんたエラいな
もう面倒臭いから
「VB.Netを調べればVariantのことならバッチリです」って書き込む衝動に駆られたよ

どうせVB.NetにはVariantなんて概念無いから調べればすぐ分かるだろうし

849 :デフォルトの名無しさん:2015/08/23(日) 16:10:13.13 ID:MIuOfpHO.net
typename(変数名)ってやれば今何として使われてるのかわかるよ

850 :デフォルトの名無しさん:2015/08/23(日) 16:12:01.44 ID:HWLa8qp/.net
>>847
ほらよ
http://marupeke296.com/IKDADV_CPP_VARIANT.html

851 :デフォルトの名無しさん:2015/08/23(日) 16:14:09.85 ID:CbBvys+j.net
>>850
ぉぉ、ありがとうございます。
さっそく読んでみます

852 :デフォルトの名無しさん:2015/08/23(日) 19:08:05.67 ID:pAcPKBpl.net
VariantやSafeArrayのことなんて今さら知ったところで役に立つまいよ

853 :834:2015/08/24(月) 11:52:15.07 ID:kqGleJUR.net
さっぱり意味がわからないのですが
結局はVariant型の変数の正体はどうなっているのですか?

854 :デフォルトの名無しさん:2015/08/24(月) 11:58:00.74 ID:mvfSohk+.net
It's 正体ム!

855 :デフォルトの名無しさん:2015/08/24(月) 12:07:55.55 ID:v68vlkfs.net
>>853
>>850で紹介されてるサイトに明確に書いてるじゃんよ。
::VariantInitしたあとvtに型識別の定数入れてその型の値を入れりゃ使えるんだよ!

856 :デフォルトの名無しさん:2015/08/24(月) 12:23:46.05 ID:yOjBToOI.net
>>853
C/C++を勉強しろ

857 :デフォルトの名無しさん:2015/08/24(月) 14:05:05.16 ID:BYoao/vR.net
>>853
ヨボヨボのおじいさんと
何も聞かずにその荷物を持ってあげる親切な若者の2人組

ほら空港によくいるだろ

858 :デフォルトの名無しさん:2015/08/24(月) 17:05:32.04 ID:J76Yg4NI.net
分かろうとしない。理解する気が無い。単純明快じゃないと
いやだ。という事だろう。

859 :デフォルトの名無しさん:2015/08/24(月) 17:34:27.17 ID:Kuhf7pjv.net
>>853
833のリンク先を見て理解できないのは勉強が足りてないだけ

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

VBAでは型を勝手に判定してくれるのと、その判定基準が(たぶん)非公開なので理解しにくいってのはあるけど

860 :デフォルトの名無しさん:2015/08/24(月) 18:06:39.68 ID:CxEN4gra.net
VBAスレで>>850のリンク先を理解できないと勉強不足ってなかなかきついなw
私もこのリンク先は理解できませんでした
勉強します。はい。

861 :デフォルトの名無しさん:2015/08/24(月) 19:35:51.19 ID:EZ01N8pB.net
でも勉強するなら後がないC++よりC#なんでしょ?

862 :デフォルトの名無しさん:2015/08/24(月) 19:41:39.58 ID:L+YG8AD9.net
実はいまだに>>857がわからない。

863 :デフォルトの名無しさん:2015/08/24(月) 19:56:40.68 ID:j4ltc4Df.net
>>861
目的によるがメモリ管理なんかを勉強するなら最低でもCの挙動について知っておく必要がある。
newすりゃインスタンスがメモリ上にポンと出来るなんて甘々の高級言語なんか使ってたらいつまでもプログラマになれんのですよ!

864 :デフォルトの名無しさん:2015/08/24(月) 20:07:49.84 ID:EZ01N8pB.net
>>863
じゃCとC#でいいや
3DSよりVITAのソフト作れるようになりたい

865 :デフォルトの名無しさん:2015/08/24(月) 20:13:49.27 ID:j4ltc4Df.net
>>864
「○○でいいや」精神でゲーム作るならUnityなんかのAPIに慣れておく方が建設的。
まぁ一回、根幹的な仕組みを勉強してからの方が覚えやすいから無駄にはならないけど。

866 :デフォルトの名無しさん:2015/08/24(月) 20:31:57.81 ID:Kuhf7pjv.net
ゲーム専用機はもうすぐ死滅するから
今はスマホアプリで我慢しとけ

867 :デフォルトの名無しさん:2015/08/24(月) 20:48:16.48 ID:EZ01N8pB.net
>>866
じゃWindowsパソコンしか持ってないからAndroidStadioでJavaか

868 :デフォルトの名無しさん:2015/08/24(月) 22:50:47.21 ID:hopDjYVC.net
>>863
> newすりゃインスタンスがメモリ上にポンと出来る
そう言うのを作る側に回ったことはないのか?
もしそうなら、そりゃスクリプト言語使ってるのとたいして変わらんかもな w

869 :デフォルトの名無しさん:2015/08/24(月) 23:06:13.03 ID:EZ01N8pB.net
>>868
ひょっとするとインスタンス作るのに物凄く苦労するとか

870 :デフォルトの名無しさん:2015/08/25(火) 00:20:48.67 ID:fH+tecmU.net
メモリ管理ってもVariantの場合はどういうタイミングで::VariantClearが行われるかとか
それをどうコントロールするかに気を使うことになる。

871 :デフォルトの名無しさん:2015/08/25(火) 00:28:47.69 ID:SVRUkRRq.net
ここのセルの値をここのセルに代入みたいなマッピングが100コほどあるんですが、簡単に早く書く方法ありませんでしょうか。

872 :デフォルトの名無しさん:2015/08/25(火) 00:51:30.40 ID:LKq1O+0D.net
具体例で書いてください

873 :デフォルトの名無しさん:2015/08/25(火) 01:02:46.86 ID:SVRUkRRq.net
cells(i,1)=range("a3")
とか、こんなのを100コなんですが。右辺のセルは連続してません。

874 :デフォルトの名無しさん:2015/08/25(火) 01:03:22.37 ID:3oudZYDo.net
>>871
何を聞きたいのか質問がさっぱりわからん
「早く書く」って、どこに何を書きたいんだ

875 :デフォルトの名無しさん:2015/08/25(火) 01:05:58.97 ID:3oudZYDo.net
>>873
その右辺のセルの一覧はどっから入手すんだよ
紙にでも印刷されてんのか?

で、左辺には法則があんの?

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



877 :デフォルトの名無しさん:2015/08/25(火) 01:16:53.20 ID:nOqJNbIK.net
数字が増えるだけなら、ソースをセルで書いてからオートフィルして、エディタに転記することをたまにやる。

878 :デフォルトの名無しさん:2015/08/25(火) 01:32:24.93 ID:3oudZYDo.net
>>876
右辺は配列、左辺はForで回せば同じような行を並べて書く必要はなくなる

879 :デフォルトの名無しさん:2015/08/25(火) 04:35:55.37 ID:viArKoao.net
100個程度なら、ワークシート側でハードコーディング用の配列等を関数使って作ってからマクロエディタにコピペした方が早くて楽だったり

880 :デフォルトの名無しさん:2015/08/25(火) 12:07:24.53 ID:57Wb3jlh.net
FileSystemObjectを最近Excelから活用することを覚えたのですが
Web上にあるファイル(イントラネットにあるいろんな拡張子のファイル)を
コピーやら移動やらFileSystemObjectで操る方法ってありますか?

仕様なのか知らないがhttp://で始まるアドレスにあるファイルは扱えない。

881 :デフォルトの名無しさん:2015/08/25(火) 19:20:53.18 ID:SVRUkRRq.net
一覧表からハイパーリンクで、単票を開いて修正して保存したら、一覧側に反映されるようにマクロ組むんですが、一覧表開いたままで、一覧表を更新できませんか?
開いてるので更新できないとエラーになるんです

882 :デフォルトの名無しさん:2015/08/25(火) 19:21:56.96 ID:SVRUkRRq.net
>>877
>>878
>>879

トンくす

883 :デフォルトの名無しさん:2015/08/25(火) 22:55:10.89 ID:trQirQ+3.net
エラーを無視するコードを書いておいても出てくる
コードの実行が中断されました とは一体何ですか?
メモリーオーバーか何かでしょうか?
どうやったら回避出来るのでしょうか?

884 :デフォルトの名無しさん:2015/08/25(火) 23:03:40.80 ID:Fjt3Kipb.net
>>850
こうしてみると
やっぱCの構造体/共用体定義って秀でてるなあ

885 :デフォルトの名無しさん:2015/08/26(水) 09:29:51.16 ID:1qA3LFtn.net
なぜ禿げてるんだ?

886 :デフォルトの名無しさん:2015/08/26(水) 11:55:22.88 ID:CfN5/oSD.net
>>883
コードを全部もれなくあげてみてくれ。

887 :デフォルトの名無しさん:2015/08/26(水) 20:51:37.95 ID:Mnky30GV.net
>>883
誰かがBreakキーを押した
ブレークポイントがあった
中断しましたというダイアログを出すコードを書いた

888 :デフォルトの名無しさん:2015/08/26(水) 21:17:40.72 ID:jQcdD1vT.net
On Error命令は、その関数内でしか有効でないはずだから、エラーが出る可能性がある全ての関数に書く必要がある。

889 :デフォルトの名無しさん:2015/08/27(木) 19:04:23.08 ID:8KYXppfO.net
ただのコンパイルエラーだったり

890 :デフォルトの名無しさん:2015/08/27(木) 23:39:27.94 ID:DSwpBmOp.net
>>884
ハード知識であるアライメントを意識できない最近のシステム屋は、
致命的な欠陥を作り込む場合が多い。
マイグレーションとか外部接続システムで。

891 :デフォルトの名無しさん:2015/08/28(金) 06:58:15.39 ID:h/70kqcI.net
まぁVBAで考えることじゃないけどな

892 :デフォルトの名無しさん:2015/08/29(土) 20:20:06.39 ID:daYUkBJ7.net
マルチスレッドできないハナクソ

893 :デフォルトの名無しさん:2015/08/30(日) 13:57:40.38 ID:TrC601ZP.net
VBAで、オートシェイプの図形変更はできるでしょうか。たとえば既にある円を、
四角に変更するとか。手操作だと変更できますが、マクロ記録してみても、
何もコードが作られません。ググってみても、その情報はないような感じです。

894 :デフォルトの名無しさん:2015/08/30(日) 14:41:34.46 ID:0qE+mi+l.net
>>893
もしかして2007?
2007はシェイプのマクロが記録されないバグがあるから

図形の変更はAutoShapeTypeプロパティに図形の種類を代入するだけ
例えば四角にするにはmsoShapeRectangleを代入すればいい

895 :876:2015/08/30(日) 17:14:45.13 ID:fHgQRyXi.net
>>894
できました。どうもありがとう。2007です。助かりました。

896 :デフォルトの名無しさん:2015/08/30(日) 21:14:20.31 ID:kboI7nNk.net
VBAからブラウザでURLを指定して開く方法を学んだのですが
うちの会社の社内のイントラページを開こうとすると
普通の開き方じゃなくVBAで開こうとするとそれを感知してるっぽくて
ログイン画面に飛ばされまたIDとPWを入力しないといけなくなります。

こんなことってよくあるのですか?
どうしてもVBAで開きたい場合その対策はどうすればいいですか?

897 :デフォルトの名無しさん:2015/08/30(日) 21:27:29.95 ID:tJkk5ci/.net
>>896
何か特殊な仕掛けをイントラに施しているからそうなる
社内システム管理者に聞け

898 :デフォルトの名無しさん:2015/08/30(日) 22:44:25.09 ID:PtUjiQ8D.net
>>896
まず、
>VBAからブラウザでURLを指定して開く方法
この方法を書かなければ、レス付きませんよ。

899 :デフォルトの名無しさん:2015/08/30(日) 23:14:42.89 ID:0E1Z3mSN.net
プロキシあたりなんだろうけど、vbaを検知なんてできるのかな。
IEを呼び出してるだけだよね?

900 :デフォルトの名無しさん:2015/08/30(日) 23:28:00.39 ID:rAB4xeXlp
IDとパスワードの入力ボックス指定して自動入力かな、それだと
単純に、新しくページ開いてるから、セッション初期化されて生成してるだけじゃね

901 :デフォルトの名無しさん:2015/08/30(日) 23:34:06.80 ID:tJkk5ci/.net
今は仮想化やセキュリティやログインパスワード一元化のための仕掛けを
かましてることがあるんで、単純には開けないこともあるよ
とにかく社内システム管理者に聞くことだ

902 :デフォルトの名無しさん:2015/08/31(月) 00:11:29.55 ID:g6VDKMqY.net
別のwindowでsessionが引き継がれてないかrefererで弾かれてるだけだろ

903 :デフォルトの名無しさん:2015/08/31(月) 01:19:07.67 ID:PyRduorc.net
>>896
シングルサインオンの認証基盤使っているんだろ。

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

IEオブジェクトの場合は、ログイン済みのIEプロセスを取得するようにすれば良い。
もしくは、VBAで新規IE立ち上げてURLを開いた後に、タイトルを取得してログイン画面だったら、
IDをPWを流し込むようにすれば良い。

904 :デフォルトの名無しさん:2015/08/31(月) 02:55:31.01 ID:7cfpxY0w.net
Microsoftクエリって内部はado?

905 :デフォルトの名無しさん:2015/08/31(月) 17:58:03.77 ID:+ep0qKm5.net
>>896
たぶん、普通にIEをダブルクリックで開いてパスワードを入れた後で、VBAから新規にIEオブジェクトを作成してんだと思うけど、
その方法だとパスワード認証情報は引き継がれない
対策は色々あるけど、VBAで何をやりたいかによる

906 :デフォルトの名無しさん:2015/08/31(月) 18:06:40.81 ID:ch2DQs3g.net
>>905
自動でテキストボックスやチェックボックスに文字をいれたりチェックしたりして
最後にボタンを押したいのです。

907 :デフォルトの名無しさん:2015/08/31(月) 18:48:32.91 ID:lFDVUwIc.net
>>906
パソコンが完全に自分専用ですぐ終わる処理なら、IDとPWもVBAから入力してやれば全自動にできる
その場合VBAのソースにパスワードを書くことになるので、他人に見られる可能性がある場合は危険すぎておすすめできない

画面のデザインや操作の手順が完全に固定されてるならIEオブジェクトは使わずにSendKeysで操作する方法がある
フォーカスの移動はTabキー、チェックボックスはスペースキーでチェックできる

908 :デフォルトの名無しさん:2015/08/31(月) 18:49:46.39 ID:lFDVUwIc.net
追記
ボタンを押すのはフォーカスを合わせてEnterな

909 :デフォルトの名無しさん:2015/08/31(月) 19:01:11.41 ID:ch2DQs3g.net
>>907
なぜIEオブジェクトは使わない方法をすすめるのですか?
SendKeysはその間他の操作ができないしなんか不安になる。

910 :デフォルトの名無しさん:2015/08/31(月) 19:02:04.47 ID:ch2DQs3g.net
GetElementByIDでちゃんと取れるのですが
問題は先に書いた、ログイン画面が表示されたり変な画面になることです

911 :デフォルトの名無しさん:2015/08/31(月) 19:23:52.10 ID:9FO3C5iL6
>>909
理由書いてあるのに、なぜって聞くのかwww

912 :デフォルトの名無しさん:2015/08/31(月) 19:31:11.66 ID:I/nqUJvX.net
なんで >>898 に回答 しない/できない 奴の相手するかなぁ...

913 :デフォルトの名無しさん:2015/08/31(月) 19:32:10.78 ID:LuRVaWQV.net
再度ログイン画面になるってことはセッションが切れてるんだろ
一つのIEオブジェクトで一貫して操作してないとか何かしら問題のあるスクリプトになってんじゃないか

914 :デフォルトの名無しさん:2015/08/31(月) 19:55:08.88 ID:9FO3C5iL6
たぶん、IEの挙動を十分把握してないんじゃないか
何が問題になってて、どれが解決策なのか判断できないっぽい

915 :デフォルトの名無しさん:2015/09/02(水) 22:38:31.24 ID:U41rngxq.net
ワークブック開いて、違うワークブックに転記するコードがあるんですが、ワークブック開かずセルの値を転記するにはどのように書くことできますか?また速度的にはかなり早くなりますか?

916 :デフォルトの名無しさん:2015/09/02(水) 22:43:43.58 ID:Io8ALjDg.net
ワークブックを開かずにセルを参照することは不可能だよ

917 :デフォルトの名無しさん:2015/09/02(水) 23:07:09.38 ID:LGUC5Icc.net
zipで展開してxmlを読み込んでパースしてセルの値を取得するしかないね。

918 :デフォルトの名無しさん:2015/09/02(水) 23:25:07.33 ID:U41rngxq.net
ExecuteExcel4Macroで、対応できるようですね。ただ古いエクセルは使わないほうがいいんでしょうか。

919 :デフォルトの名無しさん:2015/09/03(木) 00:35:37.99 ID:ZIG14SBg.net
フリーで EXCEL ブックにアクセスするツールってあったよね。
そう言うのじゃダメなん?

920 :デフォルトの名無しさん:2015/09/03(木) 01:10:03.90 ID:7u8Pd6k9.net
>>915
直接操作はできないけど
ワークセルを介すればどうでしょうか?

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

速度とかは知らない
ちなみに 自分は EXCEL2013

921 :デフォルトの名無しさん:2015/09/03(木) 01:13:49.44 ID:S2+8lDDQ.net
For Each wname In Windowsですが 、これまで問題なかったのに
最近全部まわらず途中で終わってしまうことが増えました。
windows update でofficeが少し変わったからだと思いますが、
対処方法はありますか?
win7 X64です。

922 :デフォルトの名無しさん:2015/09/03(木) 01:46:10.33 ID:5AuTPVsb.net
>>920
依頼者じゃないけどやってみたら動いた  そんな手があったのかw

それがいけるならこれでいいじゃん!
Debug.Print Evaluate("='D:\TEST\[TEST1.xlm]Sheet1'!A5")
と思ったが2023エラーがでちゃうね アララ 残念

923 :900:2015/09/03(木) 02:08:19.63 ID:7u8Pd6k9.net
>>922
じつはこれ
EXCEL97時代にブック壊れてEXCELでオープン出来なくなった時
データサルベージに使った手法なんですよね
全ての破損に対応できるとは限らないけど
これで かなりのデータ復旧できたのよ
なつかしす

924 :デフォルトの名無しさん:2015/09/03(木) 21:18:58.57 ID:gI7qOxsQ.net
たとえば連続したセルに「Font」「Color」「RGB(255,0,0)」と入っていて、
それを直接的に利用してCells(1,1).Font.Color = RGB(255,0,0)という設定をする、みたいな方法はありませんか?

if文やSelection文を使って処理を分岐するという方法ですと全てのメンバーを網羅するのが大変なので、
あくまでマクロ側は「どのメンバーを」「どう弄るのか」を知らずに盲目的に受け取った文字列をメンバーや引数として処理するという方法が欲しいのですが、
VBAだとこういう処理は難しいのでしょうか?

925 :デフォルトの名無しさん:2015/09/03(木) 21:40:39.13 ID:8gUdvpRg.net
>>924
無理じゃないかなあ
その三つをつなぐドットやイコールは誰がどうやって指示するの?

926 :デフォルトの名無しさん:2015/09/03(木) 22:07:28.37 ID:5AuTPVsb.net
>>924
無理です
間接的に利用してください

927 :デフォルトの名無しさん:2015/09/03(木) 22:45:46.77 ID:WEVKW98e.net
演算子の問題が解決したとして、テキストファイルに書き出してVBAプロジェクトオブジェクトからインポート

928 :デフォルトの名無しさん:2015/09/03(木) 23:06:04.80 ID:PAfGEiTT.net
>>924
望みがありそうな方法としては

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

くらいか

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

代替案も思い付かず…

930 :デフォルトの名無しさん:2015/09/04(金) 00:05:54.74 ID:9qkOqmzN4
普通にできた気がするが。
>>929でもあるように、VBAの書き換えが一つ。
定型文しか入れないなら、条件判定して解析すればいい

せれくと cells(i,1)
fontなら fontなんちゃら




みたいに。
セルを一つずつ参照してパワポみたいな動作するの作った覚えがある、あれどこやったかな

931 :デフォルトの名無しさん:2015/09/04(金) 00:45:19.08 ID:Ehviu2S7.net
>>924
「VBAだと」って言うけど、そういうことができる言語ってあるの?

932 :デフォルトの名無しさん:2015/09/04(金) 01:33:24.64 ID:ExFTHLbB.net
いわゆるEvalが実装されてる言語なら出来そうだけど、ExcelのVBAでは無理だな
EvaluateとCallByNameで何とか出来るかもしれんが、汎用的には無理だと思う

933 :デフォルトの名無しさん:2015/09/04(金) 02:18:22.69 ID:PCIPeDCd.net
>>924
プロシージャを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

上はただつなげてるだけだから
セル内容チェックを十分しないと コンパイルエラーになる可能性が大きいけど

934 :デフォルトの名無しさん:2015/09/04(金) 05:42:14.15 ID:HtSUMw5S.net
>>925-933
回答ありがとうございます。
とりあえずApplication.Runで何とか出来ないか試してみたいと思います。

935 :デフォルトの名無しさん:2015/09/04(金) 12:34:46.44 ID:5E7pI8p5.net
使うAPI名が決まってるなら名前と関数の対のテーブルで擬似的に呼び出すって方法が
つっても関数がファーストクラスじゃないんだよねえ
VBやめてjavascriptで実装してVBAから渡すとか・・・

936 :デフォルトの名無しさん:2015/09/04(金) 13:28:33.31 ID:5E7pI8p5.net
つーか>>933でいいじゃん
面白いな

937 :デフォルトの名無しさん:2015/09/04(金) 19:20:11.14 ID:bKoadVKQ.net
誰か開いてて読み取り専用の場合はworkbook_openに書いたマクロを無効にして、そのブックをダブルクリックで開きたいのですが、どのように書いたらいいですか?

938 :デフォルトの名無しさん:2015/09/04(金) 19:41:44.85 ID:PCIPeDCd.net
>>937
読み取り専用で開いたかどうかは
ThisWorkbook.ReadOnly
で判定できるよ

939 :デフォルトの名無しさん:2015/09/04(金) 20:18:28.18 ID:bKoadVKQ.net
>>938
そうなんですよね。ブックオープンが走る前にそのプロパティーで判別できたらいいんですけど

940 :デフォルトの名無しさん:2015/09/04(金) 20:26:04.68 ID:PCIPeDCd.net
>>939
ブックオープンの最初で判定させればいいだけでは?
ブックオープンが動作した所で 一番最初に判定して EXIT SUB とかすれば
本来の処理が実行されないので 問題なくね

941 :デフォルトの名無しさん:2015/09/04(金) 20:27:29.34 ID:ntJe9Vs/.net
>>939
オープンして読み取り専用なら何もせず閉じるコードを
Workbook_openの最初に追加すればいいじゃないか

942 :デフォルトの名無しさん:2015/09/04(金) 21:14:08.24 ID:bKoadVKQ.net
そのとおりですね。排他処理がめんどくさい

943 :デフォルトの名無しさん:2015/09/04(金) 21:38:02.04 ID:A59C16Ao.net
>>942
排他処理は Excel がやるだろ
何が難しいんだ?

944 :デフォルトの名無しさん:2015/09/04(金) 21:49:51.19 ID:bKoadVKQ.net
>>943
その排他処理って読み取り専用になることをいってますか?
ファイルサーバで複数人が触るブックで、どうデータを入力すとか、順序とか考えるとこんがらがってきた

945 :デフォルトの名無しさん:2015/09/04(金) 22:30:27.78 ID:HtSUMw5S.net
根本的な話として複数人が同時に触るんならエクセルファイルじゃなくてアクセスにすべきじゃねぇかな。
エクセルって基本的に電卓の亜種であってデータベースソフトじゃないし。

946 :デフォルトの名無しさん:2015/09/04(金) 22:53:10.52 ID:9qkOqmzN4
そもそも読み取り専用を開く前にコード走らせることってできるんかいな

947 :デフォルトの名無しさん:2015/09/04(金) 22:44:40.65 ID:uxFbuttR.net
>>944
そりゃ運用の問題だ
とりあえずブックの共有でいいんじゃね
マクロは知らんけど

948 :デフォルトの名無しさん:2015/09/04(金) 23:28:13.59 ID:bKoadVKQ.net
>>947
運用も言うこと聞くようなおっさん達じゃないんだよなー。文句だけ言う奴らで

949 :デフォルトの名無しさん:2015/09/04(金) 23:40:49.49 ID:9qkOqmzN4
テキストでもなんでもいいから外部書き出しにして、データ読み書きにすればいいよ
データ更新をちゃんと織り込んで名

950 :デフォルトの名無しさん:2015/09/04(金) 23:42:32.76 ID:uxFbuttR.net
お前んところの事情なんて語られてもしょうがない

951 :デフォルトの名無しさん:2015/09/04(金) 23:43:00.47 ID:VusSFEWo.net
そりゃまぁ、2ちゃんねるで質問して喜んでるような輩に運用任せてる時点でお察し

952 :デフォルトの名無しさん:2015/09/04(金) 23:52:57.51 ID:TmLEs7On.net
ここでの運用は特定の人たちを指す言葉ではなく、活用とか行動とか言う意味

953 :デフォルトの名無しさん:2015/09/05(土) 00:18:44.48 ID:FRI4E2ZT.net
>>951
どこで喜んでるんだよw

954 :デフォルトの名無しさん:2015/09/05(土) 02:42:20.04 ID:CmBaCyqy.net
>>945が正論かな。

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

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

中にはOpenOfficeでアクセスしようとする奴もいるし。

955 :デフォルトの名無しさん:2015/09/05(土) 03:14:44.10 ID:3MtyEdK2.net
SharePointってあったけど、あれはどうなん?

956 :デフォルトの名無しさん:2015/09/05(土) 13:16:01.25 ID:x7KkU3nJ.net
ショートカットファイルがたくさんありますが
今回、そのドライブレターを変えたのと、半分くらいはフォルダを作ってそれに入れたのでリンクが少しだけ規則的にかわりました。

FileSystemObjectというのを知っていままで使ったことがありますが
このFileSystemObjectを使ってショートカットファイルのリンク先を変更するには
どうすればいいでしょうか?

957 :デフォルトの名無しさん:2015/09/05(土) 14:25:00.38 ID:ZKXW4+L0.net
>>956
スレ違いでは?
Excelに全く関係ないと思うんだが

958 :デフォルトの名無しさん:2015/09/05(土) 14:31:39.79 ID:Hu04yitT.net
漠然とした質問なんですが・・・

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

ボタン押すだけで特定の業務を自動化できるのはいいんだがいかんせんボタンが多すぎ
こういう場合はどうしたはいいんだ?
何か定石というかアイディアないですか?

959 :デフォルトの名無しさん:2015/09/05(土) 14:37:21.77 ID:ZKXW4+L0.net
>>958
君はさらにスレ違い
もはやVBAの話題ですらない

960 :デフォルトの名無しさん:2015/09/05(土) 14:42:39.88 ID:L+jn/gme.net
>>958
同一の動作をするボタンをまとめて、組み合わせで特定の作業が出来る様にするとか、
動作をリストボックス表示にしてリストから選択した作業だけ実行する様にするとか。

961 :デフォルトの名無しさん:2015/09/05(土) 14:51:35.90 ID:wnxJPoz8.net
>>956
Office TANAKA - 番外編[lnkファイルのリンク先を取得する]
http://officetanaka.net/other/extra/tips12.htm

962 :デフォルトの名無しさん:2015/09/05(土) 14:59:22.82 ID:84U+9ZQ6.net
>>958
ボタンをセルと同サイズにして縦に並べて、横に進捗状況をプロットする様にしてる
順番に押していかないとエラーで止まる様にしたりもする

963 :デフォルトの名無しさん:2015/09/05(土) 15:01:26.21 ID:x7KkU3nJ.net
>>958
フォームに「マルチページ」のコントロールを貼り付けて
ページごとに似通った機能をまとめたまえ。

964 :デフォルトの名無しさん:2015/09/05(土) 15:17:17.15 ID:x7KkU3nJ.net
>>961
謝謝!

965 :デフォルトの名無しさん:2015/09/05(土) 15:47:59.73 ID:x7KkU3nJ.net
LnkFile.TargetPathは、読み取りはできても書き込みはできないようなのですが。

966 :デフォルトの名無しさん:2015/09/05(土) 15:49:08.28 ID:x7KkU3nJ.net
ところで
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のクラス(?)のメンバをオブジェクトブラウザで見れるようにする方法はありますか?

967 :デフォルトの名無しさん:2015/09/05(土) 16:35:27.01 ID:x7KkU3nJ.net
>>965
LnkFile.Save
とすればできるよ

968 :デフォルトの名無しさん:2015/09/05(土) 16:37:12.71 ID:x7KkU3nJ.net
>>967
おお、すばらしい!!!

969 :デフォルトの名無しさん:2015/09/05(土) 16:52:31.34 ID:x7KkU3nJ.net
>>966
Window Script Host Object Modelを参照設定したまえ

970 :デフォルトの名無しさん:2015/09/05(土) 18:53:28.77 ID:McuB2/kQ.net
>>962
> 順番に押していかないとエラーで止まる様にしたりもする
俺は押せないボタンが事前にわかってるなら Enabled = False にするな

971 :デフォルトの名無しさん:2015/09/06(日) 06:51:37.28 ID:uAyrTmIH.net
基本的なことで、はまっています。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)の状態。なせでしょう。
(フレームに入れてみても、それだけだと複数チェックがはいってしまう。)

972 :デフォルトの名無しさん:2015/09/06(日) 09:02:44.39 ID:wPdoKzWW.net
>>971
check1クリックイベントハンドラー内に入った時点でcheck1の値は反転しているので、自身の値は設定不要。
そしてcheckの値を反転させると、それぞれのクリックイベントが発生する。

この辺りの挙動を整理して実装しないと、変なループが発生しますよ。
無限ループとか

973 :デフォルトの名無しさん:2015/09/06(日) 09:11:51.51 ID:Rqv/7r06.net
「どれかひとつを選択」ならオプションボタンがいいよ。

974 :デフォルトの名無しさん:2015/09/06(日) 09:15:40.01 ID:pMKgJlgc.net
クリックされたときに他のチェックをはずす処理が必要なのは自身の値がtrueになったときだけだよね

if check1.value = falseのときはexitするようにすればいいんじゃない?

975 :デフォルトの名無しさん:2015/09/06(日) 09:34:13.01 ID:7OdEXCxT.net
>>973
オプションボタンだとオフにできないんじゃない?

>>971
チェックボックス+排他
で山ほどサンプルあるでしょ

976 :デフォルトの名無しさん:2015/09/06(日) 10:31:59.79 ID:AH5FZdvj.net
CreateObjectじゃなくGetObjectでWordやOutlookを開きたいんです。
なぜならすでに開いてたら二重で開くことになるから。
でももしもまだそれを開いてなかったらエラーがでてえらいこっちゃとなります。
これは定跡的にはどうやって対策しますか?

977 :デフォルトの名無しさん:2015/09/06(日) 11:10:34.16 ID:8yRgk1H4.net
チェックボックスで排他とか変なUI作るなよ

978 :948:2015/09/06(日) 11:41:16.35 ID:3umPcbKU.net
みなさん、アドバイスありがとうございました。
恥ずかしながら、チェックボックスとオプションボタンをよく理解しておりませんでした。
オプションボタンで、解決しました。いろいろ、勉強になりました。どうもです。

979 :デフォルトの名無しさん:2015/09/06(日) 16:33:37.25 ID:tXhFn+ho.net
>>976
GetObjectでエラーになったらCreateObjectすれば

980 :デフォルトの名無しさん:2015/09/06(日) 16:51:05.77 ID:Ir/JiN9v.net
>>977
でもマジで作るやついるんだよ
最初見た時はマジで意味わからんかった
なんか(間違った)独自性を出したかったんだろうか...

981 :デフォルトの名無しさん:2015/09/06(日) 17:09:04.33 ID:kcKZyiZs.net
ラジオボタンを知らなかったんだろ

982 :デフォルトの名無しさん:2015/09/06(日) 17:10:50.93 ID:tXhFn+ho.net
>>977 >>980
いやWindowsServerの役割と機能とか見たことない?
チェックボックスはただのOn/Offスイッチ的な側面もあるんだよ
なぜか他に適当なコントロールも無いし

983 :デフォルトの名無しさん:2015/09/06(日) 17:54:40.03 ID:Ir/JiN9v.net
>>982
> いやWindowsServerの役割と機能とか見たことない?

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

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

つか、その機能しかないけど?

984 :デフォルトの名無しさん:2015/09/06(日) 18:02:14.05 ID:AH5FZdvj.net
>>979
いやエラーになる前にCreateObjectしたいのですが。
そのためのif文でなにを書けばいいのでしょう?

985 :デフォルトの名無しさん:2015/09/06(日) 18:33:55.51 ID:JKlgepEb.net
>>984
WordやOutlookが開いているかどうかはどうやって調べるつもり?
その為のGetObjectじゃないか とおもうが

GetObject成功・・・・開いてた →取得したオブジェクトを利用
GetObject失敗・・・・開いてない→CreateObjectしてそれを使用

986 :デフォルトの名無しさん:2015/09/06(日) 18:39:56.86 ID:tXhFn+ho.net
>>983
スイッチとして扱うなら排他でも何も違和感ないでしょって話

987 :デフォルトの名無しさん:2015/09/06(日) 19:09:18.56 ID:Ir/JiN9v.net
>>986
お前はそうかもしれないけど大多数の人はそうじゃない
反論するなら有名どころのソフトで排他になってる例を 10個ぐらい挙げてくれ

988 :デフォルトの名無しさん:2015/09/06(日) 19:12:40.91 ID:JSf18249.net
>>987
それは無茶言うもんやろ。
無茶なこと言うて相手黙らせたら満足するんかい。
しょーもないやっちゃな。

989 :デフォルトの名無しさん:2015/09/06(日) 19:19:29.08 ID:zfcEEDe4g
>大多数の人はそうじゃない

お前の言う大多数ってお前以外に誰がいるのかまず10人あげてみ

990 :デフォルトの名無しさん:2015/09/06(日) 19:13:34.11 ID:JSf18249.net
しょーもないやつやな言うとんねん。
ホンマしょーもないわ、かー。

991 :デフォルトの名無しさん:2015/09/06(日) 19:40:43.00 ID:Ir/JiN9v.net
>>988
違和感あるから誰もそんな UI にしない
ないなら、そう言う UI がいくらでもあるはず
しょうもないとか言う負け犬の遠吠えは恥ずかしいだけ

992 :デフォルトの名無しさん:2015/09/06(日) 19:44:17.84 ID:JSf18249.net
>>991
いくらでもあるんやったら10個ぐらい挙げてくれ
お前が言うたんやからないくらでもあるんやろ
はよしてや

993 :デフォルトの名無しさん:2015/09/06(日) 19:46:11.11 ID:JSf18249.net
有名なやつやで
有名なやつ10個や
いくらでもある言うたんやから簡単やろ
はよしてや

994 :デフォルトの名無しさん:2015/09/06(日) 20:26:59.64 ID:8yRgk1H4.net
独立オプションの為のUIがチェックボックス
排他オプションの為のUIがオプションボタン
あえてそのセオリーに逆らう必然性は全くない

995 :デフォルトの名無しさん:2015/09/06(日) 20:27:13.49 ID:Ir/JiN9v.net
>>986 の言う通り排他でも何も違和感) ないなら、そう言う UI がいくらでもあるはず

あるなんてどこに書いてあるんだ?
まさか、「はず」の意味すら理解できないのか?

996 :デフォルトの名無しさん:2015/09/06(日) 20:33:21.40 ID:JSf18249.net
>>995
いくらでもあるはずや言うたやんか。
あるんやったら言うてみい。
言えへんのやろ?せやったら他の人にも言うたらあかんわ。
それを無茶や言うとんねん。無茶言うたらあかん。
無茶だけはやめときい。あんたのためやで。
排他でもなんら違和感ない。それでええな?

997 :デフォルトの名無しさん:2015/09/06(日) 20:40:24.60 ID:Ir/JiN9v.net
>>996
わざわざかっこ付きで書いてあるんだからちゃんと読め
仮定法わからないならしょうがないが w

998 :デフォルトの名無しさん:2015/09/06(日) 20:48:27.41 ID:JSf18249.net
>>997
そんなんどうでもええ。
無茶だけは言うたらあかん。
チェックボックスで排他はええ。

999 :デフォルトの名無しさん:2015/09/06(日) 21:12:35.12 ID:Ir/JiN9v.net
理解できなかったのか... w

1000 :デフォルトの名無しさん:2015/09/06(日) 21:16:58.49 ID:JSf18249.net
>>999
どうでもええとこにこだわりもてへん言うてんねん。
本筋から外れとるやろ。仮定法の話違うかったやろ。
本筋見失ってどうすんねんな。国語のスレちゃう。Excel VBAのスレや!!

1001 :デフォルトの名無しさん:2015/09/06(日) 21:29:51.58 ID:NotYgcdX.net
VBA関係ないから排他的なチェックボックスの話題はおしまい

1002 :デフォルトの名無しさん:2015/09/06(日) 22:51:05.31 ID:TqvVUxNb.net
>>1000
そのうざい似非関西弁口語口調目障りだから止めろ

1003 :デフォルトの名無しさん:2015/09/06(日) 22:54:27.27 ID:JSf18249.net
>>1002
このたびは不快な思いをさせてしまい誠にすんまへんでした。

1004 :デフォルトの名無しさん:2015/09/07(月) 00:20:37.43 ID:cu3gW1D3.net
すんまへんでんねんまんねん

1005 :デフォルトの名無しさん:2015/09/07(月) 06:19:18.31 ID:iIih6qgJ.net
排他のチェックボックス作るような奴はおかしい奴ってことがはっきりしたな

1006 :デフォルトの名無しさん:2015/09/07(月) 07:17:25.51 ID:o9/XMBwE.net
次スレは何処?

1007 :デフォルトの名無しさん:2015/09/07(月) 07:55:12.25 ID:7q49S6cJ.net
>>1006
ここ?
Excel VBA 質問スレ Part37 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1433920729/

1008 :デフォルトの名無しさん:2015/09/07(月) 13:54:06.26 ID:qNXpHtIR.net
>>1007
そこでいいの?

1009 :デフォルトの名無しさん:2015/09/07(月) 14:07:41.21 ID:qNXpHtIR.net
じゃー梅

1010 :デフォルトの名無しさん:2015/09/07(月) 19:03:09.19 ID:E2JS6OsF.net
>>1006-1008
そこは勝手に改悪したテンプレを盾にしてスレチだなんだと五月蝿いのが居るからダメ

本来の次スレはこっちに立てた
http://peace.2ch.net/test/read.cgi/tech/1441619979/

1011 :デフォルトの名無しさん:2015/09/07(月) 22:43:17.03 ID:EWpXgtHr.net
>>1010


では埋めだな

1012 :デフォルトの名無しさん:2015/09/07(月) 23:45:23.23 ID:nzOhKJqK.net
>>1010
乙です

1013 :デフォルトの名無しさん:2015/09/08(火) 00:11:02.38 ID:oVeubNzq.net
ゆっくり進行スレなのに埋める意味があるのかな

1014 :デフォルトの名無しさん:2015/09/08(火) 00:18:05.36 ID:knpqgMY3.net
980過ぎた翌日に自動的に落ちるシステムだから埋めても埋めなくても同じ

1015 :デフォルトの名無しさん:2015/09/08(火) 06:41:21.95 ID:ExO7c6Yl.net
うめしばー

1016 :デフォルトの名無しさん:2015/09/08(火) 06:55:07.33 ID:u1cdNMtc.net
Debug.Print "埋め"

1017 :デフォルトの名無しさん:2015/09/08(火) 16:10:27.39 ID:GKBL/Ew7.net
うめてんてー

1018 :デフォルトの名無しさん:2015/09/08(火) 18:21:28.19 ID:knpqgMY3.net
Hello 埋め world

1019 :デフォルトの名無しさん:2015/09/08(火) 18:38:32.25 ID:m7aBfM8f.net
sub()

1020 :デフォルトの名無しさん:2015/09/08(火) 22:10:12.77 ID:oGp/KliX.net
次スレ
Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/

1021 :デフォルトの名無しさん:2015/09/09(水) 02:15:08.16 ID:uHaCyZBl.net
Exit Sub

1022 :デフォルトの名無しさん:2015/09/09(水) 02:31:10.17 ID:qFTQoAT6.net
980過ぎた翌日に自動的に落ちるシステムの喪失

1023 :デフォルトの名無しさん:2015/09/09(水) 06:14:26.58 ID:ys1D99oR.net
うめちゃん

1024 :デフォルトの名無しさん:2015/09/09(水) 06:50:57.03 ID:aBvbVIMR.net
Excel VBA 質問スレ Part38 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/

1025 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1025
277 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★