[過去ログ] Excel VBA 質問スレ Part68 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
301(1): (JP 0Hdf-iZ3/) 2020/09/18(金)10:32 ID:68qBgcmgH(1) AAS
VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?
302(1): (ワッチョイ b7ce-W2Jb) 2020/09/18(金)14:09 ID:1dkG1MHP0(1/2) AAS
>>301
多くのアプリで、正規表現はWindowsに標準で内蔵されてるDLLを使ってる
独自の仕様やバグがあるのは既知だから、それが気に入らない時は別のライブラリを見つけてくるしかない
303: (ワッチョイ 9f4f-aBI4) 2020/09/18(金)17:55 ID:vGT+RG4a0(1/3) AAS
VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー
参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー
まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
省1
304: (アウアウウー Sa5b-l0r7) 2020/09/18(金)20:53 ID:Ej6zlwK4a(1) AAS
見てるだけで殺意はないだろ
自分で分かりやすく直していけばいい
305(1): (アウアウエー Sadf-vKz6) 2020/09/18(金)20:57 ID:E6dIN4Hja(1) AAS
どんな人が書いたコードでも理解できるのがプロ
306(5): (ワッチョイ b7cc-lMKa) 2020/09/18(金)20:57 ID:nL5nIenz0(1) AAS
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
307: (ワッチョイ 9f4f-aBI4) 2020/09/18(金)21:01 ID:vGT+RG4a0(2/3) AAS
>>306
最初date型で取ってやれば確か年や月や日を取る関数が有ったと思うよー
じゃあねー
308: (JP 0Hdf-iZ3/) 2020/09/18(金)21:05 ID:3fDNLBctH(1) AAS
>>302
私が気に入りそうなものはありますか?
肯定先読み肯定後読み以上に高度な機能は求めていないのですが
309: (ワッチョイ 9f4f-aBI4) 2020/09/18(金)21:10 ID:vGT+RG4a0(3/3) AAS
ていうかそうしてんじゃん
出力先のセルの書式はどうなってるの?
コードを見た感じじゃ少なくとも3列目は
日付型みたいだけど
310: (ワッチョイ f77c-5MQP) 2020/09/18(金)21:14 ID:Kp8J/oyZ0(1/2) AAS
>>306
year、month、dayの引数のdtの中身は2007/3/26ではない
311: (ワッチョイ f77c-5MQP) 2020/09/18(金)21:16 ID:Kp8J/oyZ0(2/2) AAS
または3、4、5列目の表示形式をそれぞれy、m、dにしてる
312: (ワッチョイ 9fad-dpHK) 2020/09/18(金)21:29 ID:LhaPjq300(1) AAS
>>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
313(1): (ワッチョイ b7ce-W2Jb) 2020/09/18(金)22:40 ID:1dkG1MHP0(2/2) AAS
>>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
314: (アウアウウー Sa5b-lnJt) 2020/09/18(金)22:48 ID:mNDgEDOXa(1) AAS
>>313
くそこーどを貼るのはやめてあげて
315: (ワッチョイ 9f2f-qc2B) 2020/09/18(金)23:02 ID:V3SekzLi0(2/3) AAS
>>306
セルに表示されている文字とセルの値は別だって理解が必要
おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26
まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ
316: (ワッチョイ 9f2f-qc2B) 2020/09/18(金)23:05 ID:V3SekzLi0(3/3) AAS
つヵ、C列の値でC列に書き換えるとかしないで
元の値を別の列にもっとけば、VBAなしで関数だけで出来るだろうけど
317: (ワッチョイ 9f01-ybTh) 2020/09/19(土)04:14 ID:JSd39pzr0(1) AAS
C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる
C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる
でどう?
318: (ワッチョイ 9f4f-aBI4) 2020/09/19(土)07:38 ID:kGiNzl5D0(1/4) AAS
>>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ
まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
省3
319(1): (ワッチョイ 9f4f-aBI4) 2020/09/19(土)07:43 ID:kGiNzl5D0(2/4) AAS
あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね
まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー
320(1): (ワッチョイ b7da-Cup9) 2020/09/19(土)07:51 ID:oBjg4zik0(1/2) AAS
仕事の内容でそのソースを直せってことなら書き直せばいいんじゃねーの
そのまま残すと後任者に同じように思われるんだぜ
上下前次1-新書関写板覧索設栞歴
あと 682 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.019s