!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:KskL7bEXd558デフォルトの名無しさん (ワッチョイ 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+sLj0604デフォルトの名無しさん (ワッチョイ 7f2c-YC+D)
2021/08/22(日) 21:49:43.11ID:aqCRpfAk0 配列をループ中に、要素を追加・削除するのは、
すべての言語で、バグるから禁止
要素の追加・削除で、要素がずれるから、どうなるか分からない
すべての言語で、バグるから禁止
要素の追加・削除で、要素がずれるから、どうなるか分からない
605デフォルトの名無しさん (ワッチョイ 1f5f-N+XL)
2021/08/22(日) 21:56:43.26ID:Dh2ra7Yx0 最終手段はGoToでループ抜けることになるけど、xlsmの時の処理とxlsxの時の処理を分岐させればいいだけよね
606デフォルトの名無しさん (アウアウウー Sa63-jkpn)
2021/08/22(日) 22:19:55.50ID:xquIY43qa 好きなように作れよ
607デフォルトの名無しさん (ワッチョイ 7f42-WoPw)
2021/08/22(日) 22:29:56.81ID:fZZZNArf0608604 (ワッチョイ 7f2c-YC+D)
2021/08/22(日) 23:15:55.98ID:aqCRpfAk0 完全に、処理を分けて作る
まず、拡張子だけを変える。
これで処理対象のファイルを確定させる
その後、処理対象のファイルだけを処理すればよい。
この手順なら、処理中に処理対象のファイル数が増減することはない
とにかく、バグらないような手順を作ることが大事
まず、拡張子だけを変える。
これで処理対象のファイルを確定させる
その後、処理対象のファイルだけを処理すればよい。
この手順なら、処理中に処理対象のファイル数が増減することはない
とにかく、バグらないような手順を作ることが大事
609デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/23(月) 08:26:55.69ID:LGNn5NAE0610デフォルトの名無しさん (ワッチョイ 1f5f-N+XL)
2021/08/23(月) 08:53:51.78ID:cXrkxB5+0611デフォルトの名無しさん (ワッチョイ ff68-FcIJ)
2021/08/23(月) 10:54:22.12ID:FgZeCk1s0 goto finaly
612デフォルトの名無しさん (ワッチョイ ff30-/WcA)
2021/08/23(月) 23:10:58.58ID:JXgHy/i50 ちょっとスレ違いで恐縮ですが知ってる方がいたら教えてください 3D CAD(catia v5、ソリッドワークス、NXなど)のVBAについて話題にしてるスレとかご存知の方いれば教えてください
613デフォルトの名無しさん (ワッチョイ 7f42-WoPw)
2021/08/24(火) 01:04:28.30ID:O47VPk1P0 そんなものはない
614デフォルトの名無しさん (ブーイモ MMc3-zYVw)
2021/08/24(火) 01:15:14.20ID:F5g8S0IPM >>612
これらの3D CADにVBAが載ってるの?
これらの3D CADにVBAが載ってるの?
615デフォルトの名無しさん (JP 0Hc3-FcIJ)
2021/08/24(火) 04:11:27.55ID:daNQErAcH エスパーするとマクロのことだろ
616デフォルトの名無しさん (ワッチョイ 9f8e-ma+S)
2021/08/24(火) 05:20:46.31ID:TjlSba9p0 >>612
馬鹿は死ね
馬鹿は死ね
617デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/24(火) 08:13:34.81ID:klPKE9MS0 >>612
そんなスレは存在しないし立てたとしても誰もレスしないだろう。
質問があるならこっちで聞けばひょっとすると誰か答えてくれるかもな
スレ立てるまでもない質問はここで 157匹目
https://mevius.5ch.net/test/read.cgi/tech/1624024239/
そんなスレは存在しないし立てたとしても誰もレスしないだろう。
質問があるならこっちで聞けばひょっとすると誰か答えてくれるかもな
スレ立てるまでもない質問はここで 157匹目
https://mevius.5ch.net/test/read.cgi/tech/1624024239/
618デフォルトの名無しさん (ブーイモ MMc3-zYVw)
2021/08/24(火) 08:30:12.55ID:g24P+U87M 調べたら、SolidWorksはAPIでVBAとかC(++)とかから呼び出せるみたいだから、Excel VBA で呼ぶ範囲ならこのスレでも良いんじゃない?
CAD ソフト側の特有の動作は答えられる人少ないか居ないだろうけど
CAD ソフト側の特有の動作は答えられる人少ないか居ないだろうけど
619デフォルトの名無しさん (ワッチョイ ffda-jkpn)
2021/08/24(火) 09:09:24.64ID:4r51bMHN0 >>618
そんな質問してないだろ
そんな質問してないだろ
620デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/24(火) 12:58:36.89ID:v4BujoFfM SolidWorksのAPI呼んでなにかしようとするような奴がこんfなスレでVBAの質問なんてしないだろw
621デフォルトの名無しさん (ブーイモ MMc3-ACe6)
2021/08/24(火) 13:07:40.15ID:Ggt7zoavM でも、3D CADのVBAって言っちゃうレベルの質問者さんだし...
622デフォルトの名無しさん (エムゾネ FF9f-tXhk)
2021/08/24(火) 15:14:02.93ID:WZMj7UxVF 馬鹿には無理
623デフォルトの名無しさん (オイコラミネオ MM23-PhLg)
2021/08/24(火) 18:59:28.08ID:Tulkbq4hM 最悪go toもありだろ
624デフォルトの名無しさん (ブーイモ MMc3-7Mq8)
2021/08/24(火) 20:36:36.02ID:DkRvLF/FM おまいら、質問者を馬鹿にするのやめろよ
625デフォルトの名無しさん (ブーイモ MM9f-UIif)
2021/08/24(火) 21:11:06.89ID:4FqDVhnYM 「貴方には無理」と言ってあげるのも親切
馬鹿が諦めず無理してるおかげで周囲は迷惑してる
馬鹿が諦めず無理してるおかげで周囲は迷惑してる
626デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/24(火) 21:17:10.14ID:PotHtuTn0 dllやAPIアリならもうなんでもvbaのような
627デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/24(火) 21:17:46.98ID:PotHtuTn0 知ってたら答えるけど、あまりにも知ってる人が少なすぎる
メーカーに聞いた方が早いとおもう
メーカーに聞いた方が早いとおもう
628デフォルトの名無しさん (アウアウウー Sa63-LN3e)
2021/08/24(火) 22:24:25.02ID:EnLftN4na >>612
話題になってませんが聞くならこっちのスレかな?
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
https://itest.5ch.net/mevius/test/read.cgi/tech/1432173164
0001 デフォルトの名無しさん 2015/05/21 10:52:44
VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
話題になってませんが聞くならこっちのスレかな?
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
https://itest.5ch.net/mevius/test/read.cgi/tech/1432173164
0001 デフォルトの名無しさん 2015/05/21 10:52:44
VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
629デフォルトの名無しさん (ワッチョイ 7fad-FcIJ)
2021/08/25(水) 00:31:39.65ID:1unhm7rk0 VBEの入力支援で「WorksheetFunction」って邪魔ですよね。
「Worksheets」が第一候補に表示されればいいのに。
「Worksheets」が第一候補に表示されればいいのに。
630デフォルトの名無しさん (アウアウウー Sa63-wElo)
2021/08/25(水) 01:55:37.60ID:7J8MKXIfa 辞書順だから仕方がないよね
631デフォルトの名無しさん (ブーイモ MM0f-kXDh)
2021/08/25(水) 07:25:33.24ID:SRu++D3OM 客先のお偉いさんにコンテンツの有効化を行わずにマクロを動かせと無茶振りされるなどした
決してデジタル署名云々をなどという話ではなく
既存のツールのコードをいじらずにWorkbook_Openのイベントを回避せよとのご指示を頂いたのだ
どうしたものか
決してデジタル署名云々をなどという話ではなく
既存のツールのコードをいじらずにWorkbook_Openのイベントを回避せよとのご指示を頂いたのだ
どうしたものか
632デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/25(水) 07:35:04.03ID:ltkpDR880 >>631
他のブックにマクロを書いて
・イベント停止
・ブックopen
Sub foo()
Application.EnableEvents = False
Workbooks.Open (ThisWorkbook.Path & "\book1.xlsm")
Application.EnableEvents = True
End Sub
他のブックにマクロを書いて
・イベント停止
・ブックopen
Sub foo()
Application.EnableEvents = False
Workbooks.Open (ThisWorkbook.Path & "\book1.xlsm")
Application.EnableEvents = True
End Sub
633デフォルトの名無しさん (ブーイモ MM0f-kXDh)
2021/08/25(水) 07:39:39.81ID:SRu++D3OM あ、他ファイルの新規作成も一切ダメだそうです
634デフォルトの名無しさん (ワッチョイ ff68-RJcP)
2021/08/25(水) 07:50:37.91ID:ltkpDR880 じゃあ基本イベント停止にしてマクロを動かしたい時だけ
Application.EnableEvents = True
だな
Application.EnableEvents = True
だな
635デフォルトの名無しさん (ブーイモ MM0f-kXDh)
2021/08/25(水) 08:12:30.95ID:SRu++D3OM 既存のツールのコードに手を加えるのはNG、別のファイルを作成するのもNG、数百人ほどいる作業員に配布してるツールだからExcelの設定を変更して回るのも現実的ではない
要するに作業工数を発生させずにイレギュラーに対応出来る特殊仕様用のツールを作れって事みたい
要するに作業工数を発生させずにイレギュラーに対応出来る特殊仕様用のツールを作れって事みたい
636デフォルトの名無しさん (ワッチョイ 7f42-WoPw)
2021/08/25(水) 09:17:10.78ID:ZSU75DCm0 なんか話おかしくね
そのイレギュラー対応ツールはどこに置いて誰が使うことを想定してんだ
そのイレギュラー対応ツールはどこに置いて誰が使うことを想定してんだ
637デフォルトの名無しさん (テテンテンテン MM4f-9KvQ)
2021/08/25(水) 09:40:43.13ID:ZqZAJ3QxM 相手すんなよ偉いさんに振られた内容を盛って語ってるだけだろ
そもそも客先からの要請なら普通にできないって断ればいいだけだし
そもそも客先からの要請なら普通にできないって断ればいいだけだし
638デフォルトの名無しさん (ブーイモ MM0f-kXDh)
2021/08/25(水) 10:21:16.42ID:SRu++D3OM いやまぁ断るんだけどさ
逐一ネットワークドライブのファイルとやりとりをしてるツールを社外の下請け業者にも使わせたいんだと
まぁ当然ながら下請け業者からはネットワークドライブに接続はできないんよ
だから何するにしてもエラーが出ます。なんならファイルを開いた時にコンテンツの有効化を押した時点でエラー出ますよ。って言ったらコンテンツの有効化を押さずにマクロを動かせば良いじゃないかって怒鳴りながら台パンされたのが昨日の話
逐一ネットワークドライブのファイルとやりとりをしてるツールを社外の下請け業者にも使わせたいんだと
まぁ当然ながら下請け業者からはネットワークドライブに接続はできないんよ
だから何するにしてもエラーが出ます。なんならファイルを開いた時にコンテンツの有効化を押した時点でエラー出ますよ。って言ったらコンテンツの有効化を押さずにマクロを動かせば良いじゃないかって怒鳴りながら台パンされたのが昨日の話
639デフォルトの名無しさん (ワッチョイ ff24-jkpn)
2021/08/25(水) 10:33:09.92ID:PF+Wtj1u0 それで金もらうんでしょ
640デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/25(水) 13:39:00.29ID:9wT7W/qy0 >>638
断るという方針を決めているなら解決だな
断るという方針を決めているなら解決だな
641デフォルトの名無しさん (ワッチョイ 1fcc-zH/y)
2021/08/25(水) 14:41:15.54ID:j973WKJq0 ユーザーフォームのコンボボックスでドロップボタンをおすと実行され、リストができるのですが、項目を選択しても反映されず空欄になってしまいます。
反映されるにはどうしたらいいでしょうか
Private Sub ComboBox3_DropButtonClick()
Dim LastDay As Long, MyYear As Long, MyMonth As Long, r As Long
With UserForm1
.ComboBox3.Clear
MyYear = Val(Replace(ComboBox1.Value, "年", ""))
MyMonth = Val(Replace(ComboBox2.Value, "月", ""))
'来月1日の1日前から今月の対象月の終了日を算出する
LastDay = Day(DateSerial(MyYear, MyMonth + 1, 0))
'リストボックス3に今日の日付リストを入れる
For r = 1 To LastDay
.ComboBox3.AddItem r & "日"
Next r
End With
End Sub
反映されるにはどうしたらいいでしょうか
Private Sub ComboBox3_DropButtonClick()
Dim LastDay As Long, MyYear As Long, MyMonth As Long, r As Long
With UserForm1
.ComboBox3.Clear
MyYear = Val(Replace(ComboBox1.Value, "年", ""))
MyMonth = Val(Replace(ComboBox2.Value, "月", ""))
'来月1日の1日前から今月の対象月の終了日を算出する
LastDay = Day(DateSerial(MyYear, MyMonth + 1, 0))
'リストボックス3に今日の日付リストを入れる
For r = 1 To LastDay
.ComboBox3.AddItem r & "日"
Next r
End With
End Sub
642デフォルトの名無しさん (ラクッペペ MM4f-U159)
2021/08/25(水) 14:45:50.68ID:vgh3MVy/M しらんけど
月の変更時にやるもんじゃね?
月の変更時にやるもんじゃね?
643デフォルトの名無しさん (ワッチョイ 7f4f-cvdf)
2021/08/25(水) 15:11:25.13ID:9wT7W/qy0 知らんけど変数の頭によくMyとかmyとか付ける人いるけど私の年とか私の月なの?
644デフォルトの名無しさん (ブーイモ MMe3-7Mq8)
2021/08/25(水) 15:32:21.08ID:KYWpPte7M mousedown でやるとか?
645デフォルトの名無しさん (ワッチョイ 7f42-WoPw)
2021/08/25(水) 15:50:44.79ID:ZSU75DCm0 ComboBox3のイベントでやることじゃないんじゃね
646デフォルトの名無しさん (アウアウウー Sa63-N+XL)
2021/08/25(水) 17:16:17.54ID:92U/3Tama DropButtonClickが発火していない可能性をまず見る
Combobox1とCombobox2の頭に「.」が付いていないことが原因か調べる
来月1日の1日前から今月の対象月の終了日…の日本語がよくわからんが、仮にMyMonthが12ならどうなるの?というのは気になる
そもそもDay関数で0日を指定しているんだから、どうやってもLastDayって0になるんでは?
最後のが原因かとは思うが、とりあえず気になったところを
Combobox1とCombobox2の頭に「.」が付いていないことが原因か調べる
来月1日の1日前から今月の対象月の終了日…の日本語がよくわからんが、仮にMyMonthが12ならどうなるの?というのは気になる
そもそもDay関数で0日を指定しているんだから、どうやってもLastDayって0になるんでは?
最後のが原因かとは思うが、とりあえず気になったところを
647デフォルトの名無しさん (アウアウウー Sa63-N+XL)
2021/08/25(水) 17:19:41.69ID:92U/3Tama648デフォルトの名無しさん (ワッチョイ ff56-nscA)
2021/08/25(水) 18:17:55.62ID:7AvRhiNY0649デフォルトの名無しさん (ワッチョイ 7f01-/QDj)
2021/08/26(木) 01:04:55.66ID:3Wwx5xcw0 >>641
まぁなんでもいいんだけどこういうテストしてみる
TextBox1を設置してプロパティのmultilineをtrueにしておく
んでコンボボックスのイベントの下の方にちょい付け加えてこうする
Private Sub ComboBox3_DropButtonClick()
Dim MyYear As Integer
Dim MyMonth As Integer
Dim LastDay As Integer
With UserForm1
.ComboBox3.Clear
MyYear = Val(Replace(ComboBox1.Value, "年", ""))
MyMonth = Val(Replace(ComboBox2.Value, "月", ""))
'来月1日の1日前から今月の対象月の終了日を算出する
LastDay = Day(DateSerial(MyYear, MyMonth + 1, 0))
'リストボックス3に今日の日付リストを入れる
Dim r As Integer
For r = 1 To LastDay
.ComboBox3.AddItem r & "日"
Next r
End With
TextBox1.Text = TextBox1.Text & Now & vbNewLine'←これ
End Sub
すると、combobox3でリスト開いた時だけじゃなくて、アイテム選択したときもイベントが発生していることがわかる
まぁなんでもいいんだけどこういうテストしてみる
TextBox1を設置してプロパティのmultilineをtrueにしておく
んでコンボボックスのイベントの下の方にちょい付け加えてこうする
Private Sub ComboBox3_DropButtonClick()
Dim MyYear As Integer
Dim MyMonth As Integer
Dim LastDay As Integer
With UserForm1
.ComboBox3.Clear
MyYear = Val(Replace(ComboBox1.Value, "年", ""))
MyMonth = Val(Replace(ComboBox2.Value, "月", ""))
'来月1日の1日前から今月の対象月の終了日を算出する
LastDay = Day(DateSerial(MyYear, MyMonth + 1, 0))
'リストボックス3に今日の日付リストを入れる
Dim r As Integer
For r = 1 To LastDay
.ComboBox3.AddItem r & "日"
Next r
End With
TextBox1.Text = TextBox1.Text & Now & vbNewLine'←これ
End Sub
すると、combobox3でリスト開いた時だけじゃなくて、アイテム選択したときもイベントが発生していることがわかる
650デフォルトの名無しさん (ワッチョイ 7f01-/QDj)
2021/08/26(木) 01:06:07.22ID:3Wwx5xcw0 そもそもcombobox3は結果表示のコントロールだから、ここに余計なもの置くべきじゃないわ
Option Explicit
Private Sub ComboBox1_Change()
If ComboBox1.Value <> "" And ComboBox2.Value <> "" Then
AddItemToComboBox3
End If
End Sub
Private Sub ComboBox2_Change()
If ComboBox1.Value <> "" And ComboBox2.Value <> "" Then
AddItemToComboBox3
End If
End Sub
Sub AddItemToComboBox3()
Dim MyYear As Integer
Dim MyMonth As Integer
Dim LastDay As Integer
With UserForm1
.ComboBox3.Clear
MyYear = Val(Replace(ComboBox1.Value, "年", ""))
MyMonth = Val(Replace(ComboBox2.Value, "月", ""))
'来月1日の1日前から今月の対象月の終了日を算出する
LastDay = Day(DateSerial(MyYear, MyMonth + 1, 0))
'リストボックス3に今日の日付リストを入れる
Dim r As Integer
For r = 1 To LastDay
.ComboBox3.AddItem r & "日"
Next r
End With
End Sub
Option Explicit
Private Sub ComboBox1_Change()
If ComboBox1.Value <> "" And ComboBox2.Value <> "" Then
AddItemToComboBox3
End If
End Sub
Private Sub ComboBox2_Change()
If ComboBox1.Value <> "" And ComboBox2.Value <> "" Then
AddItemToComboBox3
End If
End Sub
Sub AddItemToComboBox3()
Dim MyYear As Integer
Dim MyMonth As Integer
Dim LastDay As Integer
With UserForm1
.ComboBox3.Clear
MyYear = Val(Replace(ComboBox1.Value, "年", ""))
MyMonth = Val(Replace(ComboBox2.Value, "月", ""))
'来月1日の1日前から今月の対象月の終了日を算出する
LastDay = Day(DateSerial(MyYear, MyMonth + 1, 0))
'リストボックス3に今日の日付リストを入れる
Dim r As Integer
For r = 1 To LastDay
.ComboBox3.AddItem r & "日"
Next r
End With
End Sub
651デフォルトの名無しさん (ワッチョイ 7f01-/QDj)
2021/08/26(木) 01:06:23.79ID:3Wwx5xcw0 >>650続き
Private Sub ComboBox3_DropButtonClick()
'空にする
End Sub
Private Sub UserForm_Initialize()
ComboBox1.AddItem "2021年"
ComboBox2.AddItem "8月"
End Sub
Private Sub ComboBox3_DropButtonClick()
'空にする
End Sub
Private Sub UserForm_Initialize()
ComboBox1.AddItem "2021年"
ComboBox2.AddItem "8月"
End Sub
652デフォルトの名無しさん (ワッチョイ 7f01-/QDj)
2021/08/26(木) 01:08:23.20ID:3Wwx5xcw0 Option Explicitつけないのがはやりなんかね
宣言しねぇのがはやりなんかね
宣言しねぇのがはやりなんかね
653デフォルトの名無しさん (ラクッペペ MM4f-U159)
2021/08/26(木) 10:50:03.92ID:3EUdzNHVM 質問には必要だが
回答には不要
回答には不要
654デフォルトの名無しさん (ワッチョイ 7f28-T33Q)
2021/08/26(木) 14:29:16.05ID:/k4Lkr6/0 VBAのコードを書くウインドウが何かのタイミングで個別ウインドウ表示に切り替わり、バラバラになって元に戻らなくなってしまったのですが、
プロジェクト一覧などが左側にある初期状態に戻すにはどうすれば良いのでしょうか?
プロジェクト一覧などが左側にある初期状態に戻すにはどうすれば良いのでしょうか?
655デフォルトの名無しさん (JP 0Hc3-FcIJ)
2021/08/26(木) 14:59:17.57ID:2GwscEzmH >>654
KYCU\SOFTWARE\Microsoft\VBA\7.1\Common\Dockを削除
完全な初期状態だと使いにくいから、自分流にカスタマイズした後Common以下を保存しとくといい
KYCU\SOFTWARE\Microsoft\VBA\7.1\Common\Dockを削除
完全な初期状態だと使いにくいから、自分流にカスタマイズした後Common以下を保存しとくといい
656641 (ワッチョイ 1fcc-zH/y)
2021/08/26(木) 17:19:31.21ID:eaDIsBK00657デフォルトの名無しさん (ワッチョイ 7f28-T33Q)
2021/08/26(木) 19:24:12.66ID:/k4Lkr6/0 >>655
ありがとうございます!リセット機能が無いのですねぇ
ありがとうございます!リセット機能が無いのですねぇ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 気象庁・高市内閣「この後311級の地震の可能性があります。北海道〜関東の人は1週間は地震が来てもすぐ逃げられる格好をしてください」 [597533159]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- バリ島で万引きした高校生が叩かれているけどさ
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
