dupchecked22222../cacpdo0/2chb/190/41/tech142084119021741261525 Excel VBA 質問スレ Part37 [転載禁止]©2ch.net ◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Excel VBA 質問スレ Part37 [転載禁止]©2ch.net ->画像>6枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1420841190/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

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

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

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

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
ここプログラマ:非プログラマは1:2位かな?

6 :デフォルトの名無しさん:2015/04/01(水) 21:50:18.58 ID:by1Nk6ea
>>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+
Sub Test1()から呼び出したいSub Test2()があるんだけど
このTest2というのは必ずTest1の中からしか呼び出されないから
Test1とTest2を並列に並べる感じじゃなくて
Test1の内部にTest2に位置させる構造みたいにすることはできないですか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

29 :デフォルトの名無しさん:2015/04/15(水) 12:45:03.10 ID:s88AraXc
12桁の数字で1の位がモジュラス11ウエイト2〜7のチェックデジットに
なっていて、そのデータが正しいかどうか調べるコードを書きましたが、
@の照合が機能しません。ご指導よろしくお願いします。

Private Sub Worksheet_Change(ByVal Target As Range)

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

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

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

Next

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

Cells(2, 1) = checkdigit_m11

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

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


End Sub

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



カルチャーブレーンの

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

65 :デフォルトの名無しさん:2015/05/17(日) 16:50:07.35 ID:nnFlbvVf
>>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
なぁ、ぼちぼち前スレに移動してくれないか?

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

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

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

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

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

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

72 :デフォルトの名無しさん:2015/05/30(土) 00:10:11.41 ID:uAz+OfzT
VLOOKUPの列入力で質問です。

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

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

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

お助け下さい。

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

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

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

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

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

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

Dim ap As Application
Dim wb As Workbook
Set ap = New Excel.Application
ap.Visible = True
Set wb = ap.Workbooks.Open("w:\book1.xlsm")
wb.Application.EnableEvents = False
こんな感じでテストしてみた

77 :75:2015/06/03(水) 14:31:44.71 ID:fXq4Zk1N
>>76
Resありがとう。
確かにExcel2010で複数のExcelファイルを同じWindowで開いたら、
1個のブックでApplication.EnableEvents = False とすれば、
全てのブックのイベントが停止すると思う。

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

なお、Excel2010で別のWindowで開く方法は、
新たにExcelブックを立上げ、そこにExcelファイルをDrug&Dropするのです。
Excel2013はDefaultで別のWindowで立ち上がりますが、
2010や2007は同じWindowで立ち上がります。

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

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

count = count + 1

Loop Until count = count_end
end sub

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Dim i as Integer = 5

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

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

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

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

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

Excel VBA 質問スレ Part37 [転載禁止]©2ch.net ->画像>6枚

コンパイルエラー

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

119 :デフォルトの名無しさん:2015/06/14(日) 12:46:31.01 ID:inpQDwIg
文字列を分割するユーザー定義関数を作ろうとしているのですが、
下記のコードだと関数の結果がvalueになってしまいます。
途中のMsbBoxでは思い通りの結果が表示されるのですが、
何を直せばよいか教えてください
よろしくお願いします。

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

Dim 分割文字列 As Variant

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

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

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

End Function

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

AnySplit = Spstr(PutNum)
End Function

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

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

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

str = TargetRange(1).Value

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

Spstr = Split(str, SplitStr)

AnySplit = Spstr(PutNum - 1)
End Function

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

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

124 :デフォルトの名無しさん:2015/06/14(日) 16:28:13.01 ID:aLL1Dt0J
糞テンプレ捏造の重複スレより転載
>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
>>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
なんかバグ見つけたので書き直しました。
もう見てないかもしれませんがどうぞ。

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
>>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
>>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
>>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
zipの中身(csvのファイルが百個超入ってる)を直接閲覧する方法ってないかな。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

144 :デフォルトの名無しさん:2015/06/21(日) 12:05:02.10 ID:QrPate9Z
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
>>144
5. DoEvents

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

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

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

148 :デフォルトの名無しさん:2015/06/21(日) 14:33:38.20 ID:c2TFF1xN
2シートのセルに書かれた時刻を比較し、同時刻かどうかを判別させたいです。

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

これで一致判別ができません。何故かtime1=time2=9:30:00の時だけは一致判別できます…

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

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

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

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

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

151 :デフォルトの名無しさん:2015/06/21(日) 15:18:00.34 ID:KB1pzFAk
>>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
>>150
>>151

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

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

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

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

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

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

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

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

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

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

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

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

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

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

誰だ買ったのは?

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


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

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

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

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

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

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

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

170 :デフォルトの名無しさん:2015/06/23(火) 18:14:50.22 ID:WNvMOvej
直値で検索することはできる。
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
時刻入るとたしかにうまくいかないときあるな
Excel側とVBAでシリアル値の内部フォーマットに違いあるのかもしれん

172 :デフォルトの名無しさん:2015/06/23(火) 19:25:51.74 ID:vVXy/YjI
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
浮動小数だから = で比較するなんて

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

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

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

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

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

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

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

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

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

シリアル値で誤差が出る例
同じデータを入力したつもりなのに、比較すると違っている
Excel VBA 質問スレ Part37 [転載禁止]©2ch.net ->画像>6枚

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

196 :デフォルトの名無しさん:2015/06/25(木) 13:46:08.46 ID:/IyRWZfA
>>191
> スマホでアプリ作るには
> どういう開発環境が必要ですか?
Visual Studio 2015があれば、iOSアプリもAndroidアプリも作れるよ。
http://blogs.msdn.com/b/visualstudio_jpn/archive/2015/06/23/visual-studio-2015-and-windows-10-countdown-03.aspx
やったことないけど、多分ひな形のプロジェクトビルドしたら、Hello, World!的なアプリができるんじゃないかな。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Type MyRecord
   [...]
End Type

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

