[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 17:47 / Filesize : 275 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part76



1 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 02:23:41.78 ID:2t63WK/jM.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること

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

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

741 名前:デフォルトの名無しさん [2022/06/27(月) 20:18:45.52 ID:UdQiWAN30.net]
731です。

sub ソルバー()

dim 振込1 as variant
振込1=worksheets("ソルバー").range("n2:n8")

solverok setcell:= worksheets("ソルバー").range("i3"),
maxminval:=3,
valueof:=振込1,
bychange:=worksheets("ソルバー").range("e2:e40"),
enginedesc:="grg nonliner"


solveradd celreff:=worksheets("ソルバー").range("e2:e40"),relation:=4

solversolve userfinish=true

742 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:22:23.17 ID:jYXkLZ/o0.net]
で、何がうまくいかないの?

743 名前:デフォルトの名無しさん [2022/06/27(月) 20:26:50.30 ID:UdQiWAN30.net]
>>733

ソルバーを実行しても、目的セルが0のままで指定値にと一致する金額の組み合わせが見つかりません。

どの請求分の入金なのか、突合したいです。

744 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:35:36.69 ID:9IVJ+eiIa.net]
>>734
ソルバーわからんから確認させてください
振込1って変数は配列に入れた値を指定したいものですか?それともセル自体を指定したいものですか?
前者であればそれでいいですが、後者なら変数はRange型にする上で代入時に
Set 振込1 =〇〇
としないといけませんが…

745 名前:デフォルトの名無しさん [2022/06/27(月) 20:37:19.75 ID:UdQiWAN30.net]
連投すみません。

変数宣言して、for〜next構文でe列を("e"&i+40)や、n列も("n"&i+40)みたいにしたいんです。

d列には請求金額、e列は空白、目的セルにはsumproduct関数が入ってます。

指定値セルはn2:n8で、それぞれ違う金額が入力されてます。入金額とn2:n8内の金額が一致する組み合わせの請求金額をVBAを使って、求めたいです。

746 名前:デフォルトの名無しさん [2022/06/27(月) 20:39:44.13 ID:UdQiWAN30.net]
>>735

ありがとうございます。
ヘルプを確認したら、指定値はバリアント型で書けとあったので、なんとなくvariantにしていました。

747 名前:デフォルトの名無しさん [2022/06/27(月) 20:45:55.27 ID:qw9z/asOd.net]
>>737
マルチ死ね

748 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:58:49.57 ID:jYXkLZ/o0.net]
とりあえず、rangeで回すんじゃなくてcellsで回したら?
n列はcells(i,14)
e列はcells(i,5)で

749 名前:デフォルトの名無しさん [2022/06/27(月) 21:09:33.28 ID:UdQiWAN30.net]
>>739
sub または functionが定義されませんエラーが出ます…



750 名前:デフォルトの名無しさん [2022/06/27(月) 21:10:43.06 ID:UdQiWAN30.net]
>>739

cellsも以前試したんですが、上手いこといきませんでした

751 名前:デフォルトの名無しさん [2022/06/27(月) 23:45:06.09 ID:8dHt2RWvM.net]
こんな奴が作るプログラムで金勘定とか笑えるわ
己を知らないって馬鹿の特徴なんだよな

752 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 00:04:39.14 ID:41/DPGawd.net]
ソルバーってカタカナで書くの余計分からないよ
素直にSolverで良いだろうに

上の困ってるのは一旦マクロの記録で動作確認お薦め

753 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 00:07:49.75 ID:bUNh/khy0.net]
>>742
2行目はよく解る www

754 名前:デフォルトの名無しさん [2022/06/28(火) 05:51:37.94 ID:kKObdKOQ0.net]
オレオレ詐欺の手伝い?

755 名前:デフォルトの名無しさん [2022/06/28(火) 07:36:23.45 ID:XbsSoqMza.net]
>>736
なんで会計ソフト使わないの?

