X



Excel VBA 質問スレ Part68

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ dbda-8BP0)
垢版 |
2020/08/30(日) 11:55:27.33ID:Oy/VxFsh0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part67
https://mevius.5ch.net/test/read.cgi/tech/1593104489/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0301デフォルトの名無しさん (JP 0Hdf-iZ3/)
垢版 |
2020/09/18(金) 10:32:05.02ID:68qBgcmgH
VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?
0302デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/18(金) 14:09:52.14ID:1dkG1MHP0
>>301
多くのアプリで、正規表現はWindowsに標準で内蔵されてるDLLを使ってる
独自の仕様やバグがあるのは既知だから、それが気に入らない時は別のライブラリを見つけてくるしかない
0303デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/18(金) 17:55:04.61ID:vGT+RG4a0
VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー

参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー

まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?
0306デフォルトの名無しさん (ワッチョイ b7cc-lMKa)
垢版 |
2020/09/18(金) 20:57:17.16ID:nL5nIenz0
C列に"2007/3/26"などのような書式で年月日が入っていますが
それをC=年、D列=月、E列=日にしたいのですが

↓だと年が1905,月が1、日が26日のように変換されてしまいます。

Dim r As Long, dt As date
For r = 2 To 435
dt = CDate(cells(r,3))
Cells(r, 3) = Year(dt)
Cells(r, 4) = Month(dt)
Cells(r, 5) = Day(dt)
Next r
0312デフォルトの名無しさん (ワッチョイ 9fad-dpHK)
垢版 |
2020/09/18(金) 21:29:41.49ID:LhaPjq300
>>306
考えなしに書くからセンス皆無なコードだけど3列目の日付が文字列で入ってるならこんなんどうよ

Dim Ary(2 to 435,1 to 3) As Long,r As Long, a As String
For LBound(Ary,1) to UBound(Ary,1)
a = Sheet1.Cells(r,3).Value
Ary(r,0) = Split(a,“/“)(0)
Ary(r,1) = Split(a,“/“)(1)
Ary(r,2) = Split(a,“/“)(2)
Next

Range(Sheet1.Cells(2,3),Sheet1.Сells(435,5)) = Ary
0313デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/18(金) 22:40:09.47ID:1dkG1MHP0
>>306
Sub Macro1()
  Range("C2:C435").Copy
  Range("D2:E435").Select
  ActiveSheet.Paste
  Range("C2:C435").NumberFormatLocal = "yyyy"
  Range("D2:D435").NumberFormatLocal = "m"
  Range("E2:E435").NumberFormatLocal = "d"
End Sub
0315デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
垢版 |
2020/09/18(金) 23:02:36.64ID:V3SekzLi0
>>306
セルに表示されている文字とセルの値は別だって理解が必要

おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26

まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ
0317デフォルトの名無しさん (ワッチョイ 9f01-ybTh)
垢版 |
2020/09/19(土) 04:14:23.53ID:JSd39pzr0
C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる

C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる

でどう?
0318デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/19(土) 07:38:40.10ID:kGiNzl5D0
>>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ

まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
テストどうしてたんだとか思うよねー

正直こんなのに関わりたくないけど
仕事だからやるって感じだねー
0319デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/19(土) 07:43:05.72ID:kGiNzl5D0
あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね

まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー
0321257 (ワッチョイ bf90-W2Jb)
垢版 |
2020/09/19(土) 10:25:54.04ID:fwfEHGdP0
>>259
遅くなってしまいましてごめん。自分の欲しかった情報がこれで取れる
事ができました。

ありがと!
0322デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/19(土) 15:00:02.54ID:TN+kKyJDd
>>320
その判断は結構難しい。
今動いてるものは、そのままにしておくというのが通常だ。

Accessでレコードセットループで回してる最中にその値でもって別のレコードセット開いたりを7、8回やって10分かけてデータ作ってるプログラムが有るんだけど、コレ、クエリ1つで出来るんじゃね?と思って試しに作ったら一瞬で出来る。