271 :デフォルトの名無しさん:2015/06/28(日) 00:45:52.22 ID:ljCE11NJ
>>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
何の議論をしたかったのかしらんが、アセンブラやCのレベルでの参照と
VBA(やVBやC#)での参照型とを同じに語るとか議論にならん

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

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

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

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

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

一体何がしたいんだ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

これまでのあらすじ

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

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

次回予告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

302 :デフォルトの名無しさん:2015/06/28(日) 09:46:55.00 ID:SnEMphd5
>>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
>>297
ああ、.NET Framework だったな
で? それがどうかしたのか?
VBA に関係ないことには変わりないと思うけど?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

316 :デフォルトの名無しさん:2015/06/28(日) 11:29:33.84 ID:SnEMphd5
>>314
Integerの配列の中身はSafeArrayCreate関数で領域確保されるけど、MSDNでは
allocates and initializes the data for the array
と書かれているから、ヒープに取られるんじゃないですかね?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221234(v=vs.85).aspx

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

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

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

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

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

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

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

は?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



気持ち悪いし

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

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

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

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

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

引数=Range
返り値=String

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

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

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

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

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

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

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

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

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

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

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

349 :デフォルトの名無しさん:2015/06/28(日) 22:53:06.94 ID:dOcFp/SG
>>345
Excel VBA 質問スレ Part37 [転載禁止]©2ch.net ->画像>6枚

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

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

352 :デフォルトの名無しさん:2015/06/28(日) 23:23:25.78 ID:z6q4unEs
>>350
ほらよ

require 'win32ole'
def mode(range)
range.Value.flatten.group_by{|x|x}.max_by{|k,v|v.size}.first
end
app = WIN32OLE.connect('Excel.Application')
mode(app.Selection)

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

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

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

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

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

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

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

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

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

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

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

362 :デフォルトの名無しさん:2015/06/29(月) 08:56:57.99 ID:s7kCM2zI
ちょっと検索した感じじゃ特に定義された用語じゃなさそうだね。「インスタンス」
VBAもしープラプラも全面オブジェクト指向してないから、これの最初の段落のことしか言えなそう。
http://sp.e-words.jp/w/%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9.html
Wikipediaの解説の方は「問題点あり」になってる。

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

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

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

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

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

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

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

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

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

370 :デフォルトの名無しさん:2015/06/29(月) 21:42:09.79 ID:/k/OkC/p
>>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
話は変わるけど今何の話してるの?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

失礼致しました。。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

409 :デフォルトの名無しさん:2015/07/02(木) 20:19:18.42 ID:RENWNoB4
シート毎(シート名は対象月)に翌月10日を指定し、指定日以降に対象シートを開いたら処理A を行う 
という動きをさせたいのですが、以下の式では、1月以降を指定月日としたシートを開くと、処理が実行されてしまいます。
(年を見ていないので当然ですが・・・)
これを回避するには、どのようにすればよいのでしょうか?

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

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

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

If MyDate <= Date Then
処理A
End If
End Sub

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

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

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

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

412 :デフォルトの名無しさん:2015/07/02(木) 20:50:31.63 ID:9qb5cWlQ
>>409
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim oMonth As Byte, oYear As Integer, oDate As Date

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

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

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

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

ThisWorkbookに貼り付け。

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

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

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

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

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

12月度が反応しちゃうけど「いつまで反応し続けるか」が条件にないし、年度管理しないとそんなもんかなぁ。

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

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

にしといて。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


はっ!!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

助けて

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

set ws = thisworkbook.worksheet(sheet1.name)

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

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

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

とっくに解決策でてるよ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

と、

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

例えば
●●●?●●●

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

顧客名簿があります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dim Person(100) as PersonalData

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://home.att.ne.jp/zeta/gen/excel/c04p41.htm

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

CreateObject("Word.Application")を使うと新たに新規文書としてそれを作ってしまう。
いま現状で開いているWord文書の末尾に追加したいのですが

565 :564:2015/07/17(金) 11:11:01.99 ID:oIBga42r
できません。
助けてください!

GetObject("Word.Application")と、「GET」のほうですでに開いてるWordを取得できないのですか?

566 :デフォルトの名無しさん:2015/07/17(金) 12:04:31.71 ID:oIBga42r
ひょっとして
Set wd = GetObject(, "Word.Application")
として
wd.ActiveDocument.Content.InsertAfter ・・・
みたいにすればokか?

567 :デフォルトの名無しさん:2015/07/17(金) 12:06:19.86 ID:oIBga42r
↑そのようでした。

ところでWordがまだ開かれてなければCreateObjectを
Wordがすでに開かれていたらGetObjectを使いたいのですが
その場合分けのif文はどう書けばいいですか?

568 :デフォルトの名無しさん:2015/07/17(金) 13:20:15.48 ID:id5On6lD
>>567
ワードのことは知らんけどエクセルの場合だと
開かれてるワークブックはそのマクロを実行しているブック自身も含めて
Workbooksコレクションに入ってるから
Workbooks.countが2以上なら
自分自身以外のブックが既に開かれている事がわかる
ワードにもなんかそんなコレクションがあるんじゃないの?

569 :デフォルトの名無しさん:2015/07/17(金) 13:57:42.57 ID:oIBga42r
>>568
開かれてなかったらDocumentsのコレクションは存在しないし
そもそもWordを参照するためのオブジェクトすら存在しないからできないんだよ。

570 :デフォルトの名無しさん:2015/07/17(金) 17:41:07.98 ID:oIBga42r
どなたかこのわたしのファンダメンタル(fundamental)な疑問にお答えできないでしょうか?

571 :デフォルトの名無しさん:2015/07/17(金) 19:45:50.08 ID:/l5uRIt/
ググれ

572 :デフォルトの名無しさん:2015/07/17(金) 20:33:19.18 ID:syB7WThG
>>567
> Wordがすでに開かれていたらGetObjectを使いたいのですが
逆じゃね、GetObjectしないでどうやって既に開かれてるか知るつもりだよ。

573 :デフォルトの名無しさん:2015/07/17(金) 20:37:41.79 ID:oIBga42r
>>572
開かれていない状態でGetObjecをするとエラーがでてしまうんだよ

574 :デフォルトの名無しさん:2015/07/17(金) 20:39:06.86 ID:rBy1sMGX
オンエラー

575 :デフォルトの名無しさん:2015/07/17(金) 20:47:16.88 ID:oIBga42r
リズームネクスト

576 :デフォルトの名無しさん:2015/07/17(金) 21:34:24.03 ID:/wl7lj/J
Resume Nextの意味 ・・・ 履歴書たらい回し

577 :デフォルトの名無しさん:2015/07/18(土) 01:03:10.73 ID:vrPIhyd3
コンボボックスを2行以上にするって、やっぱ無理でしょうか?
何がしたいかというと、ワードやOutlookのクイックパーツみたいなのを
作れればと便利かなと思ったのですが

他にはフォームにテキストボックスをずらりと並べて
ダブルクリックしたら選択中のセルに入力するとか・・・
くらいしか思いつかないです

578 :デフォルトの名無しさん:2015/07/18(土) 05:35:55.89 ID:T5F58RSl
>>577
クイックパーツと複数行のコンボボックスがどう関係してるのかさっぱりわからん

579 :デフォルトの名無しさん:2015/07/18(土) 13:43:18.39 ID:vrPIhyd3
クイックパーツのGUIがコンボボックスの各項目が複数行になったように見えるので、
コンボボックスの複数行が出来ればクイックパーツもどきが出来そう、という思いつきから
そういう発想になりました

朝からフォームにテキストボックス並べる方法で作ってみたところ、
イメージに近いものが出来たので、今はこれでいいかなと思ってます

580 :デフォルトの名無しさん:2015/07/19(日) 01:12:52.23 ID:yGfbtuav
下のサイトのコードで
Forループのカウンタ変数をループから抜けた後で値の比較に使ってますが、
Exit Forを使わずにForループを抜けた場合にカウンタ変数は最終値+Step値になる
というような事がVBAの仕様として決まってるんでしょうか?
それともたまたまそうなったから深く考えず記載してるだけでしょうか?
後者だとしたらちょっと気持ち悪いなぁ
http://www.moug.net/tech/exvba/0050065.html

581 :デフォルトの名無しさん:2015/07/19(日) 01:20:46.05 ID:rAxj5bhn
>>580
仕様かどうかは知らんけど経験則でそうなってるから俺も使ってる
少なくとも今後マイクロソフト側で変更しない限り
現行のものでは使えてるんだしそこまで気に病むことでもないと思う

582 :デフォルトの名無しさん:2015/07/19(日) 01:28:01.93 ID:Pqkg92al
>>580
正確なVBAの言語仕様はみたことないけど、仕様としてそうなると思っていいんじゃね
たまたまではなくて、ヘルプ等で動作みるとそうならないとおかしい
保証はないかもしれんが、それで問題になった事はないし、そこに変更入るとも思えん

昔のFor Nextのヘルプ、思いっきり嘘書いてた時代もあるけどなw

583 :デフォルトの名無しさん:2015/07/19(日) 01:29:58.29 ID:yGfbtuav
自分だったらこういう場合do loopに変えるから
何か根拠があってやってるのかと思った

584 :デフォルトの名無しさん:2015/07/19(日) 01:32:53.03 ID:yGfbtuav
>>581-582
結構いい加減な感じなのね
参考になりました

585 :デフォルトの名無しさん:2015/07/19(日) 01:38:37.71 ID:Pqkg92al
ああ、少なくとも2007のヘルプでも微妙な表現だな
For Nextは前判定するから、ループの最低実行回数は0回なんだが
あのヘルプの書き方だと後判定にしか読めん

昔は後判定でも誤動作しないように判断入れさせられたりしたなぁ

586 :デフォルトの名無しさん:2015/07/19(日) 02:12:32.63 ID:OOt2nbBY
ループの外でカウンタ参照なんてバグの元
普通はDo Loopなど変数の変化が確実に制御できる方法で置き換えるし、
あとで必用になる値ならリミットやステップは変数に入れておくべき
ドキュメント外の経験則なんて不確実な物に頼るのは三流以下

587 :デフォルトの名無しさん:2015/07/19(日) 03:54:08.71 ID:yGfbtuav
引継ぎのソースとかでこんな事やられてたら確かにぎょっとするな
つまり信用に関わるってこった

588 :デフォルトの名無しさん:2015/07/19(日) 06:01:07.14 ID:mDVOiq6Z
お、この辺の意見は皆一致してるな
動作に確証が持てるならそのままでもいいんじゃと
言い出す人もいるかと思ったのに

589 :デフォルトの名無しさん:2015/07/19(日) 06:08:32.17 ID:eGN6omT4
ドキュメントなんて当てにならんよ
間違いを放置していることも多々あるからな
俺は目の前の実装の動作を信じる派だ

590 :デフォルトの名無しさん:2015/07/19(日) 06:43:14.14 ID:Unt8HnGc
ループカウンタのスコープを意識してやってるなら無問題。
例えば5行10行の関数内でやるとかなら。

591 :デフォルトの名無しさん:2015/07/19(日) 08:09:39.14 ID:mDVOiq6Z
>>590
同意
例え正しい動作で動くとしてもスコープは意識しておかないと
煩雑になる可能性があるもんな

592 :デフォルトの名無しさん:2015/07/19(日) 08:40:06.43 ID:0azLbtwj
つまりカウンタ変数のスコープがループより広いのだからループ後は最終値+Step値になる
それが仕様というもの

つーかループ抜けたらカウンタ変数使うなって誰が考えたんだろうか
仕様をよく理解してないから、こんなバカセオリーが作られていく

593 :デフォルトの名無しさん:2015/07/19(日) 10:45:03.48 ID:gfc2emHi
>>580
どこかのヘルプかなんかでそう言う風な仕様って見たような気がする

594 :デフォルトの名無しさん:2015/07/19(日) 11:06:50.09 ID:OOt2nbBY
ループの終了判定には色々な方法があって、最後にもう1回Stepが足されるかどうかは処理系による
個人が趣味で書く「動けばいい」コードなら何やっても自由だけど、それを他人にも薦めるのは問題がある

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

もちろん仕様書にもミスはあるけど、ミスを完全になくすのは不可能だから、
そのミスがきちんと認知されていれば問題ない

595 :デフォルトの名無しさん:2015/07/19(日) 12:08:21.20 ID:4JrdJist
言ってることが中途半端
仕様書に書いてないものはダメと言いながら
仕様書のミスは認知されてればおkって
そんなのダブルスタンダードじゃん

だったらfor nextのカウンターの件だって
認知されてるんだからおkって話になっちゃうよ

596 :デフォルトの名無しさん:2015/07/19(日) 12:16:27.67 ID:OOt2nbBY
>>595
「書いてない(保証されない)、意図していない」

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

この違い、わかる?

597 :デフォルトの名無しさん:2015/07/19(日) 12:20:14.08 ID:gdmrFD6e
>>596
「書いてない、開発側が意図した正解はちゃんとある」
「間違ったことが書いてある、意図していない」

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

VBAのようなマイクロソフト一社が開発、実装をしている言語に処理系依存の動作はなく
実装が唯一の仕様になるんだよ。

599 :デフォルトの名無しさん:2015/07/19(日) 12:25:45.05 ID:r330jZtM
仕様書が絶対なら仮にミスだったとしても従わなければならないし、
読み手側が適宜修正を挟めるなら仕様書に書いてあっても実験して結果を確かめる必要性がある。

600 :デフォルトの名無しさん:2015/07/19(日) 12:29:40.33 ID:MA6NEEKT
>>599
お前みたいなのを馬鹿丸出しっていうんですよwww

601 :デフォルトの名無しさん:2015/07/19(日) 12:33:18.63 ID:WqS3++Gn
とりあえず公式にはStepはループの最後に足されると書いてあるんで、それを信じればいいと思うよ
https://msdn.microsoft.com/ja-jp/library/office/gg251601.aspx

でもStepの規定値が0とは知らんかった
てっきり1だと思ってた

602 :デフォルトの名無しさん:2015/07/19(日) 12:38:35.15 ID:gdmrFD6e
>>601
英語の方はoneってなってた。oneを0に訳すってどんだけ・・・
https://msdn.microsoft.com/en-us/library/office/gg251601.aspx

603 :デフォルトの名無しさん:2015/07/19(日) 12:41:03.89 ID:gdmrFD6e
つまりだ、ID:OOt2nbBY は仕様書を見てないし実験もしてないし
想像だけで突っ走ってたってこと?

604 :デフォルトの名無しさん:2015/07/19(日) 12:54:52.18 ID:eGN6omT4
プログラミング系のスレによくいるタイプだよ
何かあるごとに俺ポリシーを唯一絶対の法則のごとく書き散らす
「一番やっちゃいけない」とかお前は何様かと

605 :デフォルトの名無しさん:2015/07/19(日) 13:17:43.83 ID:UQShnz8E
確証が持てない、不安がある、ならより確実な手段で実装するってのは経験から得た教訓。
今回みたいな場合なら、こんな議論じみたことするの面倒だから別に変数を持たせて最後の比較時の値を残しておくことを考えるかな。


それはそれとして、ループカウンタって、現在値と指定された最大値とを比較してループの実行を決めると思ってたから
最後の step 数が加算されるかどうかが処理系によるってのは全く考えたことなかった。w ちょっと参考になった。

606 :デフォルトの名無しさん:2015/07/19(日) 13:39:37.34 ID:0azLbtwj
>>605
処理系じゃなく言語仕様な。
ちなみにforループの仕様すらまともに決まってない言語仕様など見た事がない。

607 :デフォルトの名無しさん:2015/07/19(日) 13:45:54.11 ID:bp/gXhOB
>>601
ひどい誤記だな
こういうのがあるからヘルプって信用できないよね!

ほかにも右と左を間違えるとか、ひどいよね
https://msdn.microsoft.com/ja-jp/library/dxs6hz0a.aspx

608 :デフォルトの名無しさん:2015/07/19(日) 13:48:28.95 ID:bp/gXhOB
>>606
ループを抜けた後のカウンタ値ってforの仕様に含まれるっけ?

609 :デフォルトの名無しさん:2015/07/19(日) 13:52:17.65 ID:gdmrFD6e
>>607
ふはは、めちゃくちゃやな

610 :デフォルトの名無しさん:2015/07/19(日) 14:06:50.40 ID:Unt8HnGc
Forカウンタに関しては仕様上と経験則もどっちの観点からも問題ないんだがら、ぐたぐだ言うこと自体が雑音。
曖昧なのは仕様じゃなくてそいつの知識。

611 :デフォルトの名無しさん:2015/07/19(日) 14:14:40.40 ID:gfc2emHi
>>606
end の値がいつ評価されるかをちゃんと書いてあるドキュメント教えてくれ

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

「日本語」ヘルプはって言ってくれ

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

613 :デフォルトの名無しさん:2015/07/19(日) 15:14:49.12 ID:qsMi3+rD
for(int i = 0, i < 10, i++){}

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

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

一方、JavaScriptでは、forにスコープが無いから、
for()内で変数宣言せずに、
for外で変数宣言した方が、誤解しない

614 :デフォルトの名無しさん:2015/07/19(日) 16:56:05.17 ID:OryvopCI
なんか荒れてると思ったら
またC++の人か
鬱陶しいな

615 :デフォルトの名無しさん:2015/07/19(日) 16:56:51.47 ID:o2GoxnAV
ループカウンタとか使わなければいい

616 :デフォルトの名無しさん:2015/07/19(日) 17:02:24.73 ID:OryvopCI
>>615
男には使いたくないと思っていても
使わなければならないときがある

617 :デフォルトの名無しさん:2015/07/19(日) 17:12:38.77 ID:kvcDaKH1
じゃあ女になればいい。

618 :デフォルトの名無しさん:2015/07/19(日) 18:12:50.64 ID:ZuB4UjID
画像ファイルの解像度を知りたいんですが
Set pic = LoadPicture(PicFile)
はば = pic.Width / 100
高さ = pic.Height / 100
で、単位mmで、それぞれサイズが出るようなんですが
解像度を求めることは、できないんでしょうか?。

619 :デフォルトの名無しさん:2015/07/20(月) 19:12:04.97 ID:51dMWdzw
ActiveSheet.Protect で保護しても選択とグラフ挿入をしたいのですがどうすればいいですか

620 :デフォルトの名無しさん:2015/07/20(月) 20:52:45.28 ID:NI++k4bU
その時だけunprotectする

621 :デフォルトの名無しさん:2015/07/20(月) 21:46:50.67 ID:4iREVrk0
女の子が生理中でもヤりたくてちんこを挿入をしたいのですがどうすればいいですか

622 :デフォルトの名無しさん:2015/07/20(月) 21:50:23.17 ID:HZ7E+BkF
ヤればいいけど感染症には気をつけてな

623 :デフォルトの名無しさん:2015/07/20(月) 22:11:31.53 ID:4iREVrk0
>>622
わかりました

624 :デフォルトの名無しさん:2015/07/20(月) 22:19:36.79 ID:VFsFABu1
どうやって気をつけるつもりだよ

625 :デフォルトの名無しさん:2015/07/20(月) 22:29:25.25 ID:4iREVrk0
>>622
どうやって気をつければいいんだよ

626 :デフォルトの名無しさん:2015/07/20(月) 23:15:10.11 ID:AGKnnOa8
>>625
感染症になりそうなら素早く抜く

627 :デフォルトの名無しさん:2015/07/20(月) 23:26:21.65 ID:dHG3/QFf
生じゃなきゃいいだろ
それよりもベッドが汚れるので必ずバスタオルを敷くこと

628 :デフォルトの名無しさん:2015/07/20(月) 23:26:55.15 ID:th8mhDMf
ちんこにメンソレータム塗っときゃええねん

629 :デフォルトの名無しさん:2015/07/21(火) 00:37:29.30 ID:s5SYmwNr
ひさしぶりにVBAのツールを作るんで
コレクションの使い方を復習しようと
なにか通勤列車で読めるような中上級向けの本がないか探したが
なくない?

なぜ入門書ばかりなんだろう
あれば教えてください

630 :デフォルトの名無しさん:2015/07/21(火) 04:27:12.96 ID:1F0zJxbf
そもそもBASICが「Beginners’ All-purpose Symbolic Instruction Code」の略ですし。

というのはおいとくとしても、VBAは本買うより目的ごとに検索した方が早い。

631 :デフォルトの名無しさん:2015/07/21(火) 11:03:54.91 ID:s5SYmwNr
>>630
そうですか。
不便ですね。
電車の中で本を読んで復習しようと思ったのに。

ところでVBAでクラスをつくるとき
わざわざsetterやgetterをつくるの面倒ではありませんか?
単にプロパティという読み書きできるようにできない?

632 :デフォルトの名無しさん:2015/07/21(火) 11:04:33.56 ID:s5SYmwNr
x プロパティという
o プロパティとして

633 :デフォルトの名無しさん:2015/07/21(火) 15:47:35.82 ID:rmCqwoyN
パブリックフィールドでも使っとけや

634 :デフォルトの名無しさん:2015/07/21(火) 15:58:52.78 ID:s5SYmwNr
>>633
できた。
なんだできるじゃん。

635 :デフォルトの名無しさん:2015/07/21(火) 16:16:59.32 ID:8Y3JIaa7
ご丁寧にプロパティ作るとデバッグであっちこっち飛ばされてうざいよなー。

636 :デフォルトの名無しさん:2015/07/21(火) 23:04:38.04 ID:nI7QiMxB
>>634
VBAのプロパティは何故かLetとSetの使い分けがあるんだよね

あれ何で?

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

638 :デフォルトの名無しさん:2015/07/22(水) 00:26:31.15 ID:JGPtgvwf
>>637
あれ?ポリモーフィズム無いんだっけ?

じゃインターフェースは何のためにあるの?

639 :デフォルトの名無しさん:2015/07/22(水) 02:33:30.51 ID:vbbcVbHR
>>636
何故かって、VBAではSetとLetは別だから、区別があるのがむしろ当然

>>637
オブジェクトの代入を区別できないのは、デフォルトプロパティのせいなんで
オーバーロードとかポインタとかポリモーフィズムとか直接無関係です

640 :デフォルトの名無しさん:2015/07/22(水) 05:40:28.69 ID:E01nq8P+
代入でのSetの付け忘れはVBA上級者でもたまにハマる罠の一つ
あんなのなくても代入して欲しい

641 :デフォルトの名無しさん:2015/07/22(水) 06:11:09.77 ID:hGLrxrN5
VBAだから今のVBに合わせてデリゲートの話が出てきてもここではおかしいけど
ポインタとかさらに意味不明だしね

642 :デフォルトの名無しさん:2015/07/22(水) 06:56:36.99 ID:u4/X55np
ポインタを使う言語


あっ(察し)

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

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

上のコード、Set有りと無しでは挙動が変わるんだけど、こういう時どうすんの?

644 :デフォルトの名無しさん:2015/07/22(水) 08:07:30.81 ID:l4QssRUO
ごめん、""付け忘れてた

645 :デフォルトの名無しさん:2015/07/22(水) 08:25:18.56 ID:maciFGiV
>>643
Setありなしとは関係ないけど、上は
var = Range("A1:G5").Value
とValueを省略せず書くのがいいと思う。

646 :デフォルトの名無しさん:2015/07/22(水) 08:27:54.81 ID:a/YZpM4j
>>643
セットしないとただの配列になった気がする

647 :デフォルトの名無しさん:2015/07/22(水) 14:00:12.80 ID:vbbcVbHR
Letでオブジェクト(参照)の代入は出来ない
これはVBAのルール

ところでお前ら、Letって命令あるのちゃんと知ってるか?
常に省略可能な命令なんだぜw

648 :デフォルトの名無しさん:2015/07/22(水) 14:27:07.44 ID:9uF/bA4u
>>647
おまえはなw
文末に書いてるw
「w」を省略したほうがいいぜw

649 :デフォルトの名無しさん:2015/07/22(水) 14:58:32.27 ID:1AHyolcG
>>647
Call もあるし、別にどやるほどのネタじゃないぞ

650 :デフォルトの名無しさん:2015/07/22(水) 16:04:40.72 ID:zA65uI1C
Letはオブジェクト以外の代入
動作の違いの確認

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

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

  Debug.Print TypeName(v1)
  Debug.Print TypeName(v2)
End Sub

651 :デフォルトの名無しさん:2015/07/22(水) 17:34:18.21 ID:SOhZ1+VB
むしろLETが省略できないBASICってあるのか?
と思ったが、大昔のベーマガにはLETで代入してたソースがあった気もするな

652 :デフォルトの名無しさん:2015/07/22(水) 19:25:17.64 ID:vbbcVbHR
>>651
機種によるけど、Then Let の場合、ThenかLetを省略できるので、Thenを省略してより短いLetを残すことがった
あとはLet省略しても、自動的に補完される機種もあったな

653 :デフォルトの名無しさん:2015/07/22(水) 20:53:03.95 ID:h8BR7O6Q
昔すぎるのでは?

654 :デフォルトの名無しさん:2015/07/22(水) 21:51:43.71 ID:JCiitdGg
>>653
今時 Let とか言い出したアホに言ってくれよ

655 :デフォルトの名無しさん:2015/07/22(水) 22:14:32.64 ID:f2fD5abO
Then Gotoの場合、ThenまたはGotoを省略できたのと同じか

656 :デフォルトの名無しさん:2015/07/22(水) 23:16:34.02 ID:EIwMW7nu
文字列をカットする関数で、start,endを位置で指定する関数ってないんだっけ?
MID(文字列,開始位置,文字数)
じゃなくて、
関数(文字列,開始位置,終了位置)
で指定したいです

657 :デフォルトの名無しさん:2015/07/23(木) 00:01:42.48 ID:a8nLYx9Z
function 関数(文字列,開始位置,終了位置)
関数 = mid(文字列,開始位置, 終了位置 - 開始位置)
end function

658 :デフォルトの名無しさん:2015/07/23(木) 00:11:50.48 ID:FtGSRY1f
>>675
ありがとう
天才だな

659 :デフォルトの名無しさん:2015/07/23(木) 00:19:40.71 ID:FtGSRY1f
>>657
ありがとう
天才だな

660 :デフォルトの名無しさん:2015/07/23(木) 00:30:11.92 ID:fIFeUYpQ
>>654
もともとはSetとの対比でLetって話だったはずだが

661 :デフォルトの名無しさん:2015/07/23(木) 05:50:04.22 ID:OfB5opuk
>>660
Let の省略 って書かんとわからんか

662 :デフォルトの名無しさん:2015/07/23(木) 05:57:57.83 ID:CPvEDQbc
>>656-659
>>657 だと一文字切れると思うよ
正しくは

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

>>661
それがそもそもsetとの対比の話題で出てきたんでしょ?

663 :デフォルトの名無しさん:2015/07/23(木) 06:13:33.37 ID:OfB5opuk
>>662
省略とか言い出したのは >>647
そもそも Let の話してるのに

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

とか言い出したり、ちょっとアレな人なんだろうと思う

664 :デフォルトの名無しさん:2015/07/23(木) 06:48:31.93 ID:H5D81+vI
>>662
「終了位置」の定義によるだろう。
普通は、長さ = end - begin となるようにするから>>657でいいと思うが。

665 :デフォルトの名無しさん:2015/07/23(木) 07:14:32.88 ID:CPvEDQbc
>>664
>定義による
まさにその通りなんだけど、

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

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

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

というのが>>662の主張な訳です
こっちのほうが普通だと思いますね

666 :デフォルトの名無しさん:2015/07/23(木) 07:20:09.47 ID:Vrk4ENFd
>>664
どんな普通だよ w
'あいうえお' の2文字目から4文字目って言われたら大抵の人は 'いうえ' って思うんじゃね?

667 :デフォルトの名無しさん:2015/07/23(木) 07:21:49.64 ID:Vrk4ENFd
>>666
リロードしとらんかった...
例えが同じすぎて笑たわ

668 :デフォルトの名無しさん:2015/07/23(木) 07:22:43.57 ID:Z5SWxUfX
その場合>>657でやるなら
関数("あいうえお", 3, 5)
とするわけだが、配列の長さは UBound - LBound + 1 だったりするから何が「普通」かは一概に言えない。

669 :デフォルトの名無しさん:2015/07/23(木) 07:53:15.29 ID:h4tQPyFC
配列ってここで何か関係あるの?

670 :デフォルトの名無しさん:2015/07/23(木) 07:57:28.09 ID:Z5SWxUfX
UBound +1を指定するところ。
つまり終了位置のひとつ先を引数に設定するのは「普通」のうちに含まれるという主張。

671 :デフォルトの名無しさん:2015/07/23(木) 08:13:20.35 ID:h4tQPyFC
よく分かんないけどそれってOption Base 1指定してもそうなの?

672 :デフォルトの名無しさん:2015/07/23(木) 08:20:43.91 ID:Vrk4ENFd
>>670
むしろその +1 って >>662 の +1 と同じだし

>>671
下限は LBound で取れるので Option で指定しても成り立つ

673 :デフォルトの名無しさん:2015/07/23(木) 09:36:32.54 ID:Z5SWxUfX
"あいうえお"から"うえ"部分を取りたいとき、
>>657 方式だと
関数("あいうえお", 3, 5) と指定する
>>662方式だと
関数("あいうえお", 3, 4) と指定する

+1するってのは使う側が引数に+1するって意味だよ。

674 :デフォルトの名無しさん:2015/07/23(木) 09:41:39.58 ID:P0N6qRSq
>>673
こういう場合に+1する・しないで俺は昔からよく混乱する事があったんだが、最近では何も考えずに無の境地でプログラミングすると、一発で上手く行くようになったよ。

675 :デフォルトの名無しさん:2015/07/23(木) 11:46:51.39 ID:SI8SSCXa
>>673
誰がどう見ても>>662の勝ちだな

676 :デフォルトの名無しさん:2015/07/23(木) 11:54:13.42 ID:Z5SWxUfX
そうかねえ?
俺は、[3, 5), [5, 9), [9, 11) みたいに漏れ重複なく区間を並べられる書き方が好み。

677 :デフォルトの名無しさん:2015/07/23(木) 11:56:02.55 ID:dbj+2vsW
>>674
InStrで「う」と「え」をサーチしたあとに取り出したいとかあるから
関数("あいうえお", 3, 4)
の方が使い勝手がいいと思う

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

個人的な意見だけど

678 :デフォルトの名無しさん:2015/07/23(木) 12:57:29.05 ID:Vrk4ENFd
>>676
書き方は色々あっていいけど、終了位置って普通最後の文字を指すでしょ

679 :デフォルトの名無しさん:2015/07/23(木) 15:55:49.36 ID:fIFeUYpQ
>>663
Set有りと無しではとか言ってる人に、Letって知ってるかって言うのはおかしくないだろ
そこはSetとLetでって書くべきなんだから

680 :デフォルトの名無しさん:2015/07/23(木) 16:12:59.04 ID:mmfWdiQl
終了位置じゃなくて長さ・個数にすれば迷う余地なし

681 :デフォルトの名無しさん:2015/07/23(木) 16:53:53.03 ID:Vrk4ENFd
>>679
スレを辿ることもできないのかよ...
>>636 からの話だぞ

682 :デフォルトの名無しさん:2015/07/23(木) 17:01:14.71 ID:Vrk4ENFd
>>680
(出川口調で)お前はバカか w ⇒ >>656

683 :デフォルトの名無しさん:2015/07/23(木) 17:44:01.97 ID:fIFeUYpQ
>>681
その流れがあるからこそ、SetのあるなしじゃなくてSetとLetだろって話なんだが
まあ話が通じないならもういいや

684 :デフォルトの名無しさん:2015/07/23(木) 19:13:36.15 ID:Z5SWxUfX
(終了位置、長さ)

(長さ、終了位置)
のどっちだったか思い出せなくて悩むはめになる。

685 :デフォルトの名無しさん:2015/07/23(木) 19:23:54.97 ID:Vrk4ENFd
>>683
> SetとLetだろって話なんだが

Set と Let の話してる奴等に

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

とか言い出したアホがいるって話なんだけど...

686 :デフォルトの名無しさん:2015/07/23(木) 19:24:52.80 ID:jdzUEZ4l
そしたらコメントで…なんて書くと、またコメントがどうたらこうたらで荒れるんだな w

687 :デフォルトの名無しさん:2015/07/23(木) 19:25:27.87 ID:jdzUEZ4l
>>686>>684に対してね

688 :デフォルトの名無しさん:2015/07/23(木) 21:34:40.50 ID:fIFeUYpQ
>>685
Setのあるなしじゃなくて って所を外してるのは、わざとですか?
そこが重要だと理解できてないのですか?

689 :デフォルトの名無しさん:2015/07/23(木) 23:17:13.99 ID:OfB5opuk
>>688
わざとです
論点はあくまでも >>636 ですから

690 :636:2015/07/23(木) 23:55:08.79 ID:h4tQPyFC
いやあテレるなぁ

691 :デフォルトの名無しさん:2015/07/26(日) 02:05:49.12 ID:PMtslnm/
コンボボックスの選択完了された値ではなくて
選択中の値・・・ドロップダウンリストが表示された状態で
マウスカーソルがあわさっている値を取得、なんてできますか?

692 :デフォルトの名無しさん:2015/07/26(日) 02:31:29.01 ID:2OSSYxBC
基本的にWindowsのコントロールはサブクラス化すれば何でもできると思っていいよ

693 :デフォルトの名無しさん:2015/07/26(日) 11:51:18.54 ID:PMtslnm/
やはり難しいですよね
リストボックスにしてみます

694 :デフォルトの名無しさん:2015/07/29(水) 22:52:06.65 ID:P4eNlM/m
workbook.sheets(1).copyで新しく作られたbookをactiveworkbookを使わずに取得する方法はありますか?

695 :デフォルトの名無しさん:2015/07/29(水) 22:54:37.84 ID:c3o2n8R7
activeworkbookを使いたくない理由を聞きたいわ。

696 :デフォルトの名無しさん:2015/07/29(水) 23:36:18.80 ID:P4eNlM/m
>>695
何かのタイミングでactiveが変わってしまったら危ないんじゃないかと思ったんですが、そういう事は起こり得ないんですか?

697 :デフォルトの名無しさん:2015/07/29(水) 23:50:54.16 ID:c3o2n8R7
>>696
"Book1 - copy.xlsx"
みたいになると思うので、その名前を使えば良いんじゃないの?

698 :デフォルトの名無しさん:2015/07/29(水) 23:59:24.34 ID:HfzTZxWN
自分で新規ブックをつくってそこにコピーすれば良いだけじゃ

699 :デフォルトの名無しさん:2015/07/29(水) 23:59:46.07 ID:hQM1TMMz
その名前が既にあったらどうするんだ

700 :デフォルトの名無しさん:2015/07/30(木) 00:00:27.52 ID:ds/Apgk5
>>697
名前もその時の状況で変わるので使いづらいです

自分が書いたコードではworkbookオブジェクトを新しく作ってからそこにシートコピーしてるのでactiveworkbookはつかってないんですが、
workbook.sheets(1).copyからもactiveworkbookを使わずオブジェクトを取得できたら楽かなぁと思って質問した次第です

701 :デフォルトの名無しさん:2015/07/30(木) 00:15:11.00 ID:AfvBuYEQ
>>699
事前にチェックすれば良いだけだろハゲ

702 :デフォルトの名無しさん:2015/07/30(木) 01:58:48.20 ID:iv9Zs1qn
Sub こんなんどないや()
Worksheets(1).Copy
Set mybook = Workbooks(Workbooks.Count)
mybook.Sheets(1).Range("A1") = "ABC"
End Sub

703 :デフォルトの名無しさん:2015/07/30(木) 04:18:29.77 ID:3TLsFD+R
Sub NewSheet(Name As String, ByVal cnt As Long)
Dim WS As Worksheet, f As Boolean
Dim NameCnt As String

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

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

If f Then
Call NewSheet(Name, cnt + 1)
Else
Set WS = ThisWorkbook.Worksheets.Add
WS.Name = NameCnt
End If
End Sub

704 :694:2015/07/30(木) 22:02:11.70 ID:ds/Apgk5
やっぱりひと手間かけないと難しいですよね
ありがとうございました

705 :デフォルトの名無しさん:2015/07/31(金) 03:12:44.99 ID:aPbYdwRE
>>699
馬鹿なのお前?

706 :デフォルトの名無しさん:2015/07/31(金) 23:33:53.17 ID:q+UwAnSR
なんかお題をちょうだい

707 :デフォルトの名無しさん:2015/07/31(金) 23:40:31.13 ID:pDlCqfLx
テトリスつくって

708 :デフォルトの名無しさん:2015/07/31(金) 23:44:01.31 ID:q+UwAnSR
32LINE2048bytesが制限だからちょっとテトリスはゴメンちゃい

709 :デフォルトの名無しさん:2015/08/02(日) 08:29:07.26 ID:lFlP6vKj
カンマがたくさん入力されたEXCELファイルをcsvファイルにしたい
ところが普通に名前をつけて保存だと"を付いてくれないっぽい

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

元のEXCELファイルでは
カンマが入力されてる位置も数も法則性はありません

710 :デフォルトの名無しさん:2015/08/02(日) 09:24:03.34 ID:js+6DYN9
>>709
それがExcelの仕様
諦めてVBAを書くか、""なしで書き出したテキストファイルを
PerlやRuby等の簡易な言語で加工するか

711 :デフォルトの名無しさん:2015/08/02(日) 10:54:43.64 ID:pHbT44ug
大体他言語の話を持ち出すやつは糖質
特にC++はアスペ

712 :デフォルトの名無しさん:2015/08/02(日) 11:55:18.99 ID:zAkA6wkz
>>711←これが病気の人の執着力です

713 :デフォルトの名無しさん:2015/08/02(日) 12:23:27.67 ID:lFlP6vKj
仕様でしたか
行数多いので処理時間が少し心配ですが、
VBAでやってみます

他言語はvbsで保存後に「,」を「","」に置き換え
加工できるかなとは少し考えてました。
でも置き換え対象外の「,」もあるわけで、
保存後だと判定が難しそう

714 :デフォルトの名無しさん:2015/08/02(日) 13:06:35.44 ID:ZRhH79SV
>>709
試した範囲では、少なくともセル中にカンマを含む場合はちゃんと""で囲んでくれるようだが
まあ、CSVはいろいろ細かいとこが違うから気に入らないなら自分で書き出すのが確実だけど

715 :デフォルトの名無しさん:2015/08/02(日) 14:52:37.26 ID:egshDkuk
リンクされたセルの値が変化した際に実行する処理をWorksheet_Changeに記述しております。
この処理中にリンクされたセルの値が変化した場合、
実行中のWorksheet_Changeは中断され、新たにWorksheet_Changeが開始されるのでしょうか?
それとも、実行中のWorksheet_Changeは引き続き実行され、同時並行にWorksheet_Changeが開始されるのでしょうか?

また、上記のどちらであるかを確認する方法があるようでしたら教えていただきたいのです。
よろしくお願いします。

716 :デフォルトの名無しさん:2015/08/02(日) 15:09:53.80 ID:QrDJWkft
>>715
処理の中に対象セルの値を変化させるコードがある場合、そこから新たに実行される。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i

Debug.Print "preexe"

Target = i

Debug.Print "Postexe"
End Sub

とかで実行してみてイミディエイトウィンドウを確認すると分かりやすい。

717 :デフォルトの名無しさん:2015/08/02(日) 15:18:10.64 ID:9vFz/e2c
無限ループって怖くね?

718 :デフォルトの名無しさん:2015/08/02(日) 16:32:16.48 ID:dkS/+hk9
>>715
A列 金種
B列 枚数
C列 金額
でB、Cの何れか片方に入力されたらもう片方を再計算するようにしたことならあるけど…

719 :715:2015/08/02(日) 17:32:28.59 ID:egshDkuk
あー間違えたー
>>715のWorksheet_ChangeはWorksheet_Calculateに読み替えてください。
↓が正しいです。すみません。
"リンクされたセルの値が変化した際に実行する処理をWorksheet_Calculateに記述しております。"

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

>>717
Worksheet_Calculateが実行中にリンクされたセルの値が変化することもあれば、変化しないこともありますので
必ずしも無限ループとはなりません。
>>716は無限ですけど。

720 :デフォルトの名無しさん:2015/08/02(日) 18:39:22.01 ID:MF9TQU9s
>>709
そういうのがわずらわしいからTab文字でセパレートするんやで
つーか全レコード舐めて使ってない文字なら何でもいいが

721 :デフォルトの名無しさん:2015/08/03(月) 10:07:35.51 ID:IvRPgtVs
>>709
アドイン探したらあったよ?
Excel CSV I/O 
使ってみたら。

722 :デフォルトの名無しさん:2015/08/03(月) 15:40:21.92 ID:JhhThk5t
2バイト文字の空白エリアからテキトウに選べばええ

723 :デフォルトの名無しさん:2015/08/04(火) 18:12:48.60 ID:Xu3GeQZL
OWCのグラフについてですが、データがEmptyの箇所を非表示にするにはどうすればいいでしょうか?

724 :デフォルトの名無しさん:2015/08/04(火) 19:13:09.63 ID:qaA+gaVg
PowerShell なら、import-csv, export-csv,
-encoding で、UTF-8, Shift-JIS のエンコードも指定できる

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

"a,b","a b"
こういうように、文字列の中に、
カンマや空白が入っていると、
ややこしいので、タブ区切り(TSV)を使う

725 :デフォルトの名無しさん:2015/08/05(水) 00:47:49.40 ID:Xk+R3C8+
特定のブックだけでしか使わないので、そのためにアドインってのはちょっと嫌かな
tsvってなんでExcelに関連付けされてないんだろう
名前をつけて保存でも出てこないし

拡張子協会?みたいのがあって、そこには認められて無くて
タブ区切りだからtsvって一部の人が呼んでるだけなのだろうか
なんて想像してしまう

726 :デフォルトの名無しさん:2015/08/05(水) 04:31:59.24 ID:yfcMdSNW
>>725
Excelでのタブ区切りはテキスト形式指定で保存できる
関連付けは.txtなのでメモ帳になってるのが一般的だな
開くのはEXCELでちゃんと開ける

そもそもcsvはComma-Separated Valuesの略だとされてるから
タブ区切りがcsvじゃおかしいだろうって言う話があってtsvと呼んだりするけど
それ以外の区切り形式も全部ひっくるめてcsvと呼ぶこともある
いちおう今はRFCとかもあるけど、それ以前から存在するし実はかなりカオスな形式

727 :デフォルトの名無しさん:2015/08/06(木) 21:55:53.33 ID:i7HDVQtV
ExcelからVBAでOutlooikを操作し
CreateObject("Outlook.Application").CreateItem(0)
でメールの下書きをいくつかたくさん作ります。

そのあとつくった全部に対して同じ処理をしたいのですが
このCreateItem(0)で作ったメールの下書きのコレクションを取得する方法ってどうやればよいでしょうか?

728 :デフォルトの名無しさん:2015/08/06(木) 22:24:14.34 ID:JI2t4Gst
好きにやればいいよ

729 :デフォルトの名無しさん:2015/08/06(木) 23:00:42.60 ID:hJ1X31cM
>>727
outlook研究所に行けよ

730 :デフォルトの名無しさん:2015/08/06(木) 23:53:13.21 ID:3nTeNGfy
自分で作ってるんだから自分でコレクションに入れていけば良いんじゃね

731 :デフォルトの名無しさん:2015/08/11(火) 21:35:11.54 ID:gtl50mbf
あるセルに
AAA BBB AAA CCC
と表示されているのを
AAA BBB CCC
と、つまり重複文字列を
削除するVBAのコードを何卒
お願いしますm(_ _)m

732 :デフォルトの名無しさん:2015/08/11(火) 22:49:00.10 ID:my6QzTuQ
メニューに重複削除あるだろ

733 :デフォルトの名無しさん:2015/08/11(火) 23:00:31.84 ID:gtl50mbf
>>732
一つにセル内の話です。
例えばA1内に
あああ あああ 200 200
と文字列がある場合に
マクロ実行で
あああ 200
のように。
(かなり困ってますので
お助けを…(_ _))

734 :デフォルトの名無しさん:2015/08/11(火) 23:02:52.20 ID:Rnp54Swm
あるセルって単一セル内?4つのセル?

735 :デフォルトの名無しさん:2015/08/11(火) 23:14:47.60 ID:Rnp54Swm
区切りにスペースは必ず入ってるのかな

736 :デフォルトの名無しさん:2015/08/11(火) 23:24:55.02 ID:3YchA3jD
そんな馬鹿げた要件ないだろ

737 :デフォルトの名無しさん:2015/08/11(火) 23:43:59.37 ID:gtl50mbf
>>734
単一セル内

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

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

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

の様にしましたが結果が上記のようになって
しまいます。つまりstrの中身の重複を
削除する方法です(_ _)

738 :デフォルトの名無しさん:2015/08/12(水) 00:05:07.74 ID:AxCPtTKK
>>731

Sub こんなんどないや()

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

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

ActiveCell.Value = Trim(kekka)

End Sub

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

なんか出来そうな予感は
して来ました(笑)
(夜分遅くに本当に感謝です、他にも
ありましたら何方かなるべくシンプルな
やつでお願いします(^ ^;))

740 :デフォルトの名無しさん:2015/08/12(水) 01:06:27.62 ID:svAFeBJn
>>738
エラー無視させるかキーが当たったら登録させないかは好みで分かれるところだな

741 :デフォルトの名無しさん:2015/08/12(水) 09:21:11.40 ID:ybFGXm8Q
>>740
エラートラップとかはできる限り使いたくないから
> キーが当たったら登録させない
派だな

742 :デフォルトの名無しさん:2015/08/12(水) 12:37:40.94 ID:bqbcCRVa
vba活用してスマホとEXCEL連携して何かできないかな
カメラで撮ったらシートに画像がすぐに貼り付けられるとか
バーコード呼んだらセルに入力されるとか

743 :デフォルトの名無しさん:2015/08/12(水) 13:40:00.14 ID:CjCTxmpZ
dictionary使えばいいでしょ

まあ元のソースが別のセルに入ってるのをわざわざ連結してから処理してる意味がわからないけど

744 :デフォルトの名無しさん:2015/08/12(水) 13:42:43.23 ID:Qp9NewvK
>>742
googleスプレッドシートでやるといいよ

745 :デフォルトの名無しさん:2015/08/12(水) 17:15:44.92 ID:e6JBBjJ+
シートに図挿入したときのことなんですが、
挿入 ― 図 ― (d:\gazo\a000.jpg) ― ファイルにリンクで
貼り付けた画像があるとして、この画像のフルパス(d:\gazo・・・.jpg)を
知ることはできるでしょうか。Excel2007では,代替えテキストに
フルパスが入っていますが、Excel2010では、何も入りません。
(Excel側で、設定とかある?)、どこかに、情報は持っているはずと
思うのですが、VBAで知る方法、わかるかた教えてください。
代替えテキストは、下記でわかるようなのですが。
pic.ShapeRange.AlternativeText

746 :デフォルトの名無しさん:2015/08/12(水) 23:05:01.82 ID:G8qcToBK
そこを方向転換してマクロで図を挿入するようにすればバージョンに依存せずいつでもパスを得られると思わないか
思わないな

747 :745:2015/08/12(水) 23:40:12.65 ID:e6JBBjJ+
>>746
じつは、マクロで図を挿入するのを作っていて、「Excel2010でPictures.Insertすると
リンク貼り付けになる」ということなので、いろいろ調べたら「代替テキストに画像のフルパスが
あるなら、挿入にできる」っていうのを見つけた。で、2007だと代替テキストにフルパスが
入ってるけど、2010は、なし。じゃ、ということで2010で代替テキストにフルパスを書き込む
ようにした。で、リンク貼り付け→挿入にできるようになったんだ。これ、>>745カキコしてから
ようやっとできた。だけど、んにゃ、どっかにフルパス情報当然あるはず、と思うんだけど。
ちなみに「AddPicture」は、どうもしっくりこなくて。

748 :デフォルトの名無しさん:2015/08/13(木) 01:00:44.65 ID:CPI6SZk7
>>747
「代替テキストに画像のフルパスがあるなら、挿入にできる」って
なにそれリンクプリーズ

749 :デフォルトの名無しさん:2015/08/13(木) 01:24:42.76 ID:UOPmO2ID
結局何が目的でどれがそのための手段なのかわからん

750 :デフォルトの名無しさん:2015/08/13(木) 09:28:42.30 ID:jLoATrSc
>>748
これです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1284060567

要は、画像リンクで貼り付けられてる、画像のフルパスがわかれば、リンク貼り付け→挿入にできる。
Excel2007は、代替テキストに入ってるから、もしリンク貼り付けでも対処できる。2010は、手動貼付けや
Pictures.Insertでは、代替テキストにはフルパスは入らない。マクロで入るようには、もちろんできる。
じゃ、すでに手動なりでリンク貼り付けになってる(フルパス情報なし)のを、挿入にしたいから
図のフルパスを知りたい、ってことなんだわ。ネットで、いろいろググってるんだけど、見つからなくて。

751 :デフォルトの名無しさん:2015/08/13(木) 10:30:47.40 ID:XEpKKFYz
図をコピーして形式を選択して貼り付けするとリンク切れるみたいだけどそれでどうにか

752 :750:2015/08/13(木) 11:38:58.21 ID:jLoATrSc
>>751
レスありがとう。教えてもらった通りの操作を、マクロ記録してみました。
それを利用して、画像フルパスなくても、一度に何枚のリンク画像でも、
挿入にできました。この方法は、思いつきませんでした。日頃のExcel操作が
大事だと改めて思いました。教えていただき、ありがとうございました。
(目的を達成したので、とりあえずリンク画像のフルパス取得は、保留にします。)

753 :デフォルトの名無しさん:2015/08/13(木) 14:10:15.23 ID:XEpKKFYz
図のリンクの編集ぐらいExcelの機能としてあるかと思ったら意外に無いのな
コピペも対処療法的な感じで非常にアレだ

754 :デフォルトの名無しさん:2015/08/13(木) 18:40:42.85 ID:e6rsnF6N
>>753
「対処療法」じゃなくて正しくは「対症療法」だよ

755 :デフォルトの名無しさん:2015/08/14(金) 20:13:43.07 ID:8ARrFh/I
Range("a1").value = Range("b1").value

こう書くと数式も含まれてコピーされるようですが
値のみを繁栄させたい場合はどう書けばいいのでしょうか? 

756 :デフォルトの名無しさん:2015/08/14(金) 20:19:39.62 ID:kkHnja52
>>755
マクロ記録モードにして
「値で貼り付け」の操作をするとわかる

757 :755:2015/08/14(金) 20:21:57.58 ID:8ARrFh/I
>>755
この質問の意図は

Range("A1").Copy

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

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


>>756
ありがとうございます

758 :デフォルトの名無しさん:2015/08/14(金) 20:43:22.05 ID:GC+yzDGQ
>>755
私の記憶が確かなら、.valueは計算結果の値であって、数式はとれないはずですが。
EXCELのバージョンは?

759 :755:2015/08/14(金) 20:54:01.53 ID:8ARrFh/I
>>758
2003です、、 
表の集計で使っていますが
今まではダイレクトに書かれた数値をコピペしていたところを
=a1 のようなセル参照で抽出する用に変えたのですが
結果の数値が全部0になりよく調べると =a1  ごとコピーされて
結果セルの式は=a100とかと表示されていてだめだこれはといった感じです

760 :755:2015/08/14(金) 22:12:02.80 ID:yxgV65T9
結局の所
>>757

>>755
のように1行で書く事は出来ないのでしょうか?

761 :デフォルトの名無しさん:2015/08/14(金) 22:41:06.93 ID:kkHnja52
>>760
できない
「値で貼り付け」はPasteSpecialメソッドにしかない機能なので
まずCopyしておく必要がある

762 :755:2015/08/14(金) 23:04:41.66 ID:heE1+va8
>>761
ありがとうございます。 長年の謎が溶けてすっきりしました。

763 :デフォルトの名無しさん:2015/08/14(金) 23:45:05.71 ID:G78FLFmY
>>759
うちは2007だけど
Range("a1").Value = Range("b1").Value
でちゃんと数値がコピーされるなー

ところでこんなんどないや
Range("a1").Value = Evaluate(Range("b1").Formula)

764 :デフォルトの名無しさん:2015/08/15(土) 00:27:53.07 ID:fL/PzS3/
>>763
2010でもその通り、値のコピーとなった。
>>761はウソ。

765 :デフォルトの名無しさん:2015/08/15(土) 00:46:57.24 ID:tvgFL4BI
質問
これは動くのですが
Dim mm(2)
mm(1) = ActiveSheet.Shapes.AddLine(10, 10, 50, 50).Name
mm(2) = ActiveSheet.Shapes.AddLine(120, 20, 60, 60).Name
ActiveSheet.Shapes.Range(mm).Select

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

諦めて配列を使うしかないのでしょうか それともcollectionの使い方がわるいのでしょうか

766 :デフォルトの名無しさん:2015/08/15(土) 07:06:47.86 ID:j7Z0urAN
色々な事情で600シート分のデータを1〜2のブックに統合する必要が出てきたのですが

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

のではどれがお勧めでしょうか?
600シートの総データ数は300MBほどです。
1ブック200シートのデータ作成は成功しましてまあそれなりに止まることなく動くというのがわかりました。

767 :デフォルトの名無しさん:2015/08/15(土) 10:12:24.14 ID:Rw3ql/9W
第3の答えとしてRDBを使用する

768 :デフォルトの名無しさん:2015/08/15(土) 10:27:23.30 ID:cR607+81
開くの重そう。
自分で作れてるんなら、実用性次第じゃないの?

769 :デフォルトの名無しさん:2015/08/15(土) 10:42:17.52 ID:p/7d84Nq
何もしていないxlsx形式やcsv形式で300MBなら統合した後にデータテーブル化すれば容量はだいぶ抑えられるはず。

770 :デフォルトの名無しさん:2015/08/15(土) 15:23:11.33 ID:7AZQcdGh
>>766
150シートに分割して4ブックにすることもできすし
120シートに分割して5ブックにすることもできすし
100シートに分割して6ブックにすることもできす。

しかし分割して7ブックにすることはできません。
これは7が600の約数ではないからです。
小学生の算数の授業でした。

771 :デフォルトの名無しさん:2015/08/15(土) 15:48:36.88 ID:Bgl+GJFE
>>770
分割は等分とは限らないんだぜ?

772 :デフォルトの名無しさん:2015/08/15(土) 16:23:48.83 ID:mbZast3u
同一テーブルのデータをシートに分けるのは愚の骨頂 ひとつにまとめろ

773 :デフォルトの名無しさん:2015/08/15(土) 16:33:01.59 ID:HxCw3c0C
重いとか色々理由あって、状況によっては必ずしも1つが正しいともいえないんだよなぁ。

774 :デフォルトの名無しさん:2015/08/15(土) 17:04:42.31 ID:B4BgWceW
まあそもそもEXCELでやるべき処理かという問題

775 :デフォルトの名無しさん:2015/08/15(土) 17:10:19.88 ID:B4BgWceW
>>765
Shapes.Rangeの引数は、配列は許すがコレクションは許さない

776 :デフォルトの名無しさん:2015/08/15(土) 22:40:04.13 ID:+545fZTC
これからexcelvbaを学習しようと思うのですが、パソコンスクールとかに通ったほうがいいでしょうか。

777 :デフォルトの名無しさん:2015/08/15(土) 22:51:46.86 ID:4BB87GxS
>>776
ネットの解説ページで充分

778 :デフォルトの名無しさん:2015/08/15(土) 22:53:48.65 ID:fL/PzS3/
美人講師に教えてもらえるのなら

779 :デフォルトの名無しさん:2015/08/15(土) 22:55:28.05 ID:EaRAq543
VBA教えるスクールなんてあるんかな

780 :デフォルトの名無しさん:2015/08/15(土) 22:58:58.19 ID:UUBlauo7
たぶんこのスレ見てるやつでパソコンスクールに通ったことあるやつってほとんどいないと思うぞ...

781 :766:2015/08/15(土) 22:59:00.32 ID:4BB87GxS
>>766 ですが盆休みの暑い中あれこれ試して見ましたが
100メガぐらいある200シートあるファイルを作り3つを同じに開いて処理させようとしたら・・・
3つめでリソース不足で開けませんと出てきました THE END

まだ推測段階ですが1ブック400シート統合したファイルは開けたと思いますので巨大な1つのブックを作るのが正解のようです。

782 :デフォルトの名無しさん:2015/08/15(土) 23:01:44.13 ID:fL/PzS3/
現状のサイズで打ち止めなのか、今後少しずつ増えていくのかどっちだ?

783 :766:2015/08/15(土) 23:09:16.26 ID:4BB87GxS
>>782
管理上多くのシートが束なった状態が有利でして
どちらかと言うと限界値を探っている感じです。

784 :766:2015/08/15(土) 23:13:14.19 ID:4BB87GxS
>>782
最大シート数は青天井です
DBを使うべきなのでしょうがDB未経験なのでVBAであがいています

785 :デフォルトの名無しさん:2015/08/15(土) 23:21:14.62 ID:+545fZTC
776
アドバイスありがとうございます。
パソコンスクールは不要そうですね、自力でやります

786 :766:2015/08/15(土) 23:28:20.54 ID:FJpG/yMJ
>>785
プログラミングの基礎知識があればネットで充分 
プログラム未経験で1から始めるならネットで見てわからなければ、本でやってみて、それでもだめならスクールかな

787 :デフォルトの名無しさん:2015/08/15(土) 23:43:38.64 ID:+545fZTC
>>786
ありがとうございます。プログラムは初心者ですが実務で使えるレベルになりたいのです。
カエルが出てくるベストセラー入門書を読み込んでみます

788 :デフォルトの名無しさん:2015/08/16(日) 00:07:46.48 ID:ulfn6A7k
基礎知識は学生時代にやったからなあ
全くの未経験の感覚は分からん

789 :デフォルトの名無しさん:2015/08/16(日) 02:37:33.95 ID:7WiTockH
マジレスすると最強のVBAスクールはここです

790 :デフォルトの名無しさん:2015/08/16(日) 05:49:34.88 ID:ENl5jplp
マクロの記録だけでもいろいろ学べる
ループやifはないけど

791 :デフォルトの名無しさん:2015/08/16(日) 10:11:51.00 ID:gGxBx6VU
マクロ記録は宝の山
下手にループを組んだりするより、圧倒的に短く済む書き方を発見することがある

俺のVBA人生で一番驚いたのが、セルポインタの右下の黒点をWクリすると
左隣のセルに沿ってセル内容を自動コピーできること
コピー範囲の指定やif判定など一切が不要

792 :デフォルトの名無しさん:2015/08/16(日) 10:29:13.12 ID:piHLRckr
それは太陽の黒点のように出現時期や数の変化はありますか?

793 :デフォルトの名無しさん:2015/08/16(日) 11:32:03.58 ID:ulfn6A7k
>>791
そんな事出来たのかと思って試してみたけど
これってつまりオートフィル?

794 :デフォルトの名無しさん:2015/08/16(日) 12:03:28.50 ID:gGxBx6VU
>>793
オートフィルだね
ループ組んで1セルずつ処理するコードを書くことしか頭になかったから
当時かなりの衝撃を受けた
関数内のセル参照式を自動でインクリメントしてくれるので、関数を含む
表をVBAで作る(割とよくある)場合に非常に役立つ

795 :デフォルトの名無しさん:2015/08/16(日) 12:07:18.75 ID:+v5OIrpT
空白があると止まっちゃうから、結局ループに戻ったな。

796 :デフォルトの名無しさん:2015/08/18(火) 00:21:58.08 ID:XBdAgPin
でも大抵ループより専用のシート関数呼んだ方が速くて悔しくね?
このあいだ適当に安定ソート組んだら組み込みのシート関数のSortのが速くてショック死した

797 :デフォルトの名無しさん:2015/08/18(火) 04:01:26.32 ID:fz3Mk9gj
Sortメソッドって安定なの?

798 :デフォルトの名無しさん:2015/08/18(火) 07:16:21.63 ID:Nc1vlm2A
どうだろ。実験してみれば?
反例が出ればはっきりする。出なきゃ何とも言えんが。

799 :デフォルトの名無しさん:2015/08/18(火) 15:40:30.31 ID:7IvcIIuj
反例が出るまで、あらゆるパターンをソートし続けるのか・・・

800 :デフォルトの名無しさん:2015/08/18(火) 21:06:25.20 ID:Nc1vlm2A
>>799
そうさ。君ならできる。

801 :デフォルトの名無しさん:2015/08/20(木) 00:38:14.85 ID:/DfWyQwS
>Sortメソッドって安定なの?
安定だよ
適当にセルに値埋めてキー列を変えながらソートしていけば不安定と何が違うか判る

802 :デフォルトの名無しさん:2015/08/20(木) 00:47:34.83 ID:C5756yL1
その確信をどうやって持てばいいのか・・・

803 :デフォルトの名無しさん:2015/08/20(木) 09:33:43.09 ID:X9vYl0u8
>>801
個人的な実験で調べるのは無理
安定ソートと同じ結果になったのが偶然じゃないと証明することはできない

804 :デフォルトの名無しさん:2015/08/20(木) 11:22:47.70 ID:4mlXzkea
確信が持てないんだったらSort後にチェックのロジックを追加すればいい
(どうすんのかは知らんけど)
それか、最初から使わなければ良い

805 :デフォルトの名無しさん:2015/08/20(木) 12:06:50.75 ID:mAnYGFvy
普通だったら仕様書なり規格のここに書いてあるという話題になるのに、そうならない言語を使ってる男のひとって

806 :デフォルトの名無しさん:2015/08/20(木) 12:09:54.61 ID:mAnYGFvy
まあ安定にしたいというだけなら昇順インデックスを一列追加して第2キーに指定すれば良い。

807 :デフォルトの名無しさん:2015/08/20(木) 17:06:23.21 ID:GEWaWf2/
なんでExcelVBAユーザーって他の言語だとごくごく当たり前のことを
訊かれてるのに頓珍漢な答えを返すの?

808 :デフォルトの名無しさん:2015/08/20(木) 18:11:06.62 ID:n0ICmDs/
他の言語 = C++限定

809 :デフォルトの名無しさん:2015/08/20(木) 20:53:52.58 ID:mAnYGFvy
その点OutlookVBAユーザーは偉い。

810 :デフォルトの名無しさん:2015/08/20(木) 22:46:58.59 ID:abJwgas4
adoでAccessに接続しクエリのパラメーターにセルの値を渡すにはどのような方法がありますか?また、sqlでセルの値を使う場合もどのように書けば渡せますか?

811 :デフォルトの名無しさん:2015/08/20(木) 23:25:51.90 ID:4mlXzkea
sqlstr = " select 〜 from ddd where fff = " & Cells(i,1)

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

みたいにしてっけど、こういう事じゃない?

812 :デフォルトの名無しさん:2015/08/21(金) 00:12:09.87 ID:AQjOsTG4
>>811
こういうことですが、&でセルの値はなにも囲まないんですね

813 :デフォルトの名無しさん:2015/08/21(金) 00:23:47.20 ID:mP5B+B9x
>>812
811だけど、これMySQLで俺がやってるもの。ACCESSではどうだったか。
MySQL出やる時、日付や文字列は "'" 半角のクォーテーションでくくってる

sqlstr = " 〜 '" & Cells(i,3) & "'" みたいに
そこら辺は適時修正してくれ

814 :デフォルトの名無しさん:2015/08/21(金) 14:19:51.00 ID:yaZ860HY
>>812,813
脆弱性たっぷりに見えるので、もう少し頑張れ・・・(´・ω・`)

815 :デフォルトの名無しさん:2015/08/21(金) 16:50:53.01 ID:lpkbHdP+
FileSystemObjectを使ってファイルをMoveFileで移動した直後に
元の場所に同じ名前のファイルをCreateTextFileやOpenTextFileで新規作成すると
作成時にたまにランタイムエラーになる
MoveFileが非同期で処理してんのかなあと思った
FileExistsで移動が完了するまで待った方がいいのか、別名で新規作成するべきか
どっちがいいと思います?

816 :デフォルトの名無しさん:2015/08/21(金) 16:59:03.93 ID:CXs5osz9
>>815
目的による
処理を急ぐなら別名で、同名じゃないと困るなら完了まで待つ

817 :デフォルトの名無しさん:2015/08/21(金) 17:29:16.31 ID:U/GX80hF
book1の変数Nを使ってbook2のマクロをRunで使いたいのですが
book1で次のコードを実行するとNの値がエンプティになってしまいます。
変数を使うにはどうしたらいいですか?

Public N As Integer
N = 100
Application.Run "book2".xls!updata"

818 :デフォルトの名無しさん:2015/08/21(金) 17:55:38.56 ID:CXs5osz9
>>817
Application.Run ("book2.xls!updata", N )

819 :デフォルトの名無しさん:2015/08/21(金) 18:38:34.66 ID:lpkbHdP+
>>816
ありがとうございます
コメントも無い他人のソースなんで、何でこんなことしてるのかはまるで不明なんですが
別名路線でいくというか、もう移動先に直接作成することを考えております
参考になりました

820 :デフォルトの名無しさん:2015/08/21(金) 18:44:54.74 ID:U/GX80hF
>>818
返信ありがとうございます
実行すると コンパイルエラー 修正候補: =
と出てしまいます。

821 :デフォルトの名無しさん:2015/08/21(金) 20:21:41.59 ID:U/GX80hF
book2に変数N宣言してないからかな
ちょっと別の方法でやってみます
ありがとうございました

822 :デフォルトの名無しさん:2015/08/23(日) 14:00:42.68 ID:mtt7apD7
adoでつなぐクエリがAccessのクロス集計でパラメーターある場合、Excelからどうやったらパラメーター渡せる??

823 :デフォルトの名無しさん:2015/08/23(日) 14:58:01.35 ID:CbBvys+j
プログラム言語一般を勉強しているのですが
このVBAのVariant型の変数の正体ってなんですか?
かなり詳しく知りたいのですが。

824 :デフォルトの名無しさん:2015/08/23(日) 14:59:12.06 ID:CbBvys+j
いろんな型を入れられるし、セル範囲も入れられて配列のようにも使える。
これらはメモリにどのように記憶されているか、ということまでは最低でも知りたいんです。
プロ目指してますんで(ワラ

825 :デフォルトの名無しさん:2015/08/23(日) 15:04:43.71 ID:WA8SS6t8
>>824
VBAはソースも設計書も公開されていないので誰にもわからない

826 :デフォルトの名無しさん:2015/08/23(日) 15:14:25.56 ID:CbBvys+j
>>825
そりゃないよかあちゃん

827 :デフォルトの名無しさん:2015/08/23(日) 15:20:55.56 ID:J+cRYQ7V
>>826
VariantはOS(Windows)で定義されてる型
中は二つに分かれていて、データの種類と実際の内容が入ってる
VBAはそれを継承してるだけなので、Windowsクラスの仕様を探せば詳しいことがわかると思う
実際に消費するバイト数とかどっかで見た記憶があるんだけど思い出せん

828 :デフォルトの名無しさん:2015/08/23(日) 15:24:51.94 ID:CbBvys+j
>>827
ありがとうございます。
ではなにを調べればよいのでしょ?
VBAの元になったVB.netの本には書いてそうですか?

829 :デフォルトの名無しさん:2015/08/23(日) 15:37:58.52 ID:J+cRYQ7V
>>828
VB.netはVBAの元じゃないです
歴史的に見れば.netよりVBAの方がずっと古いです
VBAの言語仕様 (文法)はWindowsよりもっと前のMS-DOSの時代に流通していたMS-BASICの影響が強く残っています
とりあえずVariantについてはWindowsクラスを調べてください

830 :デフォルトの名無しさん:2015/08/23(日) 15:45:58.27 ID:CbBvys+j
>>829
わかりました。
ではWindowsクラスはどうやって調べますか?
VBAのクラスだとコード書くところでF2押してそのオブジェクトウインドウでクラスを調べることができますが
Windowsクラスはどこをさわってどこを見ればよいのでしょうか?

831 :デフォルトの名無しさん:2015/08/23(日) 15:48:38.19 ID:Sv2KumfA
>>829
あんたエラいな
もう面倒臭いから
「VB.Netを調べればVariantのことならバッチリです」って書き込む衝動に駆られたよ

どうせVB.NetにはVariantなんて概念無いから調べればすぐ分かるだろうし

832 :デフォルトの名無しさん:2015/08/23(日) 16:10:13.13 ID:MIuOfpHO
typename(変数名)ってやれば今何として使われてるのかわかるよ

833 :デフォルトの名無しさん:2015/08/23(日) 16:12:01.44 ID:HWLa8qp/
>>830
ほらよ
http://marupeke296.com/IKDADV_CPP_VARIANT.html

834 :デフォルトの名無しさん:2015/08/23(日) 16:14:09.85 ID:CbBvys+j
>>833
ぉぉ、ありがとうございます。
さっそく読んでみます

835 :デフォルトの名無しさん:2015/08/23(日) 19:08:05.67 ID:pAcPKBpl
VariantやSafeArrayのことなんて今さら知ったところで役に立つまいよ

836 :834:2015/08/24(月) 11:52:15.07 ID:kqGleJUR
さっぱり意味がわからないのですが
結局はVariant型の変数の正体はどうなっているのですか?

837 :デフォルトの名無しさん:2015/08/24(月) 11:58:00.74 ID:mvfSohk+
It's 正体ム!

838 :デフォルトの名無しさん:2015/08/24(月) 12:07:55.55 ID:v68vlkfs
>>836
>>833で紹介されてるサイトに明確に書いてるじゃんよ。
::VariantInitしたあとvtに型識別の定数入れてその型の値を入れりゃ使えるんだよ!

839 :デフォルトの名無しさん:2015/08/24(月) 12:23:46.05 ID:yOjBToOI
>>836
C/C++を勉強しろ

840 :デフォルトの名無しさん:2015/08/24(月) 14:05:05.16 ID:BYoao/vR
>>836
ヨボヨボのおじいさんと
何も聞かずにその荷物を持ってあげる親切な若者の2人組

ほら空港によくいるだろ

841 :デフォルトの名無しさん:2015/08/24(月) 17:05:32.04 ID:J76Yg4NI
分かろうとしない。理解する気が無い。単純明快じゃないと
いやだ。という事だろう。

842 :デフォルトの名無しさん:2015/08/24(月) 17:34:27.17 ID:Kuhf7pjv
>>836
833のリンク先を見て理解できないのは勉強が足りてないだけ

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

VBAでは型を勝手に判定してくれるのと、その判定基準が(たぶん)非公開なので理解しにくいってのはあるけど

843 :デフォルトの名無しさん:2015/08/24(月) 18:06:39.68 ID:CxEN4gra
VBAスレで>>833のリンク先を理解できないと勉強不足ってなかなかきついなw
私もこのリンク先は理解できませんでした
勉強します。はい。

844 :デフォルトの名無しさん:2015/08/24(月) 19:35:51.19 ID:EZ01N8pB
でも勉強するなら後がないC++よりC#なんでしょ?

845 :デフォルトの名無しさん:2015/08/24(月) 19:41:39.58 ID:L+YG8AD9
実はいまだに>>840がわからない。

846 :デフォルトの名無しさん:2015/08/24(月) 19:56:40.68 ID:j4ltc4Df
>>844
目的によるがメモリ管理なんかを勉強するなら最低でもCの挙動について知っておく必要がある。
newすりゃインスタンスがメモリ上にポンと出来るなんて甘々の高級言語なんか使ってたらいつまでもプログラマになれんのですよ!

847 :デフォルトの名無しさん:2015/08/24(月) 20:07:49.84 ID:EZ01N8pB
>>846
じゃCとC#でいいや
3DSよりVITAのソフト作れるようになりたい

848 :デフォルトの名無しさん:2015/08/24(月) 20:13:49.27 ID:j4ltc4Df
>>847
「○○でいいや」精神でゲーム作るならUnityなんかのAPIに慣れておく方が建設的。
まぁ一回、根幹的な仕組みを勉強してからの方が覚えやすいから無駄にはならないけど。

849 :デフォルトの名無しさん:2015/08/24(月) 20:31:57.81 ID:Kuhf7pjv
ゲーム専用機はもうすぐ死滅するから
今はスマホアプリで我慢しとけ

850 :デフォルトの名無しさん:2015/08/24(月) 20:48:16.48 ID:EZ01N8pB
>>849
じゃWindowsパソコンしか持ってないからAndroidStadioでJavaか

851 :デフォルトの名無しさん:2015/08/24(月) 22:50:47.21 ID:hopDjYVC
>>846
> newすりゃインスタンスがメモリ上にポンと出来る
そう言うのを作る側に回ったことはないのか?
もしそうなら、そりゃスクリプト言語使ってるのとたいして変わらんかもな w

852 :デフォルトの名無しさん:2015/08/24(月) 23:06:13.03 ID:EZ01N8pB
>>851
ひょっとするとインスタンス作るのに物凄く苦労するとか

853 :デフォルトの名無しさん:2015/08/25(火) 00:20:48.67 ID:fH+tecmU
メモリ管理ってもVariantの場合はどういうタイミングで::VariantClearが行われるかとか
それをどうコントロールするかに気を使うことになる。

854 :デフォルトの名無しさん:2015/08/25(火) 00:28:47.69 ID:SVRUkRRq
ここのセルの値をここのセルに代入みたいなマッピングが100コほどあるんですが、簡単に早く書く方法ありませんでしょうか。

855 :デフォルトの名無しさん:2015/08/25(火) 00:51:30.40 ID:LKq1O+0D
具体例で書いてください

856 :デフォルトの名無しさん:2015/08/25(火) 01:02:46.86 ID:SVRUkRRq
cells(i,1)=range("a3")
とか、こんなのを100コなんですが。右辺のセルは連続してません。

857 :デフォルトの名無しさん:2015/08/25(火) 01:03:22.37 ID:3oudZYDo
>>854
何を聞きたいのか質問がさっぱりわからん
「早く書く」って、どこに何を書きたいんだ

858 :デフォルトの名無しさん:2015/08/25(火) 01:05:58.97 ID:3oudZYDo
>>856
その右辺のセルの一覧はどっから入手すんだよ
紙にでも印刷されてんのか?

で、左辺には法則があんの?

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



860 :デフォルトの名無しさん:2015/08/25(火) 01:16:53.20 ID:nOqJNbIK
数字が増えるだけなら、ソースをセルで書いてからオートフィルして、エディタに転記することをたまにやる。

861 :デフォルトの名無しさん:2015/08/25(火) 01:32:24.93 ID:3oudZYDo
>>859
右辺は配列、左辺はForで回せば同じような行を並べて書く必要はなくなる

862 :デフォルトの名無しさん:2015/08/25(火) 04:35:55.37 ID:viArKoao
100個程度なら、ワークシート側でハードコーディング用の配列等を関数使って作ってからマクロエディタにコピペした方が早くて楽だったり

863 :デフォルトの名無しさん:2015/08/25(火) 12:07:24.53 ID:57Wb3jlh
FileSystemObjectを最近Excelから活用することを覚えたのですが
Web上にあるファイル(イントラネットにあるいろんな拡張子のファイル)を
コピーやら移動やらFileSystemObjectで操る方法ってありますか?

仕様なのか知らないがhttp://で始まるアドレスにあるファイルは扱えない。

864 :デフォルトの名無しさん:2015/08/25(火) 19:20:53.18 ID:SVRUkRRq
一覧表からハイパーリンクで、単票を開いて修正して保存したら、一覧側に反映されるようにマクロ組むんですが、一覧表開いたままで、一覧表を更新できませんか?
開いてるので更新できないとエラーになるんです

865 :デフォルトの名無しさん:2015/08/25(火) 19:21:56.96 ID:SVRUkRRq
>>860
>>861
>>862

トンくす

866 :デフォルトの名無しさん:2015/08/25(火) 22:55:10.89 ID:trQirQ+3
エラーを無視するコードを書いておいても出てくる
コードの実行が中断されました とは一体何ですか?
メモリーオーバーか何かでしょうか?
どうやったら回避出来るのでしょうか?

867 :デフォルトの名無しさん:2015/08/25(火) 23:03:40.80 ID:Fjt3Kipb
>>833
こうしてみると
やっぱCの構造体/共用体定義って秀でてるなあ

868 :デフォルトの名無しさん:2015/08/26(水) 09:29:51.16 ID:1qA3LFtn
なぜ禿げてるんだ?

869 :デフォルトの名無しさん:2015/08/26(水) 11:55:22.88 ID:CfN5/oSD
>>866
コードを全部もれなくあげてみてくれ。

870 :デフォルトの名無しさん:2015/08/26(水) 20:51:37.95 ID:Mnky30GV
>>866
誰かがBreakキーを押した
ブレークポイントがあった
中断しましたというダイアログを出すコードを書いた

871 :デフォルトの名無しさん:2015/08/26(水) 21:17:40.72 ID:jQcdD1vT
On Error命令は、その関数内でしか有効でないはずだから、エラーが出る可能性がある全ての関数に書く必要がある。

872 :デフォルトの名無しさん:2015/08/27(木) 19:04:23.08 ID:8KYXppfO
ただのコンパイルエラーだったり

873 :デフォルトの名無しさん:2015/08/27(木) 23:39:27.94 ID:DSwpBmOp
>>867
ハード知識であるアライメントを意識できない最近のシステム屋は、
致命的な欠陥を作り込む場合が多い。
マイグレーションとか外部接続システムで。

874 :デフォルトの名無しさん:2015/08/28(金) 06:58:15.39 ID:h/70kqcI
まぁVBAで考えることじゃないけどな

875 :デフォルトの名無しさん:2015/08/29(土) 20:20:06.39 ID:daYUkBJ7
マルチスレッドできないハナクソ

876 :デフォルトの名無しさん:2015/08/30(日) 13:57:40.38 ID:TrC601ZP
VBAで、オートシェイプの図形変更はできるでしょうか。たとえば既にある円を、
四角に変更するとか。手操作だと変更できますが、マクロ記録してみても、
何もコードが作られません。ググってみても、その情報はないような感じです。

877 :デフォルトの名無しさん:2015/08/30(日) 14:41:34.46 ID:0qE+mi+l
>>876
もしかして2007?
2007はシェイプのマクロが記録されないバグがあるから

図形の変更はAutoShapeTypeプロパティに図形の種類を代入するだけ
例えば四角にするにはmsoShapeRectangleを代入すればいい

878 :876:2015/08/30(日) 17:14:45.13 ID:fHgQRyXi
>>877
できました。どうもありがとう。2007です。助かりました。

879 :デフォルトの名無しさん:2015/08/30(日) 21:14:20.31 ID:kboI7nNk
VBAからブラウザでURLを指定して開く方法を学んだのですが
うちの会社の社内のイントラページを開こうとすると
普通の開き方じゃなくVBAで開こうとするとそれを感知してるっぽくて
ログイン画面に飛ばされまたIDとPWを入力しないといけなくなります。

こんなことってよくあるのですか?
どうしてもVBAで開きたい場合その対策はどうすればいいですか?

880 :デフォルトの名無しさん:2015/08/30(日) 21:27:29.95 ID:tJkk5ci/
>>879
何か特殊な仕掛けをイントラに施しているからそうなる
社内システム管理者に聞け

881 :デフォルトの名無しさん:2015/08/30(日) 22:44:25.09 ID:PtUjiQ8D
>>879
まず、
>VBAからブラウザでURLを指定して開く方法
この方法を書かなければ、レス付きませんよ。

882 :デフォルトの名無しさん:2015/08/30(日) 23:14:42.89 ID:0E1Z3mSN
プロキシあたりなんだろうけど、vbaを検知なんてできるのかな。
IEを呼び出してるだけだよね?

883 :デフォルトの名無しさん:2015/08/30(日) 23:34:06.80 ID:tJkk5ci/
今は仮想化やセキュリティやログインパスワード一元化のための仕掛けを
かましてることがあるんで、単純には開けないこともあるよ
とにかく社内システム管理者に聞くことだ

884 :デフォルトの名無しさん:2015/08/31(月) 00:11:29.55 ID:g6VDKMqY
別のwindowでsessionが引き継がれてないかrefererで弾かれてるだけだろ

885 :デフォルトの名無しさん:2015/08/31(月) 01:19:07.67 ID:PyRduorc
>>879
シングルサインオンの認証基盤使っているんだろ。

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

IEオブジェクトの場合は、ログイン済みのIEプロセスを取得するようにすれば良い。
もしくは、VBAで新規IE立ち上げてURLを開いた後に、タイトルを取得してログイン画面だったら、
IDをPWを流し込むようにすれば良い。

886 :デフォルトの名無しさん:2015/08/31(月) 02:55:31.01 ID:7cfpxY0w
Microsoftクエリって内部はado?

887 :デフォルトの名無しさん:2015/08/31(月) 17:58:03.77 ID:+ep0qKm5
>>879
たぶん、普通にIEをダブルクリックで開いてパスワードを入れた後で、VBAから新規にIEオブジェクトを作成してんだと思うけど、
その方法だとパスワード認証情報は引き継がれない
対策は色々あるけど、VBAで何をやりたいかによる

888 :デフォルトの名無しさん:2015/08/31(月) 18:06:40.81 ID:ch2DQs3g
>>887
自動でテキストボックスやチェックボックスに文字をいれたりチェックしたりして
最後にボタンを押したいのです。

889 :デフォルトの名無しさん:2015/08/31(月) 18:48:32.91 ID:lFDVUwIc
>>888
パソコンが完全に自分専用ですぐ終わる処理なら、IDとPWもVBAから入力してやれば全自動にできる
その場合VBAのソースにパスワードを書くことになるので、他人に見られる可能性がある場合は危険すぎておすすめできない

画面のデザインや操作の手順が完全に固定されてるならIEオブジェクトは使わずにSendKeysで操作する方法がある
フォーカスの移動はTabキー、チェックボックスはスペースキーでチェックできる

890 :デフォルトの名無しさん:2015/08/31(月) 18:49:46.39 ID:lFDVUwIc
追記
ボタンを押すのはフォーカスを合わせてEnterな

891 :デフォルトの名無しさん:2015/08/31(月) 19:01:11.41 ID:ch2DQs3g
>>889
なぜIEオブジェクトは使わない方法をすすめるのですか?
SendKeysはその間他の操作ができないしなんか不安になる。

892 :デフォルトの名無しさん:2015/08/31(月) 19:02:04.47 ID:ch2DQs3g
GetElementByIDでちゃんと取れるのですが
問題は先に書いた、ログイン画面が表示されたり変な画面になることです

893 :デフォルトの名無しさん:2015/08/31(月) 19:31:11.66 ID:I/nqUJvX
なんで >>881 に回答 しない/できない 奴の相手するかなぁ...

894 :デフォルトの名無しさん:2015/08/31(月) 19:32:10.78 ID:LuRVaWQV
再度ログイン画面になるってことはセッションが切れてるんだろ
一つのIEオブジェクトで一貫して操作してないとか何かしら問題のあるスクリプトになってんじゃないか

895 :デフォルトの名無しさん:2015/09/02(水) 22:38:31.24 ID:U41rngxq
ワークブック開いて、違うワークブックに転記するコードがあるんですが、ワークブック開かずセルの値を転記するにはどのように書くことできますか?また速度的にはかなり早くなりますか?

896 :デフォルトの名無しさん:2015/09/02(水) 22:43:43.58 ID:Io8ALjDg
ワークブックを開かずにセルを参照することは不可能だよ

897 :デフォルトの名無しさん:2015/09/02(水) 23:07:09.38 ID:LGUC5Icc
zipで展開してxmlを読み込んでパースしてセルの値を取得するしかないね。

898 :デフォルトの名無しさん:2015/09/02(水) 23:25:07.33 ID:U41rngxq
ExecuteExcel4Macroで、対応できるようですね。ただ古いエクセルは使わないほうがいいんでしょうか。

899 :デフォルトの名無しさん:2015/09/03(木) 00:35:37.99 ID:ZIG14SBg
フリーで EXCEL ブックにアクセスするツールってあったよね。
そう言うのじゃダメなん?

900 :デフォルトの名無しさん:2015/09/03(木) 01:10:03.90 ID:7u8Pd6k9
>>895
直接操作はできないけど
ワークセルを介すればどうでしょうか?

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

速度とかは知らない
ちなみに 自分は EXCEL2013

901 :デフォルトの名無しさん:2015/09/03(木) 01:13:49.44 ID:S2+8lDDQ
For Each wname In Windowsですが 、これまで問題なかったのに
最近全部まわらず途中で終わってしまうことが増えました。
windows update でofficeが少し変わったからだと思いますが、
対処方法はありますか?
win7 X64です。

902 :デフォルトの名無しさん:2015/09/03(木) 01:46:10.33 ID:5AuTPVsb
>>900
依頼者じゃないけどやってみたら動いた  そんな手があったのかw

それがいけるならこれでいいじゃん!
Debug.Print Evaluate("='D:\TEST\[TEST1.xlm]Sheet1'!A5")
と思ったが2023エラーがでちゃうね アララ 残念

903 :900:2015/09/03(木) 02:08:19.63 ID:7u8Pd6k9
>>902
じつはこれ
EXCEL97時代にブック壊れてEXCELでオープン出来なくなった時
データサルベージに使った手法なんですよね
全ての破損に対応できるとは限らないけど
これで かなりのデータ復旧できたのよ
なつかしす

904 :デフォルトの名無しさん:2015/09/03(木) 21:18:58.57 ID:gI7qOxsQ
たとえば連続したセルに「Font」「Color」「RGB(255,0,0)」と入っていて、
それを直接的に利用してCells(1,1).Font.Color = RGB(255,0,0)という設定をする、みたいな方法はありませんか?

if文やSelection文を使って処理を分岐するという方法ですと全てのメンバーを網羅するのが大変なので、
あくまでマクロ側は「どのメンバーを」「どう弄るのか」を知らずに盲目的に受け取った文字列をメンバーや引数として処理するという方法が欲しいのですが、
VBAだとこういう処理は難しいのでしょうか?

905 :デフォルトの名無しさん:2015/09/03(木) 21:40:39.13 ID:8gUdvpRg
>>904
無理じゃないかなあ
その三つをつなぐドットやイコールは誰がどうやって指示するの?

906 :デフォルトの名無しさん:2015/09/03(木) 22:07:28.37 ID:5AuTPVsb
>>904
無理です
間接的に利用してください

907 :デフォルトの名無しさん:2015/09/03(木) 22:45:46.77 ID:WEVKW98e
演算子の問題が解決したとして、テキストファイルに書き出してVBAプロジェクトオブジェクトからインポート

908 :デフォルトの名無しさん:2015/09/03(木) 23:06:04.80 ID:PAfGEiTT
>>904
望みがありそうな方法としては

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

くらいか

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

代替案も思い付かず…

910 :デフォルトの名無しさん:2015/09/04(金) 00:45:19.08 ID:Ehviu2S7
>>904
「VBAだと」って言うけど、そういうことができる言語ってあるの?

911 :デフォルトの名無しさん:2015/09/04(金) 01:33:24.64 ID:ExFTHLbB
いわゆるEvalが実装されてる言語なら出来そうだけど、ExcelのVBAでは無理だな
EvaluateとCallByNameで何とか出来るかもしれんが、汎用的には無理だと思う

912 :デフォルトの名無しさん:2015/09/04(金) 02:18:22.69 ID:PCIPeDCd
>>904
プロシージャをVBAで生成してそれを実行するとか
A1,B1,C1へそれぞれ「Font」「Color」「RGB(255,0,0)」とあったとして

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

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

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

End Sub

上はただつなげてるだけだから
セル内容チェックを十分しないと コンパイルエラーになる可能性が大きいけど

913 :デフォルトの名無しさん:2015/09/04(金) 05:42:14.15 ID:HtSUMw5S
>>905-912
回答ありがとうございます。
とりあえずApplication.Runで何とか出来ないか試してみたいと思います。

914 :デフォルトの名無しさん:2015/09/04(金) 12:34:46.44 ID:5E7pI8p5
使うAPI名が決まってるなら名前と関数の対のテーブルで擬似的に呼び出すって方法が
つっても関数がファーストクラスじゃないんだよねえ
VBやめてjavascriptで実装してVBAから渡すとか・・・

915 :デフォルトの名無しさん:2015/09/04(金) 13:28:33.31 ID:5E7pI8p5
つーか>>912でいいじゃん
面白いな

916 :デフォルトの名無しさん:2015/09/04(金) 19:20:11.14 ID:bKoadVKQ
誰か開いてて読み取り専用の場合はworkbook_openに書いたマクロを無効にして、そのブックをダブルクリックで開きたいのですが、どのように書いたらいいですか?

917 :デフォルトの名無しさん:2015/09/04(金) 19:41:44.85 ID:PCIPeDCd
>>916
読み取り専用で開いたかどうかは
ThisWorkbook.ReadOnly
で判定できるよ

918 :デフォルトの名無しさん:2015/09/04(金) 20:18:28.18 ID:bKoadVKQ
>>917
そうなんですよね。ブックオープンが走る前にそのプロパティーで判別できたらいいんですけど

919 :デフォルトの名無しさん:2015/09/04(金) 20:26:04.68 ID:PCIPeDCd
>>918
ブックオープンの最初で判定させればいいだけでは?
ブックオープンが動作した所で 一番最初に判定して EXIT SUB とかすれば
本来の処理が実行されないので 問題なくね

920 :デフォルトの名無しさん:2015/09/04(金) 20:27:29.34 ID:ntJe9Vs/
>>918
オープンして読み取り専用なら何もせず閉じるコードを
Workbook_openの最初に追加すればいいじゃないか

921 :デフォルトの名無しさん:2015/09/04(金) 21:14:08.24 ID:bKoadVKQ
そのとおりですね。排他処理がめんどくさい

922 :デフォルトの名無しさん:2015/09/04(金) 21:38:02.04 ID:A59C16Ao
>>921
排他処理は Excel がやるだろ
何が難しいんだ?

923 :デフォルトの名無しさん:2015/09/04(金) 21:49:51.19 ID:bKoadVKQ
>>922
その排他処理って読み取り専用になることをいってますか?
ファイルサーバで複数人が触るブックで、どうデータを入力すとか、順序とか考えるとこんがらがってきた

924 :デフォルトの名無しさん:2015/09/04(金) 22:30:27.78 ID:HtSUMw5S
根本的な話として複数人が同時に触るんならエクセルファイルじゃなくてアクセスにすべきじゃねぇかな。
エクセルって基本的に電卓の亜種であってデータベースソフトじゃないし。

925 :デフォルトの名無しさん:2015/09/04(金) 22:44:40.65 ID:uxFbuttR
>>923
そりゃ運用の問題だ
とりあえずブックの共有でいいんじゃね
マクロは知らんけど

926 :デフォルトの名無しさん:2015/09/04(金) 23:28:13.59 ID:bKoadVKQ
>>925
運用も言うこと聞くようなおっさん達じゃないんだよなー。文句だけ言う奴らで

927 :デフォルトの名無しさん:2015/09/04(金) 23:42:32.76 ID:uxFbuttR
お前んところの事情なんて語られてもしょうがない

928 :デフォルトの名無しさん:2015/09/04(金) 23:43:00.47 ID:VusSFEWo
そりゃまぁ、2ちゃんねるで質問して喜んでるような輩に運用任せてる時点でお察し

929 :デフォルトの名無しさん:2015/09/04(金) 23:52:57.51 ID:TmLEs7On
ここでの運用は特定の人たちを指す言葉ではなく、活用とか行動とか言う意味

930 :デフォルトの名無しさん:2015/09/05(土) 00:18:44.48 ID:FRI4E2ZT
>>928
どこで喜んでるんだよw

931 :デフォルトの名無しさん:2015/09/05(土) 02:42:20.04 ID:CmBaCyqy
>>924が正論かな。

多数の人が一度に書き込むときの制御はEXCELに向いていない。

何かファイルサーバ上で共有切ってるだけで不安定な気がする。

中にはOpenOfficeでアクセスしようとする奴もいるし。

932 :デフォルトの名無しさん:2015/09/05(土) 03:14:44.10 ID:3MtyEdK2
SharePointってあったけど、あれはどうなん?

933 :デフォルトの名無しさん:2015/09/05(土) 13:16:01.25 ID:x7KkU3nJ
ショートカットファイルがたくさんありますが
今回、そのドライブレターを変えたのと、半分くらいはフォルダを作ってそれに入れたのでリンクが少しだけ規則的にかわりました。

FileSystemObjectというのを知っていままで使ったことがありますが
このFileSystemObjectを使ってショートカットファイルのリンク先を変更するには
どうすればいいでしょうか?

934 :デフォルトの名無しさん:2015/09/05(土) 14:25:00.38 ID:ZKXW4+L0
>>933
スレ違いでは?
Excelに全く関係ないと思うんだが

935 :デフォルトの名無しさん:2015/09/05(土) 14:31:39.79 ID:Hu04yitT
漠然とした質問なんですが・・・

VBAで色々作るの面白いから仕事を自動化させてるんだが
コントロールフォームのボタンを沢山作り過ぎて逆に見栄えが悪い&使いづらくなってしまった・・・

ボタン押すだけで特定の業務を自動化できるのはいいんだがいかんせんボタンが多すぎ
こういう場合はどうしたはいいんだ?
何か定石というかアイディアないですか?

936 :デフォルトの名無しさん:2015/09/05(土) 14:37:21.77 ID:ZKXW4+L0
>>935
君はさらにスレ違い
もはやVBAの話題ですらない

937 :デフォルトの名無しさん:2015/09/05(土) 14:42:39.88 ID:L+jn/gme
>>935
同一の動作をするボタンをまとめて、組み合わせで特定の作業が出来る様にするとか、
動作をリストボックス表示にしてリストから選択した作業だけ実行する様にするとか。

938 :デフォルトの名無しさん:2015/09/05(土) 14:51:35.90 ID:wnxJPoz8
>>933
Office TANAKA - 番外編[lnkファイルのリンク先を取得する]
http://officetanaka.net/other/extra/tips12.htm

939 :デフォルトの名無しさん:2015/09/05(土) 14:59:22.82 ID:84U+9ZQ6
>>935
ボタンをセルと同サイズにして縦に並べて、横に進捗状況をプロットする様にしてる
順番に押していかないとエラーで止まる様にしたりもする

940 :デフォルトの名無しさん:2015/09/05(土) 15:01:26.21 ID:x7KkU3nJ
>>935
フォームに「マルチページ」のコントロールを貼り付けて
ページごとに似通った機能をまとめたまえ。

941 :デフォルトの名無しさん:2015/09/05(土) 15:17:17.15 ID:x7KkU3nJ
>>938
謝謝!

942 :デフォルトの名無しさん:2015/09/05(土) 15:47:59.73 ID:x7KkU3nJ
LnkFile.TargetPathは、読み取りはできても書き込みはできないようなのですが。

943 :デフォルトの名無しさん:2015/09/05(土) 15:49:08.28 ID:x7KkU3nJ
ところで
Sub Sample2()
 Dim WSH, LnkFile, DeskTopPath As String, LnkFileName As String
 Set WSH = CreateObject("WScript.Shell")
 DeskTopPath = WSH.SpecialFolders("Desktop")
 LnkFileName = DeskTopPath & "\メモ帳.lnk"
 Set LnkFile = WSH.CreateShortcut(LnkFileName)
 MsgBox LnkFile.TargetPath
 Set LnkFile = Nothing
 Set WSH = Nothing
End Sub
のようなコードがあったとして、LnkFileのクラス(?)のメンバをオブジェクトブラウザで見れるようにする方法はありますか?

944 :デフォルトの名無しさん:2015/09/05(土) 16:35:27.01 ID:x7KkU3nJ
>>942
LnkFile.Save
とすればできるよ

945 :デフォルトの名無しさん:2015/09/05(土) 16:37:12.71 ID:x7KkU3nJ
>>944
おお、すばらしい!!!

946 :デフォルトの名無しさん:2015/09/05(土) 16:52:31.34 ID:x7KkU3nJ
>>943
Window Script Host Object Modelを参照設定したまえ

947 :デフォルトの名無しさん:2015/09/05(土) 18:53:28.77 ID:McuB2/kQ
>>939
> 順番に押していかないとエラーで止まる様にしたりもする
俺は押せないボタンが事前にわかってるなら Enabled = False にするな

948 :デフォルトの名無しさん:2015/09/06(日) 06:51:37.28 ID:uAyrTmIH
基本的なことで、はまっています。2007です。UserFormに、
チェックボックス3個あって、どれかにチェックが入ると
他はチェックがオフになるようにしたいんですが、うまくいきません。

Private Sub CheckBox1_Click()
CheckBox1.Value = True
CheckBox2.Value = False
CheckBox3.Value = False
end sub

同様に、CheckBox2,3も、それぞれ自身がTrueでほかはFalse。
CheckBox1をクリック → チェック入る
CheckBox2  〃  →  〃     1 チェック消える
CheckBox3  〃  →   〃     2   〃
CheckBox1または2クリック → チェックはいらず、3チェックはいったまま。(A)

最初にCheckBox3クリックすると、チェックはいり、その後
1または2クリックしても、(A)の状態。なせでしょう。
(フレームに入れてみても、それだけだと複数チェックがはいってしまう。)

949 :デフォルトの名無しさん:2015/09/06(日) 09:02:44.39 ID:wPdoKzWW
>>948
check1クリックイベントハンドラー内に入った時点でcheck1の値は反転しているので、自身の値は設定不要。
そしてcheckの値を反転させると、それぞれのクリックイベントが発生する。

この辺りの挙動を整理して実装しないと、変なループが発生しますよ。
無限ループとか

950 :デフォルトの名無しさん:2015/09/06(日) 09:11:51.51 ID:Rqv/7r06
「どれかひとつを選択」ならオプションボタンがいいよ。

951 :デフォルトの名無しさん:2015/09/06(日) 09:15:40.01 ID:pMKgJlgc
クリックされたときに他のチェックをはずす処理が必要なのは自身の値がtrueになったときだけだよね

if check1.value = falseのときはexitするようにすればいいんじゃない?

952 :デフォルトの名無しさん:2015/09/06(日) 09:34:13.01 ID:7OdEXCxT
>>950
オプションボタンだとオフにできないんじゃない?

>>948
チェックボックス+排他
で山ほどサンプルあるでしょ

953 :デフォルトの名無しさん:2015/09/06(日) 10:31:59.79 ID:AH5FZdvj
CreateObjectじゃなくGetObjectでWordやOutlookを開きたいんです。
なぜならすでに開いてたら二重で開くことになるから。
でももしもまだそれを開いてなかったらエラーがでてえらいこっちゃとなります。
これは定跡的にはどうやって対策しますか?

954 :デフォルトの名無しさん:2015/09/06(日) 11:10:34.16 ID:8yRgk1H4
チェックボックスで排他とか変なUI作るなよ

955 :948:2015/09/06(日) 11:41:16.35 ID:3umPcbKU
みなさん、アドバイスありがとうございました。
恥ずかしながら、チェックボックスとオプションボタンをよく理解しておりませんでした。
オプションボタンで、解決しました。いろいろ、勉強になりました。どうもです。

956 :デフォルトの名無しさん:2015/09/06(日) 16:33:37.25 ID:tXhFn+ho
>>953
GetObjectでエラーになったらCreateObjectすれば

957 :デフォルトの名無しさん:2015/09/06(日) 16:51:05.77 ID:Ir/JiN9v
>>954
でもマジで作るやついるんだよ
最初見た時はマジで意味わからんかった
なんか(間違った)独自性を出したかったんだろうか...

958 :デフォルトの名無しさん:2015/09/06(日) 17:09:04.33 ID:kcKZyiZs
ラジオボタンを知らなかったんだろ

959 :デフォルトの名無しさん:2015/09/06(日) 17:10:50.93 ID:tXhFn+ho
>>954 >>957
いやWindowsServerの役割と機能とか見たことない?
チェックボックスはただのOn/Offスイッチ的な側面もあるんだよ
なぜか他に適当なコントロールも無いし

960 :デフォルトの名無しさん:2015/09/06(日) 17:54:40.03 ID:Ir/JiN9v
>>959
> いやWindowsServerの役割と機能とか見たことない?

どのバージョンの話?
2003, 2008, 2012 見たけど排他になってるやつなんてないけど?

> チェックボックスはただのOn/Offスイッチ的な側面もあるんだよ

つか、その機能しかないけど?

961 :デフォルトの名無しさん:2015/09/06(日) 18:02:14.05 ID:AH5FZdvj
>>956
いやエラーになる前にCreateObjectしたいのですが。
そのためのif文でなにを書けばいいのでしょう?

962 :デフォルトの名無しさん:2015/09/06(日) 18:33:55.51 ID:JKlgepEb
>>961
WordやOutlookが開いているかどうかはどうやって調べるつもり?
その為のGetObjectじゃないか とおもうが

GetObject成功・・・・開いてた →取得したオブジェクトを利用
GetObject失敗・・・・開いてない→CreateObjectしてそれを使用

963 :デフォルトの名無しさん:2015/09/06(日) 18:39:56.86 ID:tXhFn+ho
>>960
スイッチとして扱うなら排他でも何も違和感ないでしょって話

964 :デフォルトの名無しさん:2015/09/06(日) 19:09:18.56 ID:Ir/JiN9v
>>963
お前はそうかもしれないけど大多数の人はそうじゃない
反論するなら有名どころのソフトで排他になってる例を 10個ぐらい挙げてくれ

965 :デフォルトの名無しさん:2015/09/06(日) 19:12:40.91 ID:JSf18249
>>964
それは無茶言うもんやろ。
無茶なこと言うて相手黙らせたら満足するんかい。
しょーもないやっちゃな。

966 :デフォルトの名無しさん:2015/09/06(日) 19:13:34.11 ID:JSf18249
しょーもないやつやな言うとんねん。
ホンマしょーもないわ、かー。

967 :デフォルトの名無しさん:2015/09/06(日) 19:40:43.00 ID:Ir/JiN9v
>>965
違和感あるから誰もそんな UI にしない
ないなら、そう言う UI がいくらでもあるはず
しょうもないとか言う負け犬の遠吠えは恥ずかしいだけ

968 :デフォルトの名無しさん:2015/09/06(日) 19:44:17.84 ID:JSf18249
>>967
いくらでもあるんやったら10個ぐらい挙げてくれ
お前が言うたんやからないくらでもあるんやろ
はよしてや

969 :デフォルトの名無しさん:2015/09/06(日) 19:46:11.11 ID:JSf18249
有名なやつやで
有名なやつ10個や
いくらでもある言うたんやから簡単やろ
はよしてや

970 :デフォルトの名無しさん:2015/09/06(日) 20:26:59.64 ID:8yRgk1H4
独立オプションの為のUIがチェックボックス
排他オプションの為のUIがオプションボタン
あえてそのセオリーに逆らう必然性は全くない

971 :デフォルトの名無しさん:2015/09/06(日) 20:27:13.49 ID:Ir/JiN9v
>>963 の言う通り排他でも何も違和感) ないなら、そう言う UI がいくらでもあるはず

あるなんてどこに書いてあるんだ?
まさか、「はず」の意味すら理解できないのか?

972 :デフォルトの名無しさん:2015/09/06(日) 20:33:21.40 ID:JSf18249
>>971
いくらでもあるはずや言うたやんか。
あるんやったら言うてみい。
言えへんのやろ?せやったら他の人にも言うたらあかんわ。
それを無茶や言うとんねん。無茶言うたらあかん。
無茶だけはやめときい。あんたのためやで。
排他でもなんら違和感ない。それでええな?

973 :デフォルトの名無しさん:2015/09/06(日) 20:40:24.60 ID:Ir/JiN9v
>>972
わざわざかっこ付きで書いてあるんだからちゃんと読め
仮定法わからないならしょうがないが w

974 :デフォルトの名無しさん:2015/09/06(日) 20:48:27.41 ID:JSf18249
>>973
そんなんどうでもええ。
無茶だけは言うたらあかん。
チェックボックスで排他はええ。

975 :デフォルトの名無しさん:2015/09/06(日) 21:12:35.12 ID:Ir/JiN9v
理解できなかったのか... w

976 :デフォルトの名無しさん:2015/09/06(日) 21:16:58.49 ID:JSf18249
>>975
どうでもええとこにこだわりもてへん言うてんねん。
本筋から外れとるやろ。仮定法の話違うかったやろ。
本筋見失ってどうすんねんな。国語のスレちゃう。Excel VBAのスレや!!

977 :デフォルトの名無しさん:2015/09/06(日) 21:29:51.58 ID:NotYgcdX
VBA関係ないから排他的なチェックボックスの話題はおしまい

978 :デフォルトの名無しさん:2015/09/06(日) 22:51:05.31 ID:TqvVUxNb
>>976
そのうざい似非関西弁口語口調目障りだから止めろ

979 :デフォルトの名無しさん:2015/09/06(日) 22:54:27.27 ID:JSf18249
>>978
このたびは不快な思いをさせてしまい誠にすんまへんでした。

980 :デフォルトの名無しさん:2015/09/07(月) 00:20:37.43 ID:cu3gW1D3
すんまへんでんねんまんねん

981 :デフォルトの名無しさん:2015/09/07(月) 06:19:18.31 ID:iIih6qgJ
排他のチェックボックス作るような奴はおかしい奴ってことがはっきりしたな

982 :デフォルトの名無しさん:2015/09/07(月) 07:17:25.51 ID:o9/XMBwE
次スレは何処?

983 :デフォルトの名無しさん:2015/09/07(月) 07:55:12.25 ID:7q49S6cJ
>>982
ここ?
Excel VBA 質問スレ Part37 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1433920729/

984 :デフォルトの名無しさん:2015/09/07(月) 13:54:06.26 ID:qNXpHtIR
>>983
そこでいいの?

985 :デフォルトの名無しさん:2015/09/07(月) 14:07:41.21 ID:qNXpHtIR
じゃー梅

986 :デフォルトの名無しさん:2015/09/07(月) 19:03:09.19 ID:E2JS6OsF
>>982-984
そこは勝手に改悪したテンプレを盾にしてスレチだなんだと五月蝿いのが居るからダメ

本来の次スレはこっちに立てた
http://peace.2ch.net/test/read.cgi/tech/1441619979/

987 :デフォルトの名無しさん:2015/09/07(月) 22:43:17.03 ID:EWpXgtHr
>>986


では埋めだな

988 :デフォルトの名無しさん:2015/09/07(月) 23:45:23.23 ID:nzOhKJqK
>>986
乙です

989 :デフォルトの名無しさん:2015/09/08(火) 00:11:02.38 ID:oVeubNzq
ゆっくり進行スレなのに埋める意味があるのかな

990 :デフォルトの名無しさん:2015/09/08(火) 00:18:05.36 ID:knpqgMY3
980過ぎた翌日に自動的に落ちるシステムだから埋めても埋めなくても同じ

991 :デフォルトの名無しさん:2015/09/08(火) 06:41:21.95 ID:ExO7c6Yl
うめしばー

992 :デフォルトの名無しさん:2015/09/08(火) 06:55:07.33 ID:u1cdNMtc
Debug.Print "埋め"

993 :デフォルトの名無しさん:2015/09/08(火) 16:10:27.39 ID:GKBL/Ew7
うめてんてー

994 :デフォルトの名無しさん:2015/09/08(火) 18:21:28.19 ID:knpqgMY3
Hello 埋め world

995 :デフォルトの名無しさん:2015/09/08(火) 18:38:32.25 ID:m7aBfM8f
sub()

996 :デフォルトの名無しさん:2015/09/08(火) 22:10:12.77 ID:oGp/KliX
次スレ
Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/

997 :デフォルトの名無しさん:2015/09/09(水) 02:15:08.16 ID:uHaCyZBl
Exit Sub

998 :デフォルトの名無しさん:2015/09/09(水) 02:31:10.17 ID:qFTQoAT6
980過ぎた翌日に自動的に落ちるシステムの喪失

999 :デフォルトの名無しさん:2015/09/09(水) 06:14:26.58 ID:ys1D99oR
うめちゃん

1000 :デフォルトの名無しさん:2015/09/09(水) 06:50:57.03 ID:aBvbVIMR
Excel VBA 質問スレ Part38 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

mmpnca
lud20160210123558ca
このスレへの固定リンク: http://5chb.net/r/tech/1420841190/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  
このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ



全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Excel VBA 質問スレ Part37 [転載禁止]©2ch.net ->画像>6枚 」を見た人も見ています:
Excel VBA 質問スレ Part61
Excel VBA 質問スレ Part68
Excel VBA 質問スレ Part64
Excel VBA 質問スレ Part72
Excel VBA 質問スレ Part62
Excel VBA 質問スレ Part60
Excel VBA 質問スレ Part69
Excel VBA 質問スレ Part65
Excel VBA 質問スレ Part77
Excel VBA 質問スレ Part74
Excel VBA 質問スレ Part54
Excel VBA 質問スレ Part48 [無断転載禁止]©2ch.net
Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net
Excel Python 質問スレ
Excel ピボット Power Pivot DAX関数 質問スレ
Angel Love Online 質問スレ Part27
【RIFT】 Rift: Planes of Telara 質問スレ Part5
Le Ciel Bleu ル・シエル・ブルー 質問スレ Part13
【TESO】The Elder Scrolls Online 質問スレ Part3
【TESO】The Elder Scrolls Online 質問スレ Part24
【TESO】The Elder Scrolls Online 質問スレ Part27
【TESO】The Elder Scrolls Online 質問スレ Part42
【TESO質問】The Elder Scrolls Online 質問スレ Part1
【TESO】The Elder Scrolls Online 質問スレ Part25 [無断転載禁止]
【TESO】The Elder Scrolls Online 質問スレ Part21
【PS/XB】Elden Ring エルデンリング 質問スレ Part3
【TESO】The Elder Scrolls Online 質問スレ Part2
【TESO】The Elder Scrolls Online 質問スレ Part7
【TESO】The Elder Scrolls Online 質問スレ Part26 [無断転載禁止]
【TESO】The Elder Scrolls Online 質問スレ Part19
【TESO】The Elder Scrolls Online 質問スレ Part28
【TESO】The Elder Scrolls Online 質問スレ Part8 [無断転載禁止]
Access VBA 質問スレ Part1
foobar2000 質問スレ Part35
foobar2000 質問スレ Part36
【FM】Football Manager 質問スレ 37
【FM】Football Manager 質問スレ 34
【マキグソ神話】エルアーク -ELLARK- 質問スレ21
Tasker 質問スレ 17
英雄島 質問スレ Part2
d払い 質問スレ Part1
SRPG STUDIO 質問スレ
幻想神域 質問スレ Part40
iTunes 質問スレ Part17
PSVita 質問スレ part3
PayPay 質問スレ Part1
ポケモンGo 質問スレ Lv.63
幻想神域 質問スレ Part42
Android 質問スレ ☆125
LINE Pay 質問スレ Part2
ポケモンGo 質問スレ Lv.68
au by KDDI 質問スレ Part201
ポケモンGO 質問スレ Lv35
ポケモンGO 質問スレ Lv19
Warframe 質問スレ RANK35
ポケモンGo 質問スレ Lv.65
RIUS ONLINE 質問スレ Part26
ポケモンGo 質問スレ Lv.58
ポケモンGo 質問スレ Lv.55
ポケモンGo 質問スレ Lv.61
【PC】Terraria 質問スレ Part7
三国ヒーローズ 質問スレ Part6
Fallout4 PC 質問スレ 23cap
au by KDDI 質問スレ Part.237
Tree of Savior 質問スレ Part32
06:45:26 up 52 days, 7:48, 2 users, load average: 6.60, 11.70, 16.71

in 0.73029804229736 sec @0.73029804229736@0b7 on 030620