756 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 07:54:25.17 ID:2SIMEAUf0.net]
Excelは万能ではないから会計ソフトでやるべき事柄

757 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 08:48:25.11 ID:8yuWSL180.net]
この世で最高のコードを見かけた

With Range("F27:F56")
.Value = .Value
End With

758 名前:デフォルトの名無しさん [2022/06/28(火) 09:10:04.94 ID:3ZxXgE6I0.net]
>>748
それの意味解る?
ちょっと前に同じ様なコード載せてた人いたけど
複数範囲は一度に設定できないって嘆いていたよ

759 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 09:10:36.27 ID:a//tJk240.net]
>>732
solverを使うときのパラメーターの設定の方法が間違ってんじゃない。多分値渡しではなくsetを使うと思うよ。
まずマクロの記録もう使ってなんでもいいからsolverで問題を解いてみて、solverを使うときの正しいVBA の書き方を確認しなさい。



760 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 09:52:29.46 ID:qOxYqvDuM.net]
>>698
Ifなんたらかんたらを使わないで
B2になんか文字が入っていたらC2を
B3になんか文字が入っていたらC3を…

をスマートに書くならどう書きます?

https://i.imgur.com/5VtTNti.jpg

761 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 11:02:29.10 ID:1UWi0IGcd.net]
>>751
こんな質問してマウントとりたいんだろうか・・・
こんな質問するならそのスマートな回答も書いておけばいいのに

762 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 11:15:10.25 ID:cqDrGvOU0.net]
VBA使わなくてもセルに関数書いときゃいいんじゃね

763 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 12:14:32.96 ID:S7aFTH1NM.net]
>>751
お前Access VBAスレにExcelの質問書き込みするんじゃねーよ
迷惑だ

764 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:20:05.57 ID:mlWlUbMB0.net]
すみません、神様達、教えてください

エクセルVBAでは
関数内関数はどうやって作れますか?
また複数の関数を目的別に整理する方法として
パッケージやモジュール単位にまとめたり
マップに収納したりはできるのでしょうか?

765 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:52:33.73 ID:fjXXNeRNM.net]
>>755
できる

vbeエディタウインドウを凝視しているとやり方が判るはず

766 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:59:52.62 ID:8yuWSL180.net]
>>756
具体的にやり方を教えてあげなよ

767 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 18:51:45.14 ID:gpLDnVSMr.net]
>>755
関数内関数ってこれのこと?
https://www.sejuku.net/blog/28904

768 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:15:28.84 ID:+0CREnk7H.net]
>>756
ちょっと凝視してみます

>>758
疑似コードですけど例えば、
Function out()
 Function in1()
 End Function
Dim a=Function in2()
End Function
out=Array(in1,a)
End Function

みたいな感じで
関数outの中に関数in1を宣言したり
変数に関数を代入して、returnしたりしたいのです

769 名前:デフォルトの名無しさん [2022/06/28(火) 19:22:25.73 ID:EFCYXnQm0.net]
ローカル関数もサポートされてないし
関数をオブジェクトとして扱えないので変数への代入も無理です



770 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:22:27.90 ID:+0CREnk7H.net]
>>756
標準モジュール単位で関数をまとめればいいってことでしょうか?

771 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:29:24.91 ID:+0CREnk7H.net]
>>760
ありがとうございます
なるほどです
すっきりしました、神様ありがとう

モジュールを使いながら関数を整理するか
関数用にファイルを作って管理するかします

772 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:14:33.61 ID:a//tJk240.net]
>>761
正解です

773 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:14:53.99 ID:a//tJk240.net]
それからモジュールには適当に名前を付けることができますので

774 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:17:06.37 ID:8yuWSL180.net]
関数内関数ってのは、関数の中で定義する関数のこと
phpだと

sub foo1
if a = b then

 sub foo2
  foo2=1
 end sub

