Excel VBA 質問スレ Part60

■ このスレッドは過去ログ倉庫に格納されています
2019/03/16(土) 20:39:09.64ID:6HWXzj9o
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/
2019/03/29(金) 08:21:18.11ID:FHKNInbw
捕まるとかそういう話に終始してるのがアホらしい。
トラブルになった時点で負けだろう。

スクレイピングでのトラブルは探せば色々見つかるだろう。

時間割アプリの問題とかLinkedInとか。
殆どがコンタクトを取っていれば防げた問題。
もっとも中には許可されないことが分かってて確信犯的に無断でする場合もあるが。
2019/03/29(金) 13:03:28.66ID:HmBCV24x
【速報】金券500円分タダでもらえる   
https://pbs.twimg.com/media/D2y3uRaUkAAt6d9.jpg     
 
@タイムバンクをインストール   
iOS: https://itunes.apple.com/jp/app/%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%90%E3%83%B3%E3%82%AF/id1253351424?mt=8 
Android: https://play.google.com/store/apps/details?id=jp.timebank  
A会員登録  
Bマイページへ移動する。
C招待コード→招待コードを入力する [RirzTu] 

コードを入力した方に600円もらえます     
今なら更に500円ギフト券を貰った残高からただで買えます。 
貰ったギフティプレモはAmazonギフト券(チャージタイプ)に交換できます(電子マネー払いにて)    
      
数分で出来るので是非ご利用下さい  
2019/03/29(金) 17:02:06.83ID:Ozum7hk2
>>334
関係ないのに永遠に続けるバカっているよな
338デフォルトの名無しさん
垢版 |
2019/03/29(金) 18:38:03.39ID:NYOzkE7a
>>336
残高マジで増えたwww   
2019/03/29(金) 18:58:02.78ID:Ozum7hk2
>>336
これを自分の招待コードに差し替えて拡散すれば勝手にポイントガッポガッポやで
2019/03/30(土) 00:05:18.82ID:K763EDhF
Cells(1, 1).Value = "〒111-222" & vbCrLf & "東京都新宿区XXXマンション" & vbCrLf & "西村ひろぽん"

のコードでセルに改行コード crlf 入りの文字列を入力し
Excelのセルの値をメモ帳に張り付けるとこんな感じになってました。

〒111-222

東京都新宿区XXXマンション

西村ひろぽん


crが余計に1つ多くvbcrlfの前に入ってしまいます。
コードでは入れていないのですが、なぜでしょうか?何か対策はありますか?
2019/03/30(土) 00:46:09.75ID:Bc/A+ZhT
>>340
コードの時点ではvbLfにすればいい
2019/03/30(土) 01:05:53.94ID:BYxrD6lc
>>340
再現しなかった
vbcrが2つ入ってたらそうなるけど、ハテ
343デフォルトの名無しさん
垢版 |
2019/03/30(土) 02:01:07.03ID:GNmeMRzR
VBAなんて全くできないんだけど
エンジニアってこれよりずっと難しいことやってるんでしょ?
2019/03/30(土) 02:21:31.67ID:BYxrD6lc
>>343
このスレは基本的に一般事務・経理・営業が、現在のルーチンを補助するためのツール作成がメイン
エンジニアはEXCEL自体を作るようなイメージ
でもvbaエンジニアもいたりするし、こういうツールを作る事を生業にしている業者もある
345デフォルトの名無しさん
垢版 |
2019/03/30(土) 03:03:59.52ID:Lscb2BBn
>>340
Cells(1, 1).Value = "〒111-222" & vbLf & "東京都新宿区XXXマンション" & vbLf & "西村ひろぽん"

セル内改行はLFのみだよ
2019/03/30(土) 03:59:45.09ID:x88rhneO
>>339
スパム拡散させようとすんなカス
2019/03/30(土) 07:57:38.98ID:K763EDhF
>>341
はい、確かにVBAで挿入する時には
それでうまくいきました。
セルの値をコピーすると

文字列lf →文字列crlf に置き換わってました。

なぜだろう。

>>342
いや、再現しますよ。

>>345
サンクス。
とりあえずVBAではおまじないと覚えておきます。
2019/03/30(土) 08:04:35.59ID:MmqNwO70
素直に

Cells(1, 1).Value = "〒111-222"
Cells(2, 1).Value = "東京都新宿区XXXマンション"
Cells(3, 1).Value = "西村ひろぽん"

