Excel VBA 質問スレ Part69

■ このスレッドは過去ログ倉庫に格納されています
2020/12/13(日) 00:22:23.67ID:Fd224klc0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part68
https://mevius.5ch.net/test/read.cgi/tech/1598756127/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/01/29(金) 16:22:00.18ID:SG5MocSx0
コード見せてよ
2021/01/29(金) 16:32:12.51ID:wsDc5NzC0
改行の記号忘れたけど
あれをReplaceで消せばいいだけじゃね
2021/01/29(金) 16:36:09.23ID:SG5MocSx0
vbCrとvbLfとvbNewLineを空文字化すればいけるかな?
2021/01/29(金) 16:52:50.17ID:ur5sUiDWd
s = Replace(Replace(Replace(Replace(s, vbCr, ""), vbLf, ""), vbCrLf, ""), vbNewLine, "")
2021/01/29(金) 17:07:40.77ID:8cihH0fua
vbNewLine は vbCr と vbLf の組み合わせか、いずれか一方だから、vbCr と vbLf だけでもいいかも
2021/01/29(金) 17:08:58.02ID:8cihH0fua
そんな定義はないか…
2021/01/29(金) 17:32:34.00ID:wsDc5NzC0
396を関数に
Private Function Getファイル名(byval s as string) As String
Getファイル名 = Replace(Replace(Replace(Replace(s, vbCr, ""), vbLf, ""), vbCrLf, ""), vbNewLine, "")
End Function
2021/01/29(金) 19:31:25.44ID:Xkyf+iIu0
田中派と金子派がハッキリ別れてるわ自分の界隈は
401デフォルトの名無しさん (ラクッペペ MM3e-mj3q)
垢版 |
2021/01/29(金) 20:44:38.50ID:Wez0GYRkM
他のダメ文字は来ないことをお祈りか
2021/01/29(金) 21:10:33.96ID:IWwHfNXwH
youtubeができる前に基本は覚えたから今さら見る気になれないなあ
だからどっちがどうとかも興味ない
2021/01/29(金) 21:43:57.23ID:MBltpUk80
>>399
全部空文字にするなら、置換する元のリストをArrayでくくって、lbound(配列)〜ubound(配列)でその配列の中身ループさせればいいだけじゃん
それ可読性悪すぎ
2021/01/29(金) 21:55:58.53ID:IWwHfNXwH
要素がもっと多いと配列にした方がメンテ性は良くなりそうだけど、4つだと微妙だなあ
個人の好みで片付けたくなる

For Each x In Array(vbCr, vbLf, vbCrLf, vbNewLine)
  s = Replace(s, x, "")
Next
2021/01/29(金) 21:59:33.79ID:IWwHfNXwH
あとForで回すと微妙に遅くなるんで、関数化(ブラックボックス化)して大量のデータを処理するなら1本の式にまとめた方がいいかもしれない
2021/01/29(金) 22:14:22.45ID:SG5MocSx0
つまり403は考え足らずだったと
2021/01/29(金) 23:07:49.79ID:GBOzgJJf0
CreateObject("VBScript.RegExp")で探すのも大差ない?
408デフォルトの名無しさん (ワッチョイ 1163-bDzS)
垢版 |
2021/01/30(土) 00:02:38.07ID:U1XssVyb0
w、Wsは不用です。
あるシートの
w.Cells(1, "B")には000001234や000001234-1などの文字列が入っています。
ハイフンなしの場合は下7桁を。
ハイフンありの場合は-より左の下7桁と-以降を抜き出して
別のシート.同じ行のA列に入れたいです。
下記の処理でelse節を通る場合、
Rightしたときに前ゼロが消えちゃう(1234だけになる)んだけど
消えないようにするにはどう書けばいいですか。
(If節を通る場合は消えません)

If InStr(1, w.Cells(1, "B"), "-", vbTextCompare) >= 1 Then
Dim sNo() As String
sNo = Split(w.Cells(1, "B"), "-", , vbTextCompare)
sNo(0) = Right(sNo(0), 7)
Ws.Cells(gyo, "A") = Join(sNo, "-")
Else
Ws.Cells(gyo, "A") = Right(w.Cells(1, "B"), 7)
End If
409デフォルトの名無しさん (ワッチョイ 1163-bDzS)
垢版 |
2021/01/30(土) 00:03:27.01ID:U1XssVyb0
間違えました
w、Wsは不用です。