else if

 sub foo2
  foo2=2
 end sub

end sub

みたいなことができる
あんまやらんけど

775 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:22:34.06 ID:a//tJk240.net]
>>759
関数内関数をそこで書いているようなやり方ではできないけれど、どうしてもやりたければ vbe オブジェクトを定義してそこにコードを書き込むという疑似なやり方はできる。あるいはコードを作成するプロシージャを作成してそのプロシージャを呼び出して引数を渡してコード作った後、そのコードを呼び出すみたいなことはできるのかもしれない。
コードを実行中に別のコードを作成するという経験がないんでエラーが出るかどうかは分からない。

ただ面倒だし見通しも悪くなるんで外側で関数を定義した方が簡単だと思うんだけれどなぜ関数の中で関数を定義したいのでしょうか。

776 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:32:39.05 ID:+0CREnk7H.net]
>>766
ありがとうございます
vbaがエクセル前提の言語と考えると
私が考えているような関数は使うべきでもないのだなって思いました

神様たちのアドバイスに感謝です
ありがとうございました

777 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:42:12.06 ID:+0CREnk7H.net]
>>765
ありがとうございます

778 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:50:26.07 ID:+0CREnk7H.net]
>>766
なぜ関数の中で関数を定義したいのか

すべての関数を同列に記載すると見通しが悪い気がして
例えば数式に関するものなら、calcurationでまとめ
出力に関するものなら、printでまとめ
保存に関するものなら、saveでまとめ
っていうように、目的別、機能別、階層別に関数をまとめると
後で見直したときに分かりやすいかなって

さらにfacadeみたいに間口を作れば
拡張も修正もしやすいかなって思いまして

779 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:56:44.33 ID:8yuWSL180.net]
>>755
>関数内関数はどうやって作れますか?
関数内関数はない
classは貧弱だけど、ある
ただvbaそもそもの概念として、エクセルのスクリプトであるという点がある
あんまり大きなclass作りたいなら、別言語の方が良いと思う
エクセルvbaはゲームとかもキツイ(メインloopが超貧弱でvbaを起動しっぱなしだとよく落ちる)

>また複数の関数を目的別に整理する方法として
>パッケージやモジュール単位にまとめたり
>マップに収納したりはできるのでしょうか?
標準モジュール単位でまとめられるけど・・・
エクセルvbaの標準モジュールは「どのシートにも共通する処理」のような意味合いで用いられる

よくも悪くも、vbaはエクセルのためにあるので
あまり壮大な事をするのには向いていない



780 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:59:53.87 ID:+0CREnk7H.net]
>>770
class調べてみます!
モジュールとclassが使えれば
見やすいコードかけるかも!

そんな壮大なプログラムを作るつもりなないのですけど
一処理、一関数にしたいとなると
ある程度の単位で処理をまとめていきたいなって

ご丁寧なご解説に感謝です
ありがとう、神様!

781 名前:デフォルトの名無しさん (ワッチョイ ff02-tQxS) [2022/06/28(火) 21:13:22 ID:i28fB/zi0.net]
>>750
アドバイスありがとうございます!

入金消し込みの自動化をせよと上司からの指示で、初心者なりになんとかやってるんですが、会計ソフトの会社でもお手上げな仕組みの売掛金管理のようです。

setとcellsでなんとか、試行錯誤してやってみようと思います!

またわからなくなったら、質問させて頂きます。

782 名前:デフォルトの名無しさん (アウアウウー Sad3-/ybv) mailto:sage [2022/06/28(火) 21:26:40 ID:WQvDBuzoa.net]
十年近くぶりに触るし上級者だったとかじゃないけど
VBAで
今開いてるPhotoshopの選択しているレイヤーを基準にExcelの指定セル範囲(例:A1からA20)を1セルごとにレイヤーを1枚作りセルの中身を文字ツール(テキスト)でレイヤーを作成。
例:ExcelのA1に「あいう」、A2に「えお」、A3に「123」が入力されていたとし、指定範囲選択(A1〜A3)を、開いてるPhotoshopにレイヤー追加しながらテキストレイヤー「あいう」、「えお」、「123」を作る(計3枚)。その際、Excelに近い見た目の形で…この場合、横に少し間隔を空けて「あいう」「えお」「123」が並ぶように作成する。(文字の大きさや色は直前に使ったpxサイズ、色とする)
って出来ますか?

