Excel VBA 質問スレ Part52

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/01/27(土) 20:25:05.67ID:Xe+uGT7T
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/

※前スレ
Excel VBA 質問スレ Part51
http://mevius.2ch.net/test/read.cgi/tech/1510107990/
119デフォルトの名無しさん
垢版 |
2018/02/10(土) 12:25:34.71ID:silh4Kun
コントロールのイベントプロシージャはプライベートっていう制約があるから
シートと、ユーザーフォーム間のActiveXコントロールで変数の受け渡しをする場合は、パブリック変数を使用するしかいい方法がないと思う
2018/02/10(土) 12:29:55.88ID:XBpzoSQ/
ワークシートはグローバル変数みたいなもん
印刷さえしなければたいがい便利に使える
2018/02/10(土) 14:00:23.82ID:7mQmOVGk
シートから直接取ればいいのでは??
使い回すにしてもプライベート変数で事足りると思うけど。
パブリックにして読み書き自由にする必要はないんじゃないか?
2018/02/10(土) 17:52:03.19ID:pkIiHatw
rangeオブジェクトを分割して2つのrangeオブジェクトにしたいのですがこれだと値がおかしいので解決方法教えてください

Set obj = Range("a1:b100")
set obj1 = obj.range(obj.cells(1,1),obj.cells(100,1))
set obj2 = obj.range(obj.cells(1,2),obj.cells(100,2))
2018/02/10(土) 18:04:50.18ID:o71hUKxM
>>122範囲をセットしてるだけで
値をセットしているわけではない
2018/02/10(土) 19:22:41.50ID:+Zdspcyw
>>122
objに設定してるセルが存在するシートの参照式が省略されてるけど、シートはActiveSheetでいいの?
あと、obj1とobj2には値を設定してるわけじゃないんだが、値がおかしいってどういうこと?
125デフォルトの名無しさん
垢版 |
2018/02/10(土) 21:53:50.67ID:9qCKy78B
vbaに関する質問か分からないけど、
他者が作成したexcel vbaマクロの中身をのぞこうとしたら、パスワードがかかって開けなかった。
どうやったらパスワードを特定できる?
2018/02/10(土) 21:55:42.82ID:Ohg/Tsol
>>125
そんなもの他者が特定出来たらパスワードの意味がないだろう
2018/02/10(土) 21:55:42.88ID:yN3uaIXc
>>125
パスかけたやつに聞く
128デフォルトの名無しさん
垢版 |
2018/02/10(土) 22:02:18.01
>>125
VBAのパスワード保護なんてあってないようなものだからすぐ解除できる
http://neos21.hatenablog.com/entry/2016/09/30/081709
2018/02/10(土) 22:16:02.76ID:5tf0t1pe
>>123-124
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = obj.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = obj.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))

こんな風にした2列選択した後に1列毎のrangeオブジェクトに割り当てようとしています
試しにobj1.Selectとやって範囲を確認してみると関係のないセルが選択されてしまいました
130デフォルトの名無しさん
垢版 |
2018/02/10(土) 23:02:35.50
>>129
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = obj.Worksheet.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = obj.Worksheet.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
131デフォルトの名無しさん
垢版 |
2018/02/10(土) 23:24:31.56
このほうが汎用的なのかな
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = Application.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = Application.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
132デフォルトの名無しさん
垢版 |
2018/02/10(土) 23:27:24.03
>>131はだめか
Application.Range プロパティ (Excel)
>オブジェクト修飾子を指定せずにこのプロパティを使用すると、 ActiveSheet.Range のショートカットとなります。

>>130でいいと思うけど、Range, Cellsの仕様がいまいち分からなかったから理論的になぜかは説明できない
2018/02/10(土) 23:39:33.30ID:o71hUKxM
set obj = nothing
は最後に入れるべきか、
ほったらかしでも問題無いのか
どうなんだろう?
134デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:18:26.88ID:q9UPBdZm
おまえらには必要
2018/02/11(日) 04:53:44.34ID:LDeaRbgm
同じADOでもデルファイのクローズはナッシングだけど、VB系の場合はクローズだよねだいたい
たしかクローズせずにナッシングするとクローズできなくなる
2018/02/11(日) 08:29:24.42ID:AIGXauyP
>>129
例えばC1:D:4を選択した場合