w、Wsはシートです。
2021/01/30(土) 01:01:10.51ID:5ChT/CTU0
>>403
>>404
なるほど勉強になるわ
いろんな書き方があるからプログラムは面白いな
スマホで打つの面倒くさいからコピペしたけど自分ならReplaceを4行に分けて一個ずつ処理してたわ
2021/01/30(土) 01:07:22.27ID:6QDP6TPLH
>>408
Else
  Ws.Cells(gyo, "A").NumberFormatLocal = "@"
  Ws.Cells(gyo, "A") = Right(w.Cells(1, "B"), 7)
End If
2021/01/30(土) 02:17:52.72ID:O2YJs/tfd
>>336
言っとくが、本気にするなよw
熟練者はネットも本も見るぞ。
ま、本に関してはVBAの本は見ないかも。
2021/01/30(土) 02:23:06.62ID:O2YJs/tfd
>>385
???
そうか?
VSTO廃れてるように見えるが。
情報少ないし。
2021/01/30(土) 02:42:40.27ID:fm9PSZiO0
>>408
単にWsのA列の表示形式が文字列じゃないだけじゃね
415デフォルトの名無しさん (スフッ Sd0a-Dh1+)
垢版 |
2021/01/30(土) 02:48:37.26ID:qXiZMF+3d
>>392
これ面白そうだったから調べてみた。
s = worksheetfunction.clean(s)
でいけるっぽい
2021/01/30(土) 07:14:33.38ID:1M+OYc940
VBAがそのうち廃止されると噂聞くけど無くなったらExcelじゃなくて良いね
キングとかジャストの安い互換ソフトで十分
それとPython
2021/01/30(土) 07:28:22.98ID:O0XirISQ0
そんなのきいたこともない
2021/01/30(土) 07:31:09.77ID:inFBwlEk0
上にExcel使いこなしてる奴少ないとあるが、事務歴長いおばちゃんとか操作長けてるイメージあるけどどうなの??
2021/01/30(土) 07:45:37.30ID:JU3c6HAP0
>>397-398
> vbNewLine は vbCr と vbLf の組み合わせか、いずれか一方だから、vbCr と vbLf だけでもいいかも
それでいいと思う
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/miscellaneous-constants
2021/01/30(土) 08:19:24.57ID:5ChT/CTU0
>>415
MS様の関数を使うのが一番きれいか
2021/01/30(土) 08:27:30.21ID:jJ/MoYJX0
>>418
テンキーだけ速い。
2021/01/30(土) 08:28:40.37ID:fCdLLOZj0
ワークシートの関数とか基本的なものしか知らないな
知ってると便利そうね
2021/01/30(土) 08:43:21.65ID:BrDW2qLKd
>>418
小企業で事務が2人ぐらいのとこだと、速いけどたいがい変な自己流
いわゆるExcel方眼紙を素早く作って定型文書を作ってしまうとかそんなイメージ
もちろんよく勉強してる人もいるが
2021/01/30(土) 08:54:12.58ID:BrDW2qLKd
[A2] = [Clean(A1)]
2021/01/30(土) 09:29:14.83ID:inFBwlEk0
テンキー速いのは良いね
電卓も得意そうだし
方眼紙はアカンど、あれ考えた人天才かファホどちらかだな
そういうおば様が引き継ぎにくいシートを大量生産しとるんだねうちみたいに
2021/01/30(土) 10:10:18.97ID:1M+OYc940
VBAはいつまで使えるんだろう?
あと15年は大丈夫かね
2021/01/30(土) 10:35:24.24ID:rbovmPt/a
おー、ありがとございまーす‼︎
2021/01/30(土) 10:37:11.90ID:rbovmPt/a
>>419
おー、ありがとうございます‼︎
429デフォルトの名無しさん (ワッチョイ 6d63-IZeX)
垢版 |
2021/01/30(土) 10:41:58.65ID:b7Gs8Wa80
>>408
です

