トップページtech
1002コメント361KB

Excel VBA 質問スレ Part41©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net2016/04/27(水) 04:11:46.79ID:Nk+oP5xR
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part40
http://echo.2ch.net/test/read.cgi/tech/1455817784/

※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 122
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
0002デフォルトの名無しさん2016/04/27(水) 04:15:15.99ID:Nk+oP5xR
実質前スレ

Excel VBA 質問スレ Part37
http://echo.2ch.net/test/read.cgi/tech/1433920729/
0003デフォルトの名無しさん2016/04/27(水) 21:55:10.70ID:56VYowtZ


前スレでQiitaのExcelタグ記事が出てたからいろいろ見たけどもう疲れた
0004デフォルトの名無しさん2016/04/28(木) 05:56:31.13ID:HABRmm6+
Excel2010です

別のExcelファイルから参照している複数のセルに並び替えをしたいと考えています
その際空白は省きたいです

普通に並び替えても数式が狂ってしまいますので、文字の入ってるセルの行だけ抽出して並び替えられるようにしたいのですが
数式を文字として認識しているのか
空白を省けません

何か方法はありますでしょうか?
0005デフォルトの名無しさん2016/04/28(木) 06:08:09.63ID:R0Skxwpj
.value==""にマッチしないの?
0006デフォルトの名無しさん2016/04/28(木) 06:20:12.22ID:kK5ruPHc
>>4
Value2
0007デフォルトの名無しさん2016/04/28(木) 06:23:08.26ID:HABRmm6+
>>5
valueは…表示されません
セルに文字がある場合は「1」ない場合は「0」と表示させてMARCH関数で該当するかしないかを表そうと思っています

参照元が空白で、参照先も空白になるのですが、セルには数式が入力されていて
空白でも「1」と表示されてしまいます
0008デフォルトの名無しさん2016/04/28(木) 06:38:20.09ID:HABRmm6+
http://m.chiebukuro.yahoo.co.jp/detail/q12120795352
他サイトからの引用で申し訳ありませんが、やりたい事はこれと同じです
異なるのは、文字の入ってるセルが、他のファイルからの参照先になっていますので
「=[他ファイル.xls]などの数式が入ってしまっています
0009デフォルトの名無しさん2016/04/28(木) 06:39:31.82ID:R0Skxwpj
VBAなのこれ
0010デフォルトの名無しさん2016/04/28(木) 06:45:42.55ID:HABRmm6+
あ、VBAではないですね
すみませんでした…
0011デフォルトの名無しさん2016/04/29(金) 00:24:13.71ID:5uxjIDtf
VBA界に新しい話題ってないの?
0012デフォルトの名無しさん2016/04/29(金) 00:37:59.90ID:nMX0BLZ6
ないと思う
たぶんこのスレを見に来てももうあなたが新たに得られるような情報はないかと
0013デフォルトの名無しさん2016/04/29(金) 00:44:23.68ID:5uxjIDtf
そうなのか
ステキな出会いを期待してたのに
0014デフォルトの名無しさん2016/04/29(金) 01:43:24.44ID:L3/tzjQ7
.netにしろやクソMS
0015デフォルトの名無しさん2016/04/29(金) 02:20:11.85ID:4zpSkGz3
>>14
すでに.NETからEXCELを使う方法は提供されているわけで
そういう人はVSTO使えばいいというのがMSの方針じゃなかろうかね
0016デフォルトの名無しさん2016/04/29(金) 03:27:47.90ID:22q9RBL3
VBAの強みってOffice製品の機能の一部として捉えられてるおかげで
会社のセキュリティすり抜けられるっていう一点だけだから
好きなIDEが使えるならVBAにこだわる人間は少ないんじゃないか
0017デフォルトの名無しさん2016/04/29(金) 03:46:43.37ID:L3/tzjQ7
プログラミングができる、好きな学生が開発以外に行く→プログラミングができることを会社でポロっと言ってしまう→VBA地獄
こんな感じだよね。勝手にソフトウェア入れるわけにもいかないし、VBAじゃダメなの?と聞かれても俺じゃ納得させられないよ
0018デフォルトの名無しさん2016/04/29(金) 08:38:57.84ID:WJMtHckd
VBAさえ使いこなせない学生は他の言語いってもダメだろう
0019デフォルトの名無しさん2016/04/29(金) 08:54:03.96ID:KCDOC8aI
>>15
VBAみたいに気楽に使えるようにして欲しいわ
0020デフォルトの名無しさん2016/04/29(金) 09:54:43.92ID:5uxjIDtf
気軽じゃあないんだ・・・
0021デフォルトの名無しさん2016/04/29(金) 11:08:32.92ID:22q9RBL3
Visual Studioの許可申請通すための妥当な理由ってなんかあるかな
0022デフォルトの名無しさん2016/04/29(金) 11:13:45.24ID:hLQru2tB
.net使ってみたいんだけど、どこかにまとまった解説サイトってあるの?
0023デフォルトの名無しさん2016/04/29(金) 12:31:42.69ID:pnlNs8XQ
マジで集計マクロみたいなただの便利ツール作るのは苦行だな
自分でやれよと思ってしまう
みんなでクラス構成考えたりコードレビューとかしながら成長できる環境なら別にvbaでも構わんよ
0024デフォルトの名無しさん2016/04/29(金) 12:46:25.08ID:5uxjIDtf
エクセルVBAはツールとライブラリに分けよう

ツール: 電卓と一緒。大抵のことは自分でやれ。引き継ぎ対象にしない。
ライブラリ: 担当者がメンテする。ちゃんと引き継ぐ。
0025デフォルトの名無しさん2016/04/29(金) 12:49:00.15ID:Iep7JOlc
お前らエクセルちゃんをコキ使い過ぎやでマジに
0026デフォルトの名無しさん2016/04/29(金) 13:13:33.73ID:onpOySfz
>>21
こう言うツールを作れば作業時間が○○ぐらい減るので
△△円/月程度の費用削減が可能です
って説明すればいいかと
0027デフォルトの名無しさん2016/04/29(金) 13:34:23.20ID:oVc0CQsa
俺の作業時間が減っても正直金にならんしな
残業は今でもほぼ無いし、早く終わったからってすぐにやるべき仕事もない
0028デフォルトの名無しさん2016/04/29(金) 13:42:07.75ID:22q9RBL3
作業時間が延びる原因って作業環境云々よりも
やれ会議だ、やれ相談だと呼ばれて中断せざるを得ない場合の方が比重が高そう
だいたい作業時間短縮ってツールよりもライブラリの充実の方が問題になるし・・・

けど考えてみれば俺以外分からないんだから、ツールくれれば効率上がりまっせって言うのはありか
0029デフォルトの名無しさん2016/04/29(金) 13:43:50.31ID:UCIGz4cp
FINDでヒットしたセルに連番を振っていくんだけど、
右から列方向で連番を振る方法ありますか?

オプションで逆方向xlPreviousをつけても、
一番右下に1が振られるだけで、後の順序は
左から列方向したのと同じなのですが。
0030デフォルトの名無しさん2016/04/29(金) 13:55:01.28ID:22q9RBL3
>>29
Sub test(検査範囲 As Range, 検査値 As String)
k = 0 '連番開始値
xr = 検査範囲

Top = LBound(xr, xlRows)
Bottom = UBound(xr, xlRows)
Left = LBound(xr, xlColumns)
Right = UBound(xr, xlColumns)

For i = Right To Left '右から左
For j = Top To Bottom '上から下
If xr(j, i) = 検査値 Then
検査範囲.Range(j, i) = k
k = k + 1
End If
Next
Next
End Sub

こういう事?
0031デフォルトの名無しさん2016/04/29(金) 14:06:46.66ID:zF/UNtdR
>>28
expressでいいんでしょ?
0032デフォルトの名無しさん2016/04/29(金) 14:19:18.90ID:Fcw6JTQb
>>27
他の人の業務も早く正確にミスなく出来る
リードタイムも減って機会損失が少なくなるとか
0033デフォルトの名無しさん2016/04/29(金) 14:33:09.04ID:UCIGz4cp
>>30
FINDの引数でどうにかならないかと思っていましたが、
やっぱりforとifで判定していくしかないんですね。
ありがとうございます。参考になりました。
0034デフォルトの名無しさん2016/04/29(金) 16:56:22.77ID:VQFWKbyJ
>>29 >>33
通常のFINDとは逆順で検索したいんだよね?
右下から左に検索 & 下から上

1回目のみ FIND(・・・ ,SearchDirection:=xlPrevious,SearchOrder:=xlByRows)
2回目以降 FindPrevious()
でよくね?
やりたい事の意味を間違って受け取ってるかな?
0035デフォルトの名無しさん2016/04/29(金) 19:35:10.13ID:UCIGz4cp
>>34
言葉足らずですみません。
6 3
5 2
4 1
ではなくて、

4 1
5 2
6 3
という意図でした。

123
456
や、
1 4
2 5
3 6
はFINDの引数だけでできたので、右から列方向もさくっとできないかと思ったのでした。
0036デフォルトの名無しさん2016/04/29(金) 21:15:23.39ID:sUt0Q0jr
Excel2003から2013に変えたら、
時々、シートに配置したボタンが、どこかに飛んでいくようになった。

ブック名やシート名を指定してるのに、
全然関係ないセルに値を書き込みにいったり。

俺がバグってるだけ?
0037デフォルトの名無しさん2016/04/30(土) 01:05:44.58ID:bnyf9CY9
vbaのフォームは、フォームやコントロールのイベントを感知して、処理コードを書くことが出来ます。


それとは逆に、シートのセル例えば Range("A1")の値が変化することをイベントとすることで、
例えば、フォームのTextBox1の値を変化させることはできるかな?