それでも、正式に変更することになるかと言えばならない。
こっちだってその辺は分かってる。
何かの時に、きちんと作り直しましょうという話になるまで置いとくもんで、むしろそんな話にならずにずっ―とそのままというのが殆ど。
0323デフォルトの名無しさん (ドコグロ MMdf-RDjc)
垢版 |
2020/09/19(土) 15:56:27.98ID:nGfYM+wGM
>>322
なら
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
とか書くなよ
どうせ盛々で語ってるだけだろw
0326デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/19(土) 18:06:32.97ID:kGiNzl5D0
そうかーみんなそんな具合に考えてるのかー
でも悪いけどその場でチャチャっと直すことはしないよ
もちろん上に話を通すのは当然だけど
こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから直すんなら他への影響調査の時間貰う
まぁ当たり前だよねー
0327デフォルトの名無しさん (ドコグロ MM2b-RDjc)
垢版 |
2020/09/19(土) 18:37:26.04ID:e5zvgWAXM
>>324
本人でもないのに
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
に対して
> 今動いてるものは、そのままにしておくというのが通常だ。
って言うの?
アホの上塗りにしかなってないけど… w
0332デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/19(土) 22:13:23.39ID:TN+kKyJDd
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。

ウォーターフォールでやってて、プロジェクトの目的が決まってるのに、いくら高速化しても余計なことすれば怒られるのが当然なんだよ。
それが原因で不具合が出てみろ。
大変なことになるんだから。

確かに、思いつきでどんどん改変してく仕事も結構やったことある。
0336デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/19(土) 22:48:23.19ID:RlUx9i/e0
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ
0341デフォルトの名無しさん (ドコグロ MMdf-RDjc)
垢版 |
2020/09/20(日) 03:34:03.51ID:G6tFT8m8M
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど
0343デフォルトの名無しさん (ワッチョイ 9f2f-5SD5)
垢版 |
2020/09/20(日) 08:29:09.75ID:lYpGB0SB0
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが

VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな
0344デフォルトの名無しさん (アウアウウー Sa5b-FmA/)
垢版 |
2020/09/20(日) 09:11:52.63ID:jB/qzKKfa
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない
0348デフォルトの名無しさん (ワッチョイ 9f01-RDjc)
垢版 |
2020/09/20(日) 12:04:24.67ID:WRa/xy2u0
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース
0349デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/20(日) 16:05:38.71ID:Q2tD94P+d
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。

ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。
0351デフォルトの名無しさん (ワッチョイ d763-lMKa)
垢版 |
2020/09/20(日) 16:52:11.86ID:qZo3Wq6A0
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな

さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変
0356デフォルトの名無しさん (アウアウエー Sadf-8NzO)
垢版 |
2020/09/20(日) 20:55:59.15ID:6QmidxOBa
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f−bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?
0364デフォルトの名無しさん (JP 0Hdf-iZ3/)
垢版 |
2020/09/20(日) 22:16:21.98ID:ce1O3kmIH
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん
0365デフォルトの名無しさん (ワッチョイ 9f59-P295)
垢版 |
2020/09/20(日) 22:48:07.21ID:lUm0Ft460
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。
0366デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/20(日) 22:53:39.67ID:Q2tD94P+d
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。

それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。

でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。
0376デフォルトの名無しさん (ワッチョイ f77c-5MQP)
垢版 |
2020/09/20(日) 23:51:14.87ID:bN/HvUsh0
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される
0377デフォルトの名無しさん (ワッチョイ 775f-VvsD)
垢版 |
2020/09/21(月) 23:04:27.19ID:lAfdaJg/0
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。
0384デフォルトの名無しさん (ワッチョイ 12b5-VcBo)
垢版 |
2020/09/23(水) 20:34:38.55ID:Dfniq8Ns0
>>381
ありがとう
>>383
本当にありがとう

馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました

めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます
0386デフォルトの名無しさん (ワッチョイ 126d-6H/P)
垢版 |
2020/09/23(水) 22:06:19.89ID:gKXTj3UI0
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ
0390デフォルトの名無しさん (ワイーワ2 FF6a-A++P)
垢版 |
2020/09/25(金) 21:36:41.69ID:WSuN06d1F
罫線の所属するセルについて質問です

セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします
0392デフォルトの名無しさん (ワッチョイ 5fda-b+lb)
垢版 |
2020/09/25(金) 22:34:46.55ID:48EvNsnc0
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。
■ このスレッドは過去ログ倉庫に格納されています

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