Excel VBA 質問スレ Part74

■ このスレッドは過去ログ倉庫に格納されています
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ

※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
66デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/25(土) 11:57:08.35ID:PWqR92MK0
>>64
動けばなんでもok

>>65
2021/12/25(土) 15:45:55.24ID:UaFD4yqA0
マクロなんて動けばおkだよね
2021/12/25(土) 16:59:38.36ID:B3qeRvDTM
>>62
美しい
2021/12/26(日) 14:03:55.68ID:5ufCwo3R0
動かなくても問題ないし
2021/12/26(日) 14:10:17.85ID:9yjQ4P0w0
>>67
我流のマクロは応用が効かないからね.
正規表現を使ったバージョンだと違う検索条件のときも,検索文字列だけ修正すればよい.
私の場合は上記の目的の後,全てのセルの特定文字だけ別の文字に置換して赤字に色付する目的に応用できた.

ところで話変わるけど,スペースのフォントは色付けできないんで,別の文字に置換して色付けするしか無いけど,何が良いかな.
□が一番近いかなという気もするが.
2021/12/26(日) 14:15:53.43ID:jPw0R1Q90
スペースに色を付けられないならセルに色を付ければいいじゃない
2021/12/26(日) 14:20:38.69ID:2f61FhmH0
アンダーバーダメ?
2021/12/26(日) 16:17:30.13ID:QxLRmP0A0
実際我流が大半なんでしょ?
2021/12/26(日) 16:43:46.10ID:WljwqYnpM
VBAでスクール通って学んだとか聞いたことがない
2021/12/26(日) 16:46:40.63ID:jPw0R1Q90
こいこいさんのチャンネルでVBAのスクールの話が出たことはあるな
2021/12/26(日) 17:13:23.67ID:zLGTo/fw0
記録したマクロ見てれば自然に解っちゃうしな
77デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/26(日) 17:43:53.58ID:BxLJu94y0
>>73
そもそもプログラムには「本流」が無いので「我流」がない。
※強いて言えば、その団体(勤務先企業)のやり方はある

プログラムなんて「最終的に要望通りに動けば何でもいい」
汚いとか綺麗とかは、本質的には、無い
vbaはかなり特殊で、エクセルの補助として動くプログラム。多少動きが悪くてもエクセルのルーチンでカバーできる

ただ昨今「ルーチンが変わりやすい」という風潮がある
その前提だと、「保守のコストをいかに低減させるか」という事に価値が生じてくる
それを「エクセルのオペレーションでカバーする」「vbaを改修する」どちらで負担するかは、それを運用している会社による。場合によっては個人。

別の風潮として、保守コストを下げる際に「上の方で設定して、後のプログラム部分では変更しないようにする」って風潮がある
これは絶対ではないが、妥当ではある

それらを総合すると「保守コストを極力低減させるコードを書く。設定は上の方で行っておく」というコードに価値がある

実は、>>62はわざと綺麗に書いている。
一箇所だけ明確に失敗している部分がある
2021/12/26(日) 19:31:54.80ID:9yjQ4P0w0
>>72
スペースの書式の下線をつけたのだが不思議な現象が発生。
文字列の中間の場合は表示されるが、最後の非スペース文字よりあとのスペースの下線は表示されない。
エクセルのスペースの書式は予想外の振る舞いをする。
2021/12/26(日) 20:21:51.00ID:4+g2DJkz0
>>75
こいこいガチすごい人だな
80デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/26(日) 21:36:01.96ID:BxLJu94y0
>>78
検索すると、2003ではスペースにも下線がついたらしい
仕様が変わったのだろうか
2021/12/26(日) 23:39:01.85ID:HCW/N47xd
Excel2021だけど、どこにスペーズがあっても普通に下線付くぞ
別の何かとバッティングしてるだけでは?
https://i.imgur.com/gimsTIF.png
2021/12/26(日) 23:42:16.71ID:naAyWDoK0
365使ってるときに同じこと思った気がするけど今は確認できない
2021/12/26(日) 23:43:33.04ID:9yjQ4P0w0
>>81
私がやっているのは文字ごとに書式を設定すること。スペースだけに下線をつけることを試してる。
84デフォルトの名無しさん (ワッチョイ d336-Yj5q)
垢版 |
2021/12/26(日) 23:46:55.18ID:aolFsvA10
DatePart構文の引数firstweekofyearを1月始まりじゃなくて4月始まりする方法ってない?
4月1日から第一週目として請求書を何週目に発行したか把握したいVBA組みたいんだけど