じゃダメだったのかい!
2019/03/30(土) 08:43:12.88ID:Bc/A+ZhT
>>347
試してみたら
CR → CRLF
LF → CRLF
となった。
つまりCRもLFも別個にCRLFに変換されてしまうようだ。
2019/03/30(土) 09:05:05.65ID:sUXpnQB5
>>349
それOS依存だろ
OSに合わせて変換だと思った
2019/03/30(土) 09:13:46.28ID:FTZFsy98
vbNewLineが颯爽と登場
2019/03/30(土) 09:55:31.40ID:rKCbbHqC
お母さんからvbNewLineを使いなさいって言われてるから初心者の俺も使ってるわ
2019/03/30(土) 10:59:51.98ID:rKRPcC1u
crとlfを意識して使い分けたいから、newlineはあえて使わないな
2019/03/30(土) 11:00:14.19ID:Fw0ogXHz
android版はVBA使えないしMacなんか使わないからvbCrLfで困らない
2019/03/30(土) 11:38:26.16ID:BYxrD6lc
本日の戦い

vbNewLineでよくね派
     vs
vbNewLine使うと余計に混乱してしまう派
2019/03/30(土) 12:05:31.96ID:Bc/A+ZhT
>>352
vbNewLineてテキストの改行だろう
セル内改行とは違うじゃんか
2019/03/30(土) 12:07:01.20ID:sUXpnQB5
>>355
初心者を扱うの大変なんだよな
だから混乱が起きた
2019/03/30(土) 12:08:46.76ID:sUXpnQB5
>>356
どうでもいいよ どうせ
2019/03/30(土) 12:42:55.38ID:MmqNwO70
そもそも何でCRとLF、2つも作ったんだろ。
見えないのもうざいから、ワードみたいに

  |
  |
←┘

こういうの入れとけよな。
2019/03/30(土) 12:51:14.77ID:K763EDhF
>>348
ダメ

>>349 >>350
変な仕様だよね
2019/03/30(土) 13:21:22.36ID:BYxrD6lc
>>359
歴史ってとこ
https://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89

統一規格の概念が希薄だった時代にみんな好き勝手作って、それがずっと続いてる
最悪
2019/03/30(土) 13:34:00.20ID:HZnZWzso
タイプライターとかMulticsとかの時代にさかのぼる負の遺産だからね
2019/03/30(土) 13:43:10.56ID:lnhNxPid
>>359
> そもそも何でCRとLF、2つも作ったんだろ。
その話をするとタイプライターの時代まで遡るからとりあえずそう言うもんだと覚えておけばいいよ
2019/03/30(土) 13:47:06.57ID:glDBW/eM
>>340
Excelは何も置き換えてない
Excelがセル内改行として扱うのはLFだけ
CRLFを突っ込んでもCR部分はただの見えない文字として存在してるだけで改行しない

セルの文字列をコピペした時CRLFのうちLFがCRLFに置き換わってCR CRLF状態になる(Windowsの場合。他は知らん)
それをCRを改行として扱うテキストエディタとかに貼ると両方改行して6行になる
俺の使ってるメモ帳はCRとLFは改行として扱われず見えない文字になるが、バージョンによるのか
2019/03/30(土) 22:50:12.86ID:uS2atdcl
こんなの見つけた
http://tooljp.com/windows/chigai/html/Windows/vbCrLf-vbLf-vbCr-vbnewline-chigai.html
2019/03/30(土) 22:52:52.36ID:uS2atdcl
続き
ここに、こんなの書いてある

秀丸エディタでは、改行が chr[10]でもchar[13]+char[10]でも自動で判定して表示するようです。
一方でWindows標準のメモ帳では改行はchar[13]+char[10]固定であるため、linux などchr[13]を改行とした
テキストファイルを表示すると改行せずに表示されます。
2019/03/30(土) 22:55:39.71ID:uS2atdcl
つまり、メモ帳は、CrLfセットでないとダメだって
2019/03/30(土) 23:04:27.71ID:glDBW/eM
>>367
というかWindows標準がCRLF
秀丸やサクラエディタが融通を効かせてくれてるだけ
2019/03/31(日) 01:25:13.65ID:QUGB5Esi
プログラミングやると文字コード鬱陶しいよな
2019/03/31(日) 02:24:23.24ID:DMnS82C2
webの文字コードは更にキツイ
最近大分マシになったけど
371デフォルトの名無しさん
垢版 |
2019/03/31(日) 04:23:05.94ID:8cbdf+T7
秀丸エディタとか今でも使ってる人なんているの?
久しぶりに名前を聞いた
2019/03/31(日) 07:02:58.77ID:m7bBr8R/
>>371
お前はなにを使ってるの?
373デフォルトの名無しさん
垢版 |
2019/03/31(日) 09:25:24.80ID:rZDtkSri
新バージョンの
禿丸ツルピカなら使ってる
2019/03/31(日) 09:32:08.99ID:mUt6la4P
TeraPad でも、改行コードを指定できる

