トップページtech
1002コメント383KB

Excel VBA 質問スレ Part39 [転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2015/11/27(金) 20:36:45.35ID:9HV+ag/s
ExcelのVBAに関する質問スレです

                   ___
       ___      /____ヽ      ____
      /____\    | |´・ω・`| |    /___ヽ
      .l |´・ω・`|  ニX二 . ̄ ̄ ̄  二X二  |´・ω・`| l 俺たちに任せろ
      !、 ̄ ̄ ̄  ヽ   |       |    /    ̄ ̄ ̄/
       ヽ_/ヽ、  ヽ__)  \__/\_/.   /_/  ノヽ_/
             ̄                ̄ ̄

このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。

コードが嫌な人・作成依頼が嫌な人は別スレ建ててください。

※前スレ
Excel VBA 質問スレ Part38 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/
0342デフォルトの名無しさん2016/01/10(日) 17:51:41.19ID:wKvoM5NG
おれはVBAしか使えない
他言語どころか
Excelのピボットテーブルも入力規則も使ったことが無い
それどころかワークシート関数すら覚束ない
でもVBAだけで給料もらえるから問題なし
0343デフォルトの名無しさん2016/01/10(日) 18:07:03.32ID:W+alusTR
まぁ本人がその給料で満足してるならそれでいいんじゃないだろうか。

幾ら貰ってるかは知らないけど。
0344デフォルトの名無しさん2016/01/10(日) 18:43:22.48ID:KeJgEHCD
プログラマー気取りで変なプログラミング講釈する人うざいです
0345デフォルトの名無しさん2016/01/10(日) 21:31:31.28ID:NoYOPUfs
プログラマー気取りっていうか、VBAをプログラムというと変にファビョる人いるよね
「VBAがプログラムwwあれをプログラムと呼んだら駄目っしょ笑」みたいな人たまにいる
0346デフォルトの名無しさん2016/01/10(日) 22:07:49.93ID:fKRpFEpV
まあVBAは便利だけど子供のおもちゃみたいに思われているからね
マイクロソフトは勿体ないよな
ビジネスに発展させるには素人にスゲーと思わせてナンボなのに、
新卒の研修にちょっくら使わせてみるかみたいなイメージになってしまっている
0347デフォルトの名無しさん2016/01/10(日) 22:08:12.25ID:xRSSZTjv
>>342
Excelは入出力のインタフェースに過ぎないっていう使い方かな?

>>345
一種のコンプレックスのあらわれなんだろうか。
VBAは言語としてダメな点は多いけどね。
0348デフォルトの名無しさん2016/01/10(日) 22:55:42.57ID:agiL7Ile
For Application ってだけあって付属言語だからね
エクセルがあればすごいんです(キリ って感じ?

OS上で直接動く言語から見たら頭ポンポンしたくなるだろ
0349デフォルトの名無しさん2016/01/10(日) 23:08:46.92ID:+vbjBZah
Excelの企業シェアにあぐらをかいてる言語だという認識は間違っていないと思う
0350デフォルトの名無しさん2016/01/10(日) 23:12:22.88ID:+vbjBZah
ExcelはVBAも含めて基本PC1台で使うもの その点を忘れてはいけない
0351デフォルトの名無しさん2016/01/10(日) 23:32:51.77ID:nfQKqPqr
>>350
>>344
0352デフォルトの名無しさん2016/01/11(月) 01:59:22.45ID:AWAF7CGx
目下の疑念はOS上で動くものを「直接」と表現していいのかどうかという事だ
0353デフォルトの名無しさん2016/01/11(月) 07:21:46.06ID:gsKg8O84
VBAのダメ出ししてる人ってIDispatch経由で動かした場合どういう反応になるんだ
出来ること全く変わらんのだが
0354初心者A2016/01/11(月) 08:26:22.84ID:HLjXNd8w
'ワークシートの存在確認、削除、追加をするプログラム
Option Explicit
Const sheet3name = プロット(■前後のダブルクオテーション略!)

Sub Macro1()
Dim ws As Worksheet
Dim chart1 As Worksheet

Application.DisplayAlerts = False
For Each ws In Worksheets
If ws.Name = sheet3name Then
If Worksheets.Count > 1 Then
ws.Delete
Else
GoTo Label1
End If
End If
Next
Application.DisplayAlerts = True

Set chart1 = Worksheets.Add
ActiveSheet.Name = sheet3name

Label1:
End Sub
0355初心者A2016/01/11(月) 08:28:53.39ID:HLjXNd8w
ワークシートの存在確認、削除、追加をするプログラム
を作りました。
http://ww10.puny.jp/uploader/download/1452467710.zip
パスワード:abc

■やりたいこと
ワークシートの存在確認、削除、追加をするプログラムを
グラフシートの存在確認、削除、追加をするプログラムに修正したい。
For〜Nextの部分をどう、修正したらいいか、ご教授お願い致します。

修正前(ワークシート)
Dim ws As Worksheet
Dim chart1 As Worksheet
Set chart1 = Worksheets.Add
ActiveSheet.Name = sheet3name
修正後(グラフシート)
Dim ws As Chart
Dim chart1 As Chart
Set chart1 = Charts.Add
ActiveChart.Name = sheet3name 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0356初心者A2016/01/11(月) 10:13:11.60ID:HLjXNd8w
難しく考えすぎました。自己解決しました。

'グラフシートの存在確認、削除、追加をするプログラム
Option Explicit
Const sheet3name = プロット(■前後のダブルクオテーション略!)

Sub Macro1()
Dim ws As Chart
Dim chart1 As Chart

Application.DisplayAlerts = False
For Each ws In Charts
If ws.Name = sheet3name Then
ws.Delete
End If
Next
Application.DisplayAlerts = True

Set chart1 = Charts.Add
ActiveChart.Name = sheet3name
End Sub
0357デフォルトの名無しさん2016/01/11(月) 11:19:37.13ID:eiYfk44d
>>353
素のままのVBAじゃなくて、そういう弄らなきゃいけないところをマイナスポイントにするかどうかで変わってくるな。
むしろプラスポイントと見なす人もいるかも知れんが。
自分は不満点いろいろある。
0358デフォルトの名無しさん2016/01/11(月) 14:09:09.67ID:np4MR6nO
質問お願いいたします。
ノートPCを閉じてスリープ状態になってしまってもvbaプログラムが止まらないようにする方法はありますか。移動や別の仕事で常にPCを開いとくことができません。よろしくお願いします。
0359デフォルトの名無しさん2016/01/11(月) 14:11:54.26ID:6idxIuPk
これってなに?最強の開発環境くるの?
http://blogs.msdn.com/b/ayatokura/archive/2016/01/09/ga.aspx
0360デフォルトの名無しさん2016/01/11(月) 14:32:56.61ID:grtS6L7L
>>359
そんな過去ネタを今更。
ハッキリ言って糞。使いたいとも思わない。
0361デフォルトの名無しさん2016/01/11(月) 14:38:18.74ID:qDZy1U6Z
>>358
スリープって眠るってことだよ
閉じても眠らない設定にしなさい画面だけ消すとか
0362デフォルトの名無しさん2016/01/11(月) 14:49:09.64ID:db4WHs28
エクセル2016からリレーションシップ機能追加ってマジですか?
0363デフォルトの名無しさん2016/01/11(月) 15:21:48.39ID:Fkm8B5dx
>>358
電源オプション→カバーを閉じたときの動作の選択→バッテリー駆動/カバーを閉じた時の動作を「何もしない」に設定すれば
パソコンを閉じてもプログラムは動き続ける
0364デフォルトの名無しさん2016/01/11(月) 15:43:06.72ID:grtS6L7L
>>362
元々、MSQUERYではやれていたが、実に古臭いUIと仕組みだったからねぇ。
どうなることやら。Accessを殺しに来るのかどうかが注目だがね。
0365デフォルトの名無しさん2016/01/11(月) 16:02:56.77ID:Fkm8B5dx
自社製品を殺してどうする
0366デフォルトの名無しさん2016/01/11(月) 16:17:41.70ID:grtS6L7L
>>365
そもそも、前からAccessについてはその存在について、実際に無くすっていう議論は
出てるんだよ。ユーザの間でも有名な話だぞ。2013が出た時はホッとしたがあの直前
当たり、下手するとそろそろAccessはユーザ数も減ってきており、Excelに統合されて
消えるんじゃないかってね。

この手のアプリってAccessしか実質的に存在しないし、Excelよりもとっつきにくいという
こともあってね。既にテーブル機能は実装されているし、ここにクエリーが本格的に実装
となると、Accessのポジションは危うくなる。
0367デフォルトの名無しさん2016/01/11(月) 17:00:49.67ID:d/8QAidv
accessでできることをエクセルでやろうと思わないけど、一般ユーザーは違うのかな
むしろこれからはビッグデータの時代なので、accessは逆に更に改良されていかないのかな
0368デフォルトの名無しさん2016/01/11(月) 17:23:46.95ID:np4MR6nO
>>363>>361
>カバーを閉じた時の動作を「何もしない」に設定
ありがとうございます。
こちらは、プログラムは動きつづけ、バッテリーも若干節約になるという認識でかまいませんでしょうか?
0369デフォルトの名無しさん2016/01/11(月) 19:03:39.63ID:U/eWhfN7
簡易的なデータベースのシートを提供してくれりゃいいのに。

そうすりゃ無駄に空列とか入れるヤツとか排除できる。
0370デフォルトの名無しさん2016/01/11(月) 19:43:34.53ID:Fkm8B5dx
>>368
基本は液晶が消えたままになるだけだから、そんなに節約にはならない
あと機種によっては閉じたまま計算を続けさせると熱暴走するんで、持ち歩くときはケースに入れず通気に注意すること
0371デフォルトの名無しさん2016/01/11(月) 21:16:15.69ID:N366RwDJ
まー、以前は.Net化して欲しいと思ってたけど、今はどうでもいいや。
.Netで使いたければ外部から触ればいいだけの話だからな。

いつまでもこのままって訳にも行かないだろうけど、そもそもモジュールをフォルダ階層化して扱えない
VBAは
クラスとか沢山作って管理するのに向いてない。
0372デフォルトの名無しさん2016/01/11(月) 23:15:43.34ID:JhD6lfDm
>>320
前後のスペースごと置換すればいいんじゃね
0373デフォルトの名無しさん2016/01/11(月) 23:41:08.19ID:6idxIuPk
ちょっと質問です

例えばA1セルとB1セルの値を抜き出し、C1に (A1の値)〜(B1の値) と表示したいときは

Range("C1") = Range("A1").Value & "〜" & Range("B1").Value

となりますよね。
ここでA1とB1の値が必ず小数点第一のくらいで表示したい時はどうすればいいのでしょうか。
例えばA1とB1が下記の値の場合は
A1=40.123
B1=20

上のVBAだとC1には「40.123〜20」と表示されます。これを「40.1〜20.0」と表示するようにしたいんです。
そういう関数ありますか?
0374デフォルトの名無しさん2016/01/12(火) 00:16:04.17ID:w+wRH2JN
Private Sub hoge()

Range("a1").Value = 40.123
Range("b1").Value = 20.1
Range("c1").Value = Range("A1").Value & "〜" & Range("B1").Value

Range("c2").Value = Format(Range("A1").Value, "###.0") & "〜" & Format(Range("B1").Value, "###.0")

End Sub
0375デフォルトの名無しさん2016/01/12(火) 00:28:30.25ID:1Tg2WctI
>>374
おお
なるほど、そうやるんですね。ありがとうー
0376デフォルトの名無しさん2016/01/12(火) 06:54:03.50ID:ZPc78C3i
>>372
A=グローバル変数
って書かれてるともうダメだし
0377デフォルトの名無しさん2016/01/12(火) 07:49:37.59ID:/ZqCERvo
>>376
VBE上では必ず前後に半角スペースが入ると思うが?
0378デフォルトの名無しさん2016/01/12(火) 08:46:16.41ID:ZXe+fB4P
>>367
俺としては消えてほしくないんだけれどねww

ただ、扱えるカラムや行数増やしたのも、その布石。ただスピードがなwww 現時点
では話にならないし、データベース関数も全く充実していない。

ただ随分前からAccess消えるかもって話は出てるね。
0379デフォルトの名無しさん2016/01/12(火) 09:47:13.68ID:MvXD/tOc
>>377
直後がコンマやカッコだとスペースが入らない
0380デフォルトの名無しさん2016/01/12(火) 10:12:53.76ID:/ZqCERvo
>>379
なるほど。
両側スペースと . と , と ( を個別にやればいいかな。
プレフィクス・ポストフィクスなんてないよね?
0381デフォルトの名無しさん2016/01/12(火) 10:34:26.94ID:+GqIZBzh
もういっその事
VBAのコードを変更(置換)する VBAコードを作っちゃえば?
0382デフォルトの名無しさん2016/01/12(火) 10:57:36.37ID:MvXD/tOc
エディタやワードにコピペして単語の置換機能を使った方が早い
0383デフォルトの名無しさん2016/01/12(火) 12:48:46.20ID:ZPc78C3i
>>377
行末には入らないし、>>379 の言うように , ( ) とかもダメ

>>380
そんなことするぐらいなら「完全に一致する単語だけ検索する」にチェック入れた方がいい
0384デフォルトの名無しさん2016/01/12(火) 12:53:56.70ID:ZPc78C3i
>>367
DBの機能が欲しいだけなら SQL-Server の Compact Edition, Express Edition, LocalDB とかでやればいい
Access って入力画面とか帳票をお手軽に作るツールでしょ
0385デフォルトの名無しさん2016/01/12(火) 14:03:34.59ID:kdR1XWYY
>>305
これ実行すると、v(1) => 1, v(2) => 2, v(3) => Nothingにならないんだ。
わかりづらい。
0386デフォルトの名無しさん2016/01/12(火) 14:33:05.97ID:1Tg2WctI
データベースならSQL+Excelで何とななるってきいた
0387デフォルトの名無しさん2016/01/12(火) 15:09:45.03ID:/ZqCERvo
>>383
ああ、「前後の空白」の"後"の方は行末の場合ダメってことか。失礼した。

>>385
うん、データをシフトする訳じゃなくて見かけ上のインデックスが変わるだけ。
だからデータをコピーしたり範囲を広げたり縮めたりするのは本来は不要な動作。
もうメモリを直接書き換えることにした。
0388デフォルトの名無しさん2016/01/12(火) 15:28:05.64ID:WkQGbLg9
非表示のシート数を数えるマクロは作れないですよね。
0389デフォルトの名無しさん2016/01/12(火) 15:50:17.33ID:FWKIiayM
for eachでworksheet参照してvisibleプロパティみればいい
0390デフォルトの名無しさん2016/01/12(火) 16:10:53.83ID:1Tg2WctI
>>38で勧められてたVBAの神様を今読み終わったんだけど、糞つまらなかった
Amazonのレビューもわりと高評価だが、VBAの参考書ならもっと他にいいのあるだろう
0391デフォルトの名無しさん2016/01/12(火) 17:56:50.78ID:wYSSDoUN
VBAの求人161件の平均最低月給223,100円
http://jobinjapan.jp/job-listing/keyword-vba.html
0392デフォルトの名無しさん2016/01/12(火) 19:36:12.43ID:/ZqCERvo
>>390
MsgBox ("こんにちは") の大間違いって何なん?
0393デフォルトの名無しさん2016/01/12(火) 23:53:13.87ID:iltzJQ7p
call忘れてる辺りかな
0394デフォルトの名無しさん2016/01/13(水) 00:08:28.28ID:NbxXZYkh
他の言語で言う hello world をただの挨拶として認識してるってことかと
0395デフォルトの名無しさん2016/01/13(水) 00:12:12.63ID:NbxXZYkh
んで、hello world をVBAでやるんだったら
 Worksheets("Sheet1").Range("A1").Value = "こんにちは"
まだこっちだ
0396デフォルトの名無しさん2016/01/13(水) 05:12:39.94ID:6j8B4A3/
>>395
EXCEL VBAでやるなら、な
他の言語でもhello worldなんて、MsgBoxで表示と大差ないけど

ちなみに間違いってのは
MsgBox (こんにちわ)
が間違ってるって話じゃないのか
0397初心者A2016/01/13(水) 06:27:10.38ID:hFbJh3ij
自分用に作成したVBAですが、アップします。

2点間距離の差(22).xls
パスワード:abc
http://ww10.puny.jp/uploader/download/1452633400.xls
そのうち削除します。

もっと、わかりやすくプロシージャを分けた方がいいんだろうけど。
素人が見様見真似で作成したものです。
アドバイスなどありましたら、コメント願います。
0398初心者A2016/01/13(水) 07:54:34.97ID:hFbJh3ij
全画面表示ボタンを押した後、印刷プレビューボタンを押すと
閉じるボタンが表示されないので、以下のように修正。

Sub 印刷プレビュー()
Application.DisplayFullScreen = False
ActiveWindow.Zoom = True
DoEvents
ActiveSheet.PrintPreview
End Sub
0399初心者A2016/01/13(水) 08:00:33.92ID:hFbJh3ij
ボタンを挿入するの箇所を修正
.Placement = xlMove
.PrintObject = False
を追加


With chart1.Buttons.Add(20, 50, 80, 25)
.OnAction = "全画面表示ON"
.Characters.Text = "全画面表示(ON)"
.Placement = xlMove
.PrintObject = False
End With

他のボタンも同様
0400初心者A2016/01/13(水) 08:31:29.89ID:hFbJh3ij
ちょっと修正
http://ww10.puny.jp/uploader/download/1452641324.zip
2点間距離の差(23).xls パスワード:abc
0401デフォルトの名無しさん2016/01/13(水) 13:48:54.18ID:2tOFPV9B
>>397
またお前か。
人に見てもらうようなコードを書こうとは思わないのかね。
0402デフォルトの名無しさん2016/01/13(水) 14:02:28.80ID:LYjGdwXl
>>400
ひとつの関数に詰め込みすぎ
もっと分割する
そして20行くらいに収めてforやifのネストは2つまでにする
変数も多すぎて見にくい
0403初心者A2016/01/13(水) 15:46:31.62ID:hFbJh3ij
>>402
>20行くらいに収めてforやifのネストは2つまでにする。
>変数も多すぎて見にくい

今後、心掛けてみます。
スクロールしないとプロシージャ全体が見れないのは、
たしかに見にくいですね。

ありがとうございます。
0404デフォルトの名無しさん2016/01/14(木) 04:33:01.66ID:fK8eMzuy
そんなこと気にしちゃダメ
画面を大きくすればいいんだから
0405デフォルトの名無しさん2016/01/14(木) 04:47:09.57ID:5jp4f0T2
関数は機能毎に分けるものであって行数で分けるもんじゃないぞ
関数名や付随するちょっとした説明を見れば中身を見なくても何する関数か分かるようにするのが美しい
0406デフォルトの名無しさん2016/01/14(木) 08:51:34.23ID:hDrEawni
>>403
プロシージャってのは、別に行数が多いから分けるってもんじゃないぞww

例えばループで何度も同じような大きめの処理をするのであるならば、それは
呼び出す形にして切り分けろって事だぞ。ループの中にダラダラと書いてある
と、それは見辛いってこと。

スクロールしないかどうかなんて問題じゃない。
0407デフォルトの名無しさん2016/01/14(木) 09:20:36.05ID:kariNJk1
行数は目安にはなる。
スクロールしなきゃ全体が見渡せないなんて、結局自分がつらい。
0408デフォルトの名無しさん2016/01/14(木) 10:23:19.25ID:lO54s+mO
行数はあくまで目安だからな
関数を分けるのは機能毎
機能=関数名にしてそれ以外のことはするな
同じ関数名になったらそれは関数を見直したほうがいい
同じようなことをやろうとしてるはず
そうすれば大体20行以内になる
ならないからって分割する必要はないぞ
0409デフォルトの名無しさん2016/01/14(木) 12:40:00.28ID:hPr0+y7s
行数か機能の目安になるわけねーだろw
なんつー嘘つくねんこいつww
0410デフォルトの名無しさん2016/01/14(木) 12:52:34.23ID:q8GDBYq3
巨大モニターを使えば行数多くてもスクロールしなくてよくないか?
0411デフォルトの名無しさん2016/01/14(木) 12:53:35.54ID:hDrEawni
>>410
11インチくらいのMBAで作業でもしてるんじゃね?
0412デフォルトの名無しさん2016/01/14(木) 13:04:14.50ID:q8GDBYq3
MBAとは?
0413デフォルトの名無しさん2016/01/14(木) 13:13:29.52ID:lO54s+mO
>>409
行数が機能の目安になるなんて言ってねーだろww
機能を絞れば行数が短くなるって言ってるんだよw
0414デフォルトの名無しさん2016/01/14(木) 13:23:17.24ID:QLA7f99b
>>412
たぶんマックブックエアーの略
0415デフォルトの名無しさん2016/01/14(木) 13:48:12.51ID:kariNJk1
まー作ってるものが違えば長い短いの基準は変わってくるだろうけど。
自分の場合は10行超えたら不満、30行超えたらリファクタリングを試みる。
ただし機能を外出しするためにPrivateなプロシージャを作ることは極力しない、という方針。
それをしたらただ分けてるだけだからね。
0416デフォルトの名無しさん2016/01/14(木) 13:51:57.39ID:q8GDBYq3
1つのSubの中が長くなって短くしようとするときに
そのSub内で繰り返しのコードが見つかったので
それをさらにそのSubから呼ばれるSub(サブSubと呼ぼう)にしたいとき
単にそのサブSubをPrivate Subにするしか方法はないですか?

理想はそのSubからしか呼ばれないからそのSubの内部にそのサブSubを置きたいのですが。
0417デフォルトの名無しさん2016/01/14(木) 14:15:35.60ID:hDrEawni
>>416
JavaScriptだとそういう書き方は無名関数ってのを使ってよくやるけれどね。
VBAで出来るのかね
0418デフォルトの名無しさん2016/01/14(木) 17:11:17.68ID:ZyMeHqvf
>>416
推奨はされてないけど こんなのはある

GoSub...Returnステートメント
http://officetanaka.net/excel/vba/statement/GoSubReturn.htm
0419デフォルトの名無しさん2016/01/14(木) 18:15:46.06ID:QLA7f99b
>>416
いっそのことモジュール単位で考えて、
ひとつのモジュールの内容をそのSubとサブSubだけにしちゃうとか

メインのSub以外全部Privateにしとけば
他のモジュールにあるSubからは呼べなく出来るじゃん
0420初心者A2016/01/14(木) 18:50:08.19ID:sGJ4yhp5
エクセルVBAの表示画面
解像度:1366px×768pxで46行表示可能なんで、
基本、40行以下ならいいかな。1つのプロシージャ

★2点間距離の差(24)
http://ww10.puny.jp/uploader/download/1452764372.xls
Password:abc
そのうち、削除します。
個人用に作成したものなんで、コードはまとまってません。
0421デフォルトの名無しさん2016/01/14(木) 20:14:23.77ID:os+tW4sX
>>416
そう言うことができる言語はあるけど VBA では無理
そもそもそんな機能をつけるぐらいならその前に改善してほしいところは山ほどあるだろ
我慢して付き合っていくしかない
0422デフォルトの名無しさん2016/01/14(木) 20:47:13.19ID:b/ISwWkG
っていうかmain1_sub1みたいな名前の関数にすればいい

コンボボックスからアクセスできる
main1グループはかためてテキストでつなげておくと
まとまり具合でsubルーチンと状況は変わらん
0423デフォルトの名無しさん2016/01/14(木) 21:18:50.57ID:6VSn4vPy
拡張子csvを列書式文字列で開く方法はないんだろうか
0424デフォルトの名無しさん2016/01/14(木) 21:59:18.16ID:R121pJF+
いや、そもそも長ければいい、短ければいいというもんじゃなくて
単一責任原則とDRY原則を守って作って行けば必然的に
1関数辺りのコードはそこまで長くならないだろうし、
手の入れ易い、分かり易いコードになる。

上の人は機能毎に分けると書いているが、どちらかと言えば
1役割1責任で関数を作って、それを組み立てて行くようなイメージかな。
0425デフォルトの名無しさん2016/01/14(木) 22:09:12.75ID:kKuTLL/9
みなさんの話が難しくてわからない
どうすればVBAに詳しくなれますか?
0426デフォルトの名無しさん2016/01/14(木) 22:15:24.54ID:fK8eMzuy
>>423
列書式文字列ってなんだ
>>425
詳しくなる必要ないぞ
このスレのおっさんすら1割も理解してるか怪しい
0427デフォルトの名無しさん2016/01/15(金) 00:07:51.17ID:+wAhFI3f
>>>>425
とにかく、WEBから拾ったサンプルプログラムを動かして、さらに改造して動かす。なんでも良いのでVBAでシステムを組んで効率的なアルゴリズムを考える
0428デフォルトの名無しさん2016/01/15(金) 00:23:44.72ID:OqTq8akB
>>425
皮肉なものでVBAはある程度理解したら他の言語をやった方がいい。そうしないと超え辛い一線がある。

>>418
それは止めとけ。N-BASIC時代からの負の遺産だ。
他で呼ばれていないからその処理を関数、またはメソッドにしないと言う考え方そのものが
既に構造化言語の考え方から離れていることに気付かないと。
0429デフォルトの名無しさん2016/01/15(金) 01:04:34.92ID:ln/l6pM0
>>428
その言い方だとラムダ式も否定しているように聞こえるが、そういう意図じゃないよね?
0430デフォルトの名無しさん2016/01/15(金) 01:34:55.99ID:qCDtweIz
>>1
RPGツクール2000 , RPGツクールMV https://tkool.jp/mv/ ( JavaScript 採用 )

WOLF RPGエディター http://www.silversecond.com/WolfRPGEditor/

デュエル・マスターズ Android版 ,i-OS版、公式 http://dm.takaratomy.co.jp/extra/dmapp/entrygate_ds/
デュエル・マスターズ対戦CGI ex
https://web.archive.org/web/20150809154946/http://www53.atwiki.jp/dmsuishinparty/pages/314.html

デュエル・マスターズ(デュエマ)DM ONLINE 1.8a  /  VanGuard ONLINE 1.5a
https://web.archive.org/web/20150809160254/http://uhyohyohyo.sak ura.ne.jp/hsp.html

ヴァンガード専用ネット対戦ツール【 VanGuard Online 】
https://web.archive.org/web/20150809155032/http://kiimaa.jugem.jp/?eid=61

「カードファイト!!ヴァンガード」のネット対戦ができる公式オンラインゲーム「Cardfight!! Online」 2015年冬スタート
https://web.archive.org/web/20150809153724/http://supersolenoid.blog63.fc2.com/blog-entry-6886.html

遊戯王 Automatic Dueling System
https://web.archive.org/web/20150809164855/http://www3.atwiki.jp/ads-wiki/pages/20.html

遊戯王 デュエル・オンライン
https://web.archive.org/web/20150809171527/http://www31.atwiki.jp/vipdo/pages/15.html
https://web.archive.org/web/20140628005202/http://do.yugioh-portal.net/

ウィクロス( WIXOSS ) WEBXOSS http://webxoss.com/about_en.html http://webxoss.com/DeckEditor/

BG(ボードゲーム)Engine https://web.archive.org/web/20151209080842/https://bgengine.net/
https://web.archive.org/web/20151209172205/http://14owl.hateblo.jp/entry/2015/12/09/011234

アプレンティス  マジック:ザ・ギャザリング(MtG)オンライン化 http://homepage1.nifty.com/Q_Q/ap.html
https://web.archive.org/web/20151202202725/http://homepage1.nifty.com/Q_Q/ap.html
0431デフォルトの名無しさん2016/01/15(金) 01:35:57.90ID:qCDtweIz
【 オンラインTCGエディター 】   >>1,>>430

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
デュエマ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、旧ガンダム・ウォー、ライブオン、ディメンション・ゼロ、シャーマン・キング、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書け。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストしろ。
個vs個、多数乱戦、チームvsチーム、個vsチームを実現し、P2P通信対戦プラグイン有り。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみろ。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
バトスピ、ヴァンガ、デュエマなど発売済みゲームソフトが存在してるTCGはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正 + コード記述の仕様書(設計書)を作成。

機能制限した下位版を制作しても原則として発売せず + 上位版デュエリ−グ用でサーバー稼動。

下位版を仮に発売した場合の改造および商用利用には、別途で当社との契約が必要。

さ〜て、インド人ベンダーと日本人の翻訳担当SEを見つけよっと!ww
http://wc2014.2ch.net/test/read.cgi/entrance2/1451262577/-16
0432デフォルトの名無しさん2016/01/15(金) 18:47:37.70ID:Xck1p4iK
印刷設定を立ち上げて3秒待つ、
ただそれだけなのに意図通りに動きません
なぜか最初に3秒待ちが発生し、その後にプリンタの設定に移ります。
なぜコードの順番と実行順序が逆になってしまうんでしょうか?
理由と解決方法をご存知でしたら教えてください。

Sub test()
Application.SendKeys "^p", True
Application.Wait Now + TimeValue("0:00:03")
End Sub
0433デフォルトの名無しさん2016/01/15(金) 19:11:48.10ID:GaD4rXA1
使ったことないけど

Application.SendKeys "^p", True
Application.Wait Now + TimeValue("0:00:03")

Application.Wait Now + TimeValue("0:00:03")
Application.SendKeys "^p", True
にしてみたらどうなの
waitでフリーズしてるんじゃ
とおもったが設定画面が出て3秒何もできないようにしたいのだな
loopでdoeventsの時間稼ぎとかかな
まあ何がしたいかはっきりさせてから考えたら
0434デフォルトの名無しさん2016/01/15(金) 19:45:41.25ID:Xck1p4iK
>>433
設定画面出てから3秒何もできないようにしたいです。
あとこの現象の理由も知りたいです
0435デフォルトの名無しさん2016/01/15(金) 19:58:32.80ID:KZg44ccI
Sub test()
Application.SendKeys "^p", True
Application.OnTime Now, "Ueito"
End Sub

Sub Ueito()
Application.Wait Now + TimeValue("0:00:03")
End Sub

これならどうや?
0436デフォルトの名無しさん2016/01/15(金) 20:05:58.41ID:GaD4rXA1
Application.SendKeys "^p", True
DoEvents
Application.Wait Now + TimeValue("0:00:03")

これで様子が変わったけど
0437デフォルトの名無しさん2016/01/15(金) 20:17:56.81ID:JNdiAV22
プロシージャの役割は1つだけにして簡潔に短く、というポリシーは賛成ですが
それを実現するためにプロシージャを分割しようとすると
元のプロシージャで使ってたローカル変数が使えなくなって困ります。
そのへんみなさんはどう対処してますか?
たくさんの引数を使ってわたしてる?
さらにプロシージャ分割を行うとさらに引数を使い、たらいまわしになってしまうのですが。
0438デフォルトの名無しさん2016/01/15(金) 20:54:52.19ID:GaD4rXA1
>>437
ローカル変数が使えなくなるの意味がわからないが
参照渡しで何の損もなく長い部分を外に追い出すことは
できると思うけど
0439デフォルトの名無しさん2016/01/15(金) 21:52:28.32ID:FuCtvVW7
>>437
VBAでコードの長さを気にしたら負け
変数宣言・初期化・代入だけで10行くらい使う言語なのだから
短くすることより機能単位にまとまっている方がメンテしやすい
ローカル変数を引数に与えてプロシージャ間でたらい回しするのは
グローバル変数を使うことと同じくらい融通の利かないコードになる
0440デフォルトの名無しさん2016/01/15(金) 22:10:39.54ID:kSdf5HWG
引数が増えるのは機能の分け方が下手なだけ
0441デフォルトの名無しさん2016/01/15(金) 22:21:10.91ID:bPOQG/pm
>>344
■ このスレッドは過去ログ倉庫に格納されています