1 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 15:42:51 ] ExcelのVBAに関する質問スレです 前スレ pc11.2ch.net/test/read.cgi/tech/1219673793/ ★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。 ★2 ExcelのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
239 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:24:42 ] >>233 0.1 * 10がIntegerにならないぞゴラって声が容易に想像できるから、全部Doubleのほうがいいと思う。 あと、ワークシートでの計算でIntegerとDoubleを区別するよりは 全部Doubleのほうが速いなんてこともありそう。いや想像だけど。 それよりも、一般人が良く使うソフトなのに、基数が10でないことのほうが問題だろ。 さすがにある程度の補正はかかっているけど。
240 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 14:01:15 ] >>239 良く分からんけど Excelが普通なんでしょ
241 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 19:50:07 ] >>239 てか、2進法で計算してるんだから、わざわざ10進法基数にする必要性が無いよ。 余計な事して誤差が問題になるなら、やらんで欲しいな。 変数の型に関しては、使用バイト数が少ない方が当然処理は早いよ。 混在とか関係ない・・・はず。
242 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 20:35:29 ] んなこたーない。実数同士の足し算よりも、整数と実数の変換の方が余程時間が掛かるのが今のCPUだ。 ついでに言えば、Excel2000だか2002だかを境にdoubleからlong doubleに切り替わっている筈。 レーザ測距のデータみたいに、10桁くらいある数の標準偏差を取ろうとすると違いが判る。
243 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 21:58:35 ] >>241 いや、基数10はセルが保持するデータの話。 Doubleではない何かの型であってほしかったということ。
244 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:50:41 ] floatよりdoubleの方が速いらしいぜ
245 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:30:23 ] >>244 マジレスすると、ケースバイケース。
246 名前:デフォルトの名無しさん [2008/12/26(金) 00:36:57 ] 質問です。 windowsXPでExcelは2007。 Dim lastRow As Long '最終行数 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\新しいフォルダ\AAA.xls" lastRow = Range("A" & Rows.Count).End(xlUp).Row '最終行の取得 で、lastRowに1しか入りません。 実際は1000と入らなければいけないのですが。 どこが間違っているか、御教示ください。
247 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 01:42:25 ] >>246 xlUpはどう言う意味?
248 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 01:49:04 ] たまたまこのスレ開いた俺が適当に答えてみる Rows.Countって選択してるRowの数返すんじゃないの?
249 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 01:56:21 ] >>246 lastRow = Range("A1048576").End(xlUp).Row
250 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:04:26 ] シートを指定していないから 関係無いシートがアクティブになってるんじゃない? 一度シートが1つのBookで試してみ
251 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:06:54 ] おそらく、アクティブなシートを勘違いしている。
252 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:07:27 ] リロードすればよかった・・・
253 名前:246 [2008/12/26(金) 09:15:59 ] 皆様ありがとうございます。 シートを1つにしてもlastRowには1しか入りませんでした。 最終行の取り方自体は合っているようなので、 シート関係を見直してみます。 ありがとうございます。
254 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 11:39:51 ] >>253 「 Range("A" & Rows.Count)」のターゲットが、「AAA.xls」になっていないと思われる。 おそらくは、マクロのあるシート。
255 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:51:43 ] A列にデータが無いとかじゃないよな 普通Bookを開いたら、そのBookがアクティブになるから 問題は無いはず まぁ複数のBookを扱うなら、きちんとBookを指定したほうがいい
256 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:58:20 ] >>255 > 普通Bookを開いたら、そのBookがアクティブになるから > 問題は無いはず ねーよ
257 名前:デフォルトの名無しさん [2008/12/26(金) 15:30:49 ] ユーザーフォームでコンボボックスを3つ作成し、それぞれに sample1 sample2 sample3 とオブジェクト名を指定しました。 コード内で変数を用いてそれぞれのコンボボックスにテキストを挿入したいときに、 For i = 1 To 3 j1 = i j2 = "sample" & Cstr(i) j2.Text = j1 Next i という形でコードを組みましたがうまくいきません。 オブジェクト名を変数で定義することはできないのでしょうか? 稚拙な質問で申し訳ありませんが、よろしくお願いします。
258 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:42:33 ] >>257 Me.Controls("sample" & Cstr(i)).Text でできないか?
259 名前:デフォルトの名無しさん [2008/12/26(金) 15:49:02 ] >>258さん 解決しました。ありがとうございました。
260 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:56:21 ] 知ってる人がいたら教えてほしいのですが、 エクセルVBAのコンボボックス(activX)の 設置数に限界は存在するのでしょうか? とりあえず、3000+αのコンボボックスを1シートに 設定したいのですが・・・・ 裏技的な方法でも良いので教えて頂ければ ありがたいので宜しくお願いします。
261 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 22:13:21 ] >>260 Excelにセルの数だけウィンドウがあるわけではないのは知ってるよな?
262 名前:デフォルトの名無しさん [2008/12/26(金) 22:27:44 ] >とりあえず、3000+αのコンボボックスを1シートに ユーザーも大変だ w
263 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 01:03:57 ] 良く分からないけど 一気にfor nextで3000作ろうとすると1208個でオブジェクトが有りませんだけど 1000作るを3回繰り返すと3000個出来た For a = 1 To 3 For n = 1 To 1000 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=a * 72, Top:=(n * 18), Width:=72, Height:=18).Name = "ComboBox" & n Next n Next a
264 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 01:51:37 ] 失敗したときのコードを張ってみそ
265 名前:263 mailto:sage [2008/12/27(土) 02:04:11 ] For n = 1 To 3000 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=0, Top:=(n * 18), Width:=72, Height:=18).Name = "ComboBox" & n Next n >>260 を見て 試してみたら解るだろと思ってやってみただけだから 質問主じゃないよ
266 名前:260 mailto:sage [2008/12/27(土) 02:33:26 ] 263氏の方法でなんとかなりそうです ありがとうございました
267 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 07:25:59 ] いや、出来る出来ないはどうでも良いんだよ。 コンボボックス3000ってのは、何とか別方法で再検討すべきじゃないか?
268 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 09:32:05 ] >>260 コンポボックス3000超って単に入力作業をするためのものですか、それとも 何か・・・ 非常に興味があるので、横レスですが、使用場面のヒントでも・・・
269 名前:260 mailto:sage [2008/12/27(土) 12:40:11 ] >>268 項目数がやたら多いアンケートを想像してもらえれば、そんなに違わないかとおもいます その内容を、特定のルールで別シート上へ集計するのが目的です。 >>267 コンボボックス3000が非常識なのは解ってはいたのですが、 社内の決め事なのでとりあえずは作ってみようという話になってしまいまして・・・ 一旦使ってみた後での検討はします。 こんなところでしょうか
270 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 13:10:26 ] コンピュータには、ダメなものをダメな方向に力押しする性癖がある。 バカな物は作ってはいけない。
271 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 17:51:01 ] >>269 データベースシステム使えよ。マジで。 煽りとかじゃなくて、後々の事考えても、3000項目の入力なんてDBじゃなきゃ無理だよ。 3000の保守は出来ない、と言うかやるにしても金掛かるよ。 どうしてもやるなら、コンボボックス噛ませる必要性も見いだせないし。 シートをRDBとみなして、ダイレクトにセルに書き込むべきかと。
272 名前:268 [2008/12/27(土) 20:20:28 ] 折れの既成概念では、コンボボックスそのものの数が数件から10数件だったwww >>263 さんので、コンボボックスのオートメイクは1208個、個数制限はない(ようだ)と 言うことを知った今、リストボックスとテキストボックスの利点を併せ持つコンボボックス の大量使用によるRDB的エクセル活用法となるかも。これは、創造の世界に踏み込むものかも。
273 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 20:34:24 ] >>272 こらこらw
274 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 20:47:59 ] >>272 DBの知識がどれくらいあるのか分からないし、 スレ違いにもなってしまうから適当なところまでしか話しないけど、 エクセルではトランザクションの概念はビルドインされてない。 エクセルをRDB的に使用する事があるのは、 シートがRDB構造と視覚的に同じである事が理由。 つまり、RDBをダンプして、その結果をシートに表示するのに向いてるって事。 エクセル自体はDBじゃないから、入力に関しては向いてない。(出来なくはない) やはりトランザクションとロックの概念が無いシステムでは怖い。 これはエクセルが劣ってるとかではなく、向き不向きがあるって事なのよ。 エクセルのシートにRDBをダンプすれば、言語が分からなくても、 オートフィルタ機能使ったり、VBAで複雑なクエリが出せる訳。 関数だってクエリと言えるよね。これは凄く魅力的な事だよ。 全部無理とは言わないし、勉強のためにやるのは一向に構わないけど、 老婆心ながら、エクセルをRDBに見立てて業務に使うのだけはやめた方が良いと思う。
275 名前:デフォルトの名無しさん [2008/12/27(土) 23:59:21 ] >>263 ---265氏のプログラム For n = 1 To 3000 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=0, Top:=(n * 18), Width:=72, Height:=18).Name = "ComboBox" & n Next n ---君のプログラム For a = 1 To 3 For n = 1 To 1000 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=a * 72, Top:=(n * 18), Width:=72, Height:=18).Name = "ComboBox" & n Next n Next a ---私が265氏と同等と考えるプログラム For a = 0 To 2 For n = 1 To 1000 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=a * 72, Top:=(n * 18), Width:=72, Height:=18).Name = "ComboBox" & a * 1000 + n Next n Next a
276 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 00:09:40 ] >>274 レス、どうもです。RDBはexcelよりも本拠地です。といっても、msdos時代でのものですが。 >>260 さんの 私の>>268 に対する >>269 の返信を見て、 顧客の嗜好調査データとか、アマゾンのこの本を買った人はこんな本を買っていますの 小規模版データを想像してみました。 また、見た目はデータベースソフト、中身はexcelという体の業務用ソフトは結構作られており、 この方の会社の人も類似ソフトを見ての発想(excelであるなしを問わず)と妄想しました。 データ設計例? 100人のレコード、100のフィールドがあるとしてシート毎に異なるキーフィールド相当の位置づけをする。 求めるもの 2値(3値)間にどんな相関関係があるかが視覚的にもわかるように散布図に落とす。 この「求めるもの」=クエリが種々、エクセルで可能ということですね。 どの方法であれ、処理スピードと正確性確保、維持管理の容易さが善し悪しを決めることに なりますよね。
277 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 13:15:14 ] >>275 ---私が265氏と同等と考えるプログラム を xp 2003でやってみたら、1列目1000個で完了、2列目が208個で オートメーションエラー発生しました。
278 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 13:37:14 ] 自分のパソはメモリーが小さいのでかも。260さんではありません。 試しにやってみたものです。
279 名前:263 mailto:sage [2008/12/28(日) 14:39:49 ] 名前が1208個までしか付けられないのか
280 名前:277 mailto:sage [2008/12/28(日) 16:44:44 ] >>279 私のパソコンでは、 263のでは3000個出来ているが、275の---私が265氏と同等と考えるプログラム では、一気に3000個出来ず、1208個しか出来なかったという意味です。
281 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 19:45:07 ] mixiでもチラシの裏でも良いから、どっか行って適当に試してくれ・・・。 誰が得するんだ?誰かが得するなら俺が出て行けば済む話だが。
282 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 20:22:28 ] ?
283 名前:デフォルトの名無しさん [2008/12/29(月) 06:36:24 ] ある程度、大きなシステム作ってみて気がついたけど似たようなコードを何度も書いてるんだよな 効率のいいコードを書くために必要な知識とか教えてくれないか。
284 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 08:22:46 ] >>283 そのシステムはExcelで作ったの?
285 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 08:29:17 ] >>283 サブルーチンなり関数なりに分けましょう。
286 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 10:25:34 ] >>284 うん、データはAccessに入れて、ほとんどの操作はExcelのユーザーフォームを使うような感じで ワークシートは大雑把に全体を見るためにあってデータを追跡したり、試算ができたりするようなやつ >>285 最初の頃、ほとんど直観でやってたから今になって無駄を省くために自分のレベルでできそうなところはやってる。 でもクラスモジュールで何ができるのかとかが気になる。
287 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:51:23 ] >>286 ユーザインタフェースのプログラムを何とかしたいということ?
288 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 13:11:23 ] >>287 まぁ、そういうことなのかな。 入力チェックとか、動作は同じだけど入るデータが違うとか結構あって。 コピペして改変しながら作ってたけど、完成してみるとコードがぐちゃぐちゃになってしまった。 運用は始めてて、今のところ作業者の不満は出てないけど将来的な拡張や保守のためにもう少し勉強したい。
289 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 14:19:59 ] >>288 UI部分はごちゃごちゃしてても仕方ないんじゃないの。 データさえしっかりしてたらいいよ。
290 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 15:09:44 ] >>288 誰もが一度は通る悩み。 モジュールの独立性をあげ過ぎても使い勝手悪くなるけど。 モジュール結合度とかでググってみるといいよ
291 名前:デフォルトの名無しさん [2008/12/29(月) 18:53:44 ] 100円 500円 250円 ↓ マクロ発動 100円○ 500円 250円 もっとも小さい数字を選んでその数字の横に ○印をつけたいのですが なかなかうまくいきません どういった関数を使えばいいでしょう?
292 名前:291 [2008/12/29(月) 19:08:00 ] xp 2003
293 名前:デフォルトの名無しさん [2008/12/29(月) 21:35:37 ] >>291 さん こんな感じでどうですか? Sub mini() Dim mymin mymin = WorksheetFunction.Min(Range("a1:a3")) '対象データのの範囲 Cells(4, 1) = mymin & "円○" End Sub
294 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 22:24:22 ] 約4000のテキストファイルをそれぞれのワークシートにインポートしたいんだけど、 テキスト名が 1001.txt、1002.txt、1004.txt といった具合に連番じゃないので、下のプログラムだと1003.txtが存在しないので 当然エラーが発生します。都合上、ファイルの名前を連番にすることはできないんです。 理想としては、存在しないファイル番号は無視して次のファイルをインポートするように したいのですが、イイ案が浮かびません。。 このエラーを回避する手段はありますか? 環境はXPの2003です。 Sub Macro1() Dim bng As Integer For bng = 1001 To 9996 ActiveWorkbook.Worksheets.Add With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;D:\Program Files\ootori\data\" & bng & ".txt", Destination:=Range("A1")) .Name = "1001_1" .FieldNames = True 〜 中略(マクロの自動登録で書かれた部分) 〜 End With Next End Sub
295 名前:294 mailto:sage [2008/12/29(月) 22:31:54 ] マジですいません。。事故解決ですorz ググり直したら簡単に出てきやがった・・・ エラーを回避する便利なプログラムがあったのね
296 名前:デフォルトの名無しさん [2008/12/29(月) 22:34:16 ] 勘違いしてました 訂正です Sub mini() Dim mymin Dim myjuni Dim datasuu myjuni = 1 datasuu = 3 mymin = WorksheetFunction.Min(Range("a1:a3")) '対象データの範囲 For i = 1 To datasuu - 1 If Cells(myjuni, 1) > Cells(i + 1, 1) Then myjuni = i + 1 End If Next i Cells(myjuni, 1) = mymin & "円○" End Sub
297 名前:デフォルトの名無しさん [2008/12/29(月) 22:36:55 ] 296は293の訂正です
298 名前:デフォルトの名無しさん [2008/12/29(月) 22:43:48 ] VBAのステップ実行時に、ウォッチでRangeを見てみました。 すると色々あるわけですが、型情報の意味がさっぱり分かりませんでした。 この情報はどんなルールで何を表現しているのでしょうか? たとえば Variant/Double だと、/の手前はVariantで、これは任意の型だと思うんです。だから/の後ろで、実際には今Doubleが入ってるよ、みたいな感じ? でも、Variant/Object/Range見たいな奴もあるし。。 (これはVariantでObjectでその実態はRangeということかな?) Worksheet/Sheet1なんていうのもあります。 (これはなんだろ??Sheet1ってのは型なんですかねぇ。ユーザがシートをガンガン追加したらSheet4,Sheet5...ってな感じで型が増える?)
299 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:19:00 ] ああ俺の作ったやつon error resume nextだらけだ、心配になってくるぜ。
300 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 23:48:10 ] 別に、エラーをインラインで処理するのはおかしくない。 トラップすれば処理できているとは限らないのと一緒。 論理的破綻はどちらでも起こる。
301 名前:296 mailto:sage [2008/12/30(火) 00:08:18 ] >>291 さんへ たびたびすいません こんなのありました large関数 (指定された範囲データから大きい方から任意の数字番目を返す) small関数 (指定された範囲データから小さい方から任意の数字番目を返す)
302 名前:デフォルトの名無しさん [2008/12/30(火) 00:58:44 ] VBAで特定の文字列を検索して、その文字列が見つかったらオートシェイプ(msoShapeFlowchartAlternateProcess(角がRの四角)、透明) をその文字の上に配置して、その文字を囲っているように見せたいと思っています。 そこで、文字列の幅を求め、その文字列が入っているセルの位置と、その文字列の幅から、 オートシェイプを配置すべき座標を計算することを考えています。 フォントは固定幅で考えております。 今、自分が分からないのは、 (1)文字の幅の単位(cmとかインチ?ピクセル??) (2)文字列の長さをcmとかインチで正確に取得する方法 (関数?VC++でもこの手の問題にぶつかったことがあるけどそちらでは上手く取れなかった覚えがあります。VBAは高機能なので正確にゲットできると期待!) (3)オートシェイプの座標系の単位(cmとかインチ?ピクセル??) (4)文字列の長さの単位と、オートシェープの座標系の単位が違うのなら、それを変換してくれる関数あるいは公式 何方か教えていただけますですか? (自分でも継続して調べます。) よろしくお願いします。
303 名前:デフォルトの名無しさん [2008/12/30(火) 04:13:54 ] シェイプの長さは テキストのFont.Size掛ける文字数で シェイプの位置は セルの.Top .Leftで 目的のセルはFindと FindNextで あとは細かい調整で いいみたい
304 名前:デフォルトの名無しさん [2008/12/30(火) 08:28:53 ] VBAでマクロの同時起動って出来ますか?タイマーを2つ並列に走らせたいのですが…
305 名前:デフォルトの名無しさん [2008/12/30(火) 11:28:03 ] >>304 同時起動は多分出来ないけど、WindowsAPI使ってタスク複製するかスレッド使えば出来ると思う。 VBAではやり方は良くわからんのだけど、 "Excel VBAによるWin32 APIプログラミング入門" この辺を見ればよいと思う。 タスク複製だのは結構癖があるからがんばって。 あと、どういうタイマーなのかわからんが、タイマ割り込みみたいに定期的に何かをやらせる場合、並列にすると旨く動かなくなる可能性があるので、きちんと実行時間を計測した方がいいよ。
306 名前:302 mailto:sage [2008/12/30(火) 17:09:11 ] >>303 ありがとうございます!!! 自分でも探したんですけどさっぱりその手の情報がなくて(;_;) 非常に助かりました。本当にありがとうございました!
307 名前:304 [2008/12/30(火) 18:30:26 ] ≫305 ありがとうございます。教えて頂いた書籍を調べてみます。 タイマーと言っても、あるAタイマーが30〜1にカウントダウン中に別のBタイマーを同時に走らせる、みたいな単純なモノです。実現可能でしょうか?
308 名前:291 [2008/12/31(水) 14:49:44 ] >>301 ありがとうごさいます やってみます
309 名前:デフォルトの名無しさん [2008/12/31(水) 22:39:19 ] Select Case…End SelectってC言語のswitch相当だと思うんですけど、breakって無いんですか? Select Case exp Case 0 IF xxx = FALSE THEN Break ←これ!!!! End IF End Select みたいな。
310 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 23:29:23 ] 無い
311 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:31:04 ] >>309 そもそもbreakしてどこへ行くつもりだ
312 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:36:55 ] >>310 ありがと >>311 Selectの外に決まってんじゃん。。。
313 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:41:39 ] >>312 それがしたいだけなら、どうにでもなるだろと小一時間…
314 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:41:51 ] 仕方なくGotoだな
315 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:44:16 ] >>314 ちょ、おま、そんな最終手段をっ!
316 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:44:45 ] >>313 どうすんの?
317 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:46:24 ] >>316 Select Case exp Case 0 IF xxx THEN 処理 End IF End Select
318 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:48:24 ] 抜ける方法を聞いてんの。 わざわざ論理を逆にして書けば良いじゃんとか 抜けた後にある処理をサブルーチンにしてあげれば良いじゃんとか そういう構造を縛るしか手が無いんですか?それじゃ言語としてどうだろ あとさぁ なんで if() {
319 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:48:59 ] はあ〜書いちゃった。。 じゃ、問題。何を書きたかったんでしょうか?
320 名前:317 mailto:sage [2009/01/01(木) 00:49:51 ] ちょっと説明不足かな 要するに、breakで外に出るのもスルーするのも同じ事じゃねーのって意味 Ifの条件がFalseの時にbreakしたいんなら、Ifの条件がTrueの時だけ処理すればいい
321 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:53:31 ] 答え発表! ヒューヒュー あとさぁ なんで if() { } else if() { } else if() { } … みたいにELSE句にIFが書けないんだろう 欠陥だろ。。 でした。 >>320 そりゃかけなくは無いだろうけど構造上書きにくい場合もあるじゃん。 なんでキーワードやステートメントを再発明してまで、不便なってんの!マイクロソフト!!って思うじゃん。
322 名前:デフォルトの名無しさん [2009/01/01(木) 00:53:35 ] go away
323 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:57:44 ] >>322 おや?外れたのかな?(^^) 勘がニブいんですねw
324 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 01:04:13 ] >>318 アホなのか・・・
325 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 01:06:26 ] > そりゃかけなくは無いだろうけど構造上書きにくい場合もあるじゃん。 ねーよ。
326 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 01:09:56 ] 抜ける方法を聞いただけでこの荒れようww VB厨はばかだなぁww 書き方を変えれば良いじゃんとか・・それは変えなきゃ対応できない言語ってことだろ。 高級言語でしょ?書き方縛ったらそこでもう言語としてだめでしょ。 アセンブラじゃないんだからさぁ。 IF THEN ELSE IF THEN ELSE IF THEN ENDIF ENDIF ENDIF うわっ。だっさ。最悪。 書き方変えればできますだったらjmpとかjzとかjnzとかjcとかだけでも出来るよww
327 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 01:14:31 ] >>321 If ... Then ElseIf ... Then ElseIf ... Then End If
328 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 01:27:43 ] >>327 あ!ありがとうございます。 あったんだ。
329 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 01:48:45 ] >>328 意外と素直w
330 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 02:10:17 ] あんまり笑わせるなよ。 VB分かってないやつがVB馬鹿にしてたのかよ。orz
331 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 02:11:14 ] 明らかに分かってないのに、構造構造言いたがるのなんて、 情報系の一年生くらいだろ。
332 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 02:21:16 ] >>330-331 ゴメンね(´・ω・`) ついイライラしてたから
333 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 02:30:42 ] 厨とか言っちゃうやつは例外なくアホ
334 名前:デフォルトの名無しさん [2009/01/01(木) 13:53:37 ] 結局、Excel2008ではVBAが使えなくなるのですか? C#への布石ですか?
335 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:12:57 ] Excel 2008でVBAが使えないのは事実らしいが、 Excel 2008はMac版。移行先は、C#ではなくAppleScript。 しかも、次のバージョンで復活することが発表済み。 www.microsoft.com/japan/presspass/detail.aspx?newsid=3439
336 名前:デフォルトの名無しさん mailto:age [2009/01/02(金) 08:30:00 ] このスレは、Excel の VBE で作るフォームについての質問はスレ違い? スレ違いでしたら誘導をお願いします。
337 名前:263 mailto:sage [2009/01/02(金) 09:22:34 ] >>336 もしかしてデザインの話か そんな誘導先ないだろ
338 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 09:23:06 ] 名前消し忘れた恥ずかしい
339 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 13:45:39 ] どうせなら、VSTA2.0の情報とかを書けばいいのに >>334-335