1.obj.Rangeの中で更にobj.Cellsを指定するということは、C列目を基準にC列目を指定をしていることになる。
だからRangeの中にCellsを書く時はobj.Cellsではなく、obj.Worksheet.Cellsが良い。

2.obj1がC1:C4、obj2にD1:D4をセットしたいってことだよな?
obj.Cells(obj.Count / 2, 1)
この書き方だと行数を半分にしているのだがこれは一体・・・
もしC1:F10を指定した場合にC1:D10、E1:F10に分けたいわけじゃないの?

3.可読性が死ぬからRange使うのをやめよう。
範囲指定をする時はResize、Offsetを使ったほうが直感的です。

当初の質問を参考に2の通りだと仮定して
Set obj1 = obj.Resize(, obj.Column / 2)
Set obj2 = obj.Resize(, obj.Column / 2).Offset(,obj.Column / 2)

Objには2列しか選択されない事が確定しているなら
Set obj1 = obj.Resize(, 1)
Set obj2 = obj.Resize(, 1).Offset(,1)
137デフォルトの名無しさん
垢版 |
2018/02/11(日) 10:16:47.04
>>136
1についての文献あれば教えて

2に関しては、2列選択中だから総セル数を2で割れば行数が算出できるってことやろ
obj.Rows.Countのほうがいいとは思うけど
138デフォルトの名無しさん
垢版 |
2018/02/11(日) 10:18:33.85
>>137
>1についての文献

