1 名前:デフォルトの名無しさん [2017/05/16(火) 08:24:45.78 ID:iIGA/64l0.net] !extend:checked:vvvvv:1000:512 スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1489557874/ ※関連スレ VBAなんでも質問スレ Part2 echo.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 echo.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 125 echo.2ch.net/test/read.cgi/bsoft/1481369538/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
755 名前:デフォルトの名無しさん (ワッチョイ db6d-RrxM) mailto:sage [2017/06/11(日) 21:56:59.58 ID:46pYjw9V0.net] >728 凄まじい個人情報でてる気もするけど、まぁいいか ・保存するかどうかを聞かれ 2010では聞かれない 揮発性関数とか混じってるのかもな バージョンを教えてほしい
756 名前:デフォルトの名無しさん (ワッチョイ 23aa-D9zB) mailto:sage [2017/06/11(日) 22:06:15.50 ID:P5Uv9Xu70.net] >>728 保存するかどうかなんて聞かれないな 数式もないようだ
757 名前:デフォルトの名無しさん (ワッチョイ 2311-W6lL) mailto:sage [2017/06/11(日) 22:10:07.67 ID:q49UmmFG0.net] >>727 > 代入時点で参照であるとデフォルトプロパティとは区別がついてるのが実態だろ。 だからそれはお前が勝手に言ってる話 そもそも区別がつくとか言ってるが勝手につく訳じゃなくて処理系が何らかの判断をしてるんだからそんな判断は「必要ない」って書く方が適切だろ > >>663 は省略されてると分からんのだよ。 話の流れ見てたらわかるし、わからん奴のためにアンカーまで書いてるだろ 何回ループするんだよ
758 名前:デフォルトの名無しさん (ワッチョイ 236f-xcYX) mailto:sage [2017/06/11(日) 22:46:10.07 ID:KFvNUsfN0.net] >ファイルサイズが半分くらい減ってしまうのも気になります 減った状態が正しいファイルサイズなんじゃないの。
759 名前:デフォルトの名無しさん (ワッチョイ 2311-OlK+) mailto:sage [2017/06/11(日) 23:33:20.89 ID:49bQJmPP0.net] なんか、何時何分何秒地球が何回回った時ですかあ?と同レベルのやりとりだな
760 名前:デフォルトの名無しさん (ワッチョイ 5b23-cb7n) mailto:sage [2017/06/12(月) 00:17:03.07 ID:y5ZQ52Yx0.net] >>731 やっぱり日本語の問題なんだ。 今をもってしても分かりにくい。 俺が「区別がつく」とか「区別がついてる」というのは「自動的に区別がついてしまっている」ということだ。 「区別がつく」自体に"自動的に"というニュアンスを含んでいる。 だから"勝手に"などという言葉は繋がらない。 "自動的に"というニュアンスを含んでいない場合、例えば意思をもって違いを定義する場合は「区別をつける」となるだろう。 一方、君の言う「判断する」というのは厳密に言えば「意思をもって判断する」ということだ。 「判断する」自体に"自動的ではない"というニュアンスを含んでいる。 君は処理系に対して擬人化を行っているから意思をもってではなく、自動的なニュアンスを含んでいるつもりだろうが、そうであるなら主語である"処理系"を省いてしまってはわかりにくくなるだろう。 これまでの経緯を無視した上で余計な補完をして 処理系が何らかの判断をしてるんだからそんな"俺の"判断は「必要ない」 としても日本語としておかしな文とはならないということは、「処理系が何らかの判断をしてるんだからそんな判断は必要ない」という文章はそれ単体では上記の受け取り方をされても仕方の無い文章だということだ。 今だに分からんのは>>663 の判断するのは誰かって話。 処理系なら判断すれば"いい"などとはならないと思うし。 Print時点で決まっているんだから判断とかいう話にはならない筈だろ。
761 名前:デフォルトの名無しさん (ワッチョイ 2306-OlK+) mailto:sage [2017/06/12(月) 00:24:47.55 ID:Ch/XnpW30.net] ┐(´д`)┌ヤレヤレ
762 名前:デフォルトの名無しさん (ワッチョイ 2332-Ell8) mailto:hage [2017/06/12(月) 01:25:41.57 ID:YlzHeDxH0.net] >>682 foo君久しぶりじゃんwww つかお前らhgだからって不毛な争いしてんじゃねえ よそでやれクズ共
763 名前:デフォルトの名無しさん (ワッチョイ 2332-Ell8) mailto:sage [2017/06/12(月) 01:28:29.93 ID:YlzHeDxH0.net] >>728 ワッチョイ e511- 臭う
764 名前:デフォルトの名無しさん (ワッチョイ 2311-W6lL) mailto:sage [2017/06/12(月) 05:44:51.02 ID:RhdpYx9V0.net] 長文君はなぜか自分の日本語能力を疑わない w
765 名前:デフォルトの名無しさん (アークセー Sx71-sCoW) mailto:sage [2017/06/12(月) 08:46:55.31 ID:ZaZcTWz8x.net] >>736 承認するよ
766 名前:デフォルトの名無しさん (ワッチョイ e511-yTT2) [2017/06/12(月) 19:32:27.05 ID:5L3xq22d0.net] %%%MC+7,8%%% } 000-"M","LES","TUV=0.13325&/0\7&%&", 001-"23","1","0","2","7.14",[\b%7/1444*%812%2.3%7&6111\end\\]{%3%12%\br
767 名前:デフォルトの名無しさん (ワッチョイ db6d-PV39) mailto:sage [2017/06/12(月) 20:31:46.57 ID:ysyGP+YI0.net] >>740 マジで?
768 名前:デフォルトの名無しさん (ワッチョイ eb4c-irun) [2017/06/13(火) 10:48:41.12 ID:UX2HAupn0.net] マクロは記録をいじるぐらいの初心者です AとBファイル開く Aのマクロ作動ボタンを押す BでAで作ったマクロが動き、データが整形される Aファイルが閉じる というのを作れるものなら作りたいけど、可能ですか? Bファイルは毎日新しいのが来ます 出来るとしたら検索ワードが悪いらしく、見つけられないので なんという動作なのか教えてください
769 名前:デフォルトの名無しさん (スッップ Sd43-3C0K) mailto:sage [2017/06/13(火) 11:35:01.49 ID:P4se3SJtd.net] >>742 Aは自分の手元にあるブックでBは他所から届くのか。 「BでAで作ったマクロが動き、」の意味がよくわからない。 なんとなく簡単ぽいけど
770 名前:デフォルトの名無しさん (ワッチョイ 9d73-2i+1) mailto:sage [2017/06/13(火) 11:35:40.67 ID:mycfBP+w0.net] workbook.open 記録ではできない
771 名前:デフォルトの名無しさん (ワッチョイ eb4c-irun) [2017/06/13(火) 12:08:11.62 ID:UX2HAupn0.net] >>743 Aは自分のパソコンに作ったもので、Bは毎日他所からきます。 Bを開いてそこからAで作ったマクロを動かすしかダメですか? >>743 記録ではムリなので、見本となるのがあればいじれないかなと思って聞いてみました
772 名前:デフォルトの名無しさん (ワッチョイ 2306-OlK+) mailto:sage [2017/06/13(火) 12:14:45.05 ID:rPkjB82P0.net] >>742 Aのブックにマクロを記述 ファイル名が固定でないなら GetOpenFilenameでファイルを選択 ごちゃごちゃなんか知らんけど開いたブックBに対して処理をする Aを閉じる(ついでにExcelそのものも終了させる) だろ?
773 名前:デフォルトの名無しさん (ワッチョイ eb4c-irun) [2017/06/13(火) 12:31:59.08 ID:UX2HAupn0.net] >>746 そうです マクロのボタンの作り方とか調べても、同じファイル内で 動くものしか出てこないので、ボタン一押しで動かせないのかと そういう話です
774 名前:デフォルトの名無しさん (アウアウウー Sa99-pGgJ) [2017/06/13(火) 12:32:20.96 ID:5pkXRrDKa.net] 星くん vbaでググって 第2章読めば似たようなことが書いてあるよ
775 名前:デフォルトの名無しさん (ワッチョイ 5b23-3GzE) mailto:sage [2017/06/13(火) 13:52:35.48 ID:TodKlzHt0.net] >>742 普通はアドインにする。 Aファイルは開く必要が無い。 アドインならExcel開いたらAファイルも開いてる。 ブックは非表示だから開いてるようには見えないけどメニューにボタンを追加すればマクロは動作する。
776 名前:デフォルトの名無しさん (JP 0H6b-yTT2) mailto:sage [2017/06/13(火) 14:48:02.77 ID:3KAtKhUpH.net] >>749 君の中では普通かもな
777 名前:デフォルトの名無しさん (ワッチョイ e511-yTT2) mailto:sage [2017/06/13(火) 14:50:25.60 ID:B6CxFrBV0.net] @@@EMO@@@ } 000-"E=0.133348213376128" 001-"4","1.6","2","3","13","3","81","47","0","1","2","85", 002-"813-1>>>1 %$1.3Q!@!$%81.3!$%B,61.2,"13.2"21.7[[%$EMOLA\%/7#/OBLA[%!\2.3=0!&#%<<<Q,S,L,7P,%41%-%2]]%End\]{
778 名前:デフォルトの名無しさん (ワッチョイ eb4c-irun) [2017/06/13(火) 14:52:38.21 ID:UX2HAupn0.net] アドインで出来きました すごい 星君も読みつつあったのですが、とりあえず アドインが上手くいったのでこれで進めます 相談に乗ってくださった方々、ありがとうございました
779 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/13(火) 15:04:10.26 ID:y6bvTk4c0.net] >>742 Sub foo() Dim WB As Workbook With Application.FileDialog(msoFileDialogFilePicker) If .Show Then src = .SelectedItems(1) End With If IsEmpty(src) Then Exit Sub Set WB = Workbooks.Open(src, 0, 1) Process WB If Not WB Is Nothing Then WB.Close: Set WB = Nothing End Sub Sub Process(WB As Workbook) '行いたい処理 End Sub fooをボタンに登録すれば好きなファイルを指定して開くことが出来る。 ファイルBの処理はProcess内に書く。
780 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/13(火) 15:07:40.67 ID:y6bvTk4c0.net] 既に解決している悲しみ
781 名前:デフォルトの名無しさん (ワッチョイ 9d73-2i+1) mailto:sage [2017/06/13(火) 15:25:46.39 ID:mycfBP+w0.net] そして求められていない汎用性のために冗長なコード
782 名前:デフォルトの名無しさん (ワッチョイ a3b3-YGYj) [2017/06/13(火) 18:18:21.99 ID:Te/HyupM0.net] 事務職向けマクロなんだから冗長でも何でも良いと思うけどね。オブジェクト指向バカとか 業務妨害以外の何者でもないと思うしw
783 名前:デフォルトの名無しさん (JP 0H6b-yTT2) mailto:sage [2017/06/13(火) 18:24:08.96 ID:3KAtKhUpH.net] という思考停止
784 名前:デフォルトの名無しさん (ワッチョイ 2b32-Ell8) mailto:hage [2017/06/13(火) 18:43:27.69 ID:kYQNn7N60.net] 上げでちょっと変わった質問する人と foo君がセットで登場するのはたまたまだから ほんとに偶然だから
785 名前:デフォルトの名無しさん (JP 0H6b-yTT2) mailto:sage [2017/06/13(火) 18:47:56.47 ID:3KAtKhUpH.net] >>758 お前がfoo君と呼んでるのは一人ではない
786 名前:デフォルトの名無しさん (エーイモ SEe9-yTT2) mailto:sage [2017/06/13(火) 18:58:03.59 ID:SvV5ll3TE.net] ( ´_ゝ`)フーン
787 名前:デフォルトの名無しさん (ワッチョイ db6d-D9zB) mailto:sage [2017/06/13(火) 19:10:28.45 ID:YXJzvR0D0.net] >>756 エクセルがモロにオブジェクトだから、自然とみんなオブジェクト指向バカになるんだな、これが >>760 そこ
788 名前:はfoonじゃないかな?かな? [] [ここ壊れてます]
789 名前:デフォルトの名無しさん (ワッチョイ a3b3-YGYj) [2017/06/13(火) 19:18:04.89 ID:Te/HyupM0.net] >>761 ははは、オブジェ馬鹿降臨w
790 名前:デフォルトの名無しさん (ワッチョイ db6d-wxle) mailto:sage [2017/06/13(火) 20:06:15.93 ID:YXJzvR0D0.net] >>762 LISP、Haskell、Schemeは本当に使いこなせなかった 君の指摘は正しいよ
791 名前:デフォルトの名無しさん (ワッチョイ 0539-vKbL) mailto:sage [2017/06/14(水) 16:29:22.88 ID:Gr+r/r4M0.net] 初心者です 1 処理A 2 処理B 3 処理C : : こういう流れのVBAで、処理Aと処理Bそれぞれからスタートさせたいときは、どうやるのが一般的ですか。 sub A 処理 A sub B 処理 B end sub end sub これではだめですよね。
792 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/1
] [ここ壊れてます]
793 名前:4(水) 16:40:22.05 ID:M/IwJ83O0.net mailto: >>764 いまいち何やりたいのか分からないけど、処理 Aを飛ばしたい場合とそうでない場合があるって事なら Sub Foo(b As Boolean) If b Then 処理 A 処理 B 処理 C ... End Sub [] [ここ壊れてます]
794 名前:デフォルトの名無しさん (アウアウカー Sae1-cb7n) mailto:sage [2017/06/14(水) 17:02:48.98 ID:bVPmX3VEa.net] 処理というのがどのレベルなのか分からない。 Sub A() 処理A B End Sub '処理B(Bプロシージャ自体が処理B) Sub B() '処理Bの内容 End Sub とする場合もあれば、 全部の処理をそれぞれ別のプロシージャとして作り、メインとなるプロシージャでそれぞれをよび出す場合もある。 この場合はAからよび出すメインプロシージャやBからよび出すメインプロシージャを作ることになる。
795 名前:デフォルトの名無しさん (ドコグロ MM43-W6lL) mailto:sage [2017/06/14(水) 18:56:34.83 ID:e2eXjlywM.net] >>764 1 処理A 2 処理B 3 処理C : : のパターンと 1 処理B 2 処理C : : のパターンがあるってこと? それなら >>765 みたいにするか Sub ABC_() 処理A Call BC_ End Sub Sub BC_ 処理B 処理C : : End Sub ってやるとか
796 名前:デフォルトの名無しさん (ワッチョイ 0539-vKbL) mailto:sage [2017/06/14(水) 22:27:07.82 ID:Gr+r/r4M0.net] ありがとうございました 自分なりに考えたのは、どこかのセルにフラグを置いといて、 処理中に分岐させるというものでした 767さんがわかりやすいですが、>>765 のやり方を勉強してみます
797 名前:デフォルトの名無しさん (ワッチョイ ba52-2WTa) [2017/06/16(金) 11:40:46.40 ID:uw1+X6cJ0.net] 拡張For文とも言われる For Each (オブジェクト変数) in (そのオブジェクトのコレクション) の構文で、ときどきその(オブジェクト変数)の処理によってFor Each文でまわすコレクションのオブジェクトの順番や数が変わってしまい困っています。 例えば For Each iCell in Activesheet.UsedRange である条件のiCellのときにその直下に新しい行を追加したり For Each iFile in TargetFolder.Files でiFileのファイル名を変えようとした場合に(FileSystemObjectを使ってる) 発生しました。 こんなときは処理結果が意図したものと違ってぐちゃぐちゃになって困っています。 最初にFor Eachの行をマクロが通過したときに処理すべきオブジェクトは固定されないんですか?
798 名前:デフォルトの名無しさん (ワッチョイ 87e4-IXCZ) mailto:sage [2017/06/16(金) 12:07:15.60 ID:Qtgdul+t0.net] For Eachで列挙される順番は、実装依存で保障はされてないはずだけど 普通は同じコレクションに対しては同じ順で帰ってくるよ For Eachで列挙中にそのコレクションに対して変更した場合は、その列挙はどうなるか分からん なので要素を増減させるような処理はFor Eachの中でやっちゃ駄目
799 名前:デフォルトの名無しさん (ワッチョイ 1773-sPwl) mailto:sage [2017/06/16(金) 12:11:25.66 ID:BvP/dFhV0.net] ループ処理中に処理対象を変更したら当然おかしくなると思うが…
800 名前:デフォルトの名無しさん (ワッチョイ ba52-2WTa) [2017/06/16(金) 12:30:40.42 ID:uw1+X6cJ0.net] >>770-771 そんなことはアホなオレでもわかっとりますわ。 その上でそれを回避するような定番な方法や定石的手順の方法を知りたいのですが。
801 名前:デフォルトの名無しさん (ワッチョイ 873d-VgqF) mailto:sage [2017/06/16(金) 12:33:46.29 ID:pJSV/jBP0.net] >>772 ループ内で対象を記録しておいて後で書き換えるとか 一時保管場所を作って蓄積してから元の場所へ戻すとか
802 名前:デフォルトの名無しさん (ワッチョイ ba52-2WTa) [2017/06/16(金) 12:39:06.98 ID:uw1+X6cJ0.net] >>773 しかしそれでも記憶させておくものは参照のメモリアドレスには変わりないと思うから 対処によってこの参照先が変わってしまい同じような意図しないぐちゃぐちゃな結果になったりしませんかね? あとわからないのがFileSystemObjectでファイル名を変えただけで対象が変わってしまうのが不思議。 これは別に要素の増減でもなんでもないのに。
803 名前:デフォルトの名無しさん (ワッチョイ 873d-VgqF) mailto:sage [2017/06/16(金) 13:09:33.45 ID:pJSV/jBP0.net] >>774 しませんかね? と質問する前に
804 名前:ゥ分でテスト環境作ってやってみるべき。 [] [ここ壊れてます]
805 名前:デフォルトの名無しさん (ワッチョイ 87e4-IXCZ) mailto:sage [2017/06/16(金) 13:14:04.57 ID:Qtgdul+t0.net] >>772 >その上でそれを回避するような定番な方法や定石的手順の方法を知りたいのですが。 For Eachを使わない 単純に減るだけならFor Nextで逆順に回すのが定番 あとはループ用に別の列挙(コピー)を用意するか >>774 FSOがどんな管理になってるかしらんが、名前の変更ってことは 古い名前の削除+新しい名前の追加 だと考えれば不思議はない
806 名前:デフォルトの名無しさん (アウアウエー Saf2-CZIA) mailto:sage [2017/06/16(金) 13:24:05.09 ID:LikhkzB3a.net] そもそもActivesheet.UsedRangeなんだからシートに処理加えたら要素の数が変わるのは当たり前だろ 一回変数に入れたら困るわけ? 多分fsoのfilesも変数に入れたら固定されるんじゃねえの
807 名前:デフォルトの名無しさん (ワッチョイ 9aec-VgqF) mailto:sage [2017/06/16(金) 15:36:15.71 ID:OvmXQ03X0.net] ユーザーフォームのボタンをクリックしたとき、ある条件を満たせばボタンの背景色を変えてます。 CommandButton1.BackColor = "&HFF00FF" ボタンの色を元に(ボタンのデフォルトの色に)戻すのに↓だとエラー(型が一致しません)。どうすればいいんでしょうか? CommandButton1.BackColor = "&H8000000F&"
808 名前:デフォルトの名無しさん (ワッチョイ 5623-8P7O) mailto:sage [2017/06/16(金) 16:08:49.37 ID:0rZ836RR0.net] >>778 Debug.Print Typename("&HFF00FF") Debug.Print Typename("&H8000000F&") なんで""で括ってるの?
809 名前:デフォルトの名無しさん (ワッチョイ 9aec-VgqF) mailto:sage [2017/06/16(金) 16:34:33.26 ID:OvmXQ03X0.net] >>779 ""は不要でしたか。たぶんどこかのサイトにそのような記述があったんだと思います。 ↓でエラーなく色変わりますが""なくてもよかったのか。 CommandButton1.BackColor = "&HFF00FF" debug.printの結果はstringでした。そりゃそうか。
810 名前:デフォルトの名無しさん (ワッチョイ 9aec-VgqF) mailto:sage [2017/06/16(金) 16:41:13.41 ID:OvmXQ03X0.net] >>779 あ、書くの忘れてました。 ↓これの""を取ったらエラー出ず色がもとに戻りました。ありがとうございました。 CommandButton1.BackColor = "&H8000000F&"
811 名前:デフォルトの名無しさん (アウアウエー Saf2-CZIA) mailto:sage [2017/06/16(金) 17:59:38.04 ID:LikhkzB3a.net] >>778 &H〜&は16進数だったかな
812 名前:デフォルトの名無しさん (ブーイモ MMaf-/42z) mailto:sage [2017/06/16(金) 21:04:08.81 ID:8NWwObqWM.net] >>774 VBAのforeachは扱いづらいよね。 for each file in folder.files なんかは一度別の配列なりcollectionなりに入れちゃった方がindexが動かないから無難。 range.deleteやrange.insertは一度のループで処理しようとせずに、別にループを回すか、index降順でループするのが無難。
813 名前:デフォルトの名無しさん (ワッチョイ 966d-6Cyg) mailto:sage [2017/06/16(金) 21:12:24.56 ID:QcYuYCTF0.net] for eachとcells()は相性が悪い cells().deleteを絡めると参照が変な位置に飛ぶ(気がする)。理由はわからん deleteを絡めるならfor next step-1にしたほうがいい
814 名前:デフォルトの名無しさん (ワッチョイ 9aec-VgqF) mailto:sage [2017/06/16(金) 21:13:11.64 ID:OvmXQ03X0.net] >>778 です。何度もすいません。 >>778 の質問はダブルクオーテーションマークを削除して解決しましたが、 なぜ、CommandButton1.BackColor = "&HFF00FF"、はエラーが出ずにボタン背景色が変更され、 CommandButton1.BackColor = "&H8000000F&"、これだとエラーが出るのか教えて頂けないでしょうか?
815 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/16(金) 21:14:43.63 ID:82cvwDvY0.net] >>785 エラーが出る方は桁数が多いからじゃね?
816 名前:デフォルトの名無しさん (ワッチョイ 9aec-VgqF) mailto:sage [2017/06/16(金) 21:15:01.98 ID:OvmXQ03X0.net] >>785 ちなみに、VBAはマクロの記録したものをネットで検索してちょっといじくる程度の初心者レベルです
817 名前:デフォルトの名無しさん (ワッチョイ 966d-6Cyg) mailto:sage [2017/06/16(金) 21:20:26.65 ID:QcYuYCTF0.net] >>774 VBA独特のnewの特殊な仕様や、 setする度に生成される謎参照 vbaのforeach中に要素数を増減させるのはやめた方がいい 俺も絶対にしない。単純に間違うし、なんで間違うかもわからんから Sub foo() Set a = Cells(1, 1) Set b = Cells(1, 1) Debug.Print (a Is b) 'falseになる。参照しているアドレスも違う End Sub
818 名前:デフォルトの名無しさん (ワッチョイ 9aec-VgqF) mailto:sage [2017/06/16(金) 21:20:57.72 ID:OvmXQ03X0.net] >>786 "&H8000000F&"の方が文字数が多い(桁数が多い)というのはわかりますが、それでなぜエラーが出るのでしょうか?
819 名前:デフォルトの名無しさん (ワッチョイ e346-KEev) mailto:sage [2017/06/16(金) 21:22:35.82 ID:nh1Jx8jt0.net] >>785 CommandButton1.BackColor = "&H8000000F" でどう?
820 名前:デフォルトの名無しさん (ワッチョイ 966d-6Cyg) mailto:sage [2017/06/16(金) 21:24:07.49 ID:QcYuYCTF0.net] >>789 コンソールで以下を叩いてみれ ? &H8000000F
821 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/16(金) 21:25:32.82 ID:82cvwDvY0.net] >>789 色の取りうる範囲を超えた値だからかな
822 名前:デフォルトの名無しさん (ブーイモ MMaf-/42z) mailto:sage [2017/06/16(金) 21:29:07.51 ID:8NWwObqWM.net] >>785 colorはlong型なので、右辺はlong型にキャストされている。 そんで、右辺=2147483663は、そもそもlong型の上限を超えているのでエラーになる。 まあその前に、色は256の3乗=16777216パターンなので、そこではねられてるかもしれない。
823 名前:デフォルトの名無しさん (アウアウカー Sa33-gMwg) mailto:sage [2017/06/16(金) 21:37:27.08 ID:Wj1oysWPa.net] Debug.Print Typename(&H8000000F&) Debug.Print Typename(Val("&H8000000F&")) Longに見える文字列でも自動型変換では以前の型は考慮されないと思う。
824 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/16(金) 21:43:40.45 ID:82cvwDvY0.net] >>794 typename(clng("&H8000000F")) なんじゃね
825 名前:デフォルトの名無しさん (アウアウカー Sa33-gMwg) mailto:sage [2017/06/16(金) 21:49:00.55 ID:Wj1oysWPa.net] >>795 それじゃLongになっちまうだろ。 "&H8000000F&"が型変換でどう解釈されたかを調べてるんだぞ。 わざわざ最後に&付けてLong指定してるのにどうしてDoubleになるのかと言えば&付いててもStringなんだから&は考慮されないと予想。
826 名前:デフォルトの名無しさん (ブーイモ MMda-/42z) mailto:sage [2017/06/16(金) 21:49:23.66 ID:YneIl6smM.net] 確認したら、 clng("&800000F") => -2147483633 でキャストは通るね。間違い書いてすんません。
827 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/16(金) 21:51:25.40 ID:82cvwDvY0.net] そもそもエラーって何のエラーかわかってないんだが 何エラー?
828 名前:デフォルトの名無しさん (アウアウカー Sa33-gMwg) mailto:sage [2017/06/16(金) 21:52:52.22 ID:Wj1oysWPa.net] >>798 Long型のプロパティにDouble型の値を代入しようとしたエラー
829 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/16(金) 21:55:42.55 ID:82cvwDvY0.net] >>799 エラーメッセージにそう出るの? エラーメッセージを解釈した結果?
830 名前:デフォルトの名無しさん (ブーイモ MMda-/42z) mailto:sage [2017/06/16(金) 21:57:25.30 ID:YneIl6smM.net] .backcolorプロパティ内で範囲外エラーを返しているのかと思ったけど違うのかな?
831 名前:デフォルトの名無しさん (アウアウカー Sa33-gMwg) mailto:sage [2017/06/16(金) 21:58:00.70 ID:Wj1oysWPa.net] >>800 解釈した結果 そのために>>794 書いたつもり。
832 名前:デフォルトの名無しさん (アウアウカー Sa33-gMwg) mailto:sage [2017/06/16(金) 22:02:09.58 ID:Wj1oysWPa.net] >>801 ""取ったらエラー出てないし、エラーも型が一致していないってことだから。 まあ、同じことでしょ。
833 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/16(金) 22:02:42.94 ID:82cvwDvY0.net] >>802 それだと本当はDouble型かLong型かわからなくね? 暗黙の型変換でlong型になってるかもしれない colorプロパティはlong型みたいだし
834 名前:デフォルトの名無しさん (アウアウカー Sa33-gMwg) mailto:sage [2017/06/16(金) 22:25:40.96 ID:Wj1oysWPa.net] >>804 Val("&H8000000F&")はDoubleだけど、 "&H8000000F&"を暗黙の型変換した場合はLongかも知れないということ? だったらエラーは出ないんじゃね?
835 名前:デフォルトの名無しさん (ワッチョイ 87e4-IXCZ) mailto:sage [2017/06/17(土) 03:41:22.96 ID:5p5fyGrH0.net] 暗黙の変換やClng関数は、型指定文字があるとエラーになる それだけ ちなみにValは、型指定文字を無視する 試したけど 暗黙の変換でLongに収まらないときはオーバーフロー 型指定文字が入ってるときは型が一致しません エラーの種類違うし
836 名前:デフォルトの名無しさん (ワッチョイ e346-KEev) mailto:sage [2017/06/17(土) 05:35:44.93 ID:sBDEiRXs0.net] >>792 >>801 &H8000000F は RGB値ではなくシステム カラーだと思うのだけど? システム カラー定数 https://msdn.microsoft.com/ja-jp/library/office/gg264801.aspx
837 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/17(土) 05:54:42.06 ID:Zt5CuQ5d0.net] >>807 "で囲ってない時はシステムカラー定数と認識されるけど "で囲ってる時は型変換されてlong値になって値の範囲が不正になるのかな
838 名前:デフォルトの名無しさん (ワッチョイ e346-KEev) mailto:sage [2017/06/17(土) 06:26:45.69 ID:
] [ここ壊れてます]
839 名前:sBDEiRXs0.net mailto: >>808 "&H8000000F"は16進表現として認識てきて 型変換してるけど "&H8000000F&"は 最後に& があるから 文字列のままで 型変換してないんじゃないの? なぜか 皆さん型指定文字と みなしてる みたいだけど おいらにゃ それが理解できない [] [ここ壊れてます]
840 名前:809 (ワッチョイ e346-KEev) mailto:sage [2017/06/17(土) 06:34:33.98 ID:sBDEiRXs0.net] ちょっと補足 &H8000000F& と書いたときの最後の& は型指定文字なのはいいんだけど "&H8000000F&" と書いたときの最後の& は型指定文字 ではないんじゃね? とおいらは思ってるって事
841 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/17(土) 06:40:18.44 ID:Zt5CuQ5d0.net] >>809 最後の&があると文字列のままで型が一致しないエラー "を外すと最後の&が削除されてlong型になるね
842 名前:デフォルトの名無しさん (スプッッ Sd7a-KVjL) mailto:sage [2017/06/17(土) 06:43:47.67 ID:HWAPYlLyd.net] おいら って20年ぶりくらいに聞いた
843 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/17(土) 06:46:10.05 ID:Zt5CuQ5d0.net] 最後の&が無いと"で囲ってても型変換されてエラーにならない 最後の&がエラーの原因だな
844 名前:デフォルトの名無しさん (ワッチョイ 5379-9n+g) mailto:sage [2017/06/17(土) 08:14:56.44 ID:SCg1HEQ40.net] おいらの法則
845 名前:デフォルトの名無しさん (ワッチョイ 8b8f-2WTa) mailto:sage [2017/06/17(土) 08:22:33.99 ID:qHcE0uCX0.net] シドロモドロ以来だな
846 名前:デフォルトの名無しさん (ワッチョイ 5623-gMwg) mailto:sage [2017/06/17(土) 19:37:25.20 ID:VvIBcq8u0.net] >>813 それだと"&H8000&"でもエラーになる?
847 名前:デフォルトの名無しさん (ワッチョイ 3a6f-Qd8E) mailto:sage [2017/06/17(土) 19:57:38.80 ID:Es/QpSxK0.net] トランスポーズすると、2次元配列を1次元配列に変換できる!! 使い道は分からない!! 以上!!
848 名前:デフォルトの名無しさん (ワッチョイ ba91-XHCC) [2017/06/17(土) 22:12:46.54 ID:Zt5CuQ5d0.net] >>816 同じ型が一致しませんのエラーになる
849 名前:デフォルトの名無しさん (ワッチョイ 5623-gMwg) mailto:sage [2017/06/18(日) 00:00:52.09 ID:8soX4XuF0.net] >>818 おお、じゃあ変換できないので文字列のままでエラーってことだな。
850 名前:デフォルトの名無しさん (ワッチョイ bb11-CZIA) mailto:sage [2017/06/18(日) 15:49:05.91 ID:RSPvKv4Y0.net] >>817 横に並んだデータをサクッと一次元配列にしたいときに使う
851 名前:デフォルトの名無しさん (ササクッテロリ Spab-XHCC) [2017/06/18(日) 16:32:07.44 ID:rdefnVQJp.net] >>817 a. 2行2列を要素数4の配列にできる b. 1行4列を要素数4の配列にできる c. 4行1列を要素数4の配列にできる どれが出来てどれが出来ないの?
852 名前:デフォルトの名無しさん (ワッチョイ 873d-VgqF) mailto:sage [2017/06/18(日) 17:09:23.21 ID:Q0TjVwCE0.net] Transposeは一列もしくは一行の場合は強制的に一次元配列する。 なお同じ機能の関数を自作しても処理時間は変わらない模様。
853 名前:デフォルトの名無しさん (ワッチョイ baaa-2WTa) mailto:sage [2017/06/18(日) 17:17:35.08 ID:dGQ95y/Y0.net] >>822 一行だったら二次元配列に変換されるよ
854 名前:デフォルトの名無しさん (アウアウウー Sa77-pW+h) mailto:sage [2017/06/19(月) 03:47:46.84 ID:5j/B6amKa.net] 便利だから使ってたけど処理時間変わらないのか それは知らなかった 自作関数書くよりはちょっとお手軽くらいに思っとけばいいのかな
855 名前:デフォルトの名無しさん (ワッチョイ 873d-VgqF) mailto:sage [2017/06/19(月) 12:09:46.78 ID:ABDk/3ER0.net] WorksheetFunctionとかの一部の関数は処理時間見る限り全部VBAで書かれているか、あるいは同じレベルで実装されているみたい。 なんなら初めに条件を絞れる分、元から入っている関数よりも自分で書いた方が速い事もある。