4/1〜4/7に収まる数字を第一週
4/8〜4/15に収まる数字を第二週…
っていちいち組むしかない?
2021/12/27(月) 00:04:55.38ID:HmBQ8qj70
>>84
日付シリアル値と3月31日のシリアル値の差を7で割って整数単位でラウンドアップする方法ではだめですか
86デフォルトの名無しさん (ワッチョイ d336-Yj5q)
垢版 |
2021/12/27(月) 00:06:52.13ID:DqxLP3j70
>>85
シリアル値は考えたけど面倒そうで…簡単に何週目かを算出したい
2021/12/27(月) 00:09:03.03ID:4eMIOhWPM
組むっていうか自分で関数作ればすぐじゃね
2021/12/27(月) 00:14:15.86ID:AVwzugLQM
datediffでintervalをwにして
4/1とその日を比較するだけかな?
やってみないとわからんけど
2021/12/27(月) 00:15:08.58ID:HmBQ8qj70
>>86

> 面倒そうで…
2021/12/27(月) 00:30:35.81ID:FIuz8AHod
>>84
年またぎの処理はしてない
やりたかったら先に3/31を引いて1/1始まりに補正するのが一番簡単だと思う

Sub Macro1()
  Dim d As Date
  Dim w As Integer

  d = DateValue("12/28")  '求めたい日
  w = Int((d - DateValue("3/31") + 6) / 7)  ' 4/1基準で何週目か
  Debug.Print w
End Sub
2021/12/27(月) 02:58:33.09ID:UCnM3aAj0
先輩方にアホすぎるくらい初歩的な質問です。
マクロコード書くときに字下げって常識と聞きますが必須なんすか?
YouTubeとか観ていると字下げしてない人もいたもんで気になって
2021/12/27(月) 06:49:37.64ID:5A0Tlr4y0
>>91
必須ではないけどやった方が見易いよ
If hoge = piyo then
foo = bar
End If
ってしておけば後から見てもどこからどこまでがIfやForなどの中身なのかって分かりやすいじゃない?
93デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/27(月) 07:19:24.39ID:jbqcc4VX0
>>91
慣れてくれば入れるようになるが・・・無いと見づらくて仕方ない日本語でいうと句読点も改行もないようなもんだこれでもいいならどうぞ
2021/12/27(月) 08:17:15.04ID:HLHhao5DM
外部ファイル100個、1ファイルにつき60要素を1つのExcelブックにまとめたいけど、高速なテンプレはどっち?
@外部ファイルオープン方式
 オープンして2次元配列に格納したらすぐに閉じる(見た目一瞬開いているのが見える)

A外部参照方式にする
 ’サーバーパス[ファイル名]シート名!‘表示セル
 この式をまとめたいExcelブックにひたすら書く

まとめたい要素数によって@A方式を変えるのが正解ですかね?
今の所@で作ることが多いのですが、ファイルオープンに時間がかかってるような気がしています
2021/12/27(月) 09:39:51.64ID:blhik0lp0
>>94
データの種類によるけど参照するのがテキストファイルなら外部参照なんて使いたくないから個人的には1だが
2021/12/27(月) 09:45:56.70ID:k8V9YlBpM
>>91
これがコンピューター業界の常識
https://img.youtube.com/vi/qNHfKNjX8Us/maxresdefault.jpg
2021/12/27(月) 09:49:52.38ID:blhik0lp0
関数の直後に改行入れないで中括弧入れられると解りにくい
2021/12/27(月) 10:45:38.45ID:HmBQ8qj70
>>94
実際には二つやって比較するしかないと思うんだけど、直感的には両方ともファイルの内容を一度メモリーに展開して@の場合はそれを表示するプロセスがあるんで若干@が遅いような気もするんだけど。

一方Aの場合は普通にメモリーに展開するのではなくて特殊な用途用のメモリ領域の確保というプロセスがあるかもしれないんでこれがあってしかも配置情報の各能があるばあいは遅くなるかもしれない。

実際にダミーのファイルを作って比較してみたらどうですか。ダミーファイルを作る作業は VBA を使えば簡単でしょ。
2021/12/27(月) 11:13:03.57ID:k8V9YlBpM
>>94
その二つには大きな違いがある
(1)の方法はVBAを実行した瞬間のデータで固定される
(2)の方法だと外部ファイルが更新されるたびに影響を受ける
この選択を間違えると場合によっては致命的なので、どちらが適切かよく考えること
つまり、この2つは速さで比較するべきじゃない

