1 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:36:18.78 ] 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/ 13 pc12.2ch.net/test/read.cgi/tech/1254281104/ 14 pc12.2ch.net/test/read.cgi/tech/1262748898/ 15 pc12.2ch.net/test/read.cgi/tech/1271261239/ 16 hibari.2ch.net/test/read.cgi/tech/1280045912/ 17 hibari.2ch.net/test/read.cgi/tech/1289182437/ 18 hibari.2ch.net/test/read.cgi/tech/1298240666/ 19 hibari.2ch.net/test/read.cgi/tech/1305754555/ 20 hibari.2ch.net/test/read.cgi/tech/1312435844/ 前スレ: Excel VBA 質問スレ Part21 hibari.2ch.net/test/read.cgi/tech/1316931607/
207 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:11:04.02 ] スレチ押し通すなっての。 既に聞く態度じゃないとと取られてんだし、誰も真面目に答えないよ?
208 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/13(火) 00:20:56.52 ] >>207 失礼ですが、どこがスレチなんでしょうか? >>2 の>★5と指摘されたので、調べつつ少しなりとも自分でやっているんですけど。 聞く態度じゃないというのも具体的に分かりませんが、改めて私のできる範囲で丁寧な 言葉でレスしているのですが。 ちなみに、誰も答えないとおっしゃられていますが、それは貴方の推測ですよね。 事実、もしそうであれば>>178 でレスが止まっているはずですが、>>179 氏はちゃんと指摘 とレスをしてくれましたよ。 質問者の立場で何ですが、一言あなたに言わせていただくと、あなたは回答できないので はないですか? 基本2chて自分が嫌だと思ったらスルー推奨ですよね。 それで結果的にスマートではないと思うのですが、26進数変換の関数を作って対処(仮)しました。 もしもっと、いい方法を知っている方いらっしゃいましたら、教えていただけると助かります。
209 名前:デフォルトの名無しさん [2011/12/13(火) 00:23:31.37 ] gigazine.jp/img/2011/01/11/goukaku_snack/DSC_9293.jpg スレチ?
210 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:26:48.21 ] ja.wikipedia.org/wiki/%E3%82%B9%E3%83%80%E3%83%81
211 名前:デフォルトの名無しさん [2011/12/13(火) 00:37:20.63 ] missaoyama2008.camcolle.jp/blog/media/27/20080924-1222184378.JPG トモダチ
212 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:41:06.61 ] ttp://www.zukan-bouz.com/aji/buri/buri.image/buri.jpg
213 名前:デフォルトの名無しさん [2011/12/13(火) 00:41:27.05 ] 超初心者です・・・ Sub 例題() Dim n As String For n = 1 To 10 Cells(n, 1) = n If n Mod 2 = 0 Then Cells(n, 2) = " 偶数 " End If Next n End Sub で型が一致しないとでるのですがどうすればよいでしょうか
214 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:42:11.55 ] ちょっと煽られただけですぐ感情的に反論するとか、どんだけ子供なんだよ 気に入らないレスは無視しろ 正論でも印象悪い 書き間違いが多すぎる 書き込む前に3回読み直せ strRowPosA = A ← これは不可能。こういう書き方だとAは変数名になってしまう やるならこう strRowPosA = "A" strRowPosN = Cells(, strRowPosA).Column さらに言えば、ワークシートのA、B、C…はRowじゃなくてColumnだから、全体を修正すると Dim strColumnPosA as String Dim strColumnPosN as Integer strColumnPosA = "A" strColumnPosN = Cells(, strColumnPosA).Column If c = strColumnPosN And r <= 10 Then
215 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:44:37.64 ] >>213 ○ Dim n As Integer × Dim n As String 授業はちゃんと聞こうね
216 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/13(火) 00:49:58.79 ] >>214 すみません。 指摘感謝です。 >179さんかな? コードありがとうございました!
217 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:55:07.20 ] 202 >>196 ですら君は及ばないレベルだと自覚出来ない時点でもうね
218 名前:デフォルトの名無しさん [2011/12/13(火) 00:56:20.86 ] >>215 ありがとうございました^^
219 名前:147 mailto:sage [2011/12/13(火) 02:19:10.83 ] >>166 ありがとうございます。まとめます。 <Q> [Sheet1] Private Sub Worksheet_Calculate() Worksheets("Sheet1").操作() End Sub という事を実現したいが、シート名は可変です。 で、 Private Sub Worksheet_Calculate() ActiveSheet.操作() End Sub という例を見かけますが、この場合 ActiveSheet が Sheet1 という保証はあるのでしょうか。 環境 XP、Office2003 <A> ActiveSheet が Sheet1 という保証は無いので、 Me.操作() とすると良い。
220 名前:デフォルトの名無しさん [2011/12/13(火) 09:41:54.02 ] 「VBAは完全なオブジェクト指向ではない」との記述を見たのですが このことをオブジェクト指向のことを十分には理解していない人に 200文字以上で説明してくださいませんか?
221 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 13:54:02.76 ] >>220 >十分には理解していない人 どこのどいつだ? Deutschでもよければ400字くらいで?
222 名前:220 [2011/12/13(火) 14:52:35.87 ] >>221 ここのオレだ。 I'd rather prefer English than Deutsch.
223 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 16:22:00.16 ] I'd rather prefer English wife than Deutsch wife.
224 名前:デフォルトの名無しさん [2011/12/13(火) 18:22:12.32 ] VBAでいくつか文字列が入ったセル(その時によりセルの数が違う)があって そのうち昇順で並べて一番最後の文字列だけを取り出す方法はどうしたらいいですか?
225 名前:224 [2011/12/13(火) 18:22:47.09 ] セルちゃうわ、シート名だった。 シートの数は、ファイルによりいつくあるかはわからないの。
226 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 18:42:32.06 ] >>224 Sub 最後のシト() s = "" For Each ws In Worksheets If ws.Name > s Then s = ws.Name Next Debug.Print s End Sub
227 名前:147 mailto:sage [2011/12/13(火) 19:31:28.61 ] >>220 俺もオブジェクト指向とか理解していないけど、 継承できなのにはかなりまいった。
228 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 19:33:23.34 ] Excelではないのですが・・・知恵をお貸しください Visioで下記の図を作成しようと思っています A→ F→Z B→↑ ・Aに値が入ると、F・Zにも値が入る ・Bに値が入ると、F・Zの値がクリアされ、Aに値が入っている場合はAに値が入っている状態を維持。Bをクリアすると、上記と同じA・F・Zに値が入る ここまではVBAで作成できたのですが、これを ・(Bに値が入っていない状態で)Aの値をクリアしてもF・Zの値をそのまま維持 にしたいのですが、値を維持するためにFにstaticを宣言してもうまくいきません。 そもそも、Staticでいいのかすら、迷ってきて・・・値を維持できるうまいやり方はないでしょうか
229 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 23:04:26.04 ] >>226 お前>>176 ? それとも>>213 ? >最後のシトとかいらっとくるからやめろ。
230 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 23:21:13.61 ] >>229 226 が 213 のボケをかますとは思えない つーか一々煩いからお前が黙ってろ
231 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 00:23:42.59 ] >>220 オブジェクトを部品として利用することは出来るが 既存のオブジェクト(クラス)を継承して新たな部品を作ることは出来ない
232 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 00:37:17.98 ] >>230 ごめんなさーいw
233 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:33:54.08 ] シートで行を削除するのにマクロの記録だと1行目・2行目を消すのに Rows("1:2").Select Range("A2").Activate Rows("1:2").Delete Shift:=xlUp Range("A1").Select というのが出来たんで、この開始行と終了行を変数にしたい。 んで、 i= 11 endrow = 13 とかして Rows(i:endrow).Delete Shift:=xlUp とすると構文エラーになってしまいます 行を変数にするのはどのようにしたら良いんでしょう?
234 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:42:02.74 ] Rows(i:endrow).Delete Shift:=xlUp ↓ Rows(i & ":" & endrow).Delete Shift:=xlUp
235 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:52:48.73 ] >>234 ありがとうございます
236 名前:デフォルトの名無しさん [2011/12/14(水) 18:54:02.39 ] >>235 ついでに言うと、Rowsに対するDeleteは常にxlUpだからShift:=xlUpは不要
237 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 21:04:31.60 ] >>236 言われてみたら確かにそうですね w
238 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 21:33:37.60 ] 削除は下から消さないと・・・
239 名前:デフォルトの名無しさん [2011/12/14(水) 22:21:48.02 ] >>238 分割された領域なら下からとか右からで削除しないと面倒だけど、 連続の領域をまとめて消すんなら別にどうでも良いんじゃね?
240 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 22:59:06.37 ] アドバイスお願いします。 数字、名前のペアが複数あって、数字をキーにすると名前が取り出せて、 名前をキーにすると数字が取り出せる連想配列のようなものを作りたいのですが、 VBAではどのようにすると効率的でしょうか? それぞれ、一意的にペアが決まっています。
241 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:06:34.94 ] >>240 Scripting.Dictionary オブジェクトを2つ用意して、 一方は数字をキー、もう一方は名前をキーと使い分ければいい
242 名前:240 mailto:sage [2011/12/15(木) 22:30:21.63 ] >>241 ありがとうございます。試してみます。
243 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:14:21.90 ] どちらで聞いたらいいのか分からなかったのでこちらで聞きますが セルの値を数値処理する場合vbsから操作するのとvbaから操作するのだとどちらが計算早いですか?
244 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:15:16.83 ] vbs
245 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:19:32.00 ] Excelとのやり取りが殆ど無い場合でも、 腐っても型付言語であるVBAの方が速いと思う。 やり取りが多い場合はインプロセスとアウトプロセスの 越えられない壁があるからVBSに勝ち目無し。
246 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:32:28.93 ] VBSでエクセルを偽装してだね
247 名前:デフォルトの名無しさん [2011/12/16(金) 08:03:26.05 ] x個の数からy個の数をランダムに取り出したいときってどうしてますか? 数の集合が{1, 2, 3, 4, 5}つまりx=5でy=3の場合だと 毎回 2, 3, 5 1, 2, 4 3, 4, 5 みたいに5個の数のうちランダムに3つ選び出す、というアルゴリズムです
248 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 08:13:33.97 ] 単純にやるなら乱数3つ 問いの内容ならxCy個の中から乱数1つ 1なら(123)、2なら(124)……て形で割り振るアルゴリズムを通してゲット 重複や順列の内容で幅を変えればいい
249 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 15:55:35.00 ] www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_rnd.html ここ参考にすればいいんじゃねーの
250 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:02:45.72 ] vbaって動的の多次元配列ってできねえの?
251 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:03:30.70 ] 型はstringで
252 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:06:42.33 ] なんでそういうサイトを上げるんかねぇ。 恥かかせるためか?
253 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:07:54.02 ] >>250 やってみりゃ分かるだろ?
254 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:08:28.00 ] dim hoge(,) as string これだとエラーなんだけど
255 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:09:48.29 ] dim hoge[][] as string これもエラーだった
256 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 18:10:19.05 ] 二次元で要素数が不定の動的配列はできないんじゃないの? 検索するとできるって書いてあるページもあるけど、サンプルをコピペするとエラー出るし VBとVBAを勘違いしてんじゃないかと思う 要素数固定で宣言して、片方の次元だけReDimする方式の動的配列なら可能だけど
257 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 19:23:51.82 ] >>250 Dim hoge() As String ReDim hoge(10, 5, 3) hoge(0, 0, 0) = "3次元" Debug.Print hoge(0, 0, 0)
258 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 20:49:43.90 ] >>257 思ってたのとちょっと違いますけどこれとpreserveで代用できそうだな ありがとうございます
259 名前:デフォルトの名無しさん [2011/12/17(土) 00:44:13.36 ] WindowsAPIを使用したいときは、いちいち定義しないとダメなんでしょうか? 現場では資料もなくネットも使えない環境なので手打ちをキツイです。
260 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 00:50:47.84 ] >>259 いちいち定義しないとダメですが、WinAPIなら百科事典が発売されているのでそれを持ち込むという手も あとはmsdnのオンラインヘルプ(CD-ROM版)を用意して、CのソースをVBAに書き換えるマクロとか用意すれば なんとかなるでしょう
261 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 01:22:48.76 ] vbaでこんな感じのリクエストを飛ばすのってどうやるのですか? GET / HTTP/1.1 Accept-Language: ja Accept-Encoding: gzip User-Agent: hoge (1.1.1) Host: wwww.aaa.bb
262 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 01:34:28.67 ] GET /hogehoge.cgi HTTP/1.1 Accept-Language: ja Accept-Encoding: gzip User-Agent: hoge (1.1.1) Host: wwww.aaa.bb 送るとこかいてませんでした
263 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 03:32:05.24 ] >>261 WinInet関連のAPIを使う HttpAddRequestHeadersしてHttpSendRequestかな? WinHTTPライブラリ(WinInetの後継らしい)てのもあるが詳細はしらない これ以上はスレチになるんで ググるか APIのすれで聞いておくれ
264 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:19:21.00 ] >>261 ネットのやりとりはいろんな方法がある たぶん、こんな感じで行けると思う Set oHttp = CreateObject("MSXML2.XMLHTTP") oHttp.Open "GET", "www.aaa.bbb/hoge.cgi ", False oHttp.SetRequestHeader "Accept-Language", "ja" oHttp.SetRequestHeader "Accept-Encoding", "gzip oHttp.SetRequestHeader "User-Agent", "hoge(1.1.1)" oHttp.Send ' リクエスト送信 istatus = oHttp.Status ' 結果確認 If istatus = 200 Then s = oHttp.responseText ' 本文(HTMLソース)取得
265 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 09:44:20.71 ] Dim WS As Worksheet Set WS = Worksheets("記録") Worksheets(WS).Activate ← で、矢印の部分で型が一致しないって出るんですけど、String型でないと駄目ッてこと ですか?
266 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 09:47:26.21 ] Dim WSName As String WSName = "記録" Worksheets(WSName).Activate じゃないの?たぶん
267 名前:デフォルトの名無しさん [2011/12/17(土) 09:52:46.36 ] >>265 265の方法でもよいし、Object型(Worksheet型)で宣言したときは Worksheets(WS).Activate じゃなくて WS.Activate って書けば良い
268 名前:267 [2011/12/17(土) 09:54:36.29 ] 安価ミスった 「265のやり方」じゃなくて「266のやり方」でした
269 名前:265 mailto:sage [2011/12/17(土) 09:55:52.47 ] なるほど! ありがとうございます
270 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 16:18:35.70 ] >>264 できました! ありがとうございます
271 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 18:21:08.96 ] constって使う必要あるの? 変数に値持たせてそれ変えなければいいだけじゃないの
272 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 18:35:36.34 ] >>271 プロシジャ毎にPrivate変数に一々代入するのって面倒じゃない?
273 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 18:48:53.68 ] Constの場合は確実に固定値だと判断が出来る。 普通の変数だと、その点が曖昧にならざるを得ないから、 後でソースを見返す時に面倒。
274 名前:デフォルトの名無しさん [2011/12/17(土) 19:14:43.41 ] >>272 ところでモジュール間でも定数は自由に使えますかにゃ? 標準モジュールとフォームモジュールを使ってた場合、 どちらかのモジュールの一番上に書いておけば、他方のモジュールをその時点で未使用でも、その他方の上のほうに書いてある定数は使用可能?
275 名前:274訂正 [2011/12/17(土) 19:16:32.05 ] >>272 ところでモジュール間でも定数は自由に使えますかにゃ? 標準モジュールとフォームモジュールを使ってた場合、 どちらかのモジュールの一番上に書いておけば、他方のモジュールから実行が始まったとき、 書いてるほうのモジュールがその時点で未使用でも、その他方のモジュールから別のモジュールの上のほうに書いてある定数は使用可能?
276 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:36:50.61 ] ちょっと試せばすぐにわかるのに
277 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:37:56.98 ] モジュールはマクロ開始時点で全て初期化される。
278 名前:デフォルトの名無しさん [2011/12/17(土) 19:39:29.49 ] >>276 あなたのVBA力と回答力を試しているんですが
279 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:43:07.60 ] VBA力とか言ってる時点でみんなより自分が格下なのに気付けよ
280 名前:デフォルトの名無しさん [2011/12/17(土) 20:11:42.31 ] わからないなら無理にレスしてくれなくていいよ?
281 名前:デフォルトの名無しさん [2011/12/17(土) 21:08:41.34 ] VBAで、数値から文字列、文字列から数値への変換の方法はいろいろあるみたいだけど どの方法が一番標準ですか? 自分は前者はCStr、後者はVal、でそれぞれやってますが、これって変?
282 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:25:43.32 ] 基本は自動型変換で良くね? 後、Val関数は何気に色々と面白い仕様だから注意した方が良いよ。
283 名前:デフォルトの名無しさん [2011/12/17(土) 22:04:12.83 ] >>282 自動型変換とは何ですか? 面白い仕様とはどういうことですか? あにゃたの発言のほうが意味がいろいろ取れて神経を使います。
284 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:58:53.98 ] 別に標準とかないでしょ いろいろな方法があるのにはそれなりに理由があるんだから その時によって最適な方法を選べば良い
285 名前:デフォルトの名無しさん [2011/12/17(土) 23:21:52.65 ] valは使わないな 文字列にする時はこんな自作ライブラリつかってる Function dfVntToStr(ByVal StringVal As Variant) As String On Error Resume Next dfVntToStr = \\\"\\\" \\\'初期化 If Not IsNull(StringVal) Then dfVntToStr = StringVal & \\\"\\\" \\\'文字列へ変換 End If On Error GoTo 0 \\\'エラークリア End Function 同じようにintに変換とかlongに変換とかのライブラリも作ってる ネタ元はこれ VisualBasic6エラーコーディング ttp://www.amazon.co.jp/dp/4894712237/
286 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:52:58.28 ] VBAで自作ライブラリ作ってる人とか初めて見た・・・すごいな
287 名前:デフォルトの名無しさん [2011/12/18(日) 01:00:33.26 ] >>285 なぜ標準的な機能がすでに存在してるのに わざわざ自作ライブラリまで作るんですか? つこてる豆が違うんですか?
288 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:13:53.11 ] その\\\は何なの
289 名前:デフォルトの名無しさん [2011/12/18(日) 01:18:30.50 ] つこてる豆です
290 名前:デフォルトの名無しさん [2011/12/18(日) 01:50:27.77 ] \\\\\\はたぶんp2が原因、だと思う 理由は変換でエラーが起きても統一した処理が書けるようにするため ネタ本はVB6のエラー処理を解説してる本で、安全なプログラミングの フレームワークのサンプルもある(285はその1つ) 個人的にツッコミを入れてたところへの解答がちゃんと書いてある本だったので、ExcelVBAでも使わせてもらってる この本のライブラリと、「Excelプロフェッショナルエンジニアテクニック 」で 紹介されているアドイン:VBADeveloper.xla は自分が使うExcelVBA環境では 使いまわすようにしてる
291 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:45:14.73 ] 1時間かけてコーディングたものをデバッグしたら、最後のコードが.saved=true:.closeで、次開いたらコードが全て消えていました! 途中保存はしていませんでした、どうすればいいですか!!!
292 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:53:35.82 ] www.gigafree.net/utility/recovery/undelete360.html
293 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:58:10.81 ] デスクトップクリックして Alt + F4 押して エンター押せば解決だ!
294 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:23:28.84 ] Winキーを押してすばやくUを2回押すとバックアップ取得できるよ
295 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 04:24:50.37 ] >>291 おまえはこの1時間で金では買えない貴重な体験をした 明日からがんばれ
296 名前:デフォルトの名無しさん [2011/12/18(日) 05:06:32.28 ] Sub kk() Dim a As Long, b As Long, c As Long, d As Long a = 10 Do While Cells(a, 2) <> " " If Cells(a, 1) >= 9 And Cells(a - 1) <= 8 And Cells(a, 2) = Cells(a - 1, 2) Then If Cells(a, "N") = 1 Then Cells(a, "Y").Copy = Cells(a, "AA") Cells(a, "Z").Copy = Cells(a, "AB") End If If Cells(a, "N") = 1 Or 2 Or 3 Then Cells(a, "Z").Copy = Cells(a, "AB") End If Else: Cells(a, "AF") = "TRUE" End If a = a + 1 Loop End Sub
297 名前:296 [2011/12/18(日) 05:07:21.63 ] >>296 ですが、エラー1004が出てしまいます・・・ アドバイスいただけないでしょうか?
298 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:24:31.13 ] >>296 ここ、 If Cells(a, 1) >= 9 And Cells(a - 1) <= 8 And Cells(a, 2) = Cells(a - 1, 2) Then ↓ こうじゃないの? If Cells(a, 1) >= 9 And Cells(a - 1, 1) <= 8 And Cells(a, 2) = Cells(a - 1, 2) Then
299 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:26:00.71 ] >>296 これは、 If Cells(a, "N") = 1 Or 2 Or 3 Then ↓ たぶん、こう If Cells(a, "N") = 1 Or Cells(a, "N") = 2 Or Cells(a, "N") = 3 Then
300 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:28:57.05 ] >>296 Copyの使い方がおかしい Cells(a, "Y").Copy = Cells(a, "AA") ↓修正 Cells(a, "Y").Copy Cells(a, "AA") または Cells(a, "AA") = Cells(a, "Y")
301 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 08:50:31.31 ] >>285 数値から文字列への変換って意味ではそれ単なる暗黙の型変換だね
302 名前:デフォルトの名無しさん [2011/12/18(日) 11:21:49.50 ] これはなぜエラーが出るの? Sub Test() ActiveSheet.ActiveCell = 1 End Sub
303 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:49:50.34 ] ActiveCellはActiveSheetのプロパティではないから
304 名前:302 [2011/12/18(日) 12:22:44.96 ] >>303 でもActiveCellはsheet一般のプロパティじゃないの? そしてActiveSheetはsheet一般に属するんじゃないの? 以上から、ActiveCellはActiveSheetのプロパティになるんですけど。
305 名前:デフォルトの名無しさん [2011/12/18(日) 12:36:07.79 ] >>302 officetanaka.net/excel/vba/tips/tips34.htm これを見る限り、「ActiveCellはsheet一般のプロパティ」じゃないっぽい (ちなみに俺は>>303 じゃないよ)
306 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:41:09.09 ] オブジェクトブラウザで確認しろ、ってことだな。 もしくは、一旦Sheet型に代入してからアクセスするとか。
307 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:27:30.83 ] 変数を初期化する時に数値型なら0を入れるのが普通ですよね(まぁ特定のセルの値をそれに使うこともあるでしょうけど) 日付型の時って初期化はどうするんですか? Dim hi_from As Date で hi_from = "" としたら怒られちゃった^^;
308 名前:296 [2011/12/18(日) 14:27:36.53 ] >>298-300 おかげさまで解決しました。 ご丁寧にありがとうございましたー
309 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:33:48.23 ] >>307 >としたら怒られちゃった^^; 何のために初期化したいのか知らんけど、0 でも入れときゃいいんじゃね。
310 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:37:58.97 ] >>309 thx
311 名前:デフォルトの名無しさん [2011/12/18(日) 14:52:54.06 ] >>307 この野郎! おまえ何をやっとるんだ(怒)!! みたいに怒られたのか? それって誰によ?
312 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:57:58.13 ] >>304 >でもActiveCellはsheet一般のプロパティじゃないの? 違う ApplicationまたはWindowのプロパティ >そしてActiveSheetはsheet一般に属するんじゃないの? 違う Application、WindowまたはWorkbookのプロパティ >以上から、ActiveCellはActiveSheetのプロパティになるんですけど。 ならないからエラー出るんだよ
313 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:00:13.09 ] >>307 っていうかDimした時点で初期化されてるよ
314 名前:312 mailto:sage [2011/12/18(日) 15:04:30.79 ] あーすまん ActiveSheetが返すのはWorksheetオブジェクトね
315 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:05:10.06 ] >>304 Excelのオブジェクトは階層構造になっている Application - WorkBook(Application毎に複数) - WorkSheet(WorkBook毎に複数) ActiveCell は最上位の Application オブジェクトのプロパティなので、Sheet オブジェクトから直接参照することはできない やるならたぶん ActiveSheet.Application.ActiveCell となるはず
316 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:22:26.85 ] なんで MSDN とか見ないのか… msdn.microsoft.com/en-us/library/ff834673.aspx The following expressions all return the active cell, and are all equivalent. ActiveCell Application.ActiveCell ActiveWindow.ActiveCell Application.ActiveWindow.ActiveCell
317 名前:デフォルトの名無しさん [2011/12/18(日) 16:00:58.06 ] じゃあActivecellの前には普通の人が使うような単語は書いちゃいけないのか? XXXXX.Activecell みたいな形はない、と覚えておいてOK? そしてこれらの法則は、Activebookや、Activesheetにも当てはまる? つまり、Workbooks(2).Activesheet みたいな形はない?
318 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:16:36.14 ] >XXXXX.Activecell みたいな形はない、と覚えておいてOK? ダメ Application.ActiveCell ActiveWindow.ActiveCell >>312 で「ApplicationまたはWindowのプロパティ」って書いたよね? >>315 とか>>316 にも書いてあるよね? >そしてこれらの法則は、Activebookや、Activesheetにも当てはまる? 法則とかの話じゃないし >つまり、Workbooks(2).Activesheet みたいな形はない? ある >>312 で「Application、WindowまたはWorkbookのプロパティ」って書いたよね?
319 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:31:28.44 ] >>317 > XXXXX.Activecell みたいな形はない、と覚えておいてOK? Type YYYYY ActiveCell As Integer End Type Dim XXXXX As YYYYY みたいなケースは (やるかどうかは別にして) ありえるから、ダメ。
320 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:34:27.34 ] >>317 >じゃあActivecellの前には普通の人が使うような単語は書いちゃいけないのか? ActiveCellプロパティを持つオブジェクトを書く 書かなければApplicationとみなされる あと、とりあえず>>319 は無視していい
321 名前:デフォルトの名無しさん [2011/12/18(日) 16:51:48.87 ] Application ActiveWindow Application.ActiveWindow この違いはなんなのでしょう? 誰か違いのわかる男(あるいは女)はいますか?
322 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:41:31.56 ] 字数が異なります
323 名前:321 [2011/12/18(日) 17:50:13.70 ] ふざけるな
324 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:58:43.06 ] >>321 前提として ApplicationはExcel自体 WindowはExcel内の子ウィンドウで、Book などに対応して作成される Excelを起動すると、Applicationオブジェクトが作成される Bookを作成すると、Applicationオブジェクト配下に、WorkbookオブジェクトとWindowオブジェクトが作成される もう一つBookを作成すると、Applicationオブジェクト配下に、別のWorkbookオブジェクトと別のWindowオブジェクトが作成される workbookは文書内容そのものを保持し、Windowはドキュメント内容以外の状態や表示設定(Book単位のActiveCellや画面の拡縮率など)を保持する ActiveなBook(ActiveWorkbook)を切り替えると、ApplicationオブジェクトのActiveWindow、ActiveCell、ActiveChartなども一式自動的に切り替わる で、 Application は、ActiveSheet.Applicationの省略形で、Excel全体を表すApplicationオブジェクトを指す Application.ActiveWindowは、Excel内のアクティブなWindowオブジェクトを指す(workbookを切り替えるとWindowオブジェクトも切り替わる) ActiveWindow は、Application.ActiveWindow の省略形で、Application.ActiveWindow と同じ おそらく内部では、 Application.ActiveCell を参照したとき、Application.ActiveWindow.ActiveCell を返すような実装になってるはずなので、 ActiveCell Application.ActiveCell ActiveWindow.ActiveCell Application.ActiveWindow.ActiveCell の4つは常に同一になるはず
325 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 18:32:16.70 ] 2つのオブジェクトが同一かどうか調べる方法ってあるのかな? たとえば Set ObjA = ActiveCell Set ObjB = Application.ActiveWindow.ActiveCell If ObjA = ObjB Then … みたいな感じで
326 名前:321 [2011/12/18(日) 18:42:08.92 ] >>324 ご丁寧なご説明ありがとうございます。 かなりわかってきたような気がします。 >>322 のアホとは違いますね。 つこてる豆が違います。 こういう基本的とも思えることまで解説した本などがあればいいのにね。
327 名前:デフォルトの名無しさん [2011/12/18(日) 19:02:29.27 ] >>325 実際に試したら 書いているとおりのコードで調べることができましたよ。 Sub Test() Dim objA As Object Dim objB As Object Set objA = ActiveCell Set objB = Application.ActiveWindow.ActiveCell If objA = objB Then Stop '<=ここで止まった。 End If End Sub
328 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:06:04.93 ] "つこてる豆が違います" の検索結果が見つかりませんでした。 つ こ てる 魔 眼 が 違います の検索結果を表示しています。 Bingワロタw
329 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:41:28.74 ] なぞなぞ Debug.Print ActiveCell Is ActiveCell の結果はFalse。さて理由は?
330 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:33.37 ] >>327 ダウト。これ試してみ Sub Test() Dim objA As Object, objB As Object Set objA = Range("A1") Set objB = Range("B2") If objA = objB Then Debug.Print "同じ" End Sub
331 名前:327 [2011/12/18(日) 21:22:50.30 ] >>330 If objA = objB Then でレンジを入れたオブジェクト変数を比較すると、 objAとobjBのValueで比較するみたいですね。 上記コードに else Debug.Print "違う" を付け加えて、セルに違う値入れて実行したら"違う"になりました。 あとは例えば比較対象をobjA.AddressとobjB.Addressにすると"違う"と判別されましたし、 A1とB2で書式設定を違うものにしたら objA.NumberformatとobjB.Numberformatの比較も"違う"という結果になります。
332 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:29:46.45 ] >>329 ひょっとして、 ActiveCellが返すRangeオブジェクトは現在の選択座標をもとに都度新規に作成されるとかそういう話?
333 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:34:17.84 ] それを言うなら Range("A1") Is Range("A1") もFalseだね
334 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:39:41.65 ] >>329 これ前から謎だったんたよな 正解を教えてくれると助かる で自分なりに出した答えは セルの参照先は一緒だけどRangeオブジェクト(インスタンス?)が違うから 下と同じ原理かなと思う Set objA = Range("A1") Set objB = Range("A1") Debug.Print objA Is objB Set objA = Range("A1") Set objB = objA Debug.Print objA Is objB 前者はFalse だけと 後者はTrue
335 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:45:17.52 ] ヒント Set objA = Worksheets(1) Set objB = Worksheets(1) Debug.Print objA Is objB これはTRUE
336 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:16:30.48 ] うわあ・・・
337 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:22:59.09 ] 別のプロシージャに配列渡してその値変えたら元も変わる?
338 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:25:51.03 ] ちょっと試せばすぐにわかるのに
339 名前:334 mailto:sage [2011/12/18(日) 23:27:21.13 ] >>335 これは シートオフジェクトは最初からあるからだったりするのか? VBEでみるとシートオフジェクトが見えるし
340 名前:334 mailto:sage [2011/12/18(日) 23:30:23.28 ] シートオフジェクト ってなんだよ(笑) シートオブジェクト だった
341 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:33:39.87 ] VBAからVBEのユーザーフォームデザイン編集画面でツールボックスを右クリックして「その他のコントロール」を選択した時にでるダイアログの 「利用可能なコントロール」を制御する事は可能ですか? 制御は出来なくても利用可能か調べたりチェックされているかどうか調べる方法でも良いです
342 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:01:49.44 ] >>338 あなたのVBA力と回答力を試しているんですが
343 名前:デフォルトの名無しさん [2011/12/19(月) 02:24:24.73 ] VBAでIEのHTML表示領域の幅と高さを調べたいのですが どうすればよいでしょうか? HTMLDocument の HeightやWidthですと IEのウインドウ幅と高さの取得になってしまいます。
344 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:30:36.62 ] tree viewを使用し、配列gets(n,m)のツリーを作成しようと思ったのですが n = 0 m = 0 Do While gets(n, m) <> "" thttp = gets(n, 0) '親カテゴリ TreeView1.Nodes.Add , , thttp, thttp, "oya" m = 1 Do While gets(n, m) <> "" sthttp = Split(gets(n, m), "/") '子カテゴリFormat = KEY/TITLE TreeView1.Nodes.Add thttp, tvwChild, sthttp(0), sthttp(1), "child" m = m + 1 Loop n = n + 1 m = 0 Loop gets(n,m)はm=0が親カテゴリ m>0が子カテゴリで 親カテゴリ(n,0)は 単語 が格納されて、子カテゴリ(n,m)m>0には KEY/単語 が格納されています 空白の要素を余分に持っているため <> "" で飛ばしています 親カテゴリ(n,0)の要素が空白になった時終了するようにしているのですが 実行すると実行エラー35602 "Key is not unique in collection"と出てツリーが作成できません
345 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:46:08.20 ] 同じkeyが指定されてるんじゃね
346 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:14:42.05 ] keyは親子の関係なく 一意でないと いけなかったと思ったけどそうなってる?
347 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:20:57.96 ] >>345-346 ご指摘通りでした 配列の内容を見直しましたところ同じKEYの物がありました ありがとうございます
348 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:34:19.11 ] >>343 scrollHeight, scrollWidth
349 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 04:23:13.62 ] >>343 表示領域とは? >>348 以外に ClientWidth ClientHeight もあるが
350 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:29:22.69 ] >>334 Isってメモリのアドレスを比較してるんだよ。 Set objA = Range("A1") Set objB = Range("A1") Debug.Print objA Is objB って Set objA = Range("A1") Set objB = Range("A1") Debug.Print ObjPtr(objA) = ObjPtr(objB) と同じ。
351 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:15:11.69 ] どういう時にインスタンスが複製されるのかよくわからんちん
352 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 20:07:31.39 ] >>351 の言う複製の意味がよくわからんちん
353 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:12:18.80 ] public変数使わない方が良い理由が分からん
354 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:20:55.81 ] >>339-340 >シートオフジェクトは最初からあるからだったりするのか? 多分そう。 Cell オブジェクトなんてものがあれば、Cells("A1") Is Cells("A1") が True になるかもしれないけど、VBA には、Cell オブジェクトはなくて、 (*仮に単一のセルだとしても) 常にRange オブジェクトになってしまう。 Range オブジェクトは、当然範囲の情報を持つ必要があるので、 Obj = ActiveCell とやる度に、各々別の Range オブジェクトが「生成」される。 と言うのが、>>329 の答えだと思う。
355 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:21:41.47 ] >>353 >public変数使わない方が良い理由が分からん 必要ない奴に見せたがることはないだろ。
356 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:23:37.89 ] ユーザーフォーム間で変数やり取りとかするときにどうしてもpublic使いたくなる それでもやっぱりpublicには抵抗がある
357 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:32:17.87 ] パブリックプロパティならいいんじゃない
358 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:07:18.25 ] >>353 プログラムの規模が大きくなった時にバグの元になりやすいっていう経験則だよ 今はまだピンと来なくても、先人の言うことは聞いておいた方がいい
359 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:37:37.21 ] 逆にPublic変数を使った方がいいっていうシチュエーションはあるのかな
360 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:50:40.39 ] Public変数 メリット:小規模プログラムで受け渡しI/Fを考えなくて良い デメリット:クラス間の結合度が問題になる(再利用しにくくなる) 位? ところでVBAって ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ? もちろんPublicで型宣言しておいて。 なんだか言語仕様上ダメだった記憶がある。 変数クラスを定義してそのクラスのインスタンスをローカルで定義して 参照渡ししないとダメだった記憶もある。 なので、ユーザーフォームクラスとの受け渡しはPublic使った様な記憶 がある。
361 名前:デフォルトの名無しさん [2011/12/20(火) 11:09:24.62 ] >>360 矢切りの渡しでなら渡せる
362 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 13:33:28.48 ] 矢切の渡しってたまに聞くけどどういう意味なの? 調べてもそれっぽいのでてこないけど
363 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 15:58:55.11 ] ListViewのSortOrderって昇順と降順しかない? 1,5,10,50,100 とあるとしても 1 10 100 5 50 となってしまいます これを 1 5 10 50 100 のようにできないですか?
364 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:23:33.25 ] >>362 だよな。それが心のこりだわ。
365 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:43:09.87 ] Functionプロシージャ内でSubプロシージャって呼び出せますか? 自分でやったらダメでしたが、何か方法があれば教えてください。
366 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 20:27:23.48 ] 普通に呼べるが
367 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:16:35.69 ] >>366 具体的には、シートで「=Function名(引数値)」って書いたんですが Function中のSubが実行されないのが疑問になっています。普通に呼べますか?
368 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:36:46.56 ] 呼べる。MsgBox入れてみればわかる。
369 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:45:52.54 ] あ、MsgBoxは動きました。有難う御座います。 自分がしたいのは、ワークシートのA1をクリアする様なSubを Function中から呼び出す様にして、そのワークシートで =Function名(引数) とA1以外のセルで書いて、シートのA1をクリアすることです。
370 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:51:56.35 ] 求むESPer
371 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:58:53.06 ] >>369 support.microsoft.com/kb/170787/ja
372 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:19:19.93 ] >>371 おお、有難う御座います!そうか、できないのかぁ。セルの総和とかで クリアするかどうかをFunctionで判定して消去、ってやりたかったなぁ。
373 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 23:17:07.48 ] 関数でシート操作をしたいんだろうけど 更新処理をフックにするくらいだろうなあ
374 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 03:41:16.16 ] >>360 >ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ? Public Type hogeType a As Integer b As Integer End Type があるとして Sub test() Dim hoge As hogeType hoge.a = 1 hoge.b = 2 MsgBox hogesum(hoge) MsgBox hoge.a End Sub Function hogesum(ByRef hage As hogeType) As Integer hogesum = hage.a + hage.b hage.a = 0 hage.b = 0 End Function でtestを走らせると、3と0と表示される 問題なく渡せるようだ ちなみに引数をByValにすると ユーザー定義型をByValで渡すことはできません ってコンパイルエラーになった できないのは値渡しと矢切りの渡しだな
375 名前:360 mailto:sage [2011/12/21(水) 07:31:46.89 ] >>374 申し訳ないですが、言葉がごっそり抜けてました。 ----------------------------------------------------- (誤) ところでVBAって ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ? (正) ところでVBAって 標準モジュールでGlobal定義されたユーザー定義型変数の参照渡しを 標準モジュールからクラスモジュールのプロシジャに プロシジャ引数で渡せたっけ? ----------------------------------------------------- 同一クラス内や標準モジュール内で渡せるのは知ってます(実際にできているので)。 標準モジュールからクラスモジュールのプロシジャに渡そうかなと思って書いたら、 VBAから怒られた。 解決方法は、 クラスモジュールにユーザー定義型変数だけPublic定義したクラスを定義して そのクラスのインスタンスを標準モジュールに定義してからそのObjectを参照渡しする。 だけど、面倒なので、サクッと渡せないかなぁ、とおもっだだけです。
376 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 07:33:57.50 ] >>375 Friendでいけたような記憶が
377 名前:360 mailto:sage [2011/12/21(水) 07:34:45.04 ] あと、 矢切りの渡しって 「global宣言されたユーザー定義型変数を標準モジュールからクラスモジュールのプロシジャに参照渡しする」 の意味でしょうか? 隠語を良くしらないので(不勉強済みませんが)。
378 名前:360 mailto:sage [2011/12/21(水) 07:37:20.28 ] >>376 Friendも試したけどダメだった様な記憶があります。 VBだと可能らしい(VBは使ったことないですが)。 というので混乱した覚えがあります。
379 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:19:02.97 ] >>377 昔、矢切の渡しってヒット曲があっただけのおっさんジョークだからあまり真面目に受け取るなよ… w
380 名前:360 mailto:sage [2011/12/21(水) 08:23:29.73 ] りょうかい。 まぁ、ワシも40過ぎのおっさんですけどねw
381 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 16:50:38.27 ] Windows97 Excel2003で、アドインについて。 下記のコードを一度実行後にxlaファイルの配置場所が変わった場合、そのまま再度下記を実行すると、変更後のパスでAddしても、実際には変更前のパスのアドインが追加されます。(ファイルがないため関数実行部分でエラー) Set myAddIn = AddIns.Add(パス.あどいん.xla) myAddIn.Installed = true アドイン関数実行 myAddIn.Installed = false どうもエクセル→ツール→アドイン から、該当するアドインを手動で削除しないとパスの変更に対応できないのですが、どうにか自動で対応できないでしょうか。 AddしたxlaファイルをKillしてもダメでした。 ケータイからなので見にくければすみません。よろしくお願いします。
382 名前:デフォルトの名無しさん [2011/12/21(水) 18:47:10.91 ] 質問あげ
383 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 20:42:08.31 ] そのOSパチモンだよ
384 名前:381 [2011/12/21(水) 21:14:08.81 ] うわどういう間違いしてんだorz OSはXPです……
385 名前:381 mailto:sage [2011/12/21(水) 21:15:50.46 ] 自ら晒しageしてしまった…
386 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:05:49.76 ] アドンズからリムーブしてみては?
387 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:17:31.77 ] >>375 クラスモジュール(Class1) Function hogesum(ByRef hage As hogeType) As Integer hogesum = hage.a + hage.b hage.a = 0 hage.b = 0 End Function 標準モジュール Public Type hogeType a As Integer b As Integer End Type Sub test() Dim hoge As hogeType Dim c As New Class1 hoge.a = 1 hoge.b = 2 MsgBox c.hogesum(hoge) MsgBox hoge.a End Sub 同じように3と0の表示 ためしたのは2007だから、それ以前のバージョンではどうかしらんが、問題なさそうだ 具体的にどういうエラーが出てたのか気になる
388 名前:360 mailto:sage [2011/12/21(水) 23:13:55.10 ] どうもです。 私は2003で駄目だったんですが、 VBA6.Xという意味では同じですかね? ただ、やったのが2年位前だったんで?です。 ユーザー定義型のサイズが数10KBクラスなので その辺が怪しいのかも? ありがとうございました。
389 名前:360 mailto:sage [2011/12/21(水) 23:21:38.00 ] あ・・・思い出した String型がメンバに含まれてました。 サイズを指定してないので動的変数ということになるので その辺も影響しているかもです。 それと、ユーザー定義型のメンバに他のユーザー定義型を含んでます。 エラーメッセージは・・・・忘れてしまいましたが、 何となく理由が分かった様な気がします。 ありがとうございました。
390 名前:381 mailto:sage [2011/12/22(木) 09:50:46.01 ] >>386 いろいろやってみましたが、リムーブの仕方がわかりません… 諦めて手動でやってもらう手順にするしかないかな…
391 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:38:16.17 ] VBAと相性の良い言語って何がある?
392 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:53:13.38 ] 相性ってどういうこと? どの言語でも組み合わせて使うという発想はあんまりないと思う 目的で使い分けるのが普通じゃないのかな
393 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:26:58.68 ] Excelとって意味なら.NETかな
394 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:16:46.86 ] VBSとか
395 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:24:48.00 ] ActivePerl+WIN32::OLE
396 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:55:45.37 ] webとデータのやり取りをするって意味です
397 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 15:14:31.06 ] もしかして探してるのはアドインとかライブラリ?
398 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:49:09.81 ] VBAが言語である事を知らないのでは
399 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:54:01.96 ] 入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか
400 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 21:39:15.79 ] >>399 > 演算処理は高速なCでやりたいとか そんなこと思いつく奴の質問とは思えないが…
401 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:02:43.63 ] 3ステップで学ぶExcelVBA入門終わったんだが、次にオススメの課題有りの参考書オススメ無いですか?
402 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:05:35.35 ] 横から失礼します。 >>399 >入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか ちなみにこれの実現方法としては、例えばどんなのがあるんですか?
403 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:37:59.06 ] >>402 Excel VBAからDLL呼び出し www.ne.jp/asahi/hishidama/home/tech/excel/dll.html
404 名前:デフォルトの名無しさん [2011/12/23(金) 10:03:27.62 ] FromにTimerを貼り付けるには?
405 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 10:42:30.15 ] >>404 >Fromに それは難しそうだ、その From とやらを作っている会社に問い合わせるべき。
406 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:20:34.71 ] [タイマーコントロール] クラスモジュール Tips15: VBAでも出来る [ タイマーコントロール ] クラスモジュール (Ver 3.0) www.h3.dion.ne.jp/~sakatsu/Excel_Tips15.htm Fromってなんやねん w Formだろ
407 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:28:49.53 ] Excel.Application.Visible = False ブック作成 ★ループ★ シート追加 ペースト ★ループ★ マクロ動作中に他の作業(ブラウザ使う)とかができない・・・(正確には画面がチカチカする) 完全にバックグラウンドで動作させるのは無理なのかな?
408 名前:404 [2011/12/23(金) 13:36:54.66 ] >>405 アホ >>406 ありがとうございます! やっぱり標準機能ではないのですね でも工夫すればできるということなんですね
409 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 15:58:49.73 ] タイマーコントロールってVBAで出来たんだっけ .netは標準装備だったけど
410 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:21:34.60 ] APIのSetTimerとか使った自前実装っぽい。
411 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 21:16:35.17 ] なんでググらないんだろうな タイマーの実現方法調べるのに3時間か…
412 名前:デフォルトの名無しさん [2011/12/23(金) 21:54:29.88 ] Formについてです。 はじめのときの Load、Initialize、Activateの使いわけを教えてくださいませ。 あと、おわるときの Unload、Terminateの使い分けを教えてくださいませ。 ちなみにLoad←→Unload、Initialize←→Terminateと対応ペアがあるようだけど、Activateに対するペアもう一方はなぜないのですか?
413 名前:デフォルトの名無しさん [2011/12/23(金) 22:23:42.54 ] >>412 home.att.ne.jp/zeta/gen/excel/c04p28.htm ↑を読めば分かると思うけど、Activateの反対はDeactivate そして、Load、Unload、Show、Hideはメソッドで Activate、Deactivate、Initialize、Terminateはイベント
414 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:35:00.40 ] >>387 こういう似非オブジェクト指向が面倒だからVBAではPublicばっか使ってるわ vba程度で大規模なもんつくらねーし
415 名前:413 [2011/12/23(金) 22:35:43.53 ] >>413 はちょっと書き方に配慮が足りなかった。 (メソッドとイベントの対応が分かりにくい書き方になってた) LoadするとInitializeイベントが発生して、 Showでイベントが発生する。 HideするとDeactivateイベントが発生して、 UnloadでTerminateイベントが発生する。 LoadしないでShowすると自動的にLoadされてShowするし、 HideしないでUnloadしても自動的にHideされてUnloadする。
416 名前:413 [2011/12/23(金) 22:37:50.21 ] 度々スマン なぜか抜けてた 誤:Showでイベントが発生する。 正:ShowでActivateイベントが発生する。
417 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:40:19.38 ] >>407 できるっしょ
418 名前:デフォルトの名無しさん [2011/12/24(土) 04:42:11.86 ] 特定のセルにコントロールを移したときに そのセルに文字を入力したいのですがどうすればいいですか?
419 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 04:58:05.63 ] >>418 SelectionChangeイベント
420 名前:418 [2011/12/24(土) 05:01:13.86 ] >>419 ありがとうございます
421 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 05:56:28.60 ] >>412 Loadは命令。Initialize、Activateはその結果実行されるプロシージャ(イベント) Initializeはそのフォーム(のインスタンス)で1回しか起きないが、Activateは何回でも起きる(可能性がある) Unloadも命令。Terminateはその結果起きるイベント >>415 どうせならもうちょっと正確に書け LoadとUnloadはメソッドじゃない。ステートメントだ オブジェクト(フォーム)に定義されている命令ではなく、VBA言語に定義されている命令 LoadでInitializeイベントが起きるのも、ShowでActivateイベントが起きるのも結果に過ぎないぞ ShowしなくてもActivateイベントは(そういう状況になれば)起こるし、HideしなくてもDeactivateイベントも起こる こっから先は気にしなくてもいいかもしれんが、実験すると Loadする前にインスタンス生成した段階でInitializeイベントは起こる まあこれは解る Unloadするとその時点でTerminateイベントが起こる どうもインスタンスへの参照が無効になるっぽい。これはちょっと嫌な仕様だ Unloadしないでインスタンスへの参照を削除した場合、Terminateイベントが起こってないかもしれん デストラクタはあてにするなって事か とりあえずLoadとUnloadメソッドは忘れて、Terminateイベントは無いものとして扱うのがいいんじゃないかな ついでに実験中に気付いたこと UserForm1.Show vbModeless MsgBox "表示しました" このコード走らすと初回表示のActivateイベントが発生しなくなる これってバグじゃねえかと
422 名前:デフォルトの名無しさん [2011/12/24(土) 08:52:42.72 ] >>421 LoadはShowがあるから使わなくて済むけど、 Unloadはあったほうが良いんじゃないの?
423 名前:ラーメン [2011/12/24(土) 09:56:51.82 ] >>417 うまいっしょ?
424 名前:デフォルトの名無しさん [2011/12/24(土) 09:59:18.68 ] Unloadを使わないとどんな不幸が起きますか?
425 名前:デフォルトの名無しさん [2011/12/24(土) 10:28:49.72 ] >>424 不幸ってわけじゃないけど要らないオブジェクトをメモリに残しとくのってなんか嫌だ
426 名前:デフォルトの名無しさん [2011/12/24(土) 10:31:35.95 ] >>425 それはExcelを閉じてもメモリに残りますか?
427 名前:デフォルトの名無しさん [2011/12/24(土) 10:38:43.47 ] excel閉じたら残らんけど閉じるまで残ってるのが嫌なの
428 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:03:07.59 ] >>422 LoadはShowするまえに初期化とかするために必要なんで、Showで代用はできんぞ Load,Unloadはもともと既定のインスタンスを生成する命令で、インスタンスの概念がなかった時代の名残だからな >>427 本来ならすべての参照が切れたら、適切なタイミングで消されるはずなんだが このへんはカーベージコレクタの動作とか絡んでるからなぁ 既定のインスタンス使うならLoadは代用がないだろうし、Unloadもすべきかもしれん 既定のインスタンス使わないならLoadは不要だろう UnloadはNothing代入とセットで使うなら良いんじゃね
429 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 10:34:22.39 ] ガベージコレクションは無いよ
430 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:26:15.52 ] あるメンバーサイトにログインして、目的のデータ取得してセルに表示するやり方分かる人いる?
431 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:37:49.52 ] お前はVBAと相性のいい言語でも探してろ
432 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:35:42.79 ] ここでいいのか知らないが VBEのコード記入する画面の文字の色とか背景色って変えれる?
433 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:47:15.64 ] 調べれば3秒で分かるだろ
434 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:01:51.31 ] 3秒では無理だった どうやったら3秒で調べられるん?
435 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 00:41:43.80 ] どうやればいいと思う?
436 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:48:56.35 ] 答えがわかってて、それを表示するだけなら3秒 調べるのは無理
437 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:51:52.86 ] 色の変更はオプション→エディタの設定
438 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:40:40.84 ] >>363 これ分かる方いませんか? ListViewのノードが数でソートすると数の大小で並び替えができるか、です
439 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:51:41.31 ] >>438 自分はわからん 別列作って文字列などで桁そろえてソートすれば解決するような気もする。
440 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 13:51:29.37 ] 1→0001 50→0050 みたいにしてあとで0取ればいいんじゃね?
441 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:08:52.08 ] 環境 WindowsXP SP3、excel2003です。 処理が終わったブックを保存する時に、マクロは含めずに シートのみ保存するマクロってどうすればいいでしょうか? 別名保存で出来るかと思ったのですが、マクロファイルを外す ような項目が見あたらなくて、わからなくなってしまいました。
442 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:15:38.30 ] この辺参考にすればいいんじゃね www.officetanaka.net/excel/vba/vbe/index.htm
443 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 21:57:58.10 ] >>441 VBAマクロ入りのをアドインでセーブ。 そのアドインをExcel に登録すればマクロ無しで行けることになる。 バージョン管理ツールで管理しやすくなるし、pj内で共用しやすくなる 。
444 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:10:13.08 ] >>441 単純にシートを新しいブックに移動またはコピーしてそれを保存するってのはどうかな?
445 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 08:48:23.35 ] >>442-444 今回は444さんの方法で出来ましたが、 アドインは思いつきませんでした。 ありがとうございます。
446 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:08:40.83 ] アドインがいいと思うけどなぁ シートコピーは1セル256文字?制限あるし。 数文字程度の欠けだと誰も気付かないまま被害が拡大して…
447 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:16:49.93 ] 入力されているセル範囲の最終行が知りたくて Dim R As Range R=ActiveSheet.UsedRange って、やってRから 最終業を取り出そうとしたんだけど、「オブジェクト云々」とエラーが出ます。 なんか間違ってる?
448 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:35:09.40 ] うん間違ってる
449 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:44:59.95 ] Set R=ActiveSheet.UsedRange
450 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:48:15.48 ] 何が間違ってるってその姿勢だよね。 エラーメッセージを読む気すらないっていう。
451 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:15:18.09 ] ユーザーフォームのリストビューで カラムをクリックしたときにクリックしたカラムの2行目のテキストを取得するにはどうしたら良いでしょうか
452 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 06:18:20.46 ] SETの使い分けが分からん 代入する時は基本的に付けるもの?
453 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 07:07:36.48 ] objectの参照のときにだけつける
454 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 07:37:45.25 ] ヘルプ嫁
455 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 07:47:51.73 ] ずぐだんずんぶんずんゲームやるときにつける
456 名前:147 mailto:sage [2011/12/28(水) 08:26:45.66 ] 俺も分からん。 For Each文や、関数での授受時にSetが要るのか要らんのかさぱーり理解できん。 For Each Set obj in collection とか、 Set objResult = funcMine(Set objArg) とか。
457 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 09:47:58.52 ] =も代入じゃん(比較もするけど) 区別する必要って何?
458 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 11:58:37.21 ] >>457 たとえばなんでも入れられるVariant型の変数aにa = AtiveCellとしたときaに参照を代入したのかActiveCell.Valueを代入したのか分からないから。 型によって区別する仕様にしてもよかったとは思うが。
459 名前:デフォルトの名無しさん [2011/12/28(水) 15:45:58.78 ] 本当に初歩的な質問をして申し訳ございません。 sheet1のcells(7,1)の部分から、cells(3,3)に入力した数字分だけ下に伸ばしたいのですが 自動的にやる方法ご存知でしょうか? Sub Number() Worksheets("sheet1").Activate a = Worksheets("Sheet1").Cells(3, 3).Value For n = 1 To a Worksheets("sheet1").Cells(n + 5, 1).Value = n Next End Sub 上記のコードを書き込んだのですが、マクロ上で実行ボタンを押さないと sheetに表示されません。 初歩的で大変すみません。よろしくお願いします。
460 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:52:12.75 ] 何がしたいのかわからん 日本語の初歩からやり直せ
461 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:40:40.99 ] >>459 多分動いてるんじゃね? マクロ実行押さないと何も動かない。 event で動かしたいならsheetモジュールの予約されたプロシジャに書けば?
462 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:43:15.26 ] >>451 これ分かる方いませんか?
463 名前:デフォルトの名無しさん [2011/12/28(水) 18:01:44.22 ] 459です。すみません。割愛しすぎました。 cells(3,3)の部分に、たとえば任意で4や5といった数字を入れて エンターキーを押すと自然に作動してほしいということです。 実行ボタンを押さずにということです。ただ単にそこのセルに数字を打ち込んで エンターを押すだけで作動という意味です。 失礼します。
464 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:05:35.49 ] >>463 Worksheet_Changeイベント
465 名前:デフォルトの名無しさん [2011/12/28(水) 18:13:14.55 ] Private Sub Worksheet_Change() Worksheets("sheet1").Activate a = Worksheets("Sheet1").Cells(3, 3).Value For n = 1 To a Worksheets("sheet1").Cells(n + 5, 1).Value = n Next End Sub にいれたのですができませんでした…
466 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:39:28.18 ] Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Cells(3, 3)) Is Nothing Then Exit Sub a = Cells(3, 3).Value Application.EnableEvents = False For n = 1 To a Cells(n + 5, 1).Value = n Next Application.EnableEvents = True End Sub
467 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:26:12.73 ] >>462 そもそも俺のエクセルのユーザフォームにはリストビューなんてないんだが 何をつかってるんだ
468 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:08:27.26 ] Microsoft list view control 6.0です
469 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:11:43.56 ] MsgBox りすとびゅー.SelectedItem.SubItems(2)
470 名前:a mailto:sage [2011/12/28(水) 22:15:38.89 ] >>469 SubIrems(1)かも
471 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:31:10.27 ] 行と列が逆だったか? Private Sub りすとびゅー_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) MsgBox りすとびゅー.ListItems(2).SubItems(ColumnHeader.Index - 1) End Sub
472 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:13:24.34 ] >>471 できました! ありがとうございます
473 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 00:21:59.00 ] UserFormをModelessで二つ以上開いてるときにエラーでたら強制終了するのは仕様?
474 名前:デフォルトの名無しさん [2011/12/29(木) 10:45:54.58 ] あるセルに入力規則でドロップダウンリストの設定がしてあるのですが、 それをボタンを押せば、入力規則の設定を消すマクロを組みたいのですが、 clearではだあめなようで、どうすればいい?
475 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 10:58:02.14 ] >>474 Validation
476 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:43:53.83 ] トリミングするために CropTopなどに値を整数を入れるのですが Debug.Print CropTop を実行すると 値が変更されてしまいます。 例 CropTop = 80 Debug.Print CropTop = 79.998 この現象を回避したいのですが どうしたらよいでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:14:23.53 ] >>476 何か問題でも?
478 名前:デフォルトの名無しさん [2011/12/29(木) 12:21:59.85 ] もそっとくわしくおねがいしまふ
479 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:28:39.81 ] .Delete
480 名前:デフォルトの名無しさん [2011/12/29(木) 12:32:12.17 ] >>47 さんへでふ。 もそっとくわしくおねがいしまふ
481 名前:デフォルトの名無しさん [2011/12/29(木) 12:32:46.14 ] >>475 さんへです
482 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:40:41.34 ] >>481 .Delete
483 名前:デフォルトの名無しさん [2011/12/29(木) 14:30:45.27 ] >>466 本当にすみません。マクロを作るときは マクロを選択して、名前を作って作成というボタンを押すんですよね? それに466さんが張り付けてくれましたコードをそのまま入れましたら できませんでした。。。 すみません。よろしくお願いします。
484 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:49:57.18 ] >>483 1.シートの見出しタブを右クリックしコードの表示を選択 2.466のコードをコピペ 3.とりあえず動作確認 4.イベントマクロで検索 5.コードの意味を理解 6.そのままじゃ使い勝手悪いと思うので修正
485 名前:デフォルトの名無しさん [2011/12/29(木) 16:48:54.26 ] Private Sub CommandButton1_Click() Dim a, b, c As Single c = 0 For b = 1 To 5 For a = 1 To 5 c = c + 3 Sheet.Cells(a, b).Value = c Next Next d = 1 For b = 1 To 5 For a = 1 To 5 d = d + 1 Sheet.Cells(a + 10, b + 10).Value = d Next Next End Sub 非常に簡単なんですが、シートに書き込むことができません。どうすれば 書き込めますか? フォームを作って、クリックボタンを一つ作っています。
486 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:30:08.52 ] >>485 僕も、シートに書き込むことができません。 どうすれば書き込めますか? Private Sub CommandButton1_Click() Dim a As Integer, b As Integer, c As Integer c = 0 a = 1 b = 1 Sheets("Sheet1").Cell(a, b).Value = c End Sub
487 名前:デフォルトの名無しさん [2011/12/29(木) 18:43:31.84 ] ありがとうございます。 Private Sub CommandButton1_Click() Dim a, b, c, d As Single c = 0 d = 1 For b = 1 To 5 For a = 1 To 5 c = c + 3 Sheets("Sheet1").Cell(a, b).Value = c d = d + 1 Sheets("Sheet1").Cell(a + 10, b + 10).Value = d Next Next End Sub 上記のとおりにやりましたが、それでも、 Sheets("Sheet1").Cell(a, b).Value = c の部分にエラーが出てしまいます;
488 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:24:38.06 ] >>483 標準モジュールに作ってない? WorkSheetの関数として実装するんだよ?
489 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:25:13.73 ] >>487 いや、だから僕も書き込めないんだって… × Sheet.Cells(a, b).Value = c × Sheets("Sheet1").Cell(a, b).Value = c でも↓はOKなのはなぜ? Private Sub CommandButton1_Click() Dim c As Integer c = 0 Sheets("Sheet1").Cells(1, 1).Value = c End Sub
490 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:13:23.66 ] エラーメッセージを読むことを覚えよう
491 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:19:06.38 ] Cell(a, b).Value = c Cell じゃなくて Cells だろ?
492 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:25:51.15 ] エラーメッセージなんて読んでも意味わかんねーし つべこべ言わずに答えを教えろやカス お前らそれくらいしか取り柄がないんだろ?
493 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:40:38.71 ] >>492 はにせものです
494 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:44:04.22 ] (でも本音です)
495 名前:デフォルトの名無しさん [2011/12/29(木) 21:04:15.31 ] 行列の掛け算同士って for構文を使うのだと思いますがどうすればよいのでしょうか? 試行錯誤するのですが非常に複雑です。。。
496 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:06:45.45 ] >>492 > エラーメッセージなんて読んでも意味わかんねーし エラー箇所でF1押してヘルプを読むのは役に立つと思うけどな
497 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:14:23.88 ] >>495 何をやりたいのかわからんが Worksheetfunction.MMult じゃ駄目なのか
498 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:15:20.75 ] Dim i As Long, j As Long Dim V(1 To 2, 1 To 2), VV(1 To 2, 1 To 2) Dim VVV For i = 1 To 2 For j = 1 To 2 V(i, j) = i VV(i, j) = j Next j Next i VVV = WorksheetFunction.MMult(V, VV) Debug.Print WorksheetFunction.Index(VVV, 1, 2)
499 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:16:42.15 ] >>495 4行4列くらいまでならべた書きの方が速い
500 名前:デフォルトの名無しさん [2011/12/30(金) 06:45:51.03 ] >>499 4行4列ではなく、要素によって変わってくるため、 恐らく20行前後になってくると思います。。。
501 名前:デフォルトの名無しさん [2011/12/30(金) 08:01:37.33 ] >>498 すみません。ありがとうございます。 worksheetfunctionではなく、他の方法でできますか? Function MProd(X() As Double, Y() As Double) As Double() '行列の積を計算する関数 '2009/07/10 山田宏 Dim m1 As Integer, n1 As Integer, n2 As Integer Dim i As Integer, j As Integer, h As Integer Dim tmp As Double, Z() As Double m1 = UBound(X, 1): n1 = UBound(X, 2): n2 = UBound(Y, 2) ReDim Z(1 To m1, 1 To n2) For i = 1 To m1 For j = 1 To n2 tmp = 0 For h = 1 To n1 tmp = tmp + X(i, h) * Y(h, j) Next h Z(i, j) = tmp Next j Next i MProd = Z End Function 調べたらこれが出てきましたがまったくわかりません。。。
502 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:39:20.75 ] >>501 worksheetfunctionで結果がでるならそれでいいじゃない なんか問題あるの? もしも 万が一 宿題なら自分でやろうぜ あと >>2 ★5 な
503 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:42:37.47 ] 行列の積の計算手順と、最低限度のプログラミングが理解できていれば、 悩むことではないと思うのだが。
504 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:57:12.87 ] >>503 ttp://blogs.itmedia.co.jp/magic/2011/12/6886-2d5b.html
505 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:39:02.37 ] >>501 わからないならエクセルにまかせりゃいいじゃん ↓ならわかるだろ Function MProd2(X() , Y() ) Dim Z Z = WorksheetFunction.MMult(X, Y) MProd2 = Z End Function
506 名前:デフォルトの名無しさん [2011/12/30(金) 09:41:47.52 ] すべてのシートに同じ処理をするマクロで For Eachの入れ子で組んだら上手くいきません For Each sh In Worksheets Columns("AA:AR").Select For Each c In Selection Case "1" c.Interior.ColorIndex = 7 Select Case c.Value End Select Next c Next sh
507 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:46:42.32 ] それはたいへんですね。ごしゅーしょーさまです。
508 名前:デフォルトの名無しさん [2011/12/30(金) 09:49:00.68 ] >>504 そのリンク先が>>503 と何の関係が有るのかは分からないけど、 今の教育現場が酷いことになってるのは分かった。
509 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:55:32.45 ] >>506 構文でたらめじゃねーか でも並べかえれば動きそうな気がするし さて、おちょくられているのかな
510 名前:デフォルトの名無しさん [2011/12/30(金) 10:03:24.56 ] >>506 sh.activate追加で
511 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:20:57.78 ] >>504 単位を省略しなければどちらも正解 ○ 6本/人 × 8人=48本 ○ 8人 × 6本/人=48本 ? 6本 × 8人=48? ? 8人 × 6本=48?
512 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:30:47.97 ] きっとその先生はCPU のbit数を意識して、演算結果が飽和しないように式を組む癖を叩き込みたいんだと思いますん。
513 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:50:54.62 ] ふつーCPUの演算では飽和しません
514 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:05:36.54 ] セル番地を指定するのにrangeとcellsが混在しているとみっともないでしょうか
515 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:26:10.43 ] ユーザーフォームにラベルとテキストボックスを配置しました。 フォントは同じでサイズも同じですが 高さがズレて表示されます。 見た目の高さを揃えるにはどうしたらよいですか。 よろしくお願い申し上げます。
516 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:31:12.49 ] >>514 そもそもcellsはrangeを返すプロパティ これを踏まえてどう思うか
517 名前:デフォルトの名無しさん [2011/12/30(金) 11:39:08.66 ] >>516 偉大な>>514 様は、例えば左上のセルを Cells(1,1)と書くのとRange("A1")と書くことの違いが分かっておられないと思う。 その説明じゃなんのことは分かりやすく伝えてないから、説明になってないと思うぞ。 もう少し分かりやすく説明して差し上げたら?
518 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:39:41.44 ] >>509 この構文のどのへんがだめなんでしょうか よろしかったら教えてください
519 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:51:51.00 ] >>518 条件付き書式でいいんと思うんだがCase "1"とSelect Case c.Valueが逆だろ? Case "1"よりはCase 1だと思うが
520 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:53:14.65 ] それにたった一つの分岐ならSelect Case使うまでもねーな。 Ifで充分。
521 名前:デフォルトの名無しさん [2011/12/30(金) 11:58:18.99 ] >>519 逆と言われて、こうしたりして Select Case c.Value c.Interior.ColorIndex = 7 Case "1" End Select
522 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:02:35.62 ] そうだな。 まぁ色々と並べ替えてやってみんしゃい。 それにしてもAA:ARのすべてのセルを調べるのもなんだかねぇ。 せめてUsdRangeとの共有セルにした方がいいと思うね。
523 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:52:16.18 ] もしかして、Excel2007以降だと104万行全部調べる羽目になるの?
524 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:30:32.28 ] 104万8576行*18列*シート数だね おわりゃしねえ
525 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:30:07.14 ] 3シートでやってみた。たしかにそうだ (^-^*)
526 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:09:50.25 ] 急いでます。 =PRODUCT(A1:B1) =PRODUCT(A2:B2) と同様に一気に計算する方法ってどうやるんですか?
527 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:22:07.30 ] >>526 とりあえず落ち着きんっさい
528 名前:デフォルトの名無しさん [2011/12/30(金) 22:26:13.26 ] Excelだと、スロットゲームとか作れそうだけど、 どこかにサンプルないかな? お勉強にしたい。
529 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:44:33.57 ] ● 2005年5月23日号 file NO.004 イカサマ・スロットマシンを作れ pc.nikkeibp.co.jp/npc/download/excel_taskforce.html
530 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:47:37.64 ] テーブルからの検索でなるべく早い方法ってなんでしょうか。データ量によりいろいろ方法あると思いますが。 特に列二つか三つに一致するデータを検索する使い方が多いのでvlookupは普段使ってません。 とりあえず上から順に検索 for i = 2 to .cells(rows.count,1).end(xlup).row if .cells(i,1).value = ID then if .cells(i,2).value = Name then 処理 exit for end if end if next 上のやり方が遅すぎるので配列に代入してから。上のやり方より遥かに早くなったので 現状この方法を多用。 Dim Rng as variant rng = .UsedRange for i = 2 to Ubound(Rng) if Rng(i,1) = ID then if Rng(i,2) = Name then 処理 exit for end if end if next もっと早い方法あれば何かキーワードだけでもヒントお願いします。 上の方法だと5000〜1万件になるとちょっと実用できなさそうなので。 findやVlookupは知ってますが2列で一致するような使い方が出来なくて。
531 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:18:26.87 ] Accessとか使った方がいいんじゃない
532 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:19:05.88 ] 検索した上で何がしたいのかによる
533 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:28:11.74 ] >>530 検索キーの構造が単純なら、キーを結合した上でVLOOKUPするとか。 この場合だと、IDとNameをそれらで絶対に使われない文字を挟んで繋いでやれば 単一キーとして利用できる。
534 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:00:19.43 ] WinXP Excel2000で作っていたときは問題なく動作をしていたのですが Win7 Excel2010で実行すると エラー番号1004'Range'メソッドは失敗しました'_Global'オブジェクト とでました 問題の箇所は UserForm2.Show vbModeless ここです コード自体は間違っていないと思うのですが環境の変化によって何が変わりエラーがでたのでしょうか
535 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:08:41.33 ] どっかでみたコピペだな
536 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:54:14.77 ] コピペじゃなくて真剣に悩んでます
537 名前:530 mailto:sage [2011/12/31(土) 02:16:34.54 ] ありがとう >>533 ワークシート関数で作業列で結合してそれでVLOOKUP使ってるのを見た事 ありますがそういう事ですね。 >>532 この質問では何がという特定の目的はありませんでした。ほかの検索方法 があれば知りたいなと思って。 >>531 アクセスっぽい事をエクセルでやりたいのです。どの会社行ってもエクセル は必ずあるけどアクセスはあんまり見ないですし。
538 名前:デフォルトの名無しさん [2011/12/31(土) 02:50:44.07 ] ただ検索して知りたいだけなら、VBA使わずに手動でオートフィルタだが。 VBAでオートフィルタって手もあるけど。だからどういうことをやりたいのか聞いた。
539 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 03:33:04.00 ] エクセル97のおんぽろ会社PCで400行×20列くらいのデータ抽出を 数式のコピペだけでやって10秒ほど?で出来てるけどそれより早いなら解からん
540 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:24:49.34 ] >>537 AccessなしでもAccessデータベースを扱うことは可能 他にもタダで使えるデータベースはあるから使い途によっては選択肢に入れてもいいかもね でもいろいろ敷居が高いかな
541 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 10:23:56.08 ] >>540 ようするに会社のパソコンで必ず使える物ならいいのでエクセルで無理やり頑張るより無料のデータベース 勉強する方が良いかもしれないですね。
542 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:04:55.91 ] 現状の配列方式で5000〜1万件ってそんな時間かかるものなん 条件合致したら、ループ抜けるんだよね?処理は1回だけ
543 名前:デフォルトの名無しさん [2011/12/31(土) 11:57:37.43 ] エクセルの表に対してADO&SQLつかえば?
544 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:58:53.89 ] 遅いよ
545 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 12:00:28.32 ] >>544 うん、わかった
546 名前:530 mailto:sage [2011/12/31(土) 13:48:33.96 ] >>542 ダミーデータ1万行まで入れて一番下に入れた文字を検索してみたら0.015秒でした。 十分早いですね。 検索回数増えないようにロジック考えればこの方法で十分なんですね。 オートフィルタとか使わずに検索を一度に何十回とか繰り返してたのでそもそもそのへん を考え直すべきなんですね。
547 名前:デフォルトの名無しさん [2011/12/31(土) 20:54:03.70 ] 下記はどう使い分けるのが適切でしょうか? vbCR vbLF vbCRLF vbNEWLINE
548 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:58:56.52 ] vb.netで質問です trackbar1のvalueからpicturebox1のbackcolorのレッドの濃淡を出したいのですが trackbar1のvalueはinteger(0−255)にしています。 Public Sub TrackBar1_Scrollするとtrackbar1.valueから0の場合picturebox1のバックカラーは一番薄い色に(白か初期の灰色に) 逆に255ならばtrackbar1のバックカラーはどす黒いredにしたいのですが… まず濃淡を出すこと自体可能なのでしょうか。。。 スレ違いと言うことは重々承知しております。vb.netスレが検索してもないもので。。。 お願いします。
549 名前:デフォルトの名無しさん [2011/12/31(土) 22:05:09.51 ] toro.2ch.net/test/read.cgi/tech/1325083428/
550 名前:デフォルトの名無しさん [2012/01/01(日) 02:14:28.71 ] 選択範囲を全て罫線を引くのは下記で出来ますが Selection.Borders.LineStyle = True 例えば 一番上と下のラインを以外の横の罫線を点線にしたい場合って どうすればいいのでしょうか? 一応マクロの記録でやると何十行もの内容が出てる来たので それは避けたいのですが
551 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:19:29.13 ] 全部書いてから横罫線だけ上書きするとか Selection.Borders.LineStyle = xlContinuous Selection.Borders(xlInsideHorizontal).LineStyle = xlDash
552 名前:デフォルトの名無しさん [2012/01/02(月) 09:58:08.79 ] あけましておめでとうございます。 行列のことで質問したものです。 再度整理して、再質問します。 octave系のプログラミングソフトでは、行列表示は a=[2 2;5 5] などで表せます。 逆行列は、inv(a), また、転置行列は、a'で表せます。 Excelでは、 1.a=0 とまず、空の成分を置いて、 b=0 for i=1 to 10 for k=1 to 10 b=b+1 a(i,k)=a(i,k)+b next i next k のように置くことは可能でしょうか? つまり、例えばですが、 a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には 対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。 よろしくお願いします。
553 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:23:58.46 ] 馬鹿には無理
554 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:27:47.75 ] 試せばわかる for i=1 to 2 for k=1 to 2 debug.print a(i, k) next k next i
555 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:35:11.16 ] >>552 整理してそれかい 小学校からやり直せ
556 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:40:20.99 ] 2行2列で足し算 掛け算でなかったっけ? For i = 1 To 2 For k = 1 To 2 a(i, k) = 1 b(i, k) = 2 c(i, k) = a(i, k) + b(i, k) Next k Next i
557 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:43:00.70 ] iとkなのが気持ち悪いんだが
558 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 14:35:23.95 ] >>552 新しく質問する前に前回の質問にケリ付けとこうよ。 >>502 が聞いてたWorksheetFunctionを避けたい理由とか、 >>501 で紹介していたFunctionの何が童話からないのかとか、 一切説明ないじゃん。 自分が分かればそれで良いってのは虫が良すぎるんじゃないの?
559 名前:デフォルトの名無しさん [2012/01/02(月) 15:05:35.05 ] >>558 大変申し訳ございません。 worksheetfunctionを避けたい理由としましては、excelではなく visual studio(ほとんど同じコードだと思います)でも使いたいので、 応用させたいと思っています。 また、501に関しては、Z() と最初においていますが、 これにより、 z(1,1)=5 , z(1,3)=4 , z(2,1)=3と打つと、 例えばですが、z(1,3)に入っている数字は4ということなんでしょうか?
560 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 15:42:01.97 ] >>559 そういうこと >>501 は、行列の要素を1個ずつ計算しZ(i, j)に格納している
561 名前:558 mailto:sage [2012/01/02(月) 15:51:07.30 ] >>501 のは2つの引数X(),Y()で与えられた2次元配列について行列積を求め、MProd()で返す関数 まず、m1,n1,n2,は行列の大きさを格納するための変数 m1 = Xの行数,n1 = Xの列数 = Yの行数(もし違ってたら行列積の計算ができない),n2 = Yの列数 i,j,h,はFor next のためのカウンターの変数 tmpは各要素の計算結果を一時的に格納する変数 Z()は最終的な計算結果を格納する配列変数 UBound(X,1)はX(a,b)のaの個数の上限を求めるもので UBound(X,2)はX(a,b)のbの個数の上限を求めるもの UBound(Y,2)も同様にY(a,b)のbの上限になる 行列の大きさが分かったので 結果を入れるZ()をRedimでm1行、n2列に再定義して m1,n2,n1,の順にネストしてループをまわす。 一番内側のhのループ内でX()i行目の各列とY()j列目の各行との要素の積を一個ずつtmpに合算していくと、 Z(i,j)の要素が求まるのでZ()に代入 これをその外側の2つのループでi,jを変えながら繰り返すとZ()の全要素について求まる。 最終的にZ()をMProd()に代入して処理完了
562 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:15:52.66 ] >>2 ★2 ★3 ★4
563 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:21:30.23 ] >>552 > a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には > 対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。 どうしてそうなると考えたのか?
564 名前:デフォルトの名無しさん [2012/01/02(月) 16:35:00.75 ] >>563 確かに行列積の計算方法そのものはわかってるとすると>>552 が理解できれば>>501 も理解できるのかもね。
565 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 17:49:32.42 ] VBA以外触ったこと無いから分からないのですがクラスとはどういう時に使うものですか?
566 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:50:19.08 ] 中二病の発作を起こした時に作ってみるもの。 クラスにするまでも無かったと我に返ってコードを投げ捨てることも多い。
567 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:28:21.82 ] XMLHttpRequestを使ってページの差分取得をしようと思ったのですが Set XMLhttp = CreateObject("MSXML2.XMLHTTP") XMLhttp.Open "GET", URL, Flase XMLhttp.SetRequestHeader "If-Modified-Since", LastTime 'LastTimeにLast-Modified格納している XMLhttp.SetRequestHeader "Accept-Language", "ja" XMLhttp.SetRequestHeader "Accept-Encoding", "gzip" XMLhttp.SetRequestHeader "Connection", "close" http.Send これでResponseBodyを見たところ全てのデータが含まれていました 上記のコードは正しくヘッダーがセットされていますか?
568 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:29:07.19 ] 最終行のhttp.SendはXMLhttp.Sendの間違いです
569 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:53:32.95 ] もはやExcelと何の関係もないな…
570 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:11:48.40 ] >>567 スレチ If-Modified-Sinceは差分取得するもんじゃない 指定したLastTime以降更新されてなければ "304 Not Modified"が返る と言う事で ここでは これ以上聞いてもスルーする
571 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:38:19.33 ] >>567 の件はぜんぜん分からないからスレチでなくとも俺は答えられないけど、 ちょっと便乗で質問。 ExcelのVBAでWebブラウザ制御するのって自動巡回扱いになるの? この前仕事で某官庁のHPから統計データを引っ張るためにマクロ組んだら 上司にそれは自動巡回だからやっちゃだめって怒られた (某官庁のHPには自動巡回ソフトの使用はご遠慮くださいって書いてあった) IEをCreateObjectしてURLを自動的に生成(対象データの年度の部分を動的に変えるだけ) して 表示されたらExecWBでSelectAll、Copy、して クリップボードから.PasteSpecial でワークシートに貼り付けただけなんだけど、 そういうのも自動巡回ソフトに当たるんだろうか? こんなの手作業をマクロに書き換えただけじゃんねぇ?
572 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:48:30.88 ] 手動じゃないなら自動でしょ
573 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:53:04.69 ] >>572 いや、そういう意味じゃなくて自動巡回ソフトってサーバーに負担かけるからだめなんでしょ? 手作業でできることをマクロ化したところでサーバーにかかる負担なんて変わらないよねってこと (一応、念のために適当にウェイトかまして速くならないようにはしてた。)
574 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:07:27.85 ] わからんでもないが、それは配慮。 遠慮してくれってんだから、だめでしょ、やっぱり。
575 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:19:46.08 ] 手作業をマクロ化って自動化そのものじゃんねぇ?
576 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:26:20.81 ] ねぇねぇ、思いつきだけど言って良い? 自動ポルノ。
577 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:35:58.88 ] >>573 そう思うのならその某官庁とやらに説明して許可もらえばいいじゃん そうでもしないと上司を納得させられないんじゃないの? こんな所でグダグダ言ってても意味ないよ スレ違いどころの話じゃないし
578 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:45:23.60 ] うーん、結局釈然としないのは、 自動巡回ってもっと高度なことやってるもんなんじゃないか っていう疑問が残るからなんだよね。 グーグルとかヤフーのクローラって(Robot.txtで排除できるらしいけど) もっと直接HTMLのソースとか解析して根こそぎ情報取得するんでしょ? そういうのがここでいう「自動巡回」なんじゃないかっていう気がしてるんですよ。 こちとらそんな高度なことできないから 普通にブラウザ開いて表示したページをコピペしてただけですから。 まぁ、上司に禁止されたからもうそのマクロは使えないんですけど、 もう少し上記の件に関する技術的なことを教えてもらえたら って思って質問したんです。 (そういう方向の話になるとスレチっぽいんで答えてもらえないかもしれないけど)
579 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:54:59.88 ] スレチっぽいって? >>2 読んでね
580 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:51:45.08 ] >>578 LibraHackの件みたいな事もあるからね
581 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:00:52.70 ] Static変数ってStatic変数を使う全てのプロシージャで宣言する必要ある?
582 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:03:58.52 ] 試せよ
583 名前:581 mailto:sage [2012/01/02(月) 23:09:41.91 ] >>582 おまえのVBA力を試してるんだよ。
584 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:11:39.79 ] VBA力とか言ってる時点で自分が格下なのに気付けよ
585 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:14:46.33 ] >>584 だからおまえはみんなに嫌われるんだよ
586 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:16:18.47 ] 関係ない話で誤魔化さないでください わかりもしない、答える気もない屑が掲示板を荒らすのは本当に不愉快です
587 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:38:34.73 ] Publicを使わないでユーザーモジュール標準モジュールからアクセスでき モジュールが終了しても記憶しておく変数を宣言することは可能ですか? セルを使用する以外でお願いします
588 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:44:08.08 ] public使えよ
589 名前:587 mailto:sage [2012/01/02(月) 23:51:54.46 ] Publicを使わないでと言っておるんだよ
590 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:57:06.02 ] >>560 、561 大変ありがとうございます。理解できました。 しかし、したの例のように試してみると、たとえばz(1,1)の部分に 数字を入れることができなかったです。。。 Sub test() Dim z() As Double z(1, 1) = 1 Cells(1, 2).Value = z(1, 1) End Sub
591 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:58:00.87 ] >>589 どうせ別人だろうけど temp.txtとか作ってそこに値いれとけばいいんじゃね
592 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:59:44.13 ] >>587 Textファイルに書き出せばセルもパブリック変数も使わないで済む こういう頓知解答がNGなら不可能
593 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:59:48.64 ] ホント酷いな
594 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:13:55.85 ] >>590 Z()を宣言しただけじゃZが2次元配列とは限らないから Z(1,1)に値は入れられない。 はじめから Dim Z(1,1) As Double みたいに2次元配列で宣言するか Redim Z(1,1)で配列の再宣言するかしなきゃ駄目 (あとはVariantで宣言する方法なんてのもあるけど割愛する) とにかくこういうのは基本的な事なんで、 ここで聞く前にまず自分で調べるべき話。
595 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:19:40.84 ] 自分で調べるようになって欲しいと思ってるならそこまで甘やかすなよ
596 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 01:37:06.79 ] >>587 Static変数をプロシジャの引数として参照渡しする。 変数クラスを定義してそのインスタンスを参照渡しする。 矢切の渡し。
597 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 01:38:59.07 ] あ。。( ̄▽ ̄;)。 まちごた。 忘れてくれ。
598 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 02:54:00.11 ] だからクラスってなんだよ
599 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 10:12:58.79 ] >>598 >>566 簡単に言うと、必要なければ使ってはいけないものだ。
600 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:04:24.57 ] >>590 www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_array.html
601 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:34:21.90 ] >>587 セルに保存とかわらんが、BuiltinDocumentPropertiesとかUserFormのTagはときどき利用する。
602 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:04:34.56 ] フォームモジュールにはあまり処理を書かない方がいいですか? 引用しようと思っても呼び出せないので
603 名前:デフォルトの名無しさん mailto:NG 試せ [2012/01/03(火) 14:17:23.88 ] 他モジュールのSubを呼び出すのに、 Call Module2.TestProcess のようにモジュール名をつけないとダメですか?
604 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:24:11.79 ] みなさんのVBA力はその程度ですか?
605 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:25:29.47 ] 見ず知らずの人に無償で提供できる範囲はこの程度
606 名前:デフォルトの名無しさん [2012/01/03(火) 14:42:14.27 ] >>604 おまえのレス力は最低レベルだ。「レス力検定」でレス力を磨きなさい。
607 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 15:41:39.69 ] わかりもしない、答える気もない屑は黙っていてください
608 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:01:25.32 ] ここは、質問するのが自由なら 答えるのも自由だし、横やり入れるのも自由、そういう場ですよ そういう場に自ら来ておいて、「回答以外はするな」はお門違い ボウヤ、何勘違いしちゃってるの?ってな感じだ 横やりが嫌なら横やり禁止のとこ行け
609 名前:デフォルトの名無しさん [2012/01/03(火) 16:06:39.58 ] ここは、横やり入れるのも自由なら 縦やり入れるのも自由だし、「回答以外はするな」も自由、そういう場ですよ そういう場に自ら来ておいて、>>608 の書き込みはお門違い
610 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:31:29.29 ] オマエモナー
611 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:55:54.97 ] 悔し紛れにオウム返しするも、的を射て無くて完全に負け犬の遠吠え状態w
612 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:57:00.48 ] 答える能力のない自分を顧みずに上から目線ですか 哀れな屑ですね
613 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:03:53.01 ] 遠吠え谺す
614 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:23:29.76 ] ユウナレスカ検定一級ですがなにか
615 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:29:34.79 ] ねえマジで この程度の質問にも答えられないの? 大した事ないっていうか…お前ら… 好きなエクセルでもこんなレベルって きっと他の分野じゃ本当に無能なんだろうな
616 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:46:20.35 ] >>615 あんた質問書いてないじゃん 書いてない質問にどう答えろと?
617 名前:デフォルトの名無しさん [2012/01/03(火) 20:12:26.74 ] Sub sample() Dim a, i As Double a = Cells(2, 3).Value For i = 1 To a Cells(i, 1).Value = i Nexti End Sub 上記のように、マクロを使用せずに、シート1のセル(2,3)の部分に数字を 入れれば、自動的に、(1,1),(2,1),(3,1)の部分に1,2,3といったように 表示させたく上のコードを作りました。 しかし、なぜかエラーとして subあるいはfunctionが定義されていません。 と出ました。 どうすればよいのでしょうか? またfunction関数を作る場合は、module以外のシートに作る必要があるのでしょうか? 何卒よろしくお願いします。
618 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:23:11.61 ] ×Nexti ○Next i
619 名前:デフォルトの名無しさん [2012/01/03(火) 20:29:03.06 ] 早急なご返事大変ありがとうございます。 できました。 しかし、これは再生ボタンを押さないと表示されないです… 自動的に数字が変わる方法はご存じでしょうか? よろしくお願いします。
620 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:36:32.52 ] セルが変更された場合のイベントを補足して処理する Worksheet_Change とかで検索
621 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:57:23.13 ] できました。本当にありがとうございました。失礼します。
622 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:51:20.18 ] >>617 これはOption Explicitを指定しないせいで Nextiが変数として処理されたために起きたトラブルだから、 モジュールの先頭にOption Explicit を書いておけば Nextiと書いた部分がエラーになってその時点でトラブルが防げた。 OptionExplicitを書く癖をつけといたほうが良いと思う。 あと、変数iをDouble型で宣言している意味が分からない。 整数しか入れないならLongやIntegerで宣言しとけば良いと思うし、 さらにいうと変数aはVariantで宣言してるんだから それならiもVariantで良いんじゃないかとも思う。 もしかして宣言の仕方自体が分かってないのかもしれないから補足しておくと、 Dim a,i As Double と書くと、a は Variant型、i は Double型で宣言される。 両方ともDouble型で宣言するなら Dim a As Double,i As Double と書かなきゃ駄目だし、そんなこと書くぐらいなら Dim a,i で両方ともVariant型にしちゃっても良かったと思う。
623 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:59:05.03 ] ハリキッテルネ!
624 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:00:21.24 ] オマエモネ!
625 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:11:50.50 ] ソクレス・・・スレカンシゴクロウサマデス!
626 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:14:06.89 ] いや、たまたま新着レスがあったから 適当に書き込んだだけなんだけどw
627 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:54:22.81 ] >>622 詳しいアドバイスありがとうございます。 ところで、さらに質問が出てきました。まったくべつのものですが、、、 Sub test1() Dim x(100, 100) As Integer a = 0 For i = 1 To 20 For n = 1 To 20 a = a + 2 Cells(i + 4, n + 4).Value = a Next n Next i a = UBound(x, 1) Cells(2, 2).Value = a End Sub ためしに、UBound(x,1)が100なのか、それとも数字が入っている20行までなのか 試してみたのですが、結局上記の場合、UBound(x,1)=100でした。。。 数字が入っているところまで20とすることは可能なのでしょうか?
628 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:06:28.37 ] その例では、20はリテラル値なんだから a = UBound(x, 1) を a = 20 にすれば良いだけじゃん 20の部分が変数になったとしても、同じく a = 変数 で事足りる 固定のリテラル値にしろ変数にしろ、前段階の処理でどこまで数字を 入れたかが解ってるんだから、配列から取得する必要など何も無い
629 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:36:02.44 ] >>616 そこに気づいたか だがもう一歩だ
630 名前:622 mailto:sage [2012/01/03(火) 23:43:36.86 ] >>627 >ためしに、UBound(x,1)が100なのか、それとも数字が入っている20行までなのか >試してみたのですが、結局上記の場合、UBound(x,1)=100でした。。。 > >数字が入っているところまで20とすることは可能なのでしょうか? 申し訳ないんだけど質問の意図がまったく分からない。 UBound(X,1)はXという配列変数の1次元目の上限を求めているわけで 変数の宣言時にX(100,100)と宣言してるのだから (その後Redimで大きさを変更したりしない限り) その時点で100になるのは当然のこと。 そして、ForNextのネストの中でCellに値を代入しているけど そこでもX()はまったく出てきてないんだから UBound(X,1)が100から変化すると貴方が考えた理由が分からない。 んで、 >数字が入っているところまで20とすることは可能なのでしょうか? というのも何の事だかさっぱり意味が分からない。 できたらもう一度、意味が通じるように質問しなおしてほしい。
631 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:46:56.36 ] ありがとうございます。 今、行列の計算のプログラムを作っています。 www.fastpic.jp/images/023/1362403442.bmp しかしながら、上記のように正しい計算結果を得ることができません。 コードは以下のようになっています。大変わかりにくくてすみません。 Sub 行列掛け算() Dim z(100, 100) As Double Dim x(100, 100) As Double Dim y(100, 100) As Double Dim s As Double 'aの行列 For i = 16 To 19 For j = 4 To 6 'xの要素に、入れていく(1から) For n = 1 To 4 For nn = 1 To 3 x(n, nn) = Cells(i, j).Value Next nn Next n Next j Next i
632 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:47:48.94 ] 'bの行列 For i1 = 16 To 18 For j1 = 8 To 12 'yの要素に、入れていく(1から) For n1 = 1 To 3 For nn1 = 1 To 5 y(n1, nn1) = Cells(i1, j1).Value Next nn1 Next n1 Next j1 Next i1 '逆行列の計算 For i2 = 1 To 4 For j2 = 1 To 5 s = 0 For k2 = 1 To 3 s = s + x(i2, k2) * y(k2, j2) Next k2 z(i2, j2) = s Cells(i2 + 21, j2 + 4).Value = z(i2, j2) Next j2 Next i2 End Sub 書き込めなかったので2つに分けて書き込みます。 何卒よろしくお願いします。
633 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:52:11.31 ] >>630 すみません。もう一度理由を述べます。 なぜxboundで100ではなく20がほしかったのかというと、 自分が今から作ろうとするFEM法を使った方法でやると、 行列の数が40行くらいになってしまう可能性があるからです。 しかもその行列の数は、節点数によって変わってくるため(この辺は専門的ですみません;) 行列の数が予測できないため、最初にx(100,100)と置きました。 さすがに、100行列まではいかないだろうということで、です。 今回は試しに、20行列を作ってみたので、ひょっとすれば xboundで20が出るのかな(つまり数字が入っているところまで) と思いましたが駄目でした。
634 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:07:00.57 ] 当たり前だろ
635 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:08:52.43 ] >>633 それは無理。 行列の数がわからないのであればRedimすればいい。
636 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:16:13.38 ] >>633 あなたは>>501 か
637 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:18:21.02 ] >>633 x(n, nn) に期待通り取り込まれているのは確認できているか
638 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:19:00.82 ] もはや"xbound"とか勝手な事書いてるけど、 "UBound"ってのはあくまでも配列の上限を返す関数であって その配列の中でどこまで実際に値が入ってるかを調べるものじゃないから そういう使い方は出来ない。 っつーか貴方、ここ最近行列云々で質問続けてる人だったのね? VBAのこと事前に学習してないでしょ? 試行錯誤は決して悪いことじゃないけど、 中途半端な知識でプログラミングして失敗するよりも 一度きちんと学習してからプログラミングしたほうが良いと思うよ。 どっち道失敗はするだろうけど、今みたいなどうでも良い間違いは減ると思う。 本を買うなりWeb上の解説サイトを読むなり、多少基礎知識つけてから出直したほうが ゴールに早くたどり着けるはずだよ。 こっちだってこんなどうでも良いこと質問されるのも正直迷惑だし。
639 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:23:42.80 ] >>637 今確認しました。期待通りではなかったです… なぜか、yはすべての成分が121の3行5列で、 xはすべての成分が20の4行3列でした。
640 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:31:33.33 ] >>639 For〜Nextが理解できていない
641 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:37:38.67 ] すみません。。たしかにfornextの部分頭の中でやっておかしいですね。。。 もう昨日の夜の12時からまったくの不眠不休でほかの研究作業もやりながらなので ぜんぜん思考回路が回っていません。 寝て、もう一度再プログラムしてみます。失礼しました。
642 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:39:14.20 ] もうすこし自分で考えてきてから質問してね ここの人たちだって貴重な時間を割いてアドバイスしてくれてるのよ
643 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 09:05:14.29 ] 答えたくて答えてるだけだろ 思いっきりスレチだから 答えてる方も荒らしだから
644 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:18:47.09 ] Range("A100").Formula = "=countif(A1:A80,""<=2"")" <=2の部分をA90の値にしたいのですがどう書けばいいんでしょうか
645 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:34:11.32 ] "=countif(A1:A80,""" & Range("A90").Value & """)"
646 名前:644 mailto:sage [2012/01/04(水) 10:41:57.67 ] ありがとうございます!
647 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:44:32.37 ] おはようございます。>>642 、643 まことに大変申し訳ございません。。。 最後の質問です。この分野さえ終わることができれば終了です… 以下の行列の逆行列を求めようとしましたができませんでした。。 1 2 2 1 1 5 1 2 1 答えが -9 2 8 4 -1 -3 1 0 -1 ですが、 0 0 0 1 0 0 1 2 0 になってしまいました;
648 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:45:33.63 ] コードは以下です。 Sub 逆行列() Dim x As Double Dim A(100, 100) As Double For i = 1 To 3 For j = 1 To 6 A(i, j) = Cells(i, j).Value 'ちゃんと数字が入っているか確認 Cells(i + 5, j).Value = A(i, j) '確認OK Next j Next i '逆行列計算 For k = 1 To 3 x = A(k, k) For j = k To 6 A(k, j) = A(k, j) / x Next j For i = 1 To 3 If i = k Then x = A(i, k) For j = k To 6 A(i, j) = A(i, j) - x * A(k, j) Next j End If Next i Next k
649 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:47:50.04 ] 'ここでAをセルに代入 For i = 6 To 8 For j = 6 To 8 Cells(i + 10, j + 1).Value = A(i - 5, j - 5) Next j Next i End Sub www.econ.nagoya-cu.ac.jp/~kamiyama/siryou/minv.html このページを参考にしました
650 名前:デフォルトの名無しさん [2012/01/04(水) 12:58:01.29 ] "=countif(A1:A80,""" & Range("A90").Value & """)" これでセルの値を指定することができたのですが <=を入れるとエラーになってしまいます あとRCを使ったやり方で<=をつけるにはどうしたらいいですか?
651 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:30:28.28 ] ここはVBAのスレです VBAでの式入力方法ならまだしも それ以前の式の作り方についてはスレ違い
652 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:26:11.02 ] >>650 " で囲まれた中に " 自体を記述したいときは "" と2つ続けて書く だから、 =countif(A1:A80,"<=2") の前後を"で囲むと "=countif(A1:A80,""<=2"")" になる。 また、""で囲まれた部分は文字列だから、 & で他の文字列や文字列型変数と結合できる つまり、 上記の式の"2"の部分をA90の値に変更したいなら、 "2"以前の部分の文字列と"2"以降の部分の文字列を作って、 Range("A90").Valueを & ではさめばよい。 (>>645 は"<=2"をA90の値に置き換えてる) ちなみに"2"以前の部分は "=countif(A1:A80,""<=" になる。 後ろのほうは>>645 とおなじだから後は自力でやって
653 名前:デフォルトの名無しさん [2012/01/04(水) 14:38:33.01 ] 普通のカッコ ( ) は、たとえば数学の計算式では y=(-b+(b^2-4ac))/2a のようにいくらでもネスト構造がありえるのに なぜダブルクオーテーション " は、内部のは二つ重ねるルールにしたのですか? 欠点は、三重以上に重ねられなくなってしまってないですか? 二つ重ねるルールの利点を挙げてください。
654 名前:653 [2012/01/04(水) 14:39:41.54 ] 疑問の一つに、 =countif(A1:A80,"<=2") の前後を"で囲むと "=countif(A1:A80,""<=2"")" になるなら、 "=countif(A1:A80,""<=2"")" の前後をさらに"で囲むとどうなるの?
655 名前:653 [2012/01/04(水) 14:40:31.63 ] オフィス田中の人は、このダブルクオーテーションのネストについて なにか研究成果を発表はしてないのですか?
656 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:54:58.92 ] 単純すぎて研究するほどのことでもあるまいに 文字列の囲い記号(開始記号と終了記号)が「"」の場合 囲い記号としてではなく文字として「"」を表したくても 途中に"を入れるとそれが「文字 "」なのか「囲い終了記号」なのか判別できない そこで、囲い開始記号以降の「"」は、1つなら「囲い終了記号」、 2つなら「文字 "」として扱うというルールにしただけのこと この単純なルールだけで > 三重以上に重ねられなくなってしまってないですか? なんて欠点も無く、どんなものでも表現できる
657 名前:デフォルトの名無しさん [2012/01/04(水) 14:59:18.98 ] できましたw 自力では無理だったと思うので助かりました "=countif(A1:A80,"">=" & Range("A90").Value & """)"
658 名前:デフォルトの名無しさん [2012/01/04(水) 15:09:23.33 ] redim kmax(100,100,100) as double redim k(100,100) as double for zzz=1 to 5 for z1=1 to 100 for z2=1 to 100 kmax(z1, z2, zzz) = k(z1, z2) next z2 next z1 next zzz とすると、kmaxの(z1,z2)の部分にはちゃんと、kの(z1,z2)は入るのでしょうか?
659 名前:デフォルトの名無しさん [2012/01/04(水) 15:14:55.75 ] >にはちゃんと、kの(z1,z2)は入るのでしょうか? 自分で試せよ w
660 名前:デフォルトの名無しさん [2012/01/04(水) 15:20:51.45 ] >>656 なるほど、あなた超頭いいですね。 こういう"の用法をたとえば本で書くときに >>656 の説明までちゃんと書いてくれてる本の作者こそ 物を書くセンスがあるといえる。 いままで"の由来について書かれたものは見たことがなかった。 >>656 さんは自分でこの考えを発見したの? そうすると、先の 「"=countif(A1:A80,""<=2"")" の前後をさらに"で囲むとどうなるの?」 の回答は、こうなるね。↓ """=countif(A1:A80,""""<=2"""")"""
661 名前:デフォルトの名無しさん [2012/01/04(水) 15:21:30.46 ] ここで皆に宿題だが 「"""=countif(A1:A80,""""<=2"""")"""」をさらに"で書くと、どうなるかね?
662 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 15:30:48.26 ] >>660 俺は VB言語では文字リテラルの囲いは「"〜"」 VB言語では「文字 "」のエスケープシーケンスは「"」 という説明を本で読んで、それをちょっと詳しく解説しただけで このルールを発案した人じゃないから、べつにそう大げさに褒められるほどのものじゃないが
663 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 16:17:05.03 ] 早く 冬休み終わらないかなーー スレチ話しがウザイ
664 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 16:28:28.39 ] ちょっとしたスレチ話にムキになって突っかかっていくような幼稚な奴も 冬休みが終れば消えますかね?
665 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 16:31:25.24 ] 残念、永遠に冬休みでした
666 名前:デフォルトの名無しさん [2012/01/04(水) 16:49:58.19 ] スレチを指摘する人はいるけど 適切なスレに誘導する人はあまりいないね。 そのほうがウザイスレチ話が減って有益だと思うんだけどな。 スレチ話ですまん。
667 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:32:31.98 ] ここ以外でVBAを扱ってるスレはないからね
668 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:48:08.95 ] そうでもないけどね
669 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 18:32:42.17 ] >>647 をお願いします。。。
670 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 19:20:53.96 ] >>669 これが最後ね Sub 逆行列2() Dim A Dim x As Double Dim z Dim i As Long, j As Long, k As Long A = Range("a1").Resize(3, 6) For k = 1 To 3 x = A(k, k) For j = k To 6 A(k, j) = A(k, j) / x Next j For i = 1 To 3 If i <> k Then x = A(i, k) For j = k To 6 A(i, j) = A(i, j) - x * A(k, j) Next j End If Next i Next k Range("a10").Resize(3, 6) = A End Sub
671 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 20:33:36.18 ] >>670 もう来るなよ
672 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:57:59.60 ] >>671 >>669 に言えよ w
673 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:36:33.96 ] 間違ってはいない
674 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:38:23.54 ] そう言えば、前スレで話題になったサンプルコレクションの本、第3版出たのね。 パラパラ見たけど、印刷文字薄くて見にくくなってた。でも、2010での動作可否が載ってるのはいいなと思た。 参考までに…
675 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:07:22.28 ] Dこーてーしょんは、ユーザー自作メニューを汎用コードで作る時に地獄をみるのだ
676 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:22:32.41 ] ボタンとかラベルとか動的に作成するとこはできますか? 出来る場合、動的に作成した物へのアクセスはどうすれば良いですか?
677 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:04:23.48 ] 私の辞書に調べるという文字はない
678 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:19:10.07 ] >>676 VBAは知らんが、普通のOOPなら、できて当然だな ボタンなりラベルなりのオブジェクトを作ってビューに配置 してやればいいだけだもんな アクセスも自分で作ったオブジェクトだからわかるし
679 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:03:31.02 ] >>676 たとえばボタンを作成して制御するなら Dim button1 As Object Set button1 = ActiveSheet.Buttons.Add(200, 200, 100, 25) ' left, top, width, height button1.OnAction = "Macro2" 既存のボタンにアクセスするなら Dim button1 As Object Set button1 = ActiveSheet.Buttons(ボタンのインデックス) たぶん
680 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:03:40.27 ] VBA知らん奴が何しに来たの?ん?質問かい?
681 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:12:11.56 ] VBA(VBも?)の場合、オブジェクト変数に代入する場合、 変数名の前にSetをつけなければならない理由はなんなのでしょうか? そういう言語仕様だからというだけでしょうか? それとも、同じオブジェクト変数に代入する場合でも、Setを伴う場合と 伴わない場合の2ケースあるのでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:49:42.22 ] 引数が9つある関数って他人が見たらどう思う?
683 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:59:14.44 ] それなりの理由があれば問題無いな。 Excelのメソッドも、省略可能とはいえ引数がやたら多いのが結構あるし。
684 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:05:06.22 ] >>681 もともと初期の vb にはオブジェクトの概念がなく、後付けでオブジェクトを導入したとき、 既存仕様を維持してオブジェクトをサポートするために、特別な Set キーワードを導入した とかそんな話だった気がする Dim a Dim b Set a = Range("b2") b = Range("b2") 変数 a には Range オブジェクトが格納される 変数 b には Range オブジェクトのデフォルトプロパティが格納される
685 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:16:11.71 ] >>684 変数にオブジェクトは格納されないよ〜
686 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:16:15.37 ] >>684 なるほど、SetありもSetなしも文法上は許容されるのですね であれば、Setキーワードの意味はありますね この例でいうと、デフォルトプロパティは何を指しているのでしょうか?
687 名前:684 mailto:sage [2012/01/06(金) 01:55:17.69 ] >>685 すみません、オブジェクトの参照ですね >>686 厳密にはかなり面倒で、 Range には _Default という隠しプロパティがあってそれがデフォルトプロパティになるらしい _Default には引数(RowIndex, ColumnIndex)を与えることができて、 引数ありだと Item(引数)の評価結果、引数なしの場合は Value の評価結果を返すらしい まあ、通常は Value と覚えておけばよいかと
688 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:27:20.28 ] Setは参照の代入だが、Setは省略できないぞ Letっていう値を代入する命令があって、これは省略できる(というか書いてる事がほとんどない) 文法的には省略されてるのはLet
689 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:30:27.74 ] >>688 つまり、>>684 の Dim a Dim b Set a = Range("b2") b = Range("b2") のb = 〜の行は、 Let b = Range("b2") と解釈されて、そのとき代入されるのが_Defaultプロパティということ?
690 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:07:22.43 ] >>689 うん
691 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:11:34.65 ] Letなんてキーワード見たの何年ぶりだろ 昔の教科書には必ず書いてあったけど最近の入門書は最初からスルーしてるよな 試してみたらこれはエラーになった Let a = Range("A1")._Default
692 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:21:26.80 ] >>691 Let a = Range("A1").[_Default]
693 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:30:27.21 ] LETとかN-BASICですら使ったことがないなw
694 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:57:24.70 ] やたら丁寧なコードを書くやつがよくLet使ってたな。 長く書くのが趣味だったんだな。
695 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:40:30.41 ] >>681 君>>457 じゃないよね?
696 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:07:54.28 ] 凄くどうでもいいです……
697 名前:681!=467 mailto:sage [2012/01/06(金) 22:35:09.33 ] >>695 ちがいます
698 名前:681!=457 mailto:sage [2012/01/06(金) 22:35:30.94 ] >>697 あミスったw
699 名前:681!=457 mailto:sage [2012/01/06(金) 22:36:55.85 ] >>690 どうもありがとうございました。 了解しましたm(_ _)m
700 名前:デフォルトの名無しさん [2012/01/07(土) 02:53:29.64 ] 質問です。 beebee2see.appspot.com/i/azuYl9K_BQw.jpg このように、選択してある[C]の列だけを別の場所(あらかじめ決めているCという枠)へ移したい場合はどうすればいいのでしょうか? コピーは出来なかったのです。
701 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 07:40:10.04 ] Areasプロパティ
702 名前:デフォルトの名無しさん [2012/01/07(土) 09:12:33.09 ] >>700 質問の仕方が悪いと思うよ Excelで単純に"C"と書いたら、通常はシート左端から3列目の"C列"のことだと思われる。 貴方が貼った画像だと"A列"に"C"と書いてある"2","3","4","9"の"行"が選択されてる。 コピーしたいのは選択範囲の"すべての行"なのか、それとも選択範囲の"C列"なのか、 どっちか分からない。
703 名前:デフォルトの名無しさん [2012/01/07(土) 09:50:23.96 ] >>700 ふつうにA列をフィルタして 抽出されたセルたちを「切り取り」して 他所に「貼り付け」してOKと思ったけど、 うまくできないね。 「切り取り」して「貼り付け」だと、フィルタで隠れた行まで移動してしまう。 「コピー」して「貼り付け」だと、フィルタしたものだけがコピーされるのに。 自分もこんな発見をして勉強になったよ。 力にはなれなかったけど、うまくいく方法が見つかるといいね。
704 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 09:51:31.30 ] >>702 すいませんでした。 2.3.4.9の選択されている行です。
705 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 12:53:42.20 ] 22 名前:名無し募集中。。。[] 投稿日:2012/01/06(金) 23:40:34.39 0 AKB=金正恩 この意味わかるか AKBという捏造ブームの裏に何があるか見えるか?
706 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 12:56:07.04 ] >>700 選択範囲は Application.Selection で取得できるけど、 選択範囲が複数になる場合、Application.Selection.Areas に各選択範囲(Rangeオブジェクト)のコレクションが格納される 面倒だけど、最初に Areas の値を保存しておいて、ループ処理で各 Range 毎に処理するとかになるんじゃないかなあ
707 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 13:16:59.99 ] >>700 とりあえず手動で今の状態からコピーしたいなら複数行の選択じゃなくセル範囲の選択でコピーしたら 貼り付け先には飛ばした行を詰めて貼り付けできるけど。
708 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:02:44.54 ] >>700 関数使いたいなら作業列使えば可能 作業列1 =IF($J$2=A2,COUNTIF($A$2:A2,A2),"") 作業列2 1から連番 作業列3 =MATCH(G2,$E$2:$E$28,0) L列 =IFERROR(INDEX($B$2:$B$28,H2),"") M列 =IFERROR(INDEX($C$2:$C$28,H2),"") ozcircle.net/_uploader/69930900 常にデータが増える表ならVBAの方が楽だけどそうでもないなら関数の方が早い。
709 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:28:48.21 ] >>704 やっぱりよく分からない 複数選択範囲(行単位)の移動(カット&ペースト)が行いたいが、通常では複数選択範囲のカットができない、というだけ話なら 移動先を ActiveSheet.Range("100:100") と仮定した場合、 Application.Selection.Copy(ActiveSheet.Range("100:100")) Application.Selection.Delete() のようにコピー+削除でいけると思うけど、そういう話ではないの?
710 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:08:58.21 ] >>703 .>>706->>709 レスありがとうございます! >>700 の者です! 初心者かつ、語彙力がなく、説明不足ですいません。 わからなかった言葉もぐぐってみます! >>709 さんの回答が一番近いと思うのですが、 私はカットではなく、[A.B.C]とグループ分けをしたうちの[C]だけを別のページをコピーペーストしたいです。 簡単にいうと、複数選択のコピーの方法が知りたいです。 beebee2see.appspot.com/i/azuY3Iu-BQw.jpg この画面でいうと、3.5.6.7.12.15行目をコピーしたいです。 右クリックでコピーを選択すると beebee2see.appspot.com/i/azuYvILBBQw.jpg このような画面が出ます。 一つ一つ貼っていくには膨大な量なので時間が足りません。 皆さんが教えて下さった数式(?)関数(?)を今から試してみようと思います! それらが出来たらまたここに来て見ます。 何度もすいません、もう少しお付き合い下さい… ありがとうございます。
711 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:43:31.57 ] >>710 >>709 の例は複数選択可能で、2行目のDeleteしなければただのコピー 現在のシートの選択行(複数選択あり)をたとえば シート(Sheet3)の10行目にコピーしたいなら Application.Selection.Copy (ActiveWorkbook.Worksheets("Sheet3").Range("10:10")) みたいなマクロだけでいけると思うけど
712 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:57:02.57 ] >>710 > この画面でいうと、3.5.6.7.12.15行目をコピーしたいです。 > 右クリックでコピーを選択すると > beebee2see.appspot.com/i/azuYvILBBQw.jpg > このような画面が出ます。 > たぶん行の選択の仕方が間違っている ちゃんと選択すれば、そんな警告はでないしコピーできる
713 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:03:54.59 ] >>712 ああ、行を選択してコピーしたあと、セルを選択して貼り付けようとするとその警告ですね。 貼り付ける時も行を選択して貼り付けたら警告でないです。 ていうか>>710 は手動で選択してますよね。膨大な量というなら行を選択してる時点ですでに 間違いだとおもう。 オートフィルタ後コピペかABC列を昇順・降順並べ替え後にコピペが普通だとおもう。
714 名前:デフォルトの名無しさん [2012/01/07(土) 19:07:31.79 ] >>710 なんか操作を間違ってないか? 複数の行を選択しているとして 右クリックから「切り取り」ならそのエラーが出るけど、 「コピー」だとエラーでないよ。 まぁ複数範囲の選択をしたときにいつでもコピーできるわけじゃなく、 たとえばA1とC3を選ぶみたいに行も列もばらばらの範囲だとコピーもできない。 Range(A1:C3)とRange(E1:G3)みたいに列が同じで行だけ飛んでる場合なんかはコピーできた。
715 名前:デフォルトの名無しさん [2012/01/07(土) 19:12:24.86 ] >>710 の訂正で >私はカットではなく、[A.B.C]とグループ分けをしたうちの[C]だけを別のページをコピーペーストしたいです。 は、 [C]だけをコピーし 別のページにペーストしたいです。 わかりづらくてすいません。 今からレス返します。ありがとうございました。
716 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:14:22.35 ] >>711 なるほど! そのマクロ(?)をペーストしたいセルに打ち込めば出来るんでしょうか? 今してみたら何も起きませんした…
717 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:15:13.48 ] >>712 選択の仕方が間違えていますか!そうかもしれません。 今は、コントロールキーを長押ししながら選択しています
718 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:18:12.73 ] >>713 ありがとうございました!!!!!コピー&ペーストできました!!!!、 本当にありがとうございました! こんな皆様の高度な知識の中基本も知らない私が頼りに頼ってしまいすいませんでした…… 本当に助かりました! ありがとうございました!!!!!
719 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:19:45.13 ] 複数選択の手動は大変ですがオートフィルの昇順がよくわからないので、今回は手動でいきます。 本当にありがとうございました!
720 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:25:26.20 ] >>719 こっちで質問したほうがよかったね toro.2ch.net/test/read.cgi/bsoft/1319632190/
721 名前:デフォルトの名無しさん [2012/01/07(土) 19:25:40.93 ] >>719 オートフィルじゃなくてオートフィルタだよ A列選択しといて ツールバーのデータ(D) -> フィルタ(F) -> オートフィルタで A列の項目を選択してコピーできるようになる
722 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:28:14.13 ] と思ったたら、もうしてた
723 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 01:33:43.29 ] どうでもいいけどプリントスリーンってがあるよ
724 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 01:44:13.00 ] vbaでパケットキャプチャって出来る?
725 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 07:34:05.68 ] どっかでカーネルドライバが必要になるから、単体だと無理な気が。
726 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 09:50:28.06 ] そうやってカーネルで遊ぶんだよ。 たしか、井上も推奨してたな。 カーネル遊び
727 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:15:54.10 ] 震災前 /::::::::::::::::::::::::::::::;;::ノ ヽ;::\ /::::::::;;;;;;;;;,,,;;...-‐''"~ ヽ:;::l |:::::::::::| 岡田 異音 |ミ| |:::::::/ ,,, ヽ,、 '|ミ| '|:::::::l '''"" ゙゙゙゙` |ミ| |:::::|. ,,r ‐、 ,, - 、 |/ ,/⌒| ノ ・ _), (. ・ `つ| | ( "''''" |"'''''" | ヽ,,. ヽ | | ^-^_,, -、 | | _,, --‐''~ ) | マニフェストもう守れない。どうしよう・・・・ 'ヽ ( ,r''''''‐-‐′ / 震災後 |:::::::::/ |ミ| |::::::::| ,,,,, ,,,,, |ミ| |彡|. '''"""'' ''"""'' |/ /⌒| -=・=‐, =・=- | | ( "''''" | "''''" | .ヽ,, ヽ .| キリッ | ^-^ | . | ‐-===- | 大震災が起こったのだからマニフェストの破綻も致し方ありません ,\. "'''''''" / 朝鮮民主党 おわり
728 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 01:54:46.47 ] ビジネスsoft板でVBAのスレ探してたんだけど、なかった。 プログラマ板だったのね。VBAやれる人はプログラマでいいんだ。 HTMLとCSSはできてもプログラマじゃないって言われたことあるけど。
729 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 02:55:30.12 ] VBAやれる人がプログラマと呼べるとは限らない。 プログラマが触る対象がたまたまVBAだったならマ版にスレが立つだけで。
730 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 08:00:22.21 ] ちょっと何いってっかわかんないっすね
731 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 14:41:45.23 ] パスワードかけるのを標準モジュールだけとかできる?
732 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 17:09:08.89 ] あれはプロジェクト単位でしょ
733 名前:デフォルトの名無しさん [2012/01/10(火) 22:42:54.05 ] A列の一番最後にデータが入力されている箇所を取得したい場合 下記で良いと思いますが Range("A60000").End(xlUp).Row 上記以外の方法つまりRange("A60000")の記載がソースとして綺麗ではないので もし他のやりかたとかあれば教えてください
734 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 22:50:42.61 ] >>733 cells(rows.count,1).end(xlup).row
735 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 23:30:01.65 ] 皆どれくらい勉強してVBAを使いこなせるようになった?
736 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 23:36:00.15 ] 10年以上やってるけど使いこなせてるとは思えない どこまでできれば「使いこなした」ことになるんだ?
737 名前:デフォルトの名無しさん [2012/01/10(火) 23:58:18.81 ] VBAがある程度以上できる人の、他のPCスキル状況を知りたい。 Excel関数、Word文書づくり、Accessデータベース構造、Powerpointの効果的飾りや、 それにとどまらず、JAVA, JAVAScript、VisualBasic、VisualC++、 HTML、CSS、Perlや Network、TCP/IP、Unixも完璧にマスターしたりしてる?
738 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 06:38:45.74 ] >>735 処理重くてもなんでもいいからこれ自動化したいと思った事をそれなりにできるようになる ぐらいなら1日1時間で3ヶ月目ぐらいには出来てた。 後からの修正がやりやすいようにクラスを使うようになったのは1年過ぎてから。 現在は、4年過ぎた今でも、ちょっと凝った事する時はネットに繋がったPCで調べれないと ちょっと困る。 VBAでゲームとか作ってる人のレベルには永久に到達しないと自覚してる。
739 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 07:33:35.99 ] ゲームが作れるのと、Excelの機能を活かせているかは全然別問題。 どちからというと縄張りの違いだな。 ユーザーから提供されたシートが、Excel関数活かしまくりで驚かされることも多々あるし。
740 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 12:30:34.70 ] 関数を駆使してるようじゃ素人。 Excel扱うならほとんど関数は不要。
741 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 16:52:14.30 ] いるよな。ワークシート関数にあるの知らないで自作関数でバグ出すやつ
742 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:21:24.04 ] worksheet関数のコードって知ることできない?
743 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:44:07.83 ] 埋め込み関数もVBAも両方使えば良いだろ。 VBAコードにするまでもない場合あるし、 VBAとハイブリッドでつこてもいいじゃろし。
744 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:25:16.48 ] カレントドライブを変更する方法教えてください Sub testdirectory() Dim fld As String fld = "c:\temp" If Left(CurDir, 1) <> Left(fld, 1) Then ?????????? End If End Sub ↑の???です。 chdirはフォルダは変更してもドライブが変更しないってあるんで、ドライブを変える方法を知りたいです
745 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:38:07.98 ] chdriveは違うの?
746 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:58:48.97 ] それです^^;ありがとう
747 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:09:25.88 ] とあるwebサイトのHTMLテキストを取得してそれをエクセルに反映させたいのです 方法を誰かおすえて
748 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:20:46.34 ] >>747 それだけだと何とも言えん Webクエリでも使っとけ
749 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:43:29.63 ] >>748 ソースを取得したいのです
750 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:47:40.97 ] >>749 >>261-264 あたり
751 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:48:51.00 ] >>749 そーっすか。
752 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:58:51.34 ] >>534 これ分かる方いませんか? ツリービューを使っていますが イメージリストコントロールver6 ツリービューコントロールver6 両方チェックいれています ちなみにソースコード内全て検索しましたがRangeは使っていません
753 名前:752 mailto:sage [2012/01/11(水) 20:03:21.58 ] 頭冷やしたら解決しました
754 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:11:29.98 ] functionである範囲を入力としてとる関数を作っています。 その範囲内の単一のセルが書き換わったとき、そのセル位置を取得方法を教えてください。 2003です。
755 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:27:21.73 ] 文章がよくわからんがWorksheet_Changeイベント使ったらどうですか
756 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:45:34.14 ] Dim K-ON! As Nyan
757 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:09:24.89 ] As Nyan が言いたいだけなんじゃないかと
758 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:14:26.15 ] Dim Anal As Hole
759 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:30:25.15 ] >>755 sum関数みたいな範囲指定なんですが、 変更した数値に対して処理を付加したいんです。 直前のセルの値をstaticで保持しておいてもいいのですが、 全数を比較処理して、変更箇所を見つけるプロセスは処理コストかかるので、 簡単にできないかと。
760 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 00:11:10.87 ] >>759 Worksheet_Change
761 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 08:57:38.12 ] >>759 ユーザー定義関数? だとしたらそのアプローチが間違ってるよ 処理を付加とかわかんないから詳しく
762 名前:デフォルトの名無しさん [2012/01/12(木) 16:11:18.52 ] 2chやニコニコ動画に民主党から反日工作費が流れていることが知られるようになってきた。 民主党が用意した資金で工作員が2chを荒らしていることもだんだんと知られるようになってきた
763 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:56:33.69 ] >>759 あいかわららず何がしたいか全然わからいけど例えばこんなこと? B1に下記のように式が入力してあって =SUMもどき関数(A1:A2) 直前の操作(変更)がA1かA2なのかによって B1に表示される結果を変えたいということかな。 だったら無理だと思う。
764 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 02:56:51.89 ] スレ違いなら誘導していただけるとありがたいです。 環境の都合上、vbaで作らなければいけないのですが、 別アプリケーションの指定したピクセルの色で判断し、 キー入力をエミュレーションしたいです。 別のアプリケーションの色の取得はどうすれば出来るでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 04:55:15.99 ] >>763 それなら出来る。 面倒くさかったけど作ったことがある
766 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 08:31:16.77 ] マクロ有効ブックAのvbaで別のマクロ有効ブックBを開き、ブックBはWorkbook_Openイベントで自分自身を編集します。 編集後にそのブックBを手動で別のフォルダに保存したいのですが、 『名前をつけて保存』のダイアログボックスはブックBの元の読み込みフォルダを開いてしまいます。 これを自分の好きなフォルダを開くようにマクロから設定できないでしょうか?
767 名前:766 mailto:sage [2012/01/13(金) 09:23:12.96 ] ちなみに、ブックBのマクロ内で ChDir "C:\" としてもダメでした。 ChDir "C:\" S = GetSaveAsFilename() ThisWorkbook.SaveAs S とかならC:を開いて保存できますが、 保存するかどうかは任意なので できれば手動で『名前をつけて保存』を選び、 そのときに指定したフォルダでダイアログボックスを開くようにしたいのです。
768 名前:766 mailto:sage [2012/01/13(金) 09:26:35.73 ] すみません、ちょっとミスってました >S = GetSaveAsFilename() は >S = Application.GetSaveAsFilename() の間違いです。
769 名前:デフォルトの名無しさん [2012/01/13(金) 12:03:05.01 ] 2000版だと ChDir "C:\xxx" Application.Dialogs(xlDialogsaveAs).show もし違ったら新しいマクロの記録を使ってダイアログボックスで保存した後、記録の終了→マクロを開いて編集して下さい
770 名前:766 mailto:sage [2012/01/13(金) 12:49:53.26 ] どうもありがとうございます 都合により、来週水曜日まで そのマクロにさわれないので来週試します。 本当にありがとうです
771 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 21:36:08.80 ] >>764 Win32APIで別アプリのウィンドウハンドルを取得 これでわからなかったら、正直に「できません」と言ってあきらめろ
772 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 23:59:40.19 ] 野田改造内閣に早速疑惑浮上 @aritayoshifu 有田芳生 捜査当局が内偵を続けている農水疑惑。詳細な怪文書まで出回っている。3億円の 行方はどこに? @minorucchu ジャーナリスト 田中稔 野田改造内閣を揺るがす、農水省3億円スキャンダルの怪文書。二人の議員名が浮上。 34分前 webから https://twitter.com/#!/minorucchu/status/157687110562881537 鹿野と筒井らしい 自公は問責も視野に調査開始だって
773 名前:デフォルトの名無しさん [2012/01/14(土) 01:11:28.42 ] A1=1 B1=あいう A2=2 B2=かきく A3=3 B3=さしす 1.txt、中身があいう といったテキストをUTF-8で複数作成したいのですが どうすればよいでしょうか? Sub out_ex_euc() Dim MyIndex, myADOstr For MyIndex = 1 To 3 myADOstr = FreeFile Set myADOstr = CreateObject("ADODB.Stream") myADOstr.Charset = "UTF-8" Open Cells(MyIndex, 1) & ".txt" For Output As #myADOstr Write #myADOstr, Cells(MyIndex, 2).Text Close #myADOstr Next MyIndex End Sub こんなの書いてみたのですがダメでした
774 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:36:06.05 ] >>773 なんでプロシージャ名がeuc?ってのはおいといて、FreeFileとか宣言してない変数がいきなり出てくるあたり どっかのコピペなんだろうけど、もうちょっと落ち着いてコードを見直そうね Sub out_ex_euc() Dim MyIndex, myADOstr For MyIndex = 1 To 3 Set myADOstr = CreateObject("ADODB.Stream") myADOstr.Type = 2 'Textモード myADOstr.Charset = "UTF-8" myADOstr.Open myADOstr.writeText Cells(MyIndex, 2).Text myADOstr.saveToFile Cells(MyIndex, 1).Text & ".txt", 2 myADOstr.Close Set myADOstr = Nothing Next End Sub
775 名前:デフォルトの名無しさん [2012/01/14(土) 01:53:53.22 ] >>774 有難う御座います! 無事出来ました。 本当に助かりました。
776 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:31:16.38 ] 指定されたフォルダー内のファイル名を作成日時の 降順に並べ替えるにはどうすればいいでしょうか? ファイル名の一覧を取得して、別の配列に作成日時を 比較しながら挿入して行く方法しか思いつかないのですが、 もっと簡単な方法はありますか?
777 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:44:00.25 ] dir /b /a-d /od の実行結果を取り込む。
778 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:52:12.23 ] >>774 > FreeFileとか宣言してない変数 変数じゃないし。 まあ、ADODB.Stream 使うなら関係ないけど。
779 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:57:19.44 ] dir /b /a-d /od- だったw
780 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 15:07:46.00 ] >>779 /tc
781 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 15:48:47.05 ] ファイルディスクリプタを返す関数か
782 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 15:53:31.63 ] >>773 >>774 >>778 AODで UTF-8のtxt作る場合にはBOMがくっつくから 不要ならばバイナリで扱って掃除しないと困るよん。 と、焼酎飲みながらカキコ
783 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:45:49.71 ] 反日ネット工作員 朝日新聞社→社員約300人 民主党とその取り巻きの資金が入った反日工作会社→数社約450人 朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが 民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている 工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
784 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:01:51.55 ] detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1479372954
785 名前:784 mailto:sage [2012/01/14(土) 18:05:05.75 ] エクセルマクロで十分そうな物をSEに頼むか普通。
786 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:37:32.74 ] >>782 >15:53:31.63 >15:53:31.63 >15:53:31.63
787 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:42:32.23 ] >771 ありがとうございます。無事書けました。 プリントスクリーンして〜 とかトンチンカンなことを考えてました。
788 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 22:11:07.35 ] codepad.org/tyOKeGsr のような構造体配列があって年度別に成績を格納するところまではできたんですが、 総合計を出すために nen = 9999 のところにどうやって加算するのかでつまずいて ます。 みなさんのお知恵をぜひお借り出来れば m(_ _)m
789 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 22:56:18.31 ] >>788 それだけじゃわからん
790 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 23:03:13.96 ] > 最後に総合成績のためのidxを設ける 普通に Public 合計 As nendobetu_seiseki って宣言して、それに足しこんでいけば良いんじゃね? nen は、無駄になるけど気にしない。 そもそも、nen を持つ必要はないと思うし。
791 名前:788 mailto:sage [2012/01/15(日) 23:07:29.37 ] なかなか上手く伝えられないですが^^;、イメージ的には 年度 勝 負 2004 12 6 2005 21 2 2006 18 1 2007 18 4 2008 13 4 2009 13 4 2010 15 4 2011 13 4 2012 0 0 9999 0 0 となっていて、勝・負の数を9999のところに足しこみたいということです。
792 名前:788 mailto:sage [2012/01/15(日) 23:13:43.40 ] >>790 そういえば、確かに無理やり配列の中でやらなくてもいいですね^^; 分かりました。 ありがとうです
793 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 23:55:42.31 ] 民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している 野田内閣は過半数が帰化人 野田はどうだろうか 韓国人から賄賂を貰い、韓国人の集いに出席している野田は 首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの? い-6-1 テレビが言えない民主党のスポンサー=韓国北朝鮮 あとはもうわかるよな
794 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:20:33.95 ] XP Excel2003です 複数のPCでブックの共有をしてるのですが、Excel以外にも アプリを起動しているので常に前面にExcelがあるわけではないです。 この状態でAのPCで共有ブックをマクロを実行して更新したことをBのPCで 気づけるようにしたいのですが良い方法はないでしょうか? msgboxを試してみたのですが実行したPCでしか表示されませんでした。
795 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:44:47.83 ] >>794 VBAにこういうのを埋め込む ttp://oshiete.goo.ne.jp/qa/2172332.html
796 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:25:31.76 ] ちょっと質問。 実行時にウインドウを閉じてバックグラウンドで動作させるプログラムを組みました。 内容は、webクエリを実行してコピー→別シートに貼り付けというのが大まかな流れ。 それで、手持ちのノートPCなら動作中は他のプログラムを問題なく使える。 だけど、デスクトップで実行すると画面がチカチカしてクリックがうまくいかなかったり フォームに文字を入力できなかったりします。 動かすパソコンによって動作の違いってあるのでしょうか? パソコンはともにwin7 64bitでoffice2010です。
797 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 00:19:40.90 ] IEで開いたとあるサイトのテキストボックスに、エクセルのセルの値を貼り付けているVBA組んでいますが、 他のテキストボックスには値のが入るのですが、特定のテキストボックス入らず困っています。 (VBA知識は、「マクロの記録」+入門書レベル) プログラムは Dim strData(10) As String Dim objIE As Object で定義した変数に strData(0) = Cells(intRow, 4).Value 値を変数に入れて objIE.Document.getElementById("TEXT_BOX09").Value = strData(0) って感じでIEのテキストボックスに入れていきます。 その問題の特定テキストボックスが、他のテキストボックスと違いそうなトコは以下の2点です。 1. そのテキストボックスは、隣にカレンダーボタンがあり、クリックするとカレンダーがでてきて、日付を選択すると その日付がテキストボックスにはいる ただし、Sendkeysでためしに、クリップボードの文字列を{~v}で貼り付けたら入るので・・よく分りません・ 2. type=hidden テキストボックスがhidden型?の場合は何か特殊な処理必要なのでしょうか?
798 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 01:14:03.52 ] hiddenはテキストボックスじゃないし、そもそもブラウザ画面に表示されないし hiddenなフォームフィールドに貼り付けとかどうやってできるのか俺には解らない ホントにVBAの問題かちゃんと切り分けてから質問してくれ どうせJavaScriptかなんかで上書きされてるってオチだろう
799 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 01:23:01.92 ] >>797 hiddenの値を書き換えたいならIEを外からコントロールするんじゃなくて、submitまでの処理を自前でやった方が簡単 たとえばGoogleの検索はqという名前のテキストボックスに検索ワードを書き込むけど、 URLの末尾に「q=文字列」と追加しても同じ結果が得られる hiddenで隠されたパラメータも同じ方法で自由な値を送信することが可能 例 ttp://www.google.co.jp/search?q=文字列&num=20 numというのは表示される件数。設定画面で変更してcookieに保存されたパラメータがhiddenで送信されている
800 名前:797 mailto:sage [2012/01/18(水) 10:22:32.24 ] >798 ありがとうございます。JAVAの問題なのか。となると、これはVBAで操作ではできないことなんでしょうか。 ちなみに該当するとあるサイトのhidden(?)なテキストボックス(?)に20111225と、手入力した状態のソースです。 こんな感じで、そのテキストボックスに20111225と数字をVBAでエクセルからコピペしたいのです。 </TH><TD> <INPUT tabIndex=6 onchange="KCCDateTextUtils.onChangeText( this );" value=20111225 maxLength=8 size=8 type=text tabIndexOrder="6"> ↑サイトに20111225と手入力した時の、テキストボックス(?)の要素 <INPUT id=TEXT_BOX09 value=20111225 type=hidden name=TEXT_BOX09 kccext="dateText"> <INPUT type=hidden> ↑TEXT_BOX09にVBAで値を入れることはまではできますが、テキストボックス(?)に反映されないのが困りごとです。 <INPUT tabIndex=6 onclick="return KCCDateTextUtils.showCalendar( '〜〜/init.do' , this );" src="/〜〜/img/icon_calendar.png" type=image tabIndexOrder="7"> ↑テキストボックス(?)のとなりにある、カレンダー呼び出しボタン >799 URLでできるかも確認してみます。
801 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 11:30:47.40 ] >>800 間違ってるかもだけど なんとなく <INPUT tabIndex=6 onchange="KCCDateTextUtils.onChangeText( this );" value=20111225 maxLength=8 size=8 type=text tabIndexOrder="6"> これがあるのに <INPUT id=TEXT_BOX09 value=20111225 type=hidden name=TEXT_BOX09 kccext="dateText"> なぜここへ値を入れようとしてるの? VBAで値を入れるべきところは前者のような気がするんだけど
802 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 11:33:35.05 ] >>800 間違いなくJavascriptで入力内容をチェックしてるね (ちなみにJavascriptとJAVAは名前は似てるけど完全に別物だからきちんと区別してね)
803 名前:797 mailto:sage [2012/01/18(水) 15:05:07.95 ] >>801 ありがとうございます。 そこの使い方がわからなかったんです。 前者に20111225と値を入れたいのですが・・・ VBAで変数から入れようとしたら、 「name=」も「id=」もないので objIE.Document.getElementById("−−−−").Value = 変数 でどう使えばいいのかわからなかったとこです。
804 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:29:00.19 ] >>803 VBSのサンプルだけどここが参考になると思う 7.10 フォームの操作3/フォーム名やコントロール名が無い場合 www.happy2-island.com/vbs/cafe02/capter00710.shtml ちなみに onchangeはたぶん動作しないと思うが javascriptが動かないとまずいときは値を入れた後そのテキストボックスに対して .OnChange とかしてみるといいいかも 例:objIE.document.forms(0).Item(5).OnChange
805 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:35:23.98 ] 型が一致しません。と出ます 原因を教えてください。 For t = 3 To 100 For y = 2 To 50 If Worksheets("01").Cells(t, y).Value > 10 Then Worksheets("02").Cells(t, y).Borders.LineStyle = True End If Next y Next t
806 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:59:44.63 ] >>805 Worksheets("02").Cells(t, y).Borders.LineStyle = xlContinuous
807 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:25:30.15 ] >>806 それでやってみましたがやっぱりエラーが出ます
808 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:25:53.32 ] >>804 多謝! 目的の操作ができました。
809 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:48:18.95 ] >>805 ステップ実行でどこでエラーか調べてみて
810 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:53:01.55 ] >>807 tとyの型宣言はどうなってる
811 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:31:13.60 ] >>809 ここまで黄色の帯がかかります If Worksheets("01").Cells(t, y).Value > 10 Then >>810 Dim t As Integer Dim y As Integer よろしくお願いします
812 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:38:08.33 ] >>811 エラーでとまったときのtとyの値は? そのセルに入力されている値は?
813 名前:805 mailto:sage [2012/01/18(水) 19:52:01.57 ] >>812 セルの値が#DIV/0!になっていたのが原因だったようです お騒がせしました
814 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:56:59.65 ] 参照エラーね・・・・。 参照は小粒でピリリと辛いって言うからねぇ
815 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:01:18.80 ] あ・・・0除算だから参照エラーって言わないのかな? 如何ざんしょう?・・・・ナンツッテ
816 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 17:43:20.40 ] エクセルのシートで、使用されている行、および列の数ってどうやって抜き出すのが良いんでしょうか? excelvba.pc-users.net/fol7/7_3.html www.happy2-island.com/excelsmile/smile03/capter00702.shtml 一応調べてはみたのですが、 プログラムを組む時に基準に出来るような、正確に中身を測れる方法ではないのでしょうか? 正確に使われているセルを調べる方法が無いなら、データを保存するだけのシートを 分けて作って、普段見えないようにしておき。 見る時は、別シートの参照値だけを記述したシートを見るなんて運用になるんでしょうか?
817 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:34:19.73 ] >>816 もっとわかりすくお願いします
818 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 19:08:45.09 ] >>817 UsedRangeは空白の列や行が二つ以上続くと使われたセルの値を正確に返せない。 Endプロパティだと、列と行を一つずつ調べなければならない そして列や行の端に値が有るのか無いのかの区別も別途ロジックを用意しなければならない と言う認識なんだけど。 適当に作ったシートの中身をここら辺のプログラムで読み取るのって 汎用性が有る記述方法が見つからなかったんですが。 そもそもシートの記述の時点で、ユーザーフォームからしか書き込めなくするとか、 1シートに表を1つしか作れないようにするとかって制限をかける方が無難なんでしょうか? DBに近いような物をシートに作る時はどのようにしてますか?
819 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 20:01:14.28 ] 2007以降ならテーブル
820 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 20:54:57.78 ] ごめん 816と818を何度読み返してみても、 何がしたいのか、何に困っているのか理解できなっかた。
821 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:23:54.84 ] >>820 プログラムの設計書をVBAで自動生成しようとしてる。 電文の設計書と、それに対応した処理をするモジュールの設計書を作るとして。 両方自動生成するつもりなんだけど、テーブル二つを一つのシートに書くと、 検索のプログラムをシートの書き方毎に作らなきゃならないし面倒そう。 1 シート毎にテーブル一つにする。 2 ファイル名=モジュールのIDとし、特定の列のN番目からデータを取り自動生成すると楽っぽい 3 動的型でも使えるっぽいので、引数でどっちかを指定すれば、エクセルファイルの幅の設定もファイルの種類毎に変えられるっぽい こんな感じの印象を持っている。 まぁ上のは例を挙げただけなんだが。 プログラムで何かをする時に、元データとして使うシート自体の書き方制限して特定の形にしておくと便利っぽいが ネットで調べる限りそんな記述が出て来ないんだけど、言葉にしないだけで結構みんなセルに特定の規則作って使ってるよね?? と、出来る限り分かりやすく書き直してみたんだけどOK?
822 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:39:40.26 ] >>821 そのレスも自動生成なのかい? 実用レベルには程遠いね
823 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:12:10.03 ] >>822 もういいやw 説明するのも面倒だし、学校の先生から説明されるような物じゃ無いと何も理解できないとかww 金貰って書いてるわけじゃ無し、理解できない奴は無視しておけば良いやw しかも実用にほど遠いってww ひな形の作成ぐらいにしかなって無いだろうよ説明的にww
824 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:14:31.59 ] そりゃお前は中身解ってるから理解できるだろうけどさー 一つ言える事は、ExcelをDBとして使う事は愚の骨頂。できるけど。 どうしてもやるなら入力専用シートなりフォームを作って データシートをテーブルに見立ててSQL 下手にLookUpとか使うと>>813 みたいに思わぬ所で参照エラー地獄 これで解らないなら敢えてExcelで作る必要無し Accessとかなんか得意なのが有ればそっちのが良いんじゃね? PGなんてのは一つ一つやりたい事実装してけば最後には出来るもんなんだよ いっぺんにあれこれやろうとするから解らなくなる すっ飛ばすのは数こなして慣れてからだよ
825 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:26:24.94 ] というかセルの型指定できるだろ 入力制限もかけられる 動的に生成したいなら、マクロの記録使ってセル設定すれば ソースが出来るから後はそれを使いまわせ
826 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:48:27.05 ] >>824 DBに近いような物・・・ DB自体じゃないよ PG作る時のクラスの命名規則とかいちいちDB作って登録するわけじゃないでしょ、 あくまで簡易な物 それにDBのテーブル自体もエクセルにしといた方が良いと思うが。 テーブルのデータじゃ無く、テーブルの構造な。 MVCアーキテクチャで作る時に、どのテーブルのどのデータ抜いてきたかとか分かると良いだろ。 で、参照値にしとけばって話で detail.chiebukuro.yahoo.co.jp/qa/question_detail/q127916537 こんなのも出来るし まぁどちらにしろプログラムの作り方についての質問じゃ無く。 VBAで何かする時に、元になるシートが有るわけだが、好き勝手毎回適当に作るより、 規則性持たせた方が都合が良さそうだけど、どう思う>all ぐらいな感じ
827 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 04:02:02.22 ] >>816 ヒトにとって読み易い表フォーマットは往々にして機械走査しにくいが、どんな運用ルールを設けてもなし崩しにされてしまうので、結局ニンゲンさまに合わてプログラムするしかないと諦めてます。
828 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:43:35.88 ] formのボタンを押すにはどうしたら? プログラムから、ボタンを押すと実行されるサブルーチンをcallするのでなく、ボタンそのものを押す方法。 プログラムは、vbaで出来なければ、他のものでも良いです。
829 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:27:13.58 ] 日付関係で質問 VBAでコピー元→コピー先に値の貼付を行なった際、表示がコピー先の書式設定に合ってない… どう対処したら良いっすか!? コピー元書式設定:「文字列」 値「2012/1/20」 コピー先書式設定:「yyyy"年"m"月"d"日"(aaa)」 「2012/1/20(金)」で表示されて欲しいところ「2012/1/20」になってしまう ソース '日付コピー Range(Cells(2, HidukeCol), Cells(EndRow, HidukeCol)).Select Selection.Copy '値の貼付 Workbooks(HATUKESAKI).Activate Range("B2").PasteSpecial Paste:=xlPasteValues
830 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 10:04:14.60 ] Type co num As Integer pr As Long End Type Dim CoStr(3) As co こういう構造体配列があります。 数値としては例えば num pr 1 125 2 138 3 175 みたいなのが入っていたとして、CORRELによる結果を出したいのですが、 CORREL(配列1, 配列2) となっている時、どういうふうに書けばいいんでしょうか? 今は一旦シートに書きだしてその上でそれぞれrng1,rng2に入れてから Application.Correl(rng1, rng2) として計算しています。シートに書き出さず直接計算できたらと思っているのですけど。
831 名前:教えてください [2012/01/20(金) 10:18:09.88 ] ユーザーフォーム内に10個のテキストボックスを作り、その中に数値を 入力していき、最後に別のテキストボックスに10個の数値のMAXと MINを自動的に割り出したいのですが、どうしてもうまくいきません。 AVEはいくんですが・・・。 どうか、優しい方、教えてください。
832 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 11:06:59.01 ] >>828 VB6と一緒 ここはあくまでExcelをマクロ言語操作することに関してのスレなので 例え環境としてVBAを使おうと、Excel操作以外はスレ違い >>829 コピー先に日付書式が設定されていても、それはあくまで数値(シリアル値)が入力されたら その書式に沿って表示せよという設定なだけで、文字列を入力すれば文字列のまま表示されるので 日付文字列を一旦CDateやDateValueでシリアル値に変換してから入力すれば良い >>830 VB6と一緒 ここはあくまでExcelをマクロ言語操作することに関してのスレなので 例え環境としてVBAを使おうと、Excel操作以外はスレ違い >>831 VB6と一緒 ここはあくまでExcelをマクロ言語操作することに関してのスレなので 例え環境としてVBAを使おうと、Excel操作以外はスレ違い
833 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:57:30.64 ] >>826 何分かけて一レス書くのか知らないけど、それと同じ時間だけ何度も読んで、同じ時間だけかけて推敲してから送信してね。
834 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:44:05.85 ] >>832 ありがとうございます。 でもセル範囲でデータを取っているため Cdateが使えません……
835 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:31:49.23 ] Dim セル As Range For Each セル In セル範囲
836 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:49:15.64 ] >>833 お前のレベルに合わせたら例3つぐらい出して、起承転結付けて最初と最後に結論かくような、 いかにも国語の教科書って書き方しないと伝わらないだろ >>819 の時点で分かる人には分かるって気が付かないか? そもそも最初の文だけでも伝わる人には伝わる。 俺に重要なのはお前に伝わる書き方をする事ではない。 同じような考察に至った人が現在どういう使い方をしているのかが知りたいだけ。 自分が経験不足で何を言いたいか理解できなかったからってこっちのせいにするな。 ここはお前のようなかまってちゃんに、必ず伝わらないと文章書いちゃいけないなんてルールは無いんだぞ
837 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:22:44.14 ] >>836 > そもそも最初の文だけでも伝わる人には伝わる。 > 同じような考察に至った人が現在どういう使い方をしているのかが知りたいだけ。
838 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:23:39.67 ] あーごめん俺>>819 だけどお前の話はさっぱりわからんわ
839 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:33:38.62 ] >>837 誰にも伝わっていないか、それとも同じような考察に至った者がいないか(笑)
840 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:37:50.75 ] ID無いとやり放題とw 使えない上司の定型文貼る奴はレベルが違いますね
841 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:38:58.15 ] >>839 俺にはこう伝わったぞ >プログラムで何かをする時に、元データ(略)の書き方制限して特定の形にしておくと便利っぽい プログラムで完全に不定なデータ扱うなんて、考察にいたるとかいうまでもなく 無理だってわかりそうなもんだが、彼は今初めてそれに気づいたらしい あと助詞と句読点の使い方がおかしいので、日本語が不自由な人だというのも伝わった
842 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:49:31.87 ] 同意
843 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:50:15.28 ] たぶん頭も不自由なんだろう
844 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 08:16:13.33 ] そもDBに近いようなものってとどのつまりDBじゃねーの 簡易だろうがなんだろうがDBはDBでしか無いじゃん あとPG作る時のクラスの命名規則とかいちいちDB作って登録する事は普通に有るので 無いでしょ?と問われたらNOとしか言えませぬ。 まあ一つ言える事は、どんな規則作っても 一番偉い奴がガッチリ管理し続けない限りなし崩しになるから そんなとこに無駄な労力を割く必要無し。 ルールをプリントアウトして目立つとこに貼っとけw
845 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 08:30:50.69 ] なにはともあれ質問が漠然とし過ぎてて解んねーよ 仕事なら一緒になって真面目に考えるけどさ もうちょっと具体例というか・・・あ、ここVBAスレだな。 仕様は自分で考えて、コーディングの段階になってからまた来てくれよ
846 名前:デフォルトの名無しさん [2012/01/21(土) 10:32:17.82 ] ソースコードジェネレータ、つーか、テンプレート、みたいなのを作りたいのか? ひな形に読ませる設定一覧が表になってて、表のレイアウト込みで自動で読ませたい こんなかんじ? やめとけ、出来ない事はないと思うがレスのやり取り見てると作った本人でも使えないモノしか出来そーにない
847 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 12:30:39.01 ] 何でもかんでもExcelでやろうとする奴は例外なく馬鹿
848 名前:デフォルトの名無しさん [2012/01/21(土) 12:32:23.74 ] 定型的コードを一意に作るならできる。 例えばc言語のテーブルみたいなのを想定したシートにパラメータつっこめばテーブルに加工するのは容易。 同じように定型的コードの要素をならべてシートに整理。VBAで処理したら、典型的コードの亜種がつくれます。 用途は、テストコードの量産とか。
849 名前:デフォルトの名無しさん [2012/01/21(土) 12:34:52.45 ] 補足 典型的コードの構成部品はVBAコードに埋め込み。リファインはVBAを直接弄る。
850 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 13:51:04.88 ] 【プログラミング部】 PHPが100倍速で動くようになったぞー awabi.2ch.net/test/read.cgi/poverty/1327050821/
851 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:14:31.78 ] 恋のぼんちシート www.youtube.com/watch?v=wlNVmH4X27s
852 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:04:14.91 ] >>844 エクセルの使い道って、プログラミング組めなくてmysqlとか使えない奴が使う 簡易なDB機能じゃなかろうか・・・ いちいち作るのが面倒ならエクセル使うと思うんだが クラス名をDBに登録ってどんな規模ならやる羽目になるん?
853 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:06:47.92 ] そうか、お前はプログラミング組めなくてmysqlとか使えない奴なんだな
854 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:20:20.20 ] >>853 いちいち作るのが面倒ならエクセル使うと思うんだが いちいち作るのが面倒ならエクセル使うと思うんだが いちいち作るのが面倒ならエクセル使うと思うんだが いちいち作るのが面倒ならエクセル使うと思うんだが 文章自体読めない奴が何をw
855 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:41:24.94 ] ほう、ならプログラミングできてDBも使えるって言うのかい?
856 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:41:35.78 ] データ=DB という錯誤が、この話題ではまかり通っているように思える。
857 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:39:22.32 ] > データ=DB は実は錯誤でもなんでもなく正しいんだけどね 少なくともExcelにおいてはね さすがにCSVデータのみを以てDBとするのは正しくないが Excelは昨今のDBソフトには遠く及ばないものの、DBとして本質的な 最低限の機能は備えているので、Excelのシート上にデータを置けば それはDBと呼んでも何の差し支えも無い むしろDBに対して、本質的なところではなく 後発の固有DBフォーマットや固有DBソフトの付随的な機能や規格を挙げて 「この要素を満たしてなければBDとは言えない」とか言ってる奴の方に錯誤がある BDソフトメーカーの高機能戦略に踊らされすぎて、本質的なDBというものが見えてない
858 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 01:10:50.49 ] >>856-857 もちろんExcel表(上のデータ)は立派なDB足り得るぞ だが、データ=DBが正しいなら、CSVデータも本質的に立派なDBだが? すべてのデータがDBだというのはさすがに間違ってるだろうが 今回の話でのデータはまさしくDBといって差し支えないぞ そのDBのデータをエクセルで扱うのに、フォーマット不定でできないかって言ってる DBの本質とかDBソフトの本質とかスレ違いだしそっちは他所で議論してくれ
859 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 04:51:55.62 ] ここはExcelのスレだが?
860 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 05:10:01.15 ] XP Excel2000です。 Q. For Each i In 範囲 〜 next iの文で 範囲を.Range("B1:B8")、("C1:C9")等といった形でまとめて記述し B1,B2,B3…C1,C2,C3…と順番に処理させたいのですが どう記述すれば良いですか? ↓自分で試して失敗したコト↓ 範囲をVariant型で宣言し、変数A("B1:B8")、変数B("C1:C9")…を 範囲 = Array(A,B,C…)と代入して動作は確認できたのですが For〜nextの変数iにSelect Caseの条件分岐をかけたらエラーになってしまいました。 とりあえずFor〜nextの処理を i.value = 10 にしてわかったことは 1つの記述が"B1:B8"でまとめて成されてしまうため i = "" で値が入力されているかどうかで分岐させる条件と比較できないということでした。 B1,B2…C1,C2…と1セルずつ処理を進行させるにはどういう記述にすればいいでしょうか? 範囲を.Range("B1:B8")という記述で必要分だけ文をコピペすると文が長くなりますよね…
861 名前:sss mailto:sage [2012/01/22(日) 06:34:50.26 ] 列毎のループとセル毎のループの2段ループにすれば良いだけちゃうの? Dim cols As Range, cell As Range Dim ii As Long For Each cols In Range("A1:E5").Columns For Each cell In cols.Cells ii = ii + 1 cell.Value = ii Next cell Next cols
862 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 07:17:23.72 ] >>856 いやいや、さすがにそれはねーよ ・・・あったでござる >>857-858
863 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 08:20:48.53 ] >>861 様 感動!.cellsや.columnsという記述でこんな簡単に制御できたのかwww 色々試したら希望通りの動作が確認できました。 これで記述のシェイプアップが捗りそうです!ありがとうございます! ところで範囲が四角でククれない不定形の場合(Ctrl+左クリックで選ぶような)で 記述を簡略化する場合はどう書けばいいのでしょうか? 今考えついて動作確認できたのが、Array(A,B)配列を作って For Each I In 範囲(数字).cellsとして数字=0からスタートし、 next iを越えたら数字=数字+1としてGoToで頭に戻るという記述なのですが もっとスマートに書く方法はありますか?
864 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 08:32:07.79 ] >>862 君は>>857 最後の1行に該当する子なんだね。
865 名前:sss mailto:sage [2012/01/22(日) 08:44:03.75 ] >>863 よう解らんがこういうことか? For Each cell In [A1:C3,E2:G4,C6:E8] ii = ii + 1 cell.Value = ii Next cell
866 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 09:26:32.36 ] >>865 様 ですです、そういう内容の時に範囲の部分を[A,B,C]というように 手前でsetした変数としての記述はできないのかな、という疑問です。 というのは、手元の環境でDim A As Rangeの set A = range("A1:C3")等と変数記述すると For Eachのところでオブジェクトが必要と怒られるのですが その解決方法がわからなかったので… 変数記述しなければ動作するのはこちらでも確認できましたが
867 名前:sss mailto:sage [2012/01/22(日) 09:39:04.98 ] >>866 つまりこういうことか? Dim x As Range, y As Range, z As Range Dim cell As Range Dim ii As Long Set x = Range("A1:C3") Set y = Range("E2:G4") Set z = Range("C6:E8") For Each cell In Union(x, y, z) ii = ii + 1 cell.Value = ii Next cell
868 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 10:01:25.18 ] >>867 神 感動した。正にその記述です。 詰まるところArrayじゃなくてUnionを使えば良かったのですね。 VBA一ヶ月目の俺にはさっぱり意味が全然わからないけどwこれから勉強させて頂きます。 .cellsとUnionよくわからんけどすごい!びっくり! とりあえずネカフェの12時間パックが切れそうなので一旦お暇して夜また来ます! 一番ネックだった部分が解決して本当に嬉しい! お付き合い頂きありがとうございました。感謝。
869 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 11:48:45.06 ] >>864 相手にするだけ無駄だろ データを大量に詰め込めて検索できればDBなのにそれも理解してなそうだし VB以前にVLOOKUPも知ってるか謎
870 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 11:54:36.92 ] > データを大量に詰め込めて検索できればDB トンデモすなあ
871 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:10:46.65 ] > データを大量に詰め込めて検索できればDB データベースというものを、大手の作るデータペースソフトとしてしか 見れてない奴からすると、トンデモ理論に見えるんだろうね。 データベースというものの本質を解っていれば、 実にシンプルかつ的確にデータベースというものを表現しているのだが。
872 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:40:44.83 ] メモ帳もDB
873 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:52:31.14 ] >>871 削除も、更新も不要なんだ、へぇ〜。 馬鹿すぎ。
874 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:58:59.50 ] あなたのVBA力を試しているのですが
875 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:08:09.76 ] >>874 お久しぶりです!
876 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:10:48.90 ] データベースというものを、大手の作るデータペースソフトとしてしか見れてない奴なので > さすがにCSVデータのみを以てDBとするのは正しくないが というトンデモ理論が口をつくのだろう。
877 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:52:01.22 ] 削除や更新や検索は DBMSのお仕事であって データベースそのものじゃないとおもうが
878 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:55:22.65 ] 悪態をつくことは出来るが反論できない負け犬が吠えてるw
879 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:57:20.36 ] 削除も、更新も不要なんだ、へぇ〜。 (こんな事も知らなかった俺って)馬鹿すぎ。 こうだなw
880 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:20:41.87 ] >>877 君の言う「データベースそのもの」って言うのを明確にしてくれ。 何でもかんでもデータベースだと言うなら別に止めないけど。
881 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:22:05.34 ] >>879 なら、詰め込むのも不要だよな。 馬鹿だね。(w
882 名前:877 mailto:sage [2012/01/22(日) 14:30:17.06 ] >>880 ある目的にそったデータを集めたもの
883 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:44:04.59 ] 集めただけでいいの? あと、その意見だと「データ=DB」は間違いだよね。
884 名前:877 mailto:sage [2012/01/22(日) 14:55:39.32 ] 集めたデータを提供するのがDBMSの仕事だって認識
885 名前:877 mailto:sage [2012/01/22(日) 15:04:01.39 ] ちょっと訂正 ×提供するのが ○管理し提供するのが
886 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:05:05.70 ] >>884-885 じゃあデータだけ見ただけだと何も言えないということでいい? つまり 「データ=DB」 「CSVデータも本質的に立派なDBだが?」 「データを大量に詰め込めて検索できればDB」 は、データの目的が書いてないので、DBと言い切るのはトンデモ理論ということでいいよね。
887 名前:デフォルトの名無しさん [2012/01/22(日) 16:11:31.87 ] awabi.2ch.net/test/read.cgi/poverty/1327050821/3
888 名前:877 mailto:sage [2012/01/22(日) 16:48:18.64 ] それらを どうしても"トンデモ理論にしたい"で 考えたらそうなるね そのスタンスでいる限り平行線になるな どっちも メンドイから抜けるわ 罵倒されるだろうけどあえて受けるよ じゃ頑張ってね
889 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:53:17.31 ] >>877 そもそも構うだけ無駄だった まぁ言った通りの低能ぶりだったろ 結局辞書で調べろと言っても分からない奴には何を言っても無駄
890 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:32:57.64 ] お前が辞書で調べろっていう
891 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:48:25.04 ] e-words.jp/w/E38387E383BCE382BFE38399E383BCE382B9.html 複数ユーザーで使用するエクセルの表・・・ 立派なデータベースですねw
892 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:55:54.10 ] >>890 生徒のテストの点数をエクセルで管理してる全国の教職員に謝ったら?
893 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:05:57.04 ] うわーえらーい、すごーい
894 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:27:10.66 ] え、何? お前の中では「エクセル表がデータベースかどうか」って話だったの? さすが、レベルが違うわ〜
895 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:40:52.85 ] 引数付きのプロシージャーを呼び出す時って、 Callの時は引数を括弧でくくって、Call付けない時は括弧を付けない。 と言うことでOK?
896 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:52:40.11 ] 半分OK
897 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:24:29.62 ] >>888 無理やり引き分けに持ち込んだ気になって、自己満か。 まあ、理論的に返せないから、彼にとっては一番いい解決法なんだろうな。
898 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:47:59.28 ] >>897 複数のアプリケーションソフトまたはユーザによって共有されるデータの集合のこと。 複数のアプリケーションソフトによって共有されるデータの集合のこと。 複数のユーザによって共有されるデータの集合のこと。 この片方でも満たしていればデータベースと呼べるわけだが・・・ 頭悪いの?広い意味では図書館すらデータベースなのにw
899 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:52:20.31 ] VBA力と回答力を試しているんですが
900 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:04:38.66 ] >>898 へぇ〜、ファイルサーバーで共有されているファイルは、全部データベースって呼べるんだ。 これまた、すごい珍説乙。 まだ >>888 で止めときゃいいのに、馬鹿だねぇ。(w
901 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:13:32.56 ] >>900 馬鹿過ぎワロタw >ファイルサーバーで共有されているファイルは ファイルサーバーは それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw
902 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:30:26.88 ] >>901 落ち着いてレスしろよ、なに言ってるのかわからん。 本人にもわかっているのか、怪しいけど。(w
903 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:36:41.00 ] >>902 日本人専用なの、チョンに合わせて書く事はできませぬw
904 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:57:42.86 ] ああごめん、反論できなくなるとチョンとか言い出すんだったんだよな。 わかりやすいね。(w
905 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:12:25.54 ] >>904 >>901 が理解できるようになってから書き込んでねw これだからチョンはw
906 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:52:25.63 ] >>905 え゛っ、マジで >>901 がまともなレスだと思っているんだ…、すごいな。 >ファイルサーバーで共有されているファイルは ファイルサーバーは > それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw 誰か、翻訳してくれ。
907 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 22:25:55.91 ] 質問のある方、こいつらのワケワカメな話に付き合う必要ないから、どうぞ〜
908 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:04:51.26 ] DBを解ってる奴が2人しかいないなんて・・・
909 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:07:29.40 ] レコードの中にフィールドがあり、フィールドの中にデータが入っているのがデータベース データベースの定義はたったこれだけ 検索だの抽出だのシステムかどうのとかいうのはまた別の話
910 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:18:19.90 ] そもそもDBとDBMSの区別ができてないやつがいるな 一般論で言えばデータが集まってれば何でもデータベースだよ 一連のスレをざっと見て目に付いた単語を並べると、図書館、ファイルシステム、CSV、エクセルのシート、みんな正解 メモ帳はアプリだから違う。カテゴリー分けするなら、DBではなく、極めて原始的なDBMSの方に入る それをどう使うか、効率、使いやすさ、規模ってのはまた全然別の話。検索だの削除だのもみんな運用側の話だわな
911 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:48:41.18 ] 昼過ぎはDB理解してる奴が一人も居ない件について
912 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:03:20.57 ] エクセルのデータをIEにVBAで転記していますが、ボタンを押して、 データが正しいときと、間違っているときでは開かれるサイトが違います。 そこで処理が正しければ、EXCELのその行のA列に"OK"といれて ダメなら"Error"とでも入れたいのですが、 そのIE上の処理が正しいかどうかを判別する方法ありますか? 例えば、ボタンを押した後に出てくるアドレスとかがEXCELに取得できれば 判別できるのかと考えていますが、そんな方法ありますか? お願いします。
913 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:33:42.81 ] >>906 >ファイルサーバーで共有されているファイルは ファイルサーバーは ↑これは、「データの集合」から「データ」に勝手に解釈変えて何言ってるの?馬鹿なの死ぬの? >まだ >>888 で止めときゃいいのに、馬鹿だねぇ。(w それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw これは勝手に同一人物認定してるんじゃね〜 ファイルサーバーがデータベースじゃないとか恥ずかしい勘違いしてる奴と違って、 論理破綻してね〜から同一人物の可能性がどれだけ少ないと思ってるんだ?この低能がw 馬鹿過ぎワロタw ↑これは、教えてもらえてるのに自分の知らない知識は間違ってる事にしたい君の全てのレスに対して こんな感じ
914 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:34:22.77 ] >>912 いくらでも出来るけどスレ違い ここはマクロ言語で「Excelを操作する」ことに関してのスレで 他のアプリを操作したりデータを取ったり渡したりは管轄外
915 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:50:37.76 ] 議論ですらないから反論なんてあるわけないね
916 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:47:33.88 ] アプリ起動時にユーザフォームだけ出す方法として Application.Visible = Falseがありますが、 これだと2つ以上ブックを開いていたときも全部非表示になってしまい都合がわるいです。 非表示させたいブックを指定する方法はないでしょうか?
917 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:14:02.47 ] ひとつのアプリ(Excel)で二つのブック開く場合は無理だろ 関連付け変えて、ブックを開くたびに新しいExcel開くようにしな 多少多めもメモリ食うが、昨今のどころかここ数年くらいのPCなら Excelを10個や20個起ち上げたところでメモリ不足になんかならないし タスクボタンもグループ化出来るからさほど邪魔にならないはず つーかさ、ユーザーフォームだけ使いたいなら、わざわざExcel使わないで普通の開発環境使えば? VBAと完全互換のVB6は有料な上にとっくに終了してるが、オクで1/10以下の価格で出回ってるし 互換性の高いActiveBasicとか、そこそこ互換性のあるVB.NET(VB2010)とかは無料で使えるし HTA+VBScriptなんて手もあるし
918 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:23:32.94 ] >>917 アドバイスありがとうございます。 たしかにユーザーフォームだけ使うのであればエクセルである必要がないですね。
919 名前:デフォルトの名無しさん [2012/01/23(月) 02:50:45.17 ] >>912 ↓こんなんですか? Sub Test() Dim MyObj As Object For Each MyObj In CreateObject("Shell.Application").Windows If MyObj.Name = "Windows Internet Explorer" Then Exit For End If Set MyObj = Nothing Next MyObj If MyObj Is Nothing Then MsgBox "IE が起動してないよ" Else MsgBox MyObj.LocationURL End If Set MyObj = Nothing End Sub 見当違いの回答だったらごめんね
920 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 07:03:36.43 ] >>919 >MyObj.LocationURL これできました。ありがとうございます。
921 名前:デフォルトの名無しさん [2012/01/23(月) 09:29:03.86 ] 以下は,配列に入っているデータを入れ替えるプログラムです (配列xを引数として入れ替える関数subprogramに渡している) (a)値呼び出しの場合,配列xと配列yの値はどのようになるか?結果だけでなく引数を渡す過程も含めて詳しく説明せよ. (b)参照呼び出しの(ByVal を ByRefに変えた)場合,配列xと配列yの値はどのようになるか?結果だけでなく引数を渡す過程も含めて詳しく説明せよ. Sub main() Dim x(5) As Integer x(0) = 10: x(1) = 20: x(2) = 30: x(3) = 40: x(4) = 50: x(5) = 60 Call subprogram(x()) For i = 0 To 5 debug.Print x(i) Next End Sub Sub subprogram(ByVal y As Integer) Dim i As Integer For i = 5 To 1 step -1 y(i) = y(i- 1) Next End Sub 助けてください。
922 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:53:04.14 ] >>921 ヒント:>>2 ここはマクロでExcelを操作する話以外はスレ違い
923 名前:デフォルトの名無しさん [2012/01/23(月) 10:30:44.83 ] >>899 コラ それはオレが広めたセリフであり オレだけが使うことを許されたセリフだ もし使いたいならオレの了承を取ってからにしてくれ
924 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 10:38:49.73 ] 最初に使ったのは俺だぜ 使いたいならまずはお前が俺の承諾を取れ
925 名前:923 [2012/01/23(月) 11:25:08.87 ] のびたのくせに生意気だ
926 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 11:27:27.99 ] ところでVBAで配列をByValで渡すと、スタックに大量のデータが積まれるの? それともデータ領域を複製してポインタを渡すだけ?
927 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:03:56.47 ] >>923 使うのがお前だけって事は全く広まってなくね?
928 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 22:00:59.47 ] >>926 データを複製してポインタを渡すだけ。 VARIANTとSAFEARRAYを使って実装されてるっぽいし。
929 名前:デフォルトの名無しさん [2012/01/23(月) 22:19:20.89 ] >>928 桜は満開でございます blog-imgs-46-origin.fc2.com/k/e/t/ketsunomi/c464.jpg
930 名前:デフォルトの名無しさん [2012/01/23(月) 22:23:00.95 ] apfsy.com/anal/img/anal0117.jpg
931 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:06:12.89 ] >>910 , >>913 *.wav って、PCM データが集まってるよな。 それを共有したらデータベースって言うわけだよな。 すごいよ、お前ら。 さすがにあほすぎて太刀打ちできんわ。(w
932 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:24:21.19 ] もう・・・ノーサイドにしましょうよ・・・。
933 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:52:45.71 ] >>931 本当に残念な奴だなお前はw データを特定の形で整理した 「データの集合」がまず有って、 それを複数のユーザーで使いまわす事が出来る状態になってれば それはもう立派なデータベースだと・・・ PCMデータを一個ずつ抜き出して意味の有る物の単位になるのか? いい加減謝れよ、てかその屁理屈考えるのにどのぐらいかけたの?w
934 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 00:43:03.87 ] >>933 >データを特定の形で整理した おや? >>898 には、一言も書いてないんだけど、そんな条件。 後出しじゃんけん乙。 ちなみに、PCM データは時系列に音の大きさを特定のビット数で並べると 言う形で整理されてるし、一個ずつ抜き出せばその時点の音の大きさと言う 意味のあるデータになる もちろんファイルサーバーなり、P2P で複数のユーザーから使いまわすことが でぎる状態にできるし。 て言うか、複数のユーザーとか何回もアホみたいに書いてるが、一人で使う データベースと言うものの存在も知らないのか? 例) 自分の蔵書を自分が見るためだけにデータベース化してる奴など。 > どのぐらいかけたの? 「データの集合」と言う言葉から *.wav ぐらいはすぐ思いつくと思うが、 もしかして必死に考えないと思いつかないの? (w
935 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 01:32:49.56 ] >>934 丸一日レスが無かったから顔真っ赤にして必死に考えてたんだと思ったよw >データを特定の形で整理した >>869 で検索できればと言っているわけだがw 検索、再利用、何かの指針にできるここまで分かってれば特定の形で整理されて無いとDB足りえないと分かるよなw 後出しではなく、君が低能なだけだねww それと君の言ってるwavの話なんてそもそもDBじゃないでしょww アルファベットの定義があるから、アルファベットの意味不明の文字列がDBになるなんて 誰も言ってないわけだがwww >「データの集合」と言う言葉から *.wav ぐらいはすぐ思いつくと思うが、 >もしかして必死に考えないと思いつかないの? (w わざと間違った方向に考える為に知恵を絞ったんじゃないの?w 真性の低能だからそういうのがパッと思いついたの?w
936 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 02:26:48.68 ] ブルドック.wavとチワワ.wavとドーベルマン.wavを集めたら 立派な鳴き声データベースですが?
937 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 02:57:11.15 ] データベースの定義はたった一つだけ「データの集まり」であること 補足すると、データの種類は問わない、集めた個数も問わない 定義の中にデータの種類や個数を限定する言葉は一切出てきてないんだから当たり前だね つまり、PCMデータを集めてもいいってこと ではここで問題 PCMデータを集めたwavファイルはデータベースか? ヒント データが集まってればそれはデータベースだよ
938 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 03:05:59.71 ] wavファイル一個でデータベースとか暴論すぎだろw おはよう こんにちは こんばんは こんな感じで三つあればデータベースだが おはよう これ一個だけを ”お”・”は”・”よ”・”う” こう分けられるからデータベースだとか酷過ぎるだろw 誰がこんなゴミデータ再利用するの?w データ・ベース dictionary.goo.ne.jp/leaf/jn2/198592/m0u/ ベースの意味を学習しなさいw PCMデータの一覧とかならデータベース足りえるが・・・ wavで使われる一つ一つのPCMに意味なんかないだろ?w ゴミの集合じゃデータベースとは言えないんだよ 意味のあるデータの集まりである必要がある
939 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 03:12:29.63 ] Microsoft Accessでテーブルを作り、無意味な16bitのデータをどんどん入れていきました 入っているデータに意味がないのでこれはデータベースではありません これは○か×か?
940 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 03:16:44.61 ] 上の問いで作成した、無意味なデータの入ったAccessのファイルを別の人に見せました 内容が何かは伝えていません このファイルを見た人はこれをデータベースだと思うでしょうか、違うと思うでしょうか
941 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:08:22.67 ] >>935 >丸一日レスが無かったから顔真っ赤にして必死に考えてたんだと思ったよw すごいなぁ、昼間に働くとか学校に行くとかの概念がないんだ… >>>869 で検索できればと言っているわけだがw はぁ? そのレスが君のレスで >>898 に関連しているとエスパーしろと? ばかじゃゃねーの? > 検索、再利用、何かの指針にできるここまで分かってれば特定の形で整理されて無いとDB足りえないと分かるよなw > 後出しではなく、君が低能なだけだねww 検索、再利用、指針? どんどん後出しされるねぇ。 自分が >>898 で「この片方でも満たしていればデータベースと呼べるわけだが・・・」って書いたことを忘れたのかなぁ? (w >それと君の言ってるwavの話なんてそもそもDBじゃないでしょww そりゃそうだよ、DBじゃない例出してるんだから。 でも、君の >>898 の定義は満たしてるだろ? >アルファベットの定義があるから、アルファベットの意味不明の文字列がDBになるなんて >誰も言ってないわけだがwww ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ >わざと間違った方向に考える為に知恵を絞ったんじゃないの?w ひょっとして、自画自賛? >真性の低能だからそういうのがパッと思いついたの?w そういう、自己紹介はいいから。
942 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:42:16.23 ] ぷ
943 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:57:01.65 ] ぷ。←ボウリングしてる人
944 名前:デフォルトの名無しさん [2012/01/24(火) 10:21:26.30 ] >>938 wavファイル一個でも、異なる複数の音声が入っていて、 それがユーザーにとって意味あるものでかつシークとかで 検索できるものであればDBと言えるんじゃない? 「おはよう」はこれ一個だけがユーザーにとって意味あるもので あって、一文字づつ分けるひつようないし、 「おはようこんにちはぽぽぽぽーん」とかのデータから 単語を抜き取るルールがあればDBなんじゃないの
945 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 10:45:19.90 ] どっちかってとそのインデックスがデータベースなのでは?
946 名前:デフォルトの名無しさん [2012/01/24(火) 13:42:31.73 ] ここでは例えとして、インデックスではなくて、 I/OをDBMSが担っているということにしてはダメ?
947 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:30:28.17 ] そろそろVBAの話しろよ
948 名前:デフォルトの名無しさん [2012/01/24(火) 15:30:28.97 ] いつまでDBの話してんですか。ちょっとした質問でも すれ違いだと言って回答しないのに。
949 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:10:55.54 ] 俺データベース定義自慢は、こっちでどうぞ。 データベース toro.2ch.net/db/
950 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 18:47:52.27 ] >>941 >すごいなぁ、昼間に働くとか学校に行くとかの概念がないんだ… すごいなぁ、真性のコミュ障が社会に出てると思われるとでも?w それとも君のレスを見てコミュ障だと思われないとでも?w 検索、再利用、指針≒複数人数での使いまわしの必要条件 まぁ脳みそ腐ってる奴に言っても無駄なんだろうけどw
951 名前:デフォルトの名無しさん [2012/01/24(火) 21:34:50.36 ] 上司「12345−6789=の答えを33333になるにはどうすればいいか考えてきて^^」 俺新入社員の営業職でエクセルを使うよりも商品知識を付けたいのにエクセルの関数の問題出された おまえら助けろ下さいおなしゃっす
952 名前:デフォルトの名無しさん [2012/01/24(火) 21:36:16.60 ] あれ、スレ違いだったかな エクセル総合にいってきます
953 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:16:24.40 ] if a = 5556 than a = 33333
954 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:45:10.92 ] シートを削除する際に Sheets("シート名").Select ActiveWindow.SelectedSheets.Delete と普通にマクロの記録で書くと、 「選択したシートに、データが〜〜[削除]をクリックしてください] というメッセージがでますが、それを出ないようにするか、 自動に[削除]をクリックすることはできますか?
955 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 09:04:43.39 ] 検索してから質問しろ
956 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 10:39:28.30 ] >>954 Application.DisplayAlert = False >>955 うぜぇバカヤロウは消えろ
957 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:50:05.47 ] みんながちゃんと検索するようになったら俺の存在価値がなくなっちゃうだろ! とか思ってるのかな〜
958 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:42:43.57 ] 質問です RangeからCellsをFor Eachで取り出した時の順番は左上から右に向かうというのは保証されてるんでしょうか? ヘルプかどこかに明記されていますか?
959 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:57:07.03 ] >>958 MSDNだったかヘルプだか忘れたが、どこかで保証されないと書いてあるのを見た記憶があるが、実際は決まった順序だろ? 二次元配列に取り込めば、縦方向が先になるけど。
960 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 06:50:28.76 ] >>958-959 Rangeの取り方しだいかもよ 単純な矩形の領域だと左上から横行って下に行くけど、 不定形の領域を指定するとそうじゃなくなった。 たとえば For Each Cell in Application.Union(Range1,Range2) だとRange1から先に処理するんで、 Range2の方がRange1より左上にあると全体としては左上からじゃなくなる。
961 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 07:16:22.31 ] >>958 おれが見てるのは2010のヘルプだけど、 「For Each...Next ステートメント」の所にある 「コレクション」のリンクにある記載でどう?
962 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:56:18.30 ] そもそもVBAのFor Eachって、順序保障してくれてるものなのか?
963 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 16:53:19.52 ] メモリによるんじゃね
964 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:03:39.50 ] >>950 反論できなくなったので、人格攻撃? 実にわかりやすい。(w
965 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:14:40.58 ] コード4桁の数値プラス "-M" 及び "-W"のシートがあり、それを 新しいブックを作りそこに移動させようとしています。 それでマクロの記録で Sheets(Array("5541-W", "5541-M")).Select Sheets("5541-M").Activate Sheets(Array("5541-W", "5541-M")).Move というのができたんで、それを直して array_string = sc & "-W," & sc & "-M" Sheets(Array(array_string)).Select Sheets(Array(array_string)).Move .Select のところで←インデックスが有効範囲にない というエラーが出ます。 どのように直せば良いんでしょうか?
966 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:54:18.01 ] >>965 それだと、"5541-W,5541-M"になってしまうな。 Array(sc & "-W", sc & "-M") このように、Array関数の個々の引数になっている事が重要かと。
967 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:02:58.70 ] >>966 深夜にお付き合いいただきありがとうございます エラーも直りました。
968 名前:デフォルトの名無しさん [2012/01/27(金) 00:13:20.74 ] ADOで取得したデータ20万件を、65000行単位で複数シートにすべて出力したい場合 "CopyFromRecordset dbRes 65000"という風に書いてループさせているのですが、 2枚目以降の出力になると途端重くなります。 他に高速コピーできる手段はありますか?
969 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 05:26:21.74 ] >>968 画面の書き換え、再計算、イベント、全部切ってる? あとExcel2010に乗り換えれば分割する必要なくなるよ
970 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 08:54:25.58 ] CopyFromRecordsetか忘れたけど、知る限りDBからの貼り付けではそれが一番高速。 その場合、貼り付け行数分ずつの取得になると思う。 答えになってないけど何やったか書いてくれないと答えようがないなぁ
971 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 08:55:24.16 ] 書いてあった!ゴメン!
972 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 09:08:42.04 ] Excel VBAから、ワードを開いて文書を加工するとこまで一気に処理したいです。 @Excel VBAから開いたワード文書についているマクロ呼び出して実行させることは可能でしょうか? Aもし@がだめなら、Excelでワード文書をWordマクロと同じようなことをさせるマクロが可能でしょうか (または、コマンドが詳しく書いてあるサイトを教えてください。 具体的には、以下のWordマクロをエクセルVBAで記述したく。 1.Selection.Paste ・・・エクセルVBAでクリップボードに入れたのを貼り付け 2.Selection.Find.ClearFormatting ・・・文字列AAAAが書いてある行探す With Selection.Find .Text = "value=""AAAA""" : End With Selection.Find.Execute 3.Selection.MoveDown Unit:=wdLine, Count:=7 ・・・文字列AAAAから、先頭行まで削除 Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
973 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 10:55:11.73 ] マクロのブックを外部から開いてマクロを実行する時にコマンドライン引数の様に 引数を渡すのにVBSを使うやり方がありますが、WIN7(32bit)&EXCEL2010の組み合わせでも 可能でしょうか? 可能な場合その時に使うAPIの名前や構造はXP(32bit)と同じでしょうか? もしくは、簡単にコマンドライン引数を受け取るやり方はありますでしょうか? 当方、XPとEXCEL2003しかなく現地作業をしなくてはいけないので情報を御願いします。
974 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 14:20:56.18 ] >>972 できる。 適当にググって見つけたページ: www.simple-sys.com/blog/vbamatome/vbamatome007/
975 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 14:22:21.02 ] >>973 別のBookからパラメータ付きでそのマクロブックのマクロを実行するのでは駄目なの?
976 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 17:16:34.20 ] >>975 レスありがとうございます。 別のマクロブックを用意して、そのブックで外部プログラムからのパラメータを受け取って、 目的のマクロを起動すると言うことでしょうか? 多分、私にはハードルが高そうな感じがします。 VBSに目的のマクロブックを起動するスクリプトを書いて、必要なパラメータを 渡すやり方は何度かやったことがあるので、この方法を採用しようと思ったのですが、 win7とexcel2010を扱ったことがないので質問しました。
977 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 19:34:06.14 ] >>964 検索、再利用、指針≒複数人数での使いまわしの必要条件 議論ですらないから反論なんてあるわけないね ↑これ無視してる都合の良い脳みそだから人格攻撃位されるだろw
978 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:58:23.24 ] >>977 >指針≒複数人数での使いまわしの必要条件 >>934 > て言うか、複数のユーザーとか何回もアホみたいに書いてるが、一人で使う > データベースと言うものの存在も知らないのか? > 例) 自分の蔵書を自分が見るためだけにデータベース化してる奴など。 わざわざ例まで書いてあるのに、アホ過ぎ。
979 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 01:20:13.55 ] >>978 基本複数人数で使う物だけどなw 同じシステムで作るから、名前そのままにしただけだろ で、他に何かいえる事有るの?てか、別に複数人で使わないでも言うってURLまで 貼ってこっちから示してるわけだがw そんなんだからコミュ障言われるんだよ
980 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 08:23:08.58 ] >>979 指摘されたら 「基本」とか、アホ過ぎて議論にもなってない。 > 別に複数人で使わないでも言うってURLまで > 貼ってこっちから示してるわけだがw 示してるレス番書いてみな。
981 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:38:41.07 ] >>980 URLで検索かけろよカスがw
982 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:45:24.08 ] 何だ、やっぱり書けないのか。 想像通りの回答乙。
983 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 19:43:27.31 ] >>982 スレに検索もかけられない奴は何も書き込む権利無いんだ。 残念ながら、コミュ障や園児レベルの馬鹿と認定されてスルーされるのが2ch
984 名前:デフォルトの名無しさん [2012/01/28(土) 19:51:14.84 ] >>983 とその相手の連中 >949がDB板に誘導してるのに それに気付かずなのか無視してるのか知らんが いつまでも板違いの罵り合いをしてるお前さん達全員が コミュ障や園児レベルの馬鹿だと思うよ DB論議やりたきゃそれにふさわしいところで好きなだけやれよ ここでするのはスレ違いだし板違いだ
985 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:45:09.63 ] >>984 エクセルがDBかどうか・・・ まぁDB関連の一覧じゃなくてキチンと誘導すべきだったなw そも単発で書きなぐっただけのお前とコミュニケーション自体取ろうとしてないがなw 無視された=コミュ障なんだな 「お前の中では」
986 名前:984 [2012/01/28(土) 20:57:55.61 ] いや、俺この件について書き込むのは初めてだったんだが・・・ 自分に意見言う奴はみんな同一人物かよ 本物のコミュ障だなお前
987 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:59:27.52 ] >>986 んじゃ、まともに誘導してないのも知らないのに適当に書きなぐってみただけなんだな 屑だなw
988 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:03:55.89 ] >>986 誘導してる奴と同一人物には見えても DBの定義が分からないの馬鹿にされて暴れてる馬鹿とは同一人物認定してないわけだがなw 被害妄想酷過ぎるな まぁsageすら知らんカスは書き込むなよw
989 名前:984 [2012/01/28(土) 21:10:34.37 ] >>987 まず勝手に同一人物認定した事とかの反省は一切無いの? まぁそういう人だからこんなことやってんだろうけど。 で、誘導がまともかどうかは君と俺では見解が違うとしか言いようが無いな。 DB板で自分でスレ立てして好きなだけ語れというつもりだったんだが (多分>>949 もその程度の意図しかなかったと思う) スレ立ててから誘導してほしいなんて ドンだけ甘えんぼさんなんだよw 付き合いきれんわ
990 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:20:51.29 ] >>989 やっぱり同一人物なんじゃねーか DB定義知らん奴と同一人物だとはだれも認識してないと思うが 被害妄想酷過ぎだな それと sageすら知らんカスは書き込むな sageすら知らんカスは書き込むな sageすら知らんカスは書き込むな sageすら知らんカスは書き込むな sageすら知らんカスは書き込むな sageすら知らんカスは書き込むな コミュ障はこんな基本を教えてもらっても全て聞き流すんだよな
991 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:21:39.60 ] >>983 権利とかばかじゃねーの? > スルーされるのが2ch 「 お・前 」 がスルーできてないし (w
992 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:25:16.42 ] >>984 DB板なんかに誘導するなよ、それこそ迷惑だ。 このやり取りをDB議論と思うようなら、ちょっとにちゃんから はなれて世間の常識を取り戻した方がいいぞ。 単に、アホが一人暴れてるだけだろ。
993 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:25:42.99 ] >>991 真性のコミュ障ばかり集まってるなw スレ内検索してから出直して来い、お前の意見に耳を傾ける奴は誰も居ない まともに対応してもらいたいならまず検索を覚えろw これも2ch利用する為のマナーの部類だな
994 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:32:14.86 ] >>992 同意。 上で何度か出てるが「議論ですらない」
995 名前:984 [2012/01/28(土) 21:37:15.69 ] >>990 >やっぱり同一人物なんじゃねーか 意味分からん 俺は949氏じゃない 意見が同じだってのと同一人物だってのは別物だぞ 949氏がDB板へのリンク張ってて、 君らはそっち行くべきだと俺も思ったから984を書いたんだよ。 だから(多分>>949 もその程度の意図しかなかったと思う) って書いただろ 俺が949氏ならこんなこと書かねーよ 被害妄想も大概にしとけ で、sageについてはどうでも良い このスレはsage推奨でもないし、 もうすぐ1000行くスレであげた所でたいした実害も無いからな。 あと、第三者が冷静に見たらsageない事と ここでDB論議してる事とどっちが痛いかは一目瞭然なんで、 目立つようにわざとあげてるってのもある
996 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:40:24.90 ] >>995 「議論ですらない」 議論に見えるなら眼科行けw それと誘導するなら暴れてる馬鹿一人なんだが・・・ DBの定義辞書でひいて張り付けてあるのに、DBスレの一覧に誘導して何になるの?w
997 名前:984 [2012/01/28(土) 21:41:21.65 ] >>992 ごめん、悪かった DB論議として適当かどうかは別として やるんならDB板だろって思ったんだが、 確かにこんなの押し付けられたらDB板の人も気の毒だな
998 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:43:28.19 ] 次スレたてるならIDつけて
999 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:53:12.74 ] >>993 また、スルーできなかったね。 レス番も書けないし、そうやってごまかすしかないもんな。(w まあ、このスレも終わりだ、良かったな。
1000 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:54:36.99 ] >>999 カスの自覚はあったのねw
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。