Excel VBA 質問スレ Part32
■ このスレッドは過去ログ倉庫に格納されています
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/
0102デフォルトの名無しさん
2013/11/25(月) 08:56:08.330103デフォルトの名無しさん
2013/11/25(月) 09:03:11.160104デフォルトの名無しさん
2013/11/25(月) 11:28:49.740105デフォルトの名無しさん
2013/11/25(月) 11:35:06.080106デフォルトの名無しさん
2013/11/25(月) 12:49:38.62わかりました
0107デフォルトの名無しさん
2013/11/26(火) 11:11:49.44マクロブックからCSVファイルを開き、その1部をtokei_book(統計データ.xlsx 既にオープン済み))の最終行以降にコピーしようとしているんですが、
Range(Cells(3, 1), Cells(i - 1, 9)).Copy Destination:=Workbooks(tokei_book).Worksheets("sheet1").Cells(lastrow + 1, 1)
この部分でインデックスが有効範囲にありません
ってエラーになってしまっています。
どう直せばいいんでしょうか
tokei_bookには"統計データ"
iには6が
lastrowには504
という値がそれぞれ入っています
0108デフォルトの名無しさん
2013/11/26(火) 11:51:02.510109107
2013/11/26(火) 11:54:18.06んん、ありがとうございます
0110デフォルトの名無しさん
2013/11/29(金) 14:28:14.190111デフォルトの名無しさん
2013/11/29(金) 15:20:53.25しらべてみるわ
0112デフォルトの名無しさん
2013/11/29(金) 19:04:14.25クラス、メソッド、プロパティ、定数、列挙 ほかなんか有ったっけ
0113デフォルトの名無しさん
2013/11/29(金) 19:54:59.510114デフォルトの名無しさん
2013/11/29(金) 20:29:49.820115デフォルトの名無しさん
2013/11/29(金) 21:00:05.10>>114
おもろいやんけ
0116デフォルトの名無しさん
2013/11/29(金) 21:35:56.46VBEの入力支援に出てくるアイコン?のようなものってそれぞれ意味あるかしら
111 名前:デフォルトの名無しさん[] 投稿日:2013/11/29(金) 15:20:53.25
どうかしらね
しらべてみるわ
112 名前:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 19:04:14.25
ヘルプやオブジェクトブラウザとかで使われてるアイコンと同じだろ
クラス、メソッド、プロパティ、定数、列挙 ほかなんか有ったっけ
113 自分:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 19:54:59.51
アイコンは16年位の歴史がある
114 自分:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 20:29:49.82
アイコン16歳?
115 自分返信:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 21:00:05.10
>>113
>>114
おもろいやんけ
0117デフォルトの名無しさん
2013/11/30(土) 09:17:31.61http://toro.2ch.net/test/read.cgi/tech/1242136180/698
から誘導されてきました。
ExcelからJavaで作ったフォームを表示したいのですが、
java.swing.JFrameで作ったフォームを起動後、閉じるとExcelが最前面にきません。
Excel上のボタンを押す
->Javaの画面が最前面に起動
->Javaを終了するとExcelが最前面に戻ってくる
としたいのですが、なぜかExcelの上にその下にあったエクスプローラー等が表示されます。
ソースは下記です。実物が見れないので、一部間違ってる可能性はあります。
Sub Test_OnClick()
On Error Goto EEXIT
Application.Interactive = False
Set Shell = CreateObject("WScript.Shell")
Shell.Run "java -jar jframe.jar", True, True
EEXIT:
Application.Interactive = True
End Sub
Excel 2010, Windows7です。
java側の問題かもしれませんが、宜しくお願い致します。
0118デフォルトの名無しさん
2013/11/30(土) 10:53:47.24再現が面倒なので試さずに適当に答えるけど
プロセスが終了した時のウィンドウの順番をWindows任せにしないで、
Javaアプレット側のTerminateイベントでExcelのウィンドウをアクティブにしてから抜けるようにするか
VBAで自分自身を最前面にするか、どっちでも行けるんじゃないかと思う
AppActivate試してみ
0119デフォルトの名無しさん
2013/11/30(土) 12:33:56.02ありがとうございます。
試してみます。
0120デフォルトの名無しさん
2013/12/03(火) 15:30:44.33arr("りんご","色")としたら、"りんご"行の"色"列の値が取り出せるようにしたいです。
Enumがそれっぽいですが、"りんご"や"色"の位置はあらかじめ決まってなくて
Enum宣言時に値を入力できません。どうすればいいですか。
0121デフォルトの名無しさん
2013/12/03(火) 16:45:56.53find or filter
0123デフォルトの名無しさん
2013/12/03(火) 21:27:43.18必死だなw
0124デフォルトの名無しさん
2013/12/03(火) 22:47:21.250125デフォルトの名無しさん
2013/12/04(水) 05:41:42.670126デフォルトの名無しさん
2013/12/04(水) 06:12:37.46その2次元配列とやらのデータは元々シートに書かれてるの?
0127デフォルトの名無しさん
2013/12/04(水) 10:05:10.570128デフォルトの名無しさん
2013/12/04(水) 23:35:56.61ありがとう。
0129デフォルトの名無しさん
2013/12/07(土) 22:35:46.63BVAが記述されたていないの方のbook2のa1セルを参照するときに
ブックをアクティブにすればすぐ参照できますが
アクティブにしなくてもbook2のa1の数値を参照することはできるのでしょうか?
If Range(A1) < 0 Then 'A1をブック2のA1を参照させるには。。
Range(a2).Value = 0
End If
0130デフォルトの名無しさん
2013/12/07(土) 23:07:01.61yes
0131デフォルトの名無しさん
2013/12/07(土) 23:24:16.83オープンしておけばアクティブにしなくてもアクセスできる。
Workbooks("ブック名").Sheets("シート名").Range("A1").Value
Range(A1)というようにブック名、シート名を省略はできないけど。
ブック名、シート名を指定するのは面倒ということなら
With Workbooks("ブック名").Sheets("シート名")
.Range("A1").Value
End With
のようにWithステートメントを使えばいい。
0132デフォルトの名無しさん
2013/12/07(土) 23:29:02.792次元配列のデータ元がシートの場合
2次元配列の変数に格納する必要はなく、
arr("りんご","色")という指定できるプロシージャを作ればいい。
2次元配列のデータ元がシート以外の場合
2次元配列に格納されているデータをシートに書き出してから
arr("りんご","色")という指定できるプロシージャを作ればいい。
0133デフォルトの名無しさん
2013/12/07(土) 23:34:03.24> ★3、★4に明確に違反しています。スレ違いです。
ってかさ、明確に違反しているっていうのは一方的な見方でしかない。
作り方によっては★3、★4に全く違反しないように作れるわけだが。
0134デフォルトの名無しさん
2013/12/07(土) 23:38:31.11> 演算子と言えばXor(排他的論理和)ってのがあって
> True Xor True = False
> True Xor False = True
> False Xor True = True
> False Xor False =False
> みたいにどちらか片方のみがTrueの場合にTureを、
> そうじゃない場合はFalseを返すんだけど、
> これの使い道って何か有る?
状態が変わったことを検出したい場合とか。
0135デフォルトの名無しさん
2013/12/07(土) 23:55:38.78>>131
ありがとうございました参照数百箇所参照させたら激しく点滅して時々謎のerrorが出て困っていましたが解決できそうです。
0136デフォルトの名無しさん
2013/12/08(日) 09:38:27.18★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で出来ることは全てスレ違いだと思ってください。
0137デフォルトの名無しさん
2013/12/08(日) 09:40:52.10違反の可能性があるってだけで違反のわけだが。ルールとはそういうもの。
従えないなら出て行ってもらうほかないわけだが。
0138デフォルトの名無しさん
2013/12/08(日) 09:45:22.28保有の恐れがあるので大量虐殺したイラクの件もあるし。
有ろうが無かろうが「有るかもしれない」と言われた時点で犯罪が確定する。
警察に頼めば証拠はあとからいくらでも作れるし。
0139デフォルトの名無しさん
2013/12/08(日) 11:14:22.32「違反の可能性がある」で返すとかドンだけアスペなんだろうこの人
>>137「ルールとはそういうもの。(ドヤァ)」
言葉が通じないならこの世から出て行ってもらうほかないわけだが。
0140デフォルトの名無しさん
2013/12/08(日) 11:20:17.94DataTableがほしいな。
DBから値を取得するとき不便だわ
0141デフォルトの名無しさん
2013/12/08(日) 11:47:25.77そこでADOですよ
0142デフォルトの名無しさん
2013/12/08(日) 17:12:27.36Sheet1の入力データをコピペマクロで
Sheet2に貼付けまでできています。
これを仮にマクロAの登録とします。
Sheet2に貼付け、調整したデータをそのまま
同じSheet2内でコピペしたいのですが、
マクロBとして登録しようとすると、マクロAが消えて
マクロBだけが残るのですが、マクロA、Bそれぞれ
別のマクロとして残すにはどうしたら良いのでしょう?
新しいマクロで登録すれば良さそうなのですが、
上手く行きません。何か記述が悪いのでしょうか?
0143デフォルトの名無しさん
2013/12/08(日) 18:34:11.07マクロA、マクロBはそれぞれどこに登録してるのかな?
Sheet1とかSheet2とか直接シートに登録している?
それともThisWorkbookとか標準モジュールに登録している?
そもそもマクロが消えるという状況がよくわからない。
考えられるのはマクロが登録されているシートを削除してるのかなと
思うんだけど。
0144デフォルトの名無しさん
2013/12/08(日) 19:26:14.11シート2内でコピペしたいのは、セルのデータなのかマクロなのか
そのコピペは手でやりたいのかマクロでやりたいのか
0145デフォルトの名無しさん
2013/12/08(日) 19:37:09.92マクロA、BともにSheet2に置いた
Wordアートに登録してあります。
マクロが消えるというか、macroに番号が振られるのですが、
一つ登録して次を登録すると前の番号で登録したはずのマクロが消えて
今、登録したマクロだけが残るような症状です。
0146デフォルトの名無しさん
2013/12/08(日) 20:37:44.67バージョンは違うWinXP + Excel2002の環境で試してみたけど、
こういうことなのかな?
マクロA、マクロBは標準モジュールに実装してあって
WordアートにマクロA、マクロBの二つをマクロ登録したいんだけど
Wordアートのマクロ登録は一つのマクロしか登録できない。
これならマクロCを新たに作ってマクロCからマクロAとマクロB
をコールすればできるような気がするけど。
0147デフォルトの名無しさん
2013/12/08(日) 21:46:33.81ちょっと試してみます。ありがとうございました。
0148デフォルトの名無しさん
2013/12/09(月) 08:30:48.91横だが、おっさんエスパー検定何級?惚れた
0149デフォルトの名無しさん
2013/12/10(火) 00:35:03.48セルの計算結果を特定のセルに書きこむ処理をしてるんですが、
この時にVBAで書きこんだ内容をExcelにある元に戻すボタンで戻せるようにする方法ってありますか?
宜しくお願い致します。
0150デフォルトの名無しさん
2013/12/10(火) 01:15:07.25もとに戻すボタンと処理を追加する
マクロの処理中に段階的にコピーをすれば親切
ブックの終了時にコピーを破棄すること
0151デフォルトの名無しさん
2013/12/10(火) 07:17:22.38> もとに戻すボタンと処理を追加する
要件変えんなよ
0152デフォルトの名無しさん
2013/12/10(火) 07:42:40.74>要件変えんなよ
要件どおりの案を書けよ
0153デフォルトの名無しさん
2013/12/10(火) 07:43:41.310154デフォルトの名無しさん
2013/12/10(火) 14:06:31.70指摘されて逆ギレ、カッコ悪 (w
0155デフォルトの名無しさん
2013/12/10(火) 17:34:28.49質問をするスレの選択を間違えたね、
出来るのに回答できる人間はいない。
0156デフォルトの名無しさん
2013/12/10(火) 18:12:15.78149と155が別人なら単に155が変人なだけだが
自演なら155の他に149までが変人なんだが
あ、結局のところ変人は一人だけかワラ
0157デフォルトの名無しさん
2013/12/10(火) 18:14:50.24覚えておく処理をいれておきゃ良い
0158デフォルトの名無しさん
2013/12/10(火) 19:13:32.79作業フォルダを用意して、ボタンを押すごとにファイルを別名保存していくのが一番簡単
0159デフォルトの名無しさん
2013/12/10(火) 19:53:31.30ユーザー定義関数ならUndo可能だが書き込むセルを計算式にしとくのは無理か?
0160デフォルトの名無しさん
2013/12/10(火) 20:34:52.05難しそうです。
VBA内で他プログラムを参照して、そこからの回答をセルに書きこみたいのです。
セルに書きこんだ後は、ユーザーがそれを編集する想定です。
0161デフォルトの名無しさん
2013/12/10(火) 21:07:11.17ボタンを押したらってタイミングは難しいけどね
ボタン押したらフラグ立ててシート再計算
関数はフラグ立ってたら他プログラムから値を取得して返す
実際やると大変だろうがこんな感じ
0162デフォルトの名無しさん
2013/12/10(火) 22:51:56.50うーん、処理のルーチンとしては以下のような感じなのです。
ユーザーがセルに値を入力する。
ボタンを押したら現在のセルの状態を取得してサーバー側のプログラムに渡す。
サーバー側は現在のサーバーの状況で渡された文字列を編集してテキストに吐き出す。
それをFTPでとって来てテキストを開いて中身の文字列でセルを上書きする。
ユーザーがさらにそれを編集した上でDBに保存するボタンを押す。
VBAでDBに保存。
関数をどこにおけるかが問題なのですが、
関数ってユーザーが編集する部分を書き変えたりってできますか?
0163デフォルトの名無しさん
2013/12/10(火) 23:10:29.93上書きする直前にコピーしておけばいいじゃん。
それをExcel標準のundoボタンに似せたボタンをすぐ横に生成して利用すればいいんじゃね。
それか、適当な理想論だけど、Excel標準のundoボタンでイベント作れるのなら、コピーしたのを先に挟み込めば。
関数は記述したセルでしか動かないよ
0164デフォルトの名無しさん
2013/12/12(木) 10:51:13.33標準モジュールのコードからいっぱい貼り付けたいのですが
それにはどうすればいいですか?
例えばある変数xの数だけ、LabelとTextのペアを位置を計算してUserformに貼り付けるといったことをしたいです。
0165デフォルトの名無しさん
2013/12/12(木) 11:49:05.910166164
2013/12/12(木) 12:05:18.41最大100組使用する可能性があれば100個とりあえず配置しておいて
コードで使うやつだけを表示させ残りは非表示にしないといけないですか?
0167デフォルトの名無しさん
2013/12/12(木) 12:55:50.94サンプル
Private Sub UserForm_Click()
Dim Ctrl As Control
For i = 1 To 5
Set Ctrl = UserForm1.Controls.Add("Forms.TextBox.1", "テキストボックス_" & i)
Ctrl.Top = i * 20
Ctrl.Left = 20 + i * 8
Ctrl.Width = 100
Ctrl.Height = 18
Ctrl.Value = "テスト " & i
Next
End Sub
0169デフォルトの名無しさん
2013/12/13(金) 01:54:45.07workbooks.open file name:=book1
worksheets(sheet1).copy
end sub
といれるとコピーするだけじゃなくて新しいブック作ってそれに貼るのですが、どうしたらそれを抑えることが出来ますか?
0170デフォルトの名無しさん
2013/12/13(金) 02:25:35.60今発見できたのですが、どういうわけか
worksheets(sheet1).cells.copy
だとうまくいきました。なぜ、これだとうまくいくのでしょう?
0171デフォルトの名無しさん
2013/12/13(金) 03:47:05.07ヘルプぐらい読め
>Worksheets.Copy メソッド
>引数 Before と引数 After の両方を省略した場合は、新規ブックが自動的に作成され、シートはそのブック内にコピーされます。
0172デフォルトの名無しさん
2013/12/13(金) 04:37:01.18すみません。いくらググっても出て来ませんでしたがヘルプに載っていたとは。役に立たないと思っていました。ありがとうございます。
cellsというのが引数になるのですね。sheet.activate
sheet.copy
ならコピーされるかと思っていました。
0173デフォルトの名無しさん
2013/12/13(金) 11:01:43.70cellsは引数じゃない
そもそもCells(が返すRange)のCopyとWorksheetsのCopyは別の命令
0174デフォルトの名無しさん
2013/12/13(金) 17:33:05.46どう違うのか教えていただけないでしょうか。
引数でないのですか。わからなくなってきました。
実際にやってみると前者が普通にコピーをし、後者は新規ブックを作ってしまうというのはわかるのですが、どうしてかは調べても見つからなかったのです
0175デフォルトの名無しさん
2013/12/13(金) 17:39:04.38なんでVBAの入門書読まないの?
0176デフォルトの名無しさん
2013/12/13(金) 17:43:54.25インターネットでいろいろ検索して入門書も読んでいるのですがこれをこうすると地がうことになるというような説明はされていなくて。
とにかくそういうものだと理解して使うのは出来るのですが気になって。
0177デフォルトの名無しさん
2013/12/13(金) 18:23:45.100178デフォルトの名無しさん
2013/12/13(金) 18:51:13.050179デフォルトの名無しさん
2013/12/13(金) 19:19:53.04だからそもそも別の命令
前者のCopyがRangeのコピーする命令
後者のCopyがWorkSheetsのコピーする命令
違う命令なんだから違う結果になっても当たり前だろ
0180デフォルトの名無しさん
2013/12/13(金) 21:21:12.26君は「異なるオブジェクトの同名のメソッドは別のものだ」ということを
理解していない。(たぶん「どちらも同じ関数を呼ぶ」とでも思っているのだろう)
だから >>175 の突っ込みを入れられたのだ。
0181デフォルトの名無しさん
2013/12/13(金) 21:28:45.320182デフォルトの名無しさん
2013/12/13(金) 21:38:01.35>>180
>>181
ありがとうございました。
特に>>180のおっしゃる通りで、それについてはほとんど何も理解していませんでした。
0183デフォルトの名無しさん
2013/12/14(土) 00:36:28.14どこで質問すればいいのか分かりません。
Excelのアドイン 「XLL」 をC++で作成しようと思っているのですがセルに可変文字列を返すとき
普通はfreeとかdeleteとか使うのですが関数として戻り値を返す前にdeleteできないので
どうすればいいかと考えています。
0184デフォルトの名無しさん
2013/12/14(土) 00:47:16.86忍者のレベルを上げるとか・・・。
面倒なので上記の質問を取り下げます。
ご迷惑をおかけしました。
0185デフォルトの名無しさん
2013/12/14(土) 01:55:30.97オブジェクトやクラスの型が違うと、
同じ関数名でも、動作が全然違う
例えば、車オブジェクトの走ると、
猫オブジェクトの走るは、全然違う
入門書を買って、読んだほうが速い
総合的・段階的に学べるし
0186他のブックのセルからコピペするコード
2013/12/14(土) 14:42:31.13Sub test()
Dim book1 As Workbook
Dim str As String
Set book1 = Workbooks("b.xls")
str = book1.Worksheets("Sheet1").Range("a1:c1").Value
Range("a1:c1").Value = str
End Sub
2つのブックがありまして
ブックb.xls の a1:c1 に書かれている数値を
ブックa.xls の a1:c1 へコピペするコードを書いてますが、
上のコードですと Dim str As String の型がエラーを起こしますが
何という型にすればいいのでしょうか?(無提議で動いてますが)
また上記のコードをなるべく変数を使わずにもっと完結に記述することは可能でしょうか?
宜しくお願い致します。
0187186
2013/12/14(土) 15:14:38.18自己解決しました
Sub test()
Range("a1:c1").Value = Workbooks("b.xls").Worksheets("Sheet1").Range("a1:c1").Value
End Sub
こう書けば動きましたが
変数を割り当てる必要なんて微塵もないですね。w
参考にしたサイトが悪かったのか・・ なんで変数を使って解説してるのか謎です、、
0188デフォルトの名無しさん
2013/12/14(土) 16:28:59.64"変"数だからな
プログラム中で中身変えたり、使いまわしたりするのに都合がいいから使うんだよ
そう言った事が全くなければ変数なんていらんが、そう言うプログラムはあんまりない
0189デフォルトの名無しさん
2013/12/14(土) 18:08:55.53Range("a1:c1").Valueは配列。配列をString型に入れようとすればエラーだわな
セル範囲の値を変数に入れるには Dim str As Variant
コピーなら同じ範囲を指定して Sheets(X).Range("a1:c1").Value = str として
もよいが、それなら >> 187 で十分。
セル範囲をVariant変数に入れる本来の目的は str(1, 1) が a1 , str(1, 3) が
c1 の値 といった配列で扱えることにある。
そしてこれはExcelVBAでは非常に有効なテクニックでもある。
0190デフォルトの名無しさん
2013/12/14(土) 18:21:29.08それを本来の目的って言うのは違うだろ
0191デフォルトの名無しさん
2013/12/14(土) 18:43:33.71一番うまくまとまっている解説サイトはどこですか?
0192186
2013/12/14(土) 19:29:03.71>>188
ご丁寧な解説ありがとうございます。大変勉強になりました。
同じ処理を行や場所を変えて繰り返しやるときは変数を使うのが有効なようですね。
0193デフォルトの名無しさん
2013/12/14(土) 22:11:17.25Dim の変数提議の場所について教えてほしいのですが
IF 等条件によっては使わない場合がある変数は
Elseなどの結果のコードの直前に書いても問題ないでしょうか?
使わない変数もすべて先頭に並べておく必要があるのでしょうか?
0194デフォルトの名無しさん
2013/12/14(土) 22:26:29.75MSのガイドラインには、1行に1つずつとは書いてあるけど、宣言の位置については記述が見当たらない
こういうのは真面目に論ずると宗教戦争になるんで、その場ごとに先輩に合わせとけ
0195デフォルトの名無しさん
2013/12/14(土) 22:31:27.06この話題は荒れる
0196193
2013/12/14(土) 22:53:56.18>>194
>>195
初心者的の素人考えかもしれませんが
既に複雑化しているコードの中に追加でIFやCaseで命令をお試しで付け足す場合に
先頭に書いてあると消すときに少し手間がかかったり
しばらく触ってなかったら何の提議か忘れてしまったりする場合もあるかと思うのですが
直前に書いておけば一目瞭然で消す時も簡単ですし処理的にもIFの結果を先読みしていなければ
読み込まれないのでごくわずかでしょうが処理が軽減されるのではないかと思いました。
0197デフォルトの名無しさん
2013/12/14(土) 23:01:48.05提議じゃなくて定義な
双方にメリットとデメリットがあって、優劣が決まらないから荒れるんだよ
初心者なら議論に参加して、そういうのを再確認するのは無駄ではないと思うけど、
このスレでは何度も同じ話題がループしてるんで、常連はもう飽き飽きしてる
0198193
2013/12/14(土) 23:30:51.83>定義 失礼しました。。
なにやら振れてはいけない話題であったようですね
今書いているVBAは仕事ではなく趣味の週末データー解析ですので
動作に問題がないようでしたら自分のやりやすいように書く事にします。
ありがとうございました。
0199デフォルトの名無しさん
2013/12/14(土) 23:33:55.42先頭で定義する「必要」はないよ。(宣言必須なら)その変数を使うまでに宣言すればいい
>>194
そのガイドラインってのが何を指してるか知らんが
すくなくともヘルプのDimステートテメントには
>プロシージャ内で Dim ステートメントを使用する場合は、通常、Dim ステートメントをプロシージャの最初で記述します。
と書いてあるわけだが
>>196
お前一人が見るプログラムならどこで定義してても良いよ
他人も見るプログラムなら、ルール決めてそれを守れば良い
おそらく定義だけの位置では処理速度は変わらん
プロシジャ単位で実行時にコンパイルするからな
New付きで定義したらどうなるかはしらん
0200デフォルトの名無しさん
2013/12/14(土) 23:51:09.23http://10up.20ch.net/s/10mai2010845.png
0201デフォルトの名無しさん
2013/12/15(日) 01:56:07.75基本的に、なら、例外的に、で返せるが。
なんて邪推か。とりあえず上に書いておくのが慣例よ。
各自都合のいいルールを模索しそれに従ってください。程度だろうね。
自動で半角スペースの処理が行われてしまうみたいに、
宣言句は関数の上の方に移動させられてしまうわけでもないし。
■ このスレッドは過去ログ倉庫に格納されています