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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2017/01/03(火) 02:51:16.56ID:9Y8iTik6
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

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


※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
0367デフォルトの名無しさん2017/01/27(金) 09:21:50.43ID:E/4Vr26G
sumif(r1,”<0”)
0368デフォルトの名無しさん2017/01/27(金) 09:57:52.06ID:Ne4o/N/h
>>366
そんなのより対象セルを選択した状態で {ctrl + なんとか} の方が便利だしコードも簡単になると思うけどな
0369デフォルトの名無しさん2017/01/27(金) 12:55:33.52ID:2/l+3kL4
http://members.jcom.home.ne.jp/kogumax/page022.html
0370デフォルトの名無しさん2017/01/27(金) 14:20:38.90ID:pYLJsuuu
>>366
worksheetのchangeイベントかなんかでセルの値がかわったら罫線引くようにするしかないんじゃね
罫線の引き方はマクロの記録で調べなさいよ
0371デフォルトの名無しさん2017/01/27(金) 19:39:13.72ID:2UbAAj3q
>>366
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "/" Then
With Target
.Borders.Weight = xlThin
.Borders(xlDiagonalUp).LineStyle = xlContinuous
End With
End If
End Sub

消すのは逆をすればいいんでない?
0372デフォルトの名無しさん2017/01/27(金) 20:32:43.21ID:WmIjEyaD
>>366
条件付き書式でいいだろ
って思ったら条件付き書式って斜め罫線ダメなんだな
他の罫線はいいのにちょっと不思議

なので Sheet1 のシートモジュールにこれを書けばいい

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Target
Cell.Borders(xlDiagonalUp).LineStyle = IIf(Cell.Value = "/" Or Cell.Value ="×" , xlContinuous, xlNone)
Next
End Sub
0373デフォルトの名無しさん2017/01/27(金) 22:47:33.41ID:Fb1FgEo2
>>366がやりたいのは本当にそれだけなんだろうか
0374デフォルトの名無しさん2017/01/27(金) 22:49:12.60ID:2UbAAj3q
>>373
コード書きながらそう思ったよw
0375デフォルトの名無しさん2017/01/28(土) 12:01:46.67ID:w/mx7yyO
セルの値が一定の書式に合致しているかをVBAで調べるにはどうしますか?
下記は調べたい書式のほんの一例です。実際に調べたい書式はもっとありますし将来的にもどんどん出てきます。

・文字列に、数字+"/"の数字を含む (例)予定は2/3
・文字列が、"平成"ではじまる (例)平成元年
・文字列に、2文字以上の空白を含む (例)I have a pen.
などなど

つまり正規表現のようなものをVBAのコードで使うときの定番ってなんでしょうか?
0376デフォルトの名無しさん2017/01/28(土) 12:03:39.31ID:w/mx7yyO
instr関数やleft, mid, right, len関数のようなものを駆使するのが正当かもしれませんが
もっと短く一般的にできる方法はないかと思って。
0377デフォルトの名無しさん2017/01/28(土) 12:07:32.57ID:BY939/WJ
>>375
簡単なものなら Like演算子
本格的にやりたいなら正規表現オブジェクトを使う

正規表現オブジェクトは
"Microsoft VBScript Regular Expressions"を参照設定するか
Set RegExp = CreateObject("VBScript.RegExp")
0378デフォルトの名無しさん2017/01/28(土) 12:21:25.10ID:w/mx7yyO
>>377
なるほどLikeがござったか。ありがとう。
0379デフォルトの名無しさん2017/01/28(土) 12:25:02.06ID:ktdFkm2m
>>378
侍かな
0380デフォルトの名無しさん2017/01/28(土) 12:27:02.94ID:w/mx7yyO
このLikeの機能はWordの検索のワイルドカードと完全に互換性があるでござるか?
0381デフォルトの名無しさん2017/01/28(土) 12:42:49.48ID:9EkLNFiw
https://www.youtube.com/watch?v=quIHgwuF6r4&;sns=em
0382デフォルトの名無しさん2017/01/28(土) 21:50:14.17ID:d5Th95j2
今月VBAスタンダードに合格したんだけど、本格的な業務利用までの間には深い溝を感じる。