超上級レベルのPGさん(C#, VB,net, Java経験者)、その方法を教えて。
0038デフォルトの名無しさん2016/04/30(土) 01:23:26.23ID:bQzkVaJ6
適当なセルに
=foo(A1)

と入れときゃいいんじゃないの?
その関数 foo の中でTextBox1の値を変化させる
0039372016/04/30(土) 01:27:16.13ID:bnyf9CY9
フォーム実行中にRange("A1")の値は、
外部アプリ、例えば、UWSCで書き込むものとします。
0040372016/04/30(土) 01:59:49.62ID:bnyf9CY9
自己解決しました。
0041372016/04/30(土) 02:03:47.30ID:bnyf9CY9
超上級レベルのPGさん(C#, VB,net, Java経験者)へ、

vbaでもvb.net のような、自作イベントなんてできるの?
RaiseEventのような。
0042デフォルトの名無しさん2016/04/30(土) 04:06:29.80ID:3b/0XXdC
>>41
VB6と一緒で一応ある。

以下のMSDNに載っている使用例のサンプルは、
VB6のコードのようでVBAで使うにはコントロール名など若干修正は必要だが

RaiseEvent ステートメント
https://msdn.microsoft.com/ja-jp/library/office/gg264327.aspx
0043デフォルトの名無しさん2016/04/30(土) 05:52:32.49ID:nOun1cZC
Excel で、インベーダーゲームを作っている本もあるから、

たぶん、様々なイベントもあるのだろう
0044デフォルトの名無しさん2016/04/30(土) 08:01:04.45ID:YWn/7cOt
>>41
あるものとないものがある。
ま、モノが違うから当然だけど。

例えば一定時間でイベントが発生するようなものは確かVB.Netでは3種類くらいあったと思ったけど、
VBAでは無いのでAPIを使ってコールバックさせるような感じで組まなければいけなかったりとか
0045デフォルトの名無しさん2016/04/30(土) 12:10:14.21ID:uVz81x78
GitHubで匿名通信(Tor、i2p等)ができるBitComet(トラッカーサイト不要でDHTだけで日本語検索可能)
みたいな、BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenant(純粋P2Pのファイル共有ソフト)の完成が待ち遠しいプログラミングできないアスペルガーw
0046デフォルトの名無しさん2016/04/30(土) 12:37:56.63ID:3TsFkhxL
VBAからブラウザを操作するとき
いっぱいページ開いてタブを複数使ってるとき
各タブがbusyでまだ表示が終わってないかを判定するにはどうしたらいいですか?
調べた限りIEでのプロパティは取得できても各タブでのプロパティは取得できない。
0047デフォルトの名無しさん2016/04/30(土) 19:56:35.13ID:/rgv18x0
コードの書き方として、変数の宣言は関数の頭でまとめてやるのがいいのか、それとも使う直前にやるのがいいのかどちらでしょうか
また、使い終わった変数をもう使わないと明示する処理はありますか?
0048デフォルトの名無しさん2016/04/30(土) 21:09:42.54ID:XEqomZlq
というかVBAでは各プロシジャや関数の先頭でないとダメだったんじゃ。あるいはモジュールの先頭とか
0049デフォルトの名無しさん2016/04/30(土) 21:10:40.96ID:XEqomZlq
後、「使い終わった変数をもう使わないと明示する処理」なんて無い
0050デフォルトの名無しさん2016/04/30(土) 21:11:57.74ID:XEqomZlq
あっオブジェクトにnothingを入れること言ってんの?
set sxxx = nothing
とか
0051デフォルトの名無しさん2016/04/30(土) 21:23:19.94ID:O7pF7Dyv
>>48
途中でも宣言できるよ
0052482016/04/30(土) 21:43:17.18ID:XEqomZlq
>>51
出来たんだ。へぇ後で確認してみるよ ありがと。
0053デフォルトの名無しさん2016/04/30(土) 21:51:28.33ID:22Ts1M1X
>>48
知らないなら黙ってろよ...
0054デフォルトの名無しさん2016/04/30(土) 22:00:44.42ID:v/yWAGpr
いつでもできるっていいよな〜勃起する〜
0055デフォルトの名無しさん2016/04/30(土) 22:40:18.96ID:bQzkVaJ6
知らなくても思ったことは言えばいいじゃん
0056デフォルトの名無しさん2016/05/01(日) 06:11:15.76ID:N+mY7DPn
>>47
.NetみたいにIf文の中やFor文の中で宣言したところでその中でのみスコープが効くって訳でなくて
あくまでモジュールか関数単位でのスコープだから
やっぱりその単位で纏めて書いておいた方がいいだろな
0057デフォルトの名無しさん2016/05/01(日) 06:38:17.62ID:e/Hse44L
>>53
バカ発見
0058デフォルトの名無しさん2016/05/01(日) 06:48:30.10ID:FGPo8aL5
ああ、最初の方に宣言書いとけってのはCライク言語しか扱えない人間が勘違いするのを防止する為か。

前スレに貼ってあったブログの記事見たときも思ったけど、
今は自分が触ってるツールがなんなのかすらよく分かってないのがプログラマ名乗る時代になっちゃったな。
0059デフォルトの名無しさん2016/05/01(日) 06:55:17.20ID:4tDBI2/Z
>>57
なにか悔しいことでもあったのか?
0060デフォルトの名無しさん2016/05/01(日) 08:55:20.52ID:e/Hse44L
>>59
バカ発見
0061デフォルトの名無しさん2016/05/01(日) 10:01:02.93ID:EKtQwo7Z
>>46
Excelとなんの関係があるの?
0062デフォルトの名無しさん2016/05/01(日) 10:38:14.78ID:pgSGezQj
初期化のコストなんて無視できるんだし、普通のプログラムで宣言位置にこだわる理由はあんまりない
0063デフォルトの名無しさん2016/05/01(日) 11:22:51.97ID:etCluhyU
>>62
その考え方だと、ソースコードをインデントする事に意味はない、ってことになる
実行コストの問題じゃないからな

こだわる理由は薄いけど、お作法だと思っておけば良いんじゃない
0064デフォルトの名無しさん2016/05/01(日) 12:36:30.20ID:26Cdb2A4
>>62
最初にまとめて宣言するとどこで宣言されてるのかわかりやすい反面、どこで使われているのかがわかりにくくなる
0065デフォルトの名無しさん2016/05/01(日) 13:28:31.99ID:Jk9067FT
BASICはスコープの頭で宣言するのが基本と教わったよ
局所スコープなんて邪道w
0066デフォルトの名無しさん2016/05/01(日) 13:37:50.19ID:X/eAHaZZ
邪道でもなんでもないけど、 プログラムの規模が大きくなっていくに従ってそういう問題は発生しなくなるとは思う。
0067デフォルトの名無しさん2016/05/01(日) 13:55:38.98ID:hsr/yOpl
宣言位置も大事だけど変数名も大事だよ。
普通に、ハンガリアン記法を使うよな?
0068デフォルトの名無しさん2016/05/01(日) 13:59:54.67ID:cTEU13RB
VBAしか知らないが、まとめて宣言じゃなく使う前に宣言する派だな
0069デフォルトの名無しさん2016/05/01(日) 14:16:23.37ID:ejxts/3y
変数名は

Dim 変数As ○○

で安定
0070デフォルトの名無しさん2016/05/01(日) 14:30:45.34ID:X/eAHaZZ
>>69
それもまあ、、、いいか
0071デフォルトの名無しさん2016/05/01(日) 14:35:03.78ID:4tDBI2/Z
>>68
まあどっちにせよポリシーを決めておけばいいと思う
俺も使う直前で定義する派
0072デフォルトの名無しさん2016/05/01(日) 14:38:28.86ID:26Cdb2A4
ハンガリアン使うとかねえわ
いつの時代だよおっさん
0073デフォルトの名無しさん2016/05/01(日) 15:03:34.65ID:FGPo8aL5
メモリ容量さえ許せば全部Variant型で十分だし、
それ以前に同関数内で異なる型の変数(引数除く)を使うのはあまりよろしくない。機能が分かれてない。
0074デフォルトの名無しさん2016/05/01(日) 15:15:10.83ID:X/eAHaZZ
>>73
前半と後半が食い違ってる
0075デフォルトの名無しさん2016/05/01(日) 15:19:30.78ID:26Cdb2A4
まともに教育を受けてない適当な人間が使うであろうVBAだからこそ型はきっちり付けるべきだと思うんだけどなぁ
0076デフォルトの名無しさん2016/05/01(日) 15:34:29.56ID:X/eAHaZZ
〜する派〜しない派みたいなのって例外を認めにくくなっちゃうからなあ
0077デフォルトの名無しさん2016/05/01(日) 16:38:53.50ID:FGPo8aL5
型宣言しちゃうと出来ない事もあるから、下手に宣言するクセつけない方がいいけどな。
0078デフォルトの名無しさん2016/05/01(日) 17:01:16.67ID:4tDBI2/Z
>>77
> 型宣言しちゃうと出来ない事
なんのこっちゃ
0079デフォルトの名無しさん2016/05/01(日) 17:06:37.92ID:FGPo8aL5
>>78
たとえばVariant型で受けて関数内部で型によって処理を変える事で多態性を確保するとか、
返却用の引数に渡された型に合わせて返値を変えるとか、
同じ名前のプロパティを持つ別のクラスを入れて異なる処理が同一関数で行われる様にするとか。

でも考えたらVariant型も型宣言するから「Variant型以外では出来ない事」って言わないと語弊があったな。
0080デフォルトの名無しさん2016/05/01(日) 17:14:32.74ID:X/eAHaZZ
>>79
最後の一行で終わっとるじゃん。
あとEmptyやNullを受け取ったり返したり。
ライブラリ的な関数はVariantになりがちだ。
0081デフォルトの名無しさん2016/05/01(日) 17:35:31.90ID:sRpB4XMF
セルの数字が、文字型になったり数字型になったりするから、
Variantが楽なんだよな。
0082デフォルトの名無しさん2016/05/01(日) 18:29:04.37ID:FGPo8aL5
>>80
だ、だって宣言しないで使える変数はVariant型だけだし(震え声
0083デフォルトの名無しさん2016/05/01(日) 18:36:29.17ID:pOSQMib2
>>79
まぁね。本当はクラス作ってインターフェースで多態性持たせたりする方が安全なんだけど、
VBAは1クラス1モジュールという制限があってぽこぽこ作ると分かり辛くなるから
結局程度の問題で、「Variantは実行時にしか型の違いによるエラーを確認出来ないことがある」という認識さえあれば
VBAで使うのは止むなしといったところがあると思う。

シートやレンジオブジェクトとの親和性も高いしね。
0084デフォルトの名無しさん2016/05/01(日) 20:02:25.44ID:FGPo8aL5
>>83
Variant型はハグの元だっていうのは、単に理解が浅いだけだからな。
本当にバグの元ならJavaScriptなんて使えたもんじゃねぇだろうと。
0085デフォルトの名無しさん2016/05/01(日) 20:24:15.84ID:4tDBI2/Z
>>79
いや、君の言ってる
> 下手に宣言するクセつけない方がいいけどな。
が意味不明なんだけど
0086デフォルトの名無しさん2016/05/01(日) 20:36:58.58ID:pgSGezQj
引数の型と返り値の型はVariant
ローカル変数は、ない

これがオレの理想
0087デフォルトの名無しさん2016/05/01(日) 20:37:38.51ID:pgSGezQj
理想は言い過ぎたな
スタンダードくらいか
0088デフォルトの名無しさん2016/05/01(日) 20:41:05.62ID:ycnEliip
>>79
ID:FGPo8aL5
バカ発見
0089デフォルトの名無しさん2016/05/02(月) 07:24:52.98ID:l4EfLYgv
>>86
えっどういうこと?
まさかスタティックおじさん?
0090デフォルトの名無しさん2016/05/02(月) 07:32:53.88ID:IhhEj+7h
>>89
スタティックと>>86とどう繋がる?
0091デフォルトの名無しさん2016/05/02(月) 10:17:18.36ID:3YV7E0Ft
スタティックおじさん
でググってこい
0092デフォルトの名無しさん2016/05/02(月) 14:44:30.79ID:qnyBKwLu
下記マクロにてVBAのIE操作で自動ログインさせているのですが、ID,パスワードを自動入力後
ログインボタンを押すマクロですが、一定時間(10〜20時間?)経過後、同じマクロを実行しても
ログインボタンが押せなくなっており、ログインできず処理が中断してかなり困っています。
一度手動でログイン後、再度マクロを実行すると問題なくログインボタンが押せるのようになるのですが、
何が問題なのでしょうか?

Sub ログイン()

Set objie = CreateObject("internetexplorer.application")
objie.Visible = True

objie.Navigate "https://s10.kabu.co.jp/_mem_bin/light/login.asp?/Light/";
Do While objie.Busy = True Or objie.ReadyState <> 4
DoEvents
Loop

objie.Document.All.SsLogonUser.Value = "自分のID"
objie.Document.All.SsLogonPassword.Value = "パスワード"

Dim waitTime As Variant
waitTime = Now + TimeValue("0:00:1")
Application.Wait waitTime

Dim obj As Object    'objie.Document.forms(0).submitでも代替可
For Each obj In objie.Document.getElementsByTagName("input")
If obj.Value = "ログイン" Then
obj.Click
Exit For
End If
Next
End Sub
0093デフォルトの名無しさん2016/05/02(月) 15:56:15.53ID:WvgoLY0A
「ログインボタンが押せなくなって」るんなら、VBA関係ないんじゃないの?
0094デフォルトの名無しさん2016/05/02(月) 18:35:24.79ID:tBJRQx2n
>>92


ドキュメントの中を操作するときは、
objie.Busy = True Or objie.ReadyState <> 4
のループの後に、
objIE.document.ReadyState が "complete"になるまで待った方がいい。
0095デフォルトの名無しさん2016/05/02(月) 18:46:14.55ID:8Cx+VcMT
>>92
Excelのバージョンの問題ですね
0096デフォルトの名無しさん2016/05/02(月) 18:58:03.00ID:rgztSLD4
>>84
>>83
>Variant型はハグの元

今後可愛い女性に対してなら必ず使わせてもらおう
男が使ったら顔の形が分からなくなるくらいまでぶん殴るかも知れない
0097デフォルトの名無しさん2016/05/02(月) 20:02:50.58ID:xcJ43A0J
>>94
これかな

試しにループ除いて、2,3秒待ってからクリックするようしてみたらできないか?
0098デフォルトの名無しさん2016/05/02(月) 20:53:03.32ID:Xt0DxDQ3
高度なことがしたくて
Visual Basic
Visual C#
の2つを平行で勉強はじめたけどそっくりすぎやしないか?
これどっちか1つにしぼるとしたらどっちがいい?
0099デフォルトの名無しさん2016/05/02(月) 20:57:35.14ID:xZrjNArl
なぜここで聞く
0100デフォルトの名無しさん2016/05/02(月) 21:08:12.40ID:3bYl7aeD
>>98
そんなのVBAに決まってるだろ
0101922016/05/02(月) 21:08:53.84ID:qnyBKwLu
>>93-95,>>97
レスありがとうございました。ちなみにExcelのバージョンは2016です。
調べてみたら、確かに94氏の言う通り、objIE.document.ReadyState = "Complete"
のループを追加しないとエラーの原因になるんですね。一定時間が経過してから
上記を追加して検証してみます。ありがとうございました。
0102デフォルトの名無しさん2016/05/02(月) 21:22:28.55ID:4tcpikla
>>98
勉強したらオレにLINQを教えてくれ
0103デフォルトの名無しさん2016/05/02(月) 21:55:58.22ID:l4EfLYgv
高度なことってなんだよ
CかC++をやれよ高度だぞ
0104デフォルトの名無しさん2016/05/02(月) 22:00:15.92ID:4tcpikla
C#の方がモテる
0105デフォルトの名無しさん2016/05/02(月) 22:06:27.11ID:RcDnq76T
よし!C#を勉強しよう!
0106デフォルトの名無しさん2016/05/02(月) 22:48:52.56ID:RnthQ0WY
.netでエクセルは茨の道やで
0107デフォルトの名無しさん2016/05/02(月) 23:57:45.81ID:xuf7icL/
どこの現場いってもExcel仕事ばっか。
俺はプログラマだっての。
0108デフォルトの名無しさん2016/05/02(月) 23:58:44.90ID:4tcpikla
俺が若い頃はさー、VBAの貧弱な言語機能を補うためにライブラリを書いて配布して文句言われて一つ一つ苦労してデバッグしたりとかさー、
そういう苦労が山ほどあったわけよー、分かる? それを今は .Net連携だとかで済ますっていうのがさー、心がこもってないっていうかさー
0109デフォルトの名無しさん2016/05/03(火) 00:04:12.47ID:VOABePut
しょうがねぇからpaizaにVBAの実務経験入れようとしたら、
プログラム言語とみなされてなかった。死にたい。
0110デフォルトの名無しさん2016/05/03(火) 04:29:40.49ID:K2cMa6s9
EXCELてvb.netが組み込まれてればいいのに
0111デフォルトの名無しさん2016/05/03(火) 06:21:01.33ID:m0WSkRh/
>>106
確かに
仕方なく vbs でやってたけど最近 PowerShell の方が楽だと気づいた
0112デフォルトの名無しさん2016/05/03(火) 08:57:22.05ID:+0pS9A2f
>>98
多分VBから入ってObject指向の考え方を押さえてからC#の文法を押さえるといいかも

VBAやってる人がいきなり考え方も文法も違うのをやるとかえってキツいかもよ
0113デフォルトの名無しさん2016/05/03(火) 09:43:53.02ID:yyfQ64gm
VBAは.NETと混同される事が多い。
0114デフォルトの名無しさん2016/05/03(火) 11:50:04.12ID:WpiLU58G
エクセル2013だけど、グループボックスに表示されている文字の
大きさや色を変えることはできないですか?
0115デフォルトの名無しさん2016/05/03(火) 12:23:18.09ID:F7Orkgnr
>>111
いやそれやったらvbsのが楽や言っとんのやでw
0116デフォルトの名無しさん2016/05/03(火) 12:37:00.12ID:TF5VRcqZ
>>109
COBOLはあるのになw
0117デフォルトの名無しさん2016/05/03(火) 12:49:05.33ID:IJoN7jmc
X vbsのが
O vbsの方が
O vbsが

日本語は正確にね。
0118デフォルトの名無しさん2016/05/03(火) 13:09:39.65ID:TF5VRcqZ
>>117
関西弁であること自体はスルーなのか?
0119デフォルトの名無しさん2016/05/03(火) 19:29:08.93ID:G9XEXQGe
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrent(Covenant)が活発な情報交換・交流コミュニティでオープンソース開発されています(プログラマー募集中)

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise氏)がそういう人と話したいそうなので、よろしければツイートお願いします<(_ _)>
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできない情報発信好きアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0120デフォルトの名無しさん2016/05/03(火) 19:46:05.17ID:TF5VRcqZ
マルチ死ね
0121デフォルトの名無しさん2016/05/03(火) 21:52:26.24ID:yyfQ64gm
VBAで通信・・・地獄かな?
0122デフォルトの名無しさん2016/05/03(火) 21:55:40.94ID:H0kUs87y
色んなところで見るけどマジもののキチガイっぽくて怖い
0123デフォルトの名無しさん2016/05/04(水) 07:47:26.67ID:699UW8S3
Vbaでバージョン管理ってどうやるんです?
0124デフォルトの名無しさん2016/05/04(水) 09:51:25.99ID:PaYYDWD9
Public Cosnt Version = "x.xx"
0125デフォルトの名無しさん2016/05/04(水) 12:09:43.80ID:v4t0cuU7
>>123
普通にモジュール単位でGitとかで?
0126デフォルトの名無しさん2016/05/04(水) 12:20:35.13ID:oenZgVkw
ファイル名に日付でええやん
それで困るようなマクロ作ってるとしたら、その方が大問題やで
0127デフォルトの名無しさん2016/05/04(水) 13:17:25.90ID:6R2nO+Ch
>>126
うーん、君はプログラマなのか、それともVBAジジイなのかどちらなのかな
0128デフォルトの名無しさん2016/05/04(水) 15:49:03.52ID:kgGBLx4K
A1に AA1へ、B1に BB1へジャンプするボタンを作成したいです。
マクロお願いします。
0129デフォルトの名無しさん2016/05/04(水) 16:34:05.11ID:vhNrbATP
>>128
ボタンの作成もVBAでってことよね?
各セルのサイズのボタンでいいのね?
0130デフォルトの名無しさん2016/05/04(水) 20:47:54.52ID:kgGBLx4K
>>129
よろしくお願いします!
0131デフォルトの名無しさん2016/05/04(水) 21:28:07.96ID:RttM+uYJ
>>128
「ハイパーリンクを追加」
0132デフォルトの名無しさん2016/05/04(水) 21:53:24.10ID:Z9f5Mv8i
>>127
なんやVBAジジイて?俺はハゲとらんで
0133デフォルトの名無しさん2016/05/04(水) 23:57:31.15ID:UxdZjK7v
0134デフォルトの名無しさん2016/05/05(木) 00:07:18.30ID:MXj1Omkp
>>128
'***通常公開マクロ(ボタン作成用なのでボタン追加後不要なら消してもいい)
'指定位置に指定範囲へのジャンプボタンを作成
Sub InitializeJumpButton()
  Call AddJumpButton(Range("a1"), Range("aa1"))
  Call AddJumpButton(Range("b1"), Range("bb1"))
End Sub
'ActiveSheetにあるジャンプボタンをすべて削除(ボタン作成のやり直し用として)
Sub DeleteJumpButtons()
  Dim btn As Object
  For Each btn In ActiveSheet.Buttons
    'OnActionに"JumpButton_Click"を含むボタン
    If btn.OnAction Like "*JumpButton_Click*" Then btn.Delete
  Next
End Sub
'指定セル範囲にボタン配置
Private Function AddJumpButton(TargetRange As Range, JumpRange As Range) As Object
  With TargetRange
    Set AddJumpButton = .Worksheet.Buttons.Add(Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
  End With
  With AddJumpButton
    .Caption = "ジャンプ"
    .OnAction = "'JumpButton_Click """ & JumpRange.AddressLocal(External:=True) & """'"
  End With
End Function

'***内部処理マクロ(ボタンクリック時の処理なのでボタン追加後は削除してはだめ)
'Jumpボタンクリック時のFunction(各ボタンで共通)
Public Sub JumpButton_Click(JumpAddress As String)
  Call Application.Goto(Range(JumpAddress))
End Sub
0135デフォルトの名無しさん2016/05/05(木) 09:53:33.08ID:wVu1dK4o
おみくじ 0953 大吉 →  ♒ 水瓶座
....        吉   →  ♌ 獅子座 ♍ 乙女座
....        中吉 →  ♎ 天秤座
....        小吉 →  ♈ 牡羊座 ♉ 牡牛座 ♊ 双子座 ♑ 山羊座
....        末吉 →  ♋ 蟹座   ♐ 射手座 ♓ 魚座 
....        凶   →
....        大凶 →  ♏ 蠍座 
0136デフォルトの名無しさん2016/05/06(金) 12:27:37.21ID:9WuDa+H7
新書版のVBA入門書って意識高い系なの?
0137デフォルトの名無しさん2016/05/06(金) 15:32:29.40ID:jeM8Wxz0
いまだに紙の本なんか読んでるやつ、って思われるだけの時代遅れ
仕事もできなさそうなイメージしかない
0138デフォルトの名無しさん2016/05/06(金) 15:47:33.28ID:7cHuoK0Q
紙の本を無駄に否定する奴の方が馬鹿
お互いに利点はある
0139デフォルトの名無しさん2016/05/06(金) 19:35:21.05ID:MWUQQppA
意外と手に感じる厚みから、どの内容がどこにあるのかすぐ分かるし、
ちょっと違うページ見たい場合に指挟んでおけばすぐ戻れるし、
ただ読むだけなら電子書籍でいいけど、専門書とかは紙の方がまだ使い勝手がいい。

なんか最初に期待されていた「辞書の様な厚みの本を軽々持ち運べる」っていう方面の利便性とは逆行ってるけど。
0140デフォルトの名無しさん2016/05/06(金) 19:49:09.28ID:VrRBN5VM
別に紙だろうがネットだろうがどっちでもいいと思う。
本人にとって分かり易くて使い易ければ。
それは手段であって目的ではない。
0141デフォルトの名無しさん2016/05/06(金) 21:47:39.28ID:UUicjikB
紙媒体だと全文検索できないだろ
そういうことだよ
0142デフォルトの名無しさん2016/05/06(金) 21:55:45.06ID:WGsHbg0z
全文検索したくなる時点で、「書籍」としては三級品だがな
0143デフォルトの名無しさん2016/05/06(金) 22:03:07.91ID:jeM8Wxz0
そのりくつはおかしい
さすがに俺でも気付くレベル
0144デフォルトの名無しさん2016/05/06(金) 22:31:34.28ID:nS8waJnA
ライトノベルとか漫画しか読まない(読めない)人には検索は必要ないんじゃない?
技術書こそ電子書籍の本領発揮する場所だし。
ブックマークやブラウズ機能使えば指の数以上の働きできるし。
もはや、「分厚い辞書を持ち運べる」レベルではなく「司書つきの私設図書館を持ち運べる」レベルだよ。
ちゃんと使えばね。
0145デフォルトの名無しさん2016/05/06(金) 22:34:13.21ID:3OzCd6+q
電子書籍って恥じらいながらちんこしゃぶってくれたりするんか?
0146デフォルトの名無しさん2016/05/07(土) 00:37:16.06ID:znoXDAwn
スレチなのでスルーで
0147デフォルトの名無しさん2016/05/07(土) 02:36:05.94ID:doNSv0Rb
ブックマーク張るのに、全文検索してブックマーク張るのか?
普通は目次や索引からあたりをつけるか、読み進めて行ってマークするんだぜ
検索するにしても、見出しを優先して検索する方が効率的なわけで
全文検索するという事は、まともな編集がされてないって事だぜ
0148デフォルトの名無しさん2016/05/07(土) 04:00:08.68ID:15PuB45p
重たい技術書なんか持ち歩けるか!
ってタブレットとスキャンスナップも
買ったんだけどどうも合わなかった。
なんか頭に入ってこない感じで。
漫画なら全然いいんだけど技術書は
結局紙媒体買ってるわ󾬄。
0149デフォルトの名無しさん2016/05/07(土) 10:25:44.21ID:1wAcRjrQ
入門書がどうのこうのって話から始まったのに。全文検索が必要な本ってその次のレベルだろ。
0150デフォルトの名無しさん2016/05/07(土) 11:15:06.02ID:RCS6miPN
両方利点があるに決まっとる
0151デフォルトの名無しさん2016/05/07(土) 11:42:59.57ID:98qiMegf
書籍という形態がもう古い
プレゼンスライドのように短時間で要点を得る事が出来る媒体が現代的
0152デフォルトの名無しさん2016/05/07(土) 11:48:35.34ID:Nq/4SgpV
どういう知識なんだそれ
0153デフォルトの名無しさん2016/05/07(土) 11:53:03.45ID:8kiHQWJT
さすがエクセルVBAの達人だけあってどれもこれもピントがずれたレスばかりだなw
0154デフォルトの名無しさん2016/05/07(土) 15:00:10.35ID:1wAcRjrQ
>>153
んじゃ、ここでピントの合ったレスをID:8kiHQWJTがどうぞ
0155デフォルトの名無しさん2016/05/07(土) 15:35:39.10ID:nzotyd+v
プロならMSDNやオンラインヘルプだけで十分
紙だろうが電子だろうが書籍の出番なし
0156デフォルトの名無しさん2016/05/07(土) 16:20:40.94ID:PC4ZOeic
そんなことより
オフラインのヘルプ日本語版が欲しい
0157デフォルトの名無しさん2016/05/07(土) 16:27:15.49ID:6qCtvFTs
初級者ならオフラインヘルプ書籍だけで十分
電子オンラインヘルパーさんの出番なし
0158デフォルトの名無しさん2016/05/07(土) 17:34:52.23ID:sN4H5bv9
>>155
ドン引き
0159デフォルトの名無しさん2016/05/07(土) 17:49:10.43ID:1Difn6h5
プロのくせに独力解決できず、オンラインでヘルプミーするとかどうよ
0160デフォルトの名無しさん2016/05/07(土) 18:04:13.20ID:QutgNX3W
>>156
Office 2013 VBA用オフライン ヘルプ ファイルが欲しい場合〜開発時に役立ちます! - 元「なんでもエンジニ屋」のダメ日記
http://nasunoblog.blogspot.jp/2013/11/office-2013-vba.html

これではダメ?
0161デフォルトの名無しさん2016/05/07(土) 22:11:16.28ID:sN4H5bv9
>>159
出ていってくれ
0162デフォルトの名無しさん2016/05/08(日) 00:54:50.32ID:ikF8GjeW
>>160それ英語版や〜ん
0163デフォルトの名無しさん2016/05/08(日) 01:10:44.31ID:HXCktBbn
えっこの程度の簡単な英語も読めなでプログラミングしてるの
日本語ヘルプなんて誤訳だらけで役に立たないのに
0164デフォルトの名無しさん2016/05/08(日) 04:17:19.71ID:ikF8GjeW
じゃぁさ、>>163の文章を英語で書いてみてよ?!
0165デフォルトの名無しさん2016/05/08(日) 06:04:10.40ID:d67L2ADZ
書いてみてよだって ププ
0166デフォルトの名無しさん2016/05/08(日) 08:58:00.55ID:7UXL6x+W
Oh, English with this easy degree can also be read, and is it being stroked and programed?
Japanese help isn't useful full of mistranslation.
0167デフォルトの名無しさん2016/05/08(日) 09:40:20.29ID:cY3IZjLs
Hey, you dare work on programming
with poor ability not to read this easy English?
The MSDN document in Japanese translation doesn't help!
0168デフォルトの名無しさん2016/05/08(日) 10:20:00.62ID:MurkxjfX
英語初心者は、Oh を文頭につけたがる
こなれた感を必死に出そうとして滑稽
Oh 坊やと英語板では呼ばれている
0169デフォルトの名無しさん2016/05/08(日) 10:45:47.51ID:NRyLEpvc
>>166
>>168
ですってyo
0170デフォルトの名無しさん2016/05/08(日) 11:33:31.06ID:rP7gnQo6
CellのメンバーであるFormulaについて調べようと思って英語の記事読んでたら
最後の方で「セルに書く方の関数の事やんけ!」ってなった事はある。
0171デフォルトの名無しさん2016/05/08(日) 11:35:57.16ID:7UXL6x+W
>>168
文句はエキサイト翻訳に言えばいいと思うよ...

恥ずかしい奴 w
0172デフォルトの名無しさん2016/05/08(日) 13:08:20.31ID:cY3IZjLs
>>171
Hey, you dare work on programming
with poor ability not to WRITE this easy English?
The translation service of Excite doesn't help!
0173デフォルトの名無しさん2016/05/08(日) 14:12:42.71ID:6KbaYcKf
クラスを使って、その集合をあるプロパティの値でソートして、どういう形にせよ順番にならべるにはどうしたらいいでしょうか?

具体的なたとえで言いますと
Personというクラスからたくさんオブジェクトをつくり
その1つのプロパティであるBirthDayで生年月日順で人を並べたいのです。
0174デフォルトの名無しさん2016/05/08(日) 14:29:53.33ID:QvSZMceu
いきなり質問で申し訳無いのですが、
With Sheet3
Sheet1.Range(
0175デフォルトの名無しさん2016/05/08(日) 14:30:54.84ID:QvSZMceu
いきなり質問で申し訳無いのですが、
With Sheet3
Sheet1.Range("A1").CurrentRegion.Copy .Range("A1")

With .Range("A1").CurrentRegion
.AdvancedFilter xlFilterInPlace,Sheet2.Range("A1").CurrentRegion
.SpecialCells(xlCellTypeVisible).Clear
End With

.ShowAllData

For a=.Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("A" & a)="" Then
.Rows(a).RntireRow.Delete
End If
Next a

End With

Sheet1とSheet2を比較し、変更があったところをSheet3にコピーしているのですが、
変更箇所がわかるようにセルの色を変えたいのですが、どうしたらよいかわからず
困っています。わかる方いらっしゃいますでしょうか?
0176デフォルトの名無しさん2016/05/08(日) 14:35:59.31ID:QvSZMceu
Rntire⇒Entire です。失礼しました。
0177デフォルトの名無しさん2016/05/08(日) 14:36:08.66ID:ZUgYOGn0
>>173
インデックス[0〜n-1]の配列をプロパティ順にソートしておく。
対象のクラスオブジェクトの配列を、先ほど作っておいたインデックスに沿ってpermutateする。
0178デフォルトの名無しさん2016/05/08(日) 15:05:36.92ID:E74hVYZW
>>173
シートにインスタンスオブジェクトを識別するIDと
プロパティをA列、B列に入力して
プロパティの列目でソートする
ID列の値でアクセスする

インスタンスオブジェクトはdictionaryに格納してIDをキーにしておく
0179デフォルトの名無しさん2016/05/08(日) 15:08:58.84ID:E74hVYZW
>>175
if文で比較して違ったらrange.interior.colorプロパティを変えるとか

書き方が判らないのはマクロを記録してみたら判ると思うけど?
0180デフォルトの名無しさん2016/05/08(日) 15:12:38.09ID:rP7gnQo6
>>173
Sub Test(Person, Collection)
i = 1
If Collection.Count Then
For i = i To Collection.Count
If Person.BirthDay < Collection(i).BirthDay Then Exit For
Next
End If
Collection.Add Person, , i
End Sub

>>175
Sub Test(Sheet1, Sheet2, Sheet3)
s1d = Sheet1.UsedRange.Value
s2d = Sheet2.UsedRange.Value
For i = LBound(s1d, 1) To UBound(s1d, 1)
For j = LBound(s1d, 2) To UBound(s1d, 2)
If s1d(i, j) <> s2d(i, j) Then
Sheet1.Cells(i, j).Interior.Color = RGB(255, 0, 0)
Sheet1.Cells(i, j).Copy Sheet3.Cells(i, j)
End If
Next
Next
End Sub
0181デフォルトの名無しさん2016/05/08(日) 15:12:56.95ID:QvSZMceu
>>175
おそらく
With .Range("A1").CurrentRegion
.AdvancedFilter xlFilterInPlace,Sheet2.Range("A1").CurrentRegion
.SpecialCells(xlCellTypeVisible).Clear
End With
の間に入れるのだろうとは思ったのですが、うまくいきません。

if文で比較というのは、ShowAllDataの前に入れるってことですか?
0182デフォルトの名無しさん2016/05/08(日) 15:44:19.75ID:QvSZMceu
>>180
ありがとうございます。

Sub Test(Sheet1, Sheet2, Sheet3)
の部分は、シート名をいれるのでしょうか?
0183デフォルトの名無しさん2016/05/08(日) 15:47:12.37ID:rP7gnQo6
>>182
Worksheetオブジェクトを入れる。
0184デフォルトの名無しさん2016/05/08(日) 16:01:33.95ID:QvSZMceu
>>182
one=Worksheet("Sheet1").UsedRange.Value
としているのに、For分のLBound(one,1)の所で配列がありませんと出てしまいます。
0185デフォルトの名無しさん2016/05/08(日) 16:45:05.73ID:MWz94FDA
リンクの埋め込みについてですが
自動記録で試したところ

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="Sheet2!A1"

このようなコードが出てきたのですが
選択中のセルに実行する命令では無くセル番地で実行する場所を指定したいのですが、一体どう書けばいいのでしょうか?
0186デフォルトの名無しさん2016/05/08(日) 17:43:54.77ID:Uh7lvDUN
>>185
excel vba セル 番地 指定 でググる
0187デフォルトの名無しさん2016/05/08(日) 17:49:35.23ID:B17gXYq2
>>185
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Range("B1"), Address:="", SubAddress:="Sheet2!A1"
0188デフォルトの名無しさん2016/05/08(日) 18:50:05.07ID:LbMOyLBe
>>187
>>186
ありがとうございます。
0189デフォルトの名無しさん2016/05/08(日) 21:28:50.28ID:Mc3+72Z/
丸投げのお願いで申し訳ありませんが、下記の作業ができるVBAプログラムが欲しいです。

隣り合ったふたつのセルを結合したいのですが、
1.セルA1とB1を結合
2.セルA2とB2を結合
3.以降、任意の行まで同じ作業を繰り返し
4.AB列で作業が終わったら次はCD列でも同じ作業
5.CD列が終了したらEF列に移動
6.以降、任意の列まで同じ作業を繰り返し

です。

その際結合させるふたつのセルにはそれぞれ値が入っていますが、活かすのは左のセルの値です。
結合の際の「右上のデータが〜」というメッセージは無視したいです。
どなたかお分かりの方がいらっしゃいましたらお願いします。
0190デフォルトの名無しさん2016/05/08(日) 22:06:12.34ID:to9qHxlC
結合って文字列の結合じゃなくてセルの結合か
0191デフォルトの名無しさん2016/05/08(日) 22:14:16.85ID:to9qHxlC
>>189
こんな感じ?

For cc = 1 To Selection.Columns.Count Step 2
For rr = 1 To Selection.Rows.Count
Selection.Cells(rr, cc + 1).Value = ""
Selection.Range(Cells(rr, cc), Cells(rr, cc + 1)).MergeCells = True
Next
Next
0192デフォルトの名無しさん2016/05/08(日) 22:47:03.73ID:Mc3+72Z/
>>191
さっそくのご回答ありがとうございます。
今から試してみます。
0193デフォルトの名無しさん2016/05/08(日) 23:07:29.52ID:Mc3+72Z/
>>191
書いていただいたVBAをコピペして試しましたが、セルをひとつ結合しただけで終わってしまいました。
0194デフォルトの名無しさん2016/05/08(日) 23:09:23.84ID:Mc3+72Z/
結合したい範囲を選択して実行したら希望通り動きました。
ありがとうございます!
0195デフォルトの名無しさん2016/05/10(火) 01:32:49.02ID:IdRScl5y
以前全く別の場所で教えてもらったExcelのVBAで意味が理解できないところがあり、おわかりに
なられるのであれば、意味を教えていただきたいのですが、

For a = 2 To Lastrow1 ※Lastrow1はSheet1の最終行
@Set fnd =(Sheet2.Columns(14).Find(Sheet1.Cells(a,4).Value)
if Not (fnd Is Nothing) Then
Day=DateSerial(2000,1,1)
num=Sheet2.Cells(fnd.Row,14).Value
fad=fnd.Address
Do
If Sheet2.Cells(fnd.Row,12).Value > Day Then
a2=fnd.Row
Day=Sheet2.Cells(a2,12).Value
End If
Set fnd = Sheet2.Columns(14).FindNext(fnd)
Loop While Not fnd Is Nothing And fnd.Address <> fad And Sheet2.Cells(a2,14).Value=num

Sheet2の12列目には日付が入っており、14列目には番号が入っています。
それを一致させているのはわかるのですが、特にLoopを抜ける条件のところが
理解できません。おわかりになる方はいらっしゃいますでしょうか?
0196デフォルトの名無しさん2016/05/10(火) 02:05:42.50ID:wnAOqKt0
以下の条件の時はLoopし続ける
Not (fnd Is Nothing)            → fnd変数がNothingでは無い
And (fnd.Address <> fad)         → かつ fndセルのアドレスがfadと一致しない
And (Sheet2.Cells(a2,14).Value=num) → かつ Sheet2.Cells(a2,14).Valueとnumが一致

つまり以下の場合にLoopから抜ける
・fndがNothingになった時
・または fndセルのアドレスがfadと一致した時
・または Sheet2.Cells(a2,14).Valueとnumが一致しない
0197デフォルトの名無しさん2016/05/10(火) 02:21:30.80ID:IdRScl5y
>196
ありがとうございます。
Set fnd = Sheet2.Columns(14).FindNext(fnd)
で最初の検索から、更に同じ番号のセルがないかを検索して、
見つかった場合は、fnd内にその見つかった番号が入ると思うのですが、
そうなると、検索で番号が見つかっているので既に番号の一致はとれていて、
更にSheet2.Cells(a2,14).Valueとnumの番号の一致をとっているのは、
2重で一致をとっていることになるのでしょうか?
文章が下手ですみません。
0198デフォルトの名無しさん2016/05/10(火) 03:51:15.80ID:wnAOqKt0
>>197
そうなるかも・・・加えて言えば、(Not fnd Is Nothing) と (fnd.Address <> fad)の
条件部分もVBだと両立しないのでNothingの判定はいらないかも
※fnd変数のNothing 判定を並列のIF条件に書くと fndがNothing の時にたぶん実行時エラーが出る

ループの条件はたぶん以下のように省略できる
Do
 〜(ループ処理)
 Set fnd = Sheet2.Columns(14).FindNext(fnd)
Loop While (fnd.Address <> fad)
0199デフォルトの名無しさん2016/05/10(火) 04:06:59.93ID:IdRScl5y
>>198
ありがとうございます。
Sheet2の14列目に同じ番号が複数あり、番号だけで比較すると、
古い行がヒットしてしまうので、12列目に日付も書いてあり、
最新の状態の行を確認して、その結果を反映させたかったのですが、
アドレスの不一致だけで大丈夫なのでしょうか?
0200デフォルトの名無しさん2016/05/10(火) 04:43:26.31ID:pT7b4QGj
試してみれば?
0201デフォルトの名無しさん2016/05/10(火) 04:46:33.24ID:IdRScl5y
>>200
試してはいるのですが、少し行数も多く確認に時間がかかってしまっています。
すみません。
0202デフォルトの名無しさん2016/05/10(火) 05:27:34.40ID:IdRScl5y
>>198
すみません。うかがいたいのですが、
Set fnd = Sheet2.Columns(14).FindNext(fnd)
Loop While (fnd.Address <> fad)

の場合、アドレスが一致するまでループを繰り返す、
一致したらループを出る、という事だと思うのですが、
例えば、同じ番号の行が2行あったとして、
その2行目の方が新しい日付の行だとして、その行をこの後に続く
条件式に当てはめていきたいのです。
で、一致するまでという事は、最初の検索で1行、FindNextで更に検索で
日付の新しい番号の一致するもう1行、でまた検索で
最初の1行でアドレスが一致してループが抜ける・・・合計3回検索することになると思うのですが、
最終的にループを出る時は、最初の行で抜けてしまう気がするのですが、
その解釈は間違ってますでしょうか?
0203デフォルトの名無しさん2016/05/10(火) 06:06:50.39ID:wnAOqKt0
>>202
fndの値は確かに最初の行に戻って抜けてしまうが、
FindNext直前のIf文の所で 変数 a2 に最新日付の行番号を取得しているようだし
Loopを抜けた後はそれを使えば欲しい行は持ってこれると思う

Sheet2.Rows(a2)
Sheet2.Cells(a2, [列番号])
0204デフォルトの名無しさん2016/05/10(火) 06:19:28.37ID:wnAOqKt0
Range.Find , FindNext は検索の終端を検知できずループしてしまうから
最初のアドレスと比較することでループを抜ける条件にしてるんじゃないかな
0205デフォルトの名無しさん2016/05/10(火) 06:21:27.00ID:IdRScl5y
>>202
本当にありがとうございます!
なるほど、確かにループは抜けてもa2にはその前の状態ですね!
やっと意味がある程度わかりましたw
0206デフォルトの名無しさん2016/05/10(火) 06:26:04.87ID:pT7b4QGj
試す場合は、一旦そのソースコードから離れて、
要点だけを抜き出した、短く新しいソースコードで試す

複雑なソースコードで、検証しない

なぜなら別の要因が混じってくるから、
そういうものを排除した環境で、テストする
0207デフォルトの名無しさん2016/05/10(火) 06:26:26.62ID:IdRScl5y
>>204
あ、なるほど。Findだけだと検索し続けてしまうのですね。
0208デフォルトの名無しさん2016/05/10(火) 06:28:47.47ID:IdRScl5y
>>206
了解しました。ありがとうございます。
0209デフォルトの名無しさん2016/05/13(金) 03:32:37.47ID:mSOPxExz
ExcelVBAで、ieの制御を行っているのですが、Linkをクリックしてページ移動したらその後、何も制御できません。
例えば、Aというサイトを開き、そのサイト内のリンクから、Bというサイトに移動します。そして、BというサイトのリンクからCというサイトに移動したいのに、Bというサイトに移動したまま何の制御もできません。
OSはwindows8.1
excelは2013
ieは11です。
0210デフォルトの名無しさん2016/05/13(金) 04:50:10.69ID:xGtILQbg
>>209
人間がマウス操作してリンクをクリックするの?

そもそもIE11では、ReadyStateの値がちゃんと変わらないので、ちょっと工夫しないとうまく制御できない
画面がチラチラしてもいいんなら、こうやれば読み込みの完了が旧バージョンと同じように判定できるようになるけど

objIE.Visible = False  ' 一度ブラウザを消して
objIE.Navigate sURL  ' 指定のURLにジャンプしてから
objIE.Visible = True  ' もう一度表示する
0211デフォルトの名無しさん2016/05/13(金) 07:45:26.02ID:bIkr/ix1
>>209
どんなコードになってるのか、何でIEを操作してるのか、俺たちにはわからない
0212デフォルトの名無しさん2016/05/13(金) 18:46:19.38ID:1DtqwGMj
FindNextをFindに置き換えて検索って可能なんでしょうか?
0213デフォルトの名無しさん2016/05/13(金) 19:05:27.31ID:4KmN92Wm
可能です
0214デフォルトの名無しさん2016/05/13(金) 19:05:40.89ID:1DtqwGMj
Find(検索対象,After:=検索したいもの,SearchDirection:=xlNext)
としたらFindNextと同意なのでしょうか?
0215デフォルトの名無しさん2016/05/13(金) 19:07:09.71ID:1DtqwGMj
>>213
ありがとうございます。
返信がかぶってしまったのですが、上記と同意なのでしょうか?
0216デフォルトの名無しさん2016/05/13(金) 19:39:21.98ID:quiTtpKe
得られる結果が同じだったとしても、処理が異なるから同意ではないじゃない?
02172092016/05/13(金) 19:41:39.39ID:mSOPxExz
すみません。以下ソースです。
Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate "http://hogehoge.jp";
Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.document.readyState <> "complete"
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
Sleep 10000
For Each objtag In objIE.document.getElementsByTagName("a")
If InStr(objtag.outerHTML, "○○") > 0 Then
objtag.Click
Exit For
End If
Next
同ページ内の○○というリンクをクリックしてそのページに移動します。そして、移動したページから次のページに移動させるにもieの制御ができないのです。
上記の objtag.ClickやobjIE.document.Links(1).Clickを使っても無反応です。
0218デフォルトの名無しさん2016/05/13(金) 19:42:21.35ID:1DtqwGMj
>>216
申し訳ないです。処理が異なるというのは、
Find(検索対象,After:=検索したいもの,SearchDirection:=xlNext)
では、FindNextのように下まで検索した後、最初の一致セルに戻ってこない
という事でしょうか?
02192092016/05/13(金) 19:44:35.73ID:mSOPxExz
>>210
任意のキーワードを入力して、自動でクリックさせています。

>>211
言葉足らずですみません。
ExcelVBAでサイト内のaタグを自動でクリックするマクロを作っています。
0220デフォルトの名無しさん2016/05/13(金) 21:32:30.68ID:4amCJiHY
>>218
どっちが使いやすいか自分で判断するといい

Sub macro()
  Dim srcRng As Range, fnd As Range
  Dim firstAddr As String
  Set srcRng = ActiveSheet.UsedRange
  Debug.Print "■Findのみ"
  Set fnd = srcRng.Find("test", LookAt:=xlWhole, SearchDirection:=xlNext)
  If Not (fnd Is Nothing) Then
    firstAddr = fnd.Address
    Do
      Debug.Print fnd.Address
      Set fnd = srcRng.Find("test", After:=fnd, LookAt:=xlWhole, SearchDirection:=xlNext)
      If (fnd Is Nothing) Then Exit Do
    Loop While (fnd.Address <> firstAddr)
  End If
  Debug.Print "■FindNextあり"
  Set fnd = srcRng.Find("test", LookAt:=xlWhole, SearchDirection:=xlNext)
  If Not (fnd Is Nothing) Then
    firstAddr = fnd.Address
    Do
      Debug.Print fnd.Address
      Set fnd = srcRng.FindNext(After:=fnd)
      If (fnd Is Nothing) Then Exit Do
    Loop While (fnd.Address <> firstAddr)
  End If
End Sub
0221デフォルトの名無しさん2016/05/13(金) 21:52:33.49ID:1DtqwGMj
>>220
上の
Set fnd = srcRng.Find("test", LookAt:=xlWhole, SearchDirection:=xlNext)
のところで、実行時エラー91 オブジェクト変数または With ブロック変数
が設定されていません。 とでてしまいます。
0222デフォルトの名無しさん2016/05/13(金) 21:57:00.89ID:1DtqwGMj
>>220
申し訳ありません。文字の打ち間違いでした。
0223デフォルトの名無しさん2016/05/13(金) 22:05:27.55ID:1DtqwGMj
>>220
何個かのセルにtestといれて試してみたのですが、違いがよくわかりませんでした。
0224デフォルトの名無しさん2016/05/13(金) 22:21:28.96ID:KRWocFnH
>>223
書き方が違う
動きは同じ
0225デフォルトの名無しさん2016/05/13(金) 22:22:28.17ID:KRWocFnH
目的を達成する正解は一つじゃないってことだな
0226デフォルトの名無しさん2016/05/13(金) 22:24:18.61ID:1DtqwGMj
>>223
動きが同じなら
FindNextの方が文が短くてすむ・・・くらいの認識でよいという事ですね?
0227デフォルトの名無しさん2016/05/13(金) 22:28:41.38ID:1DtqwGMj
>>225
なるほど。ありがとうございます。
どちらの方法でも目的が達成できれば書きやすい方でという事ですね。

どちらも、testをアドレスが一致するまで検索するループという認識で
よいんですよね?
0228デフォルトの名無しさん2016/05/14(土) 00:02:13.05ID:KpaRNRq2
別でもう1点伺いたいのですが、

With Sheet3.Range("A1").CurrentRegion
.AdvancedFilter xlFilterInPlace,Sheet2.Range("A1").CurrentRegion
.SpecialCells(xlCellTypeVisible).Clear
End With

という文で、Sheet3の空白で囲まれている表の範囲と
Sheet2の空白で囲まれている表の範囲が比較出来、
Sheet3の不一致の部分だけが残るというのはわかるのですが、
何故比較できているのかが理解できません。
わかる方がいたら教えて下さい。
0229デフォルトの名無しさん2016/05/14(土) 01:59:54.31ID:KpaRNRq2
フィルタオプションでマクロを記録し見てみたのですが、
どう比較しているのかがやはりわかりませんでした。
どなたかご存知でしょうか?
0230デフォルトの名無しさん2016/05/14(土) 02:00:00.21ID:TfiX7v5Q
>>228
Excelのフィルタ機能があるのは知ってると思うけど
列毎に表示する基準を設定できるだろ

その設定をシート2に記述してるだけ

でspecialcellsでclearしてるから消える
clearをinterior.color=rgb(255,255,0)とか変えてみたら?
0231デフォルトの名無しさん2016/05/14(土) 02:19:13.82ID:KpaRNRq2
>>230
Sheet3とSheet2の行(レコード)同士を比較しているとは思うのですが、
Sheet3とSheet2で同じ行はあっても、何行目とか位置が違ったりしているのに、
どういう流れで比較をした結果が可視セルとしてみなされているのだろうと
思ってしまいました。
色は変えてみて、可視セルだけだけが色を塗られました。
0232デフォルトの名無しさん2016/05/14(土) 02:27:15.10ID:TfiX7v5Q
>>231
比較というより
フィルタ機能で列毎に表示または非表示にする条件を
シートにまとめて書いてるだけだって

試しにシート2で1列だけ残して他の列を全部消して動かしてみたら?
0233デフォルトの名無しさん2016/05/14(土) 02:36:02.98ID:TfiX7v5Q
Sheet4を追加して、下のように変えて実行してみたらわかるかも

With Sheet3.Range(
0234デフォルトの名無しさん2016/05/14(土) 02:37:26.14ID:TfiX7v5Q
Sheet4を追加して、下のように変えて実行してみたらわかるかも

With Sheet3.Range("A1").CurrentRegion
.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet2.Range("A1").CurrentRegion, copytorange:=Sheet4.Range("A1")
End With

xlFilterInPlace→xlFilterCopy に変えて
コピー先をSheet4.Range("A1")に指定

Sheet3の表に、Sheet2のフィルタ条件で、フィルタした結果をSheet4にコピーする
0235デフォルトの名無しさん2016/05/14(土) 02:40:15.99ID:KpaRNRq2
>>232
Sheet3にしか存在しない行だけ色無しになりました。
0236デフォルトの名無しさん2016/05/14(土) 02:42:52.92ID:TfiX7v5Q
フィルタが掛かっている状態かもしれないから
フィルタをクリアしてから実行した方が良い
0237デフォルトの名無しさん2016/05/14(土) 02:49:28.56ID:TfiX7v5Q
シート2の1行目はシート3の列名と等しくなっているはず
シート2の列名の下にフィルタ条件が書かれる
コードを実行すると
シート3の表にフィルタが掛けられる
その条件はシート2に書いた列でその下の値を持つ行だけが表示される

.SpecialCells(xlCellTypeVisible).Clear
をしているから、フィルタを掛けた後表示されているセルはクリアされる

その後、showallしてるからフィルタがクリアされる

結果として、フィルタ条件に合わなかった行が残る
0238デフォルトの名無しさん2016/05/14(土) 02:50:25.32ID:NImZCMbB
表示 > マクロ > マクロの表示
で開いているブックのsubが一覧表示されますが、
ここにaddinしているxlaの関数を表示させることはできないでしょうか。

fileName.xla!subName形式で直接入力すれば起動できることは知っています。
0239デフォルトの名無しさん2016/05/14(土) 02:50:51.66ID:KpaRNRq2
>>234
.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet2.Range("A1").CurrentRegion, copytorange:=Sheet4.Range("A1")

で型が一致しませんとでます。
0240デフォルトの名無しさん2016/05/14(土) 03:04:50.16ID:KpaRNRq2
>>237
フィルターはかかってなかったのでそのまま実行できました。
入力間違いがありました。失礼しました。
0241デフォルトの名無しさん2016/05/14(土) 03:12:37.15ID:TfiX7v5Q
>>235
元のコードで
clearしてるコードをコメントアウトして実行すると
フィルタした後に、showalldataするから何も変化しないはず

今度は、showalldataをコメントアウトしたらフィルタが掛かった状態のままになるはず
0242デフォルトの名無しさん2016/05/14(土) 03:15:34.80ID:KpaRNRq2
>>237
なんとなくわかった気がします。
Sheet2の見出しより下が検索条件になり、
Sheet3の中のSheet2にある行だけがSheet4にコピーされました。
それが可視セルになりSheet3の中のそれを消せば、Sheet2に無い行が残るわけですね。
0243デフォルトの名無しさん2016/05/14(土) 03:21:50.26ID:TfiX7v5Q
>>238
public sub xlacall()
call fileName.xla!subName
end sub
みたいなのを作るとか
0244デフォルトの名無しさん2016/05/14(土) 03:32:07.92ID:KpaRNRq2
>>241
.ShowAllDataをコメントアウトして実行してから、またコメントアウトをとったら、
実行時エラー 1004 ShowAllDataメソッドは失敗しました。Worksheetオブジェクト
と出るようになてしまいました。
0245デフォルトの名無しさん2016/05/14(土) 07:39:07.00ID:hiszDsJf
>>217
エスパー回答してみると

イントラとインターネットゾーン等でのIE8以降機能の整合性レベルが切り替えにたいする考慮をしていない
 対策:Set objIE = CreateObject("InternetExplorer.Application")を
     Set objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")にする。
0246デフォルトの名無しさん2016/05/14(土) 10:13:09.39ID:NImZCMbB
>>243
せっかくいろんなファイルで利用できるようにライブラリ化したのに、
毎回それつくるっていうのが面倒で質問に来ました。
xla化せずに必要な関数をすべて入れたブックを毎回開けばよくはあるのですが、
xlaってこんなに不便なものか?何かやりようがあるんじゃないか?と思って
調べたもののまったく見つからずにいます。
0247デフォルトの名無しさん2016/05/14(土) 10:17:33.94ID:TfiX7v5Q
>>246
xlaの方でアドイン先のブックにxlaのプロシージャを呼び出すボタンとかを作る様にすれば良いのでは?

ブックにアドインしたら、そのブックにボタンが作成される感じ
0248デフォルトの名無しさん2016/05/14(土) 10:57:07.14ID:psfsGv+B
>>246
VBE窓からだったら
ツール (T) > マクロ (M) > マクロの場所(A) で アドインを選べばいいんだけどね
シートからだとわからん
0249デフォルトの名無しさん2016/05/14(土) 12:37:14.30ID:GIbFGwdT
>>246
俺はアドインに関数を呼び出すフォームのリボンを作ってる
02502462016/05/15(日) 00:45:01.97ID:YpwUXGuD
みなさんありがとうございます。

>>249
こういう方法があったんですね。
調べてみましたが、これで希望通りの挙動にできそうです。
ありがとうございました。
0251デフォルトの名無しさん2016/05/15(日) 14:26:01.12ID:WcH5yz8P
特定のセルに
2016/05/15
という年月日が入っています。
このセルを含むシートをVBAを使ってCSVに吐き出すと
#2016-05-15#
この様に表示されてしまうのですが、
そのまま年月日で吐き出されるようにコントロールできませんでしょうか。
0252デフォルトの名無しさん2016/05/15(日) 15:19:13.14ID:CrVPkhRD
>>251
何を使ってCSV出力しているか知らないから
Write ステートメントを使用していると仮定して・・・
日付型 (Date) のデータは、共通日付形式を使用して
書き込まれるので日付型を文字列にする必要がある

セル表示形式のテキストをそのまま出力したいなら
Range.ValueではなくRange.Textプロパティを使う

FileNumber = FreeFile
Open "d:\test.csv" For Output As #FileNumber
Write #FileNumber, Cells(1, 1).Text
Close #FileNumber
0253デフォルトの名無しさん2016/05/15(日) 15:19:48.19ID:ghf3z0AO
そりあえずそのコードを貼ってよ
0254デフォルトの名無しさん2016/05/15(日) 15:38:07.34ID:WcH5yz8P
>>252-253
ネットにあったコードをコピペをそのまま使って試してみました。
Cells(i, 3)が年月日で、上手く表示されません。

Sub writeCSVFile_Click()
  '変数宣言
  Dim filePath As String
  Dim i As Long
  Dim maxRow As Long
  Dim fileNo As Integer

  '初期値設定
  filePath = ActiveWorkbook.Path & "\data.csv"
  maxRow = Range("A1").End(xlDown).Row '最終行取得
  fileNo = FreeFile 'FreeFile関数で使用可能なファイル番号取得

  'ファイル開く
  Open filePath For Output As #fileNo

  '最終行までループ
  For i = 1 To maxRow
    '列の数は決め打ち
    Write #fileNo, Cells(i, 1), Cells(i, 2), Cells(i, 3)
  Next i

  'ファイル閉じる
  Close #fileNo
End Sub
0255デフォルトの名無しさん2016/05/15(日) 15:44:13.67ID:tUFMlsQK
>>254
出力じゃなくて表示なの?
意味がわからない
0256デフォルトの名無しさん2016/05/15(日) 15:47:23.68ID:WcH5yz8P
>>255
わかりにくくてすみません。
上記でExcelからCSVに書き出した時に # が入ってしまいます。
0257デフォルトの名無しさん2016/05/15(日) 15:53:44.82ID:6V2nRwSD
>>254
>>252で答えが出てる
0258デフォルトの名無しさん2016/05/15(日) 16:09:42.68ID:UAuTMPBr
ところがTextプロパティには致命的な弱点が
0259デフォルトの名無しさん2016/05/15(日) 16:13:29.08ID:WcH5yz8P
>>257
ありがとうございました。
Cells(i, 3).Text
該当箇所をこの様に書き換えただけで直りました!
0260デフォルトの名無しさん2016/05/15(日) 20:06:14.39ID:ghf3z0AO
Excelで機械のデータシート表を作っていましてカッコ付きに変換するマクロを書きましたが

数字だとマイナスに  ex. 123 -> -123
和暦だと西暦に
0261デフォルトの名無しさん2016/05/15(日) 20:10:37.37ID:ghf3z0AO
Excelで機械のデータシート表を作っていまして楽をするためにカッコ付きに変換するマクロを書きましたが
数字だとマイナスに  ex. 123 -> -123
和暦だと西暦に  ex.平成28年1月1日 -> (2016/01/01)
なってしまいます
文章文字列などならうまくいくのですがどのようにマクロを書いたらいいのでしょうか

Sub 括弧()
ActiveCell.Value = "(" & ActiveCell.Value & ")"
End Sub
0262デフォルトの名無しさん2016/05/15(日) 21:15:44.76ID:+ceGV5qA
>>261
Sub 括弧()
With ActiveCell
  txt = .Text  '書式変更前の表示テキスト確保(通貨など)
  If IsNumeric(.Value) Then
    .NumberFormat = "@"
  End If
  .Value = "(" & txt & ")"
End With
End Sub
0263デフォルトの名無しさん2016/05/15(日) 21:26:13.47ID:ghf3z0AO
>>262
めっちゃスマートに書いてくださってありがとうございます
日付の場合数字の場合など複雑に考えて手をこまねいていました
0264デフォルトの名無しさん2016/05/15(日) 21:33:39.41ID:iEYIRe/o
すいませんエスパーの方お願いします。

ボタンをクリックしたらあるセルをハイパーリンクにしたいのですが
Cells(2, "B") = "=HYPERLINK('test')"

これだけで400エラーが出ます。なぜなのでしょうか
0265デフォルトの名無しさん2016/05/15(日) 21:39:01.79ID:U6OCYZVH
B2セルに直接 =HYPERLINK('test') と入力してもエラーになりませんか
0266デフォルトの名無しさん2016/05/15(日) 22:09:37.23ID:iEYIRe/o
>>265
ありがとうございますm(__)m
シングルクォーテーションがいけなかったんですね
ほんとは変数を付けてURL作ってたので他言語の癖でダブルとシングル両方使わないといけないと思ってました
0267デフォルトの名無しさん2016/05/17(火) 19:14:32.23ID:Ju7Z8cl/
If文が大量になってしまいまとめたいのですが、

For i To Lastrow ※Sheet3の最終行
 Set fnd = (Sheet2.Columns(2).Find(Sheet3.Cells(i,2)))
if Not (fnd Is Nothing) Then
  if Sheet3.Cells(i,1) = Sheet2.Cells(fnd.Row,1) Then
Else
Sheet3.Cells(i,1)interior.ColorIndex = 3
End if
 if Sheet3.Cells(i,2) = Sheet2.Cells(fnd.Row,2) Then
Else
Sheet3.Cells(i,2)interior.ColorIndex = 3
End if
 if Sheet3.Cells(i,3) = Sheet2.Cells(fnd.Row,3) Then
Else
Sheet3.Cells(i,3)interior.ColorIndex = 3
End if

         ・

  if Sheet3.Cells(i,20) = Sheet2.Cells(fnd.Row,20) Then
Else
Sheet3.Cells(i,20)interior.ColorIndex = 3
End if
  Else
  Sheet3.Cells(i,2).EntireRow.Interior.ColorIndex = 4
End If
Next i
という風にしているのですが、もう少しまとめらないかと思いました。
まとめられるのでしょうか?
0268デフォルトの名無しさん2016/05/17(火) 19:17:20.83ID:Ju7Z8cl/
if Sheet3.Cells(i,2) = Sheet2.Cells(fnd.Row,2) Then
Else
Sheet3.Cells(i,2)interior.ColorIndex = 3
End If
はいらなかったです。失礼しました。
0269デフォルトの名無しさん2016/05/17(火) 20:15:20.61ID:YEbHD3bH
switch文使うとか?
0270デフォルトの名無しさん2016/05/17(火) 20:24:22.15ID:Ju7Z8cl/
>>269
switch文とはどのように使うのでしょうか?
今調べて見てるのですが・・・
0271デフォルトの名無しさん2016/05/17(火) 20:33:31.31ID:uw1YLM9D
>>267
せめて Then Else は条件逆にしたら?

> For i = ? To Lastrow ※Sheet3の最終行
>  Set fnd = Sheet2.Columns(2).Find(Sheet3.Cells(i,2))
>  If Not (fnd Is Nothing) Then
>  If Sheet3.Cells(i,1) <> Sheet2.Cells(fnd.Row,1) Then
>    Sheet3.Cells(i,1).Interior.ColorIndex = 3
>   End If
>  If Sheet3.Cells(i,2) <> Sheet2.Cells(fnd.Row,2) Then
>    Sheet3.Cells(i,2).Interior.ColorIndex = 3
>   End If
>  If Sheet3.Cells(i,3) <> Sheet2.Cells(fnd.Row,3) Then
>    Sheet3.Cells(i,3).Interior.ColorIndex = 3
>   End if
>      ・
>      ・
>      ・
>   If Sheet3.Cells(i,20) <> Sheet2.Cells(fnd.Row,20) Then
>    Sheet3.Cells(i,20).Interior.ColorIndex = 3
>   End if
>  Else
>   Sheet3.Cells(i,2).EntireRow.Interior.ColorIndex = 4
> End If
> Next i
0272デフォルトの名無しさん2016/05/17(火) 20:35:42.07ID:Ju7Z8cl/
>>271
そうでした。申し訳ありません。
わざわざ=で、Elseを入れる意味はないですね。
その上で、このIf文をもう少しまとめる方法はないでしょうか?
0273デフォルトの名無しさん2016/05/17(火) 21:09:16.27ID:Bh5kVr4X
この内容だと単純にループで回せば出来そうだけど

For i = 1 To Lastrow '※Sheet3の最終行
  Set fnd = (Sheet2.Columns(2).Find(Sheet3.Cells(i, 2)))
  If Not (fnd Is Nothing) Then
    For j = 1 To 20 '★1列目から20列目まで?
      If Sheet3.Cells(i, j) <> Sheet2.Cells(fnd.Row, j) Then
        Sheet3.Cells(i, j).Interior.ColorIndex = 3
      End If
    Next
  Else
    Sheet3.Cells(i, 2).EntireRow.Interior.ColorIndex = 4
  End If
Next i
0274デフォルトの名無しさん2016/05/17(火) 21:29:43.68ID:kv5Z22Gc
>>270
switch文はif then elsif elsif ...
に相当するものだった

列も2〜20までforで回したら?
for i to lastrow
for j = 2 to 20
if 条件 then
endif
next j
next i
0275デフォルトの名無しさん2016/05/17(火) 21:35:27.61ID:Ju7Z8cl/
>>273
Set fnd = (Sheet2.Columns(2).Find(Sheet3.Cells(i, 2)))
  If Not (fnd Is Nothing) Then
の部分をFor j = 1 To 20 の中に入れてましたが、
よく考えたら、一度検索して見つかったらその行を確認していってるので、
中に入れてたら、何度もヒットさせる余計な処理になってしまってました。
ありがとうございました。
0276デフォルトの名無しさん2016/05/17(火) 21:42:55.17ID:Ju7Z8cl/
>>274
ありがとうございました。
それだけでよかったですね。
0277デフォルトの名無しさん2016/05/19(木) 15:21:44.50ID:hJ/G9SOx
FindのAfterという引数を変数で指定した場合、変数にはセルの値が入っているとして、
その値が入っているセルの位置情報が記憶され、そこから検索がかかるという認識で
よいのでしょうか?
0278デフォルトの名無しさん2016/05/19(木) 16:33:50.64ID:oZsWPLv6
ここに書いてある通り
https://msdn.microsoft.com/ja-jp/library/office/ff839746.aspx
google とかでexcel vba find とか検索すれば出てくる
0279デフォルトの名無しさん2016/05/20(金) 17:13:57.06ID:P6F1ZDVP
>>278
ID変わりましたが、返信遅くなりました。
そこは見ているのですが、何故変数にはセルの値が入っているのに、セルの場所を指定した事になるのかと思いまして、質問させていただきました。
0280デフォルトの名無しさん2016/05/20(金) 18:50:53.92ID:gsWAgsom
>>279
FindのAfterは値じゃなくて、セル範囲の情報なども含むRangeオブジェクトだよ
Findの戻り値も同じくRangeオブジェクトになる

Rangeオブジェクト
https://msdn.microsoft.com/ja-jp/library/office/ff838238.aspx
0281デフォルトの名無しさん2016/05/20(金) 21:49:54.04ID:d/ZNR8o9
コンソールで
?"a"&"b"

ab
と出力されますが
?"a"&1

a 1
と出力されます
なぜ半角スペースが交じるのでしょうか?
0282デフォルトの名無しさん2016/05/20(金) 22:04:33.27ID:RvnBIaae
>>281
? "a"&10
a 8
? "a"&100
a 64
? "a"&1000
a 512

後はわかるな?
0283デフォルトの名無しさん2016/05/20(金) 22:14:31.20ID:d/ZNR8o9
>>282
すいません、さっぱりわかりません。
? 100
100
? "a" & 100
a100
?"a"&100
a 64
?"a100"
a100
?"b"&100
b 64
?"x"&100
x 64

010が2byteで64かなーというのは想像できますが、
何故こうなるのでしょうか
0284デフォルトの名無しさん2016/05/20(金) 22:20:25.08ID:Pie8/Dil
>>281
?"a"&1  を
?"a" & 1 のように
&の前後に空白を入れてやれば"a1"と出力される

試しにコード上で
Debug.Print "a"&1   と&の前後に空白なしで記述すると
Debug.Print "a"; &O1 に自動変換されるので

おそらく文字型と数値型の2つの型のデータが出力されている
数値型データの場合、先頭に空白が入る模様
0285デフォルトの名無しさん2016/05/20(金) 22:33:41.48ID:d/ZNR8o9
>>284
なるほど
&N01
&P01
ではだめで
&O01
でいいのは何ででしょう?
0286デフォルトの名無しさん2016/05/20(金) 22:39:11.93ID:Pie8/Dil
先頭 &O の数値は8進数
先頭 &H の数値は16進数
0287デフォルトの名無しさん2016/05/20(金) 22:39:59.19ID:RMEVZVQK
>>285
&O は8進数
0288デフォルトの名無しさん2016/05/20(金) 22:50:42.69ID:d/ZNR8o9
>>286-287
ありがとうございます!
こういうのは数値リテラルというのでしょうか?
0289デフォルトの名無しさん2016/05/20(金) 23:18:49.15ID:V/0gJxiW
?"a"&100*-1
a-64
0290デフォルトの名無しさん2016/05/21(土) 01:56:41.84ID:DHWj1BOs
>>284
>数値型データの場合、先頭に空白が入る模様
先頭は符号。正の符号が空白で表されてる
0291デフォルトの名無しさん2016/05/21(土) 18:06:47.94ID:8UwytgDT
質問です。
Min,max関数で最小、最大値を求める作業を複数のcsvファイルで行いたい場合どのようにすべきでしょうか?
具体的には=max(a2:a56)という動作をを1000個のcsvファイルに対してまとめて行い、各csvファイルの最大値を1つのファイルにまとめる動作を行いたいです。
1000個csvファイルのデータの位置(a2:a56)は同じです。
このような動作を行うマクロは組むことができるのでしょうか?
Vba始めてばかりなので間違いなどあればすみません。
0292デフォルトの名無しさん2016/05/21(土) 18:31:55.59ID:3PJd0Iym
>>291
マクロの記録をしてそれを繰り返せば良い
0293デフォルトの名無しさん2016/05/21(土) 19:00:55.32ID:2DvXotsF
>>280
またIDが変わってしまったのですが質問者です。
申し訳ありません。そのセル範囲を含む情報が含まれるということは、
どういうことなのでしょうか?
例えば、1列目を指定してFindで検索し、
検索した結果見つかったセルの値をaに入れたとします。
1列目に検索したいものが複数あり再検索したい場合、
再度、Findを記述するかFindNextでAfterにaを指定すると思いますが、
そのaのセル範囲を含む情報というのは、何を示しているのでしょうか?
0294デフォルトの名無しさん2016/05/21(土) 21:23:45.26ID:a3pocFu9
>>293 ('A`)

Dim a As Range
Set a = Range("A1:A10").Find("検索文字列")
 ↑で、A1のセルがヒットしたとする場合
 ↓下記と同義のRangeオブジェクトが変数aに設定される
Set a = Range("A1")

Range プロパティ (Excel)
https://msdn.microsoft.com/ja-jp/library/office/dn301006.aspx

で、Rangeオブジェクトにはセルに関するいろんなプロパティを保持している
a.Value   '<-セルの値(既定プロパティ)
a.Address  '<-セルの参照範囲
a.Row    '<-セルの行番号
a.Column  '<-セルの列番号


Findメソッドがどのプロパティを参照しているかは知らないが
Afterに指定されたセル(※Rangeオブジェクト)の行番号、列番号
もしくはアドレスから次の検索セルを判断していると思われる
0295デフォルトの名無しさん2016/05/21(土) 21:53:40.84ID:2DvXotsF
>>294
F8やF5で実行を止めながら確認しても、aには値しか見えないですが、
実はRangeオブジェクトが入っているという事なのですね。

それはExcelの仕様という事なのでしょうか?
0296デフォルトの名無しさん2016/05/21(土) 22:46:05.51ID:a3pocFu9
>>295
変数の詳細な内容が見たいなら
ローカルウィンドウ なり ウォッチウィンドウ で確認するといい

Excel VBA 入門講座 ローカルウィンドウ
http://excelvba.pc-users.net/fol8/8_2.html
Excel VBA 入門講座 ウォッチウィンドウ
http://excelvba.pc-users.net/fol8/8_3.html
0297デフォルトの名無しさん2016/05/21(土) 22:47:52.19ID:DHWj1BOs
>>295
それデフォルトプロパティが見えてるだけ
ちゃんとウォッチ式追加してウォッチウィンドウで見てみろ
0298デフォルトの名無しさん2016/05/21(土) 23:20:54.65ID:2DvXotsF
>>296 
>>297
了解しました。ありがとうございます。
今確認してみてるのですが、
列指定してFindし、その結果を元に再検索に再度FindのAfterで
最初の検索結果を指定しその次から検索していますが、
空白が指定された場合、ちゃんと表の範囲内を検索し、
先頭に戻ってくれているのは確認できました。
結果としては非常にありがたいのですが、何故そうなるのかがわかりません。
列は指定しましたが、表の範囲は指定していないのに・・・
0299デフォルトの名無しさん2016/05/22(日) 01:20:39.82ID:RVVHScN0
この先延々と質問が続くのかな
0300デフォルトの名無しさん2016/05/22(日) 01:38:56.00ID:vMk8bbvq
もちのロン
0301デフォルトの名無しさん2016/05/22(日) 02:16:59.30ID:aOwEm8Rg
>>299
>>300
質問者ですが、この件に関してはこれで最後にします。
申し訳ありません。
0302デフォルトの名無しさん2016/05/22(日) 09:40:44.20ID:vMk8bbvq
質問スレなんだから、
質問すればよろし

回答するスレではないんで、
回答するのは気分次第だけどな
0303デフォルトの名無しさん2016/05/22(日) 10:36:35.32ID:F3XVlBde
ググったり色んな本読んで調べたんですが、解決しなかったんで質問させてください

Application.Dialogs(xlDialogSendMail).〜

でアクティブブックをそのまま.xlsmとして添付メールすることはできるのですが、送り先にxlsに変換して送りたいです
FileFormat的な処理をしてワンクッション無しでそういった事を、するのは可能でしょうか?
宜しくお願いします
0304デフォルトの名無しさん2016/05/22(日) 11:40:55.24ID:viRK9kIz
>FileFormat的な処理をして
>xlsに変換して
>アクティブブックを〜ことはできる
>ワンクッション無しで

ワンクッションとは?
0305デフォルトの名無しさん2016/05/22(日) 12:37:39.34ID:F3XVlBde
>>304
コマンドボタンワンクリックで済ませたいので、一つのイベントプロシージャに収めたいという事です
もし別の処理をしないと不可能だという事でしたら、もう一つボタンを追加したりして対応したいと思いますが、何かいい方法がありましたらご教授お願いします
0306デフォルトの名無しさん2016/05/22(日) 12:55:07.15ID:MkPG05kK
>>291
素人だけど書いてみた Excel2003/Vistaで動作確認
http://codepad.org/h9iBcEZo
1列目のある範囲の最大値だけなんでCSVをワークシートへは取り込んでない
動作おかしかったらリスト読んで適当に直して
0307デフォルトの名無しさん2016/05/22(日) 14:00:36.34ID:uwOrwjCq
>>305
SaveAsで一旦.xls(xlExcel8形式あたり)で保存してから送信すれば行けるんじゃね
0308デフォルトの名無しさん2016/05/23(月) 19:14:37.25ID:+L6Gybj9
ExcelでInterfaceを使用して多重実装って行うことは出来ますか?
0309デフォルトの名無しさん2016/05/23(月) 20:04:34.59ID:fFz6fB8+
>>308
あんた・・・それは
やめた方が
いいな!
0310デフォルトの名無しさん2016/05/23(月) 23:02:51.54ID:EBQbKa6e
>>309
自己解決したのですが
ちなみに止めた方がいい理由って何ですか?
気になります
0311デフォルトの名無しさん2016/05/23(月) 23:05:46.46ID:OgrQhKAM
どう解決したかの方が気になります
0312デフォルトの名無しさん2016/05/23(月) 23:40:18.70ID:fFz6fB8+
>>310
もう考えない方がいい
どうしてもだ!
スレの住人として
忠告する!
じゃあ俺は
これで・・・またな
0313デフォルトの名無しさん2016/05/23(月) 23:44:12.90ID:zjNqCcoU
>>311
結論からいうとできました
Implements は複数設定できるので
後はそれぞれのインターフェースを
実装すれば良いだけでした
0314デフォルトの名無しさん2016/05/25(水) 19:58:38.92ID:vZFTiHPJ
>>292
亀レスすみません。
マクロの記憶だと作業中のファイルのみしかマクロが機能しないのでは無いでしょうか?
また、1000個のファイルに対して一つ一つマクロ実行するのは大変なので、1000個のcsvファイルの最大値を一つのファイルにまとめる作業を、一度に出来る方法は無いのでしょうか?
0315デフォルトの名無しさん2016/05/25(水) 20:22:35.58ID:tfoRBKUB
>>314
対象が同じフォルダに入っているファイル全部とかだったら別にどうってことなくね?
0316デフォルトの名無しさん2016/05/25(水) 20:48:22.69ID:RqoGasre
作りの簡単なcsvっぽいしExcel使うよりJSとかVBSとかPoweSellとかPythonとかRuby使った方が早そう
0317デフォルトの名無しさん2016/05/25(水) 21:45:43.06ID:1qBlGVzr
>>315
レスありがとうございます。
315さんの言う通り、対象は同じフォルダに入ってるファイルすべてです。
どうってこと無いというのは、やり方が簡単という事でしょうか?
宜しければ、マクロの記憶を繰り返す以外にもう少し具体的に教えていただければ幸いです。簡単な例文や使用すればいい関数など...
最近vbaを始めたばかりで、まだrangeやif文を習った程度の知識でして...
あと、拡張子にcsvが付いてたのでcsvファイルと言ってたのですが、対象となるのは普通のエクセルのファイルです。


>>316
ありがとうございます。
検討してみます。
0318デフォルトの名無しさん2016/05/25(水) 22:41:50.45ID:enDBv6qD
>>317
拡張子がcsvのファイルをテキストエディタで開いてみたら?

excel vba for
をググって繰り返しのやり方を調べる

試しに3個のファイルを対象にして作ってみる
0319デフォルトの名無しさん2016/05/25(水) 23:17:20.71ID:CznCF+TX
>>314
1度にやる方法は無いかと言われれば
無いこともないけど、本当にその方法が有効かはまた別問題。

例えばADO接続でCSVファイルからSQLで値を取得するときは
フォルダがDB、その中にある各CSVファイルがテーブル扱いになるので、
そのフォルダ内の対象になるCSVファイル名を先に全て取得しておいて
SQLでUNIONで繋げておけばできるけど、
本当にそれが速くて簡単かは相当疑問が残るよね。
0320デフォルトの名無しさん2016/05/25(水) 23:21:01.56ID:Uf48Qhpg
>>317
とりあえず、1つのファイルに対する処理を完成させる

後はループ処理で更新するファイルを変えつつ↑の処理を繰り返す

ところでループ処理は判ってんの?
do until とか
0321デフォルトの名無しさん2016/05/25(水) 23:39:18.00ID:tfoRBKUB
> そのフォルダ内の対象になるCSVファイル名を先に全て取得

もしかしてこれがネック?
03223172016/05/25(水) 23:42:26.41ID:1qBlGVzr
レス頂いた方々、ありがとうございます。
ご回答いただいた方法で試してみます。
0323デフォルトの名無しさん2016/05/26(木) 00:10:51.15ID:tOkM+sU0
>>314
306に書いたんだけど動かなかったの?
ファイル名の取得は306のプロシージャでできるはず
csvじゃなくてxlsを読むならfunctionのところを自分なりに書き換えろ
0324デフォルトの名無しさん2016/05/26(木) 03:19:58.19ID:tOkM+sU0
>>314
xls読込みの追加と306でのcsv読込関数の訂正をあげとく
http://codepad.org/syUhdaGh
ExecuteExcel4Macro って命令使うともっと早くなるらしいけど
俺にはうまく使えなかった
CSVの方が早いので用意できるならCSVファイルで処理した方がいいと思う
他の人も言ってる様にスクリプトなんかも使いやすいし
0325デフォルトの名無しさん2016/05/26(木) 07:35:57.45ID:yzIVgV2w
>>324
>ExecuteExcel4Macro って命令使うともっと早くなるらしいけど

Microsoftからとっくにサポート打ち切られているようなの持ち出すのやめれ
0326デフォルトの名無しさん2016/05/26(木) 08:48:16.33ID:EV8ndBzb
2007あたりでマクロの記録で一部ExecuteExcel4Macroが記録される
ってあったようだけど、今は無くなってる?
0327デフォルトの名無しさん2016/05/26(木) 10:01:25.13ID:tOkM+sU0
>>325
>Microsoftからとっくにサポート打ち切られているようなの
ここなんかは Office 2013 and later って書いてるけど今は打ち切られたのか?
https://msdn.microsoft.com/ja-jp/library/office/ff193589.aspx
0328デフォルトの名無しさん2016/05/26(木) 14:46:41.03ID:TLCYm3V6
最近VBAを勉強し始めた初心者です。
参考書に、離れた行や列を非表示にするにはRangeプロパティのあとにEntireを使いましょうとあります。
RangeプロパティのあとにいきなりRows.Hidden=Trueとしても意図していた作業ができるのですが、Entireはなぜ必要なのでしょうか。
0329デフォルトの名無しさん2016/05/26(木) 15:31:24.30ID:UrTJJdUS
>>325
>>327書いたんだけど ExecuteExcel4Macro って互換性維持の為だけにあるみたいなんだね
後々使えなくなるって意味で言ってたって事がようやく理解できた
変な事書いてすまんかった
0330デフォルトの名無しさん2016/05/26(木) 15:44:42.47ID:Dvh4dhBn
>>328
安全のためだからできるんならいらないんじゃね
0331デフォルトの名無しさん2016/05/26(木) 20:16:50.15ID:lgiuDAuh
>>328
Rowsは連続した行しか指定できないけど、EntireRowsは離れた行を指定できるからじゃね。
0332デフォルトの名無しさん2016/05/27(金) 01:04:42.25ID:gB8QuuHH
>>328
Hiddenに関しては特に問題ないだろうけど、
部分的なセル範囲を含む“行全体”を厳密に扱いたいなら
EntireRowの方が安全かな

Debug.Print Range("A1:A3").EntireRow.Address
 → $1:$3
Debug.Print Range("A1:A3").Rows.Address
 → $A$1:$A$3
Debug.Print Rows("1:3").Address
 → $1:$3
0333デフォルトの名無しさん2016/05/27(金) 23:11:50.47ID:4UuWR9R4
>>330-332
遅くなりましたが、皆さんありがとうございます!
なにぶん初心者なもので、下手にオリジナリティを出さずに慣れるまでは公式に則ってきちんと学ばなければと思いました

またお世話になるかもしれませんが、そのときは何卒よろしくお願いします
0334デフォルトの名無しさん2016/05/28(土) 00:22:34.85ID:MsTgKpLn
Application.OnTime TimeSerial(Hour(Now()), Minute(Now()), 59.99),
03353342016/05/28(土) 00:24:50.50ID:MsTgKpLn
23:59分台に入るとバグって更新を続けてしまうのですが、原因はなんでしょうか?
0336デフォルトの名無しさん2016/05/28(土) 01:38:03.64ID:GZWeia2p
>>334-335
試しにデータを以下のように確認してみると、
時刻じゃない日付値が返ってくるのが原因かも

Debug.Print TimeSerial(23, 59, 59.99)
→ 1899/12/31

TimeValue関数で時刻部分だけ取り出すようにしてみては?
Application.OnTime TimeValue(TimeSerial(Hour(Now()), Minute(Now()), 59.99)), "a"
0337デフォルトの名無しさん2016/05/28(土) 03:56:22.62ID:z46njfbn
>>334
まずTimeSerialの秒に59以上を渡したときの動作は未定義だな
これは繰り上がった00秒を返してるっぽいので、23:59:59.99は繰り上がって翌日の日付のある時刻を返してる

Application.OnTimeは、指定された時刻が日付持ってるかどうかで動作を変えてる
日付を持ってないときは当日の指定時刻、日付を持ってるときは指定日付の指定時刻に処理実行

23時59分のときだけ、日付付きの時刻を渡してるが、その日付は過去の日付なので
処理が即実行されてる

まあ多分こういう事じゃないかと
0338デフォルトの名無しさん2016/05/28(土) 08:26:40.26ID:CHU6gzT2
現在vbaの勉強中なのですが、クラスモジュールを使ったプログラム方法を学べる書籍やサイトはありませんか?
0339デフォルトの名無しさん2016/05/28(土) 10:45:40.89ID:+66MKZ0q
>>338
あんまり新しい情報はなさそうだからAriawaseのコードでも読めばどうだろう
0340デフォルトの名無しさん2016/05/28(土) 15:04:42.16ID:gKP/LNYF
オルト+F11 を押とVBEが開きますが
コントロール+F11 を間違えて押と変なタブが作られますがこれは一体何ですか?!!!
0341デフォルトの名無しさん2016/05/28(土) 15:15:08.16ID:g8NfG/nK
>>340
マクロ4.0
vba以前についていたマクロ機能。化石なので使う事はまず無い

ただevaluateだけは何度かこのスレの質問で見たな。使ったことはないけどな
http://officetanaka.net/excel/function/tips/tips57.htm
0342デフォルトの名無しさん2016/05/28(土) 16:10:52.16ID:gKP/LNYF
>>341
ありがとうございます。
03433342016/05/28(土) 20:18:24.66ID:MsTgKpLn
遅れましたが回答ありがとうございます!
修正頑張ります!
0344デフォルトの名無しさん2016/05/29(日) 09:38:21.80ID:AwN+e4jt
Excel2007、2010から2013に移行したんですが、仕様変更?という事でこれまでできていた下記の事ができなくなりました

ユーザーフォームのコマンドボタンを押す→マクロ実行→Application.Visible = True で
ユーザーフォームを非アクティブにして、わざわざシートを一度クリックしなくてもすぐにシートのセルに入力出来るようにしてました

もう2013で再現する事は不可能なのでしょうか?
または違う方法で再現できないでしょうか?
よろしくお願いします
0345デフォルトの名無しさん2016/05/29(日) 13:46:01.40ID:9s1DeJLc
作成依頼です。

シートAのA列にJANコード、B列に商品名が並んでいます。
JANと商品名はA1とB1、A2とB2…と対応しており、データの個数は都度変わります。

欲しいのは以下のVBAプログラムです。

1.シートBのA1のセルにシートAのA1のJANコードを入力し、シートの見出しを「当日の日付+商品名B1」にする。
2.以下、JANコードの数だけシートBをコピーして同じ作業を繰り返す。

です。


その際、
1.シートAとBは同じファイル内にあります。
2.シートBにはA1を検索値としたvlookup関数が入っている。
3.見出しに記載される商品名はJANと対応する商品名。
4.日付は、出来れば「2016年05月29日」なら「160529」と表記させたい。
無理ならどのような表記でも大丈夫ですが、なるべく短く表記したい。


上のファイル自体を今から作るので、シートA、Bの名前は実際には変わります。
またシートBのJANを入力するセルも実際にはA1ではありません。
なので後から変えられるように、プログラムのどこがシートABの名前の部分でどこがシートBのA1を表しているのかも教えてもらえるとありがたいです。

分かる方いらっしゃいましたらよろしくお願いいたします。
0346デフォルトの名無しさん2016/05/29(日) 13:52:33.92ID:m6zFG5bY
>>345
報酬は?
0347デフォルトの名無しさん2016/05/29(日) 17:38:02.13ID:OB5e45ZS
>>345
amazonのせどり関係?
ここまで、やりたい事が具体的に分かれば、この通りすれば出来るんじゃない?
この程度でつまずくなら、厳しいと思うが
データ個数が変わる場合も含めてロジックを組むなら、VLOOKUPは使わない方が良いのでは?
配列なども勉強した方が良いよ
0348デフォルトの名無しさん2016/05/29(日) 17:55:57.68ID:8akYxdWk
>>345
1万でどう?
0349デフォルトの名無しさん2016/05/29(日) 19:22:22.37ID:GTS7K4/T
>>348
お前の半日〜1日分の給料に該当するだろ
ざっと作って30分〜1時間くらいのものに
どれだけ手入れるつもりだよ
0350デフォルトの名無しさん2016/05/29(日) 19:37:22.60ID:DU/FdEem
>>349じゃあ、15分あたり¥8,000でどないでしょう?
延長、指名、同伴オプションも相談のります
0351デフォルトの名無しさん2016/05/29(日) 19:51:23.53ID:IL/FFzdQ
チェンジで
0352デフォルトの名無しさん2016/05/29(日) 19:56:44.56ID:iENwe/Jr
チェンジだってよ
0353デフォルトの名無しさん2016/05/29(日) 20:02:58.52ID:l+XEODYT
スイッチオンで
0354デフォルトの名無しさん2016/05/29(日) 20:52:32.53ID:qZvodTNY
>>349
そんな発想が出るってどんな安い単価の世界で生きてるんだ…
0355デフォルトの名無しさん2016/05/29(日) 20:53:43.81ID:GCJVxvYj
>>345 こんな感じ? http://codepad.org/cLmP8Rt6
0356デフォルトの名無しさん2016/05/29(日) 21:02:37.79ID:O2TO5DJ7
ワン・ツー・スリー
0357デフォルトの名無しさん2016/05/29(日) 21:29:17.79ID:PpnqKVZy
>>349
バカ発見
0358デフォルトの名無しさん2016/05/29(日) 21:31:54.50ID:IxwT55oU
>>349
学生は気楽でいいな
0359デフォルトの名無しさん2016/05/29(日) 22:31:24.29ID:iENwe/Jr
「お前の給料」という表現だったら手取りと解釈するだろうね
0360デフォルトの名無しさん2016/05/29(日) 23:03:21.50ID:9s1DeJLc
>>345です。
レスいただいた方ありがとうございました。
丸投げで申し訳ないと思ったので自分なりに今プログラムを作っています。

>>347
Amazonではないです。
JANに紐付いた商品情報をvlookupで読み込むフォームがあるのですが、毎回シートをコピーしてJANを貼り付けて見出しを変えるという手間が大変なのでVBAを組みたいと思いました。
今VBAを勉強しているところです。

>>355
ありがとうございます。
いただいたプログラム、まだ自分には難しいのですがwithやdate関数の使い方など勉強になります。


とりあえず今のところ、シートをコピーしてJANを貼り付け、見出しを「日付+商品名」にするところまで出来ました。
あとはJANの数だけ上の作業を繰り返すプログラムが出来れば完成です。

自分でやってみて分からなければまた質問します。
ありがとうございました。
0361デフォルトの名無しさん2016/05/30(月) 00:11:04.77ID:MwQPmEOY
>>345です。
連投すみません。奇跡的に出来ました。

ちなみに下のようなプログラムです。

Sub 商品別作成 ()
dim i as integer
i = 2

do until worksheets("リスト").cells(i.1).value = ""
worksheets("原紙").copy after:= worksheets(worksheets.count)
with worksheets(worksheets.count)
.cells(1,2).value = worksheets("リスト").cells(i,1)
.name = year(date) & month(date) & day(date) & worksheets(worksheets.count).cells(1,4)
end with

i = i + 1
loop

end Sub

です。
携帯からの書き込みのため見にくくて申し訳ありません。
手元にあった参考書と>>355さんのプログラムを参考に作りました。

自分で作っておきながらよく理解できていないところもあります。
たとえば、
worksheets(worksheets.count)
がなぜワークシートの末尾という意味になるのか、とか。

長文すみません。ありがとうございました。
0362デフォルトの名無しさん2016/05/30(月) 00:21:17.07ID:MGJW0QKJ
WorkSheetsのカウンタは { 1, ... , N } であり、N = WorkSheets.Count だからでは?
0363デフォルトの名無しさん2016/05/30(月) 00:29:54.80ID:4yKaoPuE
>>361
worksheets.countプロパティにはワークブックの持ってるワークシートの枚数がセットされてて、ワークシートの追加や削除で値が増減する
メインでworksheets(1)って使ってるでしょ? これは1枚目のワークシートの事
ワークシートが5枚あればworksheets.countの値は5になるのでworksheets(5)って指定するのと同じこと
検索すると詳しい解説がいっぱい見つかるから読んでみるといい
0364デフォルトの名無しさん2016/05/30(月) 00:33:15.23ID:TRF4/Pej
>>361
worksheets(番号を表す数値)
ワークシートが3つある場合は、0から2までで表される
番号を表す数値に3を指定すると4番目の新しいワークシートになる

worksheets.countはワークシートの数を表す
つまりワークシートが3つあれば、3となる

よってワークシートが3つあれば、worksheets(worksheets.count)は
worksheets(3)となり0から始まる4番目のワークシートとなるから
ワークシートの末尾と同じことになる
0365デフォルトの名無しさん2016/05/30(月) 01:25:38.78ID:4HMhVwgA
質問なのですが、
2シートある表の比較で、
2行目から比較なので
For i = 2 To Lastrow1 ※1シート目の最終行まで
For j = 2 To Lastrow2 ※2シート目の最終行まで
If Sheet1.Cells(i,2) = Sheet2.Cells(j,2) Then ※2列目に番号があり合ってれば
For i2 = 1 To LastColumn1 ※1シートの最終列まで
If Sheet1.Cells(i,i2) <> Sheet2.Sheet2.Cells(j,i2) Then
Sheet1.Cells(i,i2).Interior.ColorIndex = 3
End If
If Sheet1.Cells(i,i2).Interior.ColorIndex <> xlNone Then
Sheet1.Rows(i).EntireRow.Copy Destination:=Sheet3.Rows(i)
End If
Next i2
End If
Next j
Next i

1シートと2シートを比べ、1シートの差異のセルに色を塗り、
3シート目に行ごとコピーしているのですが、
1シートにしかない行、2シートにしかない行もあり、
それも3シートにコピーしたいのですが、どのようにしたらよいでしょうか?
0366デフォルトの名無しさん2016/05/30(月) 03:35:34.52ID:lz7aZWOJ
>>365
こんな感じかな?

For r1 = 2 To Lastrow1  ' ※1シート目の最終行まで
  flag = True
  For r2 = 2 To Lastrow2  ' ※2シート目の最終行まで
    If Sheet1.Cells(r1, 2) = Sheet2.Cells(r2, 2) Then  ' ※2列目に番号があり合ってれば
      flag = False  ' ※この行はコピーしない
    End If
  Next r2
  If flag Then  ' ※この行は1シートにしかないので
    Sheet1.Rows(r1).EntireRow.Copy Destination:=Sheet3.Rows(r1)  ' ※3シートにコピー
  End If
Next r1

For r2 = 2 To Lastrow2  ' ※2シート目の最終行まで
  flag = True
  For r1 = 2 To Lastrow1  ' ※1シート目の最終行まで
    If Sheet1.Cells(r1, 2) = Sheet2.Cells(r2, 2) Then  ' ※2列目に番号があり合ってれば
      flag = False  ' ※この行はコピーしない
    End If
  Next r1
  If flag Then  ' ※この行は2シートにしかないので
    Sheet2.Rows(r2).EntireRow.Copy Destination:=Sheet3.Rows(r2)  ' ※3シートにコピー
  End If
Next r2
0367デフォルトの名無しさん2016/05/30(月) 04:47:59.06ID:4HMhVwgA
>>366
ありがとうございます。
したい事はできたのですが、
このflagというのはどういう意味なのでしょうか?
0368デフォルトの名無しさん2016/05/30(月) 06:28:58.71ID:MwQPmEOY
>>363
>>364
ありがとうございます。
なるほど。


>>361では本当は「ワークシート1の後にワークシート1をコピーして、コピーしたワークシートに作業する」ということがしたかったんですが、その場合は


Sub 商品別作成 ()
dim i as integer
i = 2

do until worksheets("リスト").cells(i.1).value = ""
worksheets(1).copy after:= worksheets(1)
with worksheets(2)
.cells(1,2).value = worksheets("リスト").cells(i,1)
.name = year(date) & month(date) & day(date) & worksheets(2).cells(1,4)
end with

i = i + 1
loop

end Sub

というプログラムにすれば、ワークシートの名前は関係なしに一枚目をコピーして二枚目に作業する、ということになりますか?
0369デフォルトの名無しさん2016/05/30(月) 08:09:31.18ID:4yKaoPuE
>>368
Worksheets(n)で指定する場合のnは左からみたシートの並びになるらしいので
Worksheets(1).copy after:= worksheets(1) を実行したときには
最新のコピーは常に左から2枚目の位置に来る事とコピー元のシート位置は左端(1枚目)から変えちゃいけない事を
意識できればいいんじゃないかな
0370デフォルトの名無しさん2016/05/30(月) 20:24:27.53ID:dvnyr15v
>>359
「手取り」っていまいちよく理解できないんだよね。
支給額から税金とか差し引いた額ってことだろうけど、
その差し引きく額には会社の団体保険の医療保険とか持ち株会の月額とか寮費とかは含まれるの?
たまに「手取り○万円しか無いんだよ!」って言う人に詳しく聞くと、
上記のようなものも差し引いて実際に自分の口座に振り込まれる額を言う人がいるんだけど、
それって「手取り」って言って正しいの?
0371デフォルトの名無しさん2016/05/30(月) 20:49:50.01ID:9zgDAfYa
>>370
手取りは基本的に保険など差し引いて振り込まれる額、つまり自由に使える金
寮費は微妙だけど、振り込まれる額を指す場合が多いと思う
0372デフォルトの名無しさん2016/05/30(月) 20:50:32.53ID:iGtTjZst
>>370
引くのは税金と健康保険と雇用保険と介護保険じゃね
0373デフォルトの名無しさん2016/05/30(月) 20:57:22.49ID:4q9S9srQ
>>370
確かに契約社員やってる人には
分かり辛いかもしれないね
0374デフォルトの名無しさん2016/05/30(月) 21:11:27.51ID:iGtTjZst
>>372
年金保険もか
0375デフォルトの名無しさん2016/05/30(月) 22:21:18.67ID:VvWJADwM
うちの会社は、関連会社の自動車保険料や寮費を差し引かれた金額が振り込まれる・・・
0376デフォルトの名無しさん2016/05/30(月) 22:26:40.27ID:iGtTjZst
>>375
寮費とかはその人が寮を使ってるからだし
自動車保険も給与から引くようにしなくても良いんじゃね

健康保険とか雇用保険とか年金は全員引かれるもの
VBAとは関係ないが
0377デフォルトの名無しさん2016/05/30(月) 22:28:58.68ID:9zgDAfYa
案件で手取りの話があるのかと思ったら元はただの煽りかよw
真剣に考えて損したわ
0378デフォルトの名無しさん2016/05/30(月) 22:37:26.71ID:VvWJADwM
>>376
給与明細見たら、
組合費、組合積立金、寮の食堂での食費、寮自治会費も給料から引かれてたわ

手取りっていっても会社によって全然ちがうのね
ちな三菱系
0379デフォルトの名無しさん2016/05/30(月) 22:49:20.47ID:JaLXIj0G
会社によっては持ち株とか財形とか色々天引きできる
ただそう言うのまで入れると何の金額のことかワケわからんようになるから手取りってそう言うのは入れないように思う
0380デフォルトの名無しさん2016/05/30(月) 22:50:34.41ID:dvnyr15v
いや、最近読んだ「7年目で手取り11万円」給与明細が大反響 自動車整備士、国家資格で「この待遇?」」の
ニュースと >>359 の「手取り」の文章とで、昔の関連会社の人との会話の中でふと思ったことを
連想して思い出したら書かずにはいられなかっただけなんだ。ごめんよ。
0381デフォルトの名無しさん2016/05/30(月) 22:59:06.74ID:MGJW0QKJ
気にするな
もうすぐボーナスじゃないか
0382デフォルトの名無しさん2016/05/30(月) 23:25:53.51ID:FNI4oSJu
振り込み額を手取りという場合もあるけど
一般的には給与から源泉徴収税、住民税特別徴収、健康保険料、年金保険料、雇用保険料を引いた額
0383デフォルトの名無しさん2016/05/30(月) 23:28:03.40ID:FNI4oSJu
寮費、財形貯蓄、団体生命、団体保険等は任意なのでこれらを差し引く前の額
0384デフォルトの名無しさん2016/05/31(火) 01:17:34.99ID:P+B3hNwu
>>381
何それ、俺の知らない知識だ
0385デフォルトの名無しさん2016/05/31(火) 07:03:20.88ID:lb4BA3Cb
なるほど>>357>>358は派遣ということか
0386デフォルトの名無しさん2016/05/31(火) 11:12:06.88ID:P7zsebxN
お願いします!
double型の配列に数値以外の文字を格納することは出来ませんか?空白と区別出来るものであれば何でも構いません。(-または/がベストな希望)
型をvariantに変えるという手もありますが、計算ミスがあるようなイメージがあるので、やっておりません。何かアドバイスお願いします。
0387デフォルトの名無しさん2016/05/31(火) 11:47:30.66ID:9/vIAIrD
>>386
計算ミスというのは無いと思うが、やはりVariantで型チェックすれば?
または自分でOptional型クラスを作るか。
0388デフォルトの名無しさん2016/05/31(火) 12:07:24.59ID:iuDv2fhM
>>386
そのまま答えるとvariantで格納して呼び出しの時にチェックするしか無いだろう

しかしそれ以前に根本的な設計が間違ってる
やりたいこと書いた方がいいかもしれない
0389デフォルトの名無しさん2016/05/31(火) 14:51:30.75ID:MV3Si3mC
>>387
>>388
ダブルだとやはり出来ないんですね。
稀にマイナス小数点同士の乗算除算や0出現時のエラーがあるのでそれを区別したいと考えてました。
variantでやってみます!
0390デフォルトの名無しさん2016/05/31(火) 21:08:56.37ID:mGubUgmp
>>386みたいな問題って、キングオブ糞なやり方が実際にはうまくいくんだよな
0391デフォルトの名無しさん2016/05/31(火) 21:30:53.23ID:C0QCg+Ll
まー、本当はセルに数値として設定されてるなら普通にDouble型で行けると思うけどね。
まさかセルからTextで値取得しているってオチは無いよね。

ちょっと気になったのがVariant型に入れて数値チェックするのと、
String型に入れて数値チェックしてDouble型に変換して使うのとどっちが早いのか。
まぁ気にするほど差が出ないのは分かっているけど、単純な疑問。

後、Variantに入れると変な暗黙の型に突っ込まれて本来のDouble型と挙動が変わることがないのか心配。
0392デフォルトの名無しさん2016/05/31(火) 21:51:56.92ID:LgcgyNaP
どうせアルゴリズムが遅いのだから実行速度とか気にせん方がええでお前らは
0393デフォルトの名無しさん2016/05/31(火) 22:01:55.92ID:iuDv2fhM
アルゴリズムが遅い・・・?
ふーん、アルゴリズムが遅いんだ〜
0394デフォルトの名無しさん2016/05/31(火) 22:04:20.02ID:mGubUgmp
>>391
単にVariant型に入れた値を数値チェック後に取り出すだけだったら、Stringから変換するよりずっとずっと速いはず。
前者と違って後者は本当の変換だからな。
0395デフォルトの名無しさん2016/05/31(火) 22:09:57.16ID:LgcgyNaP
>>393
せやで、プロとお前らの違いはアルゴリズムなんやで
変数がvariantとかどうでもええねん
0396デフォルトの名無しさん2016/05/31(火) 22:10:12.22ID:C0QCg+Ll
>>394
ただ、Variant型を使うよりString型を使う方が早いんだよね。
型変換でどのくらい相殺されるか
0397デフォルトの名無しさん2016/05/31(火) 22:13:58.47ID:hxNGQcCX
>>389
エスパると丸め誤差のことか?
0398デフォルトの名無しさん2016/05/31(火) 22:15:14.99ID:mGubUgmp
>>396
どういう使い方?
v = 3.1415
より
s = "3.1415"
として使う方が速いって意味?
0399デフォルトの名無しさん2016/05/31(火) 22:40:22.39ID:P0axz30G
>>344
俺もこれ知りたい
VBAからセル選択してもフォーカスはコントロールに行ったままだよな
0400デフォルトの名無しさん2016/05/31(火) 23:58:45.09ID:b/p0i84S
>>399
Excel 2013持っていないから試せないけど
APIでフォアグラウンドウィンドウを変えてみるとかは?

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Sub CommandButton1_Click()
 SetForegroundWindow Application.hWnd
End Sub
0401デフォルトの名無しさん2016/05/31(火) 23:59:23.43ID:C0QCg+Ll
>>398
そう。

http://officetanaka.net/excel/vba/speed/s6.htm
0402デフォルトの名無しさん2016/06/01(水) 00:08:55.15ID:v2Wj2/bB
>>401
いやそのリンク先は
s = "3.1415"
としたあとsを文字列のまま扱うときの話でしょ

>>391で「String型に入れて数値チェックしてDouble型に変換して使う」ってのが元の話
だからsをDoubleに戻すコストがいる。
0403デフォルトの名無しさん2016/06/01(水) 00:11:50.06ID:9sIb/BNE
>>399
いったんfalseにしてからtrueにするのは試した?
0404デフォルトの名無しさん2016/06/01(水) 00:28:41.02ID:f68tak/j
>>402
だからその型変換に掛かる時間と相殺してどちらが早いかという話。

数値チェックはどちらにしたって必要でしょ。
0405デフォルトの名無しさん2016/06/01(水) 00:46:14.53ID:v2Wj2/bB
>>404
なるほど
じゃ、明示的な数値チェックを略すと

Dim s As String
Dim v As Variant
Dim d As Double

s = 3.1415   ' ← 型変換(1)
d = s      ' ← 型変換(2)

v = 2.7183  ' ← 型変換(3)
d = v     ' ← 型変換(4)

としたときのコストは (1) + (2) >> (3) + (4) だ
、っていうのが>>394の主張。
0406デフォルトの名無しさん2016/06/01(水) 02:19:56.12ID:f68tak/j
>>405
そうやって並べてみると、
セルから取って来てVariant型に入れた
値は内部型でDouble型とは限らないから
結局は型変換が必要になるな。

後、Objectならともかく、こっちは
Doble型に変換するなら暗黙の変換使わずに
明示的な変換を行う想定でいたわ。

d = CDbl(s)     ' ← 型変換(2)

d = CDbl(v)     ' ← 型変換(4)
0407デフォルトの名無しさん2016/06/01(水) 07:17:59.36ID:v2Wj2/bB
>>406
うん、まあセルに入っている値が大多数は数値で、たまに変なエラーみたいなものが入っている前提とすると、

d = CDbl(s)     ' ← この型変換は常に重い

d = CDbl(v)     ' ← この型変換はたまに重い

となるね。(sはString型なので常に関数呼び出し)
0408デフォルトの名無しさん2016/06/01(水) 07:58:53.15ID:J5oSfmPv
>>407
よく分からないんだけど、例えばセルから取得した値をVariantが内部型をLong型とかに判断した場合って型変換は起こるんじゃないの?
0409デフォルトの名無しさん2016/06/01(水) 08:50:59.51ID:weg166lE
実測してみれば良いんじゃないかな
0410デフォルトの名無しさん2016/06/01(水) 09:02:22.06ID:akJUj8WN
質問です。
特定のフォルダに、ファイル(エクセルBook)が登録(保存、ペースト)された時に
VBAで記述した処理を起動したいのですが、どうすれば良いのでしょうか?
0411デフォルトの名無しさん2016/06/01(水) 12:22:55.53ID:K88eWt2g
>>410
API使ってタイマーで前回の状態と比較するしか無いんじゃなかろうか。

VB.Netなら確かfilesystemwatcherが使えた気がするけど、それでも難しいよ。

何せExcelファイルはファイルサーバとかに置いて共有切ったりすると、暫く違うファイルに前回状況を抱えて出力したりしてるからね。

簡単なことならいいけど、色々やろうとすると途端に難しくなる。
0412デフォルトの名無しさん2016/06/01(水) 17:11:37.67ID:E/1ScAaT
型変換するコストより、数値チェックするコストの方が圧倒的高い気がするんだが
チェックしないで例外拾うのも、例外処理のコストが高い気がするし

実測したわけじゃないから気がするだけかもしれんが
0413デフォルトの名無しさん2016/06/01(水) 18:33:41.83ID:9sIb/BNE
そんなチマチマしたこと考えるより、速いPCと速いSSDをドドーンと用意すればいいだけじゃないの?
そもそもそんなに速度が重要ならVBAは向いていないって話だしな。
0414デフォルトの名無しさん2016/06/01(水) 19:29:44.69ID:weg166lE
>>410
VBAだけでは難しいかも
0415デフォルトの名無しさん2016/06/01(水) 19:49:31.29ID:sRCfCf1w
VBAは純粋に処理速度遅いからなぁ。

出来合いの物同士を結んで駆動させるにはすごく便利なんだけど、
単体で何か作ろうってのは無理だな。
0416デフォルトの名無しさん2016/06/01(水) 20:29:22.31ID:NX6RE2hb
その用途でもVBA使いづらくない?
0417デフォルトの名無しさん2016/06/01(水) 21:07:08.13ID:v2Wj2/bB
>>410
ボタンを押してからフォルダの監視を始めて、ファイルが登録されるまでほっといていいんなら
単に無限ループにすればいいと思うけど?
0418デフォルトの名無しさん2016/06/01(水) 21:07:46.48ID:IfpgImxc
まーでもさ、SQL一発で処理出来て俄然速くなりそうなところを
VBAで三重ループとかして何とかしているコードとか見かけると
もう脱力感を通り越して微笑ましいよな
0419デフォルトの名無しさん2016/06/02(木) 03:58:28.00ID:0gMFQogn
質問したいんだけどかなり長くなるし
規模がそれなりになりそうでレス消費激しくなりそうなんだけど
別にスレ立てたほうがいい?
0420デフォルトの名無しさん2016/06/02(木) 06:34:02.28ID:uPQC6lrS
スレ立てて5レスくらいで終わったらどうするんだ
0421デフォルトの名無しさん2016/06/02(木) 06:38:04.75ID:jAQjQwIo
そんな時は知恵袋
0422デフォルトの名無しさん2016/06/02(木) 08:21:37.06ID:x3+LLHfF
>>419
とりあえず質問内容書いちゃいなよ
ダメだったら回答がないだけで
他になんのリスクもないじゃん
04234102016/06/02(木) 11:18:28.49ID:E1zOmXKj
>>411、414、417
レスありがとうございます。
他の方法考えてみます。
0424デフォルトの名無しさん2016/06/02(木) 12:23:31.19ID:0gMFQogn
>>419 だけど質問させてもらうわ

VBAで.CSVの中にある特定の文字列を書き出して右のセル、特定の文字列を書き出して右のセル・・・
とやって言ってある文字列が来たら下のセルの端から・・・という風なものを作りたいんだけど
0425デフォルトの名無しさん2016/06/02(木) 12:36:06.49ID:jr36f/Tp
csvが対象で文字列操作だけで済むならpythonかruby使え
0426デフォルトの名無しさん2016/06/02(木) 12:38:46.39ID:PrMOVFII
テキストストリームで開いて、
1行ずつ読み込んで、
1行をカンマで分解して、
分解した文字列を比較して、
スキップするのか右に書き出すのか改行するのか処理して、
全行読み込み終わるまで繰り返せばいい。
0427デフォルトの名無しさん2016/06/02(木) 13:42:52.85ID:0gMFQogn
>>426
なるほど 流れは理解できた
1行をカンマで分解ってどうすればいいんだ?

なんども質問して悪いね
0428デフォルトの名無しさん2016/06/02(木) 13:56:01.35ID:f0lhMNCN
Split関数
0429デフォルトの名無しさん2016/06/02(木) 14:03:22.31ID:PrMOVFII
その分だとCSVが結構曖昧なファイル形式と言うことも知らないよね?
大まかに文字通り「カンマ文字で区切られているテキストファイル」程度の縛りしかなく、
カンマ自体を文字列として扱う表現方法とか、
ダブルクォーテーションをどう扱うかとか、
改行コードも区切り文字として扱うのかとか、
そういった決まりが標準として存在してはいないことを注意した方がいいよ。
エクセルに読ませるCSVファイルの作成者とのファイル形式の詳細の確認をしておかないと誤動作する。
あと文字コードとかね。
0430デフォルトの名無しさん2016/06/02(木) 14:26:09.67ID:MCmPKbwB
とりあえず、ここくらいは知っとけ
http://www.pc-master.jp/sousa/csv.html
0431デフォルトの名無しさん2016/06/02(木) 14:27:01.89ID:0gMFQogn
>>429 親切にありがとう
確かにCSVってファイルの存在がよくわかってないのは事実だわ
文字が入ってるファイル 程度の認識だった
0432デフォルトの名無しさん2016/06/02(木) 17:08:58.17ID:H/+hHucZ
まあ俺ならCSVファイルのままどうこうしないで1回シートに落とすけどな
0433デフォルトの名無しさん2016/06/02(木) 17:20:17.63ID:QOEnZCBh
powershellが良いぞ
0434デフォルトの名無しさん2016/06/02(木) 18:34:23.67ID:VAHYdxVD
>>432 に1票
CSVのパースまで自分でやるならVBA使う意味ないじゃんw
ExcelにCSVのデータをセルに配置してもらって
自分で好きなようにいじって
最後にまたExcelにCSVとして書き出してもらいたいからVBAなのでは
0435デフォルトの名無しさん2016/06/02(木) 19:41:25.29ID:Q6rF1mtD
>>434
100万行以内ならそれだな
0436デフォルトの名無しさん2016/06/02(木) 19:54:53.84ID:jr36f/Tp
そもそも特定の文字列取り出すだけなら
CSVパースする必要なくね
0437デフォルトの名無しさん2016/06/02(木) 20:15:59.00ID:W5gwkCTf
元のファイルを読み込んで

特定文字列を見つけたら
ファイルに書き込んでカンマ

別のある文字列を見つけたら書き込んで改行

これをcsvファイルとして読み込む
0438デフォルトの名無しさん2016/06/02(木) 21:05:06.89ID:D6ak8EHx
>>424
やりたいのはこんな感じか? http://codepad.org/2IMAfd1O (コピペして(適当な名前).vbsで保存)
VBScriptだけどSUBの部分はEXCELのVBAにもそのままで持っていけると思う
ワークシートに出したいなら出力部分をファイルからワークシートに変更すればいい
0439デフォルトの名無しさん2016/06/02(木) 21:28:50.10ID:uPQC6lrS
UTF-8のファイルを扱う場合だったら CreateObject("ADODB.Stream") かな
0440デフォルトの名無しさん2016/06/02(木) 22:09:47.82ID:/P5tacee
Excel2010です

用意した置換前、置換後のワードリストに沿って複数の文字列置換を一括処理したいのですが、前後の重複に苦悩しています。

例えば
置換前 置換後
 あ → い
 い → う

というリストで「あい」という値を順番にReplace関数をかけると 
「あい」→「いい」→「うう」になってしまいます。
「あい」→「いう」
になるように処理したいです。

ひとつ考えたのは、置換が済んだ文字列は書式を変えて次の処理をしないという方法ですが、
大量処理のためワードリストも処理範囲も全て配列に格納して処理するようにしているので出来ません。

置換された文字列は次の置換処理に当たらないようにする手は無いでしょうか。
0441デフォルトの名無しさん2016/06/02(木) 22:09:53.87ID:Td5AQauD
正規表現つかったりカンマをタブに置き換えたり
ADODB使ったりSplitで改行位置を何とかしたり色々な方法を考えた結果、
>>429みたいなやり方が一番面倒臭さく無さそうだという結論に達した。

細々と何かすれば処理速度は上がるかも知れないけどね。
0442デフォルトの名無しさん2016/06/02(木) 22:13:13.72ID:Td5AQauD
>>440
置換って逆順にやって行くもんだよ
0443デフォルトの名無しさん2016/06/02(木) 22:18:37.69ID:ZNUdZI3k
>>440
「ぬぬぬ」を検索して使っていなければ
あ → ぬぬぬ
い → う
ぬぬぬ → い
みたいな感じ?
こういう場合どうすればいいんだろうね、知らないわ
0444デフォルトの名無しさん2016/06/02(木) 22:29:53.58ID:W5gwkCTf
>>440
application.screenupdate = false
calculatin = xlmanual
とかにすれば配列に入れなくても結構速くなるけど

それか2次元配列にして置換すみなら印をつけるとか

別にDictinaryとか作って置換すみの配列の添字を追加して
exist()メソッドでチェックするとか
0445デフォルトの名無しさん2016/06/02(木) 22:32:37.55ID:I8wr9FkH
>>442
逆順でも同じです、順序の問題ではありませんので。
例えばこんな相互置換というか循環置換とでも言うのかな、だったら

置換前 置換後
A1 → A2
A2 → A3
A3 → A1

対象範囲内にA1もA2もA3も全部存在するので上から置換しても下から置換しても同じ問題に当たります。

>>443
その手は考えたのですが、置換対象は何でもあるので「使っていない文字列」は常に不明です。
なので一旦意味を持たない大量のユニークな文字列に1次置換してから目的のワードに2次置換するという。
しかしひとつの値に複数の置換対象があった場合、正常な動作を保証できない気がします。

例えば上の例なら
「A1A2A3」という値を「A2A3A1」にしたいので一旦「&//$%%&%%%-5577'/?##-$」みたいになった時に
偶然他の1次置換ワードと繋がったら間違った結果になってしまいます。
0446デフォルトの名無しさん2016/06/02(木) 22:34:27.71ID:W5gwkCTf
>>440
他にはワードリストを工夫する
あ→い
い→う
のリストではなく
あい→いう
のリストを追加して
文字列の長い順に置換処理するとか
0447デフォルトの名無しさん2016/06/02(木) 22:40:12.20ID:I8wr9FkH
>>444
その2つはもちろん入れています。
処理範囲は沢山のシートの沢山の範囲で、置換ワードも沢山なので配列使わないのはなんとか避けたいです。

今はセル範囲を二次元配列1と2に入れて、配列2を置換し、配列1と配列2の値が違ったらその番地だけセルに代入するよう組んでいます。

FIND関数とLEN関数で置換した文字列の開始文字数と終了文字数を記録して、次の置換対象がその範囲内に被っていたらreplaceを回避
というのも考えたのですが、これもひとつの値に同じ置換が複数回発生した時に2個目以降が回避できないです。
0448デフォルトの名無しさん2016/06/02(木) 22:41:12.82ID:uPQC6lrS
>>445
あい→AB
いう→XY
っていう置換リストがある場合、
"あいう"
はどうなるルールなの?
0449デフォルトの名無しさん2016/06/02(木) 22:45:06.67ID:W5gwkCTf
文字列だけでなくその何文字目が置換すみかも管理しないとダメかもね
0450デフォルトの名無しさん2016/06/02(木) 23:05:21.74ID:27mXebeA
あ、これでいけるかな?

1. 絶対に使われていないであろう文字を一つ用意する(ゑ、ゐとか)
2. 一応全処理範囲にその文字が存在しないか検査する
2a.あったらアラート出して止める
3. 置換ワード1は「ゑ@ゑ」、置換ワード2は「ゑ@@ゑ」に置換する(@の数は置換リスト数だけ増えるようfor nextで)
4. 本命に置換する

これなら偶然繋がってた元の置換ワードが偶然別の仮置換ワードと一致しちゃう可能性は無い
0451デフォルトの名無しさん2016/06/02(木) 23:08:41.11ID:ZNUdZI3k
>>450
同じこと書こうと思ってたorz
絵文字でもいいね
正規表現でもいいと思うけど2byte文字が使えるかどうかは分からん
0452デフォルトの名無しさん2016/06/02(木) 23:16:43.98ID:W5gwkCTf
>>450
ワード1はゑ1ゑに
ワード2はゑ2ゑに
ワードnはゑnゑに置換でも良いかも
nを配列の添字とかdictionaryのkeyにすればいい
0453デフォルトの名無しさん2016/06/02(木) 23:47:31.70ID:I8wr9FkH
>>450自分ですが、いけそうですね
明日試してみます
皆さんご意見ありがとうございます
0454デフォルトの名無しさん2016/06/03(金) 00:05:59.50ID:WMPHIHXe
>>448
そういうのは想定していないんじゃない?
0455デフォルトの名無しさん2016/06/03(金) 00:15:28.22ID:3+Y90JKR
リストの最初の方が優先順位が高いと言うルールで良いんじゃないか
先に変換したらその後は変換対象にしない
あいう→ABう
になる
0456デフォルトの名無しさん2016/06/03(金) 00:59:00.12ID:YNoAy0SK
ある業務入力ソフトのデータが、きちんと正しく打ち込まれているかを確認するVBAを作りたいのですが、プログラミングの経験が薄いため、どういう発想で作ればいいか相談させて下さい。

A列には名前が入っています。
B列には日付が入っています。
C列には開始時刻が入っています。
D列には終了時刻が入っています。
E列にはタスク名が入っています。

丁度、以下のような感じです。
鈴木 6/2 11:00 11:30 タスクX
佐藤 6/2 10:30 12:00 タスクY
...

このデータについて、毎日、全員、全てのタスク(X、Y、Zとする)が漏れなく重複なく入力されていて、更にタスク毎に開始と終了もテンプレートに沿って(Xは11:00-11:30、Yは10:30-12:00、のように)入力されているかの確認をしたいのです。

要は、
鈴木 6/2 11:00 11:40 タスクX
となっていれば、11:40の入力ミスが分かるようにしたい。

鈴木 6/2 11:00 11:30 タスクX
鈴木 6/2 11:00 11:30 タスクX
鈴木 6/2 10:30 12:00 タスクY

となっていれば、「タスクXの重複」と、「6/2のタスクZの抜け」が分かるようにしたい。


という感じなのですが、やりたい事が伝われば、すみませんがご教授願います。よろしくお願いします。
0457デフォルトの名無しさん2016/06/03(金) 01:27:49.22ID:p2nW9YpX
「Range.Find , FindNext は検索の終端を検知できずループしてしまうから
最初のアドレスと比較することでループを抜ける条件にしてる」

というのを上のコメントで拝見したのですが、
例えば最初に列指定でFindした際にIf文でNothingの場合どうするのかというのを
いれると思うのですが、検索の終端を検知できずループしてしまうのであれば、
If文までいかずにFindの所で永久ループしてしまう気がするのですが、そうならないのは
何故なのでしょうか?
0458デフォルトの名無しさん2016/06/03(金) 01:37:33.93ID:SESshZ7L
毎日とか全員とかの定義が不明だが、基本的には書いてある通りやるだけなんだが
VBAの問題じゃなくてアルゴリズムもしくはフローの問題

発想は
毎日、全員に対して
 漏れがないかチェック
 重複がないかチェック
全タスクについて
 テンプレートに沿ってるかチェック
を行うだけだが
0459デフォルトの名無しさん2016/06/03(金) 02:02:50.57ID:fVYd85Q0
チケット制・タスク登録なら、Redmine を使えば?
04600gMFQogn2016/06/03(金) 02:48:08.41ID:PdZhxGoZ
いろいろ書いてくれてありがとう
Excelでやる理由はバカでも使えるようにoffice製品のみで完結させておきたいからなんだ

もうちょっと要件整理したり自力で作ってみるわ
またわからないことがあったら聞きに来るかもしれないいが
0461デフォルトの名無しさん2016/06/03(金) 06:26:17.43ID:3+Y90JKR
>>457
一度の実行の間は最初のアドレスを保持しているが
実行が終わると最初のアドレスを忘れてしまうから
0462デフォルトの名無しさん2016/06/03(金) 06:51:34.01ID:p2nW9YpX
>>461
それはFindNextもなのしょうか?
0463デフォルトの名無しさん2016/06/03(金) 06:52:10.03ID:p2nW9YpX
>>461
失礼しました。それはFindNextもなのでしょうか?
0464デフォルトの名無しさん2016/06/03(金) 07:11:10.78ID:PJyaHrdN
>>457
findにおける検索の終端と、
findを利用して自分で組むループの終端を混同してるようだけど、
findは検索範囲内でafter:=以降の部分から範囲内を一通り検索して、
検索対象が一個見つかるか全く見つからないときに検索を終える。
これがfind検索の終端。
それに対してfindでは検索範囲内に複数の検索対象があった時に
一個ずつしか見つけられないからfind next も組み合わせて
自分で組むループの終端は
最初に見つかった検索対象の位置を自前で記憶しておいて
そこまで戻ってきたらそこを終端とするって話。
ゴッチャにしたらダメ。
0465デフォルトの名無しさん2016/06/03(金) 07:33:19.48ID:p2nW9YpX
>>464
ありがとうございます。
複数の検索対象があった時に、FindNextでもFindに置き換えたとしても、
1個づつしか見つけられないから、Do〜Loop文等でアドレスを比較し、
一致するかしないかで終端を作るということですね。
0466デフォルトの名無しさん2016/06/03(金) 07:35:43.26ID:JncqPXc2
>>456
コレクションかディクショナリにタスク名をキーにして、作業情報を登録しておけば良いんじゃなかろか。

キーが登録されていないタスクは行われていないし、作業情報も
配列かコレクションかディクショナリにして登録するようにしておいて、複数データがあれば重複だし、
後で複数の重複があった場合、それも検知出来るし詳細な情報も残しておくことが出来る。
0467デフォルトの名無しさん2016/06/03(金) 08:12:34.05ID:+ITo/Rr7
また Find w
0468デフォルトの名無しさん2016/06/03(金) 13:15:16.45ID:n9h4VBSL
セルA1に=now()
が入って時刻が出ています。

セルB1に3分たったら+1ずつ足して行くVBAをお願いします。
0469デフォルトの名無しさん2016/06/03(金) 13:21:15.51ID:3+Y90JKR
>>468
質問内容は?
0470デフォルトの名無しさん2016/06/03(金) 14:11:58.99ID:fD9s4V2q
Sub A1から3分経過していたら加算()
Application.Calculate
End Sub
04714682016/06/03(金) 15:31:38.25ID:9vEli6cv
すみません。
要は3分たったら1、
次に3分たったら2、
次に3分たったら3、
次に3分たったら4
とセルB1に加算されてゆくVBAを知りたいのです。
分かりにくくてすみません!
0472デフォルトの名無しさん2016/06/03(金) 15:46:55.67ID:Ggdm0BoU
>>471
excel vba timerとかでググれ
ググりかたは知ってよな
0473デフォルトの名無しさん2016/06/03(金) 16:57:20.17ID:fD9s4V2q
=INT(TEXT((A3-A2),"hh:mm:dd")*480)
0474デフォルトの名無しさん2016/06/03(金) 21:58:12.97ID:JncqPXc2
>>471
本当にその要件なら>>473でこと足りるとは思うけど
タイマーによるイベント処理を行いたい訳ではないよね。

そうだとしたらVB6と違ってタイマコントロールはないからAPIを使うことになる。

時間を計ってぐーるぐる回して時間になったら処理をするという手もあるけど、
イベント使った方が何かカッコいい気がするし、
ゲームとか作るとき処理が終わりきれていないと
次のイベントを待つので「ああ、処理落ちだ」って昔のゲームみたいに
趣きのあるものが作れる
0475デフォルトの名無しさん2016/06/04(土) 00:43:24.42ID:x9jX4yju
>>473
それはVBAじゃない
0476デフォルトの名無しさん2016/06/04(土) 06:34:18.01ID:w3l9f/tm
[B1]="=INT(TEXT(A3-A2,""hh:mm:dd"")*480)"
0477デフォルトの名無しさん2016/06/04(土) 13:41:41.17ID:XvYHrNjs
480ってなに?
0478デフォルトの名無しさん2016/06/04(土) 13:51:00.00ID:qmE4Ukk2
>>477
24*60*60/180
Excelでは1日を1で表す
180秒で1増える様に上の値を掛ける
0479デフォルトの名無しさん2016/06/04(土) 18:51:18.35ID:Urj/a8QZ
>>476
どうでもいいけどこれ時刻の書式間違ってね?

"hh:mm:dd" → "hh:mm:ss"
0480デフォルトの名無しさん2016/06/04(土) 19:36:59.18ID:rYWf1jQa
selectとfromとwhereとorderbyを備えたクラスを作ったらLINQみたいに使えて便利かなあ?
0481デフォルトの名無しさん2016/06/04(土) 21:10:02.67ID:laCcMYDZ
>>480
用途があるなら便利じゃないの?
よくわからない質問だなあ…
0482デフォルトの名無しさん2016/06/04(土) 22:25:12.69ID:rYWf1jQa
>>481
ごめんなさい。愚痴です

Obj.select(変換式).from(情報源).where(抽出条件).orderby(大小関係)
ってするべきなんだけど難しくて。

Obj.from(情報源).where(抽出条件).select(変換式).orderby(大小関係)
だったら処理する順通りだから何とかなるけど。
0483デフォルトの名無しさん2016/06/04(土) 23:19:26.57ID:wPHlgGMm
なんか知恵袋で似たようなこと考えてた人いた
sql文て見づらくなる時もあるからこんなのもいいかもね
Dim SqlClass As CreateSql
Dim SqlList As String
Set SqlClass = New CreateSql
Call SqlClass.SqlSelect("テスト用テーブル")
Call SqlClass.SqlWhere("条件", "A")
Call SqlClass.SqlOrderD("条件B")
SqlList = SqlClass.SqlCode
0484デフォルトの名無しさん2016/06/04(土) 23:44:25.98ID:6mTFRE/r
Range("af11").Select

SendKeys "{F2}"
SendKeys "+{up}"
SendKeys "^{c}"

SetCursorPos 1710, 910
' mouse_event 2
' mouse_event 4


セルを選択し、書き込みモード?の状態にしてから内容を全てコピーして
(セルから直接コピーだとペーストさせてくれないソフトを使ってます)
マウスを指定した座標に移動させそこでクリックした後ペースト

というマクロを作りたいのですが、処理が上手くいきません
上記のマウスをクリックさせる を含めないとコピーが上手くいくのですが
マウスをクリック を含めると内容をコピーしてくれてません
原因は分かりますか?
04854822016/06/05(日) 00:07:58.54ID:6XcU5txU
>>483
それって本当のSQLで、SQL文をどうやって作るかっていう問題に見える。

Obj.select(変換式:=2倍).from(情報源:=配列a).where(抽出条件:=100未満).orderby(大小関係:=昇順)
みたいなのを想定してます。
0486デフォルトの名無しさん2016/06/05(日) 00:12:16.96ID:7g2ahIho
セルから直接コピーだとペーストさせてくれないソフトはExcelですか?
0487デフォルトの名無しさん2016/06/05(日) 00:18:38.66ID:O7He+r7K
>>484
クリップボードにデータ取り込みたいならSendKeysよりも
DataObject使った方が楽だと思うけど・・・

Dim d As New DataObject
d.SetText Range("A1").Value
d.PutInClipboard


クリップボードとデータのやりとりをする
https://www.moug.net/tech/exvba/0150091.html
0488デフォルトの名無しさん2016/06/05(日) 00:29:18.79ID:BIV+QBMm
>>487
楽でしたね
ありがとうございます!
0489デフォルトの名無しさん2016/06/05(日) 01:27:52.16ID:pdmfsKht
>>480
これは興味深いですね
Linqやラムダ式をExcelで表現出来たら是非教えてください。
0490デフォルトの名無しさん2016/06/05(日) 08:08:49.61ID:iCXItJy9
モジュールにbyref string変数で渡しモジュール内で
変更しても呼び出し元では変数の中身が元に
戻ってしまいいますがこれは何故でしょうか。
参照で渡せないのでしょうか。
0491デフォルトの名無しさん2016/06/05(日) 08:45:52.53ID:26+uwwbz
>>490
そんなことなった経験がない
ちょっとそのコードさらしてみてよ
0492デフォルトの名無しさん2016/06/05(日) 09:01:09.75ID:VCr+WiRz
>>490
普通に参照渡しで、呼び出し側の文字列も変わる
たぶん作ったコードがバグってる
0493デフォルトの名無しさん2016/06/05(日) 09:33:07.41ID:6XcU5txU
>>490
カッコ付けてない?

Sub changeString(ByRef s As String)
s = "changed"
End Sub

というSubを作って、

s1$ = "original"
changeString s1  ← カッコなし
?s1
changed       ← 変わった

s1$ = "original"
changeString(s1) ← カッコあり
?s1
original       ← 変わらず
0494デフォルトの名無しさん2016/06/05(日) 09:56:32.90ID:iCXItJy9
>>492-493
こういう感じで書いています。

Private Sub CommandButton1_Click()
Dim s as string
s = "a"
StringCheck(s)
End Sub

Function StringCheck(ByRef st As String)
if st = "a" then
  st = "b"
end if
End Function

>>493
かっこをつけてました。
かっこをつけると駄目なんでしょうか?

Cではかっこあっても参照で渡せたような気がします。
0495デフォルトの名無しさん2016/06/05(日) 10:02:00.58ID:VCr+WiRz
>>494
以前議論した内容

(val)の参照が渡されるから

callをつければvalの参照が渡される
0496デフォルトの名無しさん2016/06/05(日) 10:11:20.63ID:3QH2XO7h
前スレのこれ↓かー
http://echo.2ch.net/test/read.cgi/tech/1455817784/356
勉強になった
0497デフォルトの名無しさん2016/06/05(日) 10:18:15.27ID:iCXItJy9
>>495
(val)で渡されてしまうとは予想外でした。
確かにかっこを取ると参照で渡せました。
callでも問題なく渡せました。

>491-495
皆さんありがとうございました!

>>496
前スレで話題にあげたばかりだったのですね。
見ておけばよかった・・・ すみません。
0498デフォルトの名無しさん2016/06/05(日) 14:20:18.87ID:Uhyyv1sV
>>482
便利ですか?
が質問じゃないのか
0499デフォルトの名無しさん2016/06/05(日) 15:24:31.11ID:pdmfsKht
質問です。

シートで1セルの範囲に"Hoge"という名前を付けると
VBA側でRange('Hoge").valueでセル値の内容を確認することが出来ますが、
処理実行中にこのコードに来る前に、他のBookがActiveになると、
このコードが実行されるときにエラーになります。

これはつまりExcel側がら名前を付けた範囲の情報がBookの情報を持っておらず、
シート情報からしか持っていない為に起こる事象だと思うんですが、
ThisWorkbook.Rangeというプロパティは存在しないので
ThisWorkbook.Range("Hoge").valueとも書けないですし、
このコード直前でThisWorkbook.Activateとしても結局は再現性の低いバグになるだけで、
根本的な解決にならないのは分かります。

名前付き範囲を使ったままで何か良い解決策はないでしょうか?
0500デフォルトの名無しさん2016/06/05(日) 15:42:08.47ID:WJNSNmMN
ThisWorkbook.Worksheets(1).Range
0501デフォルトの名無しさん2016/06/05(日) 15:50:22.50ID:pdmfsKht
>>500
Sheet1にそんな名前付き範囲はないって怒られました
0502デフォルトの名無しさん2016/06/05(日) 15:54:11.18ID:3QH2XO7h
>>499
ThisWorkbook.Names("Hoge").RefersToRange
でRangeオブジェクトを取得するのはどう?
0503デフォルトの名無しさん2016/06/05(日) 15:59:35.92ID:TevpUqb3
application.Names.Item(1)
0504デフォルトの名無しさん2016/06/05(日) 16:09:01.41ID:pdmfsKht
>>501
取れました。ありがとうございます!

実は教えて頂く前に名前付き範囲からシート名とアドレスを取得して再構成して
読み出す方法で自己解決したのですが、教えて頂いた方がシンプルですね。
ありがたく使わせて頂きます。

他の方々もありがとうございました。
0505デフォルトの名無しさん2016/06/06(月) 21:15:18.49ID:QZQfQuAS
また質問させてください。

列挙型をPublicで指定すると、確かに外部から指定出来るようにはなるのですが、
他の関数やプロパティのようにモジュール名.列挙型で指定できないみたいです。

他のモジュールで同じ名前の列挙型を指定すると
かぶってしまうと思うのですが、
それはかぶらないように名前を付けるか、
或いは一つモジュールを用意してConstを
プロパティで引っ張るような方法しかないんでしょうか?

やたら一つのモジュールに区分なくConstを詰め込んで使いたくないし、
モジュールが都度増えて行くというのも分かり辛そうなので
何か良い方法があれば教えて頂けるとありがたいです。
0506デフォルトの名無しさん2016/06/06(月) 21:45:31.54ID:Ly2klPtx
>>505
いまのVBAはenumも使えるのか。初めて知った。

試してみたけど、
モジュール名.enum名.列挙子

でアクセスできたよ?
0507デフォルトの名無しさん2016/06/07(火) 07:09:05.47ID:hS8RF9CR
VBAのDo while〜Loopの条件式に論理式って使えないんですか?
AndとかOrです
0508デフォルトの名無しさん2016/06/07(火) 07:30:36.29ID:5Z2R8nag
>>506
ごめんなさい。出来ましたね。
インテリセンスが働かないので出来ないと思い込んでいました。
0509デフォルトの名無しさん2016/06/07(火) 07:31:01.29ID:wxocoQF4
>>507
使えるんじゃない?

使えない具体的な例は?
0510デフォルトの名無しさん2016/06/07(火) 08:18:39.71ID:hS8RF9CR
駄目ですね
大人しくIf文とかと組み合わせます
0511デフォルトの名無しさん2016/06/07(火) 08:31:37.46ID:HU9syj05
>>507
Do While A And B
というコードは使えるけど?
0512デフォルトの名無しさん2016/06/07(火) 08:33:21.12ID:WoNq4aYh
これかな
VBAで、Do Until 〜 loopを使おうとしているのですが、条件式をDo Until Range... - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q134632328
0513デフォルトの名無しさん2016/06/07(火) 09:04:31.80ID:wxocoQF4
>>507
条件のところを関数にすれば良いよ
0514デフォルトの名無しさん2016/06/07(火) 09:27:12.79ID:TVhUeGo1
使えないと判断した507はどういうやり方したんだろう?
条件式全体を括弧でくくったか、Andの前後の式を括弧でくくってないとかだろうけど、
いろいろ試しそうなものだ・・
0515デフォルトの名無しさん2016/06/07(火) 10:56:27.79ID:hS8RF9CR
Andでやったらできました・・・
AndがOrみたいな役割になるんですね知りませんでした
みなさんどうもでした
0516デフォルトの名無しさん2016/06/07(火) 11:22:54.42ID:HU9syj05
>>515
そうですAndがOrみたいな役割になるんです(白目
0517デフォルトの名無しさん2016/06/07(火) 17:21:47.75ID:UOQYJ0iX
while/untilで条件が逆
Andの否定はOr

まあ、そういうことかと
0518デフォルトの名無しさん2016/06/07(火) 17:27:43.53ID:sZzqt4Xn
すみません、質問です。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_row_del.html
↑のサイトを見て勉強しているのですが、コード例1ではB列が0の行を
削除するようになっていますが、例えばBとCに数値があり、B×Cが
100以上の場合に行を削除するようにするには
 If Cells(i, 2).Value = 0 Then
をどのように書き換えればいいでしょうか。
0519デフォルトの名無しさん2016/06/07(火) 17:59:50.27ID:sOD3zpDI
 If Cells(i, 2).Value = 0 Then
       ↓
 If (Cells(i, 2).Value) * (Cells(i, 3).Value) >= 100 Then
0520デフォルトの名無しさん2016/06/07(火) 18:00:58.86ID:sOD3zpDI
Cellsの外のカッコいらんかったな
0521デフォルトの名無しさん2016/06/07(火) 18:48:59.31ID:sZzqt4Xn
ありがとうございます。
実行した所、実行時エラー13が出てしまいました。
Bの数値に小数点があるのですが、関係ありますでしょうか。
B×CをDに表示させ(Dは小数点無し)、Dを参照させましたが、
同じエラーが出てしまいます。
0522デフォルトの名無しさん2016/06/07(火) 19:02:38.77ID:HU9syj05
実行時エラー13て何だっけ?
0523デフォルトの名無しさん2016/06/07(火) 19:18:16.59ID:Ic9MVfcw
Office TANAKA - Excel VBAの実行時エラー[型が一致しません]
http://officetanaka.net/excel/vba/error/execution_error/error_13.htm
0524デフォルトの名無しさん2016/06/07(火) 19:27:44.96ID:HU9syj05
>>521
>B×CをDに表示させ
この時点でDは数値型に間違いないだろう。それと100を比較して実行時エラー13になるとは・・・
はて?
0525デフォルトの名無しさん2016/06/07(火) 19:58:48.10ID:xO/yIWhK
>>522
書き込むより検索したほうが早くないか
型ノ]不一致
0526デフォルトの名無しさん2016/06/07(火) 20:07:46.69ID:xO/yIWhK
>>521
http://stamp-uploda.com/src/file2030.jpg
ならんが

ついでにBに50、Cに6.5としてCを文字列にしても自動で型変換行って乗算は行われた

ステップインで
 If (Cells(i, 2).Value) * (Cells(i, 3).Value) >= 100 Then
まで進めて、イミディエイトウィンドウで
?Cells(i, 2).Value

?Cells(i, 3).Value
を見れば原因がわかると思う
0527デフォルトの名無しさん2016/06/07(火) 20:12:54.80ID:wxocoQF4
削除するとき行番号の大きい方からforで回したほうが良い
0528デフォルトの名無しさん2016/06/07(火) 21:33:26.82ID:sZzqt4Xn
みなさん、ありがとうございます。
イミディエイトウィンドウで原因が分かりました。
すみません、お騒がせしました。
0529デフォルトの名無しさん2016/06/07(火) 21:37:21.32ID:HU9syj05
>>525
ごめんなさいスマホだとつい億劫で
0530デフォルトの名無しさん2016/06/07(火) 21:38:15.15ID:HU9syj05
>>528
で具体的に何?
0531デフォルトの名無しさん2016/06/07(火) 21:54:06.30ID:xO/yIWhK
>>528
答え教えて〜ちょっと気になる
0532デフォルトの名無しさん2016/06/07(火) 22:02:37.05ID:oC37LPsM
セルの書式が文字列になってたとか数値と思ってたらスペースが入ってて文字列だったとか
0533デフォルトの名無しさん2016/06/08(水) 01:56:48.79ID:2INbON7T
sendkeysの処理が上手くいかないのです
マクロA終了→マクロB起動なら上手くいくのですが
マクロAからマクロBを呼び出す だと失敗します
マクロAを一旦終了させてからBに繋げる方法はないでしょうか
0534デフォルトの名無しさん2016/06/08(水) 02:11:49.12ID:bRA8ZG5u
>>517
単なる自分のつまらない勘違いでした・・・
みなさんに時間取らせて申し訳なかったです
0535デフォルトの名無しさん2016/06/08(水) 02:28:20.54ID:X5C6AThW
>>533じゃあマクロCがマクロAを呼び出して
そのあとマクロBをよんであげれば?
0536デフォルトの名無しさん2016/06/08(水) 09:19:43.97ID:wPaWM/F4
>>533
>マクロAを一旦終了させてからBに繋げる方法はないでしょうか
2行目に答えが・・
0537デフォルトの名無しさん2016/06/08(水) 16:07:47.23ID:2INbON7T
>>535

マクロCでAを呼んだあと続けてBも呼ぶと 全て含めて1つの処理 と見なされるみたいで
AからBを呼び出すのと変わらないです そうなると失敗してしまいます

>>536
一旦処理を終了する為にAの処理の終わりに 1秒後Bを呼び出す のタイマーをセットして
今は使用しているのですが、その1秒が惜しいです。0.1秒だと反応しないです。
タイムラグなしに処理を終わらせ再開する方法はないものかと質問させていただきました。
0538デフォルトの名無しさん2016/06/08(水) 16:15:03.03ID:BHUiZVaK
何がどう失敗してるのか分からん
0539デフォルトの名無しさん2016/06/08(水) 16:34:33.35ID:lKFv6c/R
>>537
どこかのセルにAが動作中か終了かの状態を表示しておいて
Bでそのセルを見てAが終了するまでループして待機するとか
0540デフォルトの名無しさん2016/06/08(水) 17:30:32.12ID:EJkZd8pq
SendKeys ってNumLockが解除されるバグとかあるから嫌い
APIとか使って代替した方がいいんじゃあ・・・
0541デフォルトの名無しさん2016/06/08(水) 19:15:25.42ID:k2i9YcBT
speakメソッドを使ってセルに入ってる英単語/英文を読ませる処理をしているのですが
長めの文を入れて読ませると読み上げてる途中は他のExcel操作が全くできません。
これを防ぐ方法はありますか?
他言語でいう別スレッドで実行させたいのですが。
0542デフォルトの名無しさん2016/06/08(水) 20:02:11.36ID:J4qccP96
>>541
非同期にしたい処理をvbsに逃がすくらいしか・・・
0543デフォルトの名無しさん2016/06/08(水) 20:08:46.59ID:J2Tk6QYU
>>537
それはキーの受け側の問題では?
高速なキー入力に反応出来てないんだと。
0544デフォルトの名無しさん2016/06/08(水) 20:16:02.98ID:k2i9YcBT
>>542
それは具体的にはどうすればいいのでしょうか?
VBAのコードからvbsを使うことはできる?
0545デフォルトの名無しさん2016/06/08(水) 20:27:54.30ID:P+TyVjZj
>>541
ちょっと調べたらSpeech APIなんてものがあるんだね。
面白そうだからトライしてみようかな
0546デフォルトの名無しさん2016/06/08(水) 20:33:09.37ID:8NxCW7kQ
>>544
こんな感じとか?

--- exelSpeech.vbs (適当なフォルダにファイル保存)-----------------
Dim exelAp
If WScript.Arguments.Count Then
  set exelAp = CreateObject("Excel.Application")
  For Each arg In WScript.Arguments
    exelAp.Speech.Speak arg
  Next
End if

--- Excel側マクロ ---------------------------------------------
Sub test()
  Call ExecVBS("d:\exelSpeech.vbs", "Hello", "Microsoft Speech ")
End Sub

Private Sub ExecVBS(strPath, ParamArray argv())
  Dim strWS As String
  strWS = "WScript.exe """ & strPath & """"
  For Each arg In argv
    strWS = strWS & " """ & arg & """"
  Next
  Call Shell(strWS)
End Sub
0547デフォルトの名無しさん2016/06/08(水) 21:18:47.33ID:IzbVLKR1
>>541
別プロセスでエクセル起動して使う
0548デフォルトの名無しさん2016/06/08(水) 21:39:22.56ID:P+TyVjZj
Speech API使ってテキストを読み上げることはできたが別スレッドで動いてくれない。
なぜダメなんだろう...
0549デフォルトの名無しさん2016/06/08(水) 22:07:45.81ID:P+TyVjZj
あ、できた
0550デフォルトの名無しさん2016/06/08(水) 22:56:43.83ID:zzDG0CvJ
>>548
リアルスレ違い?
0551デフォルトの名無しさん2016/06/08(水) 23:02:28.85ID:P+TyVjZj
>>550
いや>>541の問題

出来たには出来たけどdllが必要になる
0552デフォルトの名無しさん2016/06/09(木) 02:18:01.25ID:Y6zIWp2Z
Indirectで参照したセルを

for nextのループで空白セル削除すると上手くいかない

参照先のセルで条件判断しちゃうのだろうけど仕組みがイマイチ理解出来ないです...
0553デフォルトの名無しさん2016/06/09(木) 09:49:57.32ID:usJpFq2/
>>552
for関係なくない
どんなコードと数式書いてるの?
0554デフォルトの名無しさん2016/06/09(木) 11:34:40.11ID:joa/BeB6
>>551
dllが必要というのはわかったけど
ExcelのVBAのコードではなんの呪文を書けばいいのでしょうか?
0555デフォルトの名無しさん2016/06/09(木) 17:07:47.74ID:CPZKJ0rV
Sub test2()
Call SpeakAPI("Hello World")
End Sub

Private Sub SpeakAPI(SpeakText)
Const SVSFlagsAsync = 1  '非同期
  Set SpV = CreateObject("SAPI.SpVoice")
  Call SpV.Speak(SpeakText, SVSFlagsAsync)
  Do
    DoEvents
  Loop Until SpV.WaitUntilDone(10)
End Sub
0556デフォルトの名無しさん2016/06/09(木) 18:18:21.44ID:/Mjso7pS
これだけじゃ日本語は話してくれないのか
0557デフォルトの名無しさん2016/06/09(木) 19:16:56.26ID:5sPb0rLu
>>556
Window10だけど日本語話してくれたよ。
他の環境でも多分なんちゃら.msiをインスコすればOKなんじゃないだろうか。
0558デフォルトの名無しさん2016/06/09(木) 19:28:33.86ID:/Mjso7pS
うちがまだVISTAだってのがばれちゃうーw
0559デフォルトの名無しさん2016/06/09(木) 19:45:23.02ID:5sPb0rLu
>>555
読み終わるまでSub SpeakAPIから抜けないけどUIは受けるというわけか。
それでニーズは満たすのかもね。

>>558
7でもダメだった
0560デフォルトの名無しさん2016/06/09(木) 22:14:03.49ID:Nw1jdtR1
ローカルウィンドウもしくはウォッチ式について質問
変数名とか入力値で検索する方法ってないですか?
深い階層に有ったりどの変数に目当ての値が入ってるか曖昧な時にいちいち開くの面倒です
0561デフォルトの名無しさん2016/06/09(木) 23:00:19.61ID:WOvdLwlE
Do Loopで済むのに、
永久ループが怖くて、
無理矢理For Nextを使う俺は小心者。
0562デフォルトの名無しさん2016/06/09(木) 23:03:31.96ID:ehD8QNF8
>>561
せっかく用意されてる命令をなぜ使わないの
0563デフォルトの名無しさん2016/06/09(木) 23:31:40.65ID:usJpFq2/
>>561
俺もそうだった。ただdoloopってエクセルで使う機会は少ないと思う。
大体はfornext、foreachで事足りる。
ゲームだとdoloopは死ぬほど使うけどね
0564デフォルトの名無しさん2016/06/09(木) 23:47:41.71ID:zgYGqzoC
>>555
いいやり方だと思うけど、Set SpV = CreateObject("SAPI.SpVoice")の
SpVって変数の寿命が尽きると読み上げも止まっちゃうみたいだね。

だから別の Sub や Function の中にその "SpeakAPI"を組み込んで使う場合は
Do〜Loop の間は待ちが発生する。
0565デフォルトの名無しさん2016/06/09(木) 23:58:14.68ID:usJpFq2/
音楽ファイルをどこかに生成して、シェル(コマンドスクリプト)からその音楽ファイルを再生ってできないかな
そうすればエクセルと同期とか関係なしに再生できると思う
0566デフォルトの名無しさん2016/06/10(金) 00:16:09.21ID:3rMMNq1l
>>563
>ゲームだとdoloopは死ぬほど使うけどね

俺もそうだった
今はゲームではどちらもそうそう使わない
0567デフォルトの名無しさん2016/06/10(金) 00:28:38.18ID:3rMMNq1l
>>565
音楽ファイルならそんなことしなくてもsndPlaySoundやmciSendStringのAPIで行けると思う
05685552016/06/10(金) 03:53:33.12ID:WIrOC41u
>>564
グローバル変数とかにすればLoop待ちせず完全に非同期に出来るみたいね
…ついでにクラスモジュール化してみた

--- 標準モジュール(テスト用)
Private clsSpv As New SpeechAPI
Sub test()
  Call clsSpv.Speak("Hello World")
  Call clsSpv.Speak("Speech API Test")
End Sub

--- クラスモジュール(SpeechAPI.cls)
Private Const SVSFlagsAsync = 1  '非同期
Private objSpV As Object
Private Sub Class_Initialize()
  Set objSpV = CreateObject("SAPI.SpVoice")
End Sub
Private Sub Class_Terminate()
  Call Me.WaitSpeak 'Speak終了前に破棄されそうな場合は待機
  Set objSpV = Nothing
End Sub
Sub Speak(SpeakText)
  Call objSpV.Speak(SpeakText, SVSFlagsAsync)
End Sub
Sub WaitSpeak()
  Do
    DoEvents
  Loop Until objSpV.WaitUntilDone(10)
End Sub
0569デフォルトの名無しさん2016/06/10(金) 12:15:48.39ID:EYLL7b//
>>568
それだとデストラクタで、結局音声がなり終わるまで固まらない?
0570デフォルトの名無しさん2016/06/10(金) 12:22:38.95ID:4oO9NPCl
Stop、Pause、Resumeは自在に実装可能だね。
0571デフォルトの名無しさん2016/06/10(金) 12:32:42.79ID:EYLL7b//
>>570
いやいや、音声が 鳴ってる最中に次の処理に進める?
0572デフォルトの名無しさん2016/06/10(金) 15:33:45.40ID:i706FGHy
日本語でも話せるようにできてる人は漢字でも大丈夫なの?
もしいまWindows7で日本語も対応させるにはどこにいってなにをインストールすればいいのでしょうか?
0573デフォルトの名無しさん2016/06/10(金) 16:12:49.25ID:4oO9NPCl
>>572
漢字もかなりこなれた感じで読み上げてくれるよ。
MSSpeach_SR_ja-JP_TELE.msi というものをダウンロードすればいいんだと思うけど...違ったらゴメン
0574デフォルトの名無しさん2016/06/11(土) 01:47:26.20ID:02ogFup4
>>572
OS添付のSAPI5じゃなくMicrosoft Speech Platformを使う方法でなら

Microsoft Speech Platform - Runtime (Version 11)
https://www.microsoft.com/en-us/download/details.aspx?id=27225
 → SpeechPlatformRuntime.msi をダウンロード
Microsoft Speech Platform - Runtime Languages (Version 11)
https://www.microsoft.com/en-us/download/details.aspx?id=27224
 → MSSpeech_TTS_ja-JP_Haruka.msi をダウンロード

上記インストールして、コードを以下のように書き換える

Set s = CreateObject("Speech.SpVoice")
s.Speak "helloこんにちは"

※ オブジェクトの仕様はSAPI.SpVoiceとほぼ同じっぽい
※ OS標準のSAPI5用の無料音声合成エンジンは見つけられなかった
  Win8以降ならSAPIでも日本語対応しているっぽいけど…
0575デフォルトの名無しさん2016/06/11(土) 06:26:26.01ID:6cWsIMr7
>>574
そうなんだ。
Win10だと CreateObject("SAPI.SpVoice") のままでOKなんで油断した。
0576デフォルトの名無しさん2016/06/13(月) 09:25:34.07ID:8U53ckAC
A列とB列に1以上20以下の整数が200行ほど並んでます(数字は頻繁に更新される)
AセルとBセルの組合せの重複をチェックしたいのですが、どうやれば良いですか。

今はC列に(C1=A1*21+B1)の作業域を設け、n行が更新されるたびに
If Application.CountIf (Range ("C1:C200"), Cells(n,3)) > 1
とやってますが、少しでも時間短縮を図りたいのです。

つまりわかりやすさよりもスピード重視でお願いしますm(_ _)m
0577デフォルトの名無しさん2016/06/13(月) 10:22:42.66ID:wX9Pf1Mm
フィルターオプションの重複無視で件数が減っていれば重複あり
0578デフォルトの名無しさん2016/06/13(月) 12:00:42.36ID:+URgB/tG
>>576
数字の更新はどうやってるの?WEBクエリ?
頻繁の間隔は具体的にどれぐらい?1分置き?
チェックの結果は人間が目視するだけ?VBAか何かで利用?
0579デフォルトの名無しさん2016/06/13(月) 12:46:55.80ID:8U53ckAC
>>577
ありがとうございます!
フィルターオプション&重複でググって解決しました。
初心者故おかしいかも知れませんが、これで求めるチェックができました。
お陰で、作業域(演算)の分かなりのスピードアップが図れそうです。

Range("a1:b9").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
x = WorksheetFunction.Subtotal(3, Range("a1:a9"))

Range("a1:b9").AdvancedFilter Action:=xlFilterInPlace, Unique:=False
y = WorksheetFunction.Subtotal(3, Range("a1:a9"))

MsgBox y - x
0580デフォルトの名無しさん2016/06/13(月) 12:56:12.13ID:8U53ckAC
>>578
求める組合せをループ(バックトラック法)かけて延々と調べるものです。
具体的には4列(A-D)あって、次の4条件のしばりがあります。
A<>C
B<>D
A&B C&D 重複無し
A&D C&B 重複無し

力技で判定していたので、長時間かかって終わりそうになかったもので・・
0581デフォルトの名無しさん2016/06/13(月) 13:01:37.02ID:8U53ckAC
ちょっと違った・・
An <> Bn
A&B 組合せ重複無し
Cn <> Dn
C&D 組合せ重複無し
A&B C&D 組合せ重複無し
A&D C&B 組合せ重複無し
0582デフォルトの名無しさん2016/06/13(月) 13:05:35.50ID:8U53ckAC
すみません・・

An <> Cn
A&C 組合せ重複無し
Bn <> Dn
B&D 組合せ重複無し
A&B C&D 組合せ重複無し
A&D C&B 組合せ重複無し
0583デフォルトの名無しさん2016/06/14(火) 18:25:29.30ID:Z8NdG2eJ
質問です
マクロ使って画像みたいに並べるにはどうすればいいですか?
http://i.imgur.com/v4EXpRy.png
0584デフォルトの名無しさん2016/06/14(火) 18:32:15.29ID:4vHs6V7m
>>583
結構めんどくさい。ファイルアップロードしてほしい

コードでは
・結合を解除。しなくていいかもしれない
・数字以外だったらアルファベット「A」を取得。
・A1〜A列最終行までfornextループ。右に書き出していく
・D列以降も同じように処理

って感じだと思う
0585デフォルトの名無しさん2016/06/14(火) 18:38:15.24ID:9fCSALMI
>>583
あははは、うちの会社にも画像左みたいな意味不明のデータを作ってドヤ顔するウルトラバカがいるぞww
「データっつうのは一行単位じゃなきゃ使い回しが効かないだろ!」って何度か言ったがバカだから聞く耳を持たん。
0586デフォルトの名無しさん2016/06/14(火) 18:39:33.60ID:4vHs6V7m
>>585
それもかっこ悪い
正規化とか言葉はちゃんと覚えよう
0587デフォルトの名無しさん2016/06/14(火) 18:41:50.36ID:wwwgAdKU
>>583
A列を上から下に見ていって
数字だったら3列コピーする

別に配列とかDictionaryとかで
1からA
2からB
4からC
12からD
など、設定しておく
数字を見てABCDなどを選択する
0588デフォルトの名無しさん2016/06/14(火) 18:43:13.12ID:wwwgAdKU
>>586
RDB用語を使っても知らない人には伝わらない
0589デフォルトの名無しさん2016/06/14(火) 19:15:10.20ID:e7Hp4H4t
そらそうだ
0590デフォルトの名無しさん2016/06/14(火) 19:19:40.65ID:e7Hp4H4t
むりやりシステム用語を使うとしたら、「モデルとビューを分離しない馬鹿」もしくは
「モデルを軽視しビューばかり気にする馬鹿」とでも呼べばいいだろうか。
0591デフォルトの名無しさん2016/06/14(火) 19:45:19.02ID:V0YHD+Ca
>>583
pass=vba
http://up2.karinto.in/uploader/download/1465901074.zip
0592デフォルトの名無しさん2016/06/14(火) 20:54:15.20ID:hZWdJI0J
そもそも Excel で正規化って言われてもなぁ...
0593デフォルトの名無しさん2016/06/14(火) 21:18:53.56ID:lCHHR3y2
商品番号、2015年4月、2015年5月、2015年6月...ってフィールドが並んでるAccessファイル見たことあるし、
データの取り扱いと保存方法についてはしっかりと勉強させるべき。
0594デフォルトの名無しさん2016/06/14(火) 21:52:42.76ID:8twB5jbW
「ダミー2」という項目がキー項目になっている恐怖・・・
0595デフォルトの名無しさん2016/06/14(火) 23:43:30.88ID:OpO/Jdo0
Application.GetOpenFilenameでファイルを選択するダイアログを
出すんだけど、そのときにいつも決まったフォルダ(ネットワーク上の
共有フォルダ)を開くのには、どうすればいいでしょう。

Application.DefaultFilePath = "\\hoge\foo"

としてみたけど直前にexelでファイルを読み書きしたフォルダを
開く様子。
0596デフォルトの名無しさん2016/06/14(火) 23:58:37.04ID:4eYpAyq0
>>583
ワロタ。

うちの会社にもいるわ。
表より、制作者の頭直したほうがいいレベル。
0597デフォルトの名無しさん2016/06/15(水) 00:22:05.37ID:HtC2zyr/
>>595
カレントフォルダを変更しないといけない

普通は ChDriveステートメント & ChDirステートメント でやるけれど
ドライブ文字が割り当てていない ネットワーク上の共有フォルダは これが使えない
ので
CreateObject("WScript.Shell").CurrentDirectory = "\\hoge\foo"
で変更してやるといい
0598デフォルトの名無しさん2016/06/15(水) 02:03:31.53ID:6oIsBMjl
>>595
Excel 2002以降なら FileDialog オブジェクトを使う方法もある

Sub file()
With Application.FileDialog(msoFileDialogFilePicker)
  .InitialFileName = "c:\windows\temp"
  If .Show Then
    Debug.Print .SelectedItems(1)
  End If
End With
End Sub
0599デフォルトの名無しさん2016/06/15(水) 08:27:46.14ID:+ULWh3fH
>>590
Excelは何を持ってViewとするか難しいよな。
コードを組まなくてもシートだけでViewとModelを表現する場合もあるし、
VBAが絡むと「そのシートはView扱いなの?それともファイルみたいに扱えばいいの?」となる場合も少なくない。
0600デフォルトの名無しさん2016/06/15(水) 11:58:06.33ID:zpa8LNX8
>>591
あなたが神か…!
こんなにスリムなコードで出来たんですね
因みに何ですが、アルファベットのみたいにSheet1の表のひらがなのセルが塗りつぶしされてる時にそれをSheet2でも適用させるにはどういうコードを書けばいいんでしょうか?

>>585>>596
いつもこの表作ってるのは俺じゃないんだ…
これ本当は同じシートにもっといろんな表があるんだけど、A4一枚に収まるように見栄えよくしてるんだと思う
0601デフォルトの名無しさん2016/06/15(水) 12:36:00.33ID:e1ybzWx3
その表から加工しようとするなよ
元データもらえばいいのに
0602デフォルトの名無しさん2016/06/15(水) 13:32:16.02ID:RQgSJKk0
>>601
確かに。

>>600
シート1の色を取得したいセル.Interior.Color で取得しておいて、
シート2の色付けしたいセル.Interior.Color で色付けするとか。
06035852016/06/15(水) 18:15:38.34ID:5Km9WBBK
>>600
>いつもこの表作ってるのは俺じゃないんだ…
>これ本当は同じシートにもっといろんな表があるんだけど、A4一枚に収まるように見栄えよくしてるんだと思う
分かってますよ。あなたを煽っているわけじゃないから気を悪くしないでね。俺はIT音痴なヤツばっか生息している会社勤めで
ランダムレイアウトデータに日々苦しめられているのでつい書いてしまった
0604デフォルトの名無しさん2016/06/15(水) 19:46:00.51ID:RQgSJKk0
同じく。
そういう表を作る人が、VBAスレに来るわけないもんな。
0605デフォルトの名無しさん2016/06/15(水) 20:05:56.04ID:wPVjVaLz
>>597
>>598
ありがとう。バージョンは2007です。試してみます。
0606デフォルトの名無しさん2016/06/15(水) 20:37:33.45ID:+80x4U05
その「A4に納める」のも手作業で時間かけて人件費を無駄にしながらやってんだろうなあ
でも自動化すると仕事がなくなってクビになる人が出てくるし、難しい世の中だわ
0607デフォルトの名無しさん2016/06/15(水) 20:41:38.66ID:JJliNqAB
>>600
s2.Cells(r2, 4).Interior.Color = c.Offset(0, 2).Interior.Color
0608デフォルトの名無しさん2016/06/16(木) 12:21:47.47ID:z0gRpvpU
このスレはエクセルをDBだと勘違いしてる馬鹿ばかりだな
たまたまDBの様にも使えるというだけで基本はあくまでドキュメント作成ソフトだぞ
0609デフォルトの名無しさん2016/06/16(木) 12:22:31.90ID:YejbenNI
いや、表計算ソフトだから。
0610デフォルトの名無しさん2016/06/16(木) 12:28:49.09ID:73wTZmpj
設計はExcel
dbはAccess
GUIはExcel
これでシステム構築した方がいい
java使うメリットなんてないが使いたいならどうぞ

word()
0611デフォルトの名無しさん2016/06/16(木) 12:38:28.51ID:q2sS4t3V
>>608
異才発見
0612デフォルトの名無しさん2016/06/16(木) 12:38:35.50ID:rAlZkMmb
ランダムレイアウト作る奴に対応する為に
EXCELのfindメソッド使って座標を取得して
その周辺のセルの結合状態調べる処理とか作ったが
やっぱランダムレイアウト作る奴の思考回路は謎過ぎるわ
なぜそれでいいと思ったのか
0613デフォルトの名無しさん2016/06/16(木) 12:46:12.56ID:wS4QfEJ1
自分の思い描いた見た目にしてるだけだろう
殆どの人は細かいことなんて考えてないだろうし
0614デフォルトの名無しさん2016/06/16(木) 12:48:50.53ID:9J5fQDO0
>>612
コンピュータで処理する事より
人間(自分)が見易いレイアウトにしてる
もしくは上司がそうしろと言う
0615デフォルトの名無しさん2016/06/16(木) 12:52:07.68ID:z0gRpvpU
>>613
プレゼン資料なんて見た目が全てなんだがな
0616デフォルトの名無しさん2016/06/16(木) 12:53:23.18ID:z0gRpvpU
>>614
それが正解
DBが必要ならDB使え
0617デフォルトの名無しさん2016/06/16(木) 13:05:29.06ID:9J5fQDO0
>>616
そういう上司や見た目重視の人はDBなんて知らない
見た目重視のデータで作業は他の人に押し付ける
自分の仕事なのに
0618デフォルトの名無しさん2016/06/16(木) 16:04:06.46ID:by4f3/2N
セル結合地獄の方眼紙を時間かけて作る人間の多いこと
彼等は紙媒体での使い方しか知らないから仕方無いと諦めてる
0619デフォルトの名無しさん2016/06/16(木) 19:46:10.39ID:R+yX9JZZ
ExcelでリレーションシップやSQLが使えればな
パスワードで改変防止もできるし
ビューは使いやすいし
0620デフォルトの名無しさん2016/06/16(木) 20:13:06.79ID:lzPGCcDM
dbにぶちこむからフォーマットはこれで作ってね!
って渡したら謎レイアウトにされたことある。
シート保護すべきだったと後悔
0621デフォルトの名無しさん2016/06/16(木) 20:32:10.43ID:Lrz7vPJw
金と手間をかけられるのなら、全てWebベースでつくるわ。
0622デフォルトの名無しさん2016/06/16(木) 20:32:13.19ID:25qEXxzA
>>619
使える件
0623デフォルトの名無しさん2016/06/16(木) 20:34:41.74ID:e7Ja7VI3
>>611
異才どころかうちの会社にはごろごろいるぞ
ひどい奴はメール本文と同じ内容を Excel に貼り付けて添付してるとか
もう意味わからん w
0624デフォルトの名無しさん2016/06/16(木) 20:46:00.25ID:kyzxcnkb
面妖なやつらだな
0625デフォルトの名無しさん2016/06/16(木) 20:59:48.69ID:acyUZOOZ
セルが結合されてて、うまく貼り付けができなかったりするんですが、うまい方法ないですか?
セル結合するなはなしで。
0626デフォルトの名無しさん2016/06/16(木) 21:07:17.73ID:r7pa0lal
別のセルに貼り付けてそれを参照する
0627デフォルトの名無しさん2016/06/16(木) 21:38:01.20ID:JOmdLZoV
セル結合するメリットってないだろ
0628デフォルトの名無しさん2016/06/16(木) 21:58:43.49ID:yULI4C1v
そら、プログラマ側からすればややこしいだけではあるけどw
ごちゃごちゃした表を作りたい側からすれば必要なんだろうよ
0629デフォルトの名無しさん2016/06/16(木) 22:34:35.41ID:/BKKS23E
プログラマが何エクセルで遊んどんねん
しっかり仕事しろや僕ちゃん達
0630デフォルトの名無しさん2016/06/16(木) 22:54:45.53ID:EpEOLr57
>>629
広義のソフトウェアにはハードウェア以外の全てが含まれるんやで
マニュアルとかな
0631デフォルトの名無しさん2016/06/16(木) 23:18:24.00ID:Fh8G5flw
>>608
エクセルはお絵かきソフトですが。
0632デフォルトの名無しさん2016/06/16(木) 23:38:00.05ID:UZ0NxguP
最近のExcelはPower Viewとかスゲーな
次回のメジャーチェンジのときは本気で
VBA.NetとかC#Aとかになるかも知れんね。
0633デフォルトの名無しさん2016/06/16(木) 23:43:21.25ID:SaEW/WbJ
C#Aいいなぁ。ほしい。
0634デフォルトの名無しさん2016/06/16(木) 23:59:16.51ID:+3Mnd4Ft
VBAはこのままレガシー動作させて
c#なりjavascriptでVBA並にコードかけるようにして欲しいのう
VSTAではなく
0635デフォルトの名無しさん2016/06/17(金) 00:08:04.83ID:D8ioveLA
愛するc#で初心者が書いたクソコードをメンテしたくないなぁ。
0636デフォルトの名無しさん2016/06/17(金) 00:12:56.72ID:fZ1pqYPv
>>608
ドキュメントは一太郎が最強だよ
オレなんか今でも一太郎12をだましだまし使ってる
ATOK含めwin10で使えた時は歓喜の雄叫びをあげたわ
0637デフォルトの名無しさん2016/06/17(金) 00:21:03.61ID:+XPFuyoA
windowの糞フォームはやめてXMLかHTML5ベースにしてほしい
0638デフォルトの名無しさん2016/06/17(金) 05:38:19.50ID:7+eHqEpf
>>637
xlsxをzipに変えて圧縮展開したら中身はXMLだったはず
DOMとかSAXで操作できる
0639デフォルトの名無しさん2016/06/17(金) 06:44:36.61ID:TQ7oR46s
>>631
ドキュメントって文字だけじゃなくて図表とかも含むんだよ
0640デフォルトの名無しさん2016/06/17(金) 07:36:05.18ID:IsEzxZDc
図表を含む含まないに関わらず
ドキュメントであるならwordを使うべき
excelは表計算する為のツールだと何度言えば(ry

アホではwordを使いこなせないし
直感的に出来ないのは分かるが
どうしてもexcelで作りたいなら
excelをwordに埋め込むなりリンク貼り付けすべき
0641デフォルトの名無しさん2016/06/17(金) 08:58:37.01ID:U+AOa7Cs
>>640
多分もうワードが標準になることはないと思う
エクセル文書は広まりきってしまった
0642デフォルトの名無しさん2016/06/17(金) 09:12:40.06ID:l0Z4bZuI
>>640
これがMSのコンセプトだと思うが
現実は非情
0643デフォルトの名無しさん2016/06/17(金) 09:53:31.11ID:sAvpxS6N
単純に疑問なのじゃが
Excel方眼紙でセル結合したくなったとき
既存の列の幅は決まってるから新規の結合セルの幅も定数といして限定されてるはずだけど
そんなときExcel方眼紙愛好者はどうしてるの?
0644デフォルトの名無しさん2016/06/17(金) 10:20:19.41ID:eCqNB94c
単純にwordが使いにくくて謎仕様だらけなんだからしかたない
自業自得だ
0645デフォルトの名無しさん2016/06/17(金) 11:58:11.65ID:qv7ayA9h
>>643
最初にシート全体を選択して全部の列の幅を1にしてから作業を始めるんだよ
だから方眼紙と言われてる
0646デフォルトの名無しさん2016/06/17(金) 12:03:59.44ID:Jw6Vo/h3
言うて
縦横でサイズスケール違うよな
正確な正方形にする方法あるのか?
その辺はアバウトなんだろうが
0647デフォルトの名無しさん2016/06/17(金) 12:17:36.97ID:3e16czfu
>>646
正方形w
0648デフォルトの名無しさん2016/06/17(金) 12:19:03.31ID:1KfIG+A8
そのへんは使う人それぞれの好みとか流儀が色々あってだな
画面上で正方形にしても印刷するとズレるし、縦長の方がきめ細かい表が作りやすいとか色々ある
0649デフォルトの名無しさん2016/06/17(金) 12:21:35.03ID:ToEAATWK
>>643
そんなもん好きにしろよ
お前は一から十まで教わった通りにしか出来んのかw
0650デフォルトの名無しさん2016/06/17(金) 12:21:48.50ID:deEjLyQb
ページレイアウトビューにするとセルの高さ/幅の設定の単位がcmになるので正確な正方形にできる
0651デフォルトの名無しさん2016/06/17(金) 12:22:52.27ID:U+AOa7Cs
と思うやろ?
ずれるんだな、これが
0652デフォルトの名無しさん2016/06/17(金) 12:31:22.93ID:Q7mFcet+
>>643
それはテンプレートの統一性が当然と言うデータを扱う人の発想だな
方眼紙使いはデータとして使う事を考慮してないから、例えば発注書でも形に合わせたテンプレートもどきをその数だけ作るんだよ
0653デフォルトの名無しさん2016/06/17(金) 13:12:01.79ID:Yteqqpsz
まず最初に出力プリンターを設定します
0654デフォルトの名無しさん2016/06/17(金) 13:33:39.44ID:U+AOa7Cs
方眼紙と言っても正方形にはせんだろ、せいぜい請求書なんかのテンプレート程度
・・・と思ってたけど俺が甘いのか?
本当に正方形にするの?なんだったら1mm間隔にしてから痕で結合して使ったりするの?
0655デフォルトの名無しさん2016/06/17(金) 14:15:41.36ID:egnJxC/W
中身がまともならいいんだけどね。

なんか別の作業で労力使い果たしているようなドキュメが多い。
0656デフォルトの名無しさん2016/06/17(金) 14:22:36.95ID:eCqNB94c
どんなレイアウトだろうがそれが最終出力ならいいだろ。
入力にするやつは死刑だ
0657デフォルトの名無しさん2016/06/17(金) 14:29:39.84ID:U+AOa7Cs
日本の人口減るな
0658デフォルトの名無しさん2016/06/17(金) 17:04:04.89ID:7FeJ02cw
ここはExcelによる方眼紙作成のスレですか?
0659デフォルトの名無しさん2016/06/17(金) 17:13:00.47ID:qv7ayA9h
>>657
日本だけじゃない
地球の人類が半分になる
0660デフォルトの名無しさん2016/06/17(金) 19:13:16.65ID:Sh+IdTol
世界がもし100人の村だったら
コンピュータを持ってるのは一人か二人らしいぞ
0661デフォルトの名無しさん2016/06/17(金) 19:23:39.59ID:TQ7oR46s
>>640
そう思うならMSに働きかけてもっとワードをまともにしろよ
せめて図の使い勝手を Excel と同等にしろ
0662デフォルトの名無しさん2016/06/17(金) 19:38:16.87ID:Yteqqpsz
WORDにグリッド機能付けりゃ良いじゃん?
0663デフォルトの名無しさん2016/06/17(金) 19:42:20.45ID:pIK+r2cN
>>640
表計算はドキュメントだと何度言えば(ry
バカ丸出しやねw
0664デフォルトの名無しさん2016/06/17(金) 19:44:17.13ID:Yteqqpsz
そーゆー、印刷するものは全部ドキュメントだ、みたいな言い方嫌いだなw
0665デフォルトの名無しさん2016/06/17(金) 19:52:44.81ID:l8TNEkGu
ヒント

文書 documents
表 table
計算 calculation
0666デフォルトの名無しさん2016/06/17(金) 19:57:21.67ID:U+AOa7Cs
>>665
ヒントって説明能力がない人が使う言葉や
0667デフォルトの名無しさん2016/06/17(金) 20:05:30.88ID:D8ioveLA
excelってドキュメント書けるし、
データ管理できるし、
計算できるし最強じゃね。
0668デフォルトの名無しさん2016/06/17(金) 20:05:45.47ID:1KfIG+A8
そうやって出題に難癖を付けて答えを引き出す作戦は通用しないぜ
0669デフォルトの名無しさん2016/06/17(金) 20:10:04.74ID:HclZ/bT1
VBAの話題からどんどんとそれてゆく
0670デフォルトの名無しさん2016/06/17(金) 20:23:21.62ID:Yteqqpsz
ExcelVBAで嫌いなのは、カレントって考え方、
あれ、だれにとってカレントなんだよといつも悩む。
コンピュータが思ってるカレントと意見の食い違いで
何度シートをまっさらにしちまった事か。
0671デフォルトの名無しさん2016/06/17(金) 20:26:59.31ID:xj9JzTt2
マクロを使ったツールなんかのマニュアルはパワーポイントだわ。パワーポイント超便利。
ExcelやAccessのVBAコードを解析して勝手にマニュアル作ってくれるパワーポイント用マクロとかねぇかな。

ところで「こういうファイルを」「こういう形式にまとめたい」みたいな要望だけ聞いて、
UIから処理から全部作った上に「新たにこういう機能も欲しい」と言われて拡張も行う上、
マニュアルまで作らされる仕事ってシステムエンジニアって言ってもいいよね?
0672デフォルトの名無しさん2016/06/17(金) 20:30:46.08ID:+XPFuyoA
Excelの中にワードオブジェクトを配置できるようにすりゃいいんだ
0673デフォルトの名無しさん2016/06/17(金) 20:35:43.57ID:U+AOa7Cs
>>670
カレントは昔の名残なんだよな。そして、それが解消されることはまずない
諦めてthisworkbook.pathを使おう

>>671
vbaだとちょっとしょぼい気もするけど、一応SEだな。社内SEだ
ただどうせならC#.netで何かアプリケーション作るぐらいはできていたほうが良いと思う(ファイルの一括リネームとかの単純なものでも)
0674デフォルトの名無しさん2016/06/17(金) 20:36:30.86ID:U+AOa7Cs
>>672
wordだとテキストボックスを多用するけど、エクセルでもテキストボックスって使うもんだろうか?
俺は方眼紙はなのでほとんど使ったことがないけど
0675デフォルトの名無しさん2016/06/17(金) 20:38:22.90ID:gHlaiRvP
>>646
セルの幅の単位は標準フォントの1文字文の幅
高さはポイント

これをそれぞれピクセルに換算したときに同じ数値になるように設定すると正方形になる。

以上。
0676デフォルトの名無しさん2016/06/17(金) 21:03:40.77ID:xVA7CYsR
>>671
システムってそういうのでは無いと思う
レジと在庫管理と仕入と売上と企画開発とかのシステムを連携させるとか
ウェブサイトを公開するために負荷分散とかルータとかサーバとかを選定したり設定したりするんじゃね?
0677デフォルトの名無しさん2016/06/17(金) 21:10:00.57ID:l8TNEkGu
>>670
カレントなんてshell作ってdosに投げる時ぐらいでしか意識しないなぁ
.pathで分かるし
0678デフォルトの名無しさん2016/06/17(金) 21:18:59.54ID:7FeJ02cw
カレントってのはカレントフォルダの事限定?カレントワークブック、カレントシート、カレントセルとかは?
0679デフォルトの名無しさん2016/06/17(金) 21:26:14.51ID:xj9JzTt2
>>673
必要に応じてJScriptも使うし、個人的にAndroidアプリも作ってるし、
元々はC++で馴らしているし、マイクラでLua使って風車型ブランチマイニング(レジューム機能付き)マクロとか作ったし。

今度「今の業務はSEに当たるんで月給50万円にアップしてください」って交渉するわ。

>>676
それはデータベースエンジニアとネットワークエンジニアだな。
「システムを連動」って言っているように、連動させる元になるシステムを作るのがシステムエンジニアやで。
0680デフォルトの名無しさん2016/06/17(金) 21:29:10.95ID:xVA7CYsR
>>679
全体はシステムじゃ無い?
プロジェクトを技術的にまとめるSEがいるんじゃね?
プログラマとの違いは?
0681デフォルトの名無しさん2016/06/17(金) 21:36:33.95ID:l8TNEkGu
>>678
カレントブックってのはまぁ言いたいことは分かるが
他はアクティブって表現するやろ
0682デフォルトの名無しさん2016/06/17(金) 21:45:48.60ID:xj9JzTt2
>>680
システムっていうのは目的単位で数えるものだから、何をシステムと呼ぶかは目的次第。
POSと在庫と入出庫はそれぞれでシステムだし、これを連携させようってシステムも別に存在する事になる。

プロジェクトって言っても大小様々で、プロジェクト単位でシステムエンジニアはいるだろうけど、
どの程度の案件抱えてるかっつったら会社に依るだろう。

プログラマっていうのはスキルに対して言い、システムエンジニアってのは役割に対して言う。
SEはすべからくプログラマ足るべきなんだけど、SEを抱えるって事はシステムに詳しくないって事だから、
(既存の業務と同じように)SIとSEとPGは分業出来る上に、運用次第で属人的にならずに済むと考えてしまって、
結果として詐欺と言うのがふさわしい様なSEが横行してしまっているのも事実。

っていうネットの受け売り。
0683デフォルトの名無しさん2016/06/17(金) 21:51:07.55ID:qv7ayA9h
>>675
画面上では最小単位が1ピクセルの整数倍に丸められる
紙は解像度がずっと高いし罫線の太さも違うから表を作って印刷するとどんどんズレていく
0684デフォルトの名無しさん2016/06/17(金) 22:30:32.58ID:7+eHqEpf
>>682
小規模担当SEとか大規模担当SEとか
初心者SEとかベテランSEとかヤブSEとか名SEとか
色々形容詞が付くんだな
0685デフォルトの名無しさん2016/06/17(金) 23:11:28.50ID:Yteqqpsz
その癖dllの場所を相対パスで指定出来ないとか
0686デフォルトの名無しさん2016/06/17(金) 23:15:55.95ID:deEjLyQb
カレントって電流のことでしょ
0687デフォルトの名無しさん2016/06/17(金) 23:32:05.99ID:b4nAYmeI
>>686
そうなんだ
0688デフォルトの名無しさん2016/06/17(金) 23:55:03.09ID:Exn4yetN
>>681
カレントリージョンは?
0689デフォルトの名無しさん2016/06/18(土) 01:11:16.15ID:kMT9Jw+Y
>>608
何と!!
俺は、たまたまエクセルの様にも使えるソフトだと思っていたぞ!!
0690デフォルトの名無しさん2016/06/18(土) 02:31:35.49ID:NWKDWrs3
いろんなカレントがあるけれどもフォーカスがあるのがアクティブというイメージ ちがったっけ
0691デフォルトの名無しさん2016/06/18(土) 05:38:12.11ID:HXkFAbhj
>>685
それ確かに地味に不便なことがある
0692デフォルトの名無しさん2016/06/18(土) 07:11:18.00ID:YZGqi88u
>>670
カレントディレクトリの考え方は別におかしくないけど Excel はブックの読み書きをカレントディレクトリにやらないからなぁ
...
>>688
> カレントリージョンは?
使ったことないや
必要ない限り Active〜 も使わない
0693デフォルトの名無しさん2016/06/18(土) 08:19:24.15ID:8hCP+IkX
>>688
カレントリージョンを使った範囲指定なんて普通しないですし
0694デフォルトの名無しさん2016/06/18(土) 08:34:52.90ID:8hCP+IkX
勝手なイメージだがブックという超便利な機能盛りだくさんのvmがあって
その中で視覚的に配列やら表やら計算やらを処理出来る
しかもこのvmの大きさは可変
vbaで処理すると重いなら外部のbat,exeをキックすればいい
これで分散APも並列処理も出来る
画面描画の停止や更新も1行で出来るし
毎秒更新とかのリアルタイムシステムでなければ
EXCELでシステム構築するのが利口な気がする

方眼紙マニアにもよく馴染むだろうし
0695デフォルトの名無しさん2016/06/18(土) 08:53:05.61ID:2u2TtX6Z
>>694
長時間例えば5時間とか動くVBAを
複数動かせないと思うけど
VMだったらその上で複数プロセス動かざるし
VM自体も複数動かせる
VM事にストレージも別
0696デフォルトの名無しさん2016/06/18(土) 09:41:36.73ID:AeBaATGO
外部プログラム叩いて並列化するなら全部それでいいだろという結論。
エクセルを介する必要性すらない。

各プロセスの結果をアクセスファイルに落とし込んで、
VBAで指定の形式に加工したエクセルファイルを吐き出すのが利口なんじゃないかな。
0697デフォルトの名無しさん2016/06/18(土) 10:29:09.85ID:FygEViuu
その内ExcelもVSに統合されたりしてな
今後exeファイル一つでフォームを開くようにブックやシートが開ける時代が来るかも
0698デフォルトの名無しさん2016/06/18(土) 10:31:31.43ID:x3DpRQaV
標準以外の外部ライブラリって使ってますか?
0699デフォルトの名無しさん2016/06/18(土) 11:41:48.99ID:kMT9Jw+Y
>>697
さすがにないと思うな。
エクセルを開発ツールだと思う人が8割くらいにならないと。
0700デフォルトの名無しさん2016/06/18(土) 12:48:54.81ID:wpNg6KZu
おまえらがエクセル乱用するから.netに移行出来んのやで
自分で自分の首を締めとんのや
0701デフォルトの名無しさん2016/06/18(土) 14:02:52.92ID:JKO8CZ1Z
首を絞めるどころかそれはExcel使いが
勝利したとしか聞こえない。
0702デフォルトの名無しさん2016/06/18(土) 15:54:29.92ID:AeBaATGO
仮に次のバージョンから.NETになったとして、実際に現場で使えるようになるのは何十年後だろう。
0703デフォルトの名無しさん2016/06/18(土) 18:18:13.52ID:Ch2sX2B1
office onlineにVBAみたいなの乗らないかなー
それがデスクトップアプリに落ちてくるのを希望
0704デフォルトの名無しさん2016/06/18(土) 19:11:28.28ID:/tHdzm1o
>>698
標準ライブラリってなにを指してる?
OSSライブラリは使っているが。
0705デフォルトの名無しさん2016/06/18(土) 19:43:30.37ID:euI6F3wt
いっその事Excel廃止して欲しい
帳票作成ツールじゃねえからこれ
0706デフォルトの名無しさん2016/06/18(土) 19:57:21.80ID:jMW6Q+El
いやいや、サーバからエクセルに印刷用データを流し込んで出力するシステム作ってるよw
0707デフォルトの名無しさん2016/06/18(土) 21:24:02.26ID:1Sy/qR+C
>>702
ExcelのVBAなんて一つ一つの規模はたかが知れてるから
少しずつ手の付けられるところから着手されると思うけど、そうした場合には
すぐにでもってことになると思うけど。

ただ、稀に数百行にわたる関数とか、数千行にわたるモジュールとかキチガイじみた奴を見かけるけど、
更にそういう中で大基の構成から既にイカれているようなのには
絶対改修作業に当たりたくないな。
0708デフォルトの名無しさん2016/06/18(土) 21:56:20.02ID:AeBaATGO
>>707
いや、今でさえOffice 2007が入ってる会社があるんだから、
もしOffice 2018とかで.NETになったとしても、Office 2018自体が会社で採用されるのが2028年前後になるだろって話。
0709デフォルトの名無しさん2016/06/18(土) 21:59:05.34ID:2u2TtX6Z
>>708
Microsoftのサポートが切れるタイミングで出来るだけ新しいのになるんじゃね?
0710デフォルトの名無しさん2016/06/18(土) 23:06:42.88ID:kMT9Jw+Y
よく考えたら、
エクセルなんてものがあるから、
素人が作る変な表が横行するのか。

敷居が低すぎて、何でも作れるから、
何でもありになってしまう。
0711デフォルトの名無しさん2016/06/18(土) 23:12:56.05ID:HXkFAbhj
素人が作るエクセルの変な表が何か?
0712デフォルトの名無しさん2016/06/18(土) 23:32:10.72ID:RY58SNRu
表プロさんかっけーwwwwwww
0713デフォルトの名無しさん2016/06/18(土) 23:36:01.21ID:1Sy/qR+C
>>710
確かにそういう考え方も有るかも知れんけど、
その敷居の低さによって受けた恩恵も少なくないんじゃなかろうか。

それに「たられば」を語ったらきりがないぞ。
0714デフォルトの名無しさん2016/06/18(土) 23:46:56.91ID:marn/lv9
お前ら皆素人のくせしてその上から目線はどっから来とんのやでw
0715デフォルトの名無しさん2016/06/19(日) 00:34:12.83ID:PhBjLvDR
ExcelVBAはビジネスで一番使う言語だからプロもいるだろ。
少なくとも俺はプレゼン資料とか作らされてるぞ。
分析用のマクロ組んだら、出来あがった表にも詳しいだろうからって理由で作らされてるぞ。

>>713
働いていて一番思うのは「越えるべきハードルを低くしても何も良いことは起きない」って事だな。
無能が潜在化して重要な場面で露呈する。重要なのはハードルを越える能力であって、ハードルを越える事ではない。
0716デフォルトの名無しさん2016/06/19(日) 00:41:05.15ID:Z7Y1KPNQ
>>715
ハードルの置き場所が適切なのかどうかだ
0717デフォルトの名無しさん2016/06/19(日) 01:08:12.15ID:vKpzel9E
1度vbaのキャリアがつくと、一生底辺プログラマ
0718デフォルトの名無しさん2016/06/19(日) 03:49:01.26ID:Jey56dpp
vbaで数万行のコードとかあるからな
完全にシステムと呼ぶにふさわしいレベルのやつ
こういうのがひとつのエクセルで動いてるの見ると感動する反面さっさと抜け出したい気持ちが湧く
0719デフォルトの名無しさん2016/06/19(日) 04:09:43.10ID:qVPAyFPI
某社でセールスマンに持たされた見積もりシステムがExcelのマクロで作られてた
ロックかかっててソースは見れなかったけど、複雑な条件設定から印刷までカバーしてて
処理内容から見て軽く1万行は超えてるはず
0720デフォルトの名無しさん2016/06/19(日) 09:26:50.25ID:NZMKMoV3
>>704
ツール、参照設定で開くとチェックが入ってるものです
多分4つ
0721デフォルトの名無しさん2016/06/19(日) 09:49:52.82ID:FZwnNmAR
>>715
ハードルが低ければ質が悪くなるし
ハードルが高ければ超えられない者が増える。何だってそう。

VBAやってる人がC#とかやろうとするとかなりの人がついて来れなくなるのと一緒。

ではそんな連中は必要無いのかと言われればどうなんだろうな。
0722デフォルトの名無しさん2016/06/19(日) 10:21:50.36ID:PhBjLvDR
>>721
何か一つ言語やってて、他の言語やろうとするとついてこれなくなるって、それは無能が露呈してるだけだろ。
その手のは大抵、ネット上からコードをコピーしてくるのが当然の行為と思っていて自分では一から組めないんじゃないか。

高級言語は性質的に環境に強く依存する上、時代の流れによって流行り廃りが出るし、
オブジェクト指向に至ってはハッキリと断層が発生するから、誰かの作ったルールを学び続けなきゃならん。
短い訓練期間で高い生産性を確保できるけど、それだけだと基礎がない分、不安定である事を自覚してないと危険だろうな。
0723デフォルトの名無しさん2016/06/19(日) 11:22:07.22ID:gfPWR5Hk
負の遺産ってあるよ
COBOLにせよvbにせよ
短期的なメリットばかり追い求めて今地獄を見てるわけだろ
腐った言語は現場も会社も腐らせる
日本全体でそういう事があって国際的な競争力もかなり落ちてる
0724デフォルトの名無しさん2016/06/19(日) 11:31:55.98ID:Pvc+naRU
>>723
Excel って日本製じゃないぞ w
0725デフォルトの名無しさん2016/06/19(日) 11:32:44.02ID:Z7Y1KPNQ
言語のせい、ってわけじゃないと思うな
0726デフォルトの名無しさん2016/06/19(日) 11:43:23.39ID:PhBjLvDR
言語のせいで腐っているわけではなく、言語のハードルが低いせいで腐った奴が入りやすく残りやすいんだ。
0727デフォルトの名無しさん2016/06/19(日) 11:56:20.24ID:CQK/Xnlu
>>723
バカ発見
0728デフォルトの名無しさん2016/06/19(日) 12:24:46.90ID:gfPWR5Hk
>>725
全部がそうではないが言語の影響は大きいよ
腐ったやり方にうまくマッチする言語は腐った現場を育てる
腐った現場は腐った人材を育てる
腐った人材は腐った会社を育てる
腐った会社が集まれば腐った業界が出来る
腐った業界に最重要インフラを任せる国家もまた腐っていく
0729デフォルトの名無しさん2016/06/19(日) 12:30:20.82ID:NZMKMoV3
ちゅーか古いんだよ。vbaってもう20年ぐらい前じゃないか
vb.netとか全然違う書き方になってるのになんでvbaは進化しないんだ
0730デフォルトの名無しさん2016/06/19(日) 12:32:12.78ID:Z7Y1KPNQ
>>722
> オブジェクト指向に至ってはハッキリと断層が発生するから、

これは、どういう意味だろう?
0731デフォルトの名無しさん2016/06/19(日) 12:36:40.42ID:uv8G3Tjl
>>723
いやCOBOLは今でも現役だよ。
最近は意識高い系がおおくて覚えたがらないけど、
言語仕様がシンプルで誰が作ってもほぼ均一のステップ数と性能になるから見積もりやすかった。
この「誰が作っても」ってのが結構重要で、JavaとかSQLとかコーダーの能力で処理能力が100倍違うとかざらだからね。
不良プロジェクトが多発している要因の一つでもある。
0732デフォルトの名無しさん2016/06/19(日) 13:08:05.62ID:oY7TlxuV
ハローワークでも、COBOLの求人多い
0733デフォルトの名無しさん2016/06/19(日) 16:07:23.57ID:FZwnNmAR
>>722
無能が露呈しているというのはそうなのかも知れない。
俺もそんなに頭が良い方ではないので、
昔のBASICやアセンブラからCやVBAみたいな構造化言語に移行した時はそこそこ苦労したし、
VB.NetやC#のようなObject指向言語に移った時は凄く苦労した。
未だ関数型言語やリアクティブプログラミングに関しては理解しきれていないし、苦労は続く。

ただ、VBAはその敷居の低さも売りとして見ることも出来るし、
そういうものとして既に作られてしまっているのだから、
その形を否定してしまうのであればVBAスレから立ち去って
もっと効率化を図るために洗練された言語のスレに行くしかないな。

俺も前に何度か多態性についてここで議論に加わったこともあったけど結局のところ、
そんな考え方しなくてもお手軽に組めるのもVBAの魅力の一つとして捉えている人もこのスレにも多いこと、
別の言語では継承や多重継承など簡単に使えるものもあるけどVBAには無いからではどうやって
それをやって行くかという工程で本来のその意味を理解するのに凄く役だったこと
本当に初心者の人が始めるのに教えるとき、Excel一つあれば代入や演算、分岐などの基本的なことが
凄く理解して貰えるのに手っ取り早いことを考えると、
この敷居の低さも有りと言えば有りかなと思ってる。
0734デフォルトの名無しさん2016/06/19(日) 16:20:20.95ID:bmdpRLuq
何が「有りと言えば有りかな(キリッ」だよwwww
その敷居の低さの恩恵を受けてるのは他の誰でもないお前ら自身やで
敷居が低いからこそお前らでもvba出来るんやないかw
0735デフォルトの名無しさん2016/06/19(日) 16:26:18.09ID:FZwnNmAR
>>734
恩恵は受けてるね。
VBAやってなかったら今xamarinで遊んだり
MVVMモデルとかも全く手を触れなかったかも知れない。
0736デフォルトの名無しさん2016/06/19(日) 16:39:34.30ID:bmdpRLuq
>>735
はいはい聞きかじりの単語を振りかざしてプログラミング論を語りたいんやったらマ板行ったらええでw

ただ質問したいだけの事務のねえちゃんにとっては
お前らみたいな意識高い系の脱初心者層が一番うざいねんw
0737デフォルトの名無しさん2016/06/19(日) 16:48:02.13ID:PhBjLvDR
いや、質問スレで一番ウザいのは「他の言語では自由に多次元配列が伸ばせるのにVBAではできない」とか
トンチンカンな事を主張しちゃうタイプの知ったかぶりの奴だろ。
0738デフォルトの名無しさん2016/06/19(日) 16:50:05.64ID:Z7Y1KPNQ
なあんだその事務のねえちゃんに直接手取り足取り教える方がよっぽど生産性が高いじゃないか。
0739デフォルトの名無しさん2016/06/19(日) 16:50:52.25ID:Z7Y1KPNQ
おばさんでもいいけどさ
0740デフォルトの名無しさん2016/06/19(日) 16:52:22.45ID:IFm5zb47
>>736
で、結局VBAディスって何がしたいの?
0741デフォルトの名無しさん2016/06/19(日) 16:58:12.70ID:Z7Y1KPNQ
VBAのプログラマってコミュニティがないから孤立してるんじゃないか?
だから便利にするためのライブラリが広まっていかない。

>737
> 自由に多次元配列が伸ばせる
「多次元」で伸ばせんだっけ?
0742デフォルトの名無しさん2016/06/19(日) 17:08:24.66ID:FZwnNmAR
>>736
いや、ウザいのは大阪弁で上から目線で結局何が言いたいかよくわからないような奴だと思うよ

ハードルの話をしているんだろ?
まず高い方が良いのか低い方が良いのかの主張も見えないし
煽りたいだけなの?
0743デフォルトの名無しさん2016/06/19(日) 17:13:22.68ID:iaREzNIp
MSもnext VBAそろそろ作って乗っけて欲しいな
c#でもtype Scriptでも、VB.NETでもいいからVBA並みに敷居が低いやつ
0744デフォルトの名無しさん2016/06/19(日) 18:45:09.32ID:OFyR5xSG
つまり大阪はクソって事か
0745デフォルトの名無しさん2016/06/19(日) 18:46:13.01ID:qVPAyFPI
>>738
姉ちゃん相手に何を生産してんだか
0746デフォルトの名無しさん2016/06/19(日) 18:56:24.56ID:Oqh5oWwu
>>723
こういうのがクソみたいなjavaプログラム作るんだろうな
0747デフォルトの名無しさん2016/06/19(日) 19:24:01.73ID:bmdpRLuq
>>742
うざいからマ板行けってそりゃもうハッキリクッキリ書いとるんやがなw
頭悪いんやねお前w
0748デフォルトの名無しさん2016/06/19(日) 19:27:27.02ID:DvGzGUcF
マ板って機能してるの?
もう何年も覗いてないけど。
0749デフォルトの名無しさん2016/06/19(日) 19:27:27.45ID:pdXnP4Tm
VBAの敷居が低いって嘘だよな
碌なライブラリやフレームワークがない
モジュールやクラスが書きにくく管理しにくい
dllとか作れないから再利用の単位がわかりにくい
開発環境もドキュメントも貧弱でやる気を失う
環境依存が多くて作った端末以外だと割と動かない
スプレッドシートとかいう特殊なUIを強いられる
個性あふれる資産のせいで身動きが取れない
C#の方が万倍快適で簡単だよ
0750デフォルトの名無しさん2016/06/19(日) 19:45:57.97ID:OFyR5xSG
そもそもVBAって大規模開発向けとしては作られてないだろ
1000ステップ超えそうならその時点で別言語での開発を考慮に入れるのが正解かと
0751デフォルトの名無しさん2016/06/19(日) 19:51:52.27ID:mElRTh8d
C#プログラマなんだけど育児中なので
近場の事務のパートをやってる。
超絶非効率なことをやってるのでマクロ組んで自動化。
ま、当たり前に簡単なんだけど、
頭後退させるのに苦労したw

関数でやれるのについ小難しくプログラミングしてしまったり、
変数定数をきちんとしすぎて誰も理解出なかったり…
ExcelVBAを扱うなら、その扱う、保守する人のレベルを考えながら組まなくちゃいかんね。
例えば変数名は漢字にするとかw
定数は使わない、もしくは定数も漢字とか。
privateもpiblicも御構い無しにするとかw

後は関数や書式設定でできる部分は外だし
定数もシートに外だし
などなど。
いかに初心者にメンテさせやすいかを考えなきゃいかんね。
頭後退させるのが辛いよー
0752デフォルトの名無しさん2016/06/19(日) 20:00:49.28ID:PhBjLvDR
データのやりとりをxlsxでやってる事が多いから、これを利用しやすいのがVBAなのであって、
単体アプリを作成する為の言語と比べるのは愚の骨頂。
0753デフォルトの名無しさん2016/06/19(日) 20:01:03.17ID:NZMKMoV3
>>751
漢字変数はさすがにやめよう
0754デフォルトの名無しさん2016/06/19(日) 20:03:19.58ID:FZwnNmAR
>>747
何だやっぱりただの煽りか

大阪民国の部落民はプログラマとしてより
人として敷居が低い大阪でしか生きていけないんだから
大口を叩いてはいけないな
0755デフォルトの名無しさん2016/06/19(日) 20:14:12.42ID:+reLMBHf
>>748
前もマ板行けマ板行けって騒いでたやついたけどあの時のゴミだろ
0756デフォルトの名無しさん2016/06/19(日) 20:32:44.30ID:bmdpRLuq
>>754
お前はプログラミングを学びたかったらvbaに籠ってお山の大将してないでシステム開発の仕事でもしてみた方がええで
そうすればそう少しは己の無知蒙昧さに気がつくと思うわw
0757デフォルトの名無しさん2016/06/19(日) 20:38:21.72ID:FZwnNmAR
>>756
はぁ?
何を頓珍漢なことを言ってるんだ?
お前、今俺がどんな仕事しているのか
知ってるようないい加減なことを言ってるが
大阪人ってみんなこんな短絡的なのか?
0758デフォルトの名無しさん2016/06/19(日) 20:45:56.95ID:bmdpRLuq
>>757
どんな仕事をしとるんか言うてみい脱初心者くんw
0759デフォルトの名無しさん2016/06/19(日) 20:46:38.97ID:0HPVxz1k
>>753嫌、逆に積極的に使うべきだと思うんだがなぁ
sikakarizaikocount
sikakarizaikoNo
sikakarizaikoAmount
とか、英検5級レベルの馬鹿が、
その場で思い付いた英語混じりの変数付けてたの
引き継ぎで面倒見させられたら
鬱になりそうになるぜ?
0760デフォルトの名無しさん2016/06/19(日) 20:50:26.53ID:FZwnNmAR
>>758
人に聞くときは自分からって小学生のとき教わらなかったか?
0761デフォルトの名無しさん2016/06/19(日) 20:56:11.59ID:bmdpRLuq
>>760
自分が言いたそうやから聞いてやったんやないかw
こっちはお前の仕事なんぞビタ一文興味ないのやで脱初心者くんw
0762デフォルトの名無しさん2016/06/19(日) 20:59:17.12ID:Pvc+naRU
>>753
いや、意外と分かりやすいよ
名前付けをちゃんとすればドキュメントをあまり書かなくてもいいし
入力が面倒なのが難点だけど
0763デフォルトの名無しさん2016/06/19(日) 21:01:42.08ID:DvGzGUcF
まあ漢字変数名も内部使用のプログラムではあって良しだな
0764デフォルトの名無しさん2016/06/19(日) 21:02:03.59ID:FZwnNmAR
>>761
はぁ?
誰もお前に教えたいなんて一言も言ってないし
お前が勝手にVBAに引き籠ってるとか決め付けるような頓珍漢なことを言ってるから
何言ってんだコイツと思っただけだ。

キチンと日本語を理解しろよ大阪民国人
0765デフォルトの名無しさん2016/06/19(日) 21:04:06.40ID:DvGzGUcF
ていうか変数なんてあまり使いたくないから自分のプログラムではi, j, k, tmp, retぐらいしか出てこないけど
0766デフォルトの名無しさん2016/06/19(日) 21:04:59.76ID:OFyR5xSG
良いから黙ってNGブッこんどけよ
0767デフォルトの名無しさん2016/06/19(日) 21:08:02.78ID:bmdpRLuq
>>764
vbaに籠ってお山の大将してるのは事実やろ
自分のレス読みかえしてみろや恥ずかしい奴やなw
0768デフォルトの名無しさん2016/06/19(日) 21:08:44.60ID:Z7Y1KPNQ
>>750
> 1000ステップ超えそうならその時点で別言語での開発を考慮に入れるのが正解かと

10ステップの関数100個で1000ステップになるわけだから確かにそうなのかもしれない
0769デフォルトの名無しさん2016/06/19(日) 21:10:36.15ID:FZwnNmAR
>>751
まぁC#はMicrosoftが推奨する命名規約とかに仕事場でも右へならえしていることが多いから尚更だよね。

俺もまず変数名や関数名に日本語使うことはないけど、VBAの場合、絶対じゃない。

関数名に関しては、日本語名を使った方がいい特殊な場合があるんだよね。
0770デフォルトの名無しさん2016/06/19(日) 21:14:10.45ID:FZwnNmAR
>>767
本当に短絡的な大阪民国の土人だな。
俺がいつもVBAのスレだけに来てるって何で思っちゃうんだろうね。
やっぱりバカだからなのかなぁ。
それとも大阪人だからなのかなぁ。
0771デフォルトの名無しさん2016/06/19(日) 21:20:35.36ID:Z78VZFeH
漢字変数って、何かダセェ気がして使わなかったけど、
何かデメリットある?
無けりゃ使ってみようと思う。
よく考えたら、Worksheet("予定表")とか普通に使ってるから、
変数だけ漢字イヤってのも変だし。
0772デフォルトの名無しさん2016/06/19(日) 21:21:18.28ID:bmdpRLuq
>>770
お前の見てるスレなんか知らんわwww
そんなに言いたかったら勝手に発表しいやw
ちょっと前にも言うたけどビタ一文興味はないけどなw
0773デフォルトの名無しさん2016/06/19(日) 21:30:40.28ID:Oqh5oWwu
誰もvbaの質問しとらんな
これじゃ質問したい初心者もさよならバイバイやろなぁ
0774デフォルトの名無しさん2016/06/19(日) 21:31:59.31ID:ZNivBSeu
>>771
良いよ
0775デフォルトの名無しさん2016/06/19(日) 21:32:06.25ID:FZwnNmAR
>>771
プリフィクス付けるとき英文字と混在になるんじゃない?
まぁそれも許容範囲かってところはあるけど。
0776デフォルトの名無しさん2016/06/19(日) 21:34:17.46ID:FZwnNmAR
>>772
だから誰が言いたいと言ったよ・・・
大阪民国って日本じゃないって本当なんだな。
全然日本語が通じない。
0777デフォルトの名無しさん2016/06/19(日) 21:39:53.09ID:AD/xcvrM
>>776
大阪人は親の葬式でもそれをネタに笑いを取ろうとするヒトモドキだって話は聞いたことがある
0778デフォルトの名無しさん2016/06/19(日) 21:42:14.11ID:bmdpRLuq
>>776
なんやそれも言いたくないんかwややこしい奴やなw
脈絡なく「VBAのスレだけに来てる…」とか言いだすから聞いて欲しくてウズウズしとるんかと思ったわw
どの話の流れでこの話の流れになるんやホンマ謎な奴やわw
0779デフォルトの名無しさん2016/06/19(日) 21:51:02.17ID:tI1YAuB2
>>778
そもそも「VBAに篭って」と決め付けたのはお前だろ?
ヒトモドキだからそれも理解出来ないか。
0780デフォルトの名無しさん2016/06/19(日) 21:52:52.38ID:tI1YAuB2
なんだ?
大阪人って結構嫌われてるのか?
0781デフォルトの名無しさん2016/06/19(日) 21:52:56.29ID:NZMKMoV3
>>759,762
マジか
見た目があまりに気持ち悪いから避けてたわ
0782デフォルトの名無しさん2016/06/19(日) 21:53:57.88ID:NZMKMoV3
>>780
犯罪率や在日率でなぁ
さすがにそろそろスレチ過ぎる
0783デフォルトの名無しさん2016/06/19(日) 21:59:28.17ID:bmdpRLuq
>>779
なんやキミも籠っとるんか?
プログラミングの勉強をしたいんやったらぬるま湯から飛び出して
広い世界を見る勇気も必要やでがんばりや
0784デフォルトの名無しさん2016/06/19(日) 22:06:38.78ID:AD/xcvrM
そして広い世界で漫才師に
0785デフォルトの名無しさん2016/06/19(日) 22:14:38.46ID:A8U7Y+uC
>>771
文字列と変数名は全然意味が違うと思うが???
俺はVBAだけは日本語変数名使ってるな
0786デフォルトの名無しさん2016/06/19(日) 22:15:29.32ID:ex7WWjXA
大阪ではVBAのコメントでも
でんねんまんねんおまんねんって付けるよ
0787デフォルトの名無しさん2016/06/19(日) 23:00:47.73ID:mElRTh8d
>>751
だけど漢字変数やっぱ使う方が
VBAは逆にいいよね。

「ここ変えたら、他にも流用できるっていう感じで、教えてください」

と、マクロ組めない人に言われて、
ソース見せたら固まってたw
英字の羅列はいかにもプログラミング!って感じで受け入れられそうにない。

自分はシートとかも、参照作ってそれ使いまわししてるんだけど、
その都度Sheet("担当者一覧")と毎度書くほうが、
初心者には説明つきやすい

インテリセンスの関係上全て変数宣言したいけど、
その変数さえ、何これ?感が増すため、
ないほうがスッキリするのか?これはもしや?とも思う。

メモリや速度なんか考えることないんだもんね。エクセルVBAだと。
0788デフォルトの名無しさん2016/06/19(日) 23:03:16.45ID:DVBnc7U9
>>771もう、やんなるよ。
コメントあったら良いってもんでは無し。
最初から漢字でやってて欲しいなって発狂しそうになるときあるぞ?!

GenValって原価なのか減価なのか
(正解は材料原価でしたとか)
0789デフォルトの名無しさん2016/06/19(日) 23:07:45.29ID:mElRTh8d
>>788
けど、やっぱり気持ち悪いんだよね
漢字変数なんか、カス相手の為のものだからさ。

煽るつもりないけど、漢字変数は、
わかりにくいよ、とか言う人の為のものだよ。
組むほうはひとっつもいいと思ってやってないw
めっちゃめちゃ気持ち悪い。
0790デフォルトの名無しさん2016/06/19(日) 23:32:02.30ID:Ax0ZGtFU
UNICODEだったらただの文字の一つ
vbaはcp932だっけ?
windows10だとutf-8?
0791デフォルトの名無しさん2016/06/19(日) 23:46:21.58ID:Z7Y1KPNQ
>>789
そんなん全くの感覚論じゃん
0792デフォルトの名無しさん2016/06/19(日) 23:47:29.25ID:NZMKMoV3
vbaでclassって作る?
0793デフォルトの名無しさん2016/06/19(日) 23:48:08.55ID:/jrrR31N
いちいち全角とか面倒くさい
0794デフォルトの名無しさん2016/06/19(日) 23:49:00.17ID:NZMKMoV3
地獄の全角スペース
0795デフォルトの名無しさん2016/06/20(月) 00:15:37.00ID:ytJnTDmV
マイクロソフトのUTF-8はなぜか無意味なBOM付きなんだよなぁ
世界標準にあわすために3バイト捨てないといけない
0796デフォルトの名無しさん2016/06/20(月) 00:56:49.56ID:GaIVYz7v
>>791
え?

…。

とまぁ、こういう人がいるので、やはり
あまりプログラミングスキルのない人がいる現場では漢字変数でいいと思います。
0797デフォルトの名無しさん2016/06/20(月) 01:11:03.28ID:RuTd1b0e
んーやっぱり変数はアルファベットだな
でもボキャブラリーが貧弱なのでネーミングに困る
予算とか曜日とかyosan、youbiにしてしまう
我ながらださすぎるw
0798デフォルトの名無しさん2016/06/20(月) 01:40:45.13ID:g4dtXF6Y
感覚論じゃないって人は、感覚じゃないちゃんとした理由を示してほしいんだが

入力が手間と、日本語が使えない環境で開発/保守できないって意見はみたこととあるけど
いまだこれにまともな回答を見た事が無いわけだ
0799デフォルトの名無しさん2016/06/20(月) 02:51:36.52ID:SbKX6kLZ
英語版のWindowsとOfficeで漢字の変数名ってちゃんと処理されるの?
0800デフォルトの名無しさん2016/06/20(月) 03:03:49.22ID:8+wUFNFJ
日本語をサポートしてるんだから必要に応じて使うべき。
日本語環境じゃないなら話は別だけど。

例えば、A商品購入処理っていう名称が要件仕様に乗っかてっきてんなら、そのまま名前を適用するわけ。

そうすりゃ、追加要員の人からBuyProductAってA商品購入処理のことですか?とか、要求仕様としてない用語に混乱することもない。
0801デフォルトの名無しさん2016/06/20(月) 03:05:53.20ID:8+wUFNFJ
で、ローカルレベルの変数なら好きに定義すりゃいい。
0802デフォルトの名無しさん2016/06/20(月) 04:13:27.46ID:7Cuehomz
Sub 集計変換処理()
   Dim パス As String, パス一覧, 読み込まれたデータ As Dictonary, 店舗単位 As Dictionary

   フォルダ指定 パス
   ファイル一覧作成 パス一覧, パス
   ファイル読み込み 読み込まれたデータ, パス一覧
   集計処理 店舗単位, 読み込まれたデータ
   表変換 シート1, 店舗単位
   装飾処理 シート1
   印刷設定 シート1
   印刷プレビュー シート1
   保存確認
End Sub


わかりやすい(うっとり
0803デフォルトの名無しさん2016/06/20(月) 04:45:08.49ID:VMcfDu8l
>>802
プロシージャなのか変数名なのか、パッと見いまいち分かりにくい・・・
0804デフォルトの名無しさん2016/06/20(月) 05:26:48.51ID:tNPTsfIG
Function BMI(身長m, 体重kg)
 BMI = 身長m * 身長m / 体重kg
End Function


わかりやすい
0805デフォルトの名無しさん2016/06/20(月) 05:32:04.61ID:7Cuehomz
実際のエディタ上なら定義から変数か関数か分かるから混乱しにくいけどね

そういやこのスレでも度々「コードの見やすさ」について話題が出るけど、
ステップ実行とかウォッチ機能とかのデバッグ機能を使わない事前提なのが不思議。
0806デフォルトの名無しさん2016/06/20(月) 06:41:42.91ID:ytJnTDmV
コードが見やすければ「ステップ実行とかウォッチ機能」、はもっと使いやすいだろ。
なぜ使わないと思い込むのか理解できない。
0807デフォルトの名無しさん2016/06/20(月) 06:43:31.24ID:A8kl/PgB
>>803
なので俺は

Call フォルダ指定(パス)
Call ファイル一覧作成(パス一覧, パス)
Call ファイル読み込み(読み込まれたデータ, パス一覧)
Call 集計処理(店舗単位, 読み込まれたデータ)
Call 表変換(シート1, 店舗単位)
Call 装飾処理(シート1)
Call 印刷設定(シート1)
Call 印刷プレビュー(シート1)
Call 保存確認

ってやる派
0808デフォルトの名無しさん2016/06/20(月) 06:45:07.03ID:A8kl/PgB
>>805
コードの見易さとデバッグ機能がどう関係してるのか意味不明なんだが...
0809デフォルトの名無しさん2016/06/20(月) 06:57:42.06ID:T6nELGvC
漢字の使い方も工夫して実際にわかりやすくなる場合があるんだから
「気持ち悪い」とかいう感覚に固執するやつは頭が固すぎるんだろう。
0810デフォルトの名無しさん2016/06/20(月) 07:10:50.33ID:vG8P03oG
>>804
型は全部Variant?
0811デフォルトの名無しさん2016/06/20(月) 07:13:39.44ID:UXcyvThL
>>804
体重/身長^2
じゃね
0812デフォルトの名無しさん2016/06/20(月) 07:32:27.23ID:WzYWjmMB
>>807
初期処理
中核処理
終了処理

ってまずは3つに分けるな
箇条書きは3つの中に割り振って作る
こうしないと処理の目的が分からなくなる
0813デフォルトの名無しさん2016/06/20(月) 08:10:58.58ID:MOJTeKy8
言語がunicodeサポートしてるなら日本語識別子は正解だよ
古い習慣(unicodeが未サポートの時代)に囚われているとこれに気が付けないんだよね
顧客や自分がビジネスで使う用語は日本語だからドメインモデルも日本語になる
当然ユビキタス言語も日本語だしそうなるとコードも日本語になるべきだ
0814デフォルトの名無しさん2016/06/20(月) 08:20:43.59ID:ol+yTAdu
>>812
それ・・・ひとつのSub/Functionのコードは何行くらいになるんだ?
0815デフォルトの名無しさん2016/06/20(月) 08:59:52.48ID:4770PqBd
>>802,804
アルファベットと漢字が混ざるから気持ち悪いのか
全部漢字だと思ったより見やすいな
0816デフォルトの名無しさん2016/06/20(月) 09:11:37.21ID:gGOYEOkD
>>814
多分何かを誤解してそうだが
こういうことだろ
SEならこうするわな
PGはこんなんしないと思う

sub 主処理()
call 初期処理
call 中核処理
call 終了処理
end sub

sub 初期処理()
call 変数初期化
call エラーチェック
call ファイル一覧作成
end sub

sub 中核処理
’ファイル一覧ループ
for i = iST to iED
call ファイルリード
call 〜処理
next i
end sub
0817デフォルトの名無しさん2016/06/20(月) 09:31:27.46ID:jXyz40Gk
前準備
本処理
後始末
0818デフォルトの名無しさん2016/06/20(月) 11:03:38.89ID:GaIVYz7v
>>798
プログラマですか?
プログラマだとそんな意見は出ないと思います。
事務員さんがマクロを扱っている状態なら、すきにしてくださいとしか。


夏からjavaの現場に戻るから頭切り替えないとバカになりそうw
0819デフォルトの名無しさん2016/06/20(月) 11:08:11.64ID:ol+yTAdu
>>816
初期処理、中核処理、終了処理に分けるのはほぼ「sub 主処理」だけってこと?
その下もそんな風に3段階くらいに分けて次々に処理してるのかと聞いてみたんだ。

たしかに行数はあまり関係なかった。
0820デフォルトの名無しさん2016/06/20(月) 11:15:19.11ID:GaIVYz7v
>>798

まぁVBA程度じゃ関係ないんだろうけど、
変数名が長いとリソースを食う。

全角の数字は勝手に半角と判断されバグの温床

コメントとの差がわかりにくい

コーディングの際漢字がめんどくさい

VBは漢字使えるが他言語は使えないものもあり、拡張が発生した場合のバグの温床

他言語で漢字の変数は使えないものがaaAある以上、アルファベットで記載するのが当たり前の流れ

命名規則に乗っ取ればそもそも混乱はない。

こんな感じ?
けどVBAでは扱う人のスキルを考えると漢字変数もむしろ良いと思う。
ただうっとり、なんて思えないw

ぃゃゃゎぁと思いながら組みますよ
0821デフォルトの名無しさん2016/06/20(月) 11:46:28.32ID:ol+yTAdu
>>818
>プログラマですか?

何より恥ずかしいのでこういう発言は止めてもらいたい。
恥ずかしいというか情けない。
0822デフォルトの名無しさん2016/06/20(月) 12:04:56.49ID:GaIVYz7v
>>821
えっ?
意味がわからないです。
までも漢字変数を感情論以外で説明してくれって、そんな言い方する人
開発現場で見たことないんで、まぁそう言う事なんでしょうね…
0823デフォルトの名無しさん2016/06/20(月) 12:05:24.59ID:xPaMOXBK
>>819
独立性の高いサブプログラムならないこともない
引数も貰って初期処理、中核処理、終了処理って構造を
必ず作るのは建て付けとしてはよくある
vbaに限らずな
0824デフォルトの名無しさん2016/06/20(月) 12:14:15.88ID:xPaMOXBK
変数名は短い方がいいし2byte文字を使うことはまずない
なぜかって前レスにあったがリソースを食うから

ここから感情論だが
漢字変数の後に as long とか書く人は何なの?ルー大柴かよ!
といつも思って楽しんでる
0825デフォルトの名無しさん2016/06/20(月) 12:17:42.88ID:ol+yTAdu
>>822
プロのプログラマが仕事として書くプログラムについて議論する場じゃないってことだよ。
0826デフォルトの名無しさん2016/06/20(月) 12:19:38.90ID:NqJTjEgY
>>825
>プロのプログラマ

頭が頭痛
0827デフォルトの名無しさん2016/06/20(月) 12:22:01.24ID:JaTSFg3p
え!?
0828デフォルトの名無しさん2016/06/20(月) 12:22:08.41ID:xPaMOXBK
>>826
マジかよ
0829デフォルトの名無しさん2016/06/20(月) 12:23:33.80ID:UXcyvThL
>>826
プログラムのプロは予めの意味ではないか
0830デフォルトの名無しさん2016/06/20(月) 12:36:15.18ID:rGzE/Yjo
これ以上のresponseは
2chのresourceをeatだからyou達はハンカクカタカナ使うべき

海外の4chとか、まとめブログ界の人達がコピペ
しやすいように英語で書け

要するに、こう仰りたいのですよね?
0831デフォルトの名無しさん2016/06/20(月) 12:37:01.11ID:NsVXy02R
>>822
えーとね、きっと漢字を使うなら使うで、
論理的な理由を説明して欲しいと言っているんだと思うよ。
考えて見れば他の人も手を入れるのに
適当に気分で付けられてはたまらないって言ってるんだと思う。
0832デフォルトの名無しさん2016/06/20(月) 12:38:46.55ID:NsVXy02R
>>824
いや、
いやいやいや
0833デフォルトの名無しさん2016/06/20(月) 12:49:29.42ID:jXyz40Gk
前戯
本番
後戯
0834デフォルトの名無しさん2016/06/20(月) 12:56:20.02ID:uXAOqedY
VBAで組んだ代物位、仕様書見て組み直した方が早いのもあるからなあ
大体業務システムなんて形は変われど同業なら要件の幅はポイント掴めば広くないし、Javaやらでがっちり組まれたんで無い限りVBAの変数名なんてどうでも良いよ
0835デフォルトの名無しさん2016/06/20(月) 18:36:29.67ID:c3CA81WS
>>834
組み直すのはいいけど
テストがしんどいよ
0836デフォルトの名無しさん2016/06/20(月) 19:03:51.04ID:NN8WnHEw
結局、他人が書いたプログラムはどうやったてわかりづらい部分は出てくる
0837デフォルトの名無しさん2016/06/20(月) 19:54:22.76ID:CIstkdnH
vbaのコーディング規約はこうあるべきっていうものありますか?
モジュール名やサブプロシージャ名は日本語(出力開始ボタン01とか、CSVデータ取込処理とかにしてます)
スコープ範囲が広い変数はパスカルケース、定数はスネークケース
スコープ範囲が狭く、ローカルで使うものはキャメルケース、定数はスネークケース
で書いてますが、もっとこっちの方がいいというのはありますでしょうか?
0838デフォルトの名無しさん2016/06/20(月) 20:00:07.45ID:ol+yTAdu
>>837
狭い広いは変わりゆくものだからなあ
0839デフォルトの名無しさん2016/06/20(月) 20:29:34.61ID:XQmgrC5w
>>837
タブインデントは出来ない奴はコンドーム付けない奴と一緒って
加藤鷹が言ってた
0840デフォルトの名無しさん2016/06/20(月) 20:37:18.28ID:7Cuehomz
>>806
たとえばLBound,UBoundを使う場面だと、
ステップ実行の点から考えると

l = LBound(x)
u = UBound(x)
For i = l to u

とした方がトレースしやすいんだけど、

For i = LBound(x) To UBound(x)

がいいという結論になる。

他にもステップ実行時に確認しづらい方法がとられたり、
ウォッチ式を使ってストップかけられるはずのところを別の方法で実現しようとしていたり、
明らかにデバッグ機能使わない事が前提で話が進んでるんだよ。
0841デフォルトの名無しさん2016/06/20(月) 21:10:54.89ID:UXcyvThL
>>840
デバッグは何かしらやり方があるんじゃないの?
0842デフォルトの名無しさん2016/06/20(月) 23:22:53.17ID:dy8cPgWT
>>840
何か分かる気がする。

例えば外部の変数を使うのにプロパティにしとけばブレークポイントが設定出来るから
その後どこから呼ばれて使われたか分かりやすいけど、
変数として直接指定すると分かり辛くなるもんな。
10箇所くらいから呼ばれて所々ループで使われると目も当てられなくなる。
0843デフォルトの名無しさん2016/06/20(月) 23:34:20.29ID:ol+yTAdu
一般論だがやはり参照透過、すなわち変数を書き換えないのが正解かもな。(スコープの短い変数を除く)
0844デフォルトの名無しさん2016/06/20(月) 23:46:45.59ID:g4dtXF6Y
全体のコードのうちで、ステップ実行するする必要がどれだけある?
ウォッチ式でブレークさせる必要がどれだけある?

デバッグのために本来のコードの書き方変えるなんて本末転倒
どうしても必要ならデバッグ時にデバッグ用のコード入れる方がマシ
0845デフォルトの名無しさん2016/06/20(月) 23:50:19.99ID:ol+yTAdu
そらそうだ
0846デフォルトの名無しさん2016/06/21(火) 00:01:55.83ID:iRmo4DUW
>>844
ステップ実行は全体が対象になり得るが、
するするする必要はないかもな
0847デフォルトの名無しさん2016/06/21(火) 00:39:09.92ID:hwTTdrUb
>>846
ステップ実行する範囲は極微でもするするは必須だろ
0848デフォルトの名無しさん2016/06/21(火) 01:15:14.25ID:W9Ui1+ti
>>826
プロのグラマー?

ちょっとエロい
0849デフォルトの名無しさん2016/06/21(火) 02:00:22.81ID:TC+K0LSS
>>848でも、オッサンだがな
0850デフォルトの名無しさん2016/06/21(火) 04:47:58.42ID:0X3G298R
>>844
デバッグとリリースでビルトを機能がVBAにもあればいいんだけどな
0851デフォルトの名無しさん2016/06/21(火) 04:51:01.70ID:0X3G298R
訂正)ビルトを分ける機能がVBAにもあればいいんだけどな
0852デフォルトの名無しさん2016/06/21(火) 05:35:41.16ID:5vWLnQ7J
プリプロセッサは使える
#if debug then
#else
#end if
とか
0853デフォルトの名無しさん2016/06/21(火) 05:46:09.31ID:0X3G298R
デバッグの為だけに余計なコード付与するとか、それこそ本末転倒だよな。
しかもそれがVBEについてるデバッグ機能で賄える事ならなおさら。
0854デフォルトの名無しさん2016/06/21(火) 05:47:17.87ID:ymxChLe5
exeって拡張子でコンパイル出来たら素晴らしいが
excelが開発ツールとして神に等しき存在になってしまう
0855デフォルトの名無しさん2016/06/21(火) 05:50:06.40ID:J2yqWD+v
exeのコンパイル&ビルドできたら、それはもうほぼVB6なんですが・・・
VB6は神だったのか
0856デフォルトの名無しさん2016/06/21(火) 06:12:00.20ID:qHGt9edW
>>853
ログとか出力してないの?
0857デフォルトの名無しさん2016/06/21(火) 06:18:18.32ID:B7KL8DYA
タイミングの関係でブレークポイントが使えない時はDebug.Printしまくる
0858デフォルトの名無しさん2016/06/21(火) 06:28:45.49ID:0X3G298R
>>856
デバッグ時はやるけど、あれ処理重いから実際の運用時には外すだろ。
0859デフォルトの名無しさん2016/06/21(火) 06:33:03.15ID:p8YkQE1T
>>855
vb6にはexcelシート、excel関数、excelグラフなどなどが標準装備されてないから
どちらが有能かは明白
0860デフォルトの名無しさん2016/06/21(火) 07:04:36.43ID:qHGt9edW
>>858
え?外してるの?
そこは普通運用時にはログレベルで調節して最低限のログは出さない?
プログラム的に運用時にどんなバグが出たか何を手掛かりに調べてるの?
運用で使ってる人の起きた事象説明を受けるだけ?

何か凄く効率悪そう
0861デフォルトの名無しさん2016/06/21(火) 07:38:00.69ID:vJE7qstO
>>859
ExcelオブジェクトでもWordオブジェクトでも必要なら組み込んで利用できるんで標準で入ってなくても別に困らない
0862デフォルトの名無しさん2016/06/21(火) 07:45:42.03ID:qHGt9edW
>>861
困らないけどcom扱いだからObjectの解放が面倒臭い
0863デフォルトの名無しさん2016/06/21(火) 07:47:23.53ID:qY/g41BX
vbaレベルで運用時にデバッグログ吐く必要があるとか、よほど複雑なシステムかレベル低いプログラムかのどっちがだ。
0864デフォルトの名無しさん2016/06/21(火) 12:16:39.90ID:ZKKpyXo+
>>863
結構色んなところで普通に吐いてたりするからね
きっとよほど複雑なシステムなんだよ

君から見ればね
0865デフォルトの名無しさん2016/06/21(火) 12:19:12.87ID:RUL+uH0x
vbaでそんな大規模なプログラム()組んじゃう時点でレベル低いよね
0866デフォルトの名無しさん2016/06/21(火) 12:22:43.16ID:VdnNwK8D
相変わらずレベルの高い厨二討論会やねw
0867デフォルトの名無しさん2016/06/21(火) 12:36:17.00ID:qHGt9edW
そして大阪人
0868デフォルトの名無しさん2016/06/21(火) 12:41:25.71ID:qHGt9edW
>>865
大規模とは限らないよ
その仕事場の方式と言うかお作法の問題
0869デフォルトの名無しさん2016/06/21(火) 12:45:41.09ID:JNjOOJn1
VBAで大規模って、大規模の規模とやらを知らないだけだから気にしない。
0870デフォルトの名無しさん2016/06/21(火) 18:09:08.57ID:Sh/p3PtF
超素人な質問ですみません。

=INDIRECT(ADDRESS(2,2)) と =INDIRECT($B$2) は同じ意味かと思うのですが返される値が違いました。
ADDRESS(2,2)とは($B$2)ではないのでしょうか。
08718702016/06/21(火) 18:23:07.18ID:Sh/p3PtF
質問以前にここはすれ違いだと気が付きました。
探したのですが、失礼いたしました。
どなたかご誘導をいただければ。
0872デフォルトの名無しさん2016/06/21(火) 18:29:11.39ID:A2Mkn+tS
>>871
Excel総合相談所 122 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
08738702016/06/21(火) 18:36:18.68ID:Sh/p3PtF
ありがとうございます。
0874デフォルトの名無しさん2016/06/21(火) 19:47:26.21ID:0X3G298R
>>860
俺が作ってるのはインプットファイル指定したら後は自動でアウトプットされる様なタイプのものばかりだから、
どのマクロを使って、どんなファイルを指定したかさえ分かれば、だいたい再現されるよ。

途中でログを吐かないと手がかりがないマクロってどういう性質のもの?
今後、もし似たようなの作る事があったらロガーの実装を検討してみるわ。
0875デフォルトの名無しさん2016/06/21(火) 20:07:10.60ID:HsDMsaK+
ほっほお若いの
ログ出力はビジネスでは必須なんじゃよ
望む望まずに関わらずにの
0876デフォルトの名無しさん2016/06/21(火) 20:23:50.33ID:ymxChLe5
工賃で3億超えたら大規模開発
後は小物件

excelでログ出力が必要なレベルの業務アプリ作るとか驚愕だな
所詮は支援ツールだろ
1億超える物件なら考えなくもないが
そんな大規模システムで効率下げるログ出力とか嫌やわぁ
0877デフォルトの名無しさん2016/06/21(火) 20:27:29.39ID:AH0uRnVJ
億越えのVBA開発とか発狂するわ
0878デフォルトの名無しさん2016/06/21(火) 20:27:47.85ID:0X3G298R
>>875
話の流れ的に「バグ特定の為にロガーを実装する」って事だからビジネス関係ないよ。

というかVBAでビジネスってなんだろ。外注とかするのか。
マクロの外注とかあるなら異なるフォーマットの五つのファイルを組み合わせて集計と計算を行い、
在庫管理と発注リストをアウトプットするマクロの見積もりとか見てみたい。
0879デフォルトの名無しさん2016/06/21(火) 20:27:51.98ID:NeZ3bdtf
>>862
そうだっけ?
もう VB6 の環境ないから試せないけど vbs とたいして変わらなかったような気がするが

とりあえずMSは Microsoft.Office.I nterop.Excel をまともにしろよ
C# から使いたいのにマジで面倒臭すぎる
0880デフォルトの名無しさん2016/06/21(火) 20:29:57.39ID:8TPIZL80
>>874
DBでお客さんがアプリ使わずに手で入力して変な値設定したときとか。

こっちが悪くなくてもそれを証明しなければいけないから
そう言う場合は必須だよ。
0881デフォルトの名無しさん2016/06/21(火) 20:39:34.23ID:JNjOOJn1
むしろ監査に必要だから入れるしか無いんだがな。
0882デフォルトの名無しさん2016/06/21(火) 20:50:20.38ID:ymxChLe5
>>878
前あった例だと
dbから200個ぐらいあるテーブルをcsv出力して
リレーション組んでエラーデータ探したり
帳票出したりした
データ数はマチマチだけど
1テーブル当たり多くて300万件ぐらい

なぜこんなことしたかって言うと
導入したシステムがゴミクズで
お客さんがあそこは信用ならないって
損害賠償になったが
システムがないと処理しきれないから
なんか簡単に作れないかって言われて
excelで作った
0883デフォルトの名無しさん2016/06/21(火) 20:58:03.49ID:Y+YRWDXH
マクロの記録と少しの編集しか出来ない超絶初心者です。

この度、計測を自動化するという内容で取り掛かったのですがご教授いただきたく。
・マクロ開始→マイク端子からの入力待ち
・マイク端子から電圧の入力有り(サージ)
・上記の電圧をトリガーとして検知し、1秒後に別の計測ソフトをマクロで操作
・計測ソフトの保存まで終わったら再度トリガー待機状態
というフローを考えているのですが、マイク端子からの入力を検知するコードがググっても出てきませんでした。
可能であればそれらのコードか参考になるHP等が知りたいです。
0884デフォルトの名無しさん2016/06/21(火) 21:03:35.12ID:JKCS+g1B
>>883
ほう、それをExcelで?
0885デフォルトの名無しさん2016/06/21(火) 21:04:04.51ID:WT0LkGFc
俺も初心者に毛の生えた程度のもんだけど、それ、そういうレベルでやるのって無理と言って断ったほうがよくね?
0886デフォルトの名無しさん2016/06/21(火) 21:07:56.18ID:BjtZA0F4
エラい人に指示されてるのなら1分でも早く無理って報告した方がいいよ。
趣味でやってるんなら面白そう。頑張って。
0887デフォルトの名無しさん2016/06/21(火) 21:13:25.74ID:ymxChLe5
Windows apiで出来そうだが
やったことないからなんとも

マイク関連のapiを利用するか
マイク監視関連の別アプリと連動させるか

どちらにせよ
excelの領域を超えてosの機能を使う感じかな?
0888デフォルトの名無しさん2016/06/21(火) 21:35:37.09ID:AH0uRnVJ
vbでマイク入力から波形出してんのあったけど使えんじゃね?

http://park22.wakwak.com/~sakura/cgi-bin/index.cgi?mode=view&page=25&back=mode%3Dlist%26nextpage%3D3

ライブラリはwin32apiかな
0889デフォルトの名無しさん2016/06/21(火) 21:36:59.24ID:TC+K0LSS
ラボビュー買ってもらったほうがいいんでね?
0890デフォルトの名無しさん2016/06/21(火) 23:25:52.02ID:MK9xCASB
>>839
タブインデントできないとか、そんなレベルの人見たことないけど
Excelのマクロ使う程度の人ならいるか…
0891デフォルトの名無しさん2016/06/21(火) 23:37:03.14ID:JKCS+g1B
>>890
タブインデントって何?
まさかタブでインデントすることじゃないよね?
0892デフォルトの名無しさん2016/06/21(火) 23:43:39.47ID:Y+YRWDXH
>>884
ですね、今のとこ自分の手立てとしては、というとこですが
>>885>>886
不可能だということも選択肢に入れてますが、最終手段で考えてます。現状はマンパワーなので労力使えばいいだけなので。本件とは矛盾してしまいますが
>>887
オーディオコントロールとやらに近いと思うのでos制御領域に入ってくるかと予想はしています
>>888
apiを使える程のC言語の造形が深くありません。なるべくvbaで済ませたいとは思いますが…参考urlありがとうございます。
>>889
人件費以外掛けるな、との内容だったのですが一番削る部分で何を言ってるんだ?というのは当方の団塊上司なのでお察し下さいw
0893デフォルトの名無しさん2016/06/22(水) 00:16:14.41ID:Q6ImdGoP
団塊上司なんてまだいるの?
0894デフォルトの名無しさん2016/06/22(水) 00:47:00.98ID:m4nZpr6f
出来ないとは思わないけど、
出来ると思ったのが凄い。
日本語変だけど、とにかくそんな感じ。
0895デフォルトの名無しさん2016/06/22(水) 01:57:59.10ID:o7367I2f
>>892
>なるべくvbaで済ませたいとは思いますが…

無理、Win32APIを使うか、それ専用のライブラリがあればそれを使うしかない
0896デフォルトの名無しさん2016/06/22(水) 02:06:10.04ID:wvGXF4sC
>>892
その無能そうな男根上司の人件費を削れと
更に上の方に進言してみては如何でしょうか
0897デフォルトの名無しさん2016/06/22(水) 06:10:12.36ID:xpmo0JmU
男根上司
なぜそんな予測変換されたんですかねぇ

そういやexcelって音声入力出来たような
中身はapi使ってるだろうけど
その辺をマクロで動かせればマイク入力検知出来るかもな
多分マイク入力した内容がセルに入力されるから
セルの中身を監視すればマイク監視になるかも?
0898デフォルトの名無しさん2016/06/22(水) 11:04:13.30ID:pdf2AYpo
「VBA 有名ライブラリ」でくぐったらmougってところに飛ばされた。
ここはなんなんだ?
0899デフォルトの名無しさん2016/06/22(水) 12:41:22.71ID:d8X+Mz2Y
人に聞く前に自分で調べて見ろよ w
0900デフォルトの名無しさん2016/06/22(水) 16:10:26.61ID:RYmYe0U+
http://up.mugitya.com/img/Lv.1_up93853.jpg
こうしたいのですが

Sub test()
For x1 = 1 To 21
z1 = Columns("B").Find(What:="1", LookIn:=xlValues).Row
z2 = Columns("B").Find(What:="4", LookIn:=xlValues).Row
Cells(x1, 3) = z1
Cells(x1, 4) = z2

??????? <- この部分がわかりません 

Next
End Sub
簡単そうなのに書けない
どなたか教えてくれませんか
よろしくお願いします
0901デフォルトの名無しさん2016/06/22(水) 16:30:58.68ID:k28/2S7E
>>900
検索範囲を変える必要がある

For x1 = 2 To 21
  Set cell = Cells(Int((x1 - 2) / 4) * 4 + 2, 2)
  z1 = Range(cell, cell.Offset(3, 0)).Find(What:="1", LookIn:=xlValues).Row
  z2 = Range(cell, cell.Offset(3, 0)).Find(What:="4", LookIn:=xlValues).Row
  Cells(x1, 3) = z1
  Cells(x1, 4) = z2
Next
0902デフォルトの名無しさん2016/06/22(水) 16:37:52.57ID:fp5ZaXif
>>901
offset(3, 0)て必要だっけ?
0903デフォルトの名無しさん2016/06/22(水) 16:40:09.59ID:fp5ZaXif
>>902
元の仕様がはっきりしてないからそれも有りか
行こうで最初に見つかった1と4の行を書くのかと思った

レンジ内で見つからなければ空白にしておくのかな
0904デフォルトの名無しさん2016/06/22(水) 16:45:48.18ID:onGVTzQV
>>895
win32apiについて調べました。osの制御領域にアクセスする関数と理解しましたが…恐らく違うと思いますが。
ただ、wavein で入力出来るのは把握しましたが録音は不要なので録音したデータの消去?メモリの開放?が必要と感じました。
apiを使った場合の手段をお持ちでしたらご教授いただけませんか?

>>896
お前が消えれば有能な新人3人雇えるぞ!と伝えたんですが笑ってごまかされましたw
09059002016/06/22(水) 17:14:17.97ID:RYmYe0U+
>>901
ありがとうございました〜
0906デフォルトの名無しさん2016/06/22(水) 17:50:50.12ID:k28/2S7E
>>902
cellは検索範囲の一番上の一つのセル
なので、検索範囲はcellからcell.offset(3, 0)まで
0907デフォルトの名無しさん2016/06/22(水) 19:21:27.54ID:GzMeTh22
>>904受講料と往復の飛行機チケットと温泉旅館1週間あればご教授致します
0908デフォルトの名無しさん2016/06/22(水) 20:09:00.86ID:ODql0kXP
金は払いたくないが成果だけは欲しいとか言う盗人猛々しい会社の案件は嫌だなあ
0909デフォルトの名無しさん2016/06/22(水) 20:17:12.73ID:Otf7UlaS
企業はボランティアじゃねえから
社畜はボランティアだけどな
0910デフォルトの名無しさん2016/06/22(水) 21:31:32.97ID:e7QNeyZN
最近は職場で64bit版Excelの入ったPCが混在してきたからVBAでWin32API使いたくないわ
Declare文をいちいち #If で分岐して2つ書くのめんどくせえ
0911デフォルトの名無しさん2016/06/22(水) 21:56:02.90ID:Q6ImdGoP
それが必要なAPIってかなり少数?
0912デフォルトの名無しさん2016/06/22(水) 22:00:57.10ID:xMnnl7vv
よっぽどの理由がない限り、32bit版でインストールしなさいって
MS公式サイトのどっかに書かれていなかったっけ?
0913デフォルトの名無しさん2016/06/22(水) 22:10:05.14ID:Q6ImdGoP
自分は両方の環境使ってるけど特に支障も不便もない。
さっきの話じゃないけどLongとLongPtrの使い分けがまれに必要になるくらいだし。
アドインなんてそんなに使うもんでもないし。
0914デフォルトの名無しさん2016/06/22(水) 23:55:01.23ID:Q6ImdGoP
間違えた

LongとLongPtrの使い分けが必要なのは
2010以前のOfficeとそれ以降の区別のためだった
0915デフォルトの名無しさん2016/06/23(木) 00:33:26.94ID:5Le54zsV
画面の下の方に、
グラディウスのパワーアップゲージみたいなのを表示したいんですけど、
やっぱApiじゃないとだめっすね。
0916デフォルトの名無しさん2016/06/23(木) 01:26:28.46ID:AeympkFY
>>893
たしかに団塊は70超えているよな。
だから団塊ジュニアだろうね。
団塊ジュニアの年長組はバブル世代でアクティブ馬鹿が多いから超やっかいだよ。
年少組は氷河期世代だから、中小企業にも普通ではあり得ないぐらいの高学歴優秀人材が入っていて、
最近の緩い世代に指示を出したときに、部下が指示を理解できないほど無能だと理解できない人もいる。
0917デフォルトの名無しさん2016/06/23(木) 07:42:55.00ID:P65xBEPl
>>915
さあ。作り方によりけりだから何とも。
0918デフォルトの名無しさん2016/06/23(木) 08:17:04.29ID:6ajXjAAO
グラディウスのパワーアップゲージがどんなのか分からないから
スルーするわ
0919デフォルトの名無しさん2016/06/23(木) 19:13:38.85ID:ORCEW442
すんまそ、誰か教えてください。

エクセルで7つ連続データがある場合色を変える条件書式を入れたいんだけど、
どうすればよい?

要は横長カレンダーで、
7連続勤務してたら赤いセルにしたいわけです。
条件書式苦手で簡単なものしかできないのでついマクロで組みたくなるんですが、
条件書式でするのがスマートかなと。

わかる達人さんいますか?
0920デフォルトの名無しさん2016/06/23(木) 19:24:46.89ID:tLPsEa5b
>>919
うん、条件付き書式でやるのがスマートだね。
そしてそうなるとVBAスレではスレ違いになるんだ。

例えば着色対象データが変動するなら、
それに条件付き書式を設定して行くというならVBAの対象になるけどね。

それも自動記録見ればどうやるか大体分かるんじゃないかな。
0921デフォルトの名無しさん2016/06/23(木) 19:40:37.78ID:ORCEW442
>>920
スレ違いなのはすいません
自動記録?

VB.netはよくやりましたが、
エクセルVBAは今まではじめてでエクセル独自の機能に詳しくないのですが、

7つ連続したら、の部分と$の部分が難しいと思ってて、
数式を書いてもどう全てのセルに適応させていいかが難しいです。
自動記録だと単にセルに色をつけます。
だけしかマクロに記述されないと思うんですが、違うの?
0922デフォルトの名無しさん2016/06/23(木) 19:43:02.54ID:ORCEW442
みつけた

http://m.chiebukuro.yahoo.co.jp/detail/q14104677054

これでいいのかな?
もっとスマートな方法あります?
0923デフォルトの名無しさん2016/06/23(木) 21:22:21.54ID:cLKZIR8E
>>919
「連続データ」の内容をもうちょっと具体的に書いて
「出勤」という文字列が連続、とか
0924デフォルトの名無しさん2016/06/23(木) 21:39:49.58ID:4odcvt18
countblankで自セルを含む前7セルを引数にして、1以上なら色付けるとか
0925デフォルトの名無しさん2016/06/23(木) 21:41:46.90ID:4odcvt18
ごめん、0なら色付ける、だな。条件付きしょしきで。
0926デフォルトの名無しさん2016/06/23(木) 21:44:09.24ID:ORCEW442
>>923
本当は色々あるけど、とりあえずは
出勤なら1
休みなら空白です。
A列が1日として、そこから右に
1が7つ連続で入っていたらその部分のみ赤に。

要は7連勤はダメですよ、の印を自動化したい。
0927デフォルトの名無しさん2016/06/23(木) 21:45:41.71ID:ORCEW442
>>924
前7セルはどう取ります?
offset?
0928デフォルトの名無しさん2016/06/23(木) 22:05:04.93ID:cLKZIR8E
>>926
それならSUMで合計して7になればいいわけだから、もっと簡単に書けると思うよ
ていうか、前月と来月も連続して調べないと連勤かどうか判定できないじゃん
0929デフォルトの名無しさん2016/06/23(木) 22:23:06.74ID:ORCEW442
>>928
その辺りのことは関係ないからハショってるけどご心配なく

あとSUMで7になればというのはわかるんだけど、
そこからどう条件書式にあてはめるかがわからなくて。

例えばF1に対してA1:F1のサマリーが7ならそこまで赤。という条件書式を入れるとする。
それをどう31日分までコピればいいのかわからなくて、
0930デフォルトの名無しさん2016/06/23(木) 22:25:21.53ID:ORCEW442
>>928
半月シフトなんで常に前15日の分と足してあるんだよ。
提出シフトチェックなので来月分はいらない、というかない。
0931デフォルトの名無しさん2016/06/23(木) 22:35:04.87ID:5hMmurD9
>>929
この場合の最低限の対応でいいんなや、そのままF1セルをG1以降に貼り付ければできあがりじゃないか?
0932デフォルトの名無しさん2016/06/23(木) 22:43:58.10ID:mfKhDDiM
>>929
えっとこのすれ EXCEL VBA質問スレだけど
条件付き書式に適用する VBAプロシージャを作ればいいの?
EXCELのビルトイン関数じゃなくて
0933デフォルトの名無しさん2016/06/23(木) 23:20:24.52ID:ORCEW442
>>931
それでいけますか?
いちどやってみますが、そういうのやってみてうまくいきませんでした
0934デフォルトの名無しさん2016/06/24(金) 00:04:12.12ID:AlMzuoNq
>>915
懐かしいなオイ!
上上下下左右左右BAだったっけ?w
オレはその裏技使わなくても表裏クリア出来たけどな(自慢)
0935デフォルトの名無しさん2016/06/24(金) 00:10:57.49ID:2UsOiKaq
>>934
爺さんそれは良かったな
0936デフォルトの名無しさん2016/06/24(金) 00:48:57.17ID:+Rdmt4kb
表裏って、あなた。
2周目=裏面という表現の方が懐かしいわ。
0937デフォルトの名無しさん2016/06/24(金) 00:52:02.07ID:AlMzuoNq
>>935
それを知ってるあんたモナー

>>936
え?
そうだっけw
0938デフォルトの名無しさん2016/06/24(金) 00:52:29.28ID:+Rdmt4kb
>>918
古いパソコンのF1とかF2とか、
そんなイメージ。
0939デフォルトの名無しさん2016/06/24(金) 01:07:27.00ID:KnUE2FZK
>>933
書式は25日まで設定すればいいんだから(25〜31日が最後の7日間)
A1〜Y1を選択した状態で条件付き書式を1つ入れれば自動的に全セルに適用される
0940デフォルトの名無しさん2016/06/24(金) 08:57:55.46ID:iyC6NAOv
>>939
ありがとう。
まずは選択→条件書式→サマリー(この時A:Fのサマリーだけでいけますか?どこをサマリーしますか?$の固定を抜けば勝手に列はスライドしてエクセル側が判定してくれるのかな?
このやり方だと、A:Fの合計が7の時、A:Yの全てが赤になりませんか?)

A:Fのサマリーの条件書式をA〜Fを指定して作成→ラストまでコピー
↑自分的にはこういうやり方かと思ってました。
0941デフォルトの名無しさん2016/06/24(金) 09:02:27.83ID:KnUE2FZK
>>940
いいから聞く前にいっぺんやってみ
0942デフォルトの名無しさん2016/06/24(金) 09:03:14.54ID:KnUE2FZK
A:Fだと6日間になるけど
0943デフォルトの名無しさん2016/06/24(金) 09:57:37.31ID:I5J50lMn
>>929
コピペとかしないで、条件付き書式の適用先を1から31日までの範囲にして(選択して)数式を入力すればいい

=SUM(RC:R[-6]C)=7

条件付き書式の数式を考えるときはA1形式だとややこしいからR1C1にするのおすすめ
0944デフォルトの名無しさん2016/06/24(金) 14:38:11.29ID:iyC6NAOv
>>943
他のシートはいろんな人が使用してるため、その形式はブック全体だと思うので厳しいですね…


やっぱりとりあえずやりましたがうまくいきません。

使用変更で、×と空白以外を出勤とする。
連勤の数は外出し
となりました。
数の外出しも×と空白以外もいいんですが、
条件書式の基本的なところがわかってないみたいで、厳しいです。
$は抜くんですか?
固定ですか?
0945デフォルトの名無しさん2016/06/24(金) 15:00:42.59ID:I5J50lMn
>>944
R1C1にして条件付き書式設定した後にA1に戻せばいいだけの話だろ

連勤日数が入力されてるセルに色つけるなら数式を入力せずともリボンメニューのセルの強調表示ルールに"指定した値より大きい"があるでしょ
0946デフォルトの名無しさん2016/06/24(金) 18:00:51.09ID:iyC6NAOv
>>945
そうですね。そうしたらいいんですね。


あと、連勤日数がセルに記入されてるわけではないです。
セルには、9-18とか、会議、とか、
その日の勤務時間が入力されてるのでそれは使えないですね。
せるが連続して×ないしは空白のない7日連続になった場合に、セルの色を変えたいのです。
0947デフォルトの名無しさん2016/06/24(金) 22:13:06.84ID:AYTMSqmc
質問です。
windows7
excel2010

100行ほどのリストがexcelで渡されます。

1行目はフィールド名が20項目ほど並んでいます。
1列1項目。

2行目からはダーッとデータが入っていて、100行目まで。
各セルのデータは入っていたり、空だったり。

「G列からT列まで、セルに何も値が入っていなければ行全体を削除」というプログラムを組んでいます。

データが存在する最終行を取得して、最終行から上に向かって繰り返し処理を行います。

繰り返し処理の内容は
・G〜T列に値が入っているかチェック。チェックして値が入っていなければフラグを立てます。
・フラグが立っていればその行は削除。立っていなければフラグを初期化して次の行へ。

成功したかと思ったのですが、どうしても最後(下から上への処理なのでつまりは2行目)の行が判定されません。
この解決方法を教えていただけたらと思います。
09489472016/06/24(金) 22:14:45.53ID:AYTMSqmc
ソースはこちら。
Dim i As Long

Sub DelRow()

Dim c As Range
Dim blnFlag As Boolean

blnFlag = False

'最終行iから上に進む
For i = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row To 1 Step -1

'G〜Tを判定。ワイルドカードで検索し何らかの文字があればblnFlagをTrueにする。
For Each c In Range(Cells(i, "G"), Cells(i, "T"))

'値が入っていたらTrue
If c.Value <> Empty Then
blnFlag = True
End If

Next c


If blnFlag = False Then
Range(i & ":" & i).Delete
Else
blnFlag = False
End If
Next i

End Sub
09499472016/06/24(金) 22:16:08.97ID:AYTMSqmc
↑すみません、947の説明で修正。
繰り返し処理は「何かしらの文字があれば」フラグを立てる、でした。

よろしくお願いいたします!
0950デフォルトの名無しさん2016/06/24(金) 22:50:56.37ID:sry2i9xY
>>どうしても最後(下から上への処理なのでつまりは2行目)の行が判定されません。
何も入ってないのに削除されないって事?

空セルに見えて 実は 半角/全角のスペースが入ってるとかない?
0951デフォルトの名無しさん2016/06/24(金) 23:11:09.46ID:PB/SKySK
>>948
If blnFlag = False Then
Range(i & ":" & i).Delete
Else
blnFlag = False
End If



If blnFlag = False Then
Range(i & ":" & i).Delete
End If
blnFlag = False

にすべき
0952デフォルトの名無しさん2016/06/24(金) 23:32:31.95ID:JUbaOn5Z
問題の行でブレイクしてデバッガでステップ実行してみたら?
0953デフォルトの名無しさん2016/06/24(金) 23:36:42.13ID:+Rdmt4kb
For Eachなんてしなくても、
G & H & I & …って全部繋げて、
そいつが = "" なら削除でよくね?
0954デフォルトの名無しさん2016/06/24(金) 23:58:44.99ID:jYe71Mmy
>>953
それが圧倒的に判り易いやw
0955デフォルトの名無しさん2016/06/25(土) 00:12:12.78ID:zTTmLUZY
> If c.Value <> Empty Then
> blnFlag = True
> End If

どうでもいいけど、ここをEmpty で判定すると
数値型で 0 が入力されてても空と見なされるね
0も空と見なすなら別にいいけど・・・
0956デフォルトの名無しさん2016/06/25(土) 00:57:11.91ID:zTTmLUZY
>>955
ちなみに値がEmpty値かどうか正確に判定したいなら
以下のようにすべき、これならEmptyの暗黙の型変換は無くなる

> If c.Value <> Empty Then



If Not IsEmpty(c.Value) Then
0957デフォルトの名無しさん2016/06/25(土) 11:05:53.81ID:zMiNU6un
質問です。
拾い物なんですが下記のコードをセルA1だけでなく、シート内全セルに変更したいのですがうまく出来ません。助けて下さい。

Sub 文字の修正()

If Range("A1").Find(What:="株式会社") Is Nothing Then
Moji = Range("A1").Value
Range("A1") = "株式会社" & Moji & "御中"
End If

End Sub
0958デフォルトの名無しさん2016/06/25(土) 11:12:29.15ID:LSp3Y+eC
>>957
Sub 文字の修正()
Dim Unko as Range

If Range("A1").Find(What:="株式会社") Is Nothing Then
Moji = Range("A1").Value
Range("A1") = "株式会社" & Moji & "御中"
End If

End Sub
0959デフォルトの名無しさん2016/06/25(土) 11:16:30.79ID:LSp3Y+eC
>>957
Sub 文字の修正()
Dim Unko As Range
For Each Unko In ActiveSheet.UsedRange
If Unko <> "" And InStr(Unko, "株式会社") = 0 Then
Unko = "株式会社" & Unko & "御中"
End If
Next Unko
End Sub
0960デフォルトの名無しさん2016/06/25(土) 11:19:09.76ID:DPbC+aT1
お前ら下らない答え書いてる余裕があるなら
次スレぼちぼち立ててくれよ
0961デフォルトの名無しさん2016/06/25(土) 11:21:30.82ID:LSp3Y+eC
>>960
Sub 抹殺()
Dim Aho as Respond
Set Respond = ActiveThread.Respond(960)
Respond.Delete
End Sub
0962デフォルトの名無しさん2016/06/25(土) 11:22:07.48ID:LSp3Y+eC
x Respond.Delete
o Aho.Delete
0963デフォルトの名無しさん2016/06/25(土) 11:22:33.41ID:LSp3Y+eC
x Set Respond
o Set Aho
0964デフォルトの名無しさん2016/06/25(土) 11:32:10.33ID:zMiNU6un
>>959
出来ましたありがとうございます!

最初うんことか書いてあるから動かないかと思いました。
0965デフォルトの名無しさん2016/06/25(土) 14:39:50.13ID:GSPW6H1w
「株式会社」が前に来るとは限らない。
そもそも株式会社ではないことも多い。
どうするの?
0966デフォルトの名無しさん2016/06/25(土) 21:44:50.71ID:zNM5hCEC
>>965
オレはあくまでも例題と思ったがな・・
0967デフォルトの名無しさん2016/06/25(土) 21:55:37.21ID:6Lp5FHz7
どっちにしろ、その時々で変えればいいし何の問題も無い。
0968デフォルトの名無しさん2016/06/25(土) 22:10:13.22ID:OxRz95e1
>>965
よい観点
0969デフォルトの名無しさん2016/06/26(日) 00:11:16.94ID:bWC1XfD2
書いていない例外については質問者が応用で対処すればよろしいでしょ。こっちがすべて面倒見ないといけない
わけでもなし
0970デフォルトの名無しさん2016/06/26(日) 01:52:39.72ID:wrV5aHGV
相手の希望をそのまま回答するのは3流
相手の希望の裏にある本当に解決したいことを見つけるのが2流
相手自身が気がついてさえいない相手にとって有効なソリューションを示すのが1流
0971デフォルトの名無しさん2016/06/26(日) 02:39:37.45ID:bX5XM7mI
次スレ
Excel VBA 質問スレ Part42©2ch.net [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1466876143/
0972デフォルトの名無しさん2016/06/26(日) 02:47:40.29ID:DVGuk9ay
○○さんに頼むと
当初の予定よりもカネも時間も桁違い
と陰口叩かれるんですね。わかります。
0973デフォルトの名無しさん2016/06/26(日) 02:52:28.77ID:TQjwgA3H
誰がconstか述べよ
const char***
char ***
char const***
char *const**
char const*const**
char **const*
char const**const*
char *const*const*
char const*const*const*
0974デフォルトの名無しさん2016/06/26(日) 02:52:46.64ID:TQjwgA3H
誤爆すんません
0975デフォルトの名無しさん2016/06/26(日) 08:25:22.50ID:nJ28NdtK
>>973
typedefすりゃだいたいわかる
0976デフォルトの名無しさん2016/06/26(日) 09:01:04.18ID:0rtfUKXl
>>972
運用者目線に立って
あらゆることを考慮して
使い易さを考えた結果として
高額見積りした方が現場の人間には信用されるよな
経理は金額で人を選んで
その値段で受注した奴に全責任を負わせるだけのクズが多い

何も考えずに出された仕様から
簡単な低額見積りした場合
そんな例外は考慮してません
そんな運用は考慮してません
そんな既存バグは考慮してません
契約範囲外です
ってなるんだけど
やって貰わないと困るとか
この契約書には例外、運用、既存バグについての想定は書かれていないとかさ
結局やることになって
仕組自体を一からやり直さないといけなかったり
既存バグが無限に湧いてきたりはよくある

そして揉めに揉めて全員損する
無駄が多過ぎる
0977デフォルトの名無しさん2016/06/26(日) 10:20:33.30ID:0Y1q2sek
>>976
その辺考慮するのは分かるけど
普通何でもかんでも対応するんじゃなくて
先にお客さんと話しあって固めない?
一流とか二流とか言う前に常識として
0978デフォルトの名無しさん2016/06/26(日) 10:58:29.69ID:Y4p6Hgz2
考慮外のことに対応するコストについて第三者からは規模の大小がわからないし、特に顧客はプアな感覚しか持っていない。
「こんなのは簡単でしょ」、というのと「ここの作り直しはどえらいことだ」というのが逆だったりする。
話し合わずに感覚で勝手に判断するんだよね。
0979デフォルトの名無しさん2016/06/26(日) 11:00:17.21ID:I8EsIBnk
たかがエクセルマクロに「ソリューションを示す」てwwww
バカのシステム屋ごっこもここに極まれり!やなwww
0980デフォルトの名無しさん2016/06/26(日) 11:06:20.83ID:abwRoDQE
大抵の仕事はソリューションを示すことが求められるけどな
0981デフォルトの名無しさん2016/06/26(日) 11:11:09.05ID:I8EsIBnk
>>980
大抵の仕事にはソリューション()が元からあるわwww
ソリューション()もないのに何の仕事した気になっとんねんバカ丸出しやんお前wwww
0982デフォルトの名無しさん2016/06/26(日) 11:18:00.25ID:abwRoDQE
>>981
流れ的に下流工程の話じゃないだろ
0983デフォルトの名無しさん2016/06/26(日) 11:21:16.46ID:I8EsIBnk
>>982
なんで突然下流工程とかwwww
バカなんやからもうやめろ恥ずかしいでw
0984デフォルトの名無しさん2016/06/26(日) 11:31:07.00ID:qLHqrl/u
日本語で普通に「解決策」って言えばいいだけ
0985デフォルトの名無しさん2016/06/26(日) 11:50:58.57ID:Y4p6Hgz2
思い込みを抱えたまま話し合ってもこういうふうに無駄に終わる。
0986デフォルトの名無しさん2016/06/26(日) 13:20:12.03ID:QNHd0b5c
うめ
0987デフォルトの名無しさん2016/06/26(日) 13:24:14.15ID:I8EsIBnk
>>985
思い込みなんぞ人間誰にでもあるもんや
無駄に終わるんはお前自身が思い込みを抱えこんどるのに気がついてないからやでw
0988デフォルトの名無しさん2016/06/26(日) 13:52:14.42ID:0+Or/a+e
医者「こんなになる前になんでもっと早く病院に来なかったの」
患者「ほっといてもすぐ治ると思ったのに…グスッ」
0989デフォルトの名無しさん2016/06/26(日) 15:31:13.87ID:bWC1XfD2
ID:wrV5aHGVがクソ社畜道を頑張ってくれ
0990デフォルトの名無しさん2016/06/26(日) 15:50:18.08ID:nJ28NdtK
札束
0991デフォルトの名無しさん2016/06/26(日) 17:30:44.05ID:SfsrMLBW
マクロ付きのエクセルファイルを動かしたいのですが、

”マクロを実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。”
というエラーメッセージが出てきます。

エクセルのオプション画面で、セキュリティセンターでマクロの設定を見ると、マクロ有効の設定になっています。
原因がさっぱりわかりません。詳しい人いましたら、教えてください。

Excel2010です。
0992デフォルトの名無しさん2016/06/26(日) 17:51:27.04ID:MWzvQhZg
>>991
拡張子
0993デフォルトの名無しさん2016/06/26(日) 17:58:09.36ID:GKe9+Aa3
拡張子はxlsmなの?
0994デフォルトの名無しさん2016/06/26(日) 20:03:53.79ID:SXF7JZZI
うめ
0995デフォルトの名無しさん2016/06/26(日) 20:50:40.78ID:Qa1v+81y
>>987
大阪の犯罪率が高いのも
在日率が高いのも
ナニワ金融道なのも
気持ち悪いのも
みんなの思い込みだから気にすんな
0996デフォルトの名無しさん2016/06/26(日) 22:11:05.76ID:GUa3g0fP
>>992>>993
拡張子は大丈夫です。
さっぱりわかりません。
0997デフォルトの名無しさん2016/06/26(日) 22:34:16.84ID:MWzvQhZg
>>996
Shift押しながらファイル開いてみて
0998デフォルトの名無しさん2016/06/26(日) 22:43:19.24ID:GUa3g0fP
>>997
Shift押しながらやってみましたが駄目でした。
0999デフォルトの名無しさん2016/06/26(日) 22:46:37.88ID:uc+/xKju
>>991
そのマクロはどこに入っていて、何から実行しようとしているのか
1000デフォルトの名無しさん2016/06/26(日) 22:51:36.47ID:OlUQYls6
次スレ
Excel VBA 質問スレ Part42©2ch.net [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1466876143/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 60日 18時間 39分 50秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。