Excel VBA 質問スレ Part32
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2013/10/07(月) 22:19:55.86★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part31
http://toro.2ch.net/test/read.cgi/tech/1376371376/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0868デフォルトの名無しさん
2014/05/05(月) 19:02:52.67ID:eTvbwywS0869デフォルトの名無しさん
2014/05/05(月) 19:37:01.29ID:uFaF33P2>>303
0870デフォルトの名無しさん
2014/05/05(月) 19:38:31.76ID:zTX2z7nmそれオレじゃないか(ワラ
0871デフォルトの名無しさん
2014/05/05(月) 20:03:01.60ID:rD1fSl2O文体と質問のアホさ加減が同じ
0872デフォルトの名無しさん
2014/05/05(月) 20:05:33.73ID:uFaF33P2DoEventsはメッセージループを処理する
0873デフォルトの名無しさん
2014/05/05(月) 20:06:58.64ID:uFaF33P20874デフォルトの名無しさん
2014/05/05(月) 20:09:20.00ID:F7Zw8bMG0875デフォルトの名無しさん
2014/05/05(月) 20:21:56.97ID:zTX2z7nmではさっそく質問に移ります
いろんなソフトウェアの上のほうに
ファイル(F)、表示(V)・・・、ツール(O)、ヘルプとあり、たとえばファイル(F)の下には終了(X)とだいたい決まっています。
これVBAから現在立ち上げてるアプリをすべてオブジェクト変数にいれて
そのメソッドとしてキー入力をできるようにできる方法はありませんか?
たとえばメモ帳を
Appli(1)というオブジェクト変数にして
Appli(1).KeySend("FX")というコードを書けば
見事にメモ帳が閉じるような。
もちろん本題は閉じることではなくいろんなアプリを自由自在に操ることですが。
0876デフォルトの名無しさん
2014/05/05(月) 20:43:36.05ID:iASqhGK2VBAからと言うのが
APIも含めるという広域を意味しているなら
出来ないこともない。
0877デフォルトの名無しさん
2014/05/05(月) 21:05:07.90ID:zTX2z7nm含めましょう。
ではどうやるのでしょうか?
0878デフォルトの名無しさん
2014/05/05(月) 21:31:26.89ID:uFaF33P2さすがにVBAの比率が低くなりすぎてスレチ
API関係のスレにでも行け
0879デフォルトの名無しさん
2014/05/06(火) 09:50:23.96ID:Avr/JzZk[引数] Webサイトページの一番上のバーに表示されてる「タイトル」
[返り値] なし
[機能] 現在開いてるWebページを全部調べて、引数の「タイトル」のものがあればそれをアクティブにしてタブなら前面に出してそれをオブジェクト変数に代入する。なければなにもしない。
0880デフォルトの名無しさん
2014/05/06(火) 14:55:03.32ID:jl3/KWxAはい、次のかた〜
0881デフォルトの名無しさん
2014/05/06(火) 16:34:49.64ID:EF/hc8MQAPIで可能
VBAでやる必然性なし
0882デフォルトの名無しさん
2014/05/06(火) 16:48:53.58ID:WIbNvSPM必然性?
0883デフォルトの名無しさん
2014/05/07(水) 01:13:46.53ID:XHO24LnTシートを右クリックなどして見れるようにするにはどうすれば良いですか。セルとかコメントに出力する以外の方法でお願いします。
0884デフォルトの名無しさん
2014/05/07(水) 01:37:28.97ID:uh4oWvq+http://officetanaka.net/excel/vba/tips/tips122.htm
0885デフォルトの名無しさん
2014/05/07(水) 01:56:01.55ID:XHO24LnT各シートにこういうプロパティ画面を表示するにはどうやるのですか?
0886デフォルトの名無しさん
2014/05/07(水) 11:11:46.79ID:aD6Um6cx0887デフォルトの名無しさん
2014/05/07(水) 13:35:40.93ID:w4bXJfpERegExpやMatchCollection型の変数を定義するとユーザー定義型未定義の
コンパイルエラーが出てしまうのですがどうしたらよいですか?
0888デフォルトの名無しさん
2014/05/07(水) 13:39:29.10ID:uh4oWvq+エラーが出る最小限のソース晒して
0889887
2014/05/07(水) 14:33:27.95ID:w4bXJfpERefFile = "C:\Windows\System32\vbscript.dll\2"
ActiveWorkbook.VBProject.References.AddFromFile RefFile
RefFile = "C:\Windows\System32\vbscript.dll\3"
ActiveWorkbook.VBProject.References.AddFromFile RefFile
Dim re As RegExp
Dim mc As MatchCollection
これだとコンパイルチェック前にライブラリがロードされてないから、
RegExp型やMatchCollection型が定義されてないってないなるのは当たり前ですが、
これを回避する方法はありますか? ライブラリロードだけを別マクロにして1度だけ
実行すれば良いんでしょうけど。
0890デフォルトの名無しさん
2014/05/07(水) 14:58:46.92ID:uh4oWvq+それはVBAでは基本的に無理
万能の解決策じゃないけど「CreateObject」「実行時バインディング」あたりで調べてみ
0892デフォルトの名無しさん
2014/05/08(木) 16:21:39.25ID:DqNc14pRVBAで正規表現を扱うためのやり方をググるとこの辺がヒットするんだけど
それではアカンの?
VBAで正規表現を使う (1/3):CodeZine
http://codezine.jp/article/detail/1655
Office TANAKA - Excel VBA Tips[正規表現によるマッチング]
http://officetanaka.net/excel/vba/tips/tips38.htm
0893デフォルトの名無しさん
2014/05/08(木) 16:45:09.21ID:UhAEWxzwなんかの事情でどうしても実行時に参照したいんだよな?
0894デフォルトの名無しさん
2014/05/08(木) 17:19:41.49ID:WIVGkEtc目的はなんで、それをやるとなにができて、どういうことが便利ですか?
0895デフォルトの名無しさん
2014/05/08(木) 18:24:47.72ID:uOW3clqTよくある話じゃないか
0896デフォルトの名無しさん
2014/05/08(木) 21:10:31.28ID:JZCmTzL00897デフォルトの名無しさん
2014/05/10(土) 00:30:41.40ID:DYZqKBH3そのとき
(1) 一旦、変数(配列変数とか)に入れて、その変数でいろいろ計算する
(2) そのまんまセルの値を参照しながら計算する (Cells(r,c)とかを駆使して)
の、どっちがいいですか?それともどっちも変わらないですか?場合によるならその解説もお願いします。
0898デフォルトの名無しさん
2014/05/10(土) 00:57:40.41ID:DYZqKBH3引数 Rabgeオブジェクト(セル)
返り値 Rabgeオブジェクト(セル)
処理 もし引数が結合セルだった場合、その左上のセルを返り値として返す。結合セルでないふつうのセルだった場合、なにもせずおなじセルを返す。
0899デフォルトの名無しさん
2014/05/10(土) 00:59:22.57ID:0NkefTVZどっちがいいかと言えば、自分にとってわかりやすい方
セルの読み書きは変数への代入より時間がかかるので、スピード重視なら変数に入れた方がいいと言われるけど
本気で計算スピードが欲しいならVBとかC#とか使うべきであって、結局は最初に書いたように、
プログラムを作りやすい方を選べばいいと思う
0900デフォルトの名無しさん
2014/05/10(土) 01:01:36.00ID:0NkefTVZMergeCellsとMergeAreaでがんばれ
0901デフォルトの名無しさん
2014/05/10(土) 11:38:30.40ID:Om1HfajVX.MergeArea.Cells(1,1)
0902883
2014/05/11(日) 03:04:41.66ID:X2XaIOXl0903デフォルトの名無しさん
2014/05/11(日) 13:20:36.77ID:E4N7zZTW自宅PCコア2Duo3GHZで 100メガぐらいある表のセルに数式を追加する処理がすべて動くのに5分ぐらい時間がかかるのですが
会社に持っていき一番速いi7 3Ghzのクアッドコア8スレッドのPCで実行させてみましたが同じく5分ぐらいかかりがっかりしました
それでも多少は速くなったようですが、何とか少しでも(でjきれば爆発的に)処理時間を速くできない物かと思っています。
世の中にはXeonE5系のものは15コア30スレッドというような物も存在しますが
http://ja.wikipedia.org/wiki/Xeon
Xeon搭載PCは30万ぐらい出せば買えるようですが
速くなるなら安い物かと思っているのですが
Xeonのコア数の多い物を使うとどのくらい高速になるのでしょうか?
(30スレッドでも処理時間はほとんど変わらず30万無駄遣いにおわるのでしょうか?w)
0904デフォルトの名無しさん
2014/05/11(日) 13:28:37.64ID:9n+Ded1d通常マルチコアを有効に使うためにはマルチスレッドでの処理を行います。
残念ながらVBA単独でのマルチスレッド処理はできないと思います。
http://q.hatena.ne.jp/1310989651
諦めませう
0905903
2014/05/11(日) 13:40:22.25ID:4IeCHncM残念、、、ありがとうございます。
処理中に画面下には8CPUというような表示が出ていましたがあれは書いてあるだけなのですねww
VBAはマルチスレッドに非対応だとマルチCPU対応のメリットは少なそうですね。
0906デフォルトの名無しさん
2014/05/11(日) 15:37:14.98ID:qmCq3i4D0907デフォルトの名無しさん
2014/05/11(日) 17:07:08.06ID:valH51XCエラーの種類によって処理を分岐する方法があったと思うけど
そのときに使用するエラーコードの番号ってどうやって取得しますか?
○○のエラーがでたときはメッセージ出して強制終了、
□□のエラーがでたときは無視してNEXTにそのまま続ける、
△△のエラーがでたときはこういう処置をして続行する、
みたいにしたいんです。
0908デフォルトの名無しさん
2014/05/11(日) 17:14:44.13ID:9n+Ded1d俺は
MsgBox Err.Number & " " & Err.Description, vbCritical, "xxxx"
とかで表示させて強制終了にしてるけど
実行時エラーの一覧
http://officetanaka.net/Excel/vba/error/execution_error/index.htm
0909デフォルトの名無しさん
2014/05/11(日) 17:37:21.71ID:sdx099L9エクセルそのものはマルチコア対応だから、普通のワークシート関数とかは効果あるはず
そもそもCPUが原因で遅いのじゃなければ、CPU早くしても効果薄いぞ
100メガのエクセルとか、IOでだいぶ時間食う気がするけど
ハードに金かけるならSSDとか試してみる価値はある
VBAのコード見直せば早くなる可能性もあるけど
0910デフォルトの名無しさん
2014/05/11(日) 17:39:07.78ID:valH51XCありがとうございます。
Errオブジェクトというのがあったのですか。
これは便利ですね。
0911デフォルトの名無しさん
2014/05/11(日) 20:47:26.63ID:zdamCAAu何をやってるのかわからんけど、画像とかなしで 100MB になってるなら、マジで DBMS の導入考えた方がいいかも
SQL-Server Express とかならとりあえず只だし
0912デフォルトの名無しさん
2014/05/12(月) 15:19:33.35ID:l6E7y7n0仕事で年に1回しか使わないマクロで、参照を設定し忘れて毎度何でエラーになるのか悩むもんでw
0913デフォルトの名無しさん
2014/05/12(月) 15:46:22.10ID:r3XyQ/Bdソースの先頭か、最初に開くシートの見える場所にコメントを書いておく
俺がよく使う方法は、ファイル名にコメントを入れる
Book1 (参照設定を忘れないこと).xlsx
ファイル名を勝手に変更できない時は、同じフォルダに空のテキストファイルを作って、
そのファイル名をコメントにしておく
Book1.xlsx
Book1 (参照設定を忘れないこと).txt
こんなふうにしておくと、2つのファイルが隣に並ぶので、コメントが必ず目に入る
0914デフォルトの名無しさん
2014/05/12(月) 16:22:06.75ID:Pq2vKY3y参照先のパスが毎回変わるとか、特殊な事情があるのか?
なぜ参照設定した状態で保存しないの?
なぜ実行時にコードで動的にやる必要があるの?
0915デフォルトの名無しさん
2014/05/12(月) 18:04:32.83ID:tYXPKjS8フォームにあるボタンを一時的に機能を停止するのに
btnxx.Enabled = False
にすれば、ボタンがグレーアウトされて使えなくはなりますが、シートに貼り付けたボタン
に対して同じような事するにはどうするんでしょうか?
0916デフォルトの名無しさん
2014/05/12(月) 21:17:50.64ID:Pq2vKY3ySheet1.Shapes("ボタン 1").ControlFormat.Enabled = False
Sheet1.CommandButton1.Enabled = False
とか
ただ、フォームコントロールのEnabled=Falseにしても、グレーアウトしないな
押せなくはなるけど
0917デフォルトの名無しさん
2014/05/12(月) 21:53:45.43ID:tYXPKjS8こちらの言い方がおかしかったか
http://www.dotup.org/uploda/www.dotup.org5057295.jpg
こういう状態の事です。
ま、それは良いんですが、、、
すいません、上の方でだと、動いてしまいます
下だと
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
で実行時エラー438になってしまいます。
当面動作予定は無いので、消しておきます
0918デフォルトの名無しさん
2014/05/13(火) 03:16:42.81ID:fpyFYdoXシートに貼るボタンは「フォーム コントロール」と「ActiveX コントロール」の2種類ある
で、グレーにして押せなくできるのは後者で、>>916の2番目も後者に対して使う方法
0919デフォルトの名無しさん
2014/05/13(火) 11:11:36.24ID:3oieHFyI了解しましたです。ありがとうございます。
0920デフォルトの名無しさん
2014/05/13(火) 12:41:31.19ID:oNeP8dL2毎年、客から支給されるデータをマクロで整形してDTPソフトに貼り込む作業なもんで。
0921デフォルトの名無しさん
2014/05/13(火) 19:25:34.15ID:/l0lTNTz参照設定はプログラムモジュールを指定するもの
データが変わろうが、参照設定は変わらんだろ
0922デフォルトの名無しさん
2014/05/14(水) 00:44:43.93ID:4NYZ0gDe確か参照設定はブックに依存するのではなく、
アプリケーション側に依存したはず。
つまり参照設定していない他のPC上にあるEXCELでそのブックを立ち上げても
ダメだったんじゃなかったかな。
違ってたらごめん。
0923デフォルトの名無しさん
2014/05/14(水) 01:44:23.14ID:k2UyUu49お前の環境では、あるブックに参照設定したらすべてのエクセルファイルでその参照設定が有効になってるのか?
つか、今のエクセル、未使用の参照設定勝手に外して保存しやがるな
それだけじゃなく、未使用のコードも勝手に消されてる
なんつう迷惑な事しやがるんだ
0924デフォルトの名無しさん
2014/05/14(水) 19:48:14.68ID:9e1uL7m3オプションで清掃が有効になってない?
0925デフォルトの名無しさん
2014/05/15(木) 11:36:12.81ID:xP8vZsncその 清掃 とかいうオプションはどこにある?
0926デフォルトの名無しさん
2014/05/15(木) 20:30:44.53ID:Mes52j2B0927デフォルトの名無しさん
2014/06/06(金) 17:56:50.11ID:xrGe04ueその場合どんなコードになりますか?
0928デフォルトの名無しさん
2014/06/06(金) 18:58:23.21ID:nBXq1INXFunction ar(cnt As Integer) As Variant
Dim ret() As Integer
ReDim ret(cnt)
ar = ret
End Function
0929デフォルトの名無しさん
2014/06/06(金) 19:29:10.75ID:xrGe04ueあれれ?おかしいですよ。
返り値はVariantなのにそのプロシージャ内ではInteger。
こんなこと許される?
0930デフォルトの名無しさん
2014/06/06(金) 19:29:56.02ID:xrGe04ueReDim ret(cnt)
をまとめて
Dim ret(cnt) As Integer
にしちゃ問題あるの?
0931デフォルトの名無しさん
2014/06/06(金) 20:56:58.40ID:2p7Hju+qそんなことできない
0932デフォルトの名無しさん
2014/06/06(金) 20:59:12.41ID:xrGe04ueそれはなぜですか?
0933デフォルトの名無しさん
2014/06/06(金) 21:07:05.43ID:fJT63IUR0934デフォルトの名無しさん
2014/06/06(金) 21:12:39.28ID:2p7Hju+qVBAのルールで、Dimの中で配列のサイズに変数は使えない、と決まっているから
実際にやってみればエラーが出るからすぐ確認できる
0935デフォルトの名無しさん
2014/06/06(金) 21:27:08.12ID:xrGe04ue0936デフォルトの名無しさん
2014/06/07(土) 11:14:14.46ID:7p+CDDc/前回作業時刻よりも1時間以降経過した後でないと同じ作業は出来ないようにしたいのですが、、、
If Now() < DateAdd("h", 1, Worksheets("main").Cells(7, 3)) Then
MsgBox "前回作業時刻よりも1時間経っていません。" & vbCrLf & _
DateAdd("h", 1, Worksheets("main").Cells(7, 3)) & " 以降に作業してください"
Exit Sub
Else
MsgBox "現在時刻:" & Format(Now(), "hh:mm") & vbCrLf & _
"直前作業時刻より1時間後:" & DateAdd("h", 1, Worksheets("main").Cells(7, 3))
End If
とすると、
現在時刻:11:12
直前作業時刻より1時間後:11:30:00
となってElse以降しか実行しません
時刻の比較ってどうするんでしたっけ?
0937デフォルトの名無しさん
2014/06/07(土) 15:30:59.32ID:SxbAzKvi0938デフォルトの名無しさん
2014/06/07(土) 16:25:46.19ID:7p+CDDc/If TimeValue(Now()) < TimeValue(DateAdd("h", 1, Worksheets("main").Cells(7, 3))) Then
でElse以前が動作できるようになりました
0939デフォルトの名無しさん
2014/06/07(土) 17:38:13.17ID:qI6lrvl+Cells(7, 3)に入ってる時刻がシリアル値なら、そんな長い式を書かなくてもこれでいける
If Now() < Worksheets("main").Cells(7, 3) + #1:00:00# Then
0940デフォルトの名無しさん
2014/06/07(土) 17:41:53.05ID:qI6lrvl+日付込みだとおかしくなる
ワークシート上のシリアル値は1900/1/1になってる可能性があるから
0941デフォルトの名無しさん
2014/06/07(土) 18:42:33.53ID:FLlpq6LcじゃVB6で良かったんじゃね?みたいな事になるよね
0942デフォルトの名無しさん
2014/06/07(土) 18:49:17.07ID:qI6lrvl+コンパイルどころかソースファイルすら作る必要がないという手軽さは他の処理系では真似できない
0943デフォルトの名無しさん
2014/06/07(土) 19:25:35.22ID:SxbAzKvihttp://cpplover.blogspot.jp/2014/05/blog-post_29.html
0944デフォルトの名無しさん
2014/06/10(火) 02:49:48.07ID:YTnem67Idata1,data2,data4が同じフォルダに入っている場合に、
存在しないdata3を飛ばしてファイルをすべて開くというテストプログラムを作っています
Sub test()
Dim I As Long
For I = 1 To 4
If Dir("C:\excel\dataI.xlsx") <> "" Then
Workbooks.Open "C:\excel\dataI.xlsx"
Else
End If
Next I
End Sub
これだとエラーは出ませんが、どのファイルも開きません
Iが文字として認識されているためにelse条件に引っかかっているのだと
思うのですが、ファイル名中のIを変数として認識させる方法はないでしょうか?
同じフォルダ中のファイルをすべて開く方法ならあるようですが、それだと意味が
ないのです。わかる方がいましたらよろしくお願いいたします。
0945デフォルトの名無しさん
2014/06/10(火) 03:33:00.72ID:hc4LiDN+Sub test()
Dim I As Integer
For I = 1 To 4
If Dir("C:\excel\data" & I & ".xlsx") <> "" Then
Workbooks.Open "C:\excel\data" & I & ".xlsx"
End If
Next I
End Sub
0946デフォルトの名無しさん
2014/06/10(火) 04:40:54.93ID:ZdnvVnA2Dim fn As String
fn = Dir("C:\excel\data*.xlsx")
Do Until (fn = "")
If fn Like "data#.xlsx" Then Workbooks.Open "C:\excel\" & fn
fn = Dir()
Loop
C:\excel 内の data数字.xlsx を全て開くというもの
まあ、「同じフォルダ中のファイルをすべて開く」の発展型みたいなもので
同じ方式を使いながら、対象を「すべて」ではなくDirとLikeで絞り込むだけの話
0947デフォルトの名無しさん
2014/06/10(火) 10:36:42.20ID:zXPv5kx2ありがとうございます
Iを"と&で挟むことは私も試したんですが、エクセルは両方で挟むんですね
これで行けそうです
>>946
ありがとうございます
今回はちょっと事情が特殊なんですが、普通ならこっちのほうがスマートな気もしますね。
勉強になりました。
0948デフォルトの名無しさん
2014/06/12(木) 22:39:19.22ID:JGtl8L6Jhttp://light.dotup.org/uploda/light.dotup.org28231.png
↑
データはこのような画像の通りにシート3つに分かれて存在しています。
どのようなマクロを組めばいいかお教え願いたいです。
ジャンルごとに変数というものを持たないといけないのでしょうか?
実際は母が使うので、ボタン一つで出来るのだとありがたいのですが・・・
大変面倒な質問ですが、お願いします
具体的なコードを教えてください
本当に困っていますお願いします
0949デフォルトの名無しさん
2014/06/12(木) 23:30:41.76ID:Edw1tGKl丸投げしたいのなら、完全な状態のブックをどっかにアップしてください
本当に困っていますお願いします
0950デフォルトの名無しさん
2014/06/13(金) 14:09:52.76ID:+wg+XXRx>>1
> ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
> コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
> ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
0951デフォルトの名無しさん
2014/06/13(金) 14:29:39.15ID:QETwEf+A本スレとマルチだし、向こうでかなり暴れてたから
もうこっちには来ないと思う。
0952デフォルトの名無しさん
2014/06/14(土) 13:12:04.56ID:i5Ueiwm/印刷の代わりに使える分かりやすい言葉はないですか?
0953デフォルトの名無しさん
2014/06/14(土) 14:15:23.09ID:NIfTAMoHバーチャルプリント
0954デフォルトの名無しさん
2014/06/14(土) 14:54:03.19ID:i5Ueiwm/如何にもな言葉してますね…
ありがとうございます助かりました!
0955デフォルトの名無しさん
2014/06/24(火) 08:53:44.32ID:A58N03NN先頭の文字と「、」の後の一文字だけ大文字にすることってできるかな?
PROPERを使うと、Hoge Hoge、Huga Hugaみたいになるし、
UPPERは特定の文字だけ変換する方法わからんし、
できれば関数で簡単に処理したいんですが、無理かな?
0956デフォルトの名無しさん
2014/06/24(火) 09:44:48.41ID:qWqYgHU9普通に「、」でSplitして、ループ内で1文字目だけ大文字に変換して、Joinで再連結すればいいんじゃね?
関数にしたいなら、それを関数として定義すれば良いだけのことだし
1文字目だけ大文字にする方法はいくつかあるが
Midの関数ではなくステートメントの方を使うのが簡単かもな
0957デフォルトの名無しさん
2014/06/24(火) 11:03:40.25ID:A58N03NNそっかー。
簡単にできる関数が用意されてないかな?と思ったんだけど、無いんだね。
わざわざVBA作るほど沢山あるわけじゃないから、手で治すことにするよ。
アドバイスごち
0958デフォルトの名無しさん
2014/06/28(土) 22:46:48.16ID:SUZfbKz3EXCELは0行0列がないから1スタートにしてるんだけど
For文は変数を0と1のどっちでスタートさせてる?
0959デフォルトの名無しさん
2014/06/28(土) 23:05:08.46ID:++0JMPiRFORループ内でアクセスするオブジェクトに依存するんじゃね
オブジェクトに依存しない時は 1スタートの方が分かりやすいと思うが
0960デフォルトの名無しさん
2014/06/28(土) 23:08:57.04ID:SUZfbKz3さんくす
セルを参照したり、書きこむ場合は1スタートの方が便利だよぁ
C言語では0スタートが当たり前だから、FORの性質間違え易いんだよね
0961デフォルトの名無しさん
2014/06/28(土) 23:19:53.58ID:vnVg5isxケースバイケースで処理内容に合わせて適切な値を選ぶだけ
Forの性質とか意味不明
0962デフォルトの名無しさん
2014/06/28(土) 23:19:55.85ID:++0JMPiR0スタートになれてるなら
オブジェクトに依存しない時も 0スタートの方が混乱しないと思うぞ
0963デフォルトの名無しさん
2014/06/28(土) 23:26:55.43ID:vnVg5isx0964デフォルトの名無しさん
2014/06/28(土) 23:29:21.75ID:xYrnaOxY0965デフォルトの名無しさん
2014/06/29(日) 00:10:17.76ID:r3ERVTwDじゃあお前はお前のルールで統一しとけ
0966デフォルトの名無しさん
2014/06/29(日) 00:14:35.94ID:obj95/HS0967デフォルトの名無しさん
2014/06/29(日) 00:18:23.91ID:CZI2SpAGレス数が950を超えています。1000を超えると書き込みができなくなります。