転職を考えているので、職場では自分だけが使うものしかマクロ化出来ない。

今のレベルの自分にオススメの書籍を教えて下さい。書店でじっくり探す時間が無いので。
今持ってるのは公式テキスト、「例題30問と演習70問でしっかり学ぶexcelVBA標準テキスト」です。

目標はぼんやりしているけど、こういうの作れない?と聞かれたら涼しい顔して作れるようになりたい。
0383デフォルトの名無しさん2017/01/28(土) 22:22:23.13ID:F0MmKngE
言語の勉強なんてもういいからファウラーやガンマの本を読みなよ
ファウラーのリファクタリングあたりが脱初心者にオススメ
Javaで書かれてるけどVBAでも考え方は同じ
0384デフォルトの名無しさん2017/01/28(土) 22:43:36.09ID:XFsAlNLB
業務で使えるようにするには、その業種の実務知識がないと難しいよ
順番が逆なんだよ(システム屋は別だけど)
特に下っ端レベルだと、業務覚える→自動化考える→実装に必要な知識覚える。
これを繰り返すしかない
0385デフォルトの名無しさん2017/01/28(土) 22:44:58.87ID:d5Th95j2
>>383
ありがとうございます。
どちらも初めて聞いたのでググりました。
ファウラーのリファクタリング、本当に脱初心者って感じですね。何か重厚そうで少しビビります。
コードの良し悪しも、あまりにもひどいもの以外はよくわからないレベルなので
読んでみようと思います。
0386デフォルトの名無しさん2017/01/28(土) 22:56:38.87ID:HZ4XiulJ
データベースは知ってんの?(知ってるのレベルもまぁいろいろあるけど)
VBAで接続してそこからデータを持ってくるとかあるいはexcelのデータをテーブルに入れるとかさ。

知ってるんだったら良し、知らないんだったらフリーのRDBいっくらでもあるんだからそれ入れてADO勉強したら?
0387デフォルトの名無しさん2017/01/28(土) 23:06:20.39ID:d5Th95j2
>>384
業務覚える→自動化考える→知識覚える
これが一番なんですが、今の職場で人に影響が及ばない範囲で出来ることはやりきってしまったというか、大して出来ることが無いので。