>>411
>>414
ありがとうございます、おっしゃる通り数字扱いになっているのだと思います。
>>411さんの方法でやってみます
2021/01/30(土) 11:30:40.53ID:1M+OYc940
最近、Excel + Pythonとか耳にするけどVBAより何が良いんだろー?
2021/01/30(土) 11:46:57.12ID:O0XirISQ0
ExcelVBAのひどさは文法よりライブラリのひどさにある
言語だけ変えてもあんまり解決しない

丸々置き換えた外部ライブラリならもっと楽にプログラムできるかもしれない
2021/01/30(土) 12:27:45.49ID:1M+OYc940
そうなのかー
2021/01/30(土) 13:08:59.54ID:Jfm3X56+M
Pythonみたいな外部環境使う時は、エクセルを操作って言うより作成する時が多そう
入出力ともにエクセルならVBAの方が手っ取り早いでしょ
2021/01/30(土) 13:24:52.13ID:Au3KeWLZM
というかVBA使ってるのは他に開発ツールが無いからなんだよ
Pythonインストールできる環境ならそもそもVBAなんか使ってない
2021/01/30(土) 13:37:40.94ID:fCdLLOZj0
最近VBA描けるようになって嬉しいけどここ見てると終わってる言語みたいだな...
2021/01/30(土) 13:44:55.44ID:inFBwlEk0
古い言語だからでは?
昭和の定年ジジババがどや顔で昔からプログラミングやっていたと若者にマウント取ってくるのは大抵VBAが大半
2021/01/30(土) 13:51:30.45ID:Jfm3X56+M
終わってる言語だけど、代わりに仕様変更がない安心感はある

諸悪の根源は仕事の効率化って名目でVBA押し売りするサイトやら講師やらだな
はよくたばれ
2021/01/30(土) 14:05:31.86ID:xS3gwMFJ0
今VBA押してるか?
Pythonばかりステマされてる気がする
2021/01/30(土) 14:46:55.21ID:Au3KeWLZM
>>435
今でも使われてるしVBAしか開発環境のない職場も多いし、
いつも手作業で気合いで乗り切るって人より遥かにマシだから引き続き学習進めていいと思うよ
ただ余裕があれば自宅でPythonとかHTML+JavaScript辺り触っとくといいかも
2021/01/30(土) 16:29:08.79ID:Jfm3X56+M
Vbaしかないってどんな状況だよ
2021/01/30(土) 16:33:11.52ID:rDRgl3OZ0
よくあるだろ。
オフィス系を主体に普通に手作業メインで事務やってるとこは。
2021/01/30(土) 16:33:53.70ID:c0t4Oketd
>>434
Pythonインストールできる会社って少ないの?
なにか引っかかるの?
2021/01/30(土) 16:36:47.91ID:rDRgl3OZ0
余計なものはインストールしちゃいけないことになってる
2021/01/30(土) 16:59:35.87ID:SAK/nUhP0
良かれと思って勝手にやって怒られても嫌だしな
2021/01/30(土) 17:00:42.77ID:KmRaLG0X0
規約で使っていいツールが決まってる
2021/01/30(土) 17:06:41.65ID:Jfm3X56+M
何で勝手にインストールするのが前提なんだよ
上に相談すればいいじゃん
それすら出来ない融通の効かない会社なら、そもそもマクロなんか絶対許さないだろ
2021/01/30(土) 17:13:45.33ID:Rr8OfpXod
ウチの会社は全く融通きかない
Alt+F11で上司の上司から呼び出し食らったの思い出しましたわ
2021/01/30(土) 17:17:25.24ID:rDRgl3OZ0
>>446
上に相談で通るって、どんだけ小さい企業を想定してるんだよと
2021/01/30(土) 17:24:56.08ID:SAK/nUhP0
>>446
お前の知ってる会社が世の中のすべてじゃないってことだよ
2021/01/30(土) 17:24:58.39ID:Jfm3X56+M
上に相談するのに企業規模関係なくね?
2021/01/30(土) 17:30:12.43ID:Jfm3X56+M
まぁどうせ無理だろって思い込みでやってるから、
そういう状況なんだろうな