そもそも、わずか100ファイル、60要素程度で速さがどうとか考えること自体がおかしい
データ数が何十万以上のオーダーにならないとはっきりした差なんか出ない
2021/12/27(月) 11:45:31.10ID:HmBQ8qj70
>>99
勘違いしてたわ。
Aはリンクでデータを取得する方式ね。
俺はてっきりVBAの中で対象ファイルを開かずに対象ファイルのデータを直接取り組む方式と思ってたわ。
たしかに、「参照」と書いているから99さんの言うとおりだね。
2021/12/27(月) 12:05:29.87ID:k8V9YlBpM
>>83
アンダーラインの位置を順番に変えるマクロで試してみたら、たしかに行末のスペースで線が消えた
仕様なのかバグなのか判断つかんな
Excel2021
https://i.imgur.com/chvCa5D.png
2021/12/27(月) 12:07:22.46ID:fOuwydSNM
リンクでまとめるのは俺なら速度以前にやらないな
2021/12/27(月) 12:19:39.41ID:HLHhao5DM
皆さんご意見ありがとうございました。

みんなが作ったExcel資料のチェックする雛形処理を作りたくて悩んでいました。ファイルオープン時間はかかるけど@方式がいいかなと思います
2021/12/27(月) 12:23:05.79ID:HLHhao5DM
ちなみに、>>99さんの言うことは
数式を数値に変換する処理を書けば@と同じになりますのでやはり速度面からの比較でもで良いかと思っています
105デフォルトの名無しさん (ワッチョイ d336-Yj5q)
垢版 |
2021/12/27(月) 22:51:17.69ID:DqxLP3j70
>>90
できたありがとうございます
d = DateValue("12/28")
12/28のところに変数を入れたいのですが、反応してくれません
具体的には変数strにセルの値の12/28を参照させるとエラーが出ます
d = DateValue strが言うこと聞いてくれません
2021/12/27(月) 23:01:19.70ID:KGsnqTFy0
>>105
文字列型になってないんでないの?
2021/12/28(火) 01:55:16.45ID:4tKb8EGkM
>>105
セルの中身がシリアル値ならDatevalue関数を外せばいいけど、年には注意
Textプロパティを使った方が安全かもしらん
2021/12/28(火) 09:29:10.92ID:kx1zrRXE0
VBAでの字下げって何文字って決まりある?3文字字下げで作ってしまったけどいいとか悪いとかある?
2021/12/28(火) 09:38:17.58ID:5reaFvKqd
>>108
明確な決まりはないけど、マクロの記録をすると4文字下げになるから標準は4文字と考えていいと思う
個人的に奇数はありえない
インデントを綺麗に整形するアプリで整えるといいよ
2021/12/28(火) 09:53:35.44ID:kx1zrRXE0
>>109
そんなアプリがあるんだ。試してみるよ。
でも4文字って字下げし過ぎな気がしないでもない・・・
横に長くなりすぎて横スクロールが発生するのは面倒だし、印刷時に文字が折り返されて見辛くなりそうだし。
2021/12/28(火) 10:00:05.70ID:5aYQ+TgHa
>>110
自分がそれでいいと思ってるなら
それでいいじゃん
2021/12/28(火) 10:20:50.67ID:OfhBdqPrM
俺は逆の意見
初心者は自己流でやらない方がいいと思う
2021/12/28(火) 10:40:25.40ID:J5j8u11qa
でも具体的なデメリットはないのでしょ?
2021/12/28(火) 11:17:49.92ID:OgbDT0vrd
明確なデメリットならあるぞ

3文字だとスペース3回、4文字だとタブ1回、つまり入力の手間が多い
マクロの記録やネットのコードは4文字だから、組み合わせた時に見にくくなったり修正の手間が発生する
2021/12/28(火) 11:25:51.13ID:MfCHUt50a
めちゃ初心者の質問でごめん
沢山の商品コードがA列に並んでいて、B列にその商品のページのURLのリンクをずらっと作りたいんだよね
(A1のURLをB1、A2のURLをB2……)。

URLは「http://統一のアドレス/商品コード」なんだけれど、この場合どうしたら良い?