ただし、TeraPadは、新しめの文字が?? になってしまう

中国の地名の「深圳」とか
375デフォルトの名無しさん
垢版 |
2019/03/31(日) 09:43:08.67ID:S96NH+nt
>>372
VS
2019/03/31(日) 11:13:47.65ID:7pZaUVM7
MacはCr、Unix/LinuxはLf、WinはCrLf
2019/03/31(日) 14:47:15.91ID:p4bbm5us
>>359
元はテレタイプのコードだからね

テレタイプではCRでカーソルを行頭に復帰
LFでカーソルを行送りとなり合わせて改行になる

CRだけではカーソルが行頭に復帰するだけで行は変わらない
LFだけではカーソルが次の行に送られるだけで桁位置は変わらない
こういう仕様だった
2019/03/31(日) 16:38:53.91ID:7pZaUVM7
文字コードといえばワード・パワポもエクセル連携の観点では曲者
段落区切りの改行がCR、段落内改行がVTになるからな
単純な文字列貼付でいけると思ってると見事にハマる
2019/03/31(日) 16:59:27.49ID:m7bBr8R/
Windowsは、CrLfセットで改行なのに、>>340みたいになるっておかしいだろ
2019/03/31(日) 17:05:24.30ID:x94da/wE
>>379
CrLfだからそうなる
Excelの改行とWindows標準改行の扱いの違い
2019/03/31(日) 18:57:30.32ID:2QHIj7Qu
>>359
キャリッジリターン、ラインフィードの2つの単語を覚えておこう。
どういう意味かは自分で調べてね。
382デフォルトの名無しさん
垢版 |
2019/03/31(日) 19:02:18.98
>>336
今日までか
貰ってアプリは消した   
2019/03/31(日) 22:08:25.87ID:cn1K3c+R
ラインフィード
→ラインがご飯を与える
2019/04/01(月) 01:45:18.74ID:nOieNnAu
キャリッジ・リターン 復帰
ライン・フィード 改行
CR+LF 復改
2019/04/01(月) 01:50:34.29ID:9/xHbeRR
知識自慢
2019/04/01(月) 09:33:56.36ID:MjMweJle
>>385
昔はプリンタで普通に使ってたぞ
2019/04/01(月) 09:34:13.23ID:MjMweJle
>>385
昔はプリンタで普通に使ってたぞ
2019/04/01(月) 09:34:33.41ID:MjMweJle
>>385
昔はプリンタで普通に使ってたぞ
2019/04/01(月) 10:54:00.54ID:egjDjXMe
爺さんの常識は今の非常識
2019/04/01(月) 11:14:26.77ID:kXJ+CJ6I
よくこんな話題で何日も盛り上がれるな
マウント取るにしても内容の程度が低すぎるでしょ
2019/04/01(月) 11:17:49.51ID:9/xHbeRR
別の話題

