!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part72
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sdaa-x2SP)
2021/07/18(日) 08:42:15.37ID:KskL7bEXd504デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 07:49:40.96ID:WRC7pvXs0505デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 08:01:31.03ID:olTKpvXL0506デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 08:04:36.53ID:olTKpvXL0507デフォルトの名無しさん (ブーイモ MM62-GUjw)
2021/08/14(土) 08:16:43.15ID:FeW4uPBDM IsNumericでB2を判定してTrueならFor文を走らせて、FalseならB2をA6へ
508デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 08:16:49.28ID:WRC7pvXs0 >>502
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
'B1B2じゃなければ終了
If Intersect(Target, Range("B1:b2")) Is Nothing Then Exit Sub
'とりあえずクリア
Range("A5:A100").Clear
'メイン。整数じゃなければerrに飛んでコピーして終わり。trycacheみたいな事がしたかった
最初 = Cells(1, 2)
最後 = Cells(2, 2)
'
If (Int(最初) = 最初 And Int(最後) = 最後) Then
行 = 5
For i = 最初 To 最後
Cells(行, 1) = i
行 = 行 + 1
Next
Exit Sub
End If
'整数以外
err:
Range("a5:a6").Value = Range("B1:b2").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
'B1B2じゃなければ終了
If Intersect(Target, Range("B1:b2")) Is Nothing Then Exit Sub
'とりあえずクリア
Range("A5:A100").Clear
'メイン。整数じゃなければerrに飛んでコピーして終わり。trycacheみたいな事がしたかった
最初 = Cells(1, 2)
最後 = Cells(2, 2)
'
If (Int(最初) = 最初 And Int(最後) = 最後) Then
行 = 5
For i = 最初 To 最後
Cells(行, 1) = i
行 = 行 + 1
Next
Exit Sub
End If
'整数以外
err:
Range("a5:a6").Value = Range("B1:b2").Value
End Sub
509デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 08:17:31.92ID:WRC7pvXs0510デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 08:32:21.96ID:olTKpvXL0511デフォルトの名無しさん (ブーイモ MM62-GUjw)
2021/08/14(土) 08:34:31.28ID:FeW4uPBDM あぁそうか整数の時だけなのか
でもOnErrorResumeNextはバグを見逃しやすくなるから個人的にはあんまり使いたくねぇなぁ
lsNumenic(B2)の後にB2=CLng(B2)で整数判定かけるのってどう?……見辛くなるか
でもOnErrorResumeNextはバグを見逃しやすくなるから個人的にはあんまり使いたくねぇなぁ
lsNumenic(B2)の後にB2=CLng(B2)で整数判定かけるのってどう?……見辛くなるか
512デフォルトの名無しさん (アウアウウー Saa5-++7W)
2021/08/14(土) 09:09:38.05ID:LMRL1zmta >>502がそもそも何で質問の様な動作になるかがわかってないとこれからも簡単なことでつまずくと思うよ
当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
B2→Target.ValueはB2、Target.Offset(-1)はB1
B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
B2→Target.ValueはB2、Target.Offset(-1)はB1
B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
513デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 09:17:38.32ID:WRC7pvXs0514デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 09:25:22.77ID:olTKpvXL0 >>512
> >>502がそもそも何で質問の様な動作になるかがわかってないとこれからも簡単なことでつまずくと思うよ
> 当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
> 「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
> B2→Target.ValueはB2、Target.Offset(-1)はB1
> B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
> ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
> ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
ネットで拾ったコードにOn Error Resume Nextを
加えたりして動くように自分なりにやってみたのですが
cnt = Target.Value - Target.Offset(-1).Value
の意味が理解できなくて・・・
少々自分にはレベルの高いコードでした
仕事でどうしてもエクセル使わないといけなかったので無理しましたw
ご教授ありがとうございます!
> >>502がそもそも何で質問の様な動作になるかがわかってないとこれからも簡単なことでつまずくと思うよ
> 当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
> 「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
> B2→Target.ValueはB2、Target.Offset(-1)はB1
> B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
> ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
> ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
ネットで拾ったコードにOn Error Resume Nextを
加えたりして動くように自分なりにやってみたのですが
cnt = Target.Value - Target.Offset(-1).Value
の意味が理解できなくて・・・
少々自分にはレベルの高いコードでした
仕事でどうしてもエクセル使わないといけなかったので無理しましたw
ご教授ありがとうございます!
515デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 09:28:14.25ID:olTKpvXL0516デフォルトの名無しさん (ワッチョイ c2da-oCel)
2021/08/14(土) 10:58:30.72ID:UIvxBUgE0 Excelの関数とか覚える必要ないでしょ
全部マクロでやれば済むはずだし。
全部マクロで処理している人が職場にいる。
全部マクロでやれば済むはずだし。
全部マクロで処理している人が職場にいる。
517デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/14(土) 11:02:58.83ID:WZYuRp6L0 適材適所
518デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/14(土) 11:11:37.37ID:Wd8wuOU/0 >>496
使う理由は確かにわからないんですよね・・・
ただ、日本語以外の本でもその業界の数値計算のコード例がC++かVBAかMATLABなので恐らく業界のデファクトスタンダード
になっているんだと思います。
VBA以外にも使えそうなエクセルの機能があるなら使っていこうかと思います
使う理由は確かにわからないんですよね・・・
ただ、日本語以外の本でもその業界の数値計算のコード例がC++かVBAかMATLABなので恐らく業界のデファクトスタンダード
になっているんだと思います。
VBA以外にも使えそうなエクセルの機能があるなら使っていこうかと思います
519デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/14(土) 11:13:11.03ID:Wd8wuOU/0520デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 11:22:28.35ID:WRC7pvXs0521デフォルトの名無しさん (アウアウウー Saa5-oCel)
2021/08/14(土) 11:37:23.70ID:WNZYUSqEa たまになのによくみる?
522デフォルトの名無しさん (エムゾネ FF62-BgPC)
2021/08/14(土) 12:03:40.37ID:MjnqNUAdF >>515
5ちゃんを観るのを止めると綺麗なコード描けるようになる
5ちゃんを観るのを止めると綺麗なコード描けるようになる
523デフォルトの名無しさん (ブーイモ MMb6-aBRF)
2021/08/14(土) 12:21:33.89ID:r4eiaXelM524デフォルトの名無しさん (ワッチョイ 3d28-/KFf)
2021/08/14(土) 12:31:49.92ID:egxXCzK30 if,and,orと変数の使い方を覚える
Functionの使い方を覚える(Byval,ByRef)
Range(”A2”)みたいな書き方から、Worksheet.Cells(2,1)の様な書き方に変える
配列、Dictionary,Collectionの使い方を覚える
ユーザーフォームを作れるようになる
(クラスの使い方を覚える)
こんな流れで順々にやれることを増やしていくといいよ
Functionの使い方を覚える(Byval,ByRef)
Range(”A2”)みたいな書き方から、Worksheet.Cells(2,1)の様な書き方に変える
配列、Dictionary,Collectionの使い方を覚える
ユーザーフォームを作れるようになる
(クラスの使い方を覚える)
こんな流れで順々にやれることを増やしていくといいよ
525デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/14(土) 12:35:39.31ID:WZYuRp6L0526デフォルトの名無しさん (ワッチョイ 498e-JtI+)
2021/08/14(土) 16:05:31.07ID:9rufdIX60 ID:olTKpvXL0
いつものあいつ
いつものあいつ
527デフォルトの名無しさん (ブーイモ MM62-GUjw)
2021/08/14(土) 16:13:08.42ID:FeW4uPBDM いつものあいつって言いたいだけの例の人
528デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/14(土) 16:13:36.00ID:WZYuRp6L0 いつものあいつに粘着してるやつ
529デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/14(土) 16:16:12.93ID:p2FjIi+P0 Rubyの人だっけ
530デフォルトの名無しさん (ワントンキン MM92-4yzW)
2021/08/14(土) 19:17:04.70ID:QQrfTJ+jM またも引っ掛かる間抜けな人達
531デフォルトの名無しさん (ワッチョイ 9901-pBez)
2021/08/14(土) 23:40:30.92ID:0AEpqYcN0 VBAはビジネスソフト板でやれ。
ム板でVBAの話する奴は全員荒らし。
ム板でVBAの話する奴は全員荒らし。
532デフォルトの名無しさん (ワッチョイ 42ad-NTPF)
2021/08/15(日) 01:41:34.07ID:Ab4oMS/u0 ListBoxAに複数行の内容を表示し、その行数をラベルに表示させている。
RemoveItemで行を削除した後、ラベルの表示内容を更新したい。
といった場合に、
RemoveItemの後でラベルの数字を1マイナスする、という手動処理ではなくて、
ListBoxAの内容が変更されたことをトリガーとして行数を再計算する、という自動処理にしたいんですが、
どのイベントプロシージャを使えばいいですか?
RemoveItemで行を削除した後、ラベルの表示内容を更新したい。
といった場合に、
RemoveItemの後でラベルの数字を1マイナスする、という手動処理ではなくて、
ListBoxAの内容が変更されたことをトリガーとして行数を再計算する、という自動処理にしたいんですが、
どのイベントプロシージャを使えばいいですか?
533デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/15(日) 09:02:47.73ID:Vp1mNkx00 またでたー
534デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/15(日) 10:47:47.12ID:FNsj8xWN0 >>532
無いっぽい
>RemoveItemの後でラベルの数字を1マイナスする
例えばcommandbuttonでRemoveItemしてるなら、
以下のようにするしか
Private Sub CommandButton1_Click()
'removeitemの処理がここに
Debug.Print ListBox1.ListCount
End Sub
無いっぽい
>RemoveItemの後でラベルの数字を1マイナスする
例えばcommandbuttonでRemoveItemしてるなら、
以下のようにするしか
Private Sub CommandButton1_Click()
'removeitemの処理がここに
Debug.Print ListBox1.ListCount
End Sub
535デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/15(日) 10:48:11.05ID:FNsj8xWN0 RemoveItemにevent追加するほうが綺麗だけどねぇ
vbaじゃ無理だねぇ
vbaじゃ無理だねぇ
536デフォルトの名無しさん (ワッチョイ c242-rA07)
2021/08/15(日) 11:06:26.14ID:47f+T2dk0 仮にイベントがあったとしてもremoveitemのあとに再計算の処理を書いたほうがスッキリしていいと思うが
537デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 11:24:14.03ID:U+FsjVqC0 >>536
RemoveItemしてるのが1箇所ならいいかも知れんが複数あったら面倒だろ
RemoveItemしてるのが1箇所ならいいかも知れんが複数あったら面倒だろ
538デフォルトの名無しさん (アウアウウー Saa5-oCel)
2021/08/15(日) 11:44:01.29ID:PuWX92Pra 一ヶ所にまとめればいいだけだし
539デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 11:48:45.57ID:U+FsjVqC0 イベントに書ければ1箇所にまとめる手間もないし1年後に改修した時に1箇所にまとめたのを忘れてRemoveItem単体で使ってバグることもないし…
まあVBAでは夢物語なんだけどね
まあVBAでは夢物語なんだけどね
540532 (ワッチョイ 42ad-NTPF)
2021/08/15(日) 12:12:51.35ID:Ab4oMS/u0 ありがとうございます。
その後、試してみたこととして、
ListBoxのChangeイベントに再計算の処理を書いておき、
RemoveItemの後で.listIndex=0の処理を入れたところ、
一発目のRemoveItem後は、期待どおりChangeイベントが発生してくれましたが、
二発目以降は、.listIndexが0→0と変化なしのせいか、イベントは発生しませんでした。
行数を再計算したい、と書きましたが、
単純に全体の行数であれば、RemoveItemの後で.listCountをラベルに代入するだけの一行で済みますが、
実際は、リストの1カラム目(ID欄として使用)が100未満の場合と100以上の場合で分けてカウントしており、
FOR文で、ID100未満までの間でヒットするIDがあるたびに対象のカウントをインクリメントし、
2つ目のFOR文で、ID100以上について同様の処理を行う、
という風にしようとした時に、これが冗長に思えました。
もし、使えるイベントがあれば、
そのイベントプロシージャの中で、
それぞれのカウンタラベルのうち対象となる方のみマイナスした値に変更する、
という処理を入れるだけでOKになりそう、と考えました。
結論としては、
イベントに頼らず、
指定したIDの行を.RemoveItemする処理のところで、
そのIDが100未満か100以上かで分岐させて、
その分岐の中で、対象となるカウンタをマイナスする、
という処理にしました。
その後、試してみたこととして、
ListBoxのChangeイベントに再計算の処理を書いておき、
RemoveItemの後で.listIndex=0の処理を入れたところ、
一発目のRemoveItem後は、期待どおりChangeイベントが発生してくれましたが、
二発目以降は、.listIndexが0→0と変化なしのせいか、イベントは発生しませんでした。
行数を再計算したい、と書きましたが、
単純に全体の行数であれば、RemoveItemの後で.listCountをラベルに代入するだけの一行で済みますが、
実際は、リストの1カラム目(ID欄として使用)が100未満の場合と100以上の場合で分けてカウントしており、
FOR文で、ID100未満までの間でヒットするIDがあるたびに対象のカウントをインクリメントし、
2つ目のFOR文で、ID100以上について同様の処理を行う、
という風にしようとした時に、これが冗長に思えました。
もし、使えるイベントがあれば、
そのイベントプロシージャの中で、
それぞれのカウンタラベルのうち対象となる方のみマイナスした値に変更する、
という処理を入れるだけでOKになりそう、と考えました。
結論としては、
イベントに頼らず、
指定したIDの行を.RemoveItemする処理のところで、
そのIDが100未満か100以上かで分岐させて、
その分岐の中で、対象となるカウンタをマイナスする、
という処理にしました。
541デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/15(日) 14:06:03.01ID:Q1u7LxQ80542デフォルトの名無しさん (アウアウウー Saa5-++7W)
2021/08/15(日) 14:16:20.36ID:044XE2rOa そういうの知っても意味ないから放置でいいのでは
質問されたら答えるだけで無理に関係ない話題でレスを進める必要はないのでは
質問されたら答えるだけで無理に関係ない話題でレスを進める必要はないのでは
543デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/15(日) 14:35:34.20ID:FNsj8xWN0544デフォルトの名無しさん (ワッチョイ 6e68-NTPF)
2021/08/15(日) 15:32:30.69ID:mzIErmSO0545デフォルトの名無しさん (ワッチョイ c242-rA07)
2021/08/15(日) 22:31:41.12ID:47f+T2dk0546デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/15(日) 22:49:28.66ID:FNsj8xWN0547デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 23:03:09.52ID:U+FsjVqC0 >>545
> そもそもまとめたことを忘れるようなやつはイベントの存在も忘れてる
だから忘れてもいいって話
> つーかVBAじゃなくても標準でそんなイベント発生する言語はないと思うぞ
C#とかなら標準にはなくても派生して作れるってこと
> そもそもまとめたことを忘れるようなやつはイベントの存在も忘れてる
だから忘れてもいいって話
> つーかVBAじゃなくても標準でそんなイベント発生する言語はないと思うぞ
C#とかなら標準にはなくても派生して作れるってこと
548デフォルトの名無しさん (ワッチョイ 2e10-YTvb)
2021/08/15(日) 23:33:36.15ID:HzefVCWR0 フォームのチェンジイベントをイチイチ回避させないといけないのマジで面倒くさい
フラグ作ってif からのexit subとかマジで面倒くさい
フラグ作ってif からのexit subとかマジで面倒くさい
549デフォルトの名無しさん (ワッチョイ 6eda-NTPF)
2021/08/16(月) 05:14:26.01ID:XafigDS10 EXCEL以外の言語なら簡単にできるとかいう人っていつもの人ですか?
550デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/16(月) 20:23:33.18ID:pkWTpyDW0 少なくとも一番ムキになってるアレがそうなんでしょうね
551デフォルトの名無しさん (ワッチョイ c2da-oCel)
2021/08/17(火) 02:14:38.57ID:XfCCEtxD0 昔はこのスレまともだったのに、変な荒らしが現れてからおかしくなっただけ
552デフォルトの名無しさん (アウアウウー Saa5-oCel)
2021/08/17(火) 14:49:45.30ID:n4WKWZLba 昔?あ、俺生まれてないや
553デフォルトの名無しさん (ブーイモ MMb6-aBRF)
2021/08/17(火) 15:23:12.86ID:2f/o9RsTM >>552
いつ生まれたの?w
いつ生まれたの?w
554デフォルトの名無しさん (ブーイモ MM6d-usf7)
2021/08/17(火) 20:35:18.63ID:4IURpNomM555デフォルトの名無しさん (ワッチョイ e292-/m/d)
2021/08/19(木) 01:46:41.56ID:GJSA9V5J0 す、巣窟?
556デフォルトの名無しさん (ワッチョイ 468c-nLcX)
2021/08/19(木) 12:48:42.55ID:gPE31PeS0 そ う だ よ
557デフォルトの名無しさん (ワッチョイ ff63-RUy2)
2021/08/20(金) 00:11:44.24ID:YzPl1p2A0 Dim mysubfiles As Files
Dim mysubfile As File
For Each mysubfile In mysubfiles
中略
Next
このループ中で作成したファイルも
このループ内の処理を通したいのですが
どうしたらよいでしょうか。
具体的な状況は以下のとおりです。
・ループ内では拡張子xlsxのファイルを加工したい。
・しかしxlsmで保存されている場合もある。
・ループの最初にxlsmを開いてxlsxとして保存する処理を入れたものの
そのxlsxが加工されない
Dim mysubfile As File
For Each mysubfile In mysubfiles
中略
Next
このループ中で作成したファイルも
このループ内の処理を通したいのですが
どうしたらよいでしょうか。
具体的な状況は以下のとおりです。
・ループ内では拡張子xlsxのファイルを加工したい。
・しかしxlsmで保存されている場合もある。
・ループの最初にxlsmを開いてxlsxとして保存する処理を入れたものの
そのxlsxが加工されない
558デフォルトの名無しさん (ワッチョイ 1f5f-N+XL)
2021/08/20(金) 00:21:12.76ID:EM+6hHZh0 >>557
xlsmがあればフラグをTrueにして、最後までループしたらもう一度その処理をするとか?
それなら「元々xlsmだったもの のみ」の処理はできないが、中略の中身によってはOKでしょう
「元々xlsmだったもの のみ」処理するのであれば、xlsm処理時点でDictionaryにファイル名をAddして、ループ終わった後に再度ループさせ、Dictionaryにあるファイルのみ処理する
になるかな
読みづらくはなると思うけど仕方ない
xlsmがあればフラグをTrueにして、最後までループしたらもう一度その処理をするとか?
それなら「元々xlsmだったもの のみ」の処理はできないが、中略の中身によってはOKでしょう
「元々xlsmだったもの のみ」処理するのであれば、xlsm処理時点でDictionaryにファイル名をAddして、ループ終わった後に再度ループさせ、Dictionaryにあるファイルのみ処理する
になるかな
読みづらくはなると思うけど仕方ない
559デフォルトの名無しさん (ワッチョイ 9f01-AxjU)
2021/08/20(金) 03:30:46.68ID:fkNLvzJY0 >>557
ループ中で新たに作成したxlsxファイルも、
元々xlsxだっとファイルと同じ処理を行いたいって事でいいでしょうか。
編集するファイル用の変数(例えばTargetFile)を新たに用意して、
中略部分は mysubfile ではなく TargetFile を処理するというコードにしておきます。
冒頭にその TargetFile を何に割り当てるかを決定するコードを書きます。
・mysubfileがxlsxである場合は、mysubfileの参照をTargetFileへそのまま代入
・そうでない場合はxlsxとして保存しなおして、保存したxlsxを取得してTargetFileへ代入
条件によって反復子から取得した値がそのまま扱えない場合はこういう書き方をするのが一般的かと思います。
中略部分を関数にして引数に渡す値を変えるといった表現方法でもいいでしょう。
ループ中で新たに作成したxlsxファイルも、
元々xlsxだっとファイルと同じ処理を行いたいって事でいいでしょうか。
編集するファイル用の変数(例えばTargetFile)を新たに用意して、
中略部分は mysubfile ではなく TargetFile を処理するというコードにしておきます。
冒頭にその TargetFile を何に割り当てるかを決定するコードを書きます。
・mysubfileがxlsxである場合は、mysubfileの参照をTargetFileへそのまま代入
・そうでない場合はxlsxとして保存しなおして、保存したxlsxを取得してTargetFileへ代入
条件によって反復子から取得した値がそのまま扱えない場合はこういう書き方をするのが一般的かと思います。
中略部分を関数にして引数に渡す値を変えるといった表現方法でもいいでしょう。
560デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/20(金) 06:44:10.09ID:O2iQQ7aA0561デフォルトの名無しさん (ワッチョイ 9f2f-RUy2)
2021/08/20(金) 07:35:23.32ID:+liSrGPN0 自分で配列なりコレクションなり用意してDoでループ回せよ
562デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/20(金) 07:43:25.84ID:6SYvdNEC0 ループの中で処理するんじゃなく、サブルーチンにして呼び出す方がいいな
563デフォルトの名無しさん (ワッチョイ 9f2f-RUy2)
2021/08/20(金) 14:52:28.33ID:+liSrGPN0 そのサブルーチンを呼び出すのにどうやってループさせるの?
もしくは
そのサブルーチンのなかでどうやって列挙させるの?
って話だと思うんだが
もしくは
そのサブルーチンのなかでどうやって列挙させるの?
って話だと思うんだが
564デフォルトの名無しさん (ブーイモ MM4f-7Mq8)
2021/08/20(金) 14:57:01.36ID:01P72Y3qM xlsmだったらxlsxにしてそのファイルを引数にして渡す
xlsxだったらそのまま渡す
それだけのこと
xlsxだったらそのまま渡す
それだけのこと
565デフォルトの名無しさん (ワッチョイ 9f01-AxjU)
2021/08/20(金) 15:39:01.41ID:fkNLvzJY0 前々から思ってたんだけど、抽象的に質問書く人多いね
あと謎用語作ったり(この前も「打ちあがる」とか何とか)
テンプレ作った方がいいんじゃないか?
あと謎用語作ったり(この前も「打ちあがる」とか何とか)
テンプレ作った方がいいんじゃないか?
566デフォルトの名無しさん (アウアウウー Sa63-FcIJ)
2021/08/20(金) 15:48:44.06ID:XV1yMITLa 別に適当に質問してくるなら適当に返せばいいでしょ
それなりの回答を求めるならそれなりに質問するのが常識では
それなりの回答を求めるならそれなりに質問するのが常識では
567デフォルトの名無しさん (ワッチョイ 1f5f-H9yk)
2021/08/20(金) 18:27:44.18ID:pH4dbDdN0568デフォルトの名無しさん (ワッチョイ ffb0-+zBM)
2021/08/20(金) 19:51:09.61ID:qaJDzmMG0 質問スレなのに質問しにくい雰囲気を作っていくぅ〜
569デフォルトの名無しさん (ワッチョイ ffda-FcIJ)
2021/08/20(金) 22:28:26.67ID:tsSDUWXI0 問題ない
570デフォルトの名無しさん (ワッチョイ 7f92-Awm0)
2021/08/21(土) 00:15:10.89ID:fb/04mNm0571デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/21(土) 03:34:48.94ID:ezVaAvb40 >>557
んだよコレクションにFileオブジェクト積み立ててFor Eachの最中にコレクションにFile追加したら追加した分だけループしねーのかと思っちまったじゃねーか。
普通に回るわ。
コレクションに積み立てたFileがxlsmのときはxlsxでセーブしてコレクションの中身の参照をそっちに置き換えて開いて加工してセーブすりゃいいだけじゃねーか。
ループし切らないと思ったから、ファイル情報を抱えるエンティティクラス作って、そんなかに加工済みフラグとか設けて、ファイル追加したときにループ処理再帰してもう加工済みだったら処理飛ばすとかしなきゃいけないとか思ったから実は結構骨のある質問じゃないのか?とか思ってバカ見たわ。
いや、単に俺の知識不足だな。すまんかったな。もう寝るわ。
んだよコレクションにFileオブジェクト積み立ててFor Eachの最中にコレクションにFile追加したら追加した分だけループしねーのかと思っちまったじゃねーか。
普通に回るわ。
コレクションに積み立てたFileがxlsmのときはxlsxでセーブしてコレクションの中身の参照をそっちに置き換えて開いて加工してセーブすりゃいいだけじゃねーか。
ループし切らないと思ったから、ファイル情報を抱えるエンティティクラス作って、そんなかに加工済みフラグとか設けて、ファイル追加したときにループ処理再帰してもう加工済みだったら処理飛ばすとかしなきゃいけないとか思ったから実は結構骨のある質問じゃないのか?とか思ってバカ見たわ。
いや、単に俺の知識不足だな。すまんかったな。もう寝るわ。
572デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/21(土) 11:04:58.97ID:zxg8KyYK0 For Eachの順序はファイル名か何かだから、
既にforeachの処理が過ぎたファイル名だと実行されないぞ
既にforeachの処理が過ぎたファイル名だと実行されないぞ
573デフォルトの名無しさん (ワッチョイ 7fad-FcIJ)
2021/08/21(土) 17:09:47.50ID:aaIGTne20574デフォルトの名無しさん (JP 0Hc3-FcIJ)
2021/08/21(土) 20:04:21.12ID:NaiRsfJYH 最初のループは一覧を2セット作るだけにして次のループで処理したら?
575デフォルトの名無しさん (ワッチョイ ff02-VfHF)
2021/08/21(土) 20:35:14.71ID:7GAoG1Iq0 Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しでView types参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、Cのソースコードを吐き出せるのでC言語でリモートワークされ
ている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しでView types参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、Cのソースコードを吐き出せるのでC言語でリモートワークされ
ている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
576デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/21(土) 23:03:58.45ID:ezVaAvb40 >>572
んなこたぁない。
実際やってみてコレクションに追加されたもんは頭から順にファイル名に関係なくFor Eachで拾えるのは確認済み。
ソース展開してもいいけどどっかにソース張り付けて展開出来るサイトない?
そこそこ大きくなったのと5chに貼り付けると連続した半角スペースが1個になるから見づらいもんね。
んなこたぁない。
実際やってみてコレクションに追加されたもんは頭から順にファイル名に関係なくFor Eachで拾えるのは確認済み。
ソース展開してもいいけどどっかにソース張り付けて展開出来るサイトない?
そこそこ大きくなったのと5chに貼り付けると連続した半角スペースが1個になるから見づらいもんね。
577デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/21(土) 23:17:33.77ID:ezVaAvb40 >>575
ぶっちゃけ始めるのにいい言語スレの誤爆だろうが、Rustは新し過ぎて本とかも殆ど出てないから初心者には向かないよ。
て言うかVisual Studio Codeで開発環境構築しようとしたけど動かん。
手順教えてくれるとありがたいんだがのう。
ま、スレ違いになるからそっちのスレ行くか。
ぶっちゃけ始めるのにいい言語スレの誤爆だろうが、Rustは新し過ぎて本とかも殆ど出てないから初心者には向かないよ。
て言うかVisual Studio Codeで開発環境構築しようとしたけど動かん。
手順教えてくれるとありがたいんだがのう。
ま、スレ違いになるからそっちのスレ行くか。
578デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/22(日) 00:09:36.86ID:3/Qg+sLj0 >>576
foreachは順序の保証は無いから途中で追加したり削除するとどうなるか分からない。
言語によってはエラー出るぐらいの変な挙動
試しにworksheetsでやってみたけど、途中で追加したものは処理されない
Sub foo()
flg = True
For Each x In Worksheets
'1周目の時だけworksheetを追加する
If flg Then
Worksheets.Add
flg = False
End If
Debug.Print x.Name
Next
End Sub
foreachは順序の保証は無いから途中で追加したり削除するとどうなるか分からない。
言語によってはエラー出るぐらいの変な挙動
試しにworksheetsでやってみたけど、途中で追加したものは処理されない
Sub foo()
flg = True
For Each x In Worksheets
'1周目の時だけworksheetを追加する
If flg Then
Worksheets.Add
flg = False
End If
Debug.Print x.Name
Next
End Sub
579デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/22(日) 00:11:00.32ID:3/Qg+sLj0 >>578の続き
追加したものに対してもforeach内の処理かましたければ、
サブルーチンとして外に出して個別に実行した方が良い
※arrayに入れてから別のfoeachループにしたほうが良いかもしれない
Sub foo()
flg = True
For Each x In Worksheets
'各シートの処理
Call print_worksheets_name(x)
If flg Then
Set 新シート = Worksheets.Add
'新シートの処理
Call print_worksheets_name(新シート)
flg = False
End If
Next
End Sub
'メインの処理はここ
Function print_worksheets_name(x)
Debug.Print x.Name
End Function
追加したものに対してもforeach内の処理かましたければ、
サブルーチンとして外に出して個別に実行した方が良い
※arrayに入れてから別のfoeachループにしたほうが良いかもしれない
Sub foo()
flg = True
For Each x In Worksheets
'各シートの処理
Call print_worksheets_name(x)
If flg Then
Set 新シート = Worksheets.Add
'新シートの処理
Call print_worksheets_name(新シート)
flg = False
End If
Next
End Sub
'メインの処理はここ
Function print_worksheets_name(x)
Debug.Print x.Name
End Function
580デフォルトの名無しさん (アウアウウー Sa63-FcIJ)
2021/08/22(日) 00:39:14.99ID:vfl1uW7oa ググったらサンプルがあったから試してみた。コードはこれ
Sub Sample_Files()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim myFiles As Object
Dim myFile As Object
Dim strFiles As String
Set myFiles = FSO.GetFolder("D:\test\").Files
strFiles = "ファイル数:" & myFiles.Count & vbCrLf
For Each myFile In myFiles
strFiles = strFiles & myFile.Name & vbCrLf '★
Next
MsgBox strFiles
End Sub
対象のフォルダに「新しいテキスト ドキュメント2.txt」「新しいテキスト ドキュメント4.txt」の2ファイルを格納
★にブレークポイントを設定して止まった時点で
対象のフォルダに「新しいテキスト ドキュメント1.txt」「新しいテキスト ドキュメント3.txt」の2ファイルを格納
この結果はMsgBoxは最初に格納されていたファイルのみが表示された
これを踏まえたらファイルを新たに保存しても保存したファイルはループ中は参照されないのでは
Sub Sample_Files()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim myFiles As Object
Dim myFile As Object
Dim strFiles As String
Set myFiles = FSO.GetFolder("D:\test\").Files
strFiles = "ファイル数:" & myFiles.Count & vbCrLf
For Each myFile In myFiles
strFiles = strFiles & myFile.Name & vbCrLf '★
Next
MsgBox strFiles
End Sub
対象のフォルダに「新しいテキスト ドキュメント2.txt」「新しいテキスト ドキュメント4.txt」の2ファイルを格納
★にブレークポイントを設定して止まった時点で
対象のフォルダに「新しいテキスト ドキュメント1.txt」「新しいテキスト ドキュメント3.txt」の2ファイルを格納
この結果はMsgBoxは最初に格納されていたファイルのみが表示された
これを踏まえたらファイルを新たに保存しても保存したファイルはループ中は参照されないのでは
581デフォルトの名無しさん (ワッチョイ 7f4f-AI8d)
2021/08/22(日) 04:22:11.55ID:HSx9B6Zm0 >>578-580
なるほど言いたいことは分かった。
確かにFor Eachの取得順が保証されないのは正しい。
だがその話には続きがある。
For Each の取得順序が保証されていないのは、
取得元のObjectに依存するから。
https://thom.hateblo.jp/entry/2018/08/11/194900
そしてくだすれでソース展開用サイト教えてもらったから
ソース貼っといた。
https://pastebin.com/RBXU7SyT
Test3.xlsmとTest4.xlsx作って先にコレクションに登録。
ループ途中でTest1.xlsmとTest2.xlsxを作成して追加しているが、
挙動がおかしいようであれば言ってくれ。
なるほど言いたいことは分かった。
確かにFor Eachの取得順が保証されないのは正しい。
だがその話には続きがある。
For Each の取得順序が保証されていないのは、
取得元のObjectに依存するから。
https://thom.hateblo.jp/entry/2018/08/11/194900
そしてくだすれでソース展開用サイト教えてもらったから
ソース貼っといた。
https://pastebin.com/RBXU7SyT
Test3.xlsmとTest4.xlsx作って先にコレクションに登録。
ループ途中でTest1.xlsmとTest2.xlsxを作成して追加しているが、
挙動がおかしいようであれば言ってくれ。
582デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/22(日) 08:13:33.74ID:bz4GO5A/0 FileSystemObjectのFilesの話だけどCollectionで問題ないから俺の勝ちー
ってか?w
ってか?w
583デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/22(日) 08:38:21.01ID:HSx9B6Zm0584デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/22(日) 09:40:51.11ID:bz4GO5A/0585デフォルトの名無しさん (ワッチョイ ffda-FcIJ)
2021/08/22(日) 09:49:45.02ID:AgYnuzAe0 いつもの質問に相手した時点で負け
586デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/22(日) 10:04:31.73ID:HSx9B6Zm0 >>584
別にコレクションじゃなくても配列だろうがディクショナリだろうが何でもいいよ。Filesの中身を最初に積み立て直してループしてやればいいこと。
詰め込み対象のループの動作保証が欲しいなら>571で言った通りエンティティクラス用意して何かに詰め込んで一度加工したかどうかのフラグ持って、追加したらエンティティクラスも追加しといて、ファイル追加したらループ再帰して加工したフラグが立っていれば処理飛ばせばいいこと。
まぁ何故Filesを持ち回ることにそんなに執着しているのか知らんけど、そうでなければこの方法で実現出来るのは確か。
そんなにFiles持ち回ることに拘るなら人の作ったもんに文句ばかり言ってないでそれで実現出来るコード晒せばいい。
別にコレクションじゃなくても配列だろうがディクショナリだろうが何でもいいよ。Filesの中身を最初に積み立て直してループしてやればいいこと。
詰め込み対象のループの動作保証が欲しいなら>571で言った通りエンティティクラス用意して何かに詰め込んで一度加工したかどうかのフラグ持って、追加したらエンティティクラスも追加しといて、ファイル追加したらループ再帰して加工したフラグが立っていれば処理飛ばせばいいこと。
まぁ何故Filesを持ち回ることにそんなに執着しているのか知らんけど、そうでなければこの方法で実現出来るのは確か。
そんなにFiles持ち回ることに拘るなら人の作ったもんに文句ばかり言ってないでそれで実現出来るコード晒せばいい。
587デフォルトの名無しさん (アウアウウー Sa63-FcIJ)
2021/08/22(日) 10:46:11.18ID:vfl1uW7oa こうすればいいよって回答してあげるのはかまわないけど
そもそもなぜそれがダメなのかを指摘してあげたるのも大事では
当初の質問であれば
>・ループの最初にxlsmを開いてxlsxとして保存する処理を入れたものの
> そのxlsxが加工されない
「ループの中で新たなファイルを作ってもFilesではそのファイルが取得できないようだ」という問題点を教えて
そのうえで中略のコードをSub化してループで取得したファイルもループの中で作成したファイルも
そのSubを呼び出すようにするとか解決策を提示したほうがいいんじゃないかねえ
そもそもなぜそれがダメなのかを指摘してあげたるのも大事では
当初の質問であれば
>・ループの最初にxlsmを開いてxlsxとして保存する処理を入れたものの
> そのxlsxが加工されない
「ループの中で新たなファイルを作ってもFilesではそのファイルが取得できないようだ」という問題点を教えて
そのうえで中略のコードをSub化してループで取得したファイルもループの中で作成したファイルも
そのSubを呼び出すようにするとか解決策を提示したほうがいいんじゃないかねえ
588デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/22(日) 11:08:18.32ID:bz4GO5A/0589デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/22(日) 11:11:26.73ID:HSx9B6Zm0590デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/22(日) 11:39:16.64ID:bz4GO5A/0 はじめから頓珍漢だっていう指摘だから誰かさんにまともな理解力あれば既に終わってた話なんだけどねw
591デフォルトの名無しさん (ササクッテロ Sp73-cvdf)
2021/08/22(日) 11:51:49.66ID:w9I0Mw1ep >>589
バカはほっといてFilesのループだけで何とかする方法ない?
バカはほっといてFilesのループだけで何とかする方法ない?
592デフォルトの名無しさん (ブーイモ MM0f-FcIJ)
2021/08/22(日) 12:02:21.45ID:tt5sChhUM 別の配列を用意して、追加と処理を別々にすればいいだけ
593デフォルトの名無しさん (アウアウウー Sa63-FcIJ)
2021/08/22(日) 12:08:29.70ID:vfl1uW7oa >>591
中略で何をしてるか不明だからそこの話題の解決は難しいのでは
ループでどんなファイルをFilesに含めているかわからないがループのファイルには拡張子xlsmとxlsxが対象になっているなら
・xlsm→加工してxlsxに変換して保存(元のxlsmは何もしない)
・xlsx→加工してxlsxのまま保存
・それ以外→何もしない
これだけの話にも見えるよね
中略で何をしてるか不明だからそこの話題の解決は難しいのでは
ループでどんなファイルをFilesに含めているかわからないがループのファイルには拡張子xlsmとxlsxが対象になっているなら
・xlsm→加工してxlsxに変換して保存(元のxlsmは何もしない)
・xlsx→加工してxlsxのまま保存
・それ以外→何もしない
これだけの話にも見えるよね
594デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/22(日) 12:35:51.87ID:bz4GO5A/0 >>591
> バカはほっといてFilesのループだけで何とかする方法ない?
.xlsm ⇒ .xlsx にした時点でFilesの内容がどうなるかはわからんから一旦Filesの内容を配列なりコレクションなりに取り込んでおくしかないと思う
> バカはほっといてFilesのループだけで何とかする方法ない?
.xlsm ⇒ .xlsx にした時点でFilesの内容がどうなるかはわからんから一旦Filesの内容を配列なりコレクションなりに取り込んでおくしかないと思う
595デフォルトの名無しさん (ワッチョイ ff68-FcIJ)
2021/08/22(日) 12:37:07.40ID:fq28dqqO0 リスト構造みたいなのは?
596デフォルトの名無しさん (JP 0Hc3-FcIJ)
2021/08/22(日) 13:02:31.83ID:HhgXzLK4H 配列だろうがリストだろうがそこは自由
とにかくループ中で母集団をいじらなければいいだけの話だから
とにかくループ中で母集団をいじらなければいいだけの話だから
597デフォルトの名無しさん (ワッチョイ ff02-VfHF)
2021/08/22(日) 13:03:46.65ID:0Cz6ueFz0 Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
598デフォルトの名無しさん (ワッチョイ 7f01-9KvQ)
2021/08/22(日) 13:08:21.86ID:bz4GO5A/0 >>595
リストでもいいけどVBAで簡単に扱えるものある?
リストでもいいけどVBAで簡単に扱えるものある?
599デフォルトの名無しさん (ワッチョイ 7f4f-AI8d)
2021/08/22(日) 19:40:10.48ID:HSx9B6Zm0 >>591
遅くなってすまない。
そうだな、バカはほっといて
Filesのループだけで何とかする方法か。
Filesのループだけで何とかすることは出来ないことはないが、
綺麗に一重のループという方法は今すぐには思いつかないな。
だが、フォルダから直でやり取りしたいからというのであれば、
方法としては>>571で書いた方法とほぼ一緒だが、
Filesのループであればエンティティクラスは使えない。
ではどうするか、といったところで、ループで加工を終了したxlsxのパス名、
または加工する際に使ったxlsmのパス名を何等かの形で保持して、
後はファイルを作った際にループを再帰して加工が終わった
ファイルの処理は飛ばしてしまえばいい。
そうすれファイルを追加した後のファイルの順序やどこからループするか、
どこまでループするかをあまり気にする必要はない。
ただ、その分ループの回数は増える。が、もし現在の
Collectionの仕様が変わったとしても使うことが出来るだろう。
前回作ったソースを少し弄ってそんな感じにしたので、
展開しておこう。
https://pastebin.com/9QVrJDjF
遅くなってすまない。
そうだな、バカはほっといて
Filesのループだけで何とかする方法か。
Filesのループだけで何とかすることは出来ないことはないが、
綺麗に一重のループという方法は今すぐには思いつかないな。
だが、フォルダから直でやり取りしたいからというのであれば、
方法としては>>571で書いた方法とほぼ一緒だが、
Filesのループであればエンティティクラスは使えない。
ではどうするか、といったところで、ループで加工を終了したxlsxのパス名、
または加工する際に使ったxlsmのパス名を何等かの形で保持して、
後はファイルを作った際にループを再帰して加工が終わった
ファイルの処理は飛ばしてしまえばいい。
そうすれファイルを追加した後のファイルの順序やどこからループするか、
どこまでループするかをあまり気にする必要はない。
ただ、その分ループの回数は増える。が、もし現在の
Collectionの仕様が変わったとしても使うことが出来るだろう。
前回作ったソースを少し弄ってそんな感じにしたので、
展開しておこう。
https://pastebin.com/9QVrJDjF
600デフォルトの名無しさん (ワッチョイ 9f2f-YC+D)
2021/08/22(日) 19:51:55.58ID:QHUWYA/B0 いちおうVBAにCollectionってあるけどな
.Net FrameworkのArrayListとかQueueとかつかえばいいんじゃね
.Net FrameworkのArrayListとかQueueとかつかえばいいんじゃね
601デフォルトの名無しさん (ワッチョイ 9f2f-YC+D)
2021/08/22(日) 20:00:01.46ID:QHUWYA/B0 まずFilesってのが何なのかはっきりしとけ
まあFileSystemObjectのやつだろうけど
あれは、位置指定で取り出したり出来なかったりする、かなり特殊な列挙だった気がする
つか、追加処理でディレクトリ舐めて、そのあともう1回ディレクトリ舐めて処理すればいいだけじゃないのか?
再帰とか意味不明なんだが
たんに2回ループ回すことを再帰と言ってる?
まあFileSystemObjectのやつだろうけど
あれは、位置指定で取り出したり出来なかったりする、かなり特殊な列挙だった気がする
つか、追加処理でディレクトリ舐めて、そのあともう1回ディレクトリ舐めて処理すればいいだけじゃないのか?
再帰とか意味不明なんだが
たんに2回ループ回すことを再帰と言ってる?
602デフォルトの名無しさん (ワッチョイ 9f2f-YC+D)
2021/08/22(日) 20:18:32.39ID:QHUWYA/B0603デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/22(日) 20:44:15.61ID:3/Qg+sLj0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- (´・ω・`)おはよ
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- くそしてかがやけ
- 🪬本日のコンマ占い🧿