行動しないかやっても中途半端なくせに上司や会社への愚痴は一人前
2021/01/30(土) 17:43:22.21ID:SAK/nUhP0
そうやって思い込みで批判してるお前も思い込み仲間だな
2021/01/30(土) 17:47:12.97ID:6QDP6TPLH
相談するかどうかには規模は関係ない
許可されるかどうかも規模は関係ないかな
相談のしやすさだけは違うかも
454デフォルトの名無しさん (ブーイモ MM8e-PvQU)
垢版 |
2021/01/30(土) 18:58:14.37ID:vCh93ej0M
会社PCでPython+Excelなんて非現実的すぎるよな
相談しても「余計なことしなくていい」で終わり
でもExcelは最初から入ってるからVBAなら無問題
未だに使われてるのはそれが最大の理由
一時期「ExcelでPython使えるようになる」みたいな話があって期待してたけど立ち消えで残念
2021/01/30(土) 19:17:07.76ID:inFBwlEk0
そもそもExcel使いの中でのVB人口が少ないわな
職場によっては白い目で見られる事あるみたいだし。。。
2021/01/30(土) 19:23:25.71ID:rDRgl3OZ0
>>454
うちと同じ
厳格で神経質な大企業だわ
2021/01/30(土) 19:57:40.31ID:O0XirISQ0
python入ってたらpip installぐらいさせてくれるだろ
2021/01/30(土) 20:20:54.08ID:JU3c6HAP0
>>434
Excel関係ないならPowerShellでいいだろ
気合いるけどC#, VB.netだって使えるし
2021/01/30(土) 20:25:06.96ID:VxE/916e0
>>454
えっ、ExcelにPython搭載の話は無くなったの?
2021/01/30(土) 20:38:13.29ID:j+igCUSpM
>>459
ExcelにPythonが搭載?その後
https://qiita.com/yniji/items/b38bc312e860027108ac
2021/01/30(土) 21:00:39.22ID:aByJMjeF0
>>458
PowerShellは軽く調べたことあるけどそんなに便利なの?
C#とかVB.netってのは追加インストールなしでできる?

今のところうちの会社で出来そうな言語は↓

・VBA(Office)
・VBS(WSH)
・Jscript(WSH)
・JavaScript(webブラウザ)
・PowerShell
2021/01/30(土) 21:22:07.64ID:xS3gwMFJ0
VBAで簡単なアプリ開発ってできるの?
tefuくんの体脂肪測定器みたいな
2021/01/30(土) 21:22:48.91ID:O0XirISQ0
いくら便利でも所詮はシェルだし
体系がわかりやすくなっても
いったん古い体系になじんでたら覚える手間増えるだけだし
劇的に安全になったり間違いが減ったり作業が減るわけじゃない
今から入る人以外やる人いるのか?
2021/01/30(土) 21:23:28.18ID:aByJMjeF0
VBAは極めれば当然事務系のシステムはもちろんアクションゲームやシューディングゲームも作れる
開発効率は知らん
2021/01/30(土) 21:35:23.25ID:xS3gwMFJ0
>>464
簡単なアプリ作るのに初心者から何年ぐらいかかるな
2021/01/30(土) 21:40:45.18ID:aByJMjeF0
>>465
ジャンルは?
2021/01/30(土) 21:41:39.22ID:aByJMjeF0
ああ、上に書いてあるようなやつか
人によるけど半年〜1年くらいじゃね?
2021/01/30(土) 21:59:47.48ID:xS3gwMFJ0
>>467
tefu君たいしてすごくないな
ありがとう!
2021/01/30(土) 22:54:30.67ID:inFBwlEk0
昭和の頃からExcelできる=パソコンできる
パソコンできる=Excel Wordできる
この固定観念は不変だいまだに
何故なんだや?
2021/01/30(土) 23:08:10.45ID:O0XirISQ0
だれの概念だ
おれはしらんぞ
2021/01/30(土) 23:08:37.64ID:XeNTB87Q0
固定観念ではなく社会に出てPC使う上で一番必要になるから
2021/01/30(土) 23:14:56.21ID:xzjRtN8LM
昭和だと8bitパソコンの全盛期か?
2021/01/31(日) 01:25:22.99ID:SqzzHClod
>>460
えっ!Excelにjavascript搭載?!
2021/01/31(日) 03:01:40.77ID:Y3xOrDkq0
そもそもアプリがEXCEL何だから何が搭載されようがパフォは大差無いだろうな
それならブックが超軽いとかの方が恩恵あるわ
2021/01/31(日) 10:40:24.97ID:/4jghnKY0
昭和だからMS-DOSって奴か
定年して10年位の近所の爺がやたらExcelの話しだけは詳しかったわ
平成初期って今みたいにpcが普及していたイメージ無いのだがね
2021/01/31(日) 10:44:54.99ID:LH9Tecev0
平成初期は家庭の普及は少ないかもしれないが学校でPCの授業はある時代
2021/01/31(日) 11:12:38.97ID:eXchLs/k0
平成初期頃ならPC-9801+MS-DOS上で一太郎とロータス123の時代
2021/01/31(日) 12:51:12.93ID:LqdlwBTz0
FileSystemObjectのOpenTextFileで開いたファイルのポインタを最初の行に戻す方法ってありますか?
ADOのMoveFirstメソッドみたいな感じの。
2021/01/31(日) 13:05:56.87ID:tZ/FxqNKd
Windows版Excel(もちろん英語版)が最初に発売されたのは一応昭和時代の終わり頃だよ
日本で使ってた人はほぼいなかったと思うけど