VBAのエディタしょぼくね?
VSの方がよっぽど開発効率がいい
2019/04/01(月) 11:40:46.78ID:kgDolq/Y
>>391
そりゃ作られたの20年前でレガシーもいいとこだからな
だいぶ昔からdeprecatedフェーズだからどれだけ要望があろうと改善されることもない
2019/04/01(月) 14:11:47.96ID:9/xHbeRR
>>392
Exce2010の時と比べても
VBAエディタな〜〜んも機能改善されてねー
2019/04/01(月) 15:12:27.18ID:no59bRT+
>>393
そもそもレガシーでありMS的には使ってほしくない機能なんだから、
不便すぎてユーザーが減っていくことがまさに「改善」なんだよ
気に入らないのはわかるが古いものを新しくしていくっていうのはそういうもの
2019/04/01(月) 16:18:15.03ID:FTeB9oqU
企業が年寄の使用を嫌うのと同じかw
2019/04/01(月) 21:40:54.00ID:gJhvzDut
それでも利益的には無視できないだろう
もし切るならとっくに切ってる
別に移行するにも何にどう移行するのか?
lotusも無くなったからそんなに恐れる必要も無いけど
free系officeも敵ではないだろうし
狙いはcloud系か何かなんだろうけど
開発の人はどうにでもなるだろうけど
excelvbaは素人系だからなぁ
2019/04/01(月) 21:53:42.68ID:IAvZX1Rk
古いExcelを令和対応させるVBA作ってください!!
2019/04/01(月) 22:28:03.19ID:StNYHPUb
If Cells(1 ,1) > 43585 Then wstrGengo = "令和"
2019/04/02(火) 00:18:55.85ID:rWuIv4od
>>397
マイクロソフトがパッチだすのまて
2019/04/02(火) 00:31:35.68ID:g8jutNiy
まぁ日付形式で書いてりゃいずれ対応するべ
2019/04/02(火) 02:17:49.89ID:GCjhH3yn
VBAで簡単な入金管理作った
経験あるんだけど
VBAでちょこちょこ
するだけでいい仕事って就けるもん?
2019/04/02(火) 02:32:45.56ID:CMqenrji
>>401
面接でそういえばいい
2019/04/02(火) 08:35:03.23ID:5I+lN+ly
VBA 求人 東京
で調べたら月給50万とか80万とか
出てくるけどほんまなん?
2019/04/02(火) 09:24:24.65ID:g8jutNiy
>>403
本当だけど
それガッツリとしたVBAエンジニアだよ
多分gitかTortoiseSVN辺り使うはず

【フリーランス】Excel/Access-VBA | 開発知見がある方!システムサポート業務
仕事内容
基幹システム/部門個別システム支援(運用、問合せ、J-SOX対応等)
部門内インフラ管理支援、エンドユーザIT支援、業務用ツール開発
給与
2019/04/02(火) 21:44:59.43ID:ZGIlr/GY
>>403
別にVBAでも普通ある。
けど、面接して採用される奴は他にもスキルがあるか、それなりに出来る奴だろうな。

gitや、SVNについては必ずしもってところだろう。
もっとも、VBAのコードを管理するためにgitやSVN用のツールをVBAで組む程度はやれる或いはやってるだろう。
2019/04/02(火) 23:38:38.44ID:z8xG+23/
1989/1/7 → 昭和64年1月7日
1989/1/8 → 平成1年1月8日
2099/1/1 → 平成111年1月1日
3000/1/1 → 平成1012年1月1日

試してみたらこうなった。
令和がまだ入ってないのは分かるが、
1000年後も普通に平成だとは思わなかったわ。
2019/04/02(火) 23:44:03.27ID:dGnjjG+S
>>406
どうせならOSとEXCELのバージョンかけや
408デフォルトの名無しさん
垢版 |
2019/04/02(火) 23:45:56.37ID:PBWFMMP7
>>406
https://dotup.org/uploda/dotup.org1812346.jpg
2019/04/02(火) 23:47:51.13ID:z8xG+23/
>>407
どちらか片方ならわかるが、何で両方?
組み合わせで変わるもんじゃないだろう。
2019/04/03(水) 01:37:48.37ID:HquWe5hb
>>409
MSはそんな思い込みが通用するほど甘い相手じゃない
2019/04/03(水) 02:13:34.41ID:T6JhjkrS
>>406
江戸もでないし
2019/04/03(水) 03:03:58.76ID:SETc7Ceb
こういう思い込みをする奴が新年号対応に莫大な人工が掛かる糞システムを作るのである
2019/04/03(水) 03:14:27.06ID:HquWe5hb
>>411
シリアル値は1900年から
明治までしか対応できない
2019/04/03(水) 07:43:03.53ID:4XO/CSdW
Windows 10・WSL・Ubuntu 16.04 の設定ファイルでは、

+:2:1990/01/01:+*:平成:%EC%Ey年
+:1:1989/01/08:1989/12/31:平成:%EC元年

+:2:1927/01/01:1989/01/07:昭和:%EC%Ey年
+:1:1926/12/25:1926/12/31:昭和:%EC元年

+:2:1913/01/01:1926/12/24:大正:%EC%Ey年
+:2:1912/07/30:1912/12/31:大正:%EC元年

+:6:1873/01/01:1912/07/29:明治:%EC%Ey年

+:1:0001/01/01:1872/12/31:西暦:%EC%Ey年
+:1:-0001/12/31:-*:紀元前:%EC%Ey年
415414
垢版 |
2019/04/03(水) 07:55:00.58ID:4XO/CSdW
明治6年(1873)から正しい