あ、想像で書いてるどっかのブログとかじゃなくて
ちゃんとしたMicrosoftの公式文献ね
139デフォルトの名無しさん
垢版 |
2018/02/11(日) 10:29:03.91ID:q9UPBdZm
文献()読んでもわからんからこんな掃き溜めで質問しとんのやろw
ややこしい奴やなあw
140デフォルトの名無しさん
垢版 |
2018/02/11(日) 10:34:27.69
>>139
俺は回答者側や
141デフォルトの名無しさん
垢版 |
2018/02/11(日) 10:37:10.14ID:q9UPBdZm
>>140
俺は回答者側や(キリッ

あのさあ〜お前羞恥心ないの?www
2018/02/11(日) 10:38:14.38ID:YMxCZLKM
ほったらかしで問題ない場合と
そうでない場合があるので
よくわからなければ明示的に
Nothing入れといた方がいい
2018/02/11(日) 10:54:41.06ID:A61Ds/EI
>>138
> あ、想像で書いてるどっかのブログとかじゃなくて
> ちゃんとしたMicrosoftの公式文献ね
偉そうにほざく前にMSDNぐらいググれ
https://msdn.microsoft.com/ja-jp/library/cc408924.aspx
144デフォルトの名無しさん
垢版 |
2018/02/11(日) 10:58:29.29
>>143
どこにobj.Rangeの引数としてobj,Cellsが指定された場合の解釈のされ方が書いてあるの?
どこみてもActiveSheet.Rangeの引数として使ってる例ばっかりだし、内部的にどういう形式に変換されてるのか全然読み取れないんだわ
2018/02/11(日) 11:40:12.40ID:A61Ds/EI
>>144
> 偉そうにほざく前にMSDNぐらいググれ
って書いてあるのにバカすぎる
URLは単なるヒントな
まあ普通の理解力あればあれで充分だと思うが w
146デフォルトの名無しさん
垢版 |
2018/02/11(日) 11:49:28.10
>>145
煽りはいいから笑
結局探したけど見つけられなかったんだろ?
気持ちは分かるわ
2018/02/11(日) 12:24:58.11ID:A61Ds/EI
そう思いたいならそれでいいんじゃね w
2018/02/11(日) 12:56:24.79ID:AIGXauyP
>>137
公式文献は知らないがそういうもんだと納得している。

想像()とか、こんなくらい知ってるわヴォケとか言われそうだが
set ws = Worksheets(1)があると仮定して。

これはどれもRange("B2")への参照を示すわけだが
ws.Cells(2,2)
ws.Cells(2,2).Cells(1,1)
ws.Cells(2,2).Range("A1")

CellsとかRangeは同一ワークシート内であれば、いくらでも参照先を変更できる。
例えばこれはどれもRange("C3")への参照。
B2を基準(1,1)として(2,2)を見ていることになるからだ。
ws.Cells(2,2).Cells(2,2)
ws.Cells(2,2).Range("B2")
ws.Range(ws.Cells(2,2).Range("B2"))

問題の件はobjに既にRangeが格納されているからわかりづらいが
Set obj = ws.Range("B2") の場合に
obj.Range(ws.Cells(2,2)) というのは
ws.Range("B2").Range(ws.Cells(2,2)) ってことだよね
単一セルの場合はws.Range("B2").Cells(2,2)と同一の結果になる。

範囲の場合も考え方は同じだがRange(a,b)でaとbに範囲を渡した場合
aとbを合わせた領域の最端の範囲を示すのは言わずもがな。

結局のところ何も難しい話ではなくて、Offsetの相対指定とResizeの範囲指定を同時にできるのがRangeだっていう話に戻る。

普段ws.Range("A1")と書いているものは、実はws.cells(1,1).Range("A1")の省略形だって考えて俺は納得した。
2018/02/11(日) 13:17:28.48ID:A61Ds/EI
>>148
素直な君には正解を教えてあげる w

For example, if the selection is cell C3, Selection.Cells(2, 2) returns cell D4
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-item-property-excel
150デフォルトの名無しさん
垢版 |
2018/02/11(日) 16:48:17.26
>>148
ありがとう。

結局、想像でしかないけど、
obj.Range(obj.Cells(x, x), obj.Cells(x, x))
を独自関数
SelectionRangeCells(obj, obj.Cells(x, x), obj.Cells(x, x))
に置き換えると、こんな感じのことをしているのかね。

Function SelectionRangeCells(ByRef rng As Range, ByRef cell1 As Range, ByRef cell2 As Range) As Range
Dim startRow As Long
Dim endRow As Long
Dim startColumn As Long
Dim endColumn As Long
startRow = WorksheetFunction.Min(cell1.Row, cell2.Row)
endRow = WorksheetFunction.Max(cell1.Row, cell2.Row)
startColumn = WorksheetFunction.Min(cell1.Column, cell2.Column)
endColumn = WorksheetFunction.Max(cell1.Column, cell2.Column)
Set SelectionRangeCells = rng.Resize(endRow - startRow + 1, endColumn - startColumn + 1).Offset(startRow - 1, startColumn - 1)
End Function

obj.Range("A1")という形式の場合は公式ドキュメントに明確に書かれてるね。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-range-property-excel

obj.Range(obj.Cells(x, x), obj.Cells(x, x))
の場合はobj.Cells(x, x)が実体セルを指していてobjとの相対位置も分かってるわけだから
Rangeプロパティ内で相対参照を算出する実装方法も考えられるしそのほうが使う側は分かりやすいはずだけど
そう実装していないという明確な記述がどこにもなかったから実際に動かしてみての想像しかできなかった。

(ちなみに>>149がなにやら勘違いしているようだがCells(x, x)【Cells._Default(x, x)】が何を返すかを知りたかったわけではない)
2018/02/11(日) 17:24:07.93ID:A61Ds/EI
>>150
> (ちなみに>>149がなにやら勘違いしているようだがCells(x, x)【Cells._Default(x, x)】が何を返すかを知りたかったわけではない)
その理解力で人を勘違い呼ばわりとか w
152デフォルトの名無しさん
垢版 |
2018/02/11(日) 17:54:51.66ID:q9UPBdZm
>>151
俺からしたらおまえも>>150と似たりよったりだからw
まあ今回の件は僅差でお前の勝ちだけどw
2018/02/11(日) 18:02:54.57ID:zWT4td5V
メゾット君も負けを認められるほど成長したかと感心したもののレス見ると何で勝利宣言してんのか分からなかった
2018/02/11(日) 21:45:11.45ID:jnjDiTfu
今回の使い方は良いのか悪いのか
ちょっと判断つきかねるなぁ
可読性がちょっとね

扱い方そのものは悪いとは思わない
書いてる人も気付いているか分からないけど
やってることはデコレータパターンの
それにかなり近いんだよね
洗練されればそれなりに便利かも知れないね
2018/02/11(日) 22:48:44.70ID:49jQhb5f
タスクスケジューラで、Private Sub Workbook_Open()、の記述のあるブックを開くと、
Private Sub Workbook_Open()が実行されるときもあれば、実行されないときもある。
なんでなんだろ?
その違いが今のところ掴めないでいるんですが、どなたか何か情報をお持ちではないですか?
2018/02/11(日) 23:09:13.81ID:S5L6PYJ0
>>155
ログオフしてるときに動かしたいなら事前にちょっと設定が必要だけどそこら辺は大丈夫?
http://gagaj.hateblo.jp/entry/2015/03/21/162218
2018/02/11(日) 23:28:58.59ID:49jQhb5f
>>156
ユーザーがログオンしているときのみ実行する、にチェックが入っていますので違うと思います。
念のため、紹介してもらったサイトに従いフォルダを作成しましたがそれでも変わらずです。
他に情報ありましたらお知らせください。ありがとうございました。
2018/02/12(月) 07:06:15.59ID:Mlpgnb6c
>>155
実行されない時があるってことは実行される時もあるの?
auto_open()も試してみてよ。
微妙に挙動が異なるので動くかも。
詳しくは違いでググって下さい
159デフォルトの名無しさん
垢版 |
2018/02/12(月) 08:05:14.90ID:xQy5Bsyb
あほやなあオープンマクロが動かんのはオープンしとらんからにきまっとるんやがw
2018/02/12(月) 08:30:35.08ID:F3ZoN7fb
>>157
> 他に情報ありましたらお知らせください。ありがとうございました。
て言うかまずお前が情報書けよ

> ユーザーがログオンしているときのみ実行する、にチェックが入っていますので違うと思います。
なんて後から言われても困る
2018/02/12(月) 10:49:27.81ID:fd37PB9t
スケジュールで走らせるのが目的なら
イベントにたよらなくても
VBSからVBAのプロシージャを直で指定して呼べた気がする
でVBSの方をスケジューラーに登録しておく
ググれば方法が見つかると思うのでお試しあれ
162デフォルトの名無しさん
垢版 |
2018/02/12(月) 11:56:54.51ID:ovw7+iFl
>>86
おまえはどんなショボいPCを使っているのか?Windows95でCPUは486DXか?
2018/02/12(月) 12:41:45.34ID:F3ZoN7fb
>>161
COM経由で操作するなら似たようなもん
2018/02/12(月) 14:28:15.32ID:RHpKon14
へーsystemアカウント用のDesktopフォルダ作るのか
なるほどね
2018/02/15(木) 10:49:13.30ID:n3ZAbmwK
VBE起動したあとVBEのウィンドウを最大化するんだけど、
ブックを閉じてVBEを開くと小さいウィンドウで開くから、また最大化する・・・のが面倒なんですが、
前回終了時のウィンドウサイズを記憶させることってできます?
2018/02/15(木) 12:06:52.20ID:tgIxQ6Uj
>>165
標準機能では無理
【気軽に「こんなソフトありませんか?」Part.176】
https://egg.5ch.net/test/read.cgi/software/1511329804/
2018/02/17(土) 18:05:06.20ID:XvsvycnR
vbaで正規表現書いていたのですが(?:)って使えないんでしょうか?
キャプチャして欲しくない部分が結果に混ざるのでできれば最初から消しておきたいんですが
結果に対して処理するしかないんですかね
2018/02/17(土) 18:26:45.53ID:DOQJ47ER
>>167
いま手元に環境ないから試せないけどRegExp (Microsoft VBScript Regular Expressions 5.5)使ってるなら使えるはずだが...
169デフォルトの名無しさん
垢版 |
2018/02/17(土) 18:39:43.21
>>167
普通にキャプチャしてSubMachesで必要な部分だけ取り出せばいい
2018/02/17(土) 20:20:00.39ID:XvsvycnR
できました
ありがとうございました
171デフォルトの名無しさん
垢版 |
2018/02/18(日) 00:43:49.98ID:trAPtbQv
>>170
礼などいらんよ
2018/02/18(日) 09:52:01.75ID:VPiCj08E
>>170
いいってことよ(´・ω・`)b
2018/02/20(火) 20:34:05.33ID:po95iPWj
派遣先の親分がVBAの動作速度の改善のためにHDDをSSDに替えよう
なんて言っているけれど
VBAとSSDって動作速度の面で関係ありますか?

これってSATA接続のHDD上のExcelファイルを編集するのとUSBメモリ(USB2.0接続)では速度差が出ると言っているようなものだろうけれど
いかんせんUSBメモリはすべて捨ててしまって検証が出来ないです…
2018/02/20(火) 20:46:01.61ID:D3Dd0C9m
>>173
派遣先の親分に対して何がしたくて、どういう裏付けのための「お言葉」を貰いに来たの?
2018/02/20(火) 20:51:34.56ID:po95iPWj
>>174
SSDには拘らずPC全てを新調する流れに誘導したいです
2018/02/20(火) 20:54:53.19ID:egNrIJ1q
ファイルを100個作って保存するとかなら効果あるかも?
誤差の範囲だと思うけど

VBAの速度を上げるならCPUパワーとロジックに力をそそぐべき
2018/02/20(火) 21:13:27.65ID:qLAJwQw3
やっぱり、そう思いますよねー
ちなみに10シート1000行50列をそれぞれ入力規則10種に違反しているものは無いかくまなく調べる…
みたいなマクロなんですけど
開発者は条件分岐はとりあえずIf文をネストすれば良いみたいな考え方らしくSelect文がゼロなんですよ
これってなんか工夫できそうな気がするんですけど
まぁもうちょっと分析してみます
2018/02/20(火) 21:20:14.98ID:qLAJwQw3
ごめんなさいIDかわりました
2018/02/20(火) 21:36:39.55ID:egNrIJ1q
たぶんループ内でセルアクセスしまくってるだろうから
一気に取ってきてメモリで処理して結果をズドン
にすれば1000倍オーダーで高速化するでしょう
健闘をいのる
180デフォルトの名無しさん
垢版 |
2018/02/20(火) 21:45:10.31ID:Qs1V/krE
とりあえず親分を立ててSSDにする

ほとんど全て作業が快適になるけど肝心のマクロは変わらず

やっぱりCPUか、でPC新調する

もったいないので新PCにSSD載せる

マクロも他の作業も爆速になる

これしかないやろ
2018/02/20(火) 21:51:41.56ID:qLAJwQw3
>>179
セルアクセス!初耳にして今後のキーワードになりそうな言葉です!
がんばります!

>>180
そこまで景気よく行けたらいいなぁ…
2018/02/20(火) 22:19:42.59ID:kZvvD5Jp
セル.valueを一旦全部配列に取り込んで
メモリ上で処理して
配列を最後にまとめて貼り付けれ
画面描画とイベント抑止も追加な
2018/02/21(水) 07:37:11.81ID:pdEcbkjv
>>177
まぁIf文でもSelect文でも使いどころが見合ってればいいけど
それより気を付けなければいけないのはOrやAndの扱いだね。
.Net系のOrElseやAndAlsoと違って前に設定した条件を満たしていても後続の条件を評価してしまう。

まだ単純な値を比較するなら誤差程度の時間差しか出ないけど
関数やメソッドの戻り値を条件にしていて、
その関数が重い処理であればそれだけ無駄な時間が掛かってしまう。

後はもしクラスに詳しければポリモーフィズムでなるべく無駄な分岐は避けた方が良いかな。
その分処理時間だけでなく改修やテストの時間も削減が見込める。
184デフォルトの名無しさん
垢版 |
2018/02/21(水) 23:14:40.16ID:y7Un/hTJ
処理時間の高速化が目的なら
セル範囲をバリアント型配列に代入して配列内で処理をしてから、処理後の結果を配列からセル範囲に出力すれば劇的に早くなるよ
2018/02/22(木) 01:57:42.07ID:gwSYBKpq
エクセルで家計簿作りたいんだけど、みんなどうしてるん?
ものすっごい管理するのが面倒くさくなるんだけど…

家計簿を複式で書きたいから毎回商品名やら収入支出まで全部書くんだけど、
最近面倒臭くなってきたからこの辺の操作を簡略化したいのよ


商品名を全部書くのが面倒くさいから大雑把な商品項目を作って
商品項目の選択制にしたいんだけどどうすりゃいいんだ?

例えば、お茶買ったとしたら、飲み物って項目を選択して
収入支出のどっちかを選択して金額を入れればいいだけ、みたいな
あと、飲み物のグループだけを表示できるようにしたりもしたい
自分がその月に何にお金を一番使ってるのか項目毎に分析したいんだ
2018/02/22(木) 05:34:45.99ID:6+gpZmum
ユーザーフォーム作って選択すればいいんじゃね?
あとはKey に該当する商品だけ合計するとかでおk
2018/02/22(木) 07:11:07.10ID:/kJbMS0V
>>185
セルを選択形式にしたいなら「入力規制」でググれ
だがその項目を決まった位置に書いておけば
それすら必要ないように思える。

多分VBA必要ない。
188デフォルトの名無しさん
垢版 |
2018/02/22(木) 07:13:19.54
>>185
つ 「エクセル簿記」
2018/02/22(木) 07:17:47.39ID:FxhP8B8J
>>185
> 自分がその月に何にお金を一番使ってるのか項目毎に分析したいんだ
スレチになるけどそう言う目的あるならフリーの家計簿ソフト使った方がいいと思うよ
190デフォルトの名無しさん
垢版 |
2018/02/22(木) 08:05:56.18ID:YVYiWWcv
フリーの家計簿ソフトなんて作ってるのはみんな>>185みたいな奴だぜ
オレオレ便利機能が欲しいから作っちゃいましたみたいな
家計簿なんてそんなもん
作れるなら自分で作っちゃうアプローチのが正解
2018/02/22(木) 10:32:45.75ID:jLYjEY9/
さらにスレチだけど、そもそも複式で書く意味って?
支出と費用計上のタイミングがずれる
収入と収益計上のタイミングがずれる
なんてことがある場合に複式の利点があるんだろうけど
そもそも家計簿作る人ってそこまでやんの?
米を10kg買ってきました
資産計上します
消費の都度費用計上しますとか?
192デフォルトの名無しさん
垢版 |
2018/02/22(木) 18:43:19.33ID:VgNmulNi
アスペ感強すぎwww
2018/02/22(木) 19:08:12.44ID:K6gwUVsb
家計簿の無料アプリなんて、いくらでもあるだろ

既にあるものは作るな。
世の中に無いものを作れ
2018/02/22(木) 19:45:49.11ID:1JOjbwTy
ほんと定期的にやばそうな人くるよな
2018/02/22(木) 21:13:28.78ID:c7GHDdxz
++や+=や?みたいな演算子ないんでしょうか?
毎回代入やifしないと駄目?
2018/02/22(木) 21:36:57.24ID:UMUr68HJ
>>195
だめ
2018/02/22(木) 21:45:28.24ID:c7GHDdxz
ありがとう
不便だなあ…('A`)
2018/02/22(木) 22:03:55.07ID:/kJbMS0V
>>197
不便だよ
不便なところをどうやって何とかするのかを
考えるのもVBAの醍醐味
2018/02/22(木) 22:05:36.37ID:6NHeYF5q
>>195
?:(三項演算子)はIIf( )で似たようなことができる
ただしC++の三項演算子と違って関数だから引数はすべて評価される
なので
a = 0
b = IIf(a <> 0, 1 / a, 0)
とかやると0割りエラーになるので注意
2018/02/22(木) 22:31:32.98ID:rSjpq6iH
And や Or も前件だけで真偽判定してくれなくて全文評価するから不便だよな
2018/02/22(木) 22:44:59.91ID:Dms0Es6m
条件式は1本にまとめるよりIfをネストした方が処理が速いこともあるし
C#なんかとは考え方をまるっきり変えてコーディングしないと
2018/02/23(金) 00:01:36.17ID:aLU7NSfS
その内LINQやラムダ式が使えないから不便だって言う人が出てきそうな勢いだな

Pythoneまで待てや
2018/02/23(金) 08:52:34.86ID:AfM26Mh3
「プログラミング環境なんて数年おきに改訂され進化していくもの」
という感覚は正しい。
しかしあたりまえが通じない世界もある。
それが、「廃れた開発環境」と「リソースの足りないプロジェクト」だ。
204デフォルトの名無しさん
垢版 |
2018/02/23(金) 12:15:48.66ID:E8zJnigo
どしたの急に?
2018/02/23(金) 12:32:39.13ID:AiDQ1wxe
Excel2010以降で、コンテキストメニュー追加するとき
commandbars().add
でコメントを右クリックした時のメニューは()の中は何になりますか?
206デフォルトの名無しさん
垢版 |
2018/02/23(金) 22:05:45.08
コメントを右クリックの意味がわからん
207デフォルトの名無しさん
垢版 |
2018/02/23(金) 22:09:49.60ID:NDjRlvGW
まずコメントって知ってるか?
2018/02/23(金) 22:21:14.89ID:LlcGT0P+
日本語崩壊しててワロタ
209デフォルトの名無しさん
垢版 |
2018/02/24(土) 00:24:56.44
ひょっとして、無指定だと何のショートカットキーが表示されるか(「開く(O)」みたいなの)を聞きたいのではなく(表示されないやろ…てか試せばよくね?と思ってた)、
commandbarsの引数に何を指定すればVBAのエディタのコメントを右クリックしたときのコンテキストメニューに項目を追加できますか?っていう質問なのか?
何の質問をしているのかまったく分からなかったが、がんばって一番意味が通りそうな解釈をしてみた
210デフォルトの名無しさん
垢版 |
2018/02/24(土) 00:54:26.24ID:S7UxFmQS
よく頑張った、もう少しで賞を差し上げます
211デフォルトの名無しさん
垢版 |
2018/02/24(土) 03:12:36.02ID:Cy5WZ5pS
どなたか知恵をください
日本語IMEの変換候補がドロップダウンリストで出てくるアレを
区切り記号入れて(カンマがいいかな)
一つのセルに列挙できませんかね?
例えばA1に半角英で「yama」と入力したら
B1に「山,ヤマ,やま,耶麻,耶摩,八馬,矢間」みたいな
2018/02/24(土) 03:35:37.11ID:39HZSDcZ
>>211
できる
基本的にはImmGetCandidateListかImmGetConversionListを使う
IMEの制御はドロ沼だからあんまり完璧を求めないようにほどほどにな
213デフォルトの名無しさん
垢版 |
2018/02/24(土) 04:09:09.96ID:Cy5WZ5pS
>>212
即レスありがと!
そこのリファレンス読んでくるわ!
214デフォルトの名無しさん
垢版 |
2018/02/24(土) 23:15:34.68ID:KQx6tQtJ
MACでエクセルを使用して、ボタンクリックでphpを実行させてデータを取得してエクセル
に出力する方法を教えて下さい。
2018/02/25(日) 02:02:21.78ID:fGofbzeE
モスじゃだめなのかい?
216デフォルトの名無しさん
垢版 |
2018/02/25(日) 07:39:33.73ID:tVogG6Wu
寒っ
2018/02/25(日) 10:24:12.12ID:jtYvuOjV
今日は暖かいよ
218デフォルトの名無しさん
垢版 |
2018/02/25(日) 10:56:06.58ID:tVogG6Wu
寒っ寒っ!!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況