要するに、B列に「http://統一のアドレス// + 商品コード」って言うのをリンクにしたい
2021/12/28(火) 11:46:51.90ID:yfaCSYLwM
ハイパーリンク関数で済む話
2021/12/28(火) 11:51:02.78ID:Irp+rNk6a
>>114
それは最初から
「こいつタブキー使わないで、スペース3回打ってるのか」
って思ってたけど
>>110みたいなこだわりのまえでは大した問題ではないだろw
2021/12/28(火) 11:52:19.68ID:w6HpDmard
>>115
A1の内容を足しながらB1にリンクを作るのはこう書く
これを商品の数だけループすればいい
ActiveSheet.Hyperlinks.Add Anchor:=Range("B1"), Address:="http://google.com/"; & Range("A1")
2021/12/28(火) 14:27:58.14ID:g58/URIX0
インデントしないで平気な顔でコード晒している人の心理が知りたいわ
YouTubeだけじゃないし。
2021/12/28(火) 14:35:56.99ID:69J7P9Wb0
見にくいって指摘されたら何を勘違いしたのか
改行だけあけるのもいる
ブログかよ
2021/12/28(火) 14:41:58.24ID:MuG2wGjPd
>>119
少なくともここの掲示板はインデントが勝手に消える仕様
122デフォルトの名無しさん (ラクッペペ MM97-W69g)
垢版 |
2021/12/28(火) 15:35:06.37ID:v3GWTkBuM
BASICの癖にインデントなんて生意気な
2021/12/28(火) 15:54:38.31ID:TMi8jvWAM
構造化BASIC
2021/12/28(火) 17:02:10.00ID:g58/URIX0
あーやっぱりインデントしても無効になるのね
おかしいと思った
125デフォルトの名無しさん (ワッチョイ 9b4f-nHKY)
垢版 |
2021/12/28(火) 17:34:57.68ID:T61FM7ey0
どれちょいテスト
&nbsp&nbsp&nbsp&nbspスペーステスト
2021/12/28(火) 17:37:21.60ID:69J7P9Wb0
    4つ半角スペース
セミコロン抜けてんで
2021/12/28(火) 17:39:37.95ID:T61FM7ey0
うむ、やはりダメか
半角スペースは全角にでも置き換えれば
インデントは表現できるかもしれないが
コードをそのまま貼って実行することを
考えたらそのままの方がいいかもね
2021/12/28(火) 17:40:12.80ID:T61FM7ey0
>>126
あ、本当だ
すまんこ
129デフォルトの名無しさん (ブーイモ MMc1-WdtH)
垢版 |
2021/12/28(火) 17:41:49.64ID:7qvBe3RUM
>>126
あ、本当だ
おまんこ
2021/12/28(火) 17:42:25.67ID:69J7P9Wb0
挟むコメント使えたらまだ楽なんだけどなぁ
/* コメント */
2021/12/28(火) 18:07:37.81ID:jG5yVyjr0
そこらへんはさすがにサニタイジングされるでしょ
2021/12/28(火) 18:39:54.88ID:g58/URIX0
1番良いのはアレかな、直接エディターのスクショをうpすればインデントは無問題なのかなと
2021/12/28(火) 18:48:57.83ID:69J7P9Wb0
コピペで検証できなくなるから内容によっては回答率下がるかも
134デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 20:15:09.45ID:+BGmVW+d0
ブラウザは基本的に連続半角スペースを一つにまとめる挙動がある
135デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 20:16:39.86ID:+BGmVW+d0
>>132
うんこすぎるわw

コードをアップロードする専門のサイトがあるので、そこに上げるのが一番良い
https://jsfiddle.net/vxba/1twy9ny6/
2021/12/28(火) 21:19:32.95ID:g58/URIX0
うんこで思い出したけど、同志達は集中してマクロ組んでいる途中で猛烈にうんこしたくなったら我慢できる?
2021/12/28(火) 21:21:13.24ID:fyHkUyPmM
なんで我慢するの?
138デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 21:40:11.52ID:+BGmVW+d0
うんこしながらコード考えられるし、目も休められるからそんなに邪魔なものでもないかな
ってか我慢はよくない
2021/12/28(火) 22:48:33.96ID:3HQRMrL2a
俺はギリギリまで我慢するタイプ
2021/12/28(火) 23:03:08.29ID:g58/URIX0
中にはいるんだよ、途中で止められない人
自分そう
目を休ませるといろいろ調子良くなるのは事実だぬ
141デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 23:13:52.92ID:+BGmVW+d0
昔そうだった
ずっとやろうと思えばやれるんだけど、適度に休んだほうがどう考えても早い
2021/12/28(火) 23:17:25.07ID:pcScIivUd
寝落ちして次に起きると意味不明な文字列で画面が埋まっている
2021/12/29(水) 00:39:59.57ID:3kau2kQZ0
闇落ちしたらどうなるの
2021/12/29(水) 00:56:24.30ID:zC4KyoUo0
同志達は休憩は何時間おきに取ってる?
なんかExcelってやたら疲れない?
2021/12/29(水) 02:20:35.18ID:FnVNPORx0
VBAに限らず何かのプログラムを作ってる時は寝食を忘れて没頭してしまうからよく嫁さんに怒られてる。
146デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/29(水) 03:54:22.05ID:q7Jdns1B0
>>144
事務の趣味グラマだけど、
家では10分コード書いて1時間運動、10分書いて1時間掃除選択お買い物、みたいな感じ
手を動かすよりも頭を動かす方が効率良い