783 名前:デフォルトの名無しさん (ワッチョイ 3f4f-60CD) [2022/06/28(火) 21:45:50 ID:3ZxXgE6I0.net]
いや、関数内関数?
まぁ似たようなものはあるよ。
GOSUBってのが。

ただ、これも負の遺産のひとつだから
あまり使うことはお勧め出来ないけど。

784 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 21:52:47.26 ID:/U22FX/80.net]
gosubは全然違うでしょ

785 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 22:11:43.10 ID:GB8Zx7jKM.net]
関数内関数いわゆる高階関数について、VBA関数には高階関数のための機能は無いけどワークシート関数のLAMBDAが該当する

786 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 22:18:47.50 ID:8yuWSL180.net]
確かに!その発想は正解だが・・・だが・・・

787 名前:デフォルトの名無しさん [2022/06/28(火) 23:36:42.40 ID:EFCYXnQm0.net]
>>773
COM経由で操作できるっぽい。こんなのが引っかかった
https://minatoya.work/419/

788 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 07:26:36.96 ID:f9LCV9hba.net]
>>776
お前名前に騙されやすいタイプだろw
LAMBDA は単なる関数定義で VBA スレ的にはユーザー定義関数と変わらんぞ
ユーザー定義関数はマクロブックにしか入れられないから LAMBDA が作られた

789 名前:デフォルトの名無しさん (ワッチョイ 7fda-eqyh) mailto:sage [2022/06/29(水) 08:15:54 ID:SMNkprrA0.net]
他のプログラミングと同じだと思われているのかな LAMBDA 関数は



790 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:48:09.67 ID:sZpGYWcf0.net]
ユーザー定義関数では(コーディング時に)関数を自作することはできるが、(実行中に)関数内で関数を定義したり
(実行中の)関数の引数に関数そのものを与えるたりすることはできない
そもそもユーザー定義関数とLAMBDA関数はまったく別のもの

Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 ~Excel数式が本格的なプログラミング言語に
https://forest.watch.impress.co.jp/docs/news/1387035.html

791 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:51:20.38 ID:GuRBEGnka.net]
>>778
ありがとう
そこのページ起点に頑張ってみる

792 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:55:02.95 ID:8rr9zLPCM.net]
関数型パラダイムをサポートしている言語か、最低でもC言語などで関数ポインタを使ったことがある人でないと高階関数の概念は理解が難しい

793 名前:デフォルトの名無しさん [2022/06/29(水) 10:34:47.30 ID:7c8LgVFIa.net]
privateで良くないか

794 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 12:27:16.10 ID:f9LCV9hba.net]
>>781
高階関数の話ならそこに書いてあるMAPとかSCANがLAMBDAを受けられる様になったことを言うべき
あと関数内関数と高階関数は全く別物だし実行中に定義できるか

795 名前:かどうかも関係がない []
[ここ壊れてます]

796 名前:デフォルトの名無しさん [2022/06/29(水) 13:48:20.01 ID:Es0nfTu8a.net]
記者がアホなんやで

797 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:05:01.02 ID:SMNkprrA0.net]
ネットの記事って怪しかったり間違っているのが多々あるよね

798 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:22:16.06 ID:3IrndTU40.net]
ネットの記事だけがそうだと思ってる?

799 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:30:17.44 ID:par7A0IW0.net]
はい次の方