使い物になる日本語版が登場したのは平成5年の秋
2021/01/31(日) 14:29:00.06ID:BqVAUrnsx
Excel 95か97は持ってたはずだが…どこいったかな
Excel2000は現役?で使ってたりするw
現代のPCで動かすと爆速だから
2021/01/31(日) 15:54:08.87ID:/4jghnKY0
2000て今のパソコンで動くのか知らんかった
サンクス!
2021/01/31(日) 15:56:11.00ID:1T3G+5lu0
3.1も動くんじゃね?
2021/01/31(日) 16:01:12.88ID:xa1uSfuZH
Excel2000とWindows2000を勘違い
2021/01/31(日) 19:37:03.65ID:U4PZxrG+d
>>435
色んな言語やって適材適所。
VBAの場合、特殊な環境なのでVBAが有利だけど出来ないことも結構ある。
2021/01/31(日) 19:38:49.07ID:U4PZxrG+d
>>451
足らないなら作れば良いってのもある。
バイナリエディタぐらいなら2時間もあれば作れるだろ。
2021/01/31(日) 19:41:00.82ID:MeuEia/rM
足らないなら
足りないなら
2021/01/31(日) 19:42:32.36ID:U4PZxrG+d
>>461
問題はさ、結局VBAから呼び出す形じゃピタゴラスイッチみたいになるし、外部からExcel操作するようなのは、元々VBAでやる必要のない処理なので競合にならないということ。
2021/01/31(日) 20:16:56.70ID:7WfxADLN0
ワード97のイースターエッグでピンボールが遊べた重いで
エクセルは迷路だっけか
2021/01/31(日) 21:05:00.18ID:zGey4MUp0
冴子先生
2021/01/31(日) 21:39:17.09ID:xa1uSfuZH
カイル
2021/02/01(月) 10:35:57.85ID:vqEWjed4a
64bit対応をしてるんですが、素人なのでポインタ/ハンドルとそれ以外の区別が難しいです
GetInputStateはlongptrではなくlongで良い(実際どちらでも動くことは動きました)と思うのですが、合ってるでしょうか?

Private Declare PtrSafe Function GetInputState Lib “USER32” () As Long

(そもそも、パラメータや引数がないのに、何故型宣言が必要なのかからしてよく分からないのですが…)
492デフォルトの名無しさん (ラクッペペ MM3e-mj3q)
垢版 |
2021/02/01(月) 13:32:29.40ID:0pAIWcaIM
https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-getinputstate

検索しろよ
BOOLだからLONGでいいんじゃねえの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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