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


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

Excel VBA 質問スレ Part48



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で書かれているか、あるいは同じレベルで実装されているみたい。
なんなら初めに条件を絞れる分、元から入っている関数よりも自分で書いた方が速い事もある。






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

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

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