800 名前:デフォルトの名無しさん [2022/06/29(水) 14:59:30.13 ID:0RCF24VI0.net]
.Netでもひとつの壁と言われているラムダ式が
VBAどころかEXCELで使えるようになるのか。
胸熱だが脱落者も増えるだろうな。

801 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 15:07:56.16 ID:Ajq9RLSRM.net]
一般的な意味での高階関数は数学的な抽象概念としての話ではあるけど、プログラム言語としては第一級関数の実装のことを言う場合が多い
(C言語の関数ポインタのように擬似的に実現する方法もある)

高階関数
https://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E9%96%A2%E6%95%B0

第一級関数
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0

802 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 15:09:05.56 ID:JurptZkT0.net]
脱落者なんて増えないさ
世の中にエクセルの全機能使いこなしてる奴なんていないからな
理解できない機能は使われないだけだよ

803 名前:デフォルトの名無しさん [2022/06/29(水) 17:35:51.56 ID:0RCF24VI0.net]
>>791
読んでてよく分からんかったけど
要はアセンブラでいうところのアドレスの間接参照とか
間接修飾とか言われているやつで
.NetではDelegate、VBAではCallByNameによるコールバックって理解でいい?

804 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 17:43:32.68 ID:8wQcCZ0gd.net]
VBAでできない事をダラダラと話さず別スレいけばいいのに

805 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 17:56:17.53 ID:vfJ3sAv3M.net]
Excelで例えるなら関数を特定のオブジェクトのメソッドとしてではなく、それ自体を実体のあるオブジェクト(あるいはコレクション)と見做すようなもの
利用側の関数内で関数オブジェクト(のようなもの)を参照する手段として関数そのものをラムダとして扱う

806 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 18:54:09.74 ID:zPLPBKg6H.net]
エクセルもVBAも詳しくないんですけど
VBAは非同期処理でコールバック関数を使わないんですか?

807 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:06:05.99 ID:tW8kR1cqM.net]
イベント駆動型ですから

808 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:13:20.08 ID:i0xj9Opya.net]
>>794
高階関数っていうのを最近覚えたんだろうな
関数内関数に1mmも関係ないのにしつこく語ってる
他の言語スレだと瞬殺されるレベルだからこんなスレで管巻くしか無いんだろうw

809 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:15:29.13 ID:uu2mw40gD.net]
>>796
使おうと思えば使える



810 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:47:59.24 ID:zPLPBKg6H.net]
>>799
コールバック関数を使えるのなら
引数に関数参照できるということです?
なら変数に関数を代入できそう

811 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:55:21.60 ID:zPLPBKg6H.net]
>>797
非同期処理はイベント処理に依存してるってことでしょうか?
コメントありがとうございました
VBA初心者なのでいろいろ勉強していきます

812 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:13:03.71 ID:sZpGYWcf0.net]
>>800
特定のオブジェクトやクラスに所属する関数やAPIなどシステムで定義された関数(メソッド)であればコールバック関数で参照することはできる
グローバルのユーザー定義の関数はラムダ式で記述するなどの手段を使わない限りは無理

813 名前:デフォルトの名無しさん (ワッチョイ 4f2f-BYhf) mailto:sage [2022/06/29(水) 22:45:43 ID:JurptZkT0.net]
コールバック「関数」とはなにを指してるんだろうかねぇ

コールバックを実現する手段はイベント以外に
CallByNameとかApplication.Runとかでまあ実現できなくはない

814 名前:デフォルトの名無しさん (JP 0Ha3-tCSL) mailto:sage [2022/06/29(水) 22:55:30 ID:zPLPBKg6H.net]
コールバック関数は何を指しているのか
なぜラムダ式が存在するのか
即時関数とラムダはどこから分岐していったのか
関数プログラミングは本当に有益なのか
本当に変数は悪者で動的型付けは悪なのか
それらはもはや哲学なのかもしれません

