Excel VBA 質問スレ Part39 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/11/27(金) 20:36:45.35ID:9HV+ag/s___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人・作成依頼が嫌な人は別スレ建ててください。
※前スレ
Excel VBA 質問スレ Part38 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/
0002デフォルトの名無しさん
2015/11/30(月) 19:06:16.48ID:zHM+I8Nt0003デフォルトの名無しさん
2015/11/30(月) 21:18:18.94ID:QHANvkhd0004デフォルトの名無しさん
2015/12/01(火) 19:27:05.42ID:m+Ed34Zj前スレで大量のセルを処理するときは配列に入れろみたいな書きこみを見ましたが、配列が役に立つ局面を教えていただけないでしょうか。
よろしくお願いします
0005デフォルトの名無しさん
2015/12/01(火) 20:28:12.95ID:eT3ZeD+F配列処理はワークシートのレイアウトとかと無関係に独立したライブラリにしやすい。
0006デフォルトの名無しさん
2015/12/01(火) 21:07:28.65ID:3m4PeF6rZ80エミュレータからやり直せ。
0007デフォルトの名無しさん
2015/12/01(火) 21:20:20.66ID:bdqEzHLJそもそもエクセルのセル自体が広義の意味では2次元配列そのものなので
エクセルを使うという事はすなわち配列を使うことに他ならないわけです。
(A1セル一個しか使わないというなら話は別ですが、そんな人はまず居ないでしょうし。)
貴方の言う「配列」がVBAにおける「配列変数」の事であれば、
連続したデータを順に扱う、
複数のデータに対して繰り返し同じ処理をする、
といったような操作をする際には
配列変数は非常に便利(というか無しではお話にならない)です。
0008デフォルトの名無しさん
2015/12/01(火) 23:23:09.59ID:DoIn4zBF例えばワークシートに値を入力するときに
Worksheets(1).Name = "2ちゃん"
でシート1のシート名が変更されますよね。でもオブジェクト名のsheet1を使っても変更できますよね。
オブジェクト名を変えた場合にWorksheets(1)かどうか確認するのはどうやったらいいんでしょうか。
シートのプロパティウィンドウみてもオブジェクト名は書いてるけどWorksheets(1)かどうか載ってない
0009デフォルトの名無しさん
2015/12/01(火) 23:41:37.98ID:VMDnA6sJDebug.Print Worksheets("sheet1").Index
ちなみに index値は シートタブの左から 1 2 3 ・・・・
となりますので シートオブジェクトと index値は常に 一致するとは限りませんよ
0010デフォルトの名無しさん
2015/12/01(火) 23:44:42.53ID:6iNC03K1(たとえば、2015と12と入れればその下に
1
火
2
水
といったぐあいに31日まで出力してくれるようなのを目指してます)
自分なりに組んでみたのですが、なかなかうまくいきません
Offsetが悪いのかな、とも思うのですが代替案が浮かびません、どうか助言をお願いします
Excel2013です
Sub Sample()
Dim a As Range
Dim b As Variant
Dim u As Integer
Dim v As Integer
Dim w As Integer
Dim x As Integer
Dim y As Integer
Dim z As Integer
v = 0
w = Range(
0011デフォルトの名無しさん
2015/12/01(火) 23:48:55.25ID:DoIn4zBFそれではWorksheets(1)というのはシートタブの1番左という意味でいいのでしょうか?
0012デフォルトの名無しさん
2015/12/01(火) 23:49:02.31ID:6iNC03K1w = Range("B1")
z = Range("D1")
If z = 2 And Day(Dateserial(w,2,29)) = 29 Then
y = 29
Else: y = 28
If z = 4 Or 6 Or 9 Or 11 Then
y = 30
Else: y = 31
End If
End If
For x = 1 To y
w = v * 2
Range("B3").Offset(0,w) = x
b = "Weekday(w,z,x)"
u = w + 1
Range("B3").Offset(0,u) = b
Next x
End Sub
0013デフォルトの名無しさん
2015/12/01(火) 23:52:23.38ID:VMDnA6sJそゆこと
ちなみにこれで確かめてみればどうかな?
Debug.Print Worksheets(1).Name
シート名が返ります
0014デフォルトの名無しさん
2015/12/01(火) 23:57:05.93ID:DoIn4zBFなるるー
イミディエイトで確認できました!ありがと
0015デフォルトの名無しさん
2015/12/02(水) 00:19:38.80ID:iA4P55nLこんなかんじ?
日と曜日は別の列のほうが良い気もするけど(セルの書式が違っちゃうから)
Sub test()
Dim yr As Long
Dim mo As Long
Dim dy As Long
With ThisWorkbook.Sheets(1)
.Cells(3, 2).CurrentRegion.Clear
yr = .Range("B1")
mo = .Range("D1")
For dy = 1 To Day(DateSerial(yr, mo + 1, 0))
.Cells(dy * 2 + 1, 2) = dy
.Cells(dy * 2 + 2, 2) = DateSerial(yr, mo, dy)
.Cells(dy * 2 + 2, 2).NumberFormatLocal = "aaa"
Next dy
End With
End Sub
0016デフォルトの名無しさん
2015/12/02(水) 00:29:46.76ID:YKAbvKrpありがとうございます
こんなに簡素化できるものなんですね……精進します
0017デフォルトの名無しさん
2015/12/02(水) 00:33:35.11ID:BpyWczK7添削してみた
変数はわかりやすい名前にした方が良いと思うぞ
If z = 2 And Day(DateSerial(w, 2, 29)) = 29 Then
y = 29
Else: y = 28
If z = 4 Or z = 6 Or z = 9 Or z = 11 Then '変更
y = 30
Else: y = 31
End If
End If
For x = 1 To y
v = x * 2 '変更
Range("B3").Offset(0, v) = x
b = Weekday(DateSerial(w, z, x)) '変更
u = v + 1
Range("B3").Offset(0, u) = WeekdayName(b) '変更
Next x
001817
2015/12/02(水) 00:34:44.42ID:BpyWczK7>>12 さんへね
0019デフォルトの名無しさん
2015/12/02(水) 00:38:55.45ID:iA4P55nLとりあえず年(仮にyrとする)と月(仮にmoとする)が定まれば
Day(DateSerial(yr, mo + 1, 0))
つまり、翌月のゼロ日(1日の前の日)を求める事で、
その月の日数をエクセルが自動的に出してくれるんですよ
あと、セルの書式設定も日と曜日が別の列なら
曜日の列だけをNumberFormatLocal = "aaa"でいっぺんに設定できます
例えば曜日をC列にするなら
.Columns(3).NumberFormatLocal = "aaa"
だけで済むわけです
>>15みたいにループの中で1セルずつ変更するってのは
あまり格好良いもんじゃないですよね?
0020デフォルトの名無しさん
2015/12/02(水) 10:37:37.63ID:CO7jH6lO叩かれること覚悟で書きますが、同じ処理の繰り返しなら配列変数ではなくても、for next
とかfor eachステートメントでは、望ましくないのでしょうか?
00217
2015/12/02(水) 11:33:14.55ID:ZeoaW+75番号で指定すると言うことは
配列変数との親和性が高いと思いませんか?
既に言及したとおり、
エクセルのセルは2次元の配列ですから、
セルに対してfor next で繰り返し処理をするというのは
まさしく配列操作そのものなのです。
もし、広義の配列そのものではなく、
redimで宣言する狭義の配列変数のみについて
有効性を論じたいと言うのであれば、
セルに代入するよりも速度が速いとか
メモリの消費量が少ないとか、
3次元以上の配列を扱いたいケース
(まぁ、多次元配列は遅いらしいですけど)
とか、そんな理由があげられますね。
とはいえ、配列など不要だと思うならば
無理に使う必要は無いですし、
その辺は使う人の自由ですよね。
0022デフォルトの名無しさん
2015/12/02(水) 11:50:42.44ID:tBPWNP4P配列を使わず for next とはどのようなものを想定しているんですか?
00234
2015/12/02(水) 12:15:32.57ID:IdfHYqnbてっきり、配列とは
Dim i(5) as long
みたいなものだけを指すと考えており、上手い使い方がよくわかっていませんでした
0024デフォルトの名無しさん
2015/12/02(水) 12:32:59.22ID:1aVlPH12そういう固定長配列とReDimで作る可変長配列がある。>>21氏の言うところの狭義の配列ですね。
「For Nextも配列だっのですか」という文は意味不明ですが、何かを勘違いしてる?。
0025デフォルトの名無しさん
2015/12/02(水) 13:35:58.72ID:ES2jo2hu演算子を変数に格納することはできませんか?
b = ”<=”
If n & b & 10 then
みたいに使いたいのですが、型が一致しませんというエラーとなります。
00267
2015/12/02(水) 14:29:54.99ID:xdo22nBPでいけます
0027デフォルトの名無しさん
2015/12/02(水) 15:59:46.36ID:IdfHYqnb自分にとって配列とは狭義のものと、(A1:C5)みたいなものだけをだけだと思ってました。
Fornextは、配列と関係ないと考えてました
0028デフォルトの名無しさん
2015/12/02(水) 17:50:57.38ID:megPAB6Iありがとうございました!
0029デフォルトの名無しさん
2015/12/02(水) 18:37:30.73ID:l3wtZpWO配列を別の変数に格納するときは、次のようなコードで大丈夫でしょうか?一応テストでは成功していますが、なんとなく作って出来てしまったもので、、使い方が危ない場合、ご指摘お願いします。
dim varA as variant
redim a(10,0)
redim b(10,0)
if n = 0 then
varA = a()
else
varA = b()
end if
0030デフォルトの名無しさん
2015/12/02(水) 19:04:11.72ID:1aVlPH12varA = a、varA = bでいい。後ろの()は不要。varAはVariantだからそれでいける。
代入したものは元の配列のコピーであって別物だよ。コピーする意味はあまりないと思うけど?
0031デフォルトの名無しさん
2015/12/02(水) 19:26:54.23ID:UPwzPe+Lありがとうございます。助かりました!
a.bは既に要素が入ってる配列のつもりでした。
後に場合分けで参照するときにコード短縮の為に変数格納しました。
少し書き方が悪かったですね。すいません。
0032デフォルトの名無しさん
2015/12/04(金) 14:58:36.71ID:R21wXbu/0033デフォルトの名無しさん
2015/12/04(金) 17:23:30.92ID:gPECvysoできるシリーズのヤツ
お勧めはしないけど
0034デフォルトの名無しさん
2015/12/04(金) 18:25:37.86ID:R21wXbu/0035デフォルトの名無しさん
2015/12/04(金) 19:42:49.81ID:otf7riqF0036デフォルトの名無しさん
2015/12/04(金) 19:59:12.15ID:sb8rC8Nqある程度使える様になってから逆引き辞典買ったけど余り役には立ってない
0037デフォルトの名無しさん
2015/12/05(土) 04:12:41.80ID:CzoZcA89ネットが今ほど充実してなかった大昔ならいざ知らず
ほとんどマクロの記録とネットでの検索で十分だしね
ま、構文の文法すら分らない超初心者なら
適当な入門書は読んだ方が良いとは思うけど
0038デフォルトの名無しさん
2015/12/05(土) 07:09:21.83ID:r4Zj1qpg入門書なら最近でたVBAの神様オススメ
小説仕立てで楽しく読み進められる
0039デフォルトの名無しさん
2015/12/05(土) 09:12:30.30ID:R3VpKF0Eやはり一度はしっかりとした言語仕様とリファレンスの本読みたいね
自分も知らずにEvaluateとか自作してしまったし
0040デフォルトの名無しさん
2015/12/05(土) 18:36:02.45ID:kpxGhXzNスゲー
どうやったら出来るのかソーゾーも出来ない。
俺だったら精々不等号のパターン4つかそこらの場合分けで条件分岐させるのが関の山で、evaluateみたいに文字列で自由に式評価させるなんてとても無理だ。
0041デフォルトの名無しさん
2015/12/05(土) 19:51:10.55ID:xfTuOD8g第三者に見られる環境ならば逆に他人のコードも見れるって事じゃないか、見て盗め
0042デフォルトの名無しさん
2015/12/05(土) 22:14:54.16ID:2rD0PXa4Evaluate自作なんて無理でしょ。というか目指すべきことじゃないよ実行時に意味が確定するなんて。
0043デフォルトの名無しさん
2015/12/06(日) 01:02:05.80ID:RRzw5NLa乗算の度に小数点以下の切り上げを行う(しない場合もある)必要があって、
しかも計算式をユーザーが入力するというツールを作る際に使った
0044デフォルトの名無しさん
2015/12/06(日) 01:19:20.97ID:Rb3lVfqw0045デフォルトの名無しさん
2015/12/07(月) 09:13:19.44ID:jD12UvhK寿司奢るって言われて
コンビニの納豆巻き一本渡されるぐらいのガッカリ感だな
0046デフォルトの名無しさん
2015/12/07(月) 21:09:19.70ID:6aFt31sh四則計算のみ(括弧対応)のEvaluate
https://ideone.com/imts1M
あまり使ってないから正しく動くかどうかは保証しない
0047デフォルトの名無しさん
2015/12/08(火) 11:48:40.10ID:W1o0a1vT0048デフォルトの名無しさん
2015/12/08(火) 19:21:03.28ID:ZPfyD2axhttp://i.imgur.com/ctFP56p.png
0049デフォルトの名無しさん
2015/12/08(火) 19:24:33.40ID:eOnXmxYQ0050デフォルトの名無しさん
2015/12/08(火) 19:45:20.81ID:WQt5IVqj3 とか -3 をそのまま打てばいいやん w
0051デフォルトの名無しさん
2015/12/08(火) 19:52:00.68ID:8bkF9KCf例えばVBAで
A1に○○代入(数値)
A2に○○代入(数値)
〜
A20に○○代入(数値)
B1セルの値をB2に代入
みたいなVBAがあるとして
ここでB1セルにはA1〜A20を使ってifとか色々な関数使った長い式があるとする
この場合にB1セルの計算が終わる前にVBAが追い越して数値を代入することってありえるの?
0052デフォルトの名無しさん
2015/12/08(火) 19:55:43.49ID:ZPfyD2ax=if(a3>a2,3,-3)を入力しても無理だった・・・
0053デフォルトの名無しさん
2015/12/08(火) 19:57:18.42ID:J4OFLa1h同時には実行されないから、関数よりもマクロが先に実行される仕組みならマクロが先に代入する。
>>52
VBAの話題ではない。
0054デフォルトの名無しさん
2015/12/08(火) 20:50:48.64ID:4cJ0X+3R無理って何だよ?それでいけるだろ
0055デフォルトの名無しさん
2015/12/08(火) 21:36:53.02ID:KvNJeD9mセルの書式が文字列とかじゃね
0056デフォルトの名無しさん
2015/12/08(火) 21:49:08.87ID:46EuwWyR計算方法が自動なら
> A1に○○代入(数値)
で再計算が行なわれる
以下
> A20に○○代入(数値)
まで、20回計算される
なので
> この場合にB1セルの計算が終わる前にVBAが追い越して数値を代入することってありえるの?
なんてことはない
20回も計算するのは時間がかかってしょうがないと言う時は、最初に Application.Calculation = xlCalculationManual とかして計算しない様にしておいて、A20 に代入したあとで、Application.Calculate とか実行しすると計算は1回ですむ
0057デフォルトの名無しさん
2015/12/09(水) 01:33:16.84ID:bb4JBp1rなるほどなー
要するに、VBAでセルに数値が代入される→数値が変わった時点でセル内の再計算→またVBAに戻る
って感じか。なるほどなるほど。ありがと
0058デフォルトの名無しさん
2015/12/09(水) 01:56:13.57ID:A8KFlPn0=if(c3>c2;3;-3)
どうもありがとう
0059デフォルトの名無しさん
2015/12/09(水) 02:02:30.52ID:ZB9BGZbY0060デフォルトの名無しさん
2015/12/09(水) 11:36:59.80ID:NOtadkaSどうすればよいですか?
マクロにしたいのは数式の上書き部分だけです
0061デフォルトの名無しさん
2015/12/09(水) 12:25:31.08ID:ZB9BGZbY例えばC列に数式を入れたいときは
Range("C1").Formula = "=VLOOKUP(B1,A:A,1)"
みたいに数式を文字列にしてセルのFormulaに入れればいい
0062デフォルトの名無しさん
2015/12/09(水) 16:22:59.08ID:NOtadkaSありがとうございます。
0063デフォルトの名無しさん
2015/12/09(水) 16:59:02.21ID:bb4JBp1r0064デフォルトの名無しさん
2015/12/09(水) 17:09:37.89ID:h+7RpR46マジレスすると、ギャンブルするような学生はいらんってことになるな
0065デフォルトの名無しさん
2015/12/09(水) 17:21:13.51ID:bb4JBp1rやっぱり印象悪いかな
データ集めて統計使って指数出したりするの好きなんだよな
0066デフォルトの名無しさん
2015/12/09(水) 17:57:02.43ID:h+7RpR46さらにマジレスすると、独創的なアルゴリズムを使った予想をしているならそのアルゴリズム
その、実装がむずかしいとされているものを既存のアルゴリズムを用いて実装したり(遺伝的
アルゴリズムでNSPを解決するなど)があるなら、アピールポイントになると思うよ
0067デフォルトの名無しさん
2015/12/09(水) 22:32:23.05ID:ulePTNdz自分も入社時に現場叩き上げの人直々に面接されたが、WindowsのGUIアプリをフロッピーで持っていった所、
結局何が書いてあるのか分からなかったのか見てもらえなかったし
Unixの知識についてはあれこれ聞かれたが
IT業界以外ならVBAを使いこなせます、アプリ作ったことありますってだけで十分アピールポイントになると思うよ
VBAって何?SQLって何?ってことになる可能性があるからそこら辺はしっかり予習した方がいいと思うけど
0068デフォルトの名無しさん
2015/12/10(木) 04:22:52.80ID:LKPBxMee人生相談ならよそでやってくれ
0069デフォルトの名無しさん
2015/12/10(木) 05:00:47.29ID:00S+xOQk技術的なことなら筆記試験や小論文で判断できる
重要なのは「何をやったか」という内容じゃなくて、それをどう説明するかっていう、プレゼンまでは行かなくても話し方が見られてる
0070デフォルトの名無しさん
2015/12/10(木) 07:11:06.38ID:DygANkW8できる新人なんてほんと稀
できますって入ってきた奴が作ったものはバグだらけ
未経験のほうがよっぽどバグが少ない
まあこんなこともあるから経験の有無なんてほとんど誤差
0071デフォルトの名無しさん
2015/12/10(木) 08:00:18.24ID:+sdtvmJJ面白がってはくれるだろうね。
採用につながるかは分からんが。
0072デフォルトの名無しさん
2015/12/10(木) 13:03:32.27ID:uuSHmo9z画面ロック中(スリープ後など)だけ、なぜかSELECT要素が参照できなくなります
他のINPUT要素などは問題なく参照できます
IE8からIE11に変えてから起きるようになった気がします
できるだけIE11で行いたいのですが、何が原因でこのようなことが起きるのでしょうか
0073デフォルトの名無しさん
2015/12/10(木) 16:23:47.48ID:vMPjIzZKセルにコピペした、上記のようなラベルを含むハイパーリンクを正常に機能させたいのですが、
「#」が「-」に置き換わっているような挙動をして意図したページが開けません。
ハイパーリンクの編集で確認しても上記の通り入力されています。改善方法はあるでしょうか?
0074デフォルトの名無しさん
2015/12/10(木) 16:26:05.28ID:kl2q0NOfこのリンクはクリックするなよ
007573
2015/12/10(木) 16:30:40.32ID:vMPjIzZK0076デフォルトの名無しさん
2015/12/10(木) 20:33:09.52ID:GTbd/bMS連想配列が使えることを知ったのだけど
動的配列(要素を放り込むと勝手に伸びていく配列)はないですかね
普通の配列は、要素数を決めてDimなりReDimなりしてからでないと
使えなくて不便で…
0077デフォルトの名無しさん
2015/12/10(木) 20:37:45.04ID:m24vGLChないと思うけどDictinaryではダメなポイントは何?
0078デフォルトの名無しさん
2015/12/10(木) 20:39:24.26ID:CRNEQuUV標準で使えるのはCollectionかな。
動的配列はByRefで渡した先で要素数を変更出来るので、
これを利用して自分で配列伸ばす関数作る事も出来るけど。
0079デフォルトの名無しさん
2015/12/10(木) 21:02:59.81ID:GTbd/bMSDictionaryは要素の格納順が保証されないというのがネックです
例を挙げると、印刷すべきシート名を条件判断で選別しながら配列に放り込んでいき
最後にFor Eachで格納順に印刷する、というような処理があります
>>78
Collectionを調べてみます
ありがとうございます
0080デフォルトの名無しさん
2015/12/10(木) 21:11:34.59ID:CRNEQuUV0081デフォルトの名無しさん
2015/12/10(木) 21:50:20.75ID:LgWPhvQBなんだ、その程度の配列サイズと頻度か。
だったら (配列, 追加する要素) を引数にとって、要素がひとつだけ大きい配列を返す関数を作ればいい。
効率なんか考えなくてOK。
0082デフォルトの名無しさん
2015/12/10(木) 22:14:34.44ID:Ek2aQ7ctmyArray(5, i), myArray(5, i+1), myArray(5, i+2) の最大値を求めるのはworksheetfunction.Maxを使えばいいですが、
最大値の i を求めるスマートな方法ってありますか?
例えば、myArray(5, 2), myArray(5, 3), myArray(5, 4)の最大値となる(5,?)を求めたい時、
i=2
dblMax=WorksheetFunction.Max(myArray(5, i), myArray(5, i+1), myArray(5, i+2))
for j=i to i+2
if dblMax=myArray(5, i) then
debug.print i '最大値をとるときのi
EndIf
Next j
って書くのもなんか泥臭いというか素人っぽいというか・・・
0083デフォルトの名無しさん
2015/12/10(木) 22:20:17.87ID:CRNEQuUVk = 1
For i = 1 To 10
If myArray(5, k) < myArray(5, i) Then k = i
Next
Debug.Print k
End Sub
よく分からんがこういう事か?
0084デフォルトの名無しさん
2015/12/10(木) 22:39:25.36ID:Ek2aQ7ct早速どうも。コードありがとうございます。
myArray(1,1) = 3
myArray(1,2) = 5
myArray(1,3) = 4
のとき、For文でしらみつぶしに調べることなく、
最大値となる(1,2)などを返す方法はないかなと思ったのです。
0085デフォルトの名無しさん
2015/12/10(木) 22:48:15.01ID:CRNEQuUV既にソートされているとか、そういう前提条件がない場合は虱潰し以外の方法はない。
素人くさいコードを書きたくないなら、VBAを見よう見まねで触る前に電子工学を学ぶ事をお勧めする。
0086デフォルトの名無しさん
2015/12/10(木) 23:06:09.69ID:Ek2aQ7ct端的な回答ありがとうございました。
前提条件はないので、シラミ潰しします。
素人なので素人臭くないスマートなコードに憧れます。
この発想が素人臭いのかもしれませんがw
0087デフォルトの名無しさん
2015/12/11(金) 01:01:09.23ID:Gc5rivvs0088デフォルトの名無しさん
2015/12/11(金) 12:01:23.27ID:e4IICcKihttp://officetanaka.net/excel/vba/tips/tips98.htm
0089デフォルトの名無しさん
2015/12/11(金) 12:29:13.10ID:Wogf6bzXMSDN見てみたが、これ使えるのかな?
ArrayList.Sort (IComparer)
指定した比較演算子を使用して、ArrayList 全体内の要素を並べ替えます。
0090デフォルトの名無しさん
2015/12/11(金) 13:44:45.39ID:mI4o0uWv帰って調べてみよ。
0091デフォルトの名無しさん
2015/12/11(金) 14:19:39.54ID:UJeMV01i>>82です。Match引数を配列とすることもできるんですね。
でもあるサイトで配列を引数とするとちょっと遅いみたいな記述がありちょっと心配ですが。
>>88
横からですが便利そうですね。
0092デフォルトの名無しさん
2015/12/11(金) 22:44:49.09ID:fIX9Jv1V式は適当です
条件1の時
if cells(1,1) = cells(2,1) then
条件2の時
if cells(1,1) = cells(2,1) and cells(1,2) = cells(2,2) then
条件3の時
if cells(1,1) = cells(2,1) and cells(1,2) = cells(2,2) and cells(1,3) = cells(2,3) then
条件nの時
if cells(1,1) = cells(2,1) and cells(1,2) = cells(2,2) and ... and cells(1,n) = cells(2,n) then
てな具合に、判断する項目が増減する時、
スマートな条件式を記述する方法ってありませんか?
0093デフォルトの名無しさん
2015/12/11(金) 23:03:48.59ID:Kp08ZeACもっと具体的でないとスマートな(効率的な)式が分からないけど、
例にしているものをコードにするなら
Function Test() as Boolean
For Each x In Range(Cells(1, 1), Cells(1, Columns.Count).End(xlToLeft))
If x <> x.Offset(1, 0) Then Exit Function
Next
Test = True
End Function
か
Function Test(cond As Long) As Boolean
For i = 1 To cond
If Cells(1, i) <> Cells(2, i) Then Exit Function
Next
Test = True
End Function
かな。
0094デフォルトの名無しさん
2015/12/12(土) 01:48:04.85ID:FuRVZgYl1.表示されたページのAタグの中からキーワードを抽出してクリック
2.ページが表示されたら、そのままプルダウンなどを選択してクリック
と連続して操作させたいのですが、Aタグから抽出してクリックはできるものの、
その後デバッグになってしまい以降の処理が連続で行えません。
Set objA = objIE.Document.getElementsByTagName(
0095デフォルトの名無しさん
2015/12/12(土) 01:49:15.80ID:FuRVZgYlFor n = 0 To objA.Length - 1
If InStr(objA(n).OuterHTML, "キーワード") > 0 Then
objA(n).Click
Exit For
End If
Next
Set objA = Nothing
このあとにデバックしてしまいます…
0096デフォルトの名無しさん
2015/12/12(土) 02:09:55.86ID:D2WGnzzU>>デバッグになってしまい
エラーになるって意味かな?
エラーになるコードはどれ?
もしかして
Set objA = Nothing
した後でobjAへオブジェクトをセットしないで
objA使ってたりしない?
0097デフォルトの名無しさん
2015/12/12(土) 13:20:27.33ID:7OCEnpiZこれってどうやって作ってる?
0098デフォルトの名無しさん
2015/12/12(土) 13:33:18.20ID:Yc8YF04u作った本人に聞くべきだけど、たぶん普通のゲームの作り方そのままじゃないの。
0099デフォルトの名無しさん
2015/12/12(土) 20:28:13.88ID:/A1wTFJW回答ありがとうございます。
やってみます。
0100デフォルトの名無しさん
2015/12/12(土) 22:56:55.45ID:rj6YNvj2全く分からない。最初見たとき、エミュレータにExcelに見えるガワみたいなものを持たせたのかと思ったけど、
選択されたCellに対してのみBGが配色されているところ、BGの中でも木やブロックに配色の影響がないところを見ると、単純にエミュレータと言う訳でも無さそう。
ただ2面目でExcelの操作中にマリオが少し動くところを見ると、Excelとマリオは別スレッドで動いているのかもしれない。そうなると、
マリオはExcelの機能で動かしている訳ではないのではないかと思える。
でもここまできっちり作るには、もしエミュレータを利用していたとしても、少なくともファミコンのパレット機能を知っていなければならないし、
エデイト機能も持たせてあると言っていることから、
BGとその当たり判定のメモリへの展開も知っていることになる。
でも多分この人は自前で作ってるっぽい。何故ならCellの配色がBGの更に後ろにあって、Excelの機能と思しきものがファミコンの機能と思えるところの
更に奥に食い込んでいるように見えるから。
結論を言うとちょっと信じがたい話だけど、見よう見まねか、解析したか分からないけど、マリオをOpenGLみたいなものでキチンと作って
それをExcel上で動かしているのではと推測する。でもあくまで俺の推測だから本当のところは分からないよ。
0101デフォルトの名無しさん
2015/12/19(土) 09:12:27.95ID:C2ZsZsZchttp://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
■ このスレッドは過去ログ倉庫に格納されています