経理の知識とVBAの知識両方で勝負したいとは思っているのですが
日商簿記2級とVBAスタンダード、どちらも中途半端過ぎて
今勉強するならどの方向かなと迷っているところです。
これ以上はスレ違いですが。
0388デフォルトの名無しさん2017/01/28(土) 23:16:20.97ID:d5Th95j2
>>386
よく知りません。
自分の今の状態、マクロの記録に毛が生えたくらいでこの数レスでもわからない単語が続出です。
ADO、フリーで使えるものが多いのは魅力です。ググってきます。
0389デフォルトの名無しさん2017/01/28(土) 23:33:58.91ID:uAPjBDjx
馬鹿は死ねよ
0390デフォルトの名無しさん2017/01/29(日) 00:15:01.19ID:xYYwoQBZ
業務って何の業務か知らんけど、
扱うデータが多いと、SQLの知識も必要になる。
(処理速度的な理由で)
0391デフォルトの名無しさん2017/01/29(日) 00:31:34.31ID:WKRhYkpm
SQLってつなぐまでが壁で
あとはselectだけだろ?
0392デフォルトの名無しさん2017/01/29(日) 00:34:44.45ID:+blbXYZx
業務の自動化ある程度問題なくこなせてるならあとはコードの品質だろうね
その手の洪は楽しいよね
一冊くらいしか読んだこと無いけど
0393デフォルトの名無しさん2017/01/29(日) 00:34:52.23ID:xgaFxxwc
馬鹿は繋ぐまでに壁なんてあるんだな
0394デフォルトの名無しさん2017/01/29(日) 01:19:55.73ID:8UrWbtOI
最近のエクセル業界のトレンドはSQLなんか?
0395デフォルトの名無しさん2017/01/29(日) 14:59:17.63ID:cSvePZMz
エクセルでSQLは制約があるし、SQLの有無で差が出るような処理は本格的なデータベースソフト使いたいね。
0396デフォルトの名無しさん2017/01/29(日) 15:22:05.76ID:M0HgmB1M
プログラミング入門ならVBAで満足していてもいいけど
普通は生産性の高い他の言語にシフトするよね
0397デフォルトの名無しさん2017/01/29(日) 15:28:40.27ID:Gj2SxjJF
お前の普通ではそうなんだろうな
0398デフォルトの名無しさん2017/01/29(日) 15:53:56.99ID:M0HgmB1M
俺の普通っていうかみんなそうだぞ
VBAに執着する連中って視野が狭いから周り見えてないんだろうけど
0399デフォルトの名無しさん2017/01/29(日) 16:40:53.45ID:WrrdSNFA
根拠もなしに「みんな」って言われてもな
0400デフォルトの名無しさん2017/01/29(日) 16:57:33.53ID:cyG8RQu0
ウチの会社で「SQL」なんて言葉を発しようものならボロクソに言われる。
「みんながみんなお前のようなマニアじゃねえんだよ」ってなもんで。去年、元SEでオラクル使いが
入社してきたがすぐに状況を察して「オレ、パソコン全然わかんない」とかトボケてやがるしw
0401デフォルトの名無しさん2017/01/29(日) 16:59:25.83ID:xgaFxxwc
>>395
え?制約ってどんな?
馬鹿ばっかな上にこういう知ったかが出て来るクソスレは面白いな。
0402デフォルトの名無しさん2017/01/29(日) 17:19:22.35ID:Urob8xZw
>>401
型を指定できないとかじゃね?
関数も全部使えるのか知らないし
自作関数を使えたりするのかも知らない
0403デフォルトの名無しさん2017/01/29(日) 18:01:06.86ID:cSvePZMz
>>401
INSERTが不確実だとか読み込める行数に制限があるとか、
空白行が捕まえられないとかDELETE文が使えないとか、割とあるんだけど知らない?

実際にやってみればすぐ分かる事なんだけど、
ほとんどSELECT文しか使えないから手間に対して益が少ないんだよね。
0404デフォルトの名無しさん2017/01/29(日) 18:09:45.36ID:JZZjSwEk
>>403
そうだよね。
俺も SELECT 以外はダメだと思ってやめた。
単一オフィス内の事務だったらSQL Server Express で十分だし移行も簡単だと思う。
0405デフォルトの名無しさん2017/01/29(日) 18:14:00.80ID:zuNgR2z5
え?
delete文も他も普通に使えるけど。
0406デフォルトの名無しさん2017/01/29(日) 18:15:13.50ID:zuNgR2z5
ごめん、データベースがエクセルの場合は知らないや。
0407デフォルトの名無しさん2017/01/29(日) 18:39:53.21ID:M0HgmB1M
>>400
ジャップにはよくある文化だね
頑張って追いつくより足引っ張って横並びになろうとする
0408デフォルトの名無しさん2017/01/29(日) 18:50:33.75ID:Nv+lqz67
>>403
馬鹿はこれだから。
全部できるだろうが。
お前の馬鹿頭ではできないだけ。
0409デフォルトの名無しさん2017/01/29(日) 19:21:57.62ID:xNqGWhsy
>>403
シートに対してのsqlなら
そうだけど。
言及対象あいまいすぎる。
0410デフォルトの名無しさん2017/01/29(日) 19:32:30.38ID:6wGEJq5M
>>408
引っ込みつかなくなる前にやめとけ
0411デフォルトの名無しさん2017/01/29(日) 19:33:42.10ID:3OHjeGHP
もともとは>>395が始まりだからシートデータに対するSQLに制約がある話をしているのよ
0412デフォルトの名無しさん2017/01/29(日) 19:36:11.18ID:xYYwoQBZ
確かに制限あるけど、そこはExcelだからどうにかなる。
0413デフォルトの名無しさん2017/01/29(日) 19:55:32.59ID:8UrWbtOI
エクセルのSQLをエクセルでSQLと言ったら誤解されるのも無理はない
というか、わざとやってるくさい
0414デフォルトの名無しさん2017/01/29(日) 20:12:03.53ID:cyG8RQu0
>>407
ウンコ臭いぞトンスラー、俺にすんじゃねえ
0415デフォルトの名無しさん2017/01/29(日) 20:19:04.92ID:cSvePZMz
>>413
外部のSQLを使えるソフトに繋ぐことが前提だったら、エクセルに依ったSQLの制限があると考える方がおかしいし、
そもそもADOがエクセルに対応しているのであってエクセルがSQLに対応してるわけじゃないんだから「エクセルのSQL」って言い回しにはならない。
0416デフォルトの名無しさん2017/01/29(日) 20:36:29.34ID:xgaFxxwc
>>410
ADOも知らない馬鹿頭は黙ってろ
0417デフォルトの名無しさん2017/01/29(日) 20:37:42.65ID:M0HgmB1M
VBAオンリーユーザーってやっぱレベル低いね
0418デフォルトの名無しさん2017/01/29(日) 20:39:15.31ID:xgaFxxwc
>>415
ADOがExcelに対応してる?
馬鹿は死ねよ。
ADO使わずとも呼び出す方法もあるし、わからん奴が知ったかしてるんじゃねーよ。
お前の頭だからできないだけのことを製品のせいにすんな。
0419デフォルトの名無しさん2017/01/29(日) 20:46:40.49ID:3OHjeGHP
どうでもいいけど
 Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}