815 名前:デフォルトの名無しさん (ワッチョイ ff68-TsA2) mailto:sage [2022/06/29(水) 23:01:15 ID:L0Xzxy470.net]
慣れれば別にどっちでも・・・って感じになるけどな

816 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 23:50:10.86 ID:HQQahVZ60.net]
>>783

自作の階乗作らせりゃ一発だろ。Cの関数へのポインタとか、可読性0に近い。組んでて楽しいけど、1ヶ月後の自分はこれを理解できるだろうかという疑問が湧くw

817 名前:デフォルトの名無しさん [2022/06/30(木) 05:47:49.15 ID:P7B/AZjs0.net]
まぁでもあんまりVBAでコールバック使う機会ないかな
呼び出しや生成元のモジュール側の関数を
呼び出された側や生成された側から呼び出すときに
密結合になるのを避けるためくらいにしか使ってない

818 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:16:43.81 ID:1TbRNwlJH.net]
>>807
エクセルVBAでDBのデータやファイルデータを読み込むとき
非同期にならないように処理するってことなんでしょうか?
例えばフラグを立ててdo-while、breakで処理待ちしてから次の処理に進むとか?
webのように処理と表示のタイムラグを気にするようなことがないのかもしれませんね

819 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:32:44.20 ID:wDIpT9iQ0.net]
それすんごい資源食わないか?



820 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:37:53.64 ID:1TbRNwlJH.net]
>>809
vbaはコールバックを使わないということらしいのですが
コールバックを使わずに非同期処理する方法があるのでしょうか?

821 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:47:00.24 ID:NKnrqd7g0.net]
ない(もしくはめちゃ面倒だ)から諦めろ
非同期やりたいなら他の言語使え

822 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:59:35.80 ID:wyi1xEzY0.net]
VBA走らせている間に漫画でも読んどけよ

823 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 08:04:39.54 ID:1TbRNwlJH.net]
え、昨夜のレスでは非同期使えるって言われたので
多言語と同じようにpromise的な処理があるのかと思いました
非同期めちゃくちゃ面倒ってことは
エクセル処理で非同期を使うという発想が間違っているのですね

なんかいろいろ勘違いしていたみたいでした
神様、先輩方、すみませんでした

824 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 08:14:56.75 ID:CdZVH0NpM.net]
vbsとか使って外部プロセスに追い出すのが簡単だな

で、何を並列処理したいのかな?

825 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 09:30:19.73 ID:TLf+rFOod.net]
JavaScriptの経験があるなら今更VBAなんかに手を出さなくてもOfficeスクリプト使えばいいでしょ
デスクトップでもサポートされたからもうVBAいらないよ

826 名前:デフォルトの名無しさん [2022/06/30(木) 10:09:22.67 ID:P7B/AZjs0.net]
>>815
え、マジ?
もう企業や教育者向けのじゃなくても開発出来るの?

827 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 10:36:29.60 ID:3IHNP7gZd.net]
ブック1開いてマクロ実行
待ってる間にブック2開いて手作業
ブック2保存して閉じたら、そのタイミングでブック1のマクロが停止
これって仕様?

828 名前:デフォルトの名無しさん (アウアウウー Sad3-sbT5) [2022/06/30(木) 11:24:18 ID:l3rHcZB/a.net]
排他処理なにそれおいしいの?

ファイル保存したらマクロが止まるのは仕様

829 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 15:49:46.55 ID:RZ5lqdEjd.net]
VBAいじっている間にいつの間にかボタン表面が白くなって
userformの背景色や、userformで使われているボタン表面のも同じ白色に変色
まったく新しくファイルを作っても同じ現象が起きる
オフィスをインストールし直しても同じ

例外的にいつもの正常なボタンの表面色で表示されるケースがある
https://i.imgur.com/t5RFNKa.png
この現象が起きる前に作ったファイルのコピーを作る。このコピーを開く。
このとき、セキュリティ警告が出てる間はなぜか正常なボタン表面色
コンテンツ~のボタンを押した瞬間にボタンが白くなる
Workbook_Openとかはそもそもない