会社はうるさすぎてまるで捗らんのでやらん
2021/12/29(水) 07:18:02.50ID:zC4KyoUo0
同じですな。
Excelてかパソコンなんて1時間もやればクタクタ、変な疲れが出ますな。
終日やっている人とかいるけどスゲー気力体力だと思う。羨ましい
2021/12/29(水) 08:08:41.29ID:/q0lUTyN0
趣味ならそれで良いのではないでしょうか。
仕事となればまたちょっと話は別。
EXCELのVBAはこじんまりしてて
弄ってて面白いので昼休憩あれば
普通に1日行ける。

むしろ設計書とか書いててダレてくると
EXCEL VBAで妙なもの作って
現実逃避とかすることもあるかな。
2021/12/29(水) 09:23:40.77ID:gueL/edo0
>>148
> EXCEL VBAで妙なもの作って
> 現実逃避とかすることもあるかな。
お前は俺かw
2021/12/29(水) 14:56:09.81ID:zC4KyoUo0
そこでゲームを作る!
151デフォルトの名無しさん (ワッチョイ b101-j5Xv)
垢版 |
2021/12/29(水) 16:57:32.71ID:wwN1RbRp0
ドッペルゲンガーに出会うと。
2021/12/29(水) 19:03:35.12ID:+TOGJtMq0
ドッと生える毛がー!
153デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/29(水) 19:05:13.81ID:q7Jdns1B0
遠くない
2021/12/29(水) 19:11:23.12ID:1O3zWyyu0
髪の毛とは言っていない
2021/12/29(水) 19:30:12.70ID:zC4KyoUo0
正月にExcel2021買って人柱になる!
2021/12/29(水) 23:07:41.65ID:Y/+eczR5F
頼みます
2021/12/29(水) 23:54:05.30ID:MBw8w76+0
>>155
かんばれ!応援してるぞ!
2021/12/30(木) 00:13:57.98ID:Aosnucfp0
俺は未だに Excel 2013なんだけど特に不自由してない。バージョンアップするといいことあるの?
159デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/30(木) 00:21:53.32ID:BMltdAMp0
>>158
なんと!
特に無い
2021/12/30(木) 00:23:09.37ID:XrPmVdqE0
2013て言い方悪いけど中途半端と聞いた
2016こそ至高だと
2021/12/30(木) 01:17:13.85ID:Aosnucfp0
>>160
そうなの?

若い人は知らないかもしれないけどマルチプランやロータス123の時代から表計算ソフトを使ってて、正確なバージョン番号は忘れたけど Excel はずっと昔の2003とか2007くらいが使いやすかったな。その後バージョンアダルト重たくて使いにくくなっててできるだけバージョンアップはしないようにしてる。
数年前まで2010を使ってた。
2021/12/30(木) 07:04:56.73ID:xtSEOuqd0
エクセルは表計算ソフトと言いながらも表が苦手
シートをマス目で区切ってるだけで未だにDOS時代と変わらん
マス目サイズの異なる表を1シートに乗っけようとすると涙ぐましい努力と根気が必要
こんなソフトいつ放棄されてもおかしくないだろ
自由な表の管理ができるという意味ではmacのnumbersが気持ちいい
2021/12/30(木) 07:15:13.58ID:xtSEOuqd0
ロータス123とかを無理やりなぎ倒してWin上で天下をとっただけで使い勝手は褒められたもんじゃない
開発陣に何のポリシーも感じられない
これはワードも含めてオフィス全般に言えること
2021/12/30(木) 07:20:01.10ID:kiJsXJBS0
>>158
2013から2016になったときにVLOOKUP関数が最大約400倍高速化されたらしい
全然実感わかないけど
2021/12/30(木) 07:26:16.91ID:OeLQVmSyM
表を計算することが目的であって表を表示するのはその手段
目的と手段を勘違いするとそうなる
努力の方向性を間違ってるユーザーが結構多い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況