それ以前は太陰太陽暦(旧暦)だから、西暦とは異なるから、日本の暦は使えない
2019/04/03(水) 12:14:49.07ID:RhgPGi2C
Excel2013以降ならこれで行けると思う

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
"2019 05 01"="令和_令_Reiwa_R"
2019/04/03(水) 20:18:32.12ID:XzL94EYi
2013ってOSどこからサポートしてたっけ
2019/04/03(水) 20:25:25.63ID:LAo899n+
そんなのググったらすぐ出るだろう…
419デフォルトの名無しさん
垢版 |
2019/04/04(木) 00:26:33.22ID:2+ZabFqB
新元号は「安平」であります。
https://dotup.org/uploda/dotup.org1812320.jpg
420デフォルトの名無しさん
垢版 |
2019/04/04(木) 02:37:49.53ID:2+ZabFqB

2019/04/04(木) 09:42:49.96ID:8+vU6A6d
>>416
これは、Office各バージョンで共通で使えるしExcel・Word等でも使えるね
他のアプリでも使えるんじゃない
2019/04/04(木) 10:15:48.02ID:8+vU6A6d
>>416
これは、Windowsのカレンダーに対して日本用の設定を追加してるだけだから
Windowsの標準コントロールのカレンダーを使用して正しくコーディングしていれば
この設定をするだけで対応できるだろ
これを「令和登録.reg」のファイルにして管理者モードで実行するだけだね
--下記--
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
"2019 05 01"="令和_令_Reiwa_R"
423デフォルトの名無しさん
垢版 |
2019/04/04(木) 10:47:09.88ID:2+ZabFqB
VBAでfor nextで回しているときにworksheetfunction.vlookupを使っているのですが
値が存在しないときにエラーが出て止まってしまいます。
こんなとき存在しない時は処理を回避するにはどうしたらいいですか?
On error resume nextにすると、エラーのときにも処理をしてしまいます。
2019/04/04(木) 10:56:05.80ID:uGh4IPkF
application.vlookup
2019/04/04(木) 11:06:48.53ID:8+vU6A6d
>>423
On error resume next はエラーを無視して続ける
On error go to XXXX でえあらーが出たらそっち行け
426デフォルトの名無しさん
垢版 |
2019/04/04(木) 11:17:40.01ID:2+ZabFqB
>>425
vlookupで見つかったらA処理、見つからなかったらB処理、をそれぞれさせる場合
どうするの?
427デフォルトの名無しさん
垢版 |
2019/04/04(木) 11:18:13.34ID:2+ZabFqB
そっち行けのあと、ちゃんとfor nextループに復帰しないといけない。
2019/04/04(木) 11:27:09.76ID:uGh4IPkF
値が存在するか確認してからvlookupでもOK
2019/04/04(木) 12:16:12.36ID:8+vU6A6d
>>427
基本的にgo toの 行先はループ内だな
で、正常の場合はそのルーチン内で飛ばす、また共通で使用できる部分はそのまま使う
それぞれ複雑になる場合は、外部呼出しで処理
2019/04/04(木) 12:40:19.97ID:aPtbQ2yh
簡易だけどこんな風でよろしいか。

On Error Resume Next
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
If Err.Number=(見つからない) Then
'B処理
Err.Clear
ElseIf Err.Number=0 Then
'A処理
Else
Debug.Print "想定外:" & vbCrLf & Err.Description
EndIf
Next i
On Error Goto 0
2019/04/04(木) 13:14:42.92ID:iClvVPMc
こうじゃないの

On Error Goto err
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
'処理
err:
Next i
2019/04/04(木) 13:23:37.46ID:8+vU6A6d
>>431
一般的に書くと以下だけど、処理は複雑なら外部ファンクションで

On Error Goto err
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
[正常処理]
Goto 共通
err:
[err処理]
共通:
[共通の処理]
Next i
2019/04/04(木) 13:50:38.20ID:iClvVPMc
>>432
あぁそうか、その形だスマン

エラー番号を見たり外したりで分岐させる方法が合ったと思うけど、
あれってどうなのかな
2019/04/04(木) 14:26:57.06ID:omgcYFOR
Dim Rc As Variant

For I = 1 To 10
Rc = Application.VLookup(〜)
If IsError(Rc) Then
  'B処理
  Debug.Print "Err"
Else
  'A処理
  Debug.Print Rc
End If
Next
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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