今のおかしな状態が黒線の左側で、右側がセキュリティ警告が出ている状態

VBEでUserForm自体・ボタン・テキストボックス、これらの背景色BackColorの値は
&H8000000F&
これって正常な値ですよね?
つまり内部的には正常な値なのに表示はいずれも真っ白

windowsやモニタの設定の影響であればセキュリティ警告が出てようが無関係に白色化しているはず


何か原因わかる方いますか?
そもそもVBAが関係しているかどうかも分からないのですが。
ちなみに他のエクセルとは無関係のソフトウェアの色は特に変化はないように思います



830 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 15:56:36.78 ID:RZ5lqdEjd.net]
>>819ですが、文章ちょっとおかしなところがありました
ユーザーフォーム上のボタンも、ワークシートに直接おくボタンも同じように白色になっているということです
そもそもボタンだけじゃなくて&H8000000F&で色が表示されている部分は
どれもおかしくなっているような状態です

831 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 16:27:38.04 ID:CdZVH0NpM.net]
たいして白くない件

832 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 16:32:48.48 ID:RZ5lqdEjd.net]
>>821
真っ白です

→は例外的に正常に表示されるケース
←が現状
https://i.imgur.com/3Hy4Ot8.png

833 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 17:41:14.60 ID:1+oYjPxt0.net]
>>810
非同期と並列処理の区別をつけろよ
非同期=コールバックでもないしな

834 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 17:47:02.54 ID:1+oYjPxt0.net]
>>819
テーマが適用されてるだけな気がする

835 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 18:26:58.93 ID:m1ZMAziu0.net]
システムカラーの値
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/system-color-constants

836 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 21:06:49.66 ID:1TbRNwlJH.net]
>>823
そうですね
コールバックがマルチスレッドって言ってるわけでも
プロセスを分けるって言ってるわけでもないです
全ての非同期処理は並列処理でもないですし
コールバックは処理なので、非同期でもないですし
VBAは初めてなのでいろいろ勉強していきます
なんか変なこと言っていたらごめんなさい

837 名前:デフォルトの名無しさん (スッップ Sd5f-gXkX) mailto:sage [2022/06/30(木) 22:28:19 ID:SUgmTyTCd.net]
自分はやりたい事の手段の一つにExcelVBAがあるだけでExcelVBAでどこまでできるかってのは気にしてない
別の言語を選択すれば可能ならExcelVBAにこだわることもないしね
勉強するあたりのレベルならExcelVBAだけでなくほかの言語も勉強したほうがいいかもね

838 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 23:19:39.52 ID:1TbRNwlJH.net]
エクセルの参加人数はすごいと思います
参加人数の多いエクセルをプラットフォームとしてデータ処理できるVBAは
他の言語には見られない参加者人数の価値があります(これを英語で何と言ったか忘れましたが)
ハードもプラットフォームも、潜在的な参加者の数で価値を測るという考え方が正しければ
エクセルVBAは他の言語をはるかに凌ぐ学習価値があると思うのです

他の言語を学習しつつもVBAも使えるというのは
とても素晴らしいことなのだと、VBA初学者としても感じています
先生方、これからもご指導いただける機会がありましたらよろしくです

839 名前:デフォルトの名無しさん [2022/07/01(金) 00:44:30.82 ID:iVoRsqHDd.net]
>>828
お前は二度と来なくていいよ



840 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 00:49:35.03 ID:T8FFb7IX0.net]
>>828
ちょっと何いってるか分からない

841 名前:デフォルトの名無しさん [2022/07/01(金) 01:26:43.65 ID:miA2ycF9M.net]
魔界に転生するとしたら、リザレクの次くらいに持っていたいスキルですもんね。
転生するまでに習得したいと思います。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef