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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2016/06/26(日) 02:35:43.31ID:bX5XM7mI
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

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

※関連スレ
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/06/26(日) 17:25:47.25ID:SfsrMLBW
マクロ付きのエクセルファイルを動かしたいのですが、

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

エクセルのオプション画面で、セキュリティセンターでマクロの設定を見ると、マクロ有効の設定になっています。
原因がさっぱりわかりません。詳しい人いましたら、教えてください。
0003デフォルトの名無しさん2016/06/26(日) 19:16:49.04ID:mqI2QKIH
エクセルのマクロがすべて動かなくなりました。「オートメーションエラー例外が発生しました」と言うメッセージが全てで出てきます。
pcの容量なのか、WindowsUpdateの問題なのかわかりません。同様の症状が出ている方はいませんか。また、解消の方法がわかる方がいらっしゃれば教えてください。
0004デフォルトの名無しさん2016/06/26(日) 19:34:43.07ID:abwRoDQE
どっちも読み取り専用になってんじゃないの?
0005デフォルトの名無しさん2016/06/26(日) 20:42:17.49ID:bX5XM7mI
>>2
マクロファイルが壊れたか、メモリに収めてるものが壊れたんじゃないかな。

ブレークポイントで止めてどこで落ちるか確認しようとすると
そのまま落ちずに実行されて二度とそんなメッセージも出なくなるケースもあるって
以前どこかで読んだような記憶がある。
0006デフォルトの名無しさん2016/06/26(日) 22:05:52.82ID:wrV5aHGV
なんかググったらアドインの分析ツールのチェックがついていたのを外したら動いたってのを見たぞ。
0007デフォルトの名無しさん2016/06/26(日) 22:09:29.55ID:GUa3g0fP
>>6
KWSK教えてください。
0008デフォルトの名無しさん2016/06/26(日) 22:53:11.91ID:GUa3g0fP
>>999
もともとマクロの入っているエクセルファイルです。
0009デフォルトの名無しさん2016/06/26(日) 22:53:48.03ID:x0eF/DGC
マルチはスルーでいいよもう
0010デフォルトの名無しさん2016/06/26(日) 22:56:06.43ID:Y4p6Hgz2
マチルダったのか
0011デフォルトの名無しさん2016/06/26(日) 23:06:46.02ID:GUa3g0fP
>2です。
藁にもすがる思いでおたずねしています。
スルーせずに教えてください。
0012デフォルトの名無しさん2016/06/26(日) 23:57:52.04ID:uc+/xKju
>>8
ボタンからの実行?
マクロ名とか間違ってるんじゃない
VBA以前の問題だな
0013デフォルトの名無しさん2016/06/26(日) 23:59:22.63ID:Y4p6Hgz2
単純にわからないんじゃないだろうか
0014デフォルトの名無しさん2016/06/27(月) 00:02:35.50ID:eKq+X1Sf
>>12
ボタンから実行を試みると、
”マクロを実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。”
というエラーメッセージが出てきます。
0015デフォルトの名無しさん2016/06/27(月) 00:04:17.39ID:qbYpTG1Q
Excelファイル自体をコピー防止する良い方法はありますか?
https://groups.google.com/forum/m/#!topic/microsoft.public.jp.excel/wjpT-d7G4zs
0016デフォルトの名無しさん2016/06/27(月) 00:11:16.55ID:bq2sokxu
>>15
それは邪悪なことで、なんでそんなことをするんだ!?

という素朴な疑問を解消してからじゃないと回答はつかないんじゃないだろうか?
0017デフォルトの名無しさん2016/06/27(月) 00:13:22.34ID:O45ngdTG
>>15
ない
開けないようにするなら暗号化
0018デフォルトの名無しさん2016/06/27(月) 00:14:25.15ID:O45ngdTG
>>14
ファイルアップロードして
0019デフォルトの名無しさん2016/06/27(月) 00:32:28.45ID:eKq+X1Sf
残念ながらアップロードは無理です。
0020デフォルトの名無しさん2016/06/27(月) 00:39:51.09ID:5wgNRJgB
VBAが分からない初心者だな
スレ違いだわ
0021デフォルトの名無しさん2016/06/27(月) 00:42:07.48ID:eKq+X1Sf
>>20
初心者です。アップロードの仕方ってあるんですか?
0022デフォルトの名無しさん2016/06/27(月) 00:43:56.11ID:pYeY087O
初心者なら いっその事
MSのアンサーディスクへ相談してみたら?
俺一度お世話になったけど リモート接続して色々確認してくれた
(マウス動かしてないのに ぐりぐり マウスカーソル動いて おもろかったww)

もし
アンサーディスクで解決しない問題ならここでも無理じゃないかな?
0023デフォルトの名無しさん2016/06/27(月) 00:49:59.91ID:eKq+X1Sf
他のスレで、MSのアンサーディスクのWEB教えてもらいましたが、
どうやらマイクロソフトが作ったものではないエクセルファイルのトラブル
シューティングはやってくれなさそうです。
0024デフォルトの名無しさん2016/06/27(月) 00:51:40.44ID:O45ngdTG
>>21
http://www.dotup.org/
0025デフォルトの名無しさん2016/06/27(月) 00:53:48.76ID:pYeY087O
>>23
え・・・マルチなの 回答して損した
0026デフォルトの名無しさん2016/06/27(月) 01:04:28.56ID:eKq+X1Sf
>>25
MSのアンサーディスクなんて誰でも気づくこと。
あなた自身は何の回答もしていない。まあ、回答できないのでしょうが(苦笑)
“Shame on you!”
0027デフォルトの名無しさん2016/06/27(月) 01:07:15.48ID:pYeY087O
つか他のスレで聞いてるならそっちでやれば?
0028デフォルトの名無しさん2016/06/27(月) 01:08:39.38ID:eKq+X1Sf
大上段に構えて、「質問スレ」とは笑止千万。
”Excel VBA についてお話しするスレ”くらいにトーンダウンしたらどうだろうか?
0029デフォルトの名無しさん2016/06/27(月) 01:09:22.10ID:ZdQF56NQ
>>25出来ない、遣らない、詳細伝え無い
挙げ句の果てには、罵倒しやがる
最低な野郎だから相手すんなよ

俺も回答して損したわ
0030デフォルトの名無しさん2016/06/27(月) 01:09:30.17ID:nixI/AJ7
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/920-
0031デフォルトの名無しさん2016/06/27(月) 01:12:03.31ID:pYeY087O
>>28
ここID出るスレだって 分ってる?

俺を罵倒するのは分るけど
スレ自体を否定して まともな回答あると思う? www
0032デフォルトの名無しさん2016/06/27(月) 01:13:23.02ID:ZdQF56NQ
>>31だから、相手すんなよ。荒らされるで?
0033デフォルトの名無しさん2016/06/27(月) 01:16:20.60ID:XROdUlq7
あいつ結構痛いところついてくるよな
確かに俺たち全然回答できてないし
あいつの言ってることまともだし
あいつの言う通りに「Excel VBAを語らうスレ」
くらいに次からタイトル変更しようぜ!!
0034デフォルトの名無しさん2016/06/27(月) 01:19:41.26ID:eKq+X1Sf
私はスレを荒らすつもりはありませんし、ただ困っていたので質問しただけです。
その質問に皆さんは回答できなかった。ただそれだけの話ではありませんか?
0035デフォルトの名無しさん2016/06/27(月) 01:20:56.75ID:O45ngdTG
そうですね。では終わり。
0036デフォルトの名無しさん2016/06/27(月) 01:24:45.44ID:XROdUlq7
はい、終わり。
あ〜あ〜、時間の無駄だった。尋ねる相手を間違ってました(笑)
0037デフォルトの名無しさん2016/06/27(月) 01:29:28.28ID:eKq+X1Sf
>>36
(;゚Д゚) (゚Д゚;) (;つД⊂)ゴシゴシ (゚Д゚)え?
0038デフォルトの名無しさん2016/06/27(月) 01:31:19.85ID:ZdQF56NQ
次は何処にマルチするのか生暖かく見守るとしよう
>>37だから、相手すんなってばよ(笑
0039デフォルトの名無しさん2016/06/27(月) 07:09:35.26ID:YpgsN8rw
お前らマルチマルチ言ってるけど
確かに前スレの最後に同じ質問してたのは確認してるけど、あれってマルチになるのか?
いや、他の所で質問してるのを確認しているならごめん。
0040デフォルトの名無しさん2016/06/27(月) 07:56:05.21ID:eVal8QZj
もう自演はいいよ
0041デフォルトの名無しさん2016/06/27(月) 10:36:29.97ID:kq+o2efK
>>34
困ってると言われてもさあ、ファイルのコピーを禁止するなんて不適切な行為を
なんのためにやろうとしてるのか、そこんところを答える気は無いわけ?
0042デフォルトの名無しさん2016/06/27(月) 11:34:13.50ID:O45ngdTG
>>41
もう相手しないほうがいいぞ
0043デフォルトの名無しさん2016/06/27(月) 12:18:34.57ID:gRSd4Q94
答えられずに逆ギレwww
お前らそればっかやなあw
0044デフォルトの名無しさん2016/06/27(月) 12:30:33.30ID:D/SQb6UX
>>40
自演にされちゃったよ(´・ω・`)
0045デフォルトの名無しさん2016/06/27(月) 13:15:48.36ID:9jIdvknM
>>3
Alt+f8で出てくる実行画面からの実行でエラーがでるなら
解決策は知らないけど
ボタンを作成してボタンから実行orアドインの分析ツールのチェック外す
自分の環境では動いたよ
0046デフォルトの名無しさん2016/06/27(月) 15:14:26.70ID:KV2l03K8
>>45其の回答既に出てて、それでも駄目なんだとか言ってたけど?
0047デフォルトの名無しさん2016/06/27(月) 15:42:10.72ID:9jIdvknM
>>46
そか、ダメだったなら自分とは違う原因なのかな

このエラー手持ちのPC二台で出てるから結構な人が発症しているのかと思ってたけど
レス数からするとあんま居ないのかな?
0048デフォルトの名無しさん2016/06/27(月) 16:47:59.52ID:s5R646x2
昔、WindowsUpdateでエラー出るようになるってのがあったな
テンポラリフォルダにある何かのファイル消したら直ったはず
0049デフォルトの名無しさん2016/06/27(月) 18:01:36.84ID:kq+o2efK
しかしFast Food をファーストフードと書くのはありだが、Answer Desk をアンサーディスクと書くのはどうかと思うぞ
0050デフォルトの名無しさん2016/06/27(月) 18:28:58.72ID:lPcjcxKZ
>>48
そんなのあったな
あの時期のmsはヤバかった記憶あるわ
アップデートしたら立ち上がらなくなるパッチファイルとか配信してたもんな
0051デフォルトの名無しさん2016/06/27(月) 22:01:57.62ID:QoF6rap7
前スレの947です。
返答が遅れてすみません!

950さん
>空セルに見えて 実は 半角/全角のスペースが入ってるとかない?

…一発目で大当たりです汗
これくらい気づけよ!って感じですが、リストボックスの列があるんですがリストボックスのリスト内に空白があって、
こいつが空白を作ってましたよ…

951さん
フラグの初期化、Ifの外に出しました。確かにこうすべきですね。

953さん
確かに!ループが一回減りますし。こちらも組み込みました。

955さん
これも確かにです!対応しました!

956さん
ありがとうございます。こういう作法を一つ一つ覚えていかなきゃ…って感じでs。

ちょっと別PCで組んでたので、ソース持ってくるの忘れましたが
値を全部取り出し&で結合して、そいつをTrimして""かどうかを判定する、という方法に変更しました。

しっかり動きました。皆様ありがとうございます。また質問させていただきます!
0052デフォルトの名無しさん2016/06/28(火) 00:10:17.85ID:yNjQD7xp
質問です。
マクロを走らせると突然”応答なし”というエラーメッセージが
出て一向に前に進んでくれません。
EXCELVBAに詳しいかたおられましたら対処法を回答願います。
0053デフォルトの名無しさん2016/06/28(火) 00:17:57.76ID:A9gUPMQl
>>52
まぁ「応答なし」なんだから応答させればいいんじゃね?
0054デフォルトの名無しさん2016/06/28(火) 00:32:21.53ID:Qf+gMofI
do loopでカウンタのインクリメントし忘れ
0055デフォルトの名無しさん2016/06/28(火) 03:34:49.56ID:qIMpcNoP
まあ、あれだ
DoEvents入れたら解決するんじゃね
0056デフォルトの名無しさん2016/06/28(火) 06:20:07.18ID:+VmNtWly
>>52
Application.ScreenUpdating

DoEvents
を調べて組み込んでみ
0057デフォルトの名無しさん2016/06/28(火) 08:18:03.27ID:YVMoIJVb
>>52
マルチ
0058デフォルトの名無しさん2016/06/28(火) 22:00:29.60ID:vwfIQJQY
テンプレでマルチ禁止しとけば?
0059k2016/06/28(火) 22:16:53.74ID:YsbJZi6Y
勤務表を作っています。
会社の休みが変則のため、
その変則休みの部分に色を付けたいです。

アクティブシートは、A列に1〜31の数字が入力されています。
休日シートのA列は1〜31の数字が入力されています。
休日シートのB列に何らかの文字を入れて、休みを指定しています。

アクティブシートA列の1〜31を順番に、休日シートのA列から探し、
見つかったセルの右隣が空欄でなければ、
アクティブシートの1〜31のセルの行の色を塗る、ということをしたいです。

実際に動かすと、1だけ色がつかず、10を休みに指定すると1も色がついてしまいます。
どこを直したら良いでしょうか?
0060k2016/06/28(火) 22:17:15.33ID:YsbJZi6Y
コード貼ります

Sub test()

Dim i As Long, n As Long, dayoff As Object
n = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Cells.Interior.ColorIndex = 0

For i = 9 To n
Set dayoff = Worksheets("休日").Range("A:A").Find(what:=Cells(i, 1))
If Not dayoff Is Nothing Then
If dayoff.Offset(0, 1).Value <> "" Then
Cells(i, 1).Resize(1, 14).Interior.Color = RGB(192, 192, 192)
End If
End If
Next



End Sub
0061デフォルトの名無しさん2016/06/28(火) 22:24:08.26ID:YVMoIJVb
>>59
条件付き書式のほうが良くない?
http://www.dotup.org/uploda/www.dotup.org922256.xlsx.html
0062デフォルトの名無しさん2016/06/28(火) 22:24:38.30ID:YVMoIJVb
あぁごめん失敗した
0063デフォルトの名無しさん2016/06/28(火) 22:31:53.33ID:uo6nK2Mq
> 1だけ色がつかず、
そもそもiが9から始まってる

> 10を休みに指定すると1も色がついてしまいます。
"1"を検索して"10"が引っかかるのは当然
LookAt引数指定しろ


VBA使うよりVLOOKUPとか使って条件付き書式使った方が早そう
0064デフォルトの名無しさん2016/06/28(火) 22:36:13.90ID:YVMoIJVb
>>59
そもそも、この作業は条件付き書式でやるべき。

で、コードも酷い。
こんなシートとして
http://www.dotup.org/uploda/www.dotup.org922273.png
これだけでいい
Sub test()
n = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Cells.Interior.ColorIndex = 0

For i = 1 To n
If Worksheets("休日").Cells(i, 2) <> "" Then
Range("a" & i & ":n" & i).Interior.Color = RGB(192, 192, 192)
End If
Next

End Sub
0065デフォルトの名無しさん2016/06/28(火) 22:40:34.87ID:GoYWLHwq
しっかし Speech API 便利だな!
CreateObject("SAPI.SpVoice")
するだけでテキスト読み上げが簡単に使えるw
0066k2016/06/28(火) 22:41:11.92ID:YsbJZi6Y
シートはこんな感じです
http://i.imgur.com/wRpVpUk.jpg
http://i.imgur.com/WONwTA4.jpg
0067デフォルトの名無しさん2016/06/28(火) 22:41:21.34ID:YVMoIJVb
>>65
エクセルで喋らせることってそんなにあるん?
0068デフォルトの名無しさん2016/06/28(火) 22:42:34.94ID:YVMoIJVb
>>66
じゃあこんな感じ

Sub test()
n = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Cells.Interior.ColorIndex = 0

For i = 1 To n
If Worksheets("休日").Cells(i, 2) <> "" Then
Range("a" & i+8 & ":n" & i+8).Interior.Color = RGB(192, 192, 192)
End If
Next

End Sub
0069k2016/06/28(火) 22:43:18.36ID:YsbJZi6Y
>>63
9から始まってるiは、表があるシートの、
1があるのが9行目なので9から始まってます

LookAt!そうでした…
修正してみます
0070k2016/06/28(火) 22:44:00.00ID:YsbJZi6Y
>>68
ありがとうございます!
試してみます。
条件付き書式勉強します。
0071デフォルトの名無しさん2016/06/28(火) 22:44:12.94ID:pqDnfoPc
VBA初心者です
sheet1で作成した表の文字を抽出してsheet2の一部に書き出して印刷するというのをsheet1の表の一行目から繰り返すコードを教えてください

sheet1
名前 県名 金額
田中 東京 1,000円
佐藤 大阪 2,000円
以下略

sheet2
[田中]様 [東京]出身
金額は[1,000円]になります

印刷

sheet2
[佐藤]様 [大阪]出身
金額は[2,000円]になります

印刷

以下略

みたいなイメージです
0072デフォルトの名無しさん2016/06/28(火) 22:52:11.46ID:Taly5KtN
エクセルからワードに差し込み印刷すれば?
0073デフォルトの名無しさん2016/06/28(火) 23:42:31.53ID:eHCWWoFL
replaceが、たまに盛大に誤爆するんだけど、
同じ現象が起きた人いる?

Sheet1で実行してるのに、
2とか3に飛び火するの。

For eachでシートを巡回したり、
Do eventsで割り込んだりはしていない。
0074デフォルトの名無しさん2016/06/28(火) 23:46:08.58ID:YVMoIJVb
>>73
無い
acthivsheetがずれてるとかそんなんでは
0075デフォルトの名無しさん2016/06/28(火) 23:52:47.60ID:VVOBsC/w
Replace 関数
WorksheetFunction.Replace メソッド
Range.Replace メソッド

どのReplace だろう・・・
0076デフォルトの名無しさん2016/06/29(水) 00:12:52.99ID:4tCylVnh
>>73
Sheet1と2で書き換わる場所が同じなら、
その可能性もあるんだけど、
Range("A1:A100")って指定してるのに、
他シートに誤爆する時は、Range("A1:G20")とか、
全然関係ない所を書き換えちゃうの。

>>75
Range.replace
0077デフォルトの名無しさん2016/06/29(水) 00:14:05.88ID:4tCylVnh
↑すいません。
>>74でした。
0078デフォルトの名無しさん2016/06/29(水) 00:17:45.42ID:eYIXcV9j
>>76
んじゃselectionを使っていてそれを間違えてるかその辺。なんにしろ見てみないとわからない
バグではないと思う。何かコードがおかしい気がする

あんまり関係ないけどrange()はrange(cells(y,x),cells(yy,xx))みたいにcells()で指定したほうが扱いやすいよ
0079デフォルトの名無しさん2016/06/29(水) 00:22:08.66ID:s6QK1Tqr
まぁ、誤爆はないでしょ。
前後の処理でシートの指定を引きずってるとかないの?
0080デフォルトの名無しさん2016/06/29(水) 02:44:46.72ID:fEawViXQ
ちゃんとした環境もコードも晒さないような人の話は信用できん
0081デフォルトの名無しさん2016/06/29(水) 07:45:57.05ID:tDtN45k1
>>76
Selectionを使用しているならThisworkbook.Sheetsを使った直接指定に。
RangeをObjectとして持ち回っているならトレースでどこかで範囲が変わっていないかをまず確認した方がいいね。

直接指定しててそうなるなら他の所で変な処理が走っていないか確認した方がいい。
0082デフォルトの名無しさん2016/06/29(水) 13:02:20.79ID:3S9a7QAX
With でシート名を指定したのに、その中でドットを付け忘れてアクティブなシートで処理しててはて???って悩んだことがあったわ。w
エディタに該当部分コピーしてよっく見たらおぉっとなったけどw
0083デフォルトの名無しさん2016/06/29(水) 18:14:22.55ID:a2EjMaiS
For文の中にPrintoutを入れて自動連続印刷にしているんですけど
印刷プレビュー表示→連続印刷っていう風には出来ますか?
0084デフォルトの名無しさん2016/06/29(水) 19:03:11.42ID:eYIXcV9j
>>83
連続印刷でぐぐったら出てきた
http://homepage2.nifty.com/yokosuka/Application/VBA/vba2.htm

個人的には
・forで印刷プレビューだけ確認。もちろん途中で終了できるようにする
・forで印刷
と処理を分けたほうが良いと思うけど
0085デフォルトの名無しさん2016/06/29(水) 19:22:48.23ID:Lw5Czke2
個人的には
連続でPDFに出力して
PDF結合するソフトで出力したPDFを結合して
PDF閲覧ソフトでプレビューして問題なければ印刷
がいいと思う

どうせexcelの印刷プレビューじゃ文字の見切れとか確認できないし一度PDFにした方が確実だしプレビューもしやすい
0086デフォルトの名無しさん2016/06/29(水) 19:59:35.11ID:a2EjMaiS
>>84
For文の中にPrintPreviewとPrintoutを入れちゃうと処理の度にプレビューが表示されてそのまま印刷しちゃうとPrintPreviewとPrintoutの印刷が出て…って感じなんですよね
とりあえずFor文の前に1回目の処理とPrintPreviewを書いてFor文の中に2回目からの処理とPrintoutを書くってやり方にしたんだけど
綺麗なコードじゃないなぁと思ってここで質問してみました
>>85
効率化させるためにマクロ組んでるだけなんでそのやり方はやめときますm(_ _)m
0087デフォルトの名無しさん2016/06/29(水) 20:30:20.68ID:CsRUguyd
連続印刷なら
一旦シートに一覧作って
そこから一括出力するようにすると
使い勝手がいい
更新日付と時間も一覧に並べて置けば
何を出力したかも残って便利
0088デフォルトの名無しさん2016/06/29(水) 20:35:44.66ID:e2caFJgf
1回目と2回目以降で処理が違うならその方法が正しいでしょ
ループの中で1回目か2回目以降を判定してPrintPreviewかPrintOutかに処理を分けるのでもいいけど

iがカウンタだとして
PrintOut(previwe:=(i=1))とかすれば少しスマートかもしれない
0089デフォルトの名無しさん2016/06/29(水) 22:30:12.13ID:5Wgb8/sh
質問です
会社に従業員が100名います
現在ブック内に100(従業員ごとの)シートを作り、印刷するときはシートを探し出して行っています。

この100あるシートは単にA1とB1セルに個人名が入力されているだけで他は全く同じです。

1日に何回も印刷する機会があり100あるシートから個人を探すのも大変です
そこでシート1に個人名を羅列し、それを選択するだけで原本のA1とB1に選択した個人名が自動記入できるようにできればかなり短縮出来そうです。

知恵をお貸し下さい
0090デフォルトの名無しさん2016/06/29(水) 22:41:11.52ID:5Wgb8/sh
>>89
追記
ブック内が重たいのでハイパーリンクを使って飛ぶのではなく個人名が入ってるシート1と原本のシート2のみにしたいです
宜しくお願いします
0091デフォルトの名無しさん2016/06/29(水) 23:38:41.90ID:GaJpr6Ae
それシート1にリスト作ってVLOOKUPとかじゃダメなの?
0092デフォルトの名無しさん2016/06/29(水) 23:46:32.75ID:lv/1JNiY
ハイパーリンクを使いたくないって意図がよくわからんが
セレクトしてるセルが変わったら動くイベントを使ってマクロを組めばいい
セルが変わっらセル内の文字列を拾ってシートを表示してセレクトする

シート1以外は元々非表示にしといて
シート1のセル選択でのみ表示する
表示したシートからフォーカスが外れたら
シート1以外を非表示にする
これはセレクトしてるシートが変わったら動くイベントを使う
0093デフォルトの名無しさん2016/06/29(水) 23:49:34.21ID:eYIXcV9j
>>91でいいと思う。
マクロ使うと逆にしんどくなるだろう
0094デフォルトの名無しさん2016/06/30(木) 00:53:15.29ID:gVFgOq4s
質問です!
windows7
excel2010

数値が文字列で入力されたデータが1列100行あります。


1000
100
29
302



この100行のデータを”文字列を数値に変換せずに”100以下の行のみをフィルターで絞ることはできませんでしょうか?
自分で調べながらソースを書いてみたのですが、

'Range("A1").AutoFilter field:=1, Criteria1:="<= 100"
やはり最後のCriteria1の部分がうまくいきません。

文字列を数値に変換せずに、という理由は、そのデータをまた別の作業で使うからです。
文字列のままの方が便宜上助かるのです。

よろしくお願いいたします!
0095デフォルトの名無しさん2016/06/30(木) 02:23:54.27ID:G0SvbOL7
数字の29は数字の100より小さいけど
文字列の"29"は文字列の"100"より大きいのが文字列のルール
文字列のまま扱うっていうのはそう言う事だけど良いのか?
0096デフォルトの名無しさん2016/06/30(木) 05:40:15.64ID:sqsWJL50
>>94
別の列に数値にした値を作ってそれでフィルタしたら?
0097デフォルトの名無しさん2016/06/30(木) 08:09:18.42ID:NV9SAKW0
>>89
その100あるシートのフォーマットはシートごとに違うの?
0098デフォルトの名無しさん2016/06/30(木) 08:37:50.93ID:nog85R/v
数値に変換してもまた文字列に戻せるけどな
エクセルのヘルプで文字列(数値)操作関数のリストが見られるから、 印刷しとくと良いよ。
http://i.imgur.com/YUWXGBJ.jpg?1
0099デフォルトの名無しさん2016/06/30(木) 09:03:14.45ID:/6y2Ijm2
>>98
この場合どうする?
0010
これ数値化すると元の状態には戻らんぞ
(最初の0がいくつあったかの情報が失われてるから)
0100デフォルトの名無しさん2016/06/30(木) 09:41:33.34ID:iW6PAU4H
>>91
>>93 レスありがとうございます
個人名に紐付いた別の情報(例えば電話番号とか)を探し出したいのではなくリストに記載した個人名を複数の指定セルに自動記入したいのです

リストにある名前を手動コピペだと貼り付け漏れのセルがあると困ります

>>92
ブックがかなり思いのでシート自体少なくしたいと思ってます
>>97
全く一緒なんです
定期的にセル挿入しないといけないんですが手作業ですべて改定してまして大変なんです
0101デフォルトの名無しさん2016/06/30(木) 09:54:24.43ID:JMC+srqw
>>99
>>94の例示を良く見て
0102デフォルトの名無しさん2016/06/30(木) 09:58:47.39ID:nog85R/v
>>99
それはないと判断した
あるのなら落としてはいけない情報だから例示するはず

それに100以下のみを抽出ということは、印刷の都合上やテキストファイルでのやりとりなどで
たまたま文字列形式になってるが、元々は普通の数字(頭に0の付かない)なんだろ。
だから数字で管理して、必要に応じて文字列にすることも検討に値する。
0103デフォルトの名無しさん2016/06/30(木) 10:02:30.89ID:4fmg0FNR
>>94
別の列にコピーして数値化
フィルタ
0104デフォルトの名無しさん2016/06/30(木) 12:22:06.96ID:6OQ3oF91
頭ゼロとか見た目だけならセルの書式設定でどうとでもなる
0105デフォルトの名無しさん2016/06/30(木) 18:06:00.58ID:2VNG/wFb
>>94
AutoFilter使わないと駄目なのかな?
どうせVBA使うのなら、条件に合わないセルの行を隠していけばいいと思うけど

VBA内で文字列を数値化して比較するのは問題ないだろうし、
どうしても文字列のままにこだわるのなら
文字長が3以上かつ文字が"100"でないセルの行を隠していけばいい
0106デフォルトの名無しさん2016/06/30(木) 20:56:53.06ID:AI19lM0o
>>99
0から始まるのは8進数
0107デフォルトの名無しさん2016/06/30(木) 21:48:14.85ID:oIta/qZk
エクセルに取り込んだ情報をVBA介してアクセスのDBに移してクエリで処理してるんだけど、
このクエリか、もしくはクエリを含むサブフォームをエクセル上で操作できるようにする方法ってない?

大量の情報を扱うから、いちいち配列をやりとりするのは手間なんだけど、
表示する範囲のみを適宜取り出してエクセルのフォームに表示するやり方しかないかな?
0108942016/06/30(木) 22:24:24.95ID:gVFgOq4s
皆様、94です。
いろいろなご提案ありがとうございます!

96さん、103さんのアイデアで実現してみました。
…ですが、そもそも数値化がうまくいってないことに気づきました。
単純にワークシート関数のval()などを使えばいいかなと思いましたがなかなかうまくいきません。

じゃあ一旦バリアント型変数に格納して、FormatNumberでセルの書式を数値に変更して戻す、という試行錯誤に。
(この時点で数時間)
v=Range(Cells(…

だったら、別の列を挿入せずにそのまま実データが入っている列でそれをやっちゃえばいいか・・・
というのが最終形になりました。

なぜ文字列型でないといけないのかというのを記載していませんでしたが、Accessに取り込んで
別のデータと照らし合わせるクエリを作るためです。

その照らし合わせ先も文字列なので、文字列と文字列でないとひと手間かかっちゃうんです。

別の列を作ってというアイデアが一人ではなかなかでなくて。
ここで聞いてよかったです。

皆様ありがとうございました!
0109デフォルトの名無しさん2016/06/30(木) 23:32:27.98ID:IY0vyffw
>>106
やゼロフィルだな
0110デフォルトの名無しさん2016/07/01(金) 00:29:15.54ID:xFyxlTTO
ListObjects.Addで、

↓これは出来たのですが
Source:=1つのフォルダに入っている複数のCSVファイル

↓これや、
Source:=複数のフォルダに入っている複数のCSVファイル

↓これが出来ません
Source:=CSVファイルとEXCELファイル

何か方法はないものでしょうか?
全部1つファイルにまとめてから処理するのは出来るのですが、
そうするとファイルが重くなるので、直接ファイルから取得したいのです。
0111デフォルトの名無しさん2016/07/01(金) 07:29:07.88ID:w7ShJWdY
>>107
ExcelからAccessを操作する場合
Accessのフル機能は使えない
クエリは呼び出せるけど
対象となるクエリがSQLで表現出来ないとダメ
何を言ってるかというとAccessのVBAで作った関数をクエリに組み込んでるとダメ

速度を求めるならExcelのフォームに表示するのではなく
Accessで完結させるべき
速いと言い難いが
0112デフォルトの名無しさん2016/07/01(金) 07:41:30.79ID:ndIDnLDu
>>107
手元の配列(?)にデータがあるのになんでそんなことするの?
0113デフォルトの名無しさん2016/07/01(金) 08:38:13.68ID:092EU/yt
>>107
ACCESSで使っているクエリをExcel側で操作したいって
EXCEL側でクエリを実行したいのか、EXCEL側でクエリを弄りたいのか、どっち?

まぁどっちにしてもACCESSのテーブルにクエリ自体を突っ込んで
EXCEL側からもACCESS側からもそれを見に行くようにすればいいんじゃないかな
0114デフォルトの名無しさん2016/07/01(金) 09:26:46.36ID:3tq1seUp
もっとシンプルに実現できることを、わざと難易度を上げて複雑にして、
「それでも私は頑張って仕事しています!」ってアピールした馬鹿だろ。
0115デフォルトの名無しさん2016/07/01(金) 10:59:06.36ID:092EU/yt
>>114
EXCEL側で、ACCESSに登録した後の形態を確認したいとかじゃね?
どっちにしても背景が見えないから、いきなりバカ扱いするのは早計だと思うが
0116デフォルトの名無しさん2016/07/01(金) 12:10:58.79ID:KP5+MPpx
Excel至上主義者はAccessを否定するんだよなぁ
Accessの使い方知らないんだろうけど
0117デフォルトの名無しさん2016/07/01(金) 13:20:53.52ID:lWEFeltJ
>>116
Accessがというより所詮DB(またはSQL)だからって意味じゃないか?
0118デフォルトの名無しさん2016/07/01(金) 19:36:08.17ID:ISgfsORm
>>112
手元のデータは未加工の情報で、必要な処理をAccessで行ってる。
加工後の情報が目的と合致しない場合は、再び未加工の情報を(パラメータを調整した上で)加工しなきゃならない。

速度が段違いなので最初の受け渡しロスを含めてもAccessで行った方が速いんだけど、
今作ってるマクロの前身がセルに大量の関数が書き込まれているタイプのものだったんで、
出来るだけ同じ操作感覚になるようにエクセルにこだわりたかったんだけど、やはりAccessにするしかなさそうね。
0119デフォルトの名無しさん2016/07/01(金) 19:51:03.41ID:lWEFeltJ
>>118
> 加工後の情報が目的と合致しない場合は

個々の値の加工というより何かの
集計値が目的に合ってるかどうか判定してるのかな?
そうじゃなきゃaccessの方が速い理由がわからない。
0120デフォルトの名無しさん2016/07/01(金) 20:20:28.37ID:ISgfsORm
>>119
日々の予定値の合計が目標値を超えちゃいけないとか、業務上の色んな要素が関わってくる。

どっちにしろ大量のデータを処理するならVBAよりもクエリ使うべき。
っていうか修飾が必要ない純粋なデータ処理はデータベースソフトでやるべき。
0121デフォルトの名無しさん2016/07/01(金) 20:21:52.16ID:1jGNbpkt
まぁそうなんだけどねぇ
Accessは大昔バグが酷かったからアレルギー餅もいるんだよね。
0122デフォルトの名無しさん2016/07/01(金) 20:24:36.75ID:OKSQC6Td
アクセスにアレルギーがあります、だからエクセルを使います(50代開発者)
0123デフォルトの名無しさん2016/07/01(金) 20:30:40.30ID:lWEFeltJ
>>120
いや「純粋なデータ処理は汎用言語でやるべき」でしょ
0124デフォルトの名無しさん2016/07/01(金) 20:31:49.35ID:1jGNbpkt
>>122
ウチの上司がまさにそれ
Accessのバグを調べながら開発するより新規にdbソフト作ったほうが早いってことでDBソフトごと作ってたわ
0125デフォルトの名無しさん2016/07/01(金) 20:42:19.31ID:OKSQC6Td
>>124
どうして恥の上塗りするん?www
0126デフォルトの名無しさん2016/07/01(金) 20:56:43.52ID:tm+bfi5q
>>123
今時のデータベースソフトより性能がいい処理ができると言うなら別に止めやしないから頑張ってくれ
0127デフォルトの名無しさん2016/07/01(金) 21:04:36.60ID:lWEFeltJ
>>126
I/O込みなんだろ?なんでDBの方が速いんだ?
0128デフォルトの名無しさん2016/07/01(金) 21:17:58.22ID:ISgfsORm
汎用言語ってのが何を指して言っているのか分からんが、DBとクエリ機能が最初から使える奴ならその方がいいだろうね。
C/C++言語で一から作れとかって話だったら、よっぽど用途が限定されてない限りアホくさくて話にならないが。
0129デフォルトの名無しさん2016/07/01(金) 21:20:41.29ID:tm+bfi5q
意味わからん
汎用言語でも I/O 使うだろうし
DBMS のキャッシュ制御を上回るのは大変だと思うが
0130デフォルトの名無しさん2016/07/01(金) 21:36:18.24ID:lWEFeltJ
>>129
もとの質問(>>107)ではメモリ上にあるデータをいったんDBに移してるように読めるが
0131デフォルトの名無しさん2016/07/01(金) 21:57:46.24ID:tm+bfi5q
>>130
VBA 以外の汎用言語で Excel のデータを扱うのは結構大変だよ?
データ量が多いなら VBA でしこしこやるより CSV に吐き出して DBMS に読ませて処理した方が速いケースは普通にある
エラー処理が面倒だけど元データがしっかりしてるなら SQL-Server で Excel ブックを直接読み込むとかもできるし
0132デフォルトの名無しさん2016/07/01(金) 21:59:45.83ID:tgxqnVRr
>>123
なにがメリットなの?
0133デフォルトの名無しさん2016/07/01(金) 22:17:24.11ID:lWEFeltJ
>>131
ふーむ、例えば単純なSUMとかでもそなのかな?
0134デフォルトの名無しさん2016/07/01(金) 22:19:37.55ID:5rFR/ghy
>>133
やってみればいいんじゃね?
0135デフォルトの名無しさん2016/07/01(金) 22:24:48.41ID:OKSQC6Td
質問そっちのけで何しとんねん無能初心者どもw
0136デフォルトの名無しさん2016/07/01(金) 22:38:36.31ID:lWEFeltJ
>>131
>>134
まあ仕事だったら速ければやるかもな...
0137デフォルトの名無しさん2016/07/01(金) 22:59:03.05ID:QhnUR69n
質問ですが、皆さんお仕事はどんな職種なんですか?
0138デフォルトの名無しさん2016/07/01(金) 23:17:09.94ID:092EU/yt
>>126
まぁデータのやり取りするんであれば普通に考えれば手続き型言語より集約言語の方が速いわな。
もちろんINDEXとかきちんと貼られて有効に使われてること前提だけど
0139デフォルトの名無しさん2016/07/02(土) 02:24:42.73ID:pHmHPwMw
>>137
アンケート厨はウザがられるよ
0140デフォルトの名無しさん2016/07/02(土) 03:24:09.07ID:Goc594+n
そもそも、「質問ですが、」← これ無くても意味通じるし、有るとかえってイラッとするよな。
「初心者です」
「バージョンは最新です」
「何もしていないのに」
とかも同じ。
0141デフォルトの名無しさん2016/07/02(土) 07:52:28.97ID:M5l7NE7m
質問ですか?
0142デフォルトの名無しさん2016/07/02(土) 08:25:13.36ID:uAYigWdO
>>137
システム開発
0143デフォルトの名無しさん2016/07/02(土) 10:23:13.18ID:ihvejTGf
>>137
ちなみにあなたのお仕事は?
0144デフォルトの名無しさん2016/07/02(土) 10:36:47.74ID:meqco/WD
仕事関係ないだろ
0145デフォルトの名無しさん2016/07/02(土) 11:24:50.38ID:hSx47VXK
証明出来ない以上、なんとでも言えるしな

でも主張によって、プログラミング関係の仕事してるかどうかは割と推測しやすいと、このスレ見てて思った
0146デフォルトの名無しさん2016/07/02(土) 12:33:25.79ID:+AF4e5eX
プログラミング関係の仕事をしてるやつは居ないとこのスレ見て思った
0147デフォルトの名無しさん2016/07/02(土) 12:52:04.41ID:meqco/WD
仕事でPGやってる人よりも事務職で課に1人だけいそうな、何でもかんでもVBAで作らされてる人の方が詳しそう。
やらせればPGの方もスキル発揮するのだろうけど、普段VBAゴリゴリ書いてるプログラマーって少ないんじゃない?
0148デフォルトの名無しさん2016/07/02(土) 12:59:09.33ID:hSx47VXK
でも「VBAゴリゴリ書いてるプログラマーです」って言うと「VBA使うような奴はプログラマーじゃない」とか言うんでしょ。
分かってるんだから。
0149デフォルトの名無しさん2016/07/02(土) 13:03:54.23ID:cbv/Tz9a
2chなんだからプロが来るところじゃないし仕事を語る場所でもない
0150デフォルトの名無しさん2016/07/02(土) 14:18:55.79ID:Oflr6P+h
A列のセルがabcから始まってる場合、または空白の場合に
その行全体を削除する、というマクロを作りたいのですが
どうすればいいでしょうか?
excelのバージョンは2007です。
0151デフォルトの名無しさん2016/07/02(土) 14:51:00.96ID:AdcotA2t
A列のセルがabcから始まってる場合?よくわからないですが
空白のセルがあった場合に、そのセルの行を削除するのなら
0152デフォルトの名無しさん2016/07/02(土) 14:54:37.99ID:hSx47VXK
>>150
Sub test(DeleteRange As Range)
Dim R As Range

For i = 1 To DeleteRange.Rows.Count
v = DeleteRange.Cells(i, 1)
If v Like "abc*" Or Len(Trim(v)) = 0 Then
If R Is Nothing Then
Set R = DeleteRange.Cells(i, 1).EntireRow
Else
Set R = Union(R, DeleteRange.Cells(i, 1).EntireRow)
End If
End If
Next

R.Delete
End Sub
0153デフォルトの名無しさん2016/07/02(土) 14:54:42.75ID:uJKAJ0cL
abcdeとかabczyの文字列だろ察してやれよ
0154デフォルトの名無しさん2016/07/02(土) 14:57:48.15ID:AdcotA2t
vba sum関数で質問です。よろしくお願いします。

sumで合計する対象となる数個のセルの中に負の値があると
合計されず、値がブランクになってしまいます。

例えば、A列の1〜5行目までのセルの合計を
合計 = Application.WorksheetFunction.Sum(Range(Cells(1, 1), Cells(5, 1)))
として求める場合に、どこかのセルで負の値があると、合計は” ”となります

エラーの原因と正しく合計するためにどうしたらいいのか、ご指導いただけませんでしょうか?
よろしくお願いいたします。
0155デフォルトの名無しさん2016/07/02(土) 15:09:16.78ID:AdcotA2t
>>153
すみませんでした
0156デフォルトの名無しさん2016/07/02(土) 17:10:19.71ID:V1fyPFSu
>>154
シートでsum関数使った結果は?
正しいならvbaの型がおかしいのでは?
0157デフォルトの名無しさん2016/07/02(土) 17:13:08.92ID:AdcotA2t
>>156
ありがとうございます。
シートでのsum関数はしっかり合計されます。
フォーマットも"数値"に直してあるのですがどうしても合計されません。
0158デフォルトの名無しさん2016/07/02(土) 17:16:37.51ID:V1fyPFSu
>>157
コードを上げて。
0159デフォルトの名無しさん2016/07/02(土) 17:37:07.79ID:DDjutEkV
コードを見てみないと何とも言えないが

>>154の指摘の通り
Dim 合計 As Longなり Dim 合計 As Doubleなり
変数は宣言してから使うべき
0160デフォルトの名無しさん2016/07/02(土) 18:11:22.98ID:pRO6q6b5
>>154
戻り値:倍精度浮動小数点型 (Double) とあるから
そもそもブランク” ”なんて返ってこないと思うのだが・・・?

WorksheetFunction.Sum メソッド (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff838410.aspx
0161デフォルトの名無しさん2016/07/02(土) 19:28:40.63ID:uAYigWdO
>>160
見てみるとエラーで落ちると書いてあるから
おおかたValiantか直接セル指定で書き込んでいるんじゃないか?

で、エラー時はログを出して終わりとか握り潰しているとか。
0162デフォルトの名無しさん2016/07/02(土) 19:37:21.31ID:0/OF67S+
この場合引数はRangeだから
>•引数が配列またはセル範囲の参照である場合、その中に含まれている数値だけが計算の対象となります。配列やセル範囲に含まれる空白セル、論理値、または文字列はすべて無視されます。
が適用される気がするんだが

ちなみにうちの2007で試したら、指定したRangeにエラー値とかあるとエラーになってるっぽい
エラー値も無視してくれれば良いのに
0163デフォルトの名無しさん2016/07/02(土) 21:15:43.11ID:ZFshQN/m
>>152
ありがとうございます。ただ、実行すると
オブジェクトが必要です、というエラーが出てしまいます。
0164デフォルトの名無しさん2016/07/02(土) 21:21:41.67ID:+dqhJmU8
>>163
デバッグくらいは自分でやってみたら
デバッグするうちに理解できる事もあるから
0165デフォルトの名無しさん2016/07/02(土) 21:24:09.83ID:+dqhJmU8
>>154
sumの対象範囲を色々変えてみたらどの箇所が含まれていたらエラーになるか判る
そのセルについて詳しく調べたら何か判るかも
本当に負の値が原因なのか
0166デフォルトの名無しさん2016/07/02(土) 21:26:42.02ID:Kre/4kSw
教えたがり回答者の正しいかどうかも分からんコードのデバッグを質問者に要求する理不尽スレw
0167デフォルトの名無しさん2016/07/02(土) 21:29:57.19ID:+dqhJmU8
>>166
ならそのコードを採用しなければ良いだけ
0168デフォルトの名無しさん2016/07/02(土) 21:34:11.66ID:Kre/4kSw
>>167
採用されてもいないコードのデバッグを要求するお前な何なん?w
0169デフォルトの名無しさん2016/07/02(土) 21:55:25.63ID:hSx47VXK
ここ質問スレだから回答する事そのものに対して文句を言うのは筋違い。

回答が間違っているとケチをつけるなら自分で書くべきであって、
何もしないのに文句をつけるのも筋違い。
0170デフォルトの名無しさん2016/07/02(土) 22:17:27.39ID:cbv/Tz9a
サービス回答
0171デフォルトの名無しさん2016/07/02(土) 22:22:30.25ID:mzeRacQg
>>166
ID:Kre/4kSw
バカ発見
0172デフォルトの名無しさん2016/07/02(土) 22:24:48.25ID:Kre/4kSw
>>169
それよりお前は筋違いの回答をデバッグして出直してこいやwww
0173デフォルトの名無しさん2016/07/02(土) 22:34:10.98ID:hSx47VXK
>>172
というかお前は何でVBAすら分からないのに張り付いてるんだ?
0174デフォルトの名無しさん2016/07/02(土) 22:41:19.33ID:Kre/4kSw
>>173
VBA分からんのはお前やろwせめて動くコード書けるようになってから回答しろやwwww
0175デフォルトの名無しさん2016/07/02(土) 22:50:50.43ID:hSx47VXK
>>174
以前も他人の書いたコードにいちいちケチつけてアヘってるバカいたけど、そいつは初歩的なルールくらいは理解してたんだよ。
そういう奴なら「俺がこの言語に一番詳しいんだ」っていう自己顕示欲から馬鹿な事してるんだなぁと推測出来る。

お前の場合は全然分かってないだろ?
VBA分かれば他人のコード見ても動きそうかどうかは分かるわけだから「正しいかどうかも」という言い回しにはならない。
だから張り付いてても面白くないと思うんだよ。お前の行動原理がいまいち分からなくてちょっと聞いてみたいんだ。
0176デフォルトの名無しさん2016/07/02(土) 22:58:44.11ID:Kre/4kSw
>>175
お前にとっては動けば正しいんかwやっぱり教えたがりのアホやんw
せっかくやから教えてやるけど質問者の望む挙動の事を正しい言うんやで
それは俺にもお前にも分からん、質問した人間にしか分からんのやで
しっかり勉強しいやwww
0177デフォルトの名無しさん2016/07/02(土) 23:08:40.71ID:hSx47VXK
>>176
そしたらコードのデバッグは質問者にしか出来ない事になるだろ。
「動くコード書けるようになってから」と言いつつ「動けばいいのか」ってのもおかしいし。

形だけこき下ろしたって自分が惨めになるだけだと思うんだが、それが楽しいのか?
0178デフォルトの名無しさん2016/07/02(土) 23:10:40.65ID:K4LZmTk1
>>153
なんとなくだがそれは違う気がする。
A列に(判別用の)abcを入れてあるんだと思う。
その上で、A1がabcだったら行全体を削除。
言い回しが変だが言い間違ってる。
0179デフォルトの名無しさん2016/07/02(土) 23:15:03.24ID:b38bfQ1l
>>172
バカ発見
0180デフォルトの名無しさん2016/07/02(土) 23:16:56.97ID:Kre/4kSw
>>177
お前のコードがどう動くつもりで書かれたのかどうやって質問者が分かんねんwww
頭わいとるなお前www
0181デフォルトの名無しさん2016/07/02(土) 23:18:17.38ID:b38bfQ1l
>>174
バカ発見
>>180
バカ発見
0182デフォルトの名無しさん2016/07/02(土) 23:21:42.17ID:hSx47VXK
>>180
お前VBAどころかプログラム言語全般分からないのかよ。
0183デフォルトの名無しさん2016/07/02(土) 23:30:30.10ID:Kre/4kSw
>>182
でデバッグできたんか?www
0184デフォルトの名無しさん2016/07/02(土) 23:44:22.28ID:hSx47VXK
>>183
いや、お前が言うには正しい挙動は質問者にしか分からないんだろ。
煙に巻くにしても、せめて自分の主張した事と矛盾する煽り方はやめようよ。

何を目的にしているか分かれば、書かれたコードを読めばどういう挙動を狙っているかだいたい推測出来るもんなんだよ。
このスレにも「このコードで動かないんですけど」って貼り付けられてる事あるだろ。あれ何のつもりか理解してなかったの?
0185デフォルトの名無しさん2016/07/02(土) 23:50:46.30ID:b38bfQ1l
>>183
バカ発見
0186デフォルトの名無しさん2016/07/02(土) 23:58:11.23ID:uAYigWdO
周期的に大阪の部落民がファビョるよね
0187デフォルトの名無しさん2016/07/02(土) 23:58:35.66ID:uJKAJ0cL
夏だな
0188デフォルトの名無しさん2016/07/03(日) 00:11:35.01ID:wofBOAox
>>168
163
0189デフォルトの名無しさん2016/07/03(日) 00:14:24.06ID:wofBOAox
>>180
質問者は仕様を知ってる
その仕様にあってると言う前提でコードを見るだろう
質問スレはVBAを知らない人には用は無いだろ
0190デフォルトの名無しさん2016/07/03(日) 06:19:38.31ID:HMlt8Ia6
>>184
> 何を目的にしているか分かれば、書かれたコードを読めばどういう挙動を狙っているかだいたい推測出来るもんなんだよ。
>>189
その仕様にあってると言う前提でコードを見るだろう

お前らホンマにアホやなあw
お前らが要求を正しく理解しとると信用せなあかん理由なんか一個もないわw

能天気に予断を持って問題にぶちあたるからデバッグ一つ出来んし
質問にも答えられんのやでお前らはwwww
0191デフォルトの名無しさん2016/07/03(日) 06:26:37.57ID:wofBOAox
>>190
じゃ君が答えれば良いのに
0192デフォルトの名無しさん2016/07/03(日) 06:33:39.45ID:HMlt8Ia6
>>191
いいところに気がついたなw
俺はお前らの声なき質問に答えとるんやでw

八割方バカにしとるだけやけどな
いい酒の肴になるでお前らwwww
0193デフォルトの名無しさん2016/07/03(日) 06:37:07.17ID:S035+4fi
>>192
声なき質問に答える前に>>150の声ある質問に答えてあげて
0194デフォルトの名無しさん2016/07/03(日) 06:44:42.33ID:HMlt8Ia6
>>193
ガチアホなんかお前?
これはいくら俺でもキョトンとしますわ
0195デフォルトの名無しさん2016/07/03(日) 06:47:28.99ID:S035+4fi
>>194
いいから答えてあげて?
0196デフォルトの名無しさん2016/07/03(日) 09:07:51.72ID:aUhukWnc
多分、質問者は、引数の使い方というか、意味ををわかってない
だから引数指定せずにcallして、エラーになってる。
コードそのものが間違ってるわけじゃないけど、
質問者のレベルに合わせて
コードの修正なり使い方の解説なりをやろうとしない回答者の方も
結構アレなんじゃないかと思う
0197デフォルトの名無しさん2016/07/03(日) 09:17:41.22ID:wofBOAox
エラーとは関係無いが
unionは複雑な範囲に対応出来ないからエラーになる事がある
削除対象範囲を都度削除した方がより色んなケースに対応できると思う
速度的には比較的遅いだろうけど
0198デフォルトの名無しさん2016/07/03(日) 09:45:16.53ID:UDre5Mdz
解説が必要だと思うなら自分でやってあげればいいだろう。

コードは対応できるケースが増えるほど複雑になるから他人に教えるのには向いてない。
このスレは質問スレであってコードを代行して書くスレじゃないから極論、条件を全部満たす必要もないし。

だいたい>>150に書いてある条件だけじゃ実行するだけで常に意図した様に動作するマクロなんて作れないし、
最終的に自分で解決しようって意欲のないヤツに付き合うと泥沼化するから親身になって答えるのもなぁ・・・。
やりたければやればいいけど、それを金で雇ったわけでもない他人に要求するのは間違っている。
0199デフォルトの名無しさん2016/07/03(日) 10:01:56.75ID:ggWuEzzb
>>196
バカ発見
0200デフォルトの名無しさん2016/07/03(日) 10:39:20.19ID:TV+AI8sZ
朝6時半から大阪部落民が大騒ぎだな
よっぽど昨日のことが悔しかったんだろうなw
0201デフォルトの名無しさん2016/07/03(日) 13:02:52.21ID:a7dDnFnC
Excelオートメーションはこのスレで良いんですか?
ホスト言語はC#です
0202デフォルトの名無しさん2016/07/03(日) 13:51:27.57ID:aanUjlOw
>>201
許す
申してみぃ
0203デフォルトの名無しさん2016/07/03(日) 14:08:36.63ID:FivcklIc
>>201
C# スレの方がいいと思う
0204デフォルトの名無しさん2016/07/03(日) 14:10:25.85ID:gxM8oU+G
ここExcel VBAしか知らない人ばっかりだよ
0205デフォルトの名無しさん2016/07/03(日) 14:54:22.43ID:T0oOZbz2
ExcelVBAのスレなんだから、そうであっても不思議ではない
0206デフォルトの名無しさん2016/07/04(月) 17:43:51.35ID:6CVzVAi9
「VisualBoyAdvance」で久しぶりにポケモンをしようと思ったら、キーボードのxボタンを押してもメニューが開けませんでした。
xボタンでキャンセルすることは出来ますが、メニュー画面は何度試しても開けません。詳しい方、教えて貰うことは出来ませんでしょうか?
0207デフォルトの名無しさん2016/07/04(月) 17:45:34.92ID:LPXoV+6O
練に練ったネタでダダ滑り
0208デフォルトの名無しさん2016/07/04(月) 18:48:22.99ID:QouUNtv0
>>206
多分ぱちもの
0209デフォルトの名無しさん2016/07/04(月) 19:07:24.56ID:p6FEI/fn
>>206
キーボードではなく念を使え
0210デフォルトの名無しさん2016/07/04(月) 19:11:41.70ID:6CVzVAi9
詳しいことは何も知らないので申し訳ありませんが、「念」って一体なんのことでしょう?
0211デフォルトの名無しさん2016/07/04(月) 20:50:32.80ID:HBX/lMQ7
>>206
多分、PCのフレームレートとNMIのタイミングが合っていないのだろう。
昔のPen4辺りのPC中古で買って専用機にすれば動くかもね。

エミュレータとROMの相性問題も有るだろうからそっちかも知れんけどね。
0212デフォルトの名無しさん2016/07/04(月) 21:09:28.08ID:3pcfcKpn
質問です
@http://i.imgur.com/T7PiBmi.jpg

Ahttp://i.imgur.com/QswNeBd.jpg
みたいに、
@表データの黒太字以外の文字の色を白にしてAのように黒太字の列以外を非表示にするコードを教えて下さい
0213デフォルトの名無しさん2016/07/04(月) 21:30:55.53ID:crVdYcZS
>>212
色を変えたい範囲を選択して↓を実行

Sub ChangeToWhiteFont()
Dim c As Range
For Each c In Selection
With c.Font
If Not (.Bold And .ColorIndex = 1) Then
.ColorIndex = 2
End If
End With
Next
End Sub
0214デフォルトの名無しさん2016/07/04(月) 21:53:15.46ID:3pcfcKpn
>>213
出来れば列も自動で非表示にできるようにしたいです
0215デフォルトの名無しさん2016/07/04(月) 21:58:17.49ID:gJJxx5uO
後だし条件なうえに上から目線
0216デフォルトの名無しさん2016/07/04(月) 22:17:34.03ID:9BRDOIan
いや、列非表示って最初から書いてますやん
0217デフォルトの名無しさん2016/07/04(月) 22:25:07.57ID:crVdYcZS
>>214
よく読んでなかった。ごめんなさい
使い方は同じ。範囲を選択して↓を実行

Sub ShowOnlyBlackAndBold()
Dim col As Range
Dim toHide As Boolean
Dim c As Range

For Each col In Selection.Columns
toHide = True

For Each c In col.Cells
With c.Font
If .Bold = True And .ColorIndex = 1 Then
toHide = False
Else
.ColorIndex = 2
End If
End With
Next

If toHide Then
col.EntireColumn.Hidden = True
End If
Next
End Sub

(ただ、例示の画像だと「せ」列が残ってるけど、これは画像のミス?)
0218デフォルトの名無しさん2016/07/04(月) 23:12:28.55ID:fZa2v/xo
ExcelもWordも統合してHTML+JSベースの強力なオーサリングツールになればいいのに
ドキュメント中に作成された表はそれぞれがシートオブジェクト
方眼紙はやめよう
0219デフォルトの名無しさん2016/07/04(月) 23:42:24.20ID:3pcfcKpn
>>217
選択した列が全て非表示になってしまう…
0220デフォルトの名無しさん2016/07/04(月) 23:53:25.93ID:usjNXWI/
エクセルを帳票に使うクズは死ねばいいのに
0221デフォルトの名無しさん2016/07/05(火) 01:34:02.04ID:rtvoXzxv
>>219
フォント色「自動」の場合を考えていませんでした…
色の判定・操作に ColorIndex を使わずに Color を使うべきでした
Ifブロックを↓に置き換えてください…

If .Bold And .Color = RGB(0, 0, 0) Then
toHide = False
Else
.Color = RGB(255, 255, 255)
End If
0222デフォルトの名無しさん2016/07/05(火) 01:39:06.79ID:rtvoXzxv
>>221 追記
調べたら、色の定数がありました…
↓に訂正します…

If .Bold And .Color = vbBlack Then
toHide = False
Else
.Color = vbWhite
End If
0223デフォルトの名無しさん2016/07/05(火) 08:01:17.25ID:SGzeud2c
>>212
お前らすげーなー
オレには>>212は「黒太字以外の文字の色を白にして非表示にする」としか解釈できない
「黒太字の列以外」の意味が分からない・・
Aの例示であってるの?
0224デフォルトの名無しさん2016/07/05(火) 12:20:08.08ID:vwZ66KIR
日本語おかしいが解読可能なレベル
1を2にした後で黒太字列を非表示にしたいと読めなくもない
0225デフォルトの名無しさん2016/07/05(火) 13:45:09.33ID:P7lw8+Qp
>>222
やっぱり上手く出来ないです…
作っていただいたのにすいません

>>223
>>224
結局はAみたいに太字のセル以外の列を非表示にしたいだけです
(Aの画像はミスで「せ」列も非表示にしたいです)
実際使ってる表は数字が入ってるセルが空白になってて数字を入力すると入力したセルと一つ左のセルのフォントが太字の黒色になるように条件書式設定をしてます
いろいろ説明不足で申し訳ないですm(_ _)m
0226デフォルトの名無しさん2016/07/05(火) 14:10:57.60ID:rtvoXzxv
>>225
うわぁ、ほんとに後出し来ちゃったw
しかし、その説明だと@画像も実際とは違うことになるんじゃない?
(太字になっていない文字セルの右の数字セルは空白じゃないとおかしくない?)
0227デフォルトの名無しさん2016/07/05(火) 15:15:46.85ID:rtvoXzxv
・数字セルが空白の場合、その横の文字セルのフォント色を白にする
・数字セルが空白ばかりの列は、その横の文字列とともに非表示にする
…というコード↓

Sub HideEmptyColumns()
Dim cols As Range
Set cols = Selection.Columns

Dim colCount As Long
colCount = cols.Count

Dim i As Long
Dim c As Range
Dim toHide As Boolean

For i = 2 To colCount Step 2
toHide = True

For Each c In cols(i).Cells
If c.Value = "" Then
c.Offset(0, -1).Font.Color = vbWhite
Else
toHide = False
End If
Next

If toHide Then
cols(i).EntireColumn.Hidden = True
cols(i - 1).EntireColumn.Hidden = True
End If
Next
End Sub
0228デフォルトの名無しさん2016/07/05(火) 16:36:55.72ID:SGzeud2c
「せ」列が非表示じゃないから混乱した(>_<)

>>224
ほんとに解読してた?w

>>225
太字の黒色というのはあくまでも二次的で、空白なのか数字が入力されてるかどうかがスタートじゃないか。
それくらいは自分で整理してから聞くべき。
0229デフォルトの名無しさん2016/07/05(火) 16:45:10.22ID:PelZasoz
あるセルに「東京」を含む文字があった場合に、その行は残し、
それ以外の文字が入力されていたら、その行は削除し、次の行を同様に処理する、というプログラムを作っているのですが

for i=2 to 最終行
   if not cells(i,1) = "*東京*" then
   rows(i).delete
      i=i-1
   end if

と書いた場合に、cells(i,1)には「西東京支店」と入力されていても
0230デフォルトの名無しさん2016/07/05(火) 16:46:26.54ID:PelZasoz
すみません。質問させてください。↑では誤爆してしまいすみませんでした。

あるセルに「東京」を含む文字があった場合に、その行は残し、
それ以外の文字が入力されていたら、その行は削除し、次の行を同様に処理する、というプログラムを作っているのですが

for i=2 to 最終行
   if not cells(i,1) = "*東京*" then
   rows(i).delete
      i=i-1
   end if
next i
と書いた場合に、cells(i,1)には「西東京支店」と入力されていても削除されてしまいます。
正しいコードを教えてください。よろしくお願いします。
0231デフォルトの名無しさん2016/07/05(火) 16:50:27.66ID:NVlB09VE
>>230
=じゃなくてlike演算子を使うのが正しいのでは?
0232デフォルトの名無しさん2016/07/05(火) 16:52:50.76ID:PelZasoz
>>231

ありがとうございました!
動きました!感謝してます!
0233デフォルトの名無しさん2016/07/05(火) 17:12:03.04ID:eka1nMbT
>>230
最終行から-1して2までループした方が
行削除したあとi=i-1しなくて良くなる
0234デフォルトの名無しさん2016/07/05(火) 17:12:51.90ID:PelZasoz
なるほどです!ありがとございます!
0235デフォルトの名無しさん2016/07/05(火) 18:41:30.53ID:P7lw8+Qp
>>227
希望通りに実行出来ました!
深く感謝しますm(_ _)m
>>226
>>228
おっしゃる通りですね…
社会人なのにまともに相談すら出来ない自分が恥ずかしいです
0236デフォルトの名無しさん2016/07/07(木) 00:03:45.49ID:ms24UhoI
格好いい感じにしたいんですが、
何かないすかねぇ。
セルが二重スクロールとかするといいと思うんですけど。
0237デフォルトの名無しさん2016/07/07(木) 03:00:26.48ID:n0vQrV8D
>>236
何をもって格好がいいと言うのかはその人の価値観だから何とも言えない。
ただ、二重スクロールさせると言うならスクロールさせる方向にセルの値を書き換える擬似的な手段を取れば
二重スクロールどころかラスタースクロールも出来るんじゃないか?
0238デフォルトの名無しさん2016/07/07(木) 08:21:45.23ID:zdkrAvL1
このブックは自動的に消滅する
0239デフォルトの名無しさん2016/07/07(木) 09:10:15.40ID:N8OTwtyP
できらぁ!!

え?同じエクセルでステーキを?
0240デフォルトの名無しさん2016/07/08(金) 00:28:32.91ID:ASoGoDpa
ラスタースクロールの機能は普通に欲しいな。

といっても、ドラクエIIIの旅の扉とか、飛龍の拳の格闘シーンみたいな、
うねうねするやつじゃないぞ。
あれは全然実用的じゃないから。

欲しいのは、スーパーマリオの得点みたいなやつ。
セルの固定機能じゃ、横スクロールまでは固定されないからな。
何で標準で付いてないんだろうと思うわ。
0241デフォルトの名無しさん2016/07/08(金) 00:52:26.17ID:aiQDUAqq
>>240
あれはラスタースクロールじゃなくて
スプライト0を使ったただの画面分割じゃん
0242デフォルトの名無しさん2016/07/08(金) 12:20:08.11ID:NKWbtILN
ウィンドウ2つ開けよ
0243デフォルトの名無しさん2016/07/08(金) 21:30:53.58ID:ASoGoDpa
>>241
原理同じじゃないの?
0244デフォルトの名無しさん2016/07/08(金) 22:37:47.74ID:pvQfBsKn
>>243
全然違うけどここでその件を突っ込んで話すとあまりよろしくなさそうなので
他のスレに誘導してくれたらそっちで話してもいいけど
多分そこまで興味ないでしょ?
0245デフォルトの名無しさん2016/07/08(金) 22:54:08.11ID:CyJCu0oQ
セルじゃなくてテキストボックスか図でやれば簡単に出来そうだが
0246デフォルトの名無しさん2016/07/09(土) 00:58:36.14ID:ztQev+8o
@Excel VBAで記述したマクロは、Word VBA、Access VBAにも適用できますか?
AExcel VBAでプログラムを記述するとき、VBAのリファレンス本をみてサンプルを記述して動かすやり方と
マクロの記録を活用して自動化させたい操作をマクロに落とすやり方、どちらを活用されていますか。
個人的に後者はマクロの知識がなくても活用できて便利かなと思います。
Bマクロの自動化について、逆にマクロの自動化だけでは実現できないケースがあると思います。具体的などんな例があげられますか?
C普通プログラムって外部にDBがあって、そのDBをプログラムが間接的に参照する形をとるケースが多々というか一般的だと思うんです。
DBとプログラムは分離させるのが当たり前の世界ですが、Excel VBAの場合Excelブック内にDBの内容を持たせる
ことができるので他の一般的なプログラミング言語とは何かこう、特異なんですね。
どう思いますか?
0247デフォルトの名無しさん2016/07/09(土) 01:02:13.73ID:ztQev+8o
最後にExcel VBAで確認されている不具合にはどのようなものがあげられますか?
0248デフォルトの名無しさん2016/07/09(土) 01:22:25.32ID:oowJEj9N
>>246
1 ほとんどできないと思っていい。
2 うーん
本質的に分かってないな。例えば、シートをコピーして、とかひたすら合計していく、というような操作は
マクロの記録をそのまま利用できるよね。でも、選択肢がある場合とか条件に応じた処理のようなものは
マクロの記録で、というわけにはいかないでしょ?
だから二つを比べるのはおかしい。
3 上記の通り
4 何を言っているのでしょうか。VBAと一般的なプログラミング言語を同列で考えること自体ずれて
います。それにエクセルのシート内のデータはデータベースではありません。
データベース的に利用しているだけで、本質的には表です。
しかしながら、外部からODBCなどで参照することはできるので、データベース的に使うこともできる、という
だけです。それをどう思いますか?と聞かれてもね。
0249デフォルトの名無しさん2016/07/09(土) 01:34:33.01ID:7I8POFn2
>>246
バージョン如何によっても話が変わるし、
用語が適切に利用されてない事から正確に理解していないと容易に推測出来るので、
目的が明確にならない限り、齟齬を起こす可能性が高くて答えようがないな。

だいたいAとCはアンケートだし、それ聞く意味ないだろ。
0250デフォルトの名無しさん2016/07/09(土) 01:40:40.58ID:zD7puYdT
>>246
@ → 内容による、というか「マクロ」をどう定義しているのかによる
自分のプログラムはOfficeなら何でも動くようにしてるけど....
0251デフォルトの名無しさん2016/07/09(土) 01:41:27.03ID:zD7puYdT
>>248
>VBAと一般的なプログラミング言語を同列で考えること自体ずれています。

なぜ?
0252デフォルトの名無しさん2016/07/09(土) 02:41:45.14ID:EE+3+eK4
>>246
1.EXCELに依存しないVBAのコードは当然そのままほかのVBAでも動くので適用できる

2.サンプルみてもそのままのコードで済む事なんてほとんどない
マクロの記録してもそのコードそのままで動かすことなんてほとんどない
なので、どっちのやり方も活用してない

3.お前が思うことの具体例を聞かれても知らん
そもそもマクロの自動化だけで一切コードいじらないで済む例のほうがまれだと思うが

4.データとプログラムが一体な構造が特殊だというなら、特殊なんだろうな
必要ならデータのみのブックとプログラムのみのブックにわければ良いだけだが


今のVBAの不具合ですぐ思いつくようなものは知らんわ
VBAはかなり枯れた言語だぜ
0253デフォルトの名無しさん2016/07/09(土) 03:38:13.90ID:I/ga01ar
>>246
あなたはただの初心者です。

何か勘違いしてませんか?
0254デフォルトの名無しさん2016/07/09(土) 03:58:52.33ID:mZ5IXtng
>>246
@>>252に同じ。補足として、そういうのをビジネスロジックとしてクラス化しておくと使い回ししやすいよ。

Aどちらも使う。そもそも実現の為に手法を制限すると解も制限されるよ。

Bプログラムで最も基本である代入、演算、分岐の内、どれもそこそこの制限を受けるけど、中でも分岐を使うものは全くダメ。

Cmvcモデルとかで何か組んでたりしてたらそう思っても不思議はないね。
そもそもシートって何?ってところからになるけど、
viewなのかDBなのかと聞かれたら
それはその人の決めの問題だから、そう扱うと決めたらそうだと割り切りが必要なのはそうだと思う。
0255デフォルトの名無しさん2016/07/09(土) 08:12:21.48ID:p+DZy82L
データとコードを一体化するのは
データとメソッドをクラスとして扱うのと似てると思う
0256デフォルトの名無しさん2016/07/09(土) 08:15:27.53ID:p+DZy82L
データを再利用したいならcsvとかにしたり
データ用のブックにしたりすれば良いと思う
データとコードが一体化していて困るのは具体的にどんな場合だろう
0257デフォルトの名無しさん2016/07/09(土) 08:56:11.36ID:BZ9gM+QH
>>256
ちょっと調べてみたけど、ここなんか分かり易く載ってたよ
http://tawamuredays.blog.fc2.com/blog-entry-142.html
0258デフォルトの名無しさん2016/07/09(土) 10:54:31.00ID:p+DZy82L
>>257
データアクセスの役割とロジックの役割を分割しないと、データ側の変更の影響を受けるという問題があるということだけど

データとロジックが同じサーバに有ったとしても
役割を分離してればいいんでは?

エクセルファイルにデータとコードをパッケージしててもコードの役割としてデータ側の変更を受けないように、例えばデータアクセスのクラスを作ればいいって事では?
0259デフォルトの名無しさん2016/07/09(土) 11:03:31.48ID:7I8POFn2
一体化の捉え方を間違っているんじゃないかな。
別に実行ファイルの所在については言及してないのでは。
0260デフォルトの名無しさん2016/07/09(土) 11:10:44.19ID:p+DZy82L
>>259
データとロジックの所在が同じであろうと無かろうと
役割を分割してないとデータ側の変更の影響を受ける

役割を分離していれば所在がどうであろうと問題にはならない

という主張ですよ
0261デフォルトの名無しさん2016/07/09(土) 11:33:39.10ID:bZP8Dmrq
>>260
まーVBAではそうかもね
0262デフォルトの名無しさん2016/07/09(土) 12:25:45.10ID:My2a4Ewi
普段C#を使っています
VB.NETも気持ち悪くて苦手です
VBAは気持ち悪いってレベルじゃないほどキモイです
altJSみたいなaltVBAみたいな物はないのでしょうか?
MSがExcelマクロにC#などを採用しないのは何故ですか?
0263デフォルトの名無しさん2016/07/09(土) 12:27:40.79ID:EzNW6797
お前みたいな気持ち悪いユーザーが寄り付かないようにだろうなw
0264デフォルトの名無しさん2016/07/09(土) 12:29:08.37ID:My2a4Ewi
もしないならC#風の文法で書けるaltVBA作ってきていいですか?
0265デフォルトの名無しさん2016/07/09(土) 12:30:39.89ID:EzNW6797
勝手に作れば?www
0266デフォルトの名無しさん2016/07/09(土) 12:34:44.41ID:BZ9gM+QH
>>262
VBAはともかく、C#やっててVB.Netが気持ち悪い、またはその逆っていうのは
多分VSやりたててでまだ未熟なんだろうね。

慣れてれば大して違うもんでもないのでそこまでこだわるもんでもない。
0267デフォルトの名無しさん2016/07/09(土) 12:37:22.43ID:My2a4Ewi
>>266
とにかく長いのが嫌い
C#だと
int i;
で済むのを、
Dim X As Integer
と書かないといけない
この時点でまず面倒
そして
{
}

Then
End
などになる
とにかく長すぎる。IDE補充使ったとしても長すぎて読みにくい
0268デフォルトの名無しさん2016/07/09(土) 12:40:47.05ID:My2a4Ewi
無料のオープンオフィスはjavaとか使えるのに
フリーソフトに負けてどうするんだよ・・・
0269デフォルトの名無しさん2016/07/09(土) 12:48:15.59ID:msEW44YQ
嫌いだったら使わなければいいだろ?
嫌いだけど使わないといけないんだったらゴチャゴチャ抜かさんと使え

そのどちらかだ。
0270デフォルトの名無しさん2016/07/09(土) 12:51:11.20ID:7I8POFn2
>>267
VBAは変数を宣言する必要性がないから、低水準言語並の処理速度差を求めるのでなければ短く出来るよ。

それに読みにくいのは単純に慣れていないからであって文法の問題じゃない。
たぶん今までC言語処理系しかやってないんじゃないかな。
0271デフォルトの名無しさん2016/07/09(土) 13:09:34.52ID:zD7puYdT
>>267
長い?
0272デフォルトの名無しさん2016/07/09(土) 13:17:37.50ID:zD7puYdT
まあでもVBASharpなら見てみたいな
0273デフォルトの名無しさん2016/07/09(土) 13:30:12.39ID:kpQe9GN9
>>267
それは逆をいうと
スコープの最後が全て}や};で終わるということで、
一見して何の終わりか分からないという側面を持ち合わせているということに他ならない。
0274デフォルトの名無しさん2016/07/09(土) 14:20:28.56ID:/CIRrs//
ここは定期的に「自称C#エキスパート」の湧くスレですので
みんな「ああ、またか」としか思ってないのが本音ですってばよ
0275デフォルトの名無しさん2016/07/09(土) 15:31:55.96ID:Gn3rqjsV
>>274
まぁそれでもC++のよりはマシだけどな
0276デフォルトの名無しさん2016/07/09(土) 15:40:12.40ID:My2a4Ewi
>>274
エキスパートじゃない
0277デフォルトの名無しさん2016/07/09(土) 16:31:23.38ID:LxhRTLBZ
>>268
OSSの方がいいものができるのは今時珍しくもないだろう
0278デフォルトの名無しさん2016/07/09(土) 16:52:02.52ID:zD7puYdT
そんなにいいならみずほもC#にすりゃよかったのさ
0279デフォルトの名無しさん2016/07/09(土) 17:16:21.78ID:oowJEj9N
>>273
同感
0280デフォルトの名無しさん2016/07/09(土) 17:27:47.86ID:LxhRTLBZ
みずほは要件定義と仕様策定が元凶だから言語に何使ってもダメだよ。
逆にそこがちゃんとしていたらVBAでも完成できた(暴言)。
0281デフォルトの名無しさん2016/07/09(土) 18:00:43.63ID:JaOtBL9Z
vbaで新しい話題とかないの?
所詮は.netのパチモンだから新機能とかないんかね
0282デフォルトの名無しさん2016/07/09(土) 18:17:24.91ID:DlinzHsn
>>276
ID:My2a4Ewi
c#からエクセルを扱いなさいな。
0283デフォルトの名無しさん2016/07/09(土) 18:21:26.73ID:My2a4Ewi
>>282
マクロとして使いたいんだよ
0284デフォルトの名無しさん2016/07/09(土) 18:43:24.38ID:zD7puYdT
>>283
自分自身 >>264 で答えを出してるじゃないか。
0285デフォルトの名無しさん2016/07/09(土) 21:03:10.00ID:f44ee91j
おいまだaltVBAは出来んのかw
0286デフォルトの名無しさん2016/07/09(土) 21:06:29.92ID:My2a4Ewi
>>285
1年はかかる
0287デフォルトの名無しさん2016/07/09(土) 21:06:52.85ID:My2a4Ewi
数時間で言語完成させるとかエアプかな?
0288デフォルトの名無しさん2016/07/09(土) 21:11:32.86ID:f44ee91j
2ちゃん見とらんではよ書けやw
手動かせコード書け無能wwww
あと100万行書いたらその話聞いてやるわwww
0289デフォルトの名無しさん2016/07/09(土) 21:13:00.75ID:My2a4Ewi
無能ですがなにか?
言語仕様考える前にいきなりソース書くとか流石エアプ
0290デフォルトの名無しさん2016/07/09(土) 21:13:56.03ID:f44ee91j
屁理屈こねる前にコード書けや初心者くんwwww
0291デフォルトの名無しさん2016/07/09(土) 21:16:11.17ID:HMyh58Z8
どうせC#も大してできないんだろ
0292デフォルトの名無しさん2016/07/09(土) 21:20:02.51ID:vLtRI9S9
昨日仕事場でよく分からないのを見かけた。
フォーム上にスプレッドがあるんだが、EXCELのオブジェクトがはまってるような感じではなく、
VSでいうところのDataGridViewみたいなやつ。ここの人達にはACCCESSのスプレッドとか
グレープシティのスプレッドとか言った方が通りがいいか。
表示のみのようだったが、ちゃんとDBの値を表示していてスクロールもする。
これって何か実現方法思い付く人いる?
0293デフォルトの名無しさん2016/07/09(土) 21:22:18.98ID:My2a4Ewi
>>290
初心者で〜す(笑)
煽りたいなら好きなだけ煽れば?

>>291
VBAよりは出来る
0294デフォルトの名無しさん2016/07/09(土) 21:23:22.97ID:f44ee91j
超多機能スプレッドシート上で動作するフォーム内貧弱スプレッドwww
なんという逆転の発想wwww
0295デフォルトの名無しさん2016/07/09(土) 21:24:42.07ID:f44ee91j
>>293
はあ?説教やでこれ……
0296デフォルトの名無しさん2016/07/09(土) 21:24:51.86ID:My2a4Ewi
VBAerのレベルはこんなものか
言語が糞だと使用者も糞ってはっきり分かるね
0297デフォルトの名無しさん2016/07/09(土) 21:26:20.57ID:My2a4Ewi
>>295
wwwwwwこwwwwwwれwwwwwwがwwwwww説wwwwww教wwwwww
wwwwwwクwwwwwwソwwwwwwワwwwwwwロwwwwwwタwwwwww
wwwww大wwwww草wwwww原wwwww不wwwww可wwwww避wwwww
0298デフォルトの名無しさん2016/07/09(土) 21:48:21.99ID:7I8POFn2
>>292
たぶんListViewでColumnHeaderを隠してるんじゃないかな。
あれは慣れると便利。
0299デフォルトの名無しさん2016/07/09(土) 21:59:39.37ID:zD7puYdT
>>293
altVBAでもVBACsharpでもいいからとにかく作って公開してくれ。
もちろん完成前に公開するのだぞ。
Githubにブランチ切るのは今日中に出来るだろ?
0300デフォルトの名無しさん2016/07/09(土) 22:28:38.48ID:7WqlMe8g
VBAで複数のCSVをSQLしたいんですけど、
EXCELが勝手に0000を0に変換しやがります。
ふざけんなって感じじゃないすか。
Schema.iniを使えば良いらしいですが、

[あああ.csv]
設定値

[いいい.csv]
設定値

[ううう.csv]
設定値

こんな感じで書かなきゃいけないらしいんですよ。
やっぱふざけんなって感じじゃないですか。

[*.csv]
設定値

こうするか、もっと楽な方法ないですかねぇ。
Schema.iniをファイル毎に生成することも考えたのですが、
それもやっぱふざけんなって感じじゃないですか。
0301デフォルトの名無しさん2016/07/09(土) 22:31:00.46ID:7I8POFn2
>>300
SQLしたいの意味が分からないけどデータベースにCSV突っ込みたいって事ならFSO使えばいいんじゃないの。
0302デフォルトの名無しさん2016/07/09(土) 22:42:01.19ID:I/ga01ar
>>300
Excelが明示的にインポートしないと変換してくる仕様は昔から。
0303デフォルトの名無しさん2016/07/09(土) 22:45:11.11ID:I/ga01ar
CSVファイルのデータをExcel VBAでINSERT文を作るとか自動化してどうすんの?

そんなのCSVファイルをデータベースに直接、取り込めよw
0304デフォルトの名無しさん2016/07/10(日) 01:22:19.01ID:SJuqIpcR
先にセルを文字型にしておいても、変換されちゃうんだよな。
0305デフォルトの名無しさん2016/07/10(日) 01:26:39.76ID:kmEsp7hD
仕様ですから そこは
0306デフォルトの名無しさん2016/07/10(日) 01:27:56.57ID:Y6I/AZoa
だから後付けのインポート機能があるんだけどな。
0307デフォルトの名無しさん2016/07/10(日) 01:38:19.60ID:V7s9ehS1
Excelって何で一面データシートにしてしまったんだろうな
ワードドキュメントの中に表計算できるテーブルを配置するようにすればビューとしても優れていたのに
0308デフォルトの名無しさん2016/07/10(日) 01:43:12.49ID:Y6I/AZoa
>>307
表計算だから。

もともとドキュメントのつもりがない。
0309デフォルトの名無しさん2016/07/10(日) 02:01:23.99ID:kmEsp7hD
そうなんだよな。
だけど、驚くほどEXCELでなんでもやろうとする人が多いよね。
実際問題 VBAで複数のCSVを開けてデータを取り込みたいってどういう状況なんだろうか
0000が0になって困るってのはたぶん4桁固定のIDナンバーかなんかなんだろうけど。
EXCELで携帯電話のリストを作ると頭の0が、的な話はよく聞くけどね。
0310デフォルトの名無しさん2016/07/10(日) 02:07:17.65ID:L6uE6Z0Q
>>307
とりあえずWord 2010なら挿入→表→Excelワークシートで配置できるぞ。
0311名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 07:47:21.61ID:uhebCCS1
>>308
表計算はドキュメントやで
意味不明なオレオレ定義すんなやカスw
0312名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 09:01:51.34ID:tfCmg8P7
>>304
そうだっけ。配列の貼り付けとは違うんだな。
0313名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 09:12:50.42ID:2Txoqo86
>>311
早速現れたな煽り大阪民国人
0314名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 09:20:21.86ID:tfCmg8P7
本製品はドキュメント作成用ではありません。
0315名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 09:46:54.82ID:Y6I/AZoa
>>311
表計算ソフトの歴史を勉強してください。
0316名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 10:02:02.21ID:hfblKhxc
>>309
オレなんか、まっさらなエクセル立ち上げて、最初にシート全体を文字列表示にすることがよくあるぜ。
0317名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 10:05:17.60ID:Y6I/AZoa
>>316
俺もやる。

必要なところだけ書式を変える。
0318名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 10:18:33.88ID:vClNR34Z
つテンプレート
0319名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 10:59:32.99ID:hfblKhxc
テンプレは使わないなー
似たようなファイルを転用するケースもあるけど、
まっさらなキャンパスに絵を描くように、呼吸を整えて
まっさらなシートから始めるのが好きw
0320名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 11:56:02.55ID:kmEsp7hD
>>319
好きってww

うちの会社のおじさんでEXCELを立ち上げると、まず最初に列幅を調整して
セルが正方形になるようにするところから始まる人がいる
原稿用紙みたいになるという
0321名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 12:26:17.87ID:uhebCCS1
>>315
歴史てwwwお前がドキュメントの意味を間違えとるだけやでw
0322名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 12:32:14.71ID:vClNR34Z
>>320
正方形に調整しただけのテンプレート作って販売(キリッ したら
目玉が飛び出るほど大儲けできる気がしてきた
0323名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 13:52:10.57ID:hfblKhxc
将棋の局面画像作るのにエクセル使ってたけど(今はソフト)、ちょっと
縦長にしたほうが見栄えが良いんだよな。
実際に将棋盤もそういうふうになってるし。

あと、前から不思議に思ってたけど、右クリックで行の高さを指定すると、
なんでピクセルじゃなくてミリ単位限定なんだろ・・
0324名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 14:07:47.73ID:Sw0fYTeN
>>322
テンプレート使えるような人は既に自分で作ってるだろうし
使えないような奴はテンプレートの有用性が理解できない
0325名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 15:43:57.02ID:kmEsp7hD
結局、VBAでなんでもやろうとするって
炊飯器でこれも作れますというようなレシピ集と同じだと思う
できないこともないけどなんでVBAで、というね。
炊飯器でカレーが作れるのはわかるけど、鍋で作ればいいじゃん、食べた後に洗うのも大変だし、
本来の使い方ではないですよ、ということかな。
0326名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 16:11:51.93ID:L6uE6Z0Q
VBAはMicrosoftの説明を見る限りだと

「Officeソフトには便利な機能が沢山あるよ。でもこんな機能も欲しいって時があるよね?
そんな時は自分たちでちょっと弄るだけで機能を作れてしまうんだ。そう、VBAならね」

っていう立ち位置だから、調理器具ありきの小道具を作る為の旋盤辺りのイメージじゃないかな。
0327名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 16:12:18.13ID:vClNR34Z
>>324
もちろんそのはずだが…

世の中はもっと恐ろしいもので満ちあふれている

そうは思わないかね?
0328名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 17:47:47.87ID:Sw0fYTeN
> 世の中はもっと恐ろしいもので満ちあふれている
確かに
>>324 が理解できてるのに >>322 みたいなこと言う奴
がいるとか恐ろしすぎる w
0329名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 18:42:01.99ID:kmEsp7hD
ネタで言っているんだったらいいんだよね

だけど
わざわざサーバ上にEXCELファイルを置いて、ODBCラッパーを使ってアクセスするとか、
PHPEXCELなんかのライブラリまで使ってEXCELで読み書きしようとするとか
妙に遠回りすることを真面目に考えている人がたくさんいることが驚き
0330名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:03:25.27ID:SJuqIpcR
世の中、自由にソフトをインストール出来る会社ばかりじゃないからね。
ウチの会社、Excelが唯一の開発ツールなんだ。
0331名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:05:50.31ID:jEk+YG/W
俺、無事EXCELでツール作れるようになったら
この子と結婚するんだ
0332名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:08:58.92ID:Ey99Yjf2
PHPEXCEL
そういうのもあるのか
0333名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:38:30.46ID:IVr75jJz
Excelを全部大文字で書く奴は何かに取り付かれてるの?
0334名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:39:16.76ID:kmEsp7hD
>>330
なるほど。
そういうこともあるのか。
それは経費的な問題なの?それとも別なところ?
開発ツールということだから業務で使うわけだよね?
ここであえてPython使いになってヒーローになるってのはどう?
0335名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:45:12.11ID:U4n3zeVi
情シスじゃないんだろ
そんなのその部門に作らせるか出来なきゃ開発環境入れさせろと言えばいいだけ
0336名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:47:31.58ID:UiXNSESM
>>329
PHPEXCELなんかのライブラリまで使ってEXCEL*を*読み書きしようとする
これは普通やし、エクセルでなんでもする馬鹿とはちゃうで

> PHPEXCELなんかのライブラリまで使ってEXCELで読み書きしようとする
はあ?分かっとらんのお前ちゃうんか?wwww
0337名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:56:23.68ID:L6uE6Z0Q
>>336
データベース代わりにExcelファイル置くのがおかしいって話だろ。
0338名無しさん@そうだ選挙に行こう! Go to vote!2016/07/10(日) 19:57:39.16ID:nHmABucG
>>334
セキュリティとかライセンスとかじゃないのかな
0339デフォルトの名無しさん2016/07/10(日) 20:01:44.89ID:UiXNSESM
>>337
データベース代わりにExcelファイル置くのがおかしいって話やないんやでw
0340デフォルトの名無しさん2016/07/10(日) 20:04:05.29ID:kmEsp7hD
>>336
大学の研究室あたりだとあると思いますが、業務用での実例は限りなく少ないですね。
少なくとも普通ではないです。
趣味でやっている人はどうかはわかりませんが。
0341デフォルトの名無しさん2016/07/10(日) 20:12:23.88ID:UiXNSESM
>>340
おいおいおいおいw
エクセル帳票やエクセルからのデータ取り込みは世の業務システムでは腐るほどありふれとるんやでw
石を投げれば当たる、どころか、石を投げる隙間もない程やw

どうして2ちゃんごときですぐにバレる知ったかぶりしようとするんやwwww
0342デフォルトの名無しさん2016/07/10(日) 20:15:50.53ID:0mJUr/Ut
>>341
大阪チョンだと思われて舐められてるんだろ
0343デフォルトの名無しさん2016/07/10(日) 21:17:40.80ID:kmEsp7hD
>>341
腐るほど?そうなんですか。
少なくとも私の会社ではそういう受注はほぼないです。
14年やっていますが、10件なかったと記憶しています。
最も比較的中規模以上の案件が多いので、中小企業向けだとあるのかもしれませんね。
0344デフォルトの名無しさん2016/07/10(日) 21:34:16.21ID:UiXNSESM
>>343
なんでやねんwwww
大所帯になる程おいそれと業務を変える訳にはいかんのやでw
つまり大企業の方が融通きかんのやw既存データの有効活用!やなw
エクセルやなきゃ業務が回らん!エクセルは絶対や!言う調子やw
その点中小なんか身軽なもんやでwしこしこ作ったエクセルなんかあっさりポイッ!やw

匿名で知ったかぶりしてお前に何のメリットあんねんwwwww
0345デフォルトの名無しさん2016/07/10(日) 21:35:33.50ID:WXctcr0e
Excel連携なんて、いわゆる業務系のシステムなら規模の大小かかわらずくさるほどあるわ
業務用で実例が少ないとか大規模だから案件がすくないとか、どこの人だよ
0346デフォルトの名無しさん2016/07/10(日) 21:37:16.41ID:SJuqIpcR
>>334
>>338
両方。
Excelも、Libre使いづれえぞゴルァで、やっと入れてもらった。
0347デフォルトの名無しさん2016/07/10(日) 22:32:19.25ID:UiXNSESM
選挙特番で政治家をやり込めてドヤ顔するアナウンサーwwwwww
この国はどうしてこうなってもうたんやwww
0348デフォルトの名無しさん2016/07/10(日) 22:36:12.51ID:Cd5Emc7t
スレチ極まれり
0349デフォルトの名無しさん2016/07/10(日) 23:12:04.65ID:hfblKhxc
たまの雑談は脳の活性化に良いんだよ
いつも同じことを考えてると(語ってると)、脳が硬直化してしまう
0350デフォルトの名無しさん2016/07/10(日) 23:33:47.26ID:GYdsiemj
選挙の集計もエクセルVBAでやってると妄想してみる
0351デフォルトの名無しさん2016/07/10(日) 23:36:29.28ID:tfCmg8P7
VBAでなんでもできるよ
0352デフォルトの名無しさん2016/07/10(日) 23:40:32.34ID:DfUh8VIR
VBAで彼女が出来ました!!!111111
0353デフォルトの名無しさん2016/07/11(月) 06:25:35.94ID:RX3VZTta
スプレッドシートから出てこない彼女か。
0354デフォルトの名無しさん2016/07/11(月) 07:13:56.02ID:BOCVQw3X
>>350
基本 sum( ) だけでいいから VBA すら要らんかも
0355デフォルトの名無しさん2016/07/11(月) 09:17:54.22ID:TPKO4eIP
>>350
出口調査とかならExcelかな
0356デフォルトの名無しさん2016/07/11(月) 10:00:14.45ID:4DYEVU50
カチカチやるカウンターだろ
0357デフォルトの名無しさん2016/07/11(月) 22:03:47.85ID:krPSNDFU
Do While ファイル名 <> ""

ファイル名 = Dir()

Loop

★☆★☆★☆★☆★☆★
☆使い方は把握したっ!!☆
★理論はわからない。 ★
☆★☆★☆★☆★☆★☆
0358デフォルトの名無しさん2016/07/11(月) 22:34:45.29ID:pKTcIat2
そう
0359デフォルトの名無しさん2016/07/11(月) 23:04:32.43ID:e0Kt/sDL
シートのデータ操作にSQL
これ最強
0360デフォルトの名無しさん2016/07/12(火) 00:13:13.19ID:yxJiQG+Y
でもデータ消せないんだよね
SQLだと
0361デフォルトの名無しさん2016/07/12(火) 06:21:34.16ID:b7lJfcF5
エクセルの横に並んだ4つのセルに、
1から9までの数字を小さい順にいれます。同じ数字は入れません(3344などはなし)


1234
1235
−−
−−
6787
6789
終わり
0362デフォルトの名無しさん2016/07/12(火) 06:24:54.98ID:b7lJfcF5
すみません。教えて下さい。
0363デフォルトの名無しさん2016/07/12(火) 06:48:57.71ID:/prxUU2a
何を?
0364デフォルトの名無しさん2016/07/12(火) 07:01:09.89ID:EVevJ4ER
>>361
6787 ってのはアリなのか?
0365デフォルトの名無しさん2016/07/12(火) 07:13:32.57ID:b7lJfcF5
>>364
無しです。失礼しました。
0366デフォルトの名無しさん2016/07/12(火) 07:40:19.77ID:lO3FUe7L
それで何なんだよ。excelの前に日本語の勉強して来やがれ
0367デフォルトの名無しさん2016/07/12(火) 07:52:40.44ID:zY3sBabo
ワロス
0368デフォルトの名無しさん2016/07/12(火) 08:36:55.89ID:VFV9DvdR
>>361
Sub Macro1()
  r = 1
  For c1 = 1 To 6
    For c2 = c1 + 1 To 7
      For c3 = c2 + 1 To 8
        For c4 = c3 + 1 To 9
          Cells(r, 1).Resize(1, 4) = Array(c1, c2, c3, c4)
          r = r + 1
        Next
      Next
    Next
  Next
End Sub

終わり
0369デフォルトの名無しさん2016/07/12(火) 20:17:58.01ID:b7lJfcF5
>>368
ありがとうございます
0370デフォルトの名無しさん2016/07/13(水) 14:31:29.76ID:fL/U8spx
質問です
Sheet1にある複数の表をSheet2に縦に並べるマクロを作っているのですが
下のようにソートするにはどうすればいいでしょうか?

   1    2   3
A 所属  番号 名前
B 千葉   3  田中
C 東京   1  鈴木
D 神奈川  2  佐藤

所属  番号 名前
東京   1  鈴木
神奈川  2  佐藤
千葉   3  田中

Sheet1の表をSheet2に並べるfor〜Nextの後に
下のコードを追記したのですが
何故かソートされてなくて困ってます・・・

Worksheets("Sheet2").Sort.SortFields.Add _
Key:=Range("A1"), _
Order:=xlAscending, _
CustomOrder:="東京,神奈川,千葉", _
DataOption:=xlSortNormal
0371デフォルトの名無しさん2016/07/13(水) 15:26:24.91ID:5B7PTTew
>>370
Sub mac()
With Worksheets("Sheet2").Sort
  .SortFields.Clear
  .SortFields.Add _
    Key:=Range("A1"), _
    Order:=xlAscending, _
    CustomOrder:="東京,神奈川,千葉", _
    DataOption:=xlSortNormal

  .SetRange Range("A2:C4")

  .Apply
End With
End Sub
0372デフォルトの名無しさん2016/07/13(水) 15:57:11.46ID:tCh9e0QZ
>>370
ABCと123はタテヨコ逆だよね?
ようするにB列の番号順にソートすればいいんじゃないの?

Sub Macro1()
  Worksheets("Sheet2").Select
  With ActiveSheet.Sort
    .SetRange Range("A:C")
    .SortFields.Add Key:=Range("B:B")
    .Header = xlYes
    .Apply
  End With
End Sub
0373デフォルトの名無しさん2016/07/14(木) 13:00:58.61ID:rsGn6hhs
>>371
出来ました!
結局、with使ってなかったのと適用範囲を指定しなかったのがいけなかったんでしょうか?

>>372
タテヨコ逆でした、すいません…
0374デフォルトの名無しさん2016/07/14(木) 20:25:52.42ID:0KulxYW5
374が...
0375デフォルトの名無しさん2016/07/14(木) 23:28:03.33ID:IReSPOB2
【ワイルドカード】
Excel → *
VBA → *
SELECTとFROMの間 → *
LIKEの次 → %

はぁ?wwwwwwwwww
何でだよwwwwwwwwwwwwwww
マジふざけんなwwwwwwwwwwwwwwwwww
意味わかんねえよwwwwwwwwwwwwwwwwwwwww
んなもん気づくかボケwwwwwwwwwwwwwwwww
0376デフォルトの名無しさん2016/07/14(木) 23:32:35.52ID:+nL3BmHV
VBAによるIE制御で、待機をかけるのに次のようにしています。

Sleep (1000)
Do While objIE.readyState <> 4
Do While objIE.Busy = True
Loop
Loop

カッコ内の数値が少ないとエラーが出ることがあります。
ループで開いたのを確認してるのに、なぜわざわざSleepが必要なんでしょう。

もっとうまいやり方ありますか?
wait IE open みたいなメソッドがあればなあと思います。
0377デフォルトの名無しさん2016/07/14(木) 23:40:02.54ID:IReSPOB2
何か凄いと思うんですよ。
Dim Long as Longとか、アホなこと書いても、
ちゃんと止まってくれるというのは、
アホなことを書くことを想定しているわけですから。
0378デフォルトの名無しさん2016/07/14(木) 23:52:49.88ID:XHg24qzo
予約語
0379デフォルトの名無しさん2016/07/14(木) 23:55:34.82ID:ZrV1QMww
予約語を変数名に使えないのは他の言語でも常識だろ
0380デフォルトの名無しさん2016/07/15(金) 09:01:33.53ID:0fIM9HNP
>>376
多分、ページ表示後にJavascriptで生成されるようなボタンとかは
readyStateとbusyだけじゃ表示待ちしてくれない
自分は目当ての要素が現れるまでループして対処してる
0381デフォルトの名無しさん2016/07/15(金) 10:10:53.68ID:0qbP0pBp
>>380
なるほどー
確かにそれが原因っぽい
しかし、たかが表示待ちに3重の対策かけても、万全でないというのもなあ(嘆)

自分で使うだけならともかく、人様に使ってもらうのに、エラーは困るし・・
0382デフォルトの名無しさん2016/07/15(金) 10:13:18.25ID:dzVU2xrJ
これ↓をやる、とか。大変そうだけど…

ブラウザのビジー状態を判定するための,より良い方法 (WSHでIEを自動操作する際,COMのアプリケーションイベントを利用する) - 主に言語とシステム開発に関して
http://language-and-engineering.hatenablog.jp/entry/20100410/p1
0383デフォルトの名無しさん2016/07/15(金) 10:33:10.88ID:0qbP0pBp
ひゃあー
暇見て勉強しますw

>>380さん>>382さんありがとう!
0384デフォルトの名無しさん2016/07/15(金) 16:17:29.39ID:qjQsDUv7
DocumentCompleteとか、クライアントスクリプトの動作も判定してるとは思えんけど
判定してないなら、スクリプトで要素を生成する前にイベント起きるし
判定してるなら、スクリプトの書き方によってはずっとイベント発生しない事になるけど
0385デフォルトの名無しさん2016/07/17(日) 18:05:18.65ID:/9qSJYOV
以下の'フォルダのフルパスを変数に格納の箇所を別の任意のディレクトリやネットワーク先のディレクトリなどを割り当てると
「 Cells(i, 2).Value = FileDateTime(fl_name)」の箇所がエラーになるのですが
なにがまずいのでしょうか?

Sub フォルダを指定してファイル名と最終更新日時の一覧を作成する()
Dim fld As FileDialog
Dim fd_path As String
Dim fl_name As String
Dim i As Long

fd_path = "C:\Windows" 'フォルダのフルパスを変数に格納

'指定されたフォルダの一つ目のファイル名を取得1
fl_name = Dir(fd_path & "\*")

Worksheets("Sheet1").Activate
Range("A1").Value = fd_path
Range("A2").Value = "のファイル一覧"
Range("A4").Value = "ファイル名"
Range("B4").Value = "最終更新日時"
i = 5
ChDir fd_path & "\" 'カレントフォルダの変更

Do Until fl_name = ""
Cells(i, 1).Value = fl_name
Cells(i, 2).Value = FileDateTime(fl_name)
i = i + 1
fl_name = Dir '次のファイル名を取得
Loop

End Sub
0386デフォルトの名無しさん2016/07/17(日) 18:56:50.18ID:tjR971KD
>>385
「任意のディレクトリ」じゃなくて「別ドライブのディレクトリ」でエラーになるのでは?
ChDir fd_path & "\" 'カレントフォルダの変更
の前に
ChDrive Left(fd_path, 1)
を入れれば大丈夫かと
03873852016/07/17(日) 19:04:52.99ID:o4fUmHLb
>>386
ありがとうございます。無事解決しました!!
>「別ドライブのディレクトリ」でエラー
確かにそうです!
自力で見つけたのがエラーを無視するコマンドを入れるとそれなりに動くとわかりましたが ChDrive Left(fd_path, 1) がただしようで、仕組みはわかりませんがありがとうございました。勉強してみます。
0388デフォルトの名無しさん2016/07/17(日) 23:44:36.08ID:NpK28tAS
ワークシート指定するときワークシート変数で指定してる?
それとも単にワークシートの名前だけ指定してる?
拡張性考えるとどっちがいいのかいまいちわかってない
教えてプロvbaマン
0389デフォルトの名無しさん2016/07/18(月) 00:09:22.34ID:x26cHOJD
ワークシート変数って何?
0390デフォルトの名無しさん2016/07/18(月) 00:16:37.33ID:o+LTE5mQ
>>388
シートを削除したりするとSheet3だったのが
Sheet7とかになる
set ws=worksheets(name)
の方が良くないか?
0391デフォルトの名無しさん2016/07/18(月) 00:17:22.33ID:HKkMIkY8
>>388
ワークシートの名を自分できめられるならワークシートの名の指定で良いと思う、自分はそうしてる。
経験は無いがワークシートの名を他人が勝手にかえてしまうなら変数?のほうでいんでね
0392デフォルトの名無しさん2016/07/18(月) 00:18:39.50ID:7xyo80gW
シートの削除追加とかがあり得るならシート名だろうな
名前変えられたらそいつはシラネ
0393デフォルトの名無しさん2016/07/18(月) 00:22:08.99ID:HKkMIkY8
>>388
DBから落としてきたデータでシート名に変な番号がふられています。ただ処理するのは必ず1枚目のシートだけです。って時には裏番号のほうで指定かな。
0394デフォルトの名無しさん2016/07/18(月) 00:29:47.39ID:x26cHOJD
VBA内のコードで使う変数のことだったのか
自分はいつも、変数を用意してる。
で、その変数に入れるシートの名前をConstでコード先頭に書いてる
なんかの都合でシート名を変えるとき、そこだけ変えれば済むように
(シート名を変えたくなるのは、プログラムを組んでる自分だけとは限らない…)
0395デフォルトの名無しさん2016/07/18(月) 06:47:24.29ID:8204gr+v
>>388
拡張性を考えるならユーザーが切り替えられる様にしておく方がいいな。
作るときに認識ルール決めていても要求した本人が忘れて「バグった!」と騒ぎ出すから、
どういう認識の仕方をしているのかが分かるようになる事でマニュアル代わりにもなるし。
0396デフォルトの名無しさん2016/07/18(月) 07:47:03.08ID:GkCx8hci
>>388
変数さいつよ
0397デフォルトの名無しさん2016/07/18(月) 08:26:35.23ID:sdX2+4b7
>>389
「ワークシート(を)変数で」の意味だと思う。
この人は(を)を省略する傾向がある。

ワークシート(を)指定
名前だけ(を)指定
拡張性(を)考えると

オレも助詞を抜く傾向があるから、意識して付け加えることにしている。
ネットのせいなのか若者用語なのか・・
0398デフォルトの名無しさん2016/07/18(月) 08:41:57.15ID:gsecFLIc
ワークシートの名前: プロジェクトエクスプローラーで括弧内の方
ワークシートのオブジェクト名: プロジェクトエクスプローラーで括弧のついてない方
>>388の言うワークシート変数は後者の事やろきっと

ユーザーにシート名を変えられる可能性がある時は後者を使うのがエクセルマクラーのエチケットやで
0399デフォルトの名無しさん2016/07/18(月) 08:48:34.47ID:gsecFLIc
あれ?逆やったかなw
まあ大事なんはオブジェクト名の方やそれは間違いないわw
0400デフォルトの名無しさん2016/07/18(月) 10:00:05.79ID:OppMr/yg
クラスのアクセサですが、文献がいまいちのみこめません
「GetとLetが1セットです。 片方のみ記述することも可能です」とあります
例として、Msgboxで「1」と表示するプログラムを作るとします


クラス側
Private x As Byte
-----------
Property Get n1()
n1 = x
End Property
-----------
Property Let n1(z)
x = 1
End Property


標準モジュール側
Sub sample()
Dim y as new Class1
y.n1 = 0
Msgbox y.n1
End Sub

これをLetだけ使って書くとどうなりますか?
なんか何度やってもエラーです
0401デフォルトの名無しさん2016/07/18(月) 10:51:04.50ID:W+ugPZSR
>>400
そもそもLetだけってことは
取り込んだらその値は外部では使わないということだから、
内部で何らかしらに使うということ。

なのでLetだけを使って外部から値を取得しようとする考え方そのものが違ってる。

どうしてもLetだけで外部から参照するのであれば、それ用のメソッドを作れば出来るけど、
だったら今回のケースではLetとGetを付けた方がいい。意味がない。
0402デフォルトの名無しさん2016/07/18(月) 11:27:57.56ID:6GFraVIr
>>400
そのクラスの x というプロパティを外部からコントロールするけど、見せる必要がない場合のことを言ってるんでしょ?
外部に見せるプロパティは別にある、などが実用的なパターンじゃないか。
04034002016/07/18(月) 11:29:45.31ID:OppMr/yg
はあ
Letだけなら値を標準の方
命令をクラスの方に書かなくちゃいけない
そこまでは判ってまして
0404デフォルトの名無しさん2016/07/18(月) 11:57:11.43ID:A+CLIUB6
Letは値の代入用、Getは値の参照用。
Letだけしか書かなかった場合は、値を参照できないのでエラーが出るののは当たり前
0405デフォルトの名無しさん2016/07/18(月) 12:03:11.32ID:6GFraVIr
>>403
>Letだけなら値を標準の方
>命令をクラスの方に書かなくちゃいけない

「標準の方」って標準モジュールのこと?
なんか勘違いしてそうだね。
0406デフォルトの名無しさん2016/07/18(月) 12:23:50.75ID:GkCx8hci
>>400
はこの場合の期待値はなに?
0407デフォルトの名無しさん2016/07/18(月) 13:14:12.69ID:OppMr/yg
>>405 >「標準の方」って標準モジュールのこと?

そうです

>>406
期待値って何でしょうかね..

つまり400のコードと同じ結果になるプログラムを
Letの片方だけ使って書くとなると、どう書き直せばいいのかということです
Msgbox〜の命令はクラスモジュールの方に書くことになるわけですよね

それともそもそも「片方のみ記述することも可能です」ってのが間違ってるのですかね
0408デフォルトの名無しさん2016/07/18(月) 13:19:30.67ID:6GFraVIr
>>407
「GetとLetが1セットです。 片方のみ記述することも可能です」
っていうのは、

・Getだけあればいい、外部から直接Setする必要はない
・外部からSetはしたいが、その値を外部に見せる必要はない

のどちらかのときは片方のみでいいよと、いう意味なんだけど。
0409デフォルトの名無しさん2016/07/18(月) 14:26:09.42ID:A+CLIUB6
>>407
Letのみ → 書き込みのみ
Getのみ → 読み取り専用
Let/Get両方あり → 書き込み・読み取りがOK
0410デフォルトの名無しさん2016/07/18(月) 14:33:34.81ID:x26cHOJD
「『片方だけでいい』って言ったじゃないですか!Let書いただけで Get書いた時と同じにしてくださいよ!」
クレーマーやん…
0411デフォルトの名無しさん2016/07/18(月) 20:54:17.14ID:nJB0TA+A
まずその参考にした文献とやらを曝せ
VBA以外の言語での文献の内容が、VBAに100%合致するとは限らん
0412デフォルトの名無しさん2016/07/19(火) 21:47:33.23ID:hkEX6r05
大量のデータをエクセルファイルに書き込みたい時ってどうやるのがいいの?
データは100列で1〜10万行程度
ホスト言語はVB.NETです
0413デフォルトの名無しさん2016/07/19(火) 21:53:52.63ID:hg6Uu3X9
CSVファイルとして出力しとけばいいんじゃない?
0414デフォルトの名無しさん2016/07/20(水) 07:09:15.93ID:UwIuuVa1
>>413
だからそのやり方教えろや
0415デフォルトの名無しさん2016/07/20(水) 07:46:37.93ID:m8gh44FA
>>414
だからお前が何を知ってて何を知らないか言えや
0416デフォルトの名無しさん2016/07/20(水) 09:11:58.27ID:h/GfD3kV
http://blog.goo.ne.jp/ashm314/e/e79a8f2bd9c1b6f83df78d303d183f1c

たいていのデータはコピペでいけるけどな
0417デフォルトの名無しさん2016/07/20(水) 12:24:09.35ID:yRYAmqMn
>>416 のサイトで作られてるのはCSVじゃない
>CSV ファイル(タブ区切り)
つまりTSV
データ内にタブや改行が含まれないことが保証されてるならTSVでいいとは思うけど
(しかしこのファイルを.csvで保存したら変だよね、普通.txt)
0418デフォルトの名無しさん2016/07/20(水) 12:26:56.90ID:eXkna8pE
そもそもそんな大量データを何でEXCELに直接吐き出すの?
ACCESSの方が向いてるだろうし、そもそもVB.NetでやっているならSQLSERVERやORACLEで扱って
纏めたものをEXCELに吐きだせばいいのに。

実際100列10万行のデータなんて目視で確認なんてしないでしょうに。
0419デフォルトの名無しさん2016/07/20(水) 14:11:40.42ID:u68glDgj
計測器のログからグラフを書きたいとか普通によくあるネタじゃん
毎秒1000サンプルで2分弱測れば10万行だぜ
0420デフォルトの名無しさん2016/07/20(水) 19:53:18.06ID:fN9vKCxb
csvのA列から18 19 20を検索してExcelに表示させる方法教えて!
0421デフォルトの名無しさん2016/07/20(水) 21:06:06.74ID:LsLycZTQ
ここんところエスパー能力試される質問多すぎるだろ。
0422デフォルトの名無しさん2016/07/20(水) 21:29:23.96ID:SYwm8ejQ
夏休みに入ったんじゃね?
0423デフォルトの名無しさん2016/07/20(水) 22:02:03.54ID:K4cVgK3X
エスパー能力が必要とされる質問なんか答えなけりゃ良いのに答えたがる奴も多いし
ま、好きにしろだけどw
0424デフォルトの名無しさん2016/07/20(水) 22:34:35.95ID:Us5vNiuD
>>414
なりすましはやめてください
0425デフォルトの名無しさん2016/07/20(水) 22:42:18.98ID:VUwhOxS4
>>420
VBAで検索するよりCSVを丸ごと全部読み込んでからオートフィルターかけた方が早い
0426デフォルトの名無しさん2016/07/21(木) 07:11:56.45ID:XlgagdXR
vbaprojectのパスワード保護の自動化方法を教えてください
0427デフォルトの名無しさん2016/07/21(木) 14:02:44.89ID:XMzMLtSH
シートを2つに分割して一方のセルを選択するにはどうすればいいですか?
0428デフォルトの名無しさん2016/07/21(木) 14:07:57.86ID:rvx70Wp+
>>422の言う通りになってきた
0429デフォルトの名無しさん2016/07/21(木) 20:11:49.86ID:uhgPGv5i
亀レスで申し訳ないけど>>292で言ってたのの正体が分かったわ。
EXCELオブジェクト使ってる訳でもなく、どこぞから何か持ってきて入れ込んで参照している訳でもなくて
ラベルとスクロールバーで表現してるんだわ。

多分これ、そこそこ応用が利いて
EXCELシートの中で一定範囲のセルだけスクロールバーでスクロールしているように見せ掛けることが出来たり、
2013から取り入れられたグラフにスクロールバーで時系列を持たせる機能も擬似的に表現出来そう。

質問じゃなくて悪いけど報告までに。
0430デフォルトの名無しさん2016/07/21(木) 22:40:08.41ID:LZe6kNPo
拙者、頭悪いので、何言ってるのかわからないでござる。
0431デフォルトの名無しさん2016/07/22(金) 03:55:00.72ID:RfXIlP2K
器用な人が標準コントロールの組み合わせだけで小規模なワークシートもどきをフォーム上に作ってたのを見て感動した
ってことでしょ
0432デフォルトの名無しさん2016/07/22(金) 08:27:04.48ID:RYF3pcO+
初歩的な質問ですが

x1 = 3 Or 5
MsgBox x1

これを実行すると7が表示されるんですが
なんで x1 = 3 Or 5 だと x1 が7になるんでしょうか?
0433デフォルトの名無しさん2016/07/22(金) 08:33:14.12ID:LVcX/nWL
>>432
二進法とビット演算(論理和)について調べるがよろし
0434デフォルトの名無しさん2016/07/22(金) 08:33:55.26ID:ICNDF5v6
>>432
3は2進数で011
5は2進数で101
論理和orを計算すると
2進数で111
これは10進数で7
0435デフォルトの名無しさん2016/07/22(金) 08:34:35.59ID:0LYPsk9m
Orってビット単位なんだっけ?
5 = 101
3 = 011
を重ね合わせて111すなわち7になるんじゃね?
0436デフォルトの名無しさん2016/07/22(金) 08:36:10.15ID:0LYPsk9m
もしかして結果はTrueと見なされない?
04374322016/07/22(金) 08:41:55.46ID:RYF3pcO+
ということは
Or は両辺が整数だとビット演算をやる
条件式だといずれか真の二択をやる

この理解であってますか
0438デフォルトの名無しさん2016/07/22(金) 10:00:19.69ID:0LYPsk9m
Or演算子がCでの || じゃなくて | 相当だなんて罠としか言いようがないな
0439デフォルトの名無しさん2016/07/22(金) 10:46:56.75ID:oTdFFU0n
>>435
うん、ビット単位だよ
VBはみんなORもANDもビット単位

>>437
違う、すべてビット演算

だから1 AND 2ならFALSEになるので気をつけて
0440デフォルトの名無しさん2016/07/22(金) 12:50:44.70ID:LVcX/nWL
Boolean 型を適切に使えばほとんど混乱しないはず
0441デフォルトの名無しさん2016/07/22(金) 13:49:33.88ID:2d8IYdtg
こんなサンプル作ってみた
Sub boolTest()
 Dim i As Integer
 Dim b As Boolean
 
 '0x0001 と 0x0010 の論理積
 i = 1 And 16
 b = 1 And 16
 Debug.Print "i:" & i & " Hex(i):" & Hex(i) & " b:" & b & " Hex(b):" & Hex(b)
 '出力 i:0 Hex(i):0 b:False Hex(b):0
 ' ※論理積の結果は0x0000となり、10進数値としても0、ブール値はFalse
 
 '0x0011 と 0x0111 の論理積
 i = 17 And 273
 b = 17 And 273
 Debug.Print "i:" & i & " Hex(i):" & Hex(i) & " b:" & b & " Hex(b):" & Hex(b)
 '出力 i:17 Hex(i):11 b:True Hex(b):FFFF
 ' ※論理積の結果は 0x0011となり、10進数値は17、ブール値としては Trueと評価される。
 '   Boolean型変数に格納される際、0でない値はTrueとして
 '   ExcelのTrueの定義である0xFFFF(10進で-1)に変換されていることがわかる。
End Sub
0442デフォルトの名無しさん2016/07/22(金) 14:18:02.15ID:0LYPsk9m
でも = True での判定は要注意じゃなかったっけ?
0443デフォルトの名無しさん2016/07/22(金) 16:13:21.49ID:2d8IYdtg
懲りずにまた作ってみた
Sub boolTest2()
 '「1 and 3」をブール値として評価
 Debug.Print "1 and 3 : ";
 If 1 And 3 Then
  Debug.Print "True"
 Else
  Debug.Print "False"
 End If
 '出力 1 and 3 : True
 ' ※「1 and 3」は2進数で11となり、当然ブール値でもないが
 '   If 〜 then の条件なので自動的にブール値に変換して解釈される。
 '   11をブール値に変換すると(ブール型変数に格納したときと同様)True になる。
 
 '「(1 and 3) = True」をブール値として評価
 Debug.Print "(1 and 3) = True : ";
 If (1 And 3) = True Then
  Debug.Print "True"
 Else
  Debug.Print "False"
 End If
 '出力 (1 and 3) = True : False
 ' ※「1 and 3」は2進数で11、10進で3、ここではまだ条件式の一部なので数値のまま。
 '   なので、10進で-1 のTrueとの比較の結果はFalseになる。
End Sub
0444デフォルトの名無しさん2016/07/22(金) 18:39:30.73ID:kjsIIsyL
判断で使用する場合は0がFalseでそれ以外はTrue。
逆に数値変換するとFalseが0でTrueが-1。
何でTrueが-1かというと、その数値の領域で全てBitが立っている場合は
例えばIntegerだと2Byte、16進数で&hFFFF、これはVBAだとトップビットをマイナスとしていて、
&hFFFFから&h8001を-1〜-65535として10進数で表現しているから。

0は当然0だけど、&h8000が0になるかはちょっと忘れた。
0445デフォルトの名無しさん2016/07/22(金) 18:42:47.05ID:RfXIlP2K
>>444
イミディエイトウィンドウで
PRINT &H8000
てやってみ
0446デフォルトの名無しさん2016/07/22(金) 19:14:26.71ID:LVcX/nWL
>>442
どんな言語でも = TRUE とか == TRUE とか書く奴はアホだと思う
0447デフォルトの名無しさん2016/07/22(金) 20:03:27.54ID:2d8IYdtg
えっ
0448デフォルトの名無しさん2016/07/22(金) 20:03:44.13ID:kjsIIsyL
>>446
それな。
以前 If hoge Then じゃなくて If hoge = True Then って書かなきゃダメっていう
コーディングルールの仕事場に当たったことあるわ。

何でもTrueであることを明示しないと可読度が下がるとか。
何でその程度で読みにくくなるとか言ってる連中のレベルに合わせなきゃならんのだとは思ったけど
そこは社畜の悲しいところで「はい」としか言えませんでした。はい。ヘタレです。
0449デフォルトの名無しさん2016/07/22(金) 20:14:02.16ID:DRcbUMgM
If IndexNotFound Then Exit Function

みたいな書き方が出来るようにIfとかThenとかあるのにな。
0450デフォルトの名無しさん2016/07/22(金) 20:15:25.37ID:0LYPsk9m
言語によるかもしれんが
 整数 == bool値
という式では
 整数→ bool値
と変換されるんじゃなくて
 bool値→整数
と変換されるから、「0以外の整数はtrueに評価される」とだけ覚えていると「あれ?」ってなる。
0451デフォルトの名無しさん2016/07/22(金) 20:38:26.63ID:LVcX/nWL
>>448
まあ雇われの身じゃしょうがないよね
うちの会社でもコーディングルールはわからんけど結構その手のコードを見かけるからそう言う考え方に凝り固まった奴等がいるんだろうな

>>450
そう言うトラップもあるから Boolean と Integer の比較はエラーにして欲しいぐらい
0452デフォルトの名無しさん2016/07/22(金) 20:42:34.05ID:oTdFFU0n
>>448
いや、ヘタレじゃないよ
コーディングルールに口を挟む権限もないのに口を挟むのは無謀
お前の意見なんて誰も求めてないしとか言われるのがオチ
0453デフォルトの名無しさん2016/07/22(金) 20:43:06.09ID:1L1CnbzY
>>432
IF以外でORって初めて知ったわ。
直接 MsgBox 3 Or 5 でもいけるのな。
Excelで必要な状況が思いつかないけど。
0454デフォルトの名無しさん2016/07/22(金) 20:48:32.21ID:oTdFFU0n
>>451
俺も初心者の頃は必ず" = TRUE"を付けてたわ
そのほうが分かりやすい気がして

よく考えたら付けるべきじゃないなと思って現在に至る
0455デフォルトの名無しさん2016/07/22(金) 20:52:55.36ID:DRcbUMgM
>>453
BOOLEAN型がBYTE型よりもメモリを食うというのが嫌で、
BYTE型のビット一つ一つをフラグに見立てて処理していた時期が私にもありました。
0456デフォルトの名無しさん2016/07/22(金) 20:59:41.39ID:oTdFFU0n
>>453
ORは四則演算と同じ演算子、ANDも同じ
IF文は条件式の演算結果が0以外なら真、0なら偽として分岐するかどうかを判断してる

なので
If (Shift AND vbShiftMask) And (Shift AND vbCtrlMask) Then
 シフトキーとコントロールキーの両方が押されてる場合の処理
End If
とやってシフトキーとコントロールキーの両方押しても処理が行われない罠がある
0457デフォルトの名無しさん2016/07/22(金) 21:00:42.34ID:8iZGHv2N
>>453
組み込みとかファイルフォーマットを直接触るとかやるとビット演算は必須科目
0458デフォルトの名無しさん2016/07/22(金) 21:04:28.84ID:8iZGHv2N
>>456
> If (Shift And (vbShiftMask Or vbCtrlMask)) <> 0 Then
って書けよ
0459デフォルトの名無しさん2016/07/22(金) 21:12:45.74ID:oTdFFU0n
>>458
いや、罠になる書き方をあえて書いたんだが
て言うかそれシフトキーやコントロールキー単独で押してても通るんじゃないか?

シフトキーとコントロールキー同時押しの場合だから
If (Shift AND vbShiftMask) <> 0 And (Shift AND vbCtrlMask) <> 0 Then
が正解じゃないかな
0460デフォルトの名無しさん2016/07/22(金) 22:19:45.11ID:Oi2oQZIZ
仕様書に〜〜が真の場合〜〜って書いてあったらIF 〜〜 = True Then 〜〜が正しい
仕様書にもし〜〜なら〜〜って書いてあったらIF 〜〜 Then 〜〜が正しい
0461デフォルトの名無しさん2016/07/22(金) 22:24:09.76ID:CZyhF9yf
if文を2重にしたらあかんの?
0462デフォルトの名無しさん2016/07/22(金) 22:30:46.58ID:pZfwEDvq
>>461
いや、そこは使い分け。
VB.Netと違ってOrElseやAndAlsoのように
片側で条件を満たしていたらもう片方は見ないような命令があればいいんだけどね。
0463デフォルトの名無しさん2016/07/22(金) 22:33:44.86ID:8iZGHv2N
>>459
> て言うかそれシフトキーやコントロールキー単独で押してても通るんじゃないか?
ああすまん、素で間違えたわ
> If (Shift And (vbShiftMask Or vbCtrlMask)) = (vbShiftMask Or vbCtrlMask) Then
だな
0464デフォルトの名無しさん2016/07/22(金) 22:40:43.57ID:pZfwEDvq
何か変な日本語になっちゃったな
VB.NetみたいにAndAlsoやOrElseがあればいいのにって言いたかったんだけどね。
Bit演算子は余り使う機会は無いとは思うけど、例えば処理落ちを想定したキーの立ち上がりや
たち下がりを検出するような場合とても便利。

ついでにXor、排他的論理和っていうのも覚えておくと1年に1回くらい使う機会があるかもよ。
0465デフォルトの名無しさん2016/07/22(金) 23:23:18.45ID:juk3Zv6n
処理落ちを想定したキーの立ち上がりやたち下がりを検出するようなプログラムをVBAで書くのか
言語の選択間違ってるとしか思えんな

ビット演算多用するような人ならXorの出番は年一度ぐらいじゃ済まないだろうけど
EqvやImpなんて使ってるのを見た事ないんだが、要るのかこんなの
0466デフォルトの名無しさん2016/07/22(金) 23:28:39.29ID:FqPJsvF6
もしもの場合でしょ
0467デフォルトの名無しさん2016/07/22(金) 23:34:10.85ID:kDVDxE93
ベーシックの時代にマシン語でゲームをプログラミングした人なんかもう60過ぎてるだろうな。
0468デフォルトの名無しさん2016/07/22(金) 23:39:21.02ID:ULnutzYh
>>467
PC-8001でマシン語使ってたけどまだ40代 v(^ ^)v
0469デフォルトの名無しさん2016/07/22(金) 23:45:09.56ID:2d8IYdtg
>>468 何歳代かって言えば40代なだけだろうがこの50前!(同年代)
0470デフォルトの名無しさん2016/07/23(土) 00:12:16.26ID:da2akIvt
俺もAppleUでマシン語というかアセンブラやってたけど、やっぱり同年代。
でもあの頃の知識なんて今は殆ど糞の役にも立ってない。
今はやっぱりC#かなぁ。
0471デフォルトの名無しさん2016/07/23(土) 01:11:52.62ID:u6vF+2FW
mon
g5000
0472デフォルトの名無しさん2016/07/23(土) 01:26:57.83ID:bya2YY6V
>>463
なるほど上手い書き方だな

>>468
俺はポケコンのPC-1350でマシン語だわ
PC-8001ほしかったけどまだ小学生で買ってもらえなかったわ

>>470
あの頃の知識でC言語のポインタに躓かないで済んだし、エラーの原因追及や
エラーメッセージの理解に役立ってると思うけどな
C#はWindowsのGUIアプリ作るのには重宝するわ。JavaのSwingとか面倒
0473デフォルトの名無しさん2016/07/23(土) 05:41:37.11ID:1HaRX3ET
>>472
Windowsだけでいいなら、Swingなんて使わねえよ。
0474デフォルトの名無しさん2016/07/23(土) 07:29:43.80ID:MIlmP+ox
助けて!
うちの仕事場strutsなの!
0475デフォルトの名無しさん2016/07/23(土) 09:29:25.43ID:2bxKNtql
30年以上前のことだからよく覚えてないけど、ビット操作やったなあ
60代・・

ちなみに40年前に初めて触った100万以上するシャープのパソコンは簡易言語だが、
経理に頼まれて手がけた金種計算プログラムですらメモリー足りなくて頭ひねった。
こういう所があったら、競争であっという間に解決案を見つけてくれるなw
0476デフォルトの名無しさん2016/07/23(土) 11:46:05.09ID:qM9FSb2o
メモリが足りなかったからフラグなんて1ビットずつ詰めて使うのが当たり前だったのに、今のBoolean型ときたら・・・・
0477デフォルトの名無しさん2016/07/23(土) 18:32:01.47ID:3eZVR2BS
正数をマイナス値に変換したいのですが

If Cells(1, 1) < 0 - Cells(1, 2) Then

セルB1に50と入力されている状況で
この値を-50として扱いたい場合は上の式のような書き方で問題ないでしょうか?もっと合理的な方違法があるのでしょうか?
0478デフォルトの名無しさん2016/07/23(土) 18:33:32.41ID:g2JPf/Pc
A1 B1
-51 50
0479デフォルトの名無しさん2016/07/23(土) 18:44:40.18ID:nVwrpHhO
0無しで直接いけると思うけど・・・

If Cells(1, 1) < -Cells(1, 2) Then
0480デフォルトの名無しさん2016/07/23(土) 18:47:55.04ID:g2JPf/Pc
>>479
なんとこんなやり方があるとは知りませんでした。
ありがとうございました。
0481デフォルトの名無しさん2016/07/23(土) 20:29:32.99ID:a1Po09QO
>>477-480
この一連の流れが理解できないのは俺だけ?
0482デフォルトの名無しさん2016/07/23(土) 21:55:05.74ID:ZmjtE4Zb
二項演算子か単項演算子か
0483デフォルトの名無しさん2016/07/23(土) 23:42:18.24ID:/Y8I/mSf
>>481
理解はできるが、思いつかない式だな。
パッと見、普通のセルよりデカいマイナスセルって何だよって感じだし。
0484デフォルトの名無しさん2016/07/23(土) 23:59:53.30ID:cHgz8jwM
RangeオブジェクトのデフォルトプロパティがValue
そのマイナスの値
0485デフォルトの名無しさん2016/07/24(日) 00:06:59.14ID:ZNLcMouN
ああ、Ifとか比較演算子とか関係なくて
0 - Cells(1, 2) が
-Cells(1, 2) でいいって、それだけの話か
0486デフォルトの名無しさん2016/07/24(日) 00:16:07.94ID:ZNLcMouN
ちなみに俺なら、単項演算子の-は比較演算子よりは優先順位高いのはイメージしてるけど
<と(2項演算子の)-と、どっちが優先順位高いか即答できないので
If Cells(1, 1) < 0 - Cells(1, 2) Then と書くなら
If Cells(1, 1) < (0 - Cells(1, 2)) Then と書くけどな
0487デフォルトの名無しさん2016/07/24(日) 00:18:53.15ID:XJWT+g9W
>>481

>>477
0-50 = -50   
    ↓
X <(-50) 

>>479
X <- (50) 

わかりやすくするためかっこをつけてみた。
0488デフォルトの名無しさん2016/07/24(日) 00:20:25.62ID:XJWT+g9W
>>486
2分おそかったかwww
0489デフォルトの名無しさん2016/07/24(日) 00:27:21.07ID:QPXcTu01
32ビッtcCPUだと、
IntegerよりLongの方が速いって本当ですか?
速くてもメモリに悪いとかありますか?
0490デフォルトの名無しさん2016/07/24(日) 06:17:12.71ID:0Ujlbf2D
>>489
どっちが速いかは単純には決まらないらしい
http://homepage2.nifty.com/GTX_4WD/paso/excel_VBA/Integer_Long/Integer_Long.html
0491デフォルトの名無しさん2016/07/24(日) 07:28:57.85ID:ly5reTdt
>>489
気になるなら実測すればいい
0492デフォルトの名無しさん2016/07/24(日) 08:36:56.04ID:QPXcTu01
>>490
>>491
Win10 Corei5で実測したらIntegerの方が速かったです。
/(^o^)\
0493デフォルトの名無しさん2016/07/24(日) 13:28:18.80ID:ZNLcMouN
そもそもCorei5は32ビットCPUじゃないだろうと
0494デフォルトの名無しさん2016/07/24(日) 14:11:43.82ID:mqY1fj6D
Intel64はAMD64と同様32bitでも64bitでも動かせるよう設計されたCPU
Intel64がAMD64のパクリというかMSがIntelにAMD64と同じように作れと指示した
0495デフォルトの名無しさん2016/07/24(日) 17:31:14.75ID:R21VyQ/k
そういやIA32のCPUって今売ってるのか?
0496デフォルトの名無しさん2016/07/24(日) 18:10:52.71ID:0Ujlbf2D
>>495
組み込み用として現役で出荷されてる
個人が単体で買うことはできないはず
0497デフォルトの名無しさん2016/07/25(月) 15:32:35.10ID:yzQSnoSu
現象 HasFormulaがTrueしか返さなくなる

環境1 Excel2007 Windows7からWindows10にアップグレードした後で誤判定が起こるようになった
環境2 Excel2013 Windows8.1では正しく判定できる

'メインのプロシージャ
Sub QuitbyVBA()
Cells(1, 1) = 1
Cells(2, 2) = 2
Application.Quit
End Sub

'ThisWorkbookに以下を記述
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Cells(1, 1) = "1" And Cells(2, 2) = "2" Then
sss = Cells(3, 3).HasFormula 'Cells(3, 3)に数式が入っていなくてもHasFormulaが誤判定してTrueになってしまう
If sss = True Then MsgBox "数式が入ってるよ"
End If
End Sub

ちなみにandで条件判定を1つのIfにまとめてますが、andを使わずに2つのIfに分けて記述すると、
今度はCells(3, 3)に数式が入っていてもHasFormulaがFalseしか返さなくなる謎もあります。

Windowsアップグレードに関わるHasFormulaのバグと考えてますが、何故このような結果なってしまうのでしょう?Excel2007とWindows10の相性が悪いのでしょうか?

HasFormula以外でWindowsアップグレード前と挙動が変わってしまう例ってありますか?
0498デフォルトの名無しさん2016/07/25(月) 16:32:43.09ID:AgJoaEht
>>497
そのブックうp
0499デフォルトの名無しさん2016/07/25(月) 18:16:51.79ID:meg0UQ5k
Win7 Excel2010で試した
一回 Cells(3, 3) に数式を入れてTrueを出したら、セルを削除しても何してもTrueばっかり出るようになった
Cells(2, 2) の値を消してQuitbyVBA内のCells(2, 2)への書き込みをコメントアウトしたら、ようやくFalseになったけど
Cells(2,2)に値を入れるとまた元に戻る
とりあえず、一回Trueを出すとCells(2, 2)に値があるだけでTrueになってしまうという状態に、自分はなった

さっぱりわからない…

ちょっと違うが、こんなの↓も見つけた(このページでも、HasFormulaは「信頼性にかける」という結論になっている…)
ExcelのHasFormulaプロパティ
https://social.msdn.microsoft.com/Forums/windowsdesktop/ja-JP/b53db5f7-2701-457c-bfb1-34e0e051c5fa/excelhasformula?forum=vbajp
0500デフォルトの名無しさん2016/07/25(月) 18:42:45.74ID:lBTvXBVT
>>497
VistaのExcel2007で試してみたが同じ現象になった。
Windows10はおそらく関係ないかもしれない?
0501デフォルトの名無しさん2016/07/26(火) 16:14:14.36ID:8lM88XPQ
初心者だし全然わからないけど、ブックかシートの指定の関係は?
>'Cells(3, 3)に数式が入っていなくてもHasFormulaが誤判定してTrueになってしまう
別のシートのCells(3,3)の判定結果が出てるとしか思えないw
0502デフォルトの名無しさん2016/07/26(火) 20:42:57.39ID:JTSnjpWK
Excel2007でユーザーフォーム上に表(エクセルシートのようなイメージ)を表示させたい
その実現方法は、リストボックスというコントロールを使うしか思いつかなくて
他にはないですか。
テキストボックスを縦に並べて作成してこれらをまとえてコピーして貼り付けを繰り返す
のはなしにしてください。
0503デフォルトの名無しさん2016/07/26(火) 20:55:16.90ID:xU7WOVAC
Microsoft OfficeSpreadSheet ってコントロールは?
0504デフォルトの名無しさん2016/07/26(火) 21:01:29.28ID:xU7WOVAC
後、ListViewコントロールでもグリッド出せるからそれでも良いのかも?
0505デフォルトの名無しさん2016/07/26(火) 21:02:15.41ID:JTSnjpWK
>>503
そのコントロールはネットで調べて知ったけど
昔のExcel2003にはあって、Excel2007以降はなぜか消えてなくなった。
ネットから落としてくるしかないのかな。
0506デフォルトの名無しさん2016/07/26(火) 21:17:36.34ID:JTSnjpWK
>>504
ListVeiwでぐぐったら自分のやりたいこととマッチしていたのでListView使います
0507デフォルトの名無しさん2016/07/26(火) 21:24:18.53ID:xU7WOVAC
>>505
そうなの?俺、excel2010だけど、あるよ
2010で復活したのか?

http://www.rupan.net/uploader/download/1469535720.JPG (pass excel)

まぁ無かったらListviewコントロール使うかどうか。後は知らない
0508デフォルトの名無しさん2016/07/26(火) 21:27:04.66ID:xeltoumX
最初に無があった
無は有を生んだ
これが全ての真理
0509デフォルトの名無しさん2016/07/26(火) 21:27:13.35ID:xeltoumX
最初に無があった
無は有を生んだ
これが全ての真理
0510デフォルトの名無しさん2016/07/26(火) 22:44:36.67ID:GPggNQqq
高校生の時、全ては真理ちゃん一筋だった。
0511デフォルトの名無しさん2016/07/26(火) 23:02:43.29ID:cvnz4fCK
マリちゃん危機一髪
0512デフォルトの名無しさん2016/07/27(水) 01:06:38.12ID:GTzALfEo
>>503
OfficeSpreadSheetは、2003までに付属していた
オプション機能 Office Web Components の一部みたいね

2007で使う場合、以下が必要っぽい
(あと念のためWindows Updateもいくつか)

Office 2003 アドイン : Office Web Components
https://www.microsoft.com/ja-jp/download/details.aspx?id=22276

2007 Microsoft Office system 用 Microsoft Office 2003 Web Components Service Pack 1 (SP1)
https://www.microsoft.com/ja-jp/download/details.aspx?id=1878
0513デフォルトの名無しさん2016/07/27(水) 03:05:33.13ID:qEY12Ne0
>>511
最後の1枚を脱ごうとしたところでバグる(という演出)だった
0514デフォルトの名無しさん2016/07/28(木) 15:13:58.74ID:y25yJxgm
このスレに株をやってる猛者はおらんかね
0515デフォルトの名無しさん2016/07/28(木) 16:19:29.19ID:hvVeXg7C
猛者じゃないけど株はやってる
今日だけで時価総額△42,300円
昨日は+34,000だったが・・
0516デフォルトの名無しさん2016/07/28(木) 16:20:17.93ID:LmLdUHqp
いまは為替の方が怖くね?
0517デフォルトの名無しさん2016/07/28(木) 19:43:37.58ID:LfaWZ7kq
データは集めている(取引は現在やっていない)。で、だからどうした。アンケート取りたいんなら他の板でやれよ
0518デフォルトの名無しさん2016/07/28(木) 20:19:17.67ID:XaliVrvY
株のデータを自動的に取得したい←分かる
取得したデータを分析して取引に活かしたい←分かる
それをエクセルで管理したい←分からない
0519デフォルトの名無しさん2016/07/28(木) 20:39:47.69ID:CiVs2W3d
>>518
まえ二つは分かるのか
0520デフォルトの名無しさん2016/07/28(木) 22:00:43.78ID:qROkzyYk
マクロで行の高さを自動調整って出来ないもんかね
折り返し文字を入れてるんだけど、セルの結合してないのに行の高さが自動調整されなくてイライラする
0521デフォルトの名無しさん2016/07/28(木) 23:16:01.48ID:XaliVrvY
>>520
Rows(x).AutoFit
0522デフォルトの名無しさん2016/07/29(金) 00:06:48.97ID:Igy5PGjq
2013で、シートは1048576行あるのに、
SQLだと65536行以上取り出せないのは何故???
maxbuffersizeとか増やしてもダメなんですけど。
SQLの意味ないじゃんじゃん。
0523デフォルトの名無しさん2016/07/29(金) 00:33:16.27ID:Wk8+6TzI
そりゃバッファサイズで行数が変わるわけないとは思うが
まさかこれじゃないよね…
Excel 2007で6万5536行以上のデータ - その他MS Office 解決済 | 教えて!goo
http://oshiete.goo.ne.jp/qa/6994180.html
0524デフォルトの名無しさん2016/07/29(金) 00:34:07.50ID:Wk8+6TzI
行あるって書いてたwごめんごめん
0525デフォルトの名無しさん2016/07/29(金) 00:35:02.04ID:3utCGLxp
そんなに大量の行をSQLで引っ張るってのは普通しないんじゃないかな?
設計としておかしいと思うけど。
0526デフォルトの名無しさん2016/07/29(金) 00:36:49.84ID:Igy5PGjq
>>523
それではないです。
シート自体は1048576行あるので。
0527デフォルトの名無しさん2016/07/29(金) 00:42:46.35ID:Igy5PGjq
>>525
普通はAcsessでしょうけどね・・
ウチの会社、Acsessは一部のPCにしか入ってないので、
Excelでやるしかないんです・・
0528デフォルトの名無しさん2016/07/29(金) 00:43:02.92ID:eExW206l
>>521
それで出来ないから言っとるんや…
0529デフォルトの名無しさん2016/07/29(金) 00:43:45.04ID:Igy5PGjq
すいません、そういう意味じゃないですね
0530デフォルトの名無しさん2016/07/29(金) 01:20:27.10ID:Wk8+6TzI
MySQLからデータ読み込んで、11万行いけたよ(それ以上はめんどくさいので試してない)
DBの種類と接続方法は?
0531デフォルトの名無しさん2016/07/29(金) 01:50:12.08ID:uBfaHE9r
DBが何か以前に、SQLで取り出しってのは具体的には何をどうやってるんだ
0532デフォルトの名無しさん2016/07/29(金) 12:19:47.18ID:dOXRlCQn
>>528
そんな情報>>520のどこにも書いてねーだろ死ね
0533デフォルトの名無しさん2016/07/29(金) 12:40:50.88ID:kD4Qgjdf
>>522
取り出せないと言ってるのは何かからRecordsetに取り込んでそれがExcelのシートに取り出せないのか
ExcelのシートにODBCとかでSQL投げてRecordsetに取り込めないのかどちらだ?
0534デフォルトの名無しさん2016/07/29(金) 12:47:14.14ID:bmnSbyBv
きちんとわかりやすく説明できる人は、ググルなどして自分で解決できる能力がある人。
つまり、自分で解決できない人はきちんと説明できない。

「AならばB」=「BでなければAでない」
0535デフォルトの名無しさん2016/07/29(金) 13:14:11.23ID:WGKZmyFx
>>534が何を説明しているのか全くわからない
0536デフォルトの名無しさん2016/07/29(金) 13:15:19.34ID:t/FCclov
>>532
行の高さの自動調整が出来ないって書いとるやん
0537デフォルトの名無しさん2016/07/29(金) 13:20:04.21ID:0AtpCrW0
>>535
大丈夫、俺もわからない。多分テキトーにそれっぽいこと言ってるだけだろう
0538デフォルトの名無しさん2016/07/29(金) 13:37:55.13ID:bmnSbyBv
>>535 >>537
頭に「聞きたいことを」を加えてくれ・・
総合スレに行くとほとんどそうだぜ。

>>522とか>>528に言ってる。
0539デフォルトの名無しさん2016/07/29(金) 13:48:09.76ID:dOXRlCQn
>>536
なにがどう出来ないのかわからねーよ死ね
まず自分が何をしたか書け
エラーが出るならそのエラー内容を省略せずに書け
意図した動作と違うなら意図していた動作と結果の動作を書け
そして死ね
0540デフォルトの名無しさん2016/07/29(金) 14:49:22.94ID:JTeyEx+C
>>535
対偶な
0541デフォルトの名無しさん2016/07/29(金) 15:05:09.29ID:manwr+ZE
>>535
逆の裏な
0542デフォルトの名無しさん2016/07/29(金) 23:50:17.96ID:Igy5PGjq
>>525
>>530
>>531
>>533
>>523
すみません、自己解決しました。

Excelのテーブル化に、名前の定義を使ってたんですけど、
これが65536行以上あると、
Microsoft Query側で、テーブルとして認識してくれないようです。
(テーブル選択画面に出てこない)

名前の定義をやめて、システムテーブルにしたら出来ました。

SELECT * FROM 定義した名前 → 65536行以上は不可
SELECT * FROM シート名 + $  → 65536行以上もOK
05435302016/07/30(土) 00:11:44.76ID:cua4PELF
なーる。これですっきりしたw お疲れさまでした。
0544デフォルトの名無しさん2016/08/02(火) 22:03:17.94ID:tn1deP8x
>>542
うちの2007で試したけど範囲名指定で7万行取ってこれてるけど?
0545デフォルトの名無しさん2016/08/02(火) 23:39:52.71ID:ou8OQMDu
ちょいと質問
Dim Sht As Worksheet
Set Sht = ThisWorkbook.Worksheets("Sheet1")
Sht.Cells(1, 1) = 1
Sht.Cells(2, 1) = 3
Sht.Cells(3, 1) = -2
Sht.Cells(4, 1) = 0
Sht.Cells(5, 1) = 5
Sht.Cells(6, 1) = -1
MsgBox Application.Max(Range("A1:A6"))

2行目のsetで実態のシートをセットせんとうまい事いかんことはわかってる
しかしこれだとsheet1に値がセットされてしまう。
なんかテンポラリ的にsheetオブジェクト?を使ういい方法ありませんかね?
上記MAXは一例。(配列でできるのはわかってます。)
0546デフォルトの名無しさん2016/08/02(火) 23:58:13.81ID:NwFNUrUJ
テンポラリ的に・・・というのがどういう事なのか分からないけど
Sheet1固定じゃ無く、現在開いているアクティブなSheetに対して行いたいなら

Set Sht = ThisWorkbook.Worksheets("Sheet1")

Set Sht = ActiveSheet
0547デフォルトの名無しさん2016/08/03(水) 00:00:58.04ID:fyF/wT3P
一時的な作業場所が欲しいというなら
Workbooks.Add して何かして終わったら .Close SaveChanges:= False は?
0548デフォルトの名無しさん2016/08/03(水) 00:03:02.45ID:mspOG63m
配列がいいだろうな
0549デフォルトの名無しさん2016/08/03(水) 00:05:53.07ID:BOTm7b5n
>>545
そのサンプルで代入されてる値(1, 3, -2, 0, 5, -1)がどこから来ているの?
最適な手段はそれにもよるんじゃないか。
それと、配列ではできない理由もあるの?
0550デフォルトの名無しさん2016/08/03(水) 00:16:58.28ID:xy6RBZ5E
>>546-549
どもです
説明べたですまん
単に一時的なシートが欲しいんだ
だから>>547さんのレスが一番近いかな

>>549さん
値は適当だよ。単に一例としてMAXを表示させるためだけのもの

配列だとsheet特有のメソッド?が使えないし
やっぱり実態化するしかなさそうかな
0551デフォルトの名無しさん2016/08/03(水) 00:29:44.00ID:BOTm7b5n
そういう需要もあるのか
0552デフォルトの名無しさん2016/08/03(水) 01:07:26.04ID:fyF/wT3P
WorkSheetFunctionを使いたいだけなら、シートがなくてもいけるね
Sub useWorkSheetFunction()
 Dim everyday As Variant
 everyday = Array( _
  Array("06:00", "元気"), _
  Array("10:00", "ねむい"), _
  Array("17:00", "だるい"), _
  Array("24:00", "ふつう"))
 Debug.Print "今、" & WorksheetFunction.VLookup(Time(), everyday, 2, True)
End Sub
0553デフォルトの名無しさん2016/08/03(水) 04:01:24.17ID:wKahhl4a
中間ワークとしてワークシート使いたいってなら、追加して後で削除で良いんじゃね
Set Sht = ThisWorkbook.Sheets.Add
'作業
Application.DisplayAlerts = False
Sht.Delete

そんな事よりも
MsgBox Application.Max(Range("A1:A6"))が
MsgBox Application.Max(Sht.Range("A1:A6"))じゃない事の方が気になるぜ
0554デフォルトの名無しさん2016/08/03(水) 08:36:28.97ID:rixEY9zb
ここまでの条件を満たすには、むしろ「シート追加、不要になったら削除」以外に方法はないと思う
シート数が変わると既存のマクロの動作が変わってしまう可能性があるから、
シートよりはブック追加の方がまだ安全な気もするけど
0555デフォルトの名無しさん2016/08/03(水) 11:35:21.69ID:tfmCVBfO
副作用が大きいなあ
0556デフォルトの名無しさん2016/08/03(水) 12:21:17.18ID:AYjscAHw
副作用って言いたいお年頃なので許してあげて下さい
0557デフォルトの名無しさん2016/08/03(水) 12:32:57.65ID:tfmCVBfO
0558デフォルトの名無しさん2016/08/03(水) 12:36:47.09ID:sB4886U2
処理対象のブックにテンポラリなワークシート増やすの気持ち悪いから新しいブック開きたい感
0559デフォルトの名無しさん2016/08/03(水) 12:56:10.82ID:BdvK40Uz
>>558
同感、ブック追加で保存せずに終了派
0560デフォルトの名無しさん2016/08/03(水) 19:16:50.12ID:mspOG63m
エクセルはデータ追加して消してって繰り返すとどんどんゴミデータ溜まるからな
今はそんなこと無いのかな?
どちらにしても>>558の方法で処理したいところ
0561デフォルトの名無しさん2016/08/03(水) 19:24:39.97ID:Gg/sz3nT
新ブック作って消すだけでもメモリ食われるじゃん
しかも消しても開放されない
0562デフォルトの名無しさん2016/08/03(水) 19:25:52.08ID:mspOG63m
メモリじゃないよ
0563デフォルトの名無しさん2016/08/03(水) 19:40:59.69ID:wKahhl4a
今のエクセルって複数ブック開いたときの表示方法が昔と違うんじゃなかったっけ
0564デフォルトの名無しさん2016/08/03(水) 21:05:22.99ID:MkOQGcCX
>>561
今時どんなショボいマシン使ってるんだよ w
そもそもシートの追加でもメモリー食うだろ
0565デフォルトの名無しさん2016/08/03(水) 22:34:11.33ID:ilNN9F1Z
「フロッピーディスク」のことを「メモリ」って言うおじいちゃんを思い出した。
0566デフォルトの名無しさん2016/08/03(水) 23:21:26.35ID:t3jujx7Q
パパはハードディスクのことをメモリって言ってたよ
0567デフォルトの名無しさん2016/08/04(木) 07:40:50.88ID:+IGVV64W
うん、配列でなんとかするのがベストかな。
シート追加したり消したりするのはスマートじゃない気がする。
0568デフォルトの名無しさん2016/08/04(木) 16:11:36.89ID:0Vp45+dE
Win10にしてから、IEから情報取り込んでるファイルがエラー頻度にはくようなった。

「実行エラー オートメーション エラーです。システムのシャットダウンはすでにスケジュールされています。」って出る
なぜだあああああ
やっぱりIE制御駄目なんか
0569デフォルトの名無しさん2016/08/04(木) 16:54:24.89ID:mqjpYfMV
へぇ
「実行エラー オートメーション エラーです。システムのシャットダウンはすでにスケジュールされています。」
これはinit 6的な奴かと思ったら違うのね、IEインスタンスのバグっぽい
win10はあんまり関係なく昔からあるもののようだ

解決方法はそのエラーでググってもらえればわかるけど、色々あるみたい
https://social.msdn.microsoft.com/Forums/ja-JP/0e00d2fb-d375-430e-8a7c-ca5d315bf3a5/ie-?forum=vbajp
http://blog.miminoinu.net/2014/11/excelvbaie.html
0570デフォルトの名無しさん2016/08/04(木) 17:01:15.82ID:0Vp45+dE
>>569
IEを引っ張りだしにするのかー
確かにループ作業で一回一回閉じるように組んでるからな・・・
Win7だと大丈夫だったのにー
0571デフォルトの名無しさん2016/08/04(木) 18:11:22.05ID:0Vp45+dE
>>569
下の参考にしながらなんとかエラーはかなくなった!ありがと
いってたとおりWin10の問題じゃなくてIEの設定が何かしらWin7のときと変化してたんやなー
0572デフォルトの名無しさん2016/08/04(木) 23:13:08.39ID:qQ0CTMfG
excel VBAでのVideo for Windowsを使ったウェブカメラへの接続について質問です。

BUFFALOのウェブカメラを1台繋いだ状態で、avicap32.dll等の設定をした上で
FindWindow→capCreateCaptureWindow→WM_CAP_DRIVER_CONNECT(接続先の引数0)
と進めて、特に問題なくウェブカメラの画像を取得することが出来るようになりました。
ここで、同じウェブカメラを追加し、WM_CAP_DRIVER_CONNECT(接続先の引数1)で2台目へ接続しようとしたのですが接続が失敗します。

状況としては
1. 2台繋いでいても、1台目の接続は問題なし
2. 1台目のドライバーを無効にすると、引数を変えなくても2台目に繋がる
3. 元からカメラがついているノートPCでも1. 2.と同様
4. 一応として接続先の引数を100まで試したが0以外繋がらず
5. win7(32bit,64bit)、win10(64bit) 管理者権限の有無全てで同じ現象

原因はexcel関係ないのかもしれませんが、思いつく範囲でもご意見いただけると助かります。
0573デフォルトの名無しさん2016/08/04(木) 23:17:49.20ID:mqjpYfMV
avicap32.dll 2台
とかで検索してみては
手元にないので検証が難しい
0574デフォルトの名無しさん2016/08/04(木) 23:51:35.17ID:qQ0CTMfG
検索してみたのですが、2台同時に使用するためのソースのようです。
私はそもそもとして2台目をつないだ状態で、2台目に接続すら出来てないもので・・・

検索結果に帯域の問題等も書いてありましたので、CameraViewerというソフトで試したところ
特に問題なく2台目に接続することが出来ました。
もうちょっと調べてみようと思いますが、何かありましたらご意見お願いします。
0575デフォルトの名無しさん2016/08/05(金) 00:07:58.02ID:awNm9k8p
自分も詳しくないんで、外してるかもですけど、そのコード、VFWを使ったものじゃないですか?

USBカメラを2台使ったライブカメラ
http://www.ne.jp/asahi/ham/js1rsv/TEST/ListCam.htm

一番下の方に
>VFWのAPIからはWDMは1つのドライバに見える。
>1つのドライバを複数オープンすることは通常できないようだ。

と、あるんですが、そこは大丈夫?

>2台同時に使用するためのソース
とのことですが、そのソースをこちらでも見ることはできますか?
0576デフォルトの名無しさん2016/08/05(金) 08:44:00.76ID:nruK2yy/
Win10になってから、バージョンは同じIE11なのに挙動が明らかに変わった
ネットで調べた対策も役に立たなくて、うちで試行錯誤した結果

visible=false
navigate(ほげほげ)
visible=true

って一度ずつ再表示させるとうまくいった
画面はチカチカするし動作も遅くなったけど、今んとここの方法しか見つかってないのでしょうがない
0577デフォルトの名無しさん2016/08/05(金) 11:05:57.79ID:GIByHjfC
>>576
なんかIEが変わってるよね。(Win7で設定変えたのがリセットされたのかもしれないけどw)

IEじゃなくてEdge操る術の本でないかな
0578デフォルトの名無しさん2016/08/05(金) 11:21:46.35ID:QsXYn0s6
ID変わってると思いますが>>572です。
PC再起動後に1度だけソースのキャプチャというダイアログが出て、デバイス選択が出来たため調べていました。
(もう一度再起動しても出ませんでした・・・なぜ?)

結果、接続先の引数で変えることは出来ませんでしたがWM_CAP_DLG_VIDEOSOURCEを使うことで
2台のウェブカメラから選択して表示することが出来ました。
また、二重起動して別々のデバイスを選択することで両方を表示することも出来ました。

ありがとうございました。
0579デフォルトの名無しさん2016/08/05(金) 22:36:50.66ID:WQnurzUS
>>544
それMicrosoft Queryを使わないタイプのやつじゃないですか?
ADOとか何とか言う。

自分以外のPCで使えないと困るので、
拡張機能みたいなのは、あえて避けているんです。
0580デフォルトの名無しさん2016/08/05(金) 23:11:37.30ID:+RhDm2da
人にどうのこうの言う前に質問するならまず自分の環境晒せよ...
0581デフォルトの名無しさん2016/08/05(金) 23:34:06.25ID:0NSyExel
横から言うのもなんだがADOくらいどこにでもあるだろ
参照設定すら嫌だっつーならしゃーねーわな
0582デフォルトの名無しさん2016/08/06(土) 00:30:10.05ID:T79SEdhE
>>580
いやもう解決してるし、Microsoft Queryの仕様ってわかってるんで。
0583デフォルトの名無しさん2016/08/06(土) 11:14:20.41ID:iaBPfdHp
>>581いや、参照設定は嫌や
0584デフォルトの名無しさん2016/08/06(土) 14:35:01.70ID:yFgH/Ch3
VBAでポリモーフィズムを実現するにはどうするのが定番の方法ですか?
0585デフォルトの名無しさん2016/08/06(土) 14:36:52.56ID:yFgH/Ch3
VBAのMsgBoxではそこに表示されている文字列をコピペできやがりません。
コピペして他で使いたいのに。

どうすればコピペできる文字列を表示させることができますか?
0586デフォルトの名無しさん2016/08/06(土) 14:46:58.00ID:l81rcAUg
MsgBox表示している状態で
[Ctrl] + [C] でメッセージボックスの内容コピペ出来なかったっけ?
0587デフォルトの名無しさん2016/08/06(土) 15:08:05.00ID:yFgH/Ch3
>>586
こんな変な飾りがついてくる。

---------------------------
Microsoft Excel
---------------------------
■ここにメッセージ■
---------------------------
OK
---------------------------
0588デフォルトの名無しさん2016/08/06(土) 15:25:14.85ID:EZI6tvW1
>>584
オブジェクト指向ってことなら言語がそもそも向いてない
classの継承とかもできないんだっけ

>>585
テキストボックスのせたフォーム作れば?
めちゃくちゃ手間な割に対して見返りなさそうだけど
0589デフォルトの名無しさん2016/08/06(土) 16:14:25.59ID:cNfCnhMw
自分はコピペしたいときはDebug.Print使う
0590デフォルトの名無しさん2016/08/06(土) 17:14:40.22ID:u9v1FTJX
https://programmer-jagataro.blogspot.jp/2010/12/excel-vba.html
0591デフォルトの名無しさん2016/08/06(土) 17:38:03.69ID:InZ3+tol
>>584
定番と言えるか分からないけど幾つか方法がある。
インターフェースを使ったコンポジションで行う方法、
Call By Nane を使う方法、
APIを使ってコールバックを行う方法など。

下の二つは.Netで言うDelegateと同じような使い方をするけれど、
多態性を持たせる対象先がクラスモジュールの場合はCall By Name、
標準モジュールの場合はAPIのコールバックバックを使う。

ちなみにFormやシートはクラス扱い。
0592デフォルトの名無しさん2016/08/06(土) 17:39:45.60ID:bH/IpOqY
>>579
EXCEL2007で導入した MS-QUERYで試した結果だが

>>582
そもそも、どのバージョンのMS-QUERYで試したんだ
機能拡張が不可だっていうなら、そもそもMS-QUERY使うって発想も俺には理解できんし
0593デフォルトの名無しさん2016/08/06(土) 19:43:37.43ID:Xkhj5Nx+
>>591
Call by Nameってダックタイピングのこと?
0594デフォルトの名無しさん2016/08/06(土) 22:37:21.32ID:I78TV0kx
>>593
ダックタイピングと言うものをよく知らなかったんだけど、Wikiをみると
「オブジェクトがあるインタフェースのすべてのメソッドを持っているならば、
たとえそのクラスがそのインタフェースを宣言的に実装していなくとも、
オブジェクトはそのインタフェースを実行時に実装しているとみなせる、ということである。」とあるね。

だとすると違う。
クラスも別途必要な訳ではなくて、同じクラス内でも同じシグネチャのメソッドであれば
そのメソッドを前もって指定することで多態性を持たせることが出来る。
イメージ的にはクラスのインスタンス単位で扱うのではなく、メソッド単位で扱う感じ。
0595デフォルトの名無しさん2016/08/07(日) 11:06:33.35ID:Bo0q7L+T
VBAでは
Object型の変数に入れれば
それでドットつけてその本体のメソッド名を入れればそれが実行できるから
こうすることでポリモーフィズムを実現することができるんじゃないか?
0596デフォルトの名無しさん2016/08/07(日) 17:22:32.51ID:49wBLG90
ポリモーフィズムが本当にいいことかどうか考えた方がいいよ。

メリットもあればデメリットもある。
0597デフォルトの名無しさん2016/08/07(日) 17:37:10.50ID:hEc4ZKnt
まあ、VBAでポリモーフィズムとか言い出してる時点で
手段と目的が逆転してる気がするな
0598デフォルトの名無しさん2016/08/07(日) 18:27:49.28ID:Bo0q7L+T
>>596-597
そんなこと言いだしてる時点で初心者丸出し。
ある程度以上のプログラミング経験者なら屁のように使うから
使えないと非常に不便と感じる。
0599デフォルトの名無しさん2016/08/07(日) 18:41:15.67ID:LQKhW8Qc
vbaでそこまで高機能な何をしたいの?と思うけど…
俺は特に不便と感じないわ

vbaでしんどいようなことはさっさとc#.netかwebならphp上で処理して、csv辺りに吐き出してexcelやvbaで作業する

vbaでしか処理できない事態は無かった
そんな理由があるなら知りたい
0600デフォルトの名無しさん2016/08/07(日) 18:41:47.51ID:XjDT6LyO
使えることと使うべきかの区別がつくようになったら一人前
0601デフォルトの名無しさん2016/08/07(日) 19:12:24.80ID:l0UtxaLr
多態性が必要になるほど大規模なシステムを組む事自体が、ちょっと考え直した方がいい状況だからなぁ。

もし多態性がないと不便って感じるなら、それは複数人でプロジェクトを運用する事に慣れているだけで、
VBAで処理する規模のプログラムだと無駄が多いんじゃないかなぁ。
0602デフォルトの名無しさん2016/08/07(日) 20:14:00.70ID:h4p2Pv3H
一番のリスクは、EXCELで複雑なことやらせると、MSの仕様変更で一気にあぼーんするからなw
0603デフォルトの名無しさん2016/08/07(日) 20:28:46.23ID:LQKhW8Qc
なんというか、型が容赦なさすぎて怖い
今作ってみたけど、以下の答えは俺も予想できなかった

Sub a()
Dim b As String
Dim c As String
b = 1
c = 2
Debug.Print b + c '問1
Debug.Print b & c '問2
End Sub
0604デフォルトの名無しさん2016/08/07(日) 20:41:51.82ID:Bo0q7L+T
>>603
★の所で暗黙の変換が働いているのだろう。

Sub a()
Dim b As String
Dim c As String
b = 1 ★1は文字列の"1"に変換されたあと代入されてる
c = 2 ★2は文字列の"2"に変換されたあと代入されてる
Debug.Print b + c '問1 ★VBAで+は文字列連結はできないから、演算子の暗黙変換で+が&になっているのか?
Debug.Print b & c '問2
End Sub
0605デフォルトの名無しさん2016/08/07(日) 20:43:33.69ID:Bo0q7L+T
暗黙の変換は普通は変数に適応されるから

Debug.Print b + c

のところは普通はbが数値になりcも数値になり結果として3が表示されないと納得できないけど
これ内部でどうなっているんだ?
0606デフォルトの名無しさん2016/08/07(日) 21:01:51.10ID:vwVPvJfv
>>605
+ 演算子
https://msdn.microsoft.com/ja-jp/library/office/gg278870.aspx
0607デフォルトの名無しさん2016/08/07(日) 21:04:30.27ID:LQKhW8Qc
先に言っておくと、俺も正解を知らない

>>604
は多分正解だろう。演算子がオーバーライドされていて、

Debug.Print "a" + "b"
の+は&扱いになり、"ab"になってイルと思う

Debug.Print "a" + "b" + "1"
"ab1"

Debug.Print "a" + "b" + 1
エラー

こんな言語で大規模開発だの多様性だのはやめておいたほうがいいと思う
シートの補助マクロで十分だろう
0608デフォルトの名無しさん2016/08/07(日) 21:07:12.76ID:LQKhW8Qc
>>606
>一方の式が数値データ型で、もう一方の式が String の場合Type mismatch エラーが発生します。
あの、エラー出ないんですけど…

Sub a()
Dim b As Long
Dim c As String
b = 1
c = 2
Debug.Print b + c
End Sub
0609デフォルトの名無しさん2016/08/07(日) 21:08:51.60ID:LQKhW8Qc
>一方の式が数値データ型で、もう一方の式が任意の Variant (Null 以外) の場合
すまん、これになるのね
もういいや
0610デフォルトの名無しさん2016/08/07(日) 21:44:22.78ID:hEc4ZKnt
>>690
多分どこかで、暗黙的に数値型に変換できる場合はバリアントの数値とみなすって判断がある気がする
どの段階でそう評価して結果出してるかはしらんが

さらにややこしい例

Debug.Print "1" + "2" + 3
' 15 前にスペースが入る

Dim d As Date
d = "2014/08/07"

Debug.Print d + "1"
'2014/08/08

Debug.Print "2014/08/07" + "1"
'2014/08/071

Debug.Print d + 1
'2014/08/08

Debug.Print "2014/08/07" + 1
'エラー
0611デフォルトの名無しさん2016/08/07(日) 22:03:30.07ID:hEc4ZKnt
Debug.Print "1" + "2" + 3
これは、実質的には
Debug.Print "1" & "2" + 3
と同じで、+は&より優先順位が高いので
Debug.Print "1" & ("2" + 3)
という評価をされなければならないんだが

Debug.Print VarType("1" + "2" + 3)
Debug.Print VarType("1" & "2" + 3)
結果の型が違う。理由はわからんw
0612デフォルトの名無しさん2016/08/07(日) 22:11:13.19ID:hEc4ZKnt
いや、違うか
Debug.Print ("1" + "2") + 3

Debug.Print ("1" & "2") + 3
かな
なんにせよ結果の型が違うのが謎だが
0613デフォルトの名無しさん2016/08/07(日) 22:40:41.67ID:vwVPvJfv
Debug.Print "-1" + "2" + 3
Debug.Print "-1" & "2" + 3
0614デフォルトの名無しさん2016/08/08(月) 07:17:26.09ID:+BVbuk0o
そもそも暗黙の変換を行っているところを放置して使っているのを言語仕様のせいにしてるのがおかしい。

普通文字列として結合したいなら最初文字列に変換して"&"で結合するだろうし、
数値として扱いたいなら数値変換してから演算子で繋ぐだろう。
0615デフォルトの名無しさん2016/08/08(月) 07:35:21.07ID:yXdpKomk
>>607
] オーバーライド
○ オーバーロード
0616デフォルトの名無しさん2016/08/08(月) 09:08:01.10ID:r9V6+mQU
オーラロード
0617デフォルトの名無しさん2016/08/08(月) 12:19:43.45ID:S73GfjMR
>>614
なにを言語仕様のせいにしてるって主張かよくわからんが
わかりにくいコードを書いていることを指しているなら
暗黙の変換も言語仕様だし、そのせいで結果の想像しにくいコードを「書ける」って話だが
0618デフォルトの名無しさん2016/08/08(月) 15:33:04.15ID:zFfN2SSv
書けるのと書くのはまた別問題。
そんなこと言ったらGoSubやREMだって書けるぞ。
0619デフォルトの名無しさん2016/08/09(火) 19:09:24.31ID:zmq1oHse
・UserFormのImageに読み込んだ画像の上に点を打つ
・SetPixelを使って画像に直接点を作り、それをImageに表示する

このどちらかをやりたいと思っています。
検索するとVBでPictureboxを使った方法は大量に出てくるのですが、VBAでImageを使った方法が見つかりません。
また、GetPixelについてはセルを1ドットにして画像を再現するものなどで色々あるのですが
SetPixelを使っているものがなかなか見つかりません。

出来ればやり方を、もしくは検索ワード等お教えいただけないでしょうか。
0620デフォルトの名無しさん2016/08/09(火) 20:29:18.57ID:ECa59Fe/
>>619
VB6だとPSETやLINEが使えたんだけど
EXCELのVBAではダメみたい。
そこでAPI。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=19764;id=excel
0621デフォルトの名無しさん2016/08/10(水) 06:59:29.59ID:0wq5wBn8
>>619
bitblt使えばできるんじゃない
0622デフォルトの名無しさん2016/08/10(水) 17:05:11.63ID:t4SSMw1I
返事が遅くなってしまい申し訳ないです。
いただいたURLの方法でsetpixcelが出来ました。
Imageにハンドルが無いので、直接描くのは無理でしたらImageの位置はform上で決まっているので問題ありませんでした。
しかし、上にウィンドウが乗ったりすると消えてしまうため、別の方法も探ってみようと思います。
0623デフォルトの名無しさん2016/08/10(水) 22:44:11.41ID:uPyxj/T5
株式会社TOUAが2016年7月に破産
http://www.tdb.co.jp/tosan/syosai/4191.html
0624デフォルトの名無しさん2016/08/13(土) 03:30:43.69ID:gA4jncAi
395 / 10 で商39が求まることを期待しているのだが
なぜか四捨五入して40になるのはExcel VBAの仕様?
他の言語はどうか知らないけど少なくもC言語はこうはならないよな。

四捨五入を抑止する方法ってありますか?
0625デフォルトの名無しさん2016/08/13(土) 03:52:11.57ID:/hQOofXg
>>624
Cells(1, 1).Value = 395 \ 10
0626デフォルトの名無しさん2016/08/13(土) 09:10:26.59ID:rAzRidQE
>>624
VBAに限らずプログラミング全般の話として、少数以下をどうするかは期待するんじゃなくて明確にコントロールするんだよ
例えば切り捨てたい時は必ずInt関数を使う、みたいに
0627デフォルトの名無しさん2016/08/13(土) 18:46:33.18ID:1tqM5WNZ
>>624
Excelの標準は調べてないけど、それ本当に四捨五入してるか確認した?

切り上げかもしれないよ。
0628デフォルトの名無しさん2016/08/13(土) 18:58:42.56ID:UiGTNJ0U
何を今頃そんな基本的なことを言ってるんだ?

四捨五入とか切り上げとかそれはあくまでも表示の問題であって
数値そのものは何もしてない。
そこをちゃんと理解してないととんでもないミスを犯す。

>>624
四捨五入してない。
そのセルに10をかけてみな。395になるはず。
0629デフォルトの名無しさん2016/08/13(土) 19:06:42.03ID:qYSuHWJk
Sub a()
cells(1,1) = (Int(395 / 10))
End Sub
というかこれだけの話?
0630デフォルトの名無しさん2016/08/13(土) 19:06:55.43ID:qYSuHWJk
何故か40というのは、セルに入れて表示形式を通貨か数値にしてるのか?
それなら見た目は40になる

Sub a()
Dim b As Double
b = 395 / 10
MsgBox b
Cells(1, 1) = b
End Sub
どれも40にはならない

>>624
コード見せて
0631デフォルトの名無しさん2016/08/13(土) 20:47:53.45ID:tB1N6OL2
そもそも
セルのValueに入れたときの話なのか
VBAの変数に入れたときの話なのか、その時の型は何なのか
ぐらいははっきりさせてくれ
0632デフォルトの名無しさん2016/08/13(土) 21:06:19.86ID:8II+w1jy
C言語使いは頭が固いからオブジェクト指向について行けない人がほとんどだよ。
電車の中で「初めてのC」とか恥ずかしげも無く読みふける奴らだから。
0633デフォルトの名無しさん2016/08/13(土) 21:17:13.14ID:CqZl885R
いまのプログラマーで
オブジェクト指向が理解できなければ全く仕事ないだろ。
ほんとうにそんな人いるか?>>632
0634デフォルトの名無しさん2016/08/13(土) 21:32:16.68ID:qYSuHWJk
>>632
それは単に辺鄙な学校の情報化の学生か、プログラムを独学で覚えようとしてるおじさん
今は普通にjava教えるよ
0635デフォルトの名無しさん2016/08/13(土) 21:40:38.19ID:UzvSp6Rn
金融ならまだまだcとかCOBOLとかが現役なんすよ
0636デフォルトの名無しさん2016/08/13(土) 21:50:16.91ID:CqZl885R
>>635
ウンコみたいな職場だな。
ところでそこは年収どれくらい?
0637デフォルトの名無しさん2016/08/13(土) 22:05:56.51ID:eKzBkSdG
そろそろマ板でやれよってな感じ
0638デフォルトの名無しさん2016/08/13(土) 22:16:28.47ID:CqZl885R
マ板とは?
指図する前にちゃんとした日本語をしゃべってほしい
0639デフォルトの名無しさん2016/08/13(土) 22:18:17.37ID:eKzBkSdG
ここはプログラム板。判る?
んで、プログラマー板ってのがこの上にあるだろ?プログラマーの話はそこでやれってことだよ
0640デフォルトの名無しさん2016/08/13(土) 22:20:13.12ID:+WBuOxN2
金融でCは見たことないけど
組み込みならCは普通に使われてる
あとスパコンだと FORTRAN も使われてるし
0641デフォルトの名無しさん2016/08/13(土) 22:46:02.93ID:NurUYLCr
>>640
金融でもフロントシステムはCが多かったと思う。
すでに過去の話ではあろうけど。
0642デフォルトの名無しさん2016/08/13(土) 23:04:59.26ID:+WBuOxN2
>>641
ATM とかはわかるけどそれ以外でCなんてある?

4.フロントシステム:顧客との接点を取り持つ。

1. 個人顧客及び法人顧客:取引支援システム(コールセンター、インターネット接続、ATM、法人向けファームバンキング・アカウントアグリゲーション)

2. 金融マーケット:ディーリングシステム(資金債券系、株式系、為替系)

3. 基本職能:マーケットリアルデータフィード、プライス分析評価、約定引合、発注・約定・確認、コンプライアンスチェック、ポジション管理、運用評価

http://www.it-career21.com/registration/finance-se.html
0643デフォルトの名無しさん2016/08/13(土) 23:11:15.99ID:NurUYLCr
>>642
受発注系にはCがある程度使われていると思う。
0644デフォルトの名無しさん2016/08/13(土) 23:20:22.75ID:CqZl885R
しかしオブジェクト指向も取り入れないプログラミングって
できることも限られるだろうしかなりの小規模なことしかできないのでは?
0645デフォルトの名無しさん2016/08/13(土) 23:42:34.30ID:UzvSp6Rn
ちゃんと設計すればできるんすよ
と言うかオブジェクト指向以前にも大規模案件は多くあったんすよ


オブジェクト指向の話をしたければこっちへどうぞ
http://echo.2ch.net/test/read.cgi/tech/1467992113/

cについてうっすら知りたければこっちへどうぞ
http://echo.2ch.net/test/read.cgi/tech/1448685034/
0646デフォルトの名無しさん2016/08/14(日) 00:39:34.97ID:K7W/1pEQ
>>630
>>631

Option Explicit

Sub テスト()
Dim 結果 As Integer

結果 = 引数の値を10で割った商を算出して返す(395)
MsgBox 結果

End Sub

Function 引数の値を10で割った商を算出して返す(ByVal 数値 As Integer) As Integer
Dim 商 As Integer
商 = 数値 / 10
MsgBox 商
引数の値を10で割った商を算出して返す = 商
End Function
0647デフォルトの名無しさん2016/08/14(日) 01:07:24.08ID:K7W/1pEQ
/ 使ったらだめだな
\ に置き換えたら正しい結果が得られますた
0648デフォルトの名無しさん2016/08/14(日) 01:59:21.45ID:mX5teXde
プププ
0649デフォルトの名無しさん2016/08/14(日) 02:35:04.59ID:gFmBqe4d
>>646
これなんで商が40になるの?
0650デフォルトの名無しさん2016/08/14(日) 03:14:21.65ID:Foqox2TY
>>649
CInt関数とCLng関数のHelpに書いてある例だけど、

以下と同じ変換が行われていて、直近の偶数の整数値に丸められている。
(偶数に丸められるんで四捨五入では無い)

https://msdn.microsoft.com/ja-jp/library/office/gg278896.aspx

> CInt および CLng は、小数部分が 0.5 の場合、常に最も近い偶数に値を丸めます。
> たとえば、 0.5 は 0 に、1.5 は 2 に丸められます。
> Fix 関数と Int 関数は小数部分を丸めるのではなく切り捨てるので、
> CInt および CLng とは異なります。
> また、Fix および Int は、常に渡された値と同じデータ型の値を返します。
0651デフォルトの名無しさん2016/08/14(日) 03:34:40.28ID:Foqox2TY
>>650

> 〜直近の偶数の整数値に丸められている。
ちょっと違った…偶数に丸められるのは小数部分が 0.5 ちょうどになる時だけか・・・
どっちみち四捨五入では無いけど
0652デフォルトの名無しさん2016/08/14(日) 10:48:09.73ID:gFmBqe4d
>>650
そんな仕様だったのか、ありがとう
int()と全然違うのね。怖い・・
あとその丸め方JIS丸めとか銀行型丸めとか言われているそうです
0653デフォルトの名無しさん2016/08/15(月) 01:19:57.45ID:zKV0jDoy
>>650
>常に最も近い偶数に値
なんで偶数?奇数だと不都合がある?
0654デフォルトの名無しさん2016/08/15(月) 02:06:34.61ID:z2kTYRxm
二進数的に正数の末尾へ0を設定したいんじゃない?
末尾が1.1なら10.0にする
末尾が0.1なら0.0にする
0655デフォルトの名無しさん2016/08/15(月) 08:13:15.67ID:oxc7gFpu
ご教授ねがいます。

社内ネットワーク上サーバーの定められたらディレクトリにExcel2013のツールがあります。

クライアントPCには、ツールのショートカットがある状態。自分自身のパスを相対パスで取得してツール以下のディレクトリにあれこれしてる状況。

運用ではネットワークドライブ名をルール決めしてるので問題はないのですが、ツール側で自分自身の絶対パスを簡単に取得する方法が知りたいです。 

色々書いてはいますが、NW上サーバーにある自分自身の絶対パスを取得したいという案件になります。
0656デフォルトの名無しさん2016/08/15(月) 08:21:27.98ID:z2kTYRxm
thisworkbook.fullname
じゃだめなの?
0657デフォルトの名無しさん2016/08/15(月) 10:05:03.62ID:Ek2TroqU
>>653
理由は知らん
知りたければぐぐるか数学か金融板あたりで聞いたほうがいいと思う
0658デフォルトの名無しさん2016/08/15(月) 11:15:47.61ID:AG6K+Exs
>>653
奇数でもいいとは思う
http://homepage1.nifty.com/s_miyake/hp/jisround.htm
0659デフォルトの名無しさん2016/08/15(月) 21:00:45.26ID:q+BGNeK1
奇数にしたならしたで
なんで奇数?偶数だと不都合がある?
て聞くじゃろ
どっちでもよかろうなのだ!でもどっちかには決めないといかんのだ
0660デフォルトの名無しさん2016/08/16(火) 00:31:09.67ID:pNBPPJY8
>>656
ネッワークドライブ名ではなく、サーバー名称がとれたら良いのですが、試してみます。
0661デフォルトの名無しさん2016/08/16(火) 01:52:34.33ID:E7xAONCe
それならEnumNetworkDrivesをうまいこと使えばいけそうね
0662デフォルトの名無しさん2016/08/16(火) 11:04:25.52ID:Yz8XnW51
>>655 >>660
やりたい事こんな感じ?
例えば
Zドライブに\\サーバー名\hoge が割り当てられていて Z:\moge\test.xlsmを開いている時
パスとして \\サーバー名\hoge\moge が欲しいって事なのかな?

Const NetworkDrive As Long = 3
Set FSO = CreateObject("Scripting.FileSystemObject")

Set MyFolder = FSO.GetFile(ThisWorkbook.FullName).ParentFolder
Set MyDrive = MyFolder.Drive
MyPath = MyFolder.Path
If MyDrive.DriveType = NetworkDrive And MyDrive.DriveLetter <> "" Then
  MyPath = Replace(MyPath, MyDrive.Path, MyDrive.ShareName)
End If

Debug.Print MyPath
0663デフォルトの名無しさん2016/08/16(火) 12:03:10.31ID:pNBPPJY8
>>662
意味的には、それです!。書いていただいたのを元に、勉強させてもらいます。
0664デフォルトの名無しさん2016/08/17(水) 11:05:06.40ID:pHe6W3Xr
vbaとアドインは違うの?
0665デフォルトの名無しさん2016/08/17(水) 11:10:48.26ID:+ah+coy4
アドインはvbaで作られる
0666デフォルトの名無しさん2016/08/17(水) 12:30:40.47ID:gSloezDD
それなに?
これ?
https://www.youtube.com/watch?v=zXB8auED68Y
0667デフォルトの名無しさん2016/08/17(水) 12:34:06.22ID:+ah+coy4
>>666
昔から思ってるんだけど、アイーンって面白いか・・・?
0668デフォルトの名無しさん2016/08/17(水) 12:39:21.62ID:bokRqx8d
>>667
海外でもウケてるらしいから言葉を越えた何かがあるんだろう
0669デフォルトの名無しさん2016/08/17(水) 18:34:00.23ID:E/N9h8UB
アスペ臭い会話やなwww
0670デフォルトの名無しさん2016/08/18(木) 12:53:50.99ID:5Mvpm3bX
アイーンはその言葉自体は全然面白みはないが
そのくだらないことを本格的に踊りにしたり真剣に振りを付けたり水着になったりして
盛大に取り組んでいることが面白いんじゃないか?
0671デフォルトの名無しさん2016/08/18(木) 15:40:52.77ID:iO4p2OMA
おこちゃまでも簡単に真似できるから
0672デフォルトの名無しさん2016/08/18(木) 21:05:32.21ID:rHM2lRk8
やるじゃない
0673デフォルトの名無しさん2016/08/19(金) 00:04:51.56ID:fcPN94Ve
Cells(a, b).End(xlDown).Offset(1).Select

の部分でエラーが出るんだけど、なぜでしょうか?
Range("A1")みたいにするとうまくいくんだけど・・・
0674デフォルトの名無しさん2016/08/19(金) 00:13:41.83ID:uFNlH2VO
>>673
MsgBox(a & vbcrlf & b)
0675デフォルトの名無しさん2016/08/19(金) 00:27:32.58ID:NSPXZFFt
>>673
予想だと
Cells(a,b).End(xlDown).
で最終行を選択し、その後更にoffset()で最終弾の一個下をselectしようとしてエラー担っている気がする

Sub c()
Debug.Print (Cells(a,b).End(xlDown).Row)
End Sub
辺りで何行目を参照してるか確認したほうがいいかも
0676デフォルトの名無しさん2016/08/19(金) 00:27:45.11ID:NSPXZFFt
最終弾ってなんだ、最終行
0677デフォルトの名無しさん2016/08/19(金) 01:12:42.92ID:ipiIzd+4
0678デフォルトの名無しさん2016/08/19(金) 02:25:38.59ID:ZWIiCwfy
>>674
↓括弧なしと何が違う?

MsgBox a & vbcrlf & b
0679デフォルトの名無しさん2016/08/19(金) 10:08:37.99ID:NSPXZFFt
>>678
同じ
返り値のないものはカッコの代わりに半角スペースで代用可能
0680デフォルトの名無しさん2016/08/19(金) 10:33:55.32ID:dildf2Uq
でもぶっちゃけ読みづらくね?
全部callつけてほしい
0681デフォルトの名無しさん2016/08/20(土) 06:44:22.17ID:ufNVCud8
関数呼び出し形式じゃない、昔ながらの形式の命令もまだあるからなぁ
それらと同じような書き方ができるようにCall、括弧なしの形式も許されてるんだろう

今さら文法的に強制するのは無理だし、コーディングルールで決めとくぐらいか
0682デフォルトの名無しさん2016/08/20(土) 10:24:13.46ID:pd0vDoiS
読みにくいのは括弧がつくつかないの差じゃなくて、関数の名前が機能を想像させないからだと思うんだけどな
0683デフォルトの名無しさん2016/08/20(土) 13:35:59.72ID:hAvLMTQN
OPEN OFFICECALCで、マクロがさっぱりです

たとえば、A1セルに1を入れるマクロはどうなるのですか

お願いします
0684デフォルトの名無しさん2016/08/20(土) 14:03:23.05ID:2A6hwAw3
>>683
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/vba2003/OOo11-summary01.html
0685デフォルトの名無しさん2016/08/20(土) 15:01:49.02ID:8L+1uudw
ありがとうございます
ThisComponent.Sheets(0)は必要ですか
0686デフォルトの名無しさん2016/08/20(土) 15:03:01.93ID:2A6hwAw3
試せば?
0687デフォルトの名無しさん2016/08/21(日) 12:37:42.30ID:fyroOVTJ
間違ってますか?以下


if a=1 THEN goto 1: else goto 2:
1: g=100
2:g=50
0688デフォルトの名無しさん2016/08/21(日) 12:38:57.36ID:fyroOVTJ
引き続き
OPEN OFFICECALCのはなしです。
0689デフォルトの名無しさん2016/08/21(日) 12:45:14.86ID:4j47ibNh
>>688
スレチな質問だと思うよ
ここは Excel VBA 質問スレって分ってる?

LibreOffice/Apache OpenOffice 総合相談所 12 [転載禁止](c)2ch.net
http://echo.2ch.net/test/read.cgi/bsoft/1443141116/
0690デフォルトの名無しさん2016/08/21(日) 16:32:17.20ID:Vd2iT4mK
合っているとも間違ってるとも言える。
とんち的な回答でも求めてるのか?
0691デフォルトの名無しさん2016/08/21(日) 16:40:42.71ID:vQbvqGuX
スレチだし、それ以前に自分で試せば会ってるか間違っているかすぐ判る話だろ?
0692デフォルトの名無しさん2016/08/21(日) 19:49:34.39ID:bS8sY2Rp
分岐している意味が無い。G=50のみ。
0693デフォルトの名無しさん2016/08/22(月) 01:33:04.46ID:HMBRUb6Z
>>646
一瞬コード?と思った。
日本語で変数名とか関数名を書けるのはExcel VBAならではの強みだな
0694デフォルトの名無しさん2016/08/22(月) 08:52:59.55ID:DittHok3
>>693
スレ違いだが他にも日本語使える言語はあるぞ
0695デフォルトの名無しさん2016/08/22(月) 10:07:13.79ID:+lArBpqA
C系はおkだろう
0696デフォルトの名無しさん2016/08/22(月) 12:00:39.70ID:v1YaC14g
utf-8対応のほとんどのモダンな言語で使える
0697デフォルトの名無しさん2016/08/22(月) 16:26:22.82ID:hGszYasV
むしろVBAだとunicodeじゃないから絵文字とかも使えなくて他より貧弱ですらある
0698デフォルトの名無しさん2016/08/22(月) 19:39:05.24ID:EmQj+pxh
>>694
Mindのことか!
0699デフォルトの名無しさん2016/08/22(月) 19:50:26.55ID:7OdY17a2
エクセル2013です。
DatalabelオブジェクトのTopプロパティを設定して、データラベルを横項目軸の下に並べました。(左グラフ)
しかし、縦軸の最大値最小値を変えると、データラベルの位置が動いてしまいました。さらに、プロットがエリア外に出た場合、そのデータラベルは消えてしまいました。(右グラフ)
縦軸をいじっても、設定したラベルの位置が変わらないようにしたいのですが、どうにかならないでしょうか・・・
全く別のアプローチでもよいので、何か良策があれば教えていただきたいです。
http://i.imgur.com/yTYOzvT.png
画像は2010ですが、2013についての質問です。
0700デフォルトの名無しさん2016/08/22(月) 21:03:15.52ID:pg4VSD/j
セルに第100回とあるのを100にして使いたいのですが
Replaceで置き換えればいいですか?他に方法ありますか?
0701デフォルトの名無しさん2016/08/22(月) 21:16:27.46ID:68g1gl18
数値をそのまま入れておいて表示形式で"第"###"回"というのはダメなのか
0702デフォルトの名無しさん2016/08/22(月) 21:54:08.82ID:rOd+1f+v
>>701
それができるならそれがいいと思うけど "第"##0"回" とすべきかな
0703デフォルトの名無しさん2016/08/22(月) 22:00:41.89ID:ppg5XtMG
>>700
田中さんところのコレが使えるんじゃないか?
http://officetanaka.net/excel/vba/tips/tips56.htm
0704デフォルトの名無しさん2016/08/22(月) 22:09:50.72ID:pg4VSD/j
>>702>>703
ありがとうございます
0705デフォルトの名無しさん2016/08/22(月) 23:21:38.68ID:7OdY17a2
>>699はどうにかならないでしょうか・・・
0706デフォルトの名無しさん2016/08/23(火) 17:49:53.75ID:17GlMZUu
>>705
VBAなの?
07076992016/08/23(火) 20:26:53.86ID:NV/K/hRn
自己解決しました。
>>706はいそうです
0708デフォルトの名無しさん2016/08/23(火) 20:41:36.26ID:Da+ZR/3+
Excelのグラフ機能かと思ってた
0709デフォルトの名無しさん2016/08/23(火) 21:13:22.66ID:NV/K/hRn
>>708
グラフ機能をvbaで操作したかったんですね
0710デフォルトの名無しさん2016/08/24(水) 09:24:56.69ID:qLdqPdHG
Excel VBA 初心者を抜けるにはどの参考書で勉強すればいいですか?
0711デフォルトの名無しさん2016/08/24(水) 10:23:24.60ID:DzfzGvdi
実務を通して覚えるしか無い
このスレの回答を読んでもいいけど変な質問も多いのがなぁ
0712デフォルトの名無しさん2016/08/24(水) 10:49:37.52ID:MdisPjtQ
そもそも初心者の定義がどこまでか決まってないので、抜ける方法も
抜けたかどうかも誰にもわからない

以下、初心者とは何かという無駄な雑談が続く流れ↓
0713デフォルトの名無しさん2016/08/24(水) 12:22:02.28ID:yjiYiTgz
このスレで回答したくなるうちはまだまだ初心者
0714デフォルトの名無しさん2016/08/24(水) 13:25:54.80ID:DzfzGvdi
>>713
「お前らは初心者」というより煽る効果はかなりあるね。78点
0715デフォルトの名無しさん2016/08/24(水) 14:06:05.06ID:5+3NnlZx
>>713
Qiitaとかはてブロに書いてる連中は?
07167102016/08/24(水) 14:13:33.56ID:qLdqPdHG
すみません、どのくらいのレベルになりたいかというと、いつもしている単純作業をブックをまたいで自動化できるようなレベルです。
「こういうことがしたいな」と思った時に今のレベル(入門書5冊読んだくらいです)では実現可能かどうかすらわかりません。
たぶんプログラミング向いてないんですね。
ただ色々と読んで行くうちに実はエクセルVBAでもかなり色々できるんだなーというのはわかりました。
0717デフォルトの名無しさん2016/08/24(水) 14:23:49.37ID:DzfzGvdi
>>716
できる

「他ブックは基本的に開かないと編集も参照もできない」という仕様を理解してくれ
そのあと、
・別ブックを開く
・別ブックにフォーカスを移す、もしくは変数にsetする
・別ブックから値を取り出す
・メインブックに値を移す
・あとは別ブクの保存・閉じるなど
のように作業を切り分けて作っていくといいよ
わからんかったら分からんところをここで効けばいいと思う
0718デフォルトの名無しさん2016/08/24(水) 14:30:51.06ID:7ROKFl34
最近勉強し始め、わからないことがあるのでご回答お願いします

選択範囲指定にcountifを使いたいのですが作動しません。
range("b2","p"&countif(p2:p336,"食品")).select

何がしたいのかというと、オートフィルターでソートしたデータの食品だけを自動選択したいです

よろしくお願いします。
0719デフォルトの名無しさん2016/08/24(水) 14:37:19.47ID:DzfzGvdi
>>718
なんとなくやりたいことは分かるけどコードが酷い。
マクロの記録でオートフィルタしたほうが早いと思う

Sub Macro1()
Columns("P:P").AutoFilter
ActiveSheet.Range("p:p").AutoFilter Field:=1, Criteria1:="食品"
End Sub
0720デフォルトの名無しさん2016/08/24(水) 14:48:05.43ID:u0hyDIHF
>>718
VBAにcountifなんて関数はない
ワークシート関数を使いたい場合はWorksheetFunctionを使って

result = Application.WorksheetFunction.CountIf(Range("P2:P336"), "食品")

のようにする
07217182016/08/24(水) 14:48:17.24ID:qNpi+UQd
Sub ソート貼付()
Range(
07227182016/08/24(水) 14:54:58.04ID:7ROKFl34
subA
Range("A1").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("リスト").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("リスト").AutoFilter.Sort.SortFields.Add
Key:=Range( _
"P1:P398"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=
_
xlSortNormal
With ActiveWorkbook.Worksheets("リスト").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
→Range("B2",P10).Select
Selection.Copy
Sheets("市原").Select
Range("B2").Select
ActiveSheet.Paste
end sub
07237182016/08/24(水) 14:56:21.43ID:7ROKFl34
矢印の行のp10の10を可変にしたいということです。
0724デフォルトの名無しさん2016/08/24(水) 15:01:30.66ID:DzfzGvdi
列ごとコピーペーストでいいんじゃない?
Columns("B:B").Copy
Sheets("市原").Select
Range("B1").Select
ActiveSheet.Paste
0725デフォルトの名無しさん2016/08/24(水) 18:42:07.35ID:NuYc1DIg
食品の行だけを抜き出したいなら開始行数も可変にしないと難しくない?
それとも必ず【食品】が先頭となる仕組みを別に用意してるの?
0726デフォルトの名無しさん2016/08/24(水) 23:37:57.38ID:Xk5yew1s
>>715
アウトプット()したい欲があるうちは基本的に初心者
0727デフォルトの名無しさん2016/08/24(水) 23:42:54.72ID:DzfzGvdi
>>726
煽ってレスが欲しいのか、真剣に考えたのか、それともこういうレスがほしいのか、どれだ?
答え教えてくれー
0728デフォルトの名無しさん2016/08/26(金) 23:34:13.90ID:lCQxOhjL
>>727
やけに食い付いてくるけど俺は常識的な事を普通に言ってるだけだぞ
0729デフォルトの名無しさん2016/08/26(金) 23:36:44.44ID:Ah7+CnOi
アウトプットにもピンキリある。初心者も神もいる。
0730デフォルトの名無しさん2016/08/27(土) 00:11:46.56ID:U4dC1OlU
常識はおまえの中だけの物だよ
0731デフォルトの名無しさん2016/08/27(土) 10:39:54.78ID:iF8S21EN
プログラマでも売られる存在ならQiitaやGitHubでこんなん書いてますアピールみたいな割と重要
0732デフォルトの名無しさん2016/08/27(土) 11:13:17.41ID:qkuUxXhn
>>720
初心者だが
>VBAにcountifなんて関数はない
といってるのに
>result = Application.WorksheetFunction.CountIf(Range("P2:P336"), "食品")
コード提示でCountIfを使ってる。このCountIfは関数では・・?

矛盾してませんか
0733デフォルトの名無しさん2016/08/27(土) 11:16:17.51ID:qkuUxXhn
>>710
Excel VBA 実用マクロ 800連発【中・上級編】

この本読んでマスターすれば中・上級者になれるらしいが、VBAに詳しい人はこの本っていい?
0734デフォルトの名無しさん2016/08/27(土) 11:30:45.40ID:2G3rf2/X
>>732
{ VBAの関数 } ≠ { ワークシート関数 }

VBAはExcelだけではなくOffice全般で使えて、
使える関数は { VBAの関数 } + { アプリが備えている関数 } + ... となる。
0735デフォルトの名無しさん2016/08/27(土) 11:35:39.64ID:qkuUxXhn
>>734
なるほど
「Excel VBA」とExcelを明記した場合は、
{ VBAの関数 } + { ワークシート関数 } と考えていい?
0736デフォルトの名無しさん2016/08/27(土) 11:40:14.98ID:2G3rf2/X
>>735
基本的にはそう。

「使用できる関数」としてより正確に書くと
{ VBAの関数 } + { ワークシート関数 } + { ユーザ定義関数 } + { Declare した外部API関数 }

かな。
0737デフォルトの名無しさん2016/08/27(土) 11:40:18.44ID:hnOiZ5zW
ワークシート関数 ⊂ VBAの関数
0738デフォルトの名無しさん2016/08/27(土) 11:51:46.58ID:WK2P1UYt
>>737
>>734
0739デフォルトの名無しさん2016/08/27(土) 11:56:43.95ID:hnOiZ5zW
VBE上で使えるんだからワークシート関数はVBAの関数の一種だろ。
ワークシート関数 ≠ VBAの関数 だったらVBEから呼び出せねぇ。
0740デフォルトの名無しさん2016/08/27(土) 12:39:24.93ID:WK2P1UYt
直前のレスくらい読めよ

まぁそれでおまえが理解しやすいならそれでかまわねーっすよ
このスレはExcelVBAなのでその感覚でも話は通じる
0741デフォルトの名無しさん2016/08/27(土) 12:50:03.73ID:3U68Yxtc
細かい事を言いたいのなら「VBAの関数」という言い方がそもそも片手落ちなんだよ
それを言うならVBAの言語仕様に標準で備わっている関数と言うべき
ただVBAの関数と言った時には使える関数全てを含めても何の問題もない
0742デフォルトの名無しさん2016/08/27(土) 13:00:23.82ID:2G3rf2/X
大もとは
>>718に対する>>720の答えだった。
そこでは関数が見つからない、という問題があった。
「使える関数」にもいろいろ種別があるという知識はたまには役に立つだろう。
0743デフォルトの名無しさん2016/08/27(土) 13:07:29.38ID:hnOiZ5zW
知ったかぶりで適当な事言われると、後々他の奴らが認識の違いで困る事になるんだよ。

「WorksheetFunctionオブジェクトに含まれる関数である」が正解で、
「VBAの関数ではない」は明らかに間違い。
0744デフォルトの名無しさん2016/08/27(土) 13:37:22.49ID:X14RyDNI
関数じゃなくてオブジェクトのメソッドって話やないの
0745デフォルトの名無しさん2016/08/27(土) 13:41:49.81ID:2G3rf2/X
規格がないからなあ
明らかにならない
0746デフォルトの名無しさん2016/08/27(土) 16:07:50.32ID:r7SU0MBd
クリップボードへのアクセスを行うオブジェクトの生成でネットを検索すると
Dim CB As New DataObject

Dim CB As Object
Set CB = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

の2種類が出てきますが、違いを教えてください。
0747デフォルトの名無しさん2016/08/27(土) 16:18:01.14ID:V+Q7EdiJ
同じ。参照設定するかしないかだけの違い
0748デフォルトの名無しさん2016/08/27(土) 19:27:34.04ID:zDursf6q
>>1-1000
マクロ4.0のこともたまには思い出してあげて下さい・・・
0749デフォルトの名無しさん2016/08/27(土) 20:39:58.91ID:gWjhz2Cl
何かそういうの沢山あるよな。

WorksheetFunctionも、
Application.WorksheetFunctionと何が違うんじゃ。
0750デフォルトの名無しさん2016/08/27(土) 20:51:37.88ID:b/uvLgOF
>>749
それはまったく同じもの
特定のケースでデフォルトのクラス名を省略できるってだけ
0751デフォルトの名無しさん2016/08/30(火) 07:44:38.70ID:EsFgcMjw
質問です。考え方を教えて頂きたいです。
VBAは入門書一冊読んだだけでまだ簡単なプログラムしか組めません。

http://i.imgur.com/gLPa1jE.png

画像のように従業員イロハニ、店舗abcdがあり、シフトAは「どの従業員がどの店舗に派遣されるか」になっています。
このシフトAをシフトBのように「どの店舗にどの従業員が派遣されるか」に並べかえたいです。

シフトAとシフトBは別シート。
従業員数は毎月一定ですが、派遣先の店舗数は毎月増減もあるしいつも決まった店舗ではありません。

シフトAをBに並び替えるVBAが作りたいのですが、やり方として以下の通り考えています。

手順1.新しいシートを作成しシフトAの日付を新しいシートにコピーする。この新しいシートがシフトB用のシートになる。
手順2.シフトAから店舗を抜き出し、画像のシフトBのI9からL9のように並べる。

で、この先の手順というか考え方で行き詰まってます。

「シフトAの9月1日欄を左から右に検索していって、シフトAの店舗名とBの店舗名を付き合わせて、合致していたらシフトAから従業員名を持ってくる」という感じかなと思うのですが、
その考え方でいいかダメなのか、ダメならもっと効率のいい考え方があればアドバイス頂けたらと思います。
漠然とした質問で申し訳ありません。

プログラム自体は自分で組んでみたいのですが、どういう思考でプログラムの手順を考えればいいかがわからず、アドバイス頂けたら助かります。
0752デフォルトの名無しさん2016/08/30(火) 08:38:07.68ID:agWpAPx4
実現できてるならそれでいいと思う
0753デフォルトの名無しさん2016/08/30(火) 08:50:42.22ID:rg/B84f9
>>751
最初のデータは正規化したほうが良いと思う。
日付 店舗 従業員
で縦に長いテーブルを作り、そこからvbaで表を生成すればどんな形にも対応できる

正規化せずにやるなら
・日付はコピー、表の大部分は最後につくるのでタイトル部分から作る
・foreach+filter()あたりでリストを作成し、タイトル作成
・日付部分はコピー
・I9の"a"を元にI列のリスト作成。ここでもfilter(range("c10:f10"),"a")とfiter()を使うと良いかもしれない
・I10のbを元にJ列・・・以下略
0754デフォルトの名無しさん2016/08/30(火) 14:34:28.67ID:1vDTo0PX
>>753
ありがとうございます。
正規化という言葉を初めて聞きました。
ちょっとググってみます。

あと正規化しないやり方、filterというのも調べてみます。
ありがとうございます。
0755デフォルトの名無しさん2016/08/30(火) 21:12:53.32ID:3IVEWTdL
何かデータ範囲だけ設定出来ればあとはピボットで行けそうな気がするのは気のせいか?
0756デフォルトの名無しさん2016/08/30(火) 21:42:30.12ID:fcNVJIWL
>>755
全く気のせい
0757デフォルトの名無しさん2016/08/31(水) 23:18:02.83ID:eDswuguA
ピポットテーブルの使い方
               が
               わ
               か
               ら
               ないのでVBAを使うでござるよ。
0758デフォルトの名無しさん2016/08/31(水) 23:40:29.59ID:1bSORIPG
>>757
vbaでピボットを使うと
0759デフォルトの名無しさん2016/08/31(水) 23:57:02.20ID:bAsdsxfS
苦しめ、苦しめ、だんだん死んでゆくのだ
0760デフォルトの名無しさん2016/09/01(木) 06:38:13.18ID:RZzfoQXv
power biをVBAから使う資料ある?
0761デフォルトの名無しさん2016/09/01(木) 06:45:03.67ID:jFfF04Ne
Worksheetについて、ActivateとSelectでどういう違いがあるんでしょうか
デフォルトのセル処理対象シートを指定する時はどっちでもいいんでしょうか
0762デフォルトの名無しさん2016/09/01(木) 07:23:17.68ID:U94IlsuT
>>761
selectは複数指定でき、その中のactiveなのがactivate
activateは非表示シートを指定できるのでactivateの方がいいとか何とか

http://d.hatena.ne.jp/paz3/20090824/1251086123
http://excel-master.net/macro-vba/select-activate-difference/
0763デフォルトの名無しさん2016/09/01(木) 07:49:45.91ID:jFfF04Ne
ありがとうです
自分で作る時は、操作したいシートをSetでオブジェクトに代入して使うんですが
他人の作ったものでSelect・Activateを多用・混用しているものがあってつらいです
07647182016/09/01(木) 15:10:02.73ID:95ZMuOUY
住所録から指定の市だけをフィルター掛けたい場合って
array関数じゃなんともならないのかな?
部分一致と、変数選択が出来ない

できれば指定の市のリストは別シートに作りたいんだけど、面倒?
0765デフォルトの名無しさん2016/09/01(木) 15:17:54.91ID:U94IlsuT
>>764
vbaだけならarrayとfilter使うと思うけど、めんどくさい
オートフィルタ使ったほうが早いと思う

http://officetanaka.net/excel/vba/tips/tips155.htm
部分一致
Criteria1:="東京*" ''東京で始まる
Criteria1:="*横浜*" ''横浜を含む
Criteria1:="*区" ''区で終わる
0766デフォルトの名無しさん2016/09/01(木) 15:18:14.55ID:duZLKfzc
フィルター掛けてどうしたいの?

変数で取り出したいだけならinstr使えば取れる
何を作りたいのか全然イメージできないのでそこを明確に書いてくれると助かる
07677182016/09/01(木) 15:23:37.31ID:95ZMuOUY
経理なんだけど事業所税の対象店舗だけ抽出したくて、
指定都市70箇所くらいを選択したいんだよね。
指定都市一覧表を作って、それを使ったオートフィルターをやりたいっていう
伝わるかな?
0768デフォルトの名無しさん2016/09/01(木) 15:32:37.56ID:95ZMuOUY
後同じ市に複数店舗ある場合は税額を合算しなきゃいけないから、抽出後同じ市同士で税額の合算も出したい

条件が
指定都市70-100のうち
1、床面積1000平米を超えたら平米かける600円
2,従業員数が100人を超えたら給与総額の0.25%
1.2は片方だけでも課税対象
同じ市は合算、都内23区は一つの市として扱う

ってな感じです。
0769デフォルトの名無しさん2016/09/01(木) 15:41:34.07ID:U94IlsuT
作業列作ってfind()とsumif()ですぐに終わるな
0770デフォルトの名無しさん2016/09/01(木) 15:44:31.42ID:95ZMuOUY
>>769
ごめん、それだけでは俺の頭じゃ理解できない...
0771デフォルトの名無しさん2016/09/01(木) 19:14:37.36ID:duZLKfzc
VBA使うまでもないってこと
0772デフォルトの名無しさん2016/09/01(木) 20:10:14.38ID:0Y2Y131f
Access使ってクエリ作っておけば更新もメンテもしやすいけど、
いずれにしても金勘定が絡むようなシステムを、独学で何も出来ないヤツが組むとか怖すぎる。
0773デフォルトの名無しさん2016/09/01(木) 21:15:28.24ID:6KYTe3GK
>>763
その使い方が正解だと思うよ。
実行中に手でシート変えられたらSELECTやACTIVATE使ってたら
想定してたのとは別のシート処理したりするからね。
0774デフォルトの名無しさん2016/09/01(木) 21:21:38.22ID:6KYTe3GK
>>764
EXCELのシートにSQL投げて他のシートに展開するのが後々を考えると楽かな。
絞り込みも並べ替えも自由自在。
0775デフォルトの名無しさん2016/09/01(木) 22:13:08.84ID:MLOPD6AW
>>774
えくせれんとな方法
0776デフォルトの名無しさん2016/09/01(木) 22:29:36.53ID:dXEa2oBI
意味があるかは別として、
パワポ+VBAでExcel作れるかな。
0777デフォルトの名無しさん2016/09/01(木) 22:49:09.64ID:U94IlsuT
VBAからExcelインスタンス作れないっけ
0778デフォルトの名無しさん2016/09/01(木) 22:57:19.92ID:0Y2Y131f
テキストボックス大量に敷いてスプレッドシートっぽいもの作るって事じゃないの?
0779デフォルトの名無しさん2016/09/02(金) 01:27:54.96ID:iHRJ22/E
>>774
SQLってなんぞや...
0780デフォルトの名無しさん2016/09/02(金) 03:47:18.65ID:kWkQROgW
漫画喫茶のダイス(DICE)を運営してるのはベルシティ(ザ シティ)というパチンコ店です。
ザ シティ・ベルシティ伊勢佐木町店(神奈川県)の周りにはソープランドがたくさんあります(ソープランド街です)。
このパチンコ店は韓国人か中国人が経営者の可能性があります(パチンコ店のほとんどは韓国人が経営してます)。
ザ シティ・ベルシティ伊勢佐木町店の周りには韓国料理店がたくさんあり、数キロ先には横浜中華街があります(韓国人、中国人がすごく多い地域です)。
普通はこんな場所に店を出さない気がします。

DICE系列 関東圏4
http://hayabusa6.2ch.net/test/read.cgi/netspot/1467360487/


ダイス(DICE)=まんがランド(漫画喫茶)=ちょっと気分転館(漫画喫茶)=ねっとラボ=ベルシティ(ザ シティ)というパチンコ店


パチンコ店のほとんどは韓国人が経営してます
0781デフォルトの名無しさん2016/09/02(金) 09:04:28.00ID:6v3+q8HG
>>774
ExcelでSQLって比喩かと思ったら本当に使えるのね
これは驚いた
0782デフォルトの名無しさん2016/09/02(金) 11:56:09.00ID:eEk3dEjT
>>774
どういうこと?
odbcでつなぐってこと?
0783デフォルトの名無しさん2016/09/02(金) 12:09:05.21ID:6v3+q8HG
vba sql
でぐぐれば出てくるぞ
0784デフォルトの名無しさん2016/09/02(金) 12:19:26.79ID:UbwoQtPa
ADODBやな
0785デフォルトの名無しさん2016/09/02(金) 12:29:08.53ID:wpaJvYRL
>>783広告除いて上から何件目の奴で?1個めは明らかに違うぽいけど?
0786デフォルトの名無しさん2016/09/02(金) 13:51:48.45ID:UbwoQtPa
今時ChromeとかはuBlock orginとか導入してるヤツ多いから、上から何番目なんて普通に他人とは合わないだろ
おれがさっき自分Redmineに後で見るようにメモったアドレス貼るわから好きなん見ろや

ttp://mukaer.com/archives/2010/10/17/excelsqlvlookup/
ttp://oshiete.goo.ne.jp/qa/1693954.html
ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_090.html
ttp://q.hatena.ne.jp/1154589462
ttp://d.hatena.ne.jp/ogohnohito/20090930/p1
0787デフォルトの名無しさん2016/09/02(金) 16:01:56.28ID:Lot1khqt
windows7からwindows10に替えたらoffice2010でRowHeightの設定が遅くなりました。大体10倍位の性能です。何か対策ないですかね?
0788デフォルトの名無しさん2016/09/02(金) 20:48:43.34ID:ePQkgchF
InternetExplorerオブジェクトのプロパティでInPrivateが無いようです
InPrivateで開く方法ないでしょうか?
0789デフォルトの名無しさん2016/09/02(金) 21:03:52.16ID:YwGG/E5k
>>785
csvもsqlできる)ー
0790デフォルトの名無しさん2016/09/02(金) 22:44:14.09ID:i0ejSJpA
>>774だけど、何でもかんでも使えると言う訳ではないからね。
本来のDBからかけ離れたものになって行くほど制限を受けるよ。
例えばEXCELにSQLを使う場合は削除系の命令が使えないし、
CSVはそれに加えて工夫しないと前0が死んだりする。
設定の方法も大分変わるしね。
0791デフォルトの名無しさん2016/09/03(土) 00:33:18.18ID:I1IV+EOF
ググると削除の例が出てくるのは何で?
0792デフォルトの名無しさん2016/09/03(土) 01:41:01.47ID:iqP+pTRw
>>791
試してみた?
0793デフォルトの名無しさん2016/09/03(土) 07:56:47.06ID:I1IV+EOF
>>792
試してないが。
作例は全部嘘と言いたいの?
0794デフォルトの名無しさん2016/09/03(土) 09:02:37.31ID:jW/PGsaB
>>793
こっちはググってみて出来ないと乗ってて実際試してみて出来ないことを確認したけど、
どこのページ?別に何か方法が有るのかも知れないね。
0795デフォルトの名無しさん2016/09/03(土) 10:51:14.72ID:PFT0pHGx
SQLじゃなくてテーブル操作だったりして。

ListObjects(1).ListRows(1).Delete

みたいなのは出来るからね。
0796デフォルトの名無しさん2016/09/03(土) 18:21:09.90ID:I1IV+EOF
>>794
どこって、1ページ目の1番上。
何で出来ない方だけ見つけられるんだよ。
0797デフォルトの名無しさん2016/09/03(土) 18:22:26.28ID:I1IV+EOF
↑excel vba sql deleteでね。
0798デフォルトの名無しさん2016/09/03(土) 18:39:07.77ID:S1LVnrms
検索結果は人によって変わるから、直接URL張ったほうが良いと思う
0799デフォルトの名無しさん2016/09/03(土) 18:41:28.16ID:5DqHmVAq
対象がAccessだから削除できてる
0800デフォルトの名無しさん2016/09/03(土) 19:51:03.90ID:NWU88erx
そりゃAccessならね。元々DBとして作られたものだし。
何か>>796のも見たけどそれのことっぽいね。
「ExcelにSqlを使う場合は」って確か銘打ってたと思うけど、まあ見落としかな。
0801デフォルトの名無しさん2016/09/03(土) 20:01:55.86ID:I1IV+EOF
>>799
じゃあAccessじゃないやつ。
https://pasocafe.space/wordpress/excel-mysql-connect-5
0802デフォルトの名無しさん2016/09/03(土) 20:21:38.28ID:I1IV+EOF
>>800
ああ、
Excel(のシート上のデータ)にSqlを使う場合は、か。
すまん。
0803デフォルトの名無しさん2016/09/03(土) 20:31:10.35ID:C7/HRvIV
>>801
ID:I1IV+EOF
バカ発見
0804デフォルトの名無しさん2016/09/03(土) 20:33:14.95ID:NXr2sGOM
でもIDがEOFってちょっといいな
0805デフォルトの名無しさん2016/09/03(土) 20:34:40.52ID:S1LVnrms
I1IVも数字みたいだ
0806デフォルトの名無しさん2016/09/03(土) 20:38:32.89ID:I1IV+EOF
>>803
小学生でもVBAに興味を持つのか…。
何に使うのかわからんが。
0807デフォルトの名無しさん2016/09/03(土) 20:49:21.81ID:C7/HRvIV
>>806
バカ発見
0808デフォルトの名無しさん2016/09/03(土) 20:59:35.91ID:I1IV+EOF
>>807
・・・・・・・・・・・・・・。

これがきっかけで、変な事件起こされたら気分悪いから、
この辺でやめとくけど、
相当みじめな人生送ってるんだろうな、お前って。
0809デフォルトの名無しさん2016/09/03(土) 21:06:23.48ID:S1LVnrms
小学生いじめるのはやめよう
カッコ悪いゾ
0810デフォルトの名無しさん2016/09/03(土) 21:10:28.72ID:C7/HRvIV
>>808
同じ匂いがする
0811デフォルトの名無しさん2016/09/03(土) 21:20:02.29ID:PFT0pHGx
なんかマンガに出てくる野生児みたいな事言っとる
0812デフォルトの名無しさん2016/09/03(土) 21:31:29.36ID:C7/HRvIV
>>808
ごめんね
0813デフォルトの名無しさん2016/09/03(土) 22:24:28.77ID:u1vRHWUh
Seleniumbasicって開発止まったんかな?
0814デフォルトの名無しさん2016/09/03(土) 23:09:08.16ID:orlk44gO
すみませんが教えて下さい。
過去ログ読んでもちょっとわかりませんでした。

あるフォルダの最新ファイルを開く。を何とか作って
動かしているのですが、

前略
strFilePath = ThisWorkbook.Path &
0815デフォルトの名無しさん2016/09/03(土) 23:56:22.26ID:mVpYdvYg
( ゚д゚)ポカーン
0816デフォルトの名無しさん2016/09/04(日) 10:25:35.39ID:KT/fZSZe
VBAってEXCELのリンク編集みたいな機能はなしか
閉じてるブックの大量のデータを毎回書き換えたいんだけどな
0817デフォルトの名無しさん2016/09/04(日) 10:29:24.68ID:RvfKmPYC
それならExcelよりもcsvかテキストファイルにした方がいいと思う
0818デフォルトの名無しさん2016/09/04(日) 11:08:29.44ID:KT/fZSZe
すまぬなんか間違ってる事言ったっぽいw
ブックBはAとリンクしてるので、Aのデータを手動で更新して閉じた時に、Bに結果が反映されるようにしたいんです
EXCELではリンク編集で一発で変えられたんだけど、VBAではそれができないのかなーと
説明下手ですいませぬ
0819デフォルトの名無しさん2016/09/04(日) 11:12:57.98ID:RvfKmPYC
あぁなるほど
あるかもしれないけど、俺は知らないわ。多分無いと思う
0820デフォルトの名無しさん2016/09/04(日) 11:15:03.92ID:pAzXpYBT
それこそSQLで更新かけちゃえば早いと思う。
0821デフォルトの名無しさん2016/09/04(日) 11:47:32.32ID:KT/fZSZe
やっぱないかー
お手数かけてすいませんでした
今度SQLで調べてみます
0822デフォルトの名無しさん2016/09/04(日) 12:52:05.03ID:C66L8/dk
>>814
>strFilePath = ThisWorkbook.Path &
2chのバグだろ

書き込み確認画面が出る際、" を使うと、そこで文字列の終了と解釈される。
\" とエスケープすると、書き込めないか?
0823デフォルトの名無しさん2016/09/04(日) 14:00:22.63ID:nXLpbkO7
別ブックにリンク張るとか正気の沙汰とは思えない。
0824デフォルトの名無しさん2016/09/04(日) 14:04:01.59ID:RvfKmPYC
中小企業だと普通のことやで・・・
0825デフォルトの名無しさん2016/09/04(日) 14:19:47.17ID:xp6EP8jq
中小に限らずちゃんと管理できてたら問題ないと思うが
0826デフォルトの名無しさん2016/09/05(月) 19:13:02.79ID:Gm422jki
power biってVBAから操作できますか?
0827デフォルトの名無しさん2016/09/06(火) 06:19:18.61ID:9VGdJ3gy
>>826
power pointなら
0828デフォルトの名無しさん2016/09/07(水) 00:08:44.45ID:Z2UsYJzz
ファンクションって、
ファンクションって言いたいだけじゃね?
別にサブでいいのに。
0829デフォルトの名無しさん2016/09/07(水) 00:12:04.38ID:yR890zwI
0830デフォルトの名無しさん2016/09/07(水) 00:24:20.71ID:CFB9C61X
returnを使わないならそうだな
0831デフォルトの名無しさん2016/09/07(水) 00:28:13.14ID:nmW8yRGz
vbaにもreturnあったのか?
・・・なんだこれ
0832デフォルトの名無しさん2016/09/07(水) 01:14:22.16ID:CFB9C61X
あるよ
0833デフォルトの名無しさん2016/09/07(水) 02:19:25.65ID:MHwvXL40
Excel2013から2016に移るメリットある?
ノートPC買ったときについてきたOEM版でExcelとパワポ使ってるけど
デスクトップでも作業したいから2ライセンスある2016買おうか迷ってるんだよね
0834デフォルトの名無しさん2016/09/07(水) 03:06:27.21ID:KQhwpSzw
OEM版は1ライセンスなの?
先ずはそこから確認
0835デフォルトの名無しさん2016/09/07(水) 07:11:02.63ID:3jY6Z1qr
>>834
oemはそんなもんでは
0836デフォルトの名無しさん2016/09/07(水) 07:37:12.13ID:AUiAMend
>>831
gosub あるからな
0837デフォルトの名無しさん2016/09/07(水) 08:20:03.42ID:lK2e8vOQ
OEMライセンスがもったいない気がする。
2013と2016じゃ対して変わらないし。
0838デフォルトの名無しさん2016/09/07(水) 11:21:56.99ID:EmqwIy0k
>>824さんは別ブックのデータを使って統計データを取りたいって時何を使いますか?
0839デフォルトの名無しさん2016/09/07(水) 15:13:16.20ID:MHwvXL40
Excel2010からExcel2013に変えたんだけど、2010では5秒くらいで終わってたVBA処理が
2013だと倍近いくらいの時間がかかるようになった。

同じような人いる?なにか有効な設定変更とかありますか?
0840デフォルトの名無しさん2016/09/07(水) 15:20:24.49ID:nmW8yRGz
selectにアニメーションがかかるので、アニメーションを切るとか
コード見ないとそれぐらいしか分からん
0841デフォルトの名無しさん2016/09/07(水) 15:29:04.74ID:MHwvXL40
>>840
そんないらん機能盛り込んでるんか。
アニメーションってWindowsの視聴効果のことだよね?
それなら最初からオフにしてるんだけどなー

なんかぐぐったら2013でVBA処理が遅くなったみたいなの結構ヒットするな
2016だと改善されてるんかな
0842デフォルトの名無しさん2016/09/07(水) 16:26:20.19ID:rbeW3tnj
Application.ScreenUpdating = False
'〜マクロ処理〜
Application.ScreenUpdating = True
0843デフォルトの名無しさん2016/09/07(水) 17:30:43.99ID:MHwvXL40
>>842
それは2010から長い文のときはやってる
0844デフォルトの名無しさん2016/09/07(水) 18:13:06.31ID:RIOS633e
>>842
さいごに
Application.ScreenUpdating = True
を書き忘れたらどうなるの?

というかそれ使うときは最後のやつは書かない。
0845デフォルトの名無しさん2016/09/07(水) 19:34:42.78ID:mtj94bfp
Trueにしないと画面更新しなくなるはず。
Trueにせず支障なく使えるならそもそもFalseが何らかの理由で通ってない。
0846デフォルトの名無しさん2016/09/07(水) 20:21:03.43ID:nmW8yRGz
Application.ScreenUpdating = True
を書き忘れたらコンソールから入力することになって非常に面倒
0847デフォルトの名無しさん2016/09/07(水) 20:23:17.65ID:nmW8yRGz
>>839
これならどうだ


Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'処理
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
0848デフォルトの名無しさん2016/09/07(水) 20:25:06.10ID:8MtneqB4
>>845
VBAから抜けた瞬間に自動的にTrueに戻るよ
戻らないのはxlManualの方
0849デフォルトの名無しさん2016/09/07(水) 20:25:41.18ID:8MtneqB4
↑xlCalculationManual の間違い
0850デフォルトの名無しさん2016/09/07(水) 20:26:49.01ID:nmW8yRGz
知らなかった。
Application.EnableEvents = False
と間違えてた、失敬。こっちは戻らない
0851デフォルトの名無しさん2016/09/07(水) 20:51:41.71ID:MHwvXL40
>>847
んー、2010に比べるとやはりもっさりですなー

いろいろググって設定試して、ダメなら2016にするか2010にするか
0852デフォルトの名無しさん2016/09/07(水) 20:59:43.46ID:mt9WoXGu
>>839
ファイルを何個も開いて閉じる処理で同じようなことになった
開いたり閉じたりしてるなら、New Excel.Applicationでインスタンスを作って
それをいじくり回すようにするとましになるよ
0853デフォルトの名無しさん2016/09/07(水) 21:04:18.24ID:H0Msl5kT
ブラウザの操作がかなり重くなった
OfficeのバージョンじゃなくてOSをWin10にしたせいだと思うけど
0854デフォルトの名無しさん2016/09/07(水) 21:18:38.72ID:nmW8yRGz
chromeにしたら?
0855デフォルトの名無しさん2016/09/07(水) 23:47:12.01ID:MHwvXL40
>>852
ぐぐってるうちにわかったけど、2013って別ウィンドウで開いてても同じインスタンスなんだな・・・
Excel2010のときは、別ウィンドウで開くでファイルを複数開くと個別で作動してたんだけど、2013だと一つのブックでVBA実行してると他のブックの操作すらできないな・・・

例えば、VBAを含んだブックAとブックBがあるんだけど、それぞれ別で起動したい場合はどうすればいいの?
もしかして2013は無理ってパターンかな・・・
0856デフォルトの名無しさん2016/09/07(水) 23:58:18.89ID:nmW8yRGz
>>855
https://msdn.microsoft.com/ja-jp/library/office/dn251093.aspx
無理っぽいね
仮想PCでも使うか、openofficeやoffice365と併用するか
0857デフォルトの名無しさん2016/09/08(木) 00:00:43.31ID:2qbrWhfr
>>856
うわー・・・まじか。こんな落とし穴があったとは。
たぶん2016も同じだよね・・・

しょうがないけど、会社の2010のライセンスもらって使うしかないか
0858デフォルトの名無しさん2016/09/08(木) 00:02:17.15ID:H7Qp4sWI
>>839
最大行数の違いが出るような事を書いているとか?
0859デフォルトの名無しさん2016/09/08(木) 00:39:42.86ID:2qbrWhfr
>>858
たぶん同インスタンスで複数開いてるのが最大の原因っぽい
VBAブックを一つだけ開いて実行するといくぶんかマシになる。
それでも2010に比べるとなんかひっかかりがある感じだけど。
2010だと複数開いても、2013を単体で開いて実行するのより快適なんだけどね
0860デフォルトの名無しさん2016/09/08(木) 04:26:09.24ID:2qbrWhfr
別インスタンスで立ち上げるの解決したので上げておく。
Excel のコマンド ライン スイッチを使用すれば2013以降でも簡単に別インスタンスで起動することが可能ですた。
https://support.office.com/ja-jp/article/Excel-%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-


別インスタンスでの起動は、/X

タスクマネージャーみても、ちゃんとプロセスがExcel(2)とかじゃなくて2つにわかれて別々で起動してるのか確認できた。
0861デフォルトの名無しさん2016/09/08(木) 07:11:37.96ID:Oml+cgWi
>>860
リンクが切れているんだが
0862デフォルトの名無しさん2016/09/08(木) 11:36:45.72ID:2qbrWhfr
>>861
あれw途中で切れてたみたいだ
Excel2013 Excel のコマンド ライン スイッチ でぐぐればすぐみつかるお
0863デフォルトの名無しさん2016/09/08(木) 11:43:10.66ID:2qbrWhfr
やり方を書くと、別インスタンスで起動したい場合は

1、起動したいbookのショートカットを作成。
2、ショートカットのリンク先を「/x」を使って書き換える

例:例えばDドライブにあるbook1のショートカットを作成を作成した場合は

"c:\ここはExcelがインストールされてるあるフォルダパス〜\EXCEL.EXE" /x "D:\book1.xlsm"

これでショートカットから開くと別インスタンスで起動する。
同インスタンスで複数のファイルを開いて、VBA実行するよりかなりマシな速度になったよ。
0864デフォルトの名無しさん2016/09/08(木) 22:40:45.22ID:sWOR7A2s
インスタンスがインスマスに見えた。
0865デフォルトの名無しさん2016/09/08(木) 22:53:37.23ID:jvmR2qQB
タンスに
0866デフォルトの名無しさん2016/09/08(木) 23:18:36.07ID:2qbrWhfr
しれっとこういう重要な変更してくるからMS困るわ
わかりやすく右クリックとかで「別インスタンスで起動」ってメニューいれるとか配慮ないのかね
0867デフォルトの名無しさん2016/09/09(金) 03:08:04.12ID:VuAPiSR8
VBAで普通にブックオープンとかしてたら、Applicationが同一だし
前から同一インスタンスで動いてた気がするけどな

まあとりあえず2013は遅いかもしれんから気を付けろってことか
0868デフォルトの名無しさん2016/09/09(金) 03:08:05.34ID:VuAPiSR8
VBAで普通にブックオープンとかしてたら、Applicationが同一だし
前から同一インスタンスで動いてた気がするけどな

まあとりあえず2013は遅いかもしれんから気を付けろってことか
0869デフォルトの名無しさん2016/09/09(金) 12:17:34.03ID:qZ0UMPHT
>>867
同じPCに2010と2013入れて比較したけど、全体的に遅いね
長時間使えば使うほど、もっさりが目について戻したくなってるw
設定もいろいろ見直したけど、2010に比べるとだめだw
海外のフォーラムとかみても、2013は失敗作みたいに言われてるし、2010で快適に動いてる人はアップグレードしないほうが吉だね
0870デフォルトの名無しさん2016/09/09(金) 12:25:36.07ID:1e93Tfq9
楽天RSSっていうのを利用して、
リアルタイムの株価を取得していろいろ処理してるブックがあって、
普段はチャートのあるシートをアクティブにしてるんだけど、
30万行ぐらいあるシートをアクティブにするとCPU使用率が100%近くになってPCが重くなるんだけど仕方ないのかね?

win7+office2010+メモリ16G+i5
0871デフォルトの名無しさん2016/09/09(金) 12:49:44.35ID:qZ0UMPHT
>>870
別インスタンスで起動してる?
0872デフォルトの名無しさん2016/09/09(金) 12:58:23.32ID:1e93Tfq9
>>871
別インスタントで6個のブックを開いてる(各々のブックでリアルタイム株価や板の動きをトリガーとして処理を行っている)。
そのうちの1つのブックで、普段はアクティブではない30万行ぐらいあるシートをアクティブにするとCPU使用率が上がるってところまではわかっています。

最初はCPU使用率が100%になる原因がわからなくて、いろいろ観察してるうちに1つのブックのとあるシートをアクティブにしてるときのみ生じる現象とわかったところです・・・
0873デフォルトの名無しさん2016/09/09(金) 13:07:28.76ID:71yv83Wj
>>870
DBに入れたほうがよさ気
それか非表示にしておいて、更新やデータの取得はすべてvbaに任せるとか
0874デフォルトの名無しさん2016/09/09(金) 13:33:18.09ID:1e93Tfq9
>>873
たまに詳細データを確認したい時があるんです
まめにデータを移動して行数を減らしてみることにします・・・ありがとうございます
0875デフォルトの名無しさん2016/09/09(金) 13:39:55.68ID:qZ0UMPHT
>>872
5万行くらいの行だけど、複数のVBAブックを別インスタンスで起動して
一つのVBAに長めの処理実行させて、アクティブ移動しながらタスクマネージャー使用率みたけど
アクティブにしたからってCPU使用率が跳ね上がるなんてことはなかったなー
ちなみに別インスタンスで起動してたら、タスクマネージャーのプロセス表示は各ブック別々になってるからね
0876デフォルトの名無しさん2016/09/09(金) 14:30:15.77ID:1e93Tfq9
>>875
いろいろ確認してもらいありがとうございます。
実は、これらの別インスタンスでの複数ブックは数年運用しており、CPU使用率100%の問題って今回が初めてなんです。
きっと今までも数十万行ってこともあったと思うんですがCPU使用率100%ってことはありませんでした(気づかなかっただけかもしれませんが)。
だから30万行だけが原因だとは思えないでいます。

とりあえず週末に30万行を数千行に減らして月曜日に立ち上げて効果あるかどうかトライしてみます。
0877デフォルトの名無しさん2016/09/09(金) 20:07:45.64ID:Udk4e4Yr
>>876
多分もうVBA卒業のところまで来てるんだよ。
マルチタスクが使える言語に移行しなさいってことじゃないかな。
0878デフォルトの名無しさん2016/09/09(金) 20:32:43.76ID:qZ0UMPHT
俺もそろそろExcelじゃ限界かなって思ってるんだけど
また1からソフト作るために他の言語を勉強するって考えると億劫なんだよな(´・ω・`)
0879デフォルトの名無しさん2016/09/09(金) 20:40:26.04ID:71yv83Wj
気持ちは分かる
しかし一度覚えてみたら、excel+VBAでチマチマやってたのはアホだったと思い返すことになる
早めに一度accessなりに手を出してみたほうが良い
0880デフォルトの名無しさん2016/09/09(金) 20:52:18.23ID:Gtu/Us0a
目クソ鼻クソ感wwwwww
0881デフォルトの名無しさん2016/09/09(金) 20:59:06.29ID:LQue6sOq
AccessはSQL使えるならExcelよりも非常に高速に動作する。
データベース処理が出来てVBAを流用したいならAccessの方がメンテナンス性も高くていい。

でもVBAってセキュリティに教養の無い会社で使える唯一の言語だから流行ってるだけで、
別環境で開発できるなら早々にもっとちゃんとした言語覚えた方が幸せな気がする。
0882デフォルトの名無しさん2016/09/09(金) 21:01:14.48ID:Sz+zzzeN
>>878
データだけはExcelからは分離して、言語はVBAのままでいいじゃん。
0883デフォルトの名無しさん2016/09/09(金) 21:08:52.72ID:Gtu/Us0a
お前ら問題から逃げるなよw
0884デフォルトの名無しさん2016/09/09(金) 21:16:54.11ID:71yv83Wj
SQLと言っても別にユーザーからのリクエストを処理するわけでもないし、
なんちゃってでも使えたら十分高速
インデックス貼り忘れたらクソだけど、注意点はそれぐらいだ
0885デフォルトの名無しさん2016/09/09(金) 21:19:17.66ID:Sz+zzzeN
>>883
最大の問題はデータとプログラムが別れてないこと
0886デフォルトの名無しさん2016/09/09(金) 21:24:59.11ID:Gtu/Us0a
>>885には原因が分かっているらしい
ではデータとプログラムが別れていないとl何故
> 普段はアクティブではない30万行ぐらいあるシートをアクティブにするとCPU使用率が上がる
という現象が起こるのか解説お願いします
0887デフォルトの名無しさん2016/09/09(金) 21:30:29.68ID:qZ0UMPHT
>>879
>excel+VBAでチマチマやってたのはアホだったと思い返すことになる

覚えるとそうなんだろうけどねー
データベースが5万行くらい超えてくると立ち上げも糞重いし、Accesslの使い方覚えてVBAと組み合わせたらマシになるんだろうな
本かってくるかなー
0888デフォルトの名無しさん2016/09/09(金) 21:51:02.47ID:Sz+zzzeN
>>886
最大の問題はもとの質問者が提示した問題ではない。
0889デフォルトの名無しさん2016/09/09(金) 22:04:12.24ID:Gtu/Us0a
>>888
最大かつ唯一の問題は質問者が提示した問題である
0890デフォルトの名無しさん2016/09/09(金) 22:09:08.38ID:Sz+zzzeN
>>889
お前に言われる筋合いはないわボケカス引っ込め
0891デフォルトの名無しさん2016/09/09(金) 22:13:30.70ID:Gtu/Us0a
>>890
事実を捏造する事に筋もクソないとは思わんか?問題から逃げるなよ
0892デフォルトの名無しさん2016/09/09(金) 22:25:26.49ID:71yv83Wj
>>887
自分の仕事を楽にするためならスキルの吸収早いだろうからガンバレ

>>883
これからも増え続けるデータをExcelで扱い続けるのは無理があるだろう。
シートやブックを分ければ解決するが、保守が面倒になるし、いずれは同じ問題が形を変えて蘇ることだろう
今後も永久に復活しない形、dbに突っ込んで仕事を解決するほうがスマート。あるかないかわからん原因も究明しなくて良い。
0893デフォルトの名無しさん2016/09/09(金) 22:30:09.32ID:Sz+zzzeN
>>891
元の問題を個別に解決したところで未来は全然開けん
横からぐだくだ言うだけのお前こそクソ過ぎて畑にも撒けんわ
0894デフォルトの名無しさん2016/09/09(金) 22:36:06.25ID:OFG3vHIP
>>891
ID:Gtu/Us0a
劣勢かな
がんばー
0895デフォルトの名無しさん2016/09/09(金) 22:39:41.33ID:71yv83Wj
>>891
>問題から逃げるなよ
って言う前に自分で解決したら?
そうすることに意味があると思えないけど
0896デフォルトの名無しさん2016/09/09(金) 22:47:06.52ID:H3RR5zb8
・めったに変わらないリソース系データで、量はたいしたことない
・コンフィグ情報

これらをExcelで管理するのは状況によってはまあある。
でもトランザクション系の増えていくデータはやめとけ。
これは原則なので個別に工夫しようとしない方がいい。
0897デフォルトの名無しさん2016/09/09(金) 22:47:54.76ID:OFG3vHIP
>>896
ですねー
0898デフォルトの名無しさん2016/09/09(金) 22:48:19.19ID:Gtu/Us0a
>>892
…そうなんだー
生憎こっちの宇宙は原因のない現象なんて観測されたためしがないもんでね
僕の住んでる世界では原因が分からない問題に別のやり方を試しても
うまくいく保証なんて一つもないんだ
むしろまた別の訳の分からない問題を引き当てる方が多いくらい
まったくやっかいな世界だよ、君の住んでる宇宙が羨ましく思える程だ
でも今日は異世界の住人と交流出来て楽しかったよ
ありがとう!またお話し出来る事を期待してるよ!
0899デフォルトの名無しさん2016/09/09(金) 22:51:08.61ID:OFG3vHIP
>>898
ナイス締
0900デフォルトの名無しさん2016/09/09(金) 22:51:09.03ID:71yv83Wj
>>896
だよな。めんどくさがりの俺ですらdbにいれる
0901デフォルトの名無しさん2016/09/09(金) 22:54:59.28ID:OFG3vHIP
ポスグレ
odbc
vba
愛用
0902デフォルトの名無しさん2016/09/09(金) 22:58:08.63ID:LQue6sOq
DB形式の方が面倒くさくなくていいだろって思うのはデータを管理する側だからかな?
0903デフォルトの名無しさん2016/09/10(土) 00:22:51.32ID:ADp4igli
Accessは、Excelと比べるとインターフェイスが作りづらいんだよな。
自由度が高くて、色々と融通の利くセルが、
デフォで付いているかどうかの差は大きい。
0904デフォルトの名無しさん2016/09/10(土) 02:21:56.26ID:r4eao2DY
いや別にAcccessやExcelにこだわる必要もないんだよ。
DBはSQLSERVERでもMySqlでも無料で使えるものもその辺に転がってるし、
プラットフォームを考えるとVSだって無料のバージョンがあるから
それを使えばマルチタスクだって出来る。

Excelを使うのだって目的を達成する手段のひとつでしかないんだから、
目的に合った手段を選択すればいいわけで。

AccessやExcelはファイルの移動や持ち運び、管理や作成のお手軽感で有利だけど、
大量のデータをリアルタイムに表示したり管理したりするのには余り向いていない。

まー、そもそもここのスレがExcelVBA質問スレだからあまり風呂敷を広げると
スレ違いもいいところになっちゃうけどね。
0905デフォルトの名無しさん2016/09/10(土) 02:49:17.85ID:+08gsQDR
Excelを一言で喩えるな器用貧乏って感じ?
0906デフォルトの名無しさん2016/09/10(土) 08:02:18.11ID:uQ51/TWJ
>>903
入力は楽だしそのまま使うならいいんだけど
それ使ってなにか処理しようとするとその自由さが仇になる
0907デフォルトの名無しさん2016/09/10(土) 10:21:39.48ID:SkQ6cC7d
無料かどうかなんか関係ない問題は社内で使えるかどうか
エクセルはどの会社でもたいてい使えるからvbaが一番いい選択肢になってるだけ
0908デフォルトの名無しさん2016/09/10(土) 10:53:53.24ID:lhsLes9j
>>907
そういうケースもあるな。
0909デフォルトの名無しさん2016/09/10(土) 11:26:57.67ID:2RL62M90
必要とあれば余り無茶な金額でなくて
セキュリティ的に問題無ければ
申請出せば通りそうなもんだけどな。

申請出来るような立場で無いってこと?
まあ仕事場って色々な形態があるから
分からないけどね。
0910デフォルトの名無しさん2016/09/10(土) 11:47:52.74ID:uQ51/TWJ
>>909
会社によってはその申請がめちゃめちゃ面倒だったりする

それによってどれだけ工数が下がるんだ?
とか、
セキュリティのリスクはどうなってるんだ?
とか

誰でも見える共有フォルダで管理してる Excel ファイルを置き換えるだけなのになぜかクラッカーに狙われてる極秘資料みたいな扱いになったりする orz
0911デフォルトの名無しさん2016/09/10(土) 13:00:00.00ID:GPNvtRkq
無料のマイクロソフト製品で業務に使いたいんです、というA4一枚の申請で通らないとしたら、そんな会社は一般的とは言えん。
0912デフォルトの名無しさん2016/09/10(土) 13:08:13.38ID:lhsLes9j
>>911
つまり?
0913デフォルトの名無しさん2016/09/10(土) 13:12:32.82ID:TJ0CLQGm
SQL Serverを使うって話?LAN内限定であってもサーバ立てるのは厳しい制限があるところ多いよ
0914デフォルトの名無しさん2016/09/10(土) 13:19:15.61ID:NDaM16fx
会社が一般的かどうかなんてどうでもいいわ。
だいたいSQL ServerもMySQLもVisual Studioもエンタープライズ版は有料なんだよ。
0915デフォルトの名無しさん2016/09/10(土) 13:21:59.56ID:5L40HAFB
そもそも自分しか使わない使えないってのも阻害要因になる
引き継ぎできなくなるし
全部の管理させられる
0916デフォルトの名無しさん2016/09/10(土) 13:22:14.68ID:uQ51/TWJ
>>911
会社によっては
って前置きしてるのに一般的でないって言われて困惑
0917デフォルトの名無しさん2016/09/10(土) 16:17:45.60ID:+svW5/ih
>>910
ウチなんか、OneDriveで他の支社に工事写真を送ろうとしたら「おい!そんな事してセキュリティは大丈夫なのか!」とキレられた。
その上司に言わせると、USBメモリが一番安全らしいw
0918デフォルトの名無しさん2016/09/10(土) 17:56:35.67ID:r4eao2DY
ちょっと前にドロップボックスで問題になったばっかりだからね
0919デフォルトの名無しさん2016/09/10(土) 17:59:16.09ID:7WjHykaR
暗号化添付ファイルのパスワードをそのメールに書いてくる上司ですね
0920デフォルトの名無しさん2016/09/10(土) 18:30:16.77ID:NDaM16fx
送付ファイルとパスワードをセットで送る事の危険性を知りながら、
全く同じ原理の自己復号型暗号化ファイルとかいうエセセキュリティは使うというよく分からない管理体制ですね分かります。
0921デフォルトの名無しさん2016/09/10(土) 22:57:05.96ID:+08gsQDR
Windows10の64bitなんだけど
インストールされてるExcelは32ビット版だった
Excelも64bitにしたほうがいい?速度向上とかにつながりまつか?
0922デフォルトの名無しさん2016/09/10(土) 23:02:24.43ID:Q2xHQZZD
>>921
2倍速くなる
0923デフォルトの名無しさん2016/09/10(土) 23:14:22.84ID:F/TbwQnQ
>>921
大して変わらない。重いならシートを見なおしたほうがいい。
64bitのメリットとしては2GB超えのブックを扱えるようになるらしいが、そのブック自体が凶悪すぎる。
デメリットとしてエラーの可能性が増える。
http://excel-databace.hatenablog.com/entry/64bit-vba-error
http://mypace.sasapurin.com/entry/2015/03/12/210031
迷ったら32bitがいい。俺ならPC関係なく迷わず32bitにする。

>>922
レスの速さは評価できますが、深みが全くなく、稚拙としか言いようがありません。
ネタを書き込む前に、それが本当に面白いかどうか、一度見なおして下さい。
もし面白いかどうかわからない時は、一晩寝かせてから翌朝見なおしてみましょう。それでも面白ければ、きっと面白い書き込みに間違いありません。
0924デフォルトの名無しさん2016/09/10(土) 23:17:54.31ID:tqfzqMfr
何コイツ超性格悪そうwww
0925デフォルトの名無しさん2016/09/10(土) 23:22:47.55ID:Q2xHQZZD
>>923
1.5日寝かせたネタなんだよ
0926デフォルトの名無しさん2016/09/10(土) 23:46:13.73ID:+08gsQDR
>>923
なるほど。
わかりやすい解説ですね。
容量が大きければ64bitの恩恵が受けられる場合があるが、一般的にはエラーに合う方が確率高そうですね。
32のままにしときます。

>>922
大きいデータなら早くなるみたいだね
0927デフォルトの名無しさん2016/09/10(土) 23:52:11.40ID:qkwFBHdt
大きいデータってんならブックよりDBに入れとけって言うとループ状態になってしまうんだなw
0928デフォルトの名無しさん2016/09/11(日) 00:14:01.16ID:M0wOkyr0
>>927
そこでローカルに
ポスグレっす
0929デフォルトの名無しさん2016/09/11(日) 03:08:35.07ID:BqoCJDFO
こんばんは。
現在accessのデータをエクセルへ取り込み様々なチェックを行うマクロをvbaで作成しています。

そこで1点質問させて頂きます。
データを取り込んで来る際に
エクセル上で入力フォームから入力した
値をデータの検索条件として使用する事は可能でしょうか?

私の考えとしてはSQLで取り込むので
入力される値を変数に格納し、

SQLでその変数を検索条件記述の部分に
記載する方法でいけないかと考えています。

長文失礼致しました。
拙い文章ですのでご不明な点あれば
ご質問されて下さい。
0930デフォルトの名無しさん2016/09/11(日) 03:22:05.39ID:M0wOkyr0
>>929
その考え方で問題ないです
0931デフォルトの名無しさん2016/09/11(日) 03:26:41.23ID:hSPhmXYb
迷わせるようで悪いけど、64bitは2倍速くなると言うのはあながち嘘じゃない。
ただ「場合によるのと部分的に」ということで、メモリへのデータ転送を行う際に
使用するI/Oポート(データの受け渡し口)が4Byte(32bit)から8Byte(64bit)になるためその分速くなる。
大きなデータと言うのは多分これの話をしているんだと思うんだけど、
計算時にも32bitを超える枠のものがあればその分速くなる。
変数に入れてあるもの計算に使う時とかは最終的に機械語レベルになるとレジスタと言うものに
値を入れて演算するんだけど、これも2倍の枠になるためその分速くなる。
文字列の代入なんかも値型であれば同じことが言えるね。

後、Windowsを64bitにしていてOfficeを32bitにしているとその絡みで思わぬ問題に当たることもある。
例えばWindowsが64bit、MySql(ODBC)を32bitのEXCELで使用しようとした時、インストールしなければいけないMySqlは32bit版の方。
何か起こってもすぐには分からないし、分かっていてもそれを対処出来る知識がないと結構辛いと思う。
http://infith.com/system/database/mysql_odbc_win7_64bit/

ただ>>923の人が言ってる通り、32Bitで使っていた過去の資産が使えなくなる場合もあるのもまた事実。

あくまで個人的な意見だけ言わせて貰えば、もうOS64bitにしちゃってどうせOffice以外にも影響出てるだろうから、
ここは全部64bitで合わせておいて過去とはサヨナラした方がいいんじゃないかなとは思う。

結局のところ自己判断で決めるしかないんだけど参考までに。
0932デフォルトの名無しさん2016/09/11(日) 03:36:23.70ID:hSPhmXYb
>>929
基本的にはそれで問題ないと思う。
補足として、もし使う環境がセキュリティに対して厳しいところであれば、
パラメータクエリとかパラメタライズドクエリと言われているものを使った方が良いとは思う。
多分ググればどういうものかはすぐ分かるはず。
0933デフォルトの名無しさん2016/09/11(日) 03:39:06.46ID:BqoCJDFO
申し訳ありません。
質問内容が若干間違っていました。

>データを取り込んで来る際に
>エクセル上で入力フォームから入力した
>値をデータの検索条件として使用する事>は可能でしょうか?
→入力した値よりも大きいものを探すことを検索条件とすることは可能でしょうか?

申し訳ありません。
0934デフォルトの名無しさん2016/09/11(日) 03:40:28.07ID:BqoCJDFO
930さん932さんお速い回答ありがとうございます。
0935デフォルトの名無しさん2016/09/11(日) 03:58:54.46ID:M0wOkyr0
>>933
>>934
絶許
0936デフォルトの名無しさん2016/09/11(日) 08:51:28.81ID:iHZT+lPM
>>931
bit数が上がって処理速度が上がるのってHIWORD、LOWORDみたいに送り出す側が意識してまとめてる場合だけだし、
WOW64自体にオーバーヘッドがあるから、処理速度が上がるなんて事はないと思うんだけど。
0937デフォルトの名無しさん2016/09/11(日) 10:13:28.91ID:0uTLa4Al
dllを使ってたら64bitOfficeにする際にビルドしなおさなきゃいけないと思う。
0938デフォルトの名無しさん2016/09/11(日) 12:00:43.86ID:oXBrrZCw
>>919
メールは別々だが、
ZIPのパスワードが3文字ってのも居るぞ。
0939デフォルトの名無しさん2016/09/11(日) 13:50:52.60ID:tMu+gfRI
>>925
わろた
0940デフォルトの名無しさん2016/09/11(日) 17:44:47.63ID:J0QJyDCz
100万行入力して、下のコードを何度か実行した結果Aの方が平均3〜4秒くらい早かったです。
Aの方がコピペして手間がかかってる様に思うんですけど@の書き方に問題ありますか?

@
Range(Cells(1, 2), Cells(Rows.Count, 1).End(xlUp).Offset(, 1)) =Application.VLookup(Range("A:A"), _
Workbooks("Book2").Worksheets(1).Range("A:B"), 2, False)

A
Range(Cells(1, 2), Cells(Rows.Count, 1).End(xlUp).Offset(, 1)) = "=VLookup(A:A,[Book2]Sheet1!A:B,2,0)"
Range("B:B").Copy
Range("B:B").PasteSpecial Paste:=xlPasteValues
0941デフォルトの名無しさん2016/09/11(日) 22:50:38.09ID:mBnrfnBw
>>940
Aを使えば良い。
0942デフォルトの名無しさん2016/09/11(日) 23:04:33.71ID:jEYMJg+J
>>940
推測だけど
VBAからワークシート関数を呼び出すと
内部負荷がかかるのではないかな
0943デフォルトの名無しさん2016/09/11(日) 23:30:27.87ID:Dcm0PHNU
1は実際にルックアップしてるけど、2はルックアップする計算式入れてるだけだろ
ルックアップにかかる時間ぶん2が早いんじゃないかね
0944デフォルトの名無しさん2016/09/11(日) 23:43:15.66ID:XW09jc3D
>>940
result = Application.VLookup(Range("A:A"), _
 Workbooks("Book2").Worksheets(1).Range("A:B"), 2, False)
Debug.Print UBound(result)

↑こんな感じにApplication.VLookupの戻り値の中身を確認すると
@の右辺は空白行含めた終端(1048576行目)まで計算が行われている
 (つまり左辺の範囲外も計算対象になっている)

Aは左辺の範囲にしか数式が埋め込まれない分早いんでは?
09459402016/09/12(月) 19:31:14.52ID:aRAf+AQE
>>941
>>942
>>943
>>944

どうも

@の方が普通の書き方かなと思ったけど
Aの方が自分には書きやすいし実際早いっぽいからAでいくことにします。
0946デフォルトの名無しさん2016/09/15(木) 22:19:56.85ID:NKiF+UIJ
ExcelVBAを物凄く意味のないことに使っている作例はないですか?
↓例えば画面をこんな感じに3D風にするとか。
  ___
/    /|
| ̄ ̄ ̄|  |
|     |  |
|___|/
0947デフォルトの名無しさん2016/09/15(木) 22:29:47.01ID:KOV8HToE
たとえば方眼紙扱いして作図してるとか?
0948デフォルトの名無しさん2016/09/15(木) 22:39:31.43ID:V390dm+w
パッと思い付いたことをソッコーでメモるためだけに

1.ショートカットでテキストボックス出す
2.書いてエンター押したらc直下のテキストファイルに追記する
3.同時にテキストボックスは閉じる

ってだけのマクロは作ってる
0949デフォルトの名無しさん2016/09/15(木) 22:43:36.22ID:7+alVdPK
>>948
インプットボックス?
0950デフォルトの名無しさん2016/09/15(木) 23:52:08.79ID:V390dm+w
そんなかんじ
付箋で十分なんだがわざわざ画面変えるのが嫌でなぁ
0951デフォルトの名無しさん2016/09/15(木) 23:53:14.67ID:7+alVdPK
>>950
>わざわざ画面変えるのが嫌

わかるw
0952デフォルトの名無しさん2016/09/15(木) 23:53:18.61ID:k2vXXKfz
普通はわざわざエクセルに変えるのが嫌だろw
どんだけエクセルに毒されとんねんw
0953デフォルトの名無しさん2016/09/16(金) 00:01:08.79ID:Y0jmyWlP
入社直後に暇だったから半日ぐらいかけてテトリス作ったことはある
なんの意味もないただの暇つぶしだった
0954デフォルトの名無しさん2016/09/16(金) 00:06:48.21ID:E0hjCX3W
>>953
あなたはだんだん糞ライブラリが作りたくなってくる
0955デフォルトの名無しさん2016/09/16(金) 00:09:35.73ID:EgHvUq6q
派遣やってて暇だった時に現在時刻を入れたら退社時間まで後 xx時間xx分!って出すのを隠れて作った。別に計算させるほどの
ことでも無いんだけどw
0956デフォルトの名無しさん2016/09/16(金) 00:21:38.69ID:jBjpOu6k
>>952
もちろんエクセル開いてるときにしかつかわねーよ
普段は別
0957デフォルトの名無しさん2016/09/16(金) 10:03:31.54ID:xYgwAmSK
>>950-951
temaeというメモ用フリーソフトがあるけどそれじゃだめ?
オレは重宝してる
0958デフォルトの名無しさん2016/09/16(金) 10:05:07.24ID:xYgwAmSK
>>957
軽板(kalvan)だったw
手前も使ってはいるけど・・
0959デフォルトの名無しさん2016/09/16(金) 15:12:35.81ID:/uFE0arf
仕事ない時にライフゲーム作ってた
0960デフォルトの名無しさん2016/09/16(金) 15:40:30.63ID:t6waneUc
ライフゲームってなんですか?
0961デフォルトの名無しさん2016/09/16(金) 16:01:54.58ID:buhF+fXT
>>959
範囲はどんどん広がっていくの?
0962デフォルトの名無しさん2016/09/16(金) 19:38:36.82ID:Nvcefck5
お前ら暇人ばかりで泣けてきたよ
今はそれなりの仕事させてもらってるのか?
0963デフォルトの名無しさん2016/09/16(金) 20:15:21.01ID:9H78imim
どんどん減ってゼロになった
0964デフォルトの名無しさん2016/09/16(金) 21:18:16.18ID:PpYmmEIW
>>963
初期配置を変えてリトライ
0965デフォルトの名無しさん2016/09/16(金) 21:29:58.27ID:buhF+fXT
なるほど、これがマルチレスポンスか
0966デフォルトの名無しさん2016/09/16(金) 22:07:25.43ID:9H78imim
rペントミノとか
0967デフォルトの名無しさん2016/09/16(金) 22:34:19.66ID:xDkdKxkW
無駄なもん作れる環境がうらやましい。

「こんなの考えたんだけど作っといて。ルーチン化するから簡単に作れるようにしといて」って、
本社との会議に使うようなデータの作成すら放り投げてくる上司とかいないのか。
0968デフォルトの名無しさん2016/09/16(金) 23:39:12.81ID:/GBaTDUf
>>967
居るけどだいたいどんなの来ても対応できる雛形作って待ち受けてるので問題ない

どんなに困ってもざっくり依頼してくる人にはざっくりした回答でまず答えてから形を見定める
彼らは正確性など求めてないことが多い
0969デフォルトの名無しさん2016/09/17(土) 06:07:50.37ID:dgVxSJXO
ライフゲーム作ったことあるけど速度は出なかったな。
指定した大きさ(縦横)の配列を作って生死フラグ(1/0)をランダムに入れ、世代そ進めるごとにワークシートに丸ごと貼り付ける。
「1ならセルを塗りつぶし、0なら文字色透明」という条件付き書式にしておけばきれいに表示される。
・・・でももっさりしてるんだよなあ。
0970デフォルトの名無しさん2016/09/17(土) 09:07:45.31ID:aDcJs8mB
>ざっくり依頼してくる人

PCスキルの低い上司は100%これwwwww
0971デフォルトの名無しさん2016/09/17(土) 12:26:33.76ID:sSOzXkQS
つーかざっくりが良いんだよ
コンピューターだって空気を読む必要はあるんだぜ
0972デフォルトの名無しさん2016/09/17(土) 12:54:28.02ID:CG7Ng2Af
要望で来るようなのはざっくりでいいのよ

道具は単純で使い方を考える
使う中で少々面倒な点を見つけたらそこで機能を追加

ツール作りはこの繰り返しと思ってる
0973デフォルトの名無しさん2016/09/17(土) 14:06:43.24ID:qocRQo9a
スキルがないのに自分ではあると誤解してる上司が細かいこと言ってくるのが一番迷惑
スキルがないと自覚して細かいこと任せてくれる上司の方がありがたい
0974デフォルトの名無しさん2016/09/17(土) 15:37:03.40ID:aDcJs8mB
作るものがある程度見えていれば、
ざっくりでもいいんだけど、
それすら無いと、作ってからコレジャナイくるからな。
0975デフォルトの名無しさん2016/09/17(土) 16:10:41.91ID:9kxaCNMA
可能/不可能や容易/困難の見極めが全然できないからそうなっちゃうんだろうね
0976デフォルトの名無しさん2016/09/17(土) 16:47:39.93ID:gmu67H5v
特に、根拠のない数字を出せって言われると頭抱える。
0977デフォルトの名無しさん2016/09/17(土) 17:07:38.02ID:VMOzjf85
>>974
そういうときは超特急でざっくり作るか完成イメージが30%ぐらいできた段階で
上司に見せて方向性が合っているか確認するんだよ。
で、合意がとれてからちゃんと作り込む。
完成してから見せるなんてアホだろ。
仕事の進め方の基本もしらんのか。
0978デフォルトの名無しさん2016/09/17(土) 17:22:07.78ID:gmu67H5v
超特急でざっくり作って「イメージです」って提出すると、特に吟味する事もなく「いいんじゃない?」って返ってきて、
それで100%まで作り込んでから見せたら「これじゃない」って言われるんだよ。

仕事の基本もしらんのか。
0979デフォルトの名無しさん2016/09/17(土) 17:26:17.22ID:vxJ4EyMW
他党の議員がダンマリなのが歯痒い。公職選挙法違反だろっちゅうの。
0980デフォルトの名無しさん2016/09/17(土) 17:54:42.40ID:aDcJs8mB
>>977
そうか?
それを言うなら、部下に対する指示の出し方も知らんのか、って思うけどな。
0981デフォルトの名無しさん2016/09/17(土) 18:09:33.33ID:hzCyARHB
>>980
仕事の上流が何を望んでるかを出来るだけ確認しないと後で自分が死ぬで
指示元が上司のうちは良いかもだけど、客先から話を聞く立場になると、もう相手を言い訳に出来ない
0982デフォルトの名無しさん2016/09/17(土) 18:14:54.89ID:CG7Ng2Af
進め方まで上司に決められたら俺は嫌だなー
自分で見積もって自分で進めるってのが俺は楽しいしラク

ゴールさえわかってれはやり方なんか人の数だけ有って良いと思ってる
完成してから見せるでもちょくちょく確認するにしても求められてる物さえ提供できれば文句は言われない
0983デフォルトの名無しさん2016/09/17(土) 18:29:20.25ID:f0B2mjwP
ぼちぼち次スレ立ててくれんかのう
0984デフォルトの名無しさん2016/09/17(土) 18:31:09.89ID:gmu67H5v
>>980
「分かりました!」←分かってない

っていう事もあるから一概にどちらの責任とも言いがたい。
0985デフォルトの名無しさん2016/09/17(土) 18:40:50.76ID:CG7Ng2Af
>>983
Excel VBA 質問スレ Part43 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1474105211/

ほい
0986デフォルトの名無しさん2016/09/17(土) 20:07:36.48ID:qiyywEhc
>>982
だからそのゴールが分かってないんや
0987デフォルトの名無しさん2016/09/17(土) 20:07:46.06ID:ANJBGMzh
>>978
そらざっくり作ったもん見せてしまったら最終的に「これじゃない」ってなるわ
人には思い込みってもんが必ずあるんだぜ
0988デフォルトの名無しさん2016/09/17(土) 20:16:51.56ID:yTBn9b97
だからそういう話はプログラマ板でやれっての
0989デフォルトの名無しさん2016/09/17(土) 21:05:40.65ID:gmu67H5v
>>987
お前は一つ上のレスを読むくらいの心の余裕を持つべきだと思う。
0990デフォルトの名無しさん2016/09/17(土) 21:17:04.41ID:ANJBGMzh
>>989
一つ上って何だよ?…どれどれ…フムフム…ああ、そうだよな……あ、しまった!俺は一体なんて事を!!!!
とかいう展開になるとでも思ってるのか?
0991デフォルトの名無しさん2016/09/17(土) 21:37:44.13ID:gHeB0B1Z
>>978
だよなー
色々具体的に決まってからそうじゃないんだよなー、俺はこう思ってたんだけどなー
って言い出すのはほんとやめてほしいわ
こう思ってたなら思ったとき言えよ、絶対今思ったくせに...
0992デフォルトの名無しさん2016/09/17(土) 21:39:16.81ID:gHeB0B1Z
>>990
引っ込みつかなくなったのか w
0993デフォルトの名無しさん2016/09/17(土) 21:43:10.77ID:ANJBGMzh
>>991
それがお前の思い込みなんだぜ
何一つ具体性がないのに「これでいいんや!」と思い込んでるからいつもダメだし喰らうんだ
0994デフォルトの名無しさん2016/09/17(土) 21:48:29.95ID:gHeB0B1Z
ごまかしに必死とか恥ずかしい奴 w
0995デフォルトの名無しさん2016/09/17(土) 22:02:50.58ID:ANJBGMzh
完全に自分の殻に閉じ籠ってるなコイツ
とんでもなく気持ち悪い奴と絡んでしまった
0996デフォルトの名無しさん2016/09/17(土) 22:26:42.37ID:gHeB0B1Z
> 人には思い込みってもんが必ずあるんだぜ

自分のことは棚にあげるのな w
0997デフォルトの名無しさん2016/09/17(土) 23:10:02.05ID:B4ogAH1D
人の数だけ常識は存在する
0998デフォルトの名無しさん2016/09/17(土) 23:59:15.23ID:gmu67H5v
>>990
>とかいう展開にでもなるとでも思っているのか?

同じ意見のヤツに変な突っ込み入れてるんだぞ。
お前が馬鹿晒してるだけなんだけど。
0999デフォルトの名無しさん2016/09/18(日) 00:10:07.76ID:5zytLJbi
999
1000デフォルトの名無しさん2016/09/18(日) 00:10:50.67ID:MSbonHvQ
次スレ
http://echo.2ch.net/test/read.cgi/tech/1474105211/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 83日 21時間 35分 7秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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