等した時に制約が多いって話だよな?
0420デフォルトの名無しさん2017/01/29(日) 20:55:06.81ID:cSvePZMz
あ、そうか。ODBCが対応してるって言わないと正確じゃないわな。
無自覚に「エクセルからDBソフトに繋ぐ時はADOを使う」って前提に立ってたわ。
0421デフォルトの名無しさん2017/01/29(日) 21:02:39.47ID:Urob8xZw
RDBMSを別に立てなくてもエクセルだけでSQLを実行できる
この環境だと色々制約があるんじゃね?

RDBMSを別に立てたらSQLの結果を受け取るだけだし
0422デフォルトの名無しさん2017/01/29(日) 21:03:02.19ID:6wGEJq5M
>>416
めんどくせーなー
削除するコード書いてからほざけ
0423デフォルトの名無しさん2017/01/29(日) 21:12:07.55ID:xSN3m+WX
>>418
あ、ごめん
罵倒することでしかやりとりできないようなヤツとは関わらないって決めてるので誰にも迷惑のかからないところで勝手に盛り上がっててください
0424デフォルトの名無しさん2017/01/29(日) 21:14:54.50ID:xNqGWhsy
>>419
どうでも良いのに
答え求めてわらた
0425デフォルトの名無しさん2017/01/29(日) 21:18:43.36ID:3OHjeGHP
>>424
オッ
0426デフォルトの名無しさん2017/01/29(日) 21:23:53.48ID:xgaFxxwc
馬鹿頭ばっかだな。ADO使ったdeleteすらできんのか。
0427デフォルトの名無しさん2017/01/29(日) 21:42:14.95ID:M0HgmB1M
エクセル使うとどうしてもバカになるから仕方ないね
0428デフォルトの名無しさん2017/01/29(日) 21:49:05.82ID:3OHjeGHP
>>400
それで会社として生き残っていけるんならさぞ余裕があるんだろう

...それとも沈みゆく泥舟なのか?
0429デフォルトの名無しさん2017/01/29(日) 21:58:25.91ID:9pGSsNTY
情報部門が存在しない小さい会社で、ちょっと詳しい程度の社員がデータ整理を片手間でやってるというか押しつけられてるだけだろ
零細企業の大半はそんなもん
しかも日本に限らん
0430デフォルトの名無しさん2017/01/29(日) 22:09:31.30ID:3OHjeGHP
>>429
そこに力を入れてもビジネスチャンスには結びつかん、という判断なのかな

それならOfficeレベルより上は不要かも
0431デフォルトの名無しさん2017/01/29(日) 22:40:41.68ID:h9OztPwg
喋りん坊だけのスレで職人技がないね
0432デフォルトの名無しさん2017/01/29(日) 22:43:44.35ID:3OHjeGHP
>>431職人技はプロに求めろよw
0433デフォルトの名無しさん2017/01/29(日) 22:58:56.73ID:e2GiLXmE
webBrowserコントロール追加したんだけどバージョンがIE7でした
ググって調べたらVBとかC#の情報だったけど、レジストリにWebBrowserControl.exeの名前で値追加する方法があったのでやってみたけど、
バージョン変わりませんでした。
VBAでは方法が違うんでしょうか?
0434デフォルトの名無しさん2017/01/29(日) 23:05:16.84ID:e2GiLXmE
ただの勘違いで解決しました
ありがとうございました
0435デフォルトの名無しさん2017/01/29(日) 23:12:11.27ID:xNqGWhsy
>>434
礼を言われるほどのことじゃないよ!
0436デフォルトの名無しさん2017/01/30(月) 00:49:56.54ID:Evqo1D2G
大企業で情報部門も存在していても、すべて任せるわけにもいかないからな。
0437デフォルトの名無しさん2017/01/30(月) 05:04:33.08ID:6lLneJEZ
>>426
>>422
0438デフォルトの名無しさん2017/01/30(月) 09:50:19.06ID:DMFEN635
アクセスアップとお小遣い稼ぎの裏技
トラフィックエクスチェンジ
http://tra-chan.jugem.jp/?eid=1
0439デフォルトの名無しさん2017/01/30(月) 16:25:14.09ID:F1tgy4u/
like演算子使うとき“[”と“]”ってどうしてる?
0440デフォルトの名無しさん2017/01/30(月) 18:29:00.85ID:mknZdUVz
[ ]で囲んでる
0441デフォルトの名無しさん2017/01/30(月) 19:40:12.17ID:EbqBYLP7
囲わなきゃいけないのは W[W だけで、 W]W の方はどうでも良いんじゃなかったっけ?
0442デフォルトの名無しさん2017/01/30(月) 20:12:58.87ID:dKn8bdIS
>>428
まあ、一般企業じゃないから(なんちゃら組合ってやつ)潰れる事はないだろうが、今時経理も帳簿と電卓、ボールペンだし
財務会計ソフトを導入したもののソフトに入力しながら電卓で検算してるしw
「コンピューターは信用できない」とか総務のお局様が言ってるからどうにもならん。
オレは自分の業務に使うものは自分でマクロ書いて定時で帰れるようにしてるが、他の連中は「画像3000枚に一つずつ!連番を振って
徹夜した」とか差し込み印刷を教えても「そんなズボラなやり方はダメだ」と言ってテンプレートに入力→印刷→テンプレートを初期化を200件朝までやってたとか
それが50代とかじゃなく30代のバリバリ中堅どころなんだから笑うしかねえわ
0443デフォルトの名無しさん2017/01/30(月) 20:16:47.37ID:4xfdjQgw
無職をこじらせるとこうなるのか。
0444デフォルトの名無しさん2017/01/30(月) 21:03:40.38ID:F1tgy4u/
>>440
なるほど
でもそれだと“[”を含む、しかできなくない?
まあ詳しく調べるならInStr使えばいいんだけどさw
0445デフォルトの名無しさん2017/01/30(月) 21:14:54.19ID:QDHU/4vl
>>442
私も定時で帰る手段としてのプログラミング同感
今時、できの悪い奴らの根性語り、、恥ずくないのか!w
0446デフォルトの名無しさん2017/01/30(月) 21:19:02.65ID:EeAzQJfr
>>442みたいな会社がまだこの日本にあるんだw
0447デフォルトの名無しさん2017/01/30(月) 21:39:41.37ID:dJWPhbF6
>>446
全体的な学力の低下の影響で応用の利かないバカはむしろ増えてる
0448デフォルトの名無しさん2017/01/30(月) 21:42:30.27ID:UfG8r5Q5
言われたことを言われたままにやるやつが増えてるとは感じる
学歴高くても頭使わないやつが多すぎる
0449デフォルトの名無しさん2017/01/30(月) 22:05:07.29ID:gqMuGKk3
学歴と学力
0450デフォルトの名無しさん2017/01/30(月) 22:34:24.19ID:DRq3TNDG
年寄りくさい奴らだ
0451デフォルトの名無しさん2017/01/30(月) 23:59:13.06ID:pve8veDd
能力あっても出世できるかわからん社会だからなぁ
能力ひけらかすより足並み揃えて今の仕事をやりすぎずサボりすぎずぐらいに維持する方が全体の利益になるんだよ
0452デフォルトの名無しさん2017/01/31(火) 00:10:36.51ID:W4oCxLcQ
起業すればええ
0453デフォルトの名無しさん2017/01/31(火) 04:45:25.89ID:7lVbi0HF
>>451
全体の利益になるの全体ってどの範囲
自分?自チーム?自部門?自社?自事業界?
海外も含めて考慮すると?
0454デフォルトの名無しさん2017/01/31(火) 14:09:13.37ID:W2MQjnqi
どうやっていても期日には間に合っているなら自部門くらいまでじゃないかな
その先はどっちでも不利益になるわけでなし
0455デフォルトの名無しさん2017/02/01(水) 21:42:36.25ID:UlFFF3K3
久しぶりにこのスレ覗いたら
馬鹿馬鹿言ってる無教養者が踊っててワロタw

いやー、多分EXCELのシートやCSVファイルにSQL投げたことないんだろうね。
0456デフォルトの名無しさん2017/02/01(水) 21:51:20.22ID:PbjZqAWj
SQL投げるって言いたい盛りですので
0457デフォルトの名無しさん2017/02/01(水) 22:06:49.07ID:TAfVniq5
馬鹿は用語を正確に使えないからね
0458デフォルトの名無しさん2017/02/01(水) 23:10:08.02ID:YqrNMNH4
ていうかわざと曖昧に言ってるだろ?
0459デフォルトの名無しさん2017/02/02(木) 00:50:04.16ID:26wow3Y8
deleteができない無能君が煽って教えて貰おうとしてるんだろ
0460デフォルトの名無しさん2017/02/02(木) 06:35:42.81ID:oZoqJ5pi
煽りじゃなく、SQLだけでエクセルシート上からDELETEする方法があるなら知りたい。
今のところ主要な数値を無効な値へUPDATEするくらいしか有効な手段がないんだよね。
0461デフォルトの名無しさん2017/02/02(木) 07:39:32.18ID:eC+H4ibC
アクセス使えよ
0462デフォルトの名無しさん2017/02/02(木) 08:08:18.85ID:mHe9v9aT
>>461
この人バカじゃん
0463デフォルトの名無しさん2017/02/02(木) 08:40:21.34ID:6HuXGQiF
ここExcel VBAスレだからなぁ
0464デフォルトの名無しさん2017/02/02(木) 10:49:25.90ID:/oce7NjA
>>460
どういう方法でやってダメだった?
自分は素のODBCでやってダメだったけどADOは知らず。
0465デフォルトの名無しさん2017/02/02(木) 18:21:07.45ID:qO0hDPsp
delete できると言ってる奴はコード出せないから察してやってくれ
0466デフォルトの名無しさん2017/02/02(木) 18:21:37.93ID:ZUZ0NvC+
せめてExcelからDB叩いて結果だけシートに貼ろうよ
シートに数万行って重いだけだし恐らく使い方間違ってるよ
■ このスレッドは過去ログ倉庫に格納されています