[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/03 13:58 / Filesize : 194 KB / Number-of Response : 612
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part33



1 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:04:40.64 ]
ExcelのVBAに関する質問スレです

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

前スレ
Excel VBA 質問スレ Part32
toro.2ch.net/test/read.cgi/tech/1381151717/

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

コードが嫌な人はこちらのスレへ
toro.2ch.net/test/read.cgi/tech/1381151995/l50

369 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:27:58.58 ]
>>366
○ XlUp
× X1Up

370 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:37:04.38 ]
デバック

371 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:56:54.39 ]
>>367
○ Value
× Vulue

372 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:58:05.73 ]
>>367
「備考ス」?

373 名前:366 [2014/03/01(土) 02:25:07.81 ]
>>369,>>371
すいません、英語が苦手なもので。

>>372
それは「備考ッス」のタイプミスです。

374 名前:sage [2014/03/01(土) 02:28:01.51 ]
>>369
ありがとうございます。初歩以前のミスしてしまいました。
>>370
すいません。
>>371
間違ったものをコピペしてしまったのが原因です(泣)ありがとうございます。
>>372
オブジェクト名確かに変ですね。備考に直しました。ありがとうございます。

375 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 02:32:30.20 ]
>>373
代わりに(?)フォローしていただきありがとうございます。

376 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:57:19.03 ]
>>365
レスありがとうございます。
現状、i’mfeelinglucky検索で取得ページ移動、表示されているページタイトルとURL取得、
としていたので、VBAもあまり慣れていないため、
クリック動作さえ加えれば問題なくなるかと思ったのですが、難しいものでしょうか。。。

377 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 16:44:08.18 ]
>>365
レスありがとうございます。
現状、i’mfeelinglucky検索で取得ページ移動、表示されているページタイトルとURL取得、
としていたので、VBAもあまり慣れていないため、
クリック動作さえ加えれば問題なくなるかと思ったのですが、難しいものでしょうか。。。



378 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 21:17:15.14 ]
漢字に振られているカタカナのふりがなを一気に平仮名に
変換する方法ありますか?出来ればブックの全シートを一気に。

379 名前:デフォルトの名無しさん [2014/03/01(土) 21:30:56.91 ]
StrConv

380 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:05:09.76 ]
>377

getElementById('rso').getElementsByTagName('a')[0].click
みたいなことVBAでできないのでしょうか。

それを聞いてるんだよと言うのならスマン。

381 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:58:29.98 ]
>>380
できるよ

382 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 18:09:03.96 ]
数十のセル範囲を選択してブック1からブック2へコピペする単純なコマンドを作ろうとしていますが

Workbooks("1.xls").Sheets("Sheet1").Range("a1":"z1").Value = Workbooks("2.xls").Worksheets("Sheet1").Range("a1":"z1").Value

このように書くと数値が極端な桁のマイナスになっていたりエラー値に変化しているセルが発生するのですが
元の数値のセルは =c1 =c2 ・・・といったような単純なセル参照の羅列で数値は小数点入りの正数で計算式やらセルの特殊指定は
一切はいってないので何故化ける箇所が発生するのか謎なのですが 原因は何なのでしょうか?
上記のコマンドに xlPasteValues 値を貼り付けの指定を追加するにはどう書けばいいのでしょうか?

383 名前:382 半分自己解決しました mailto:sage [2014/03/02(日) 18:54:41.58 ]
>>382
よく見直してみますと元セルの セルの書式設定- 表示形式- 数値 の箇所が
homepage3.nifty.com/gakuyu/excel/syosiki2_fig03.gif
小数点ありの負の数値で選ばれていました。
これが原因のようですお騒がせしました
全部が負の数値になっていたらすぐわかるのですがほとんどは正数のままで
所々負の数値に置き換わっているのは謎です

384 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 07:39:32.84 ]
>>382
値の貼り付けでいいならVariant変数に入れてから貼り付けるのが簡単でいいと思う。
たとえば382の例なら

Dim v As Variant
v = Workbooks("2.xls").Worksheets("Sheet1").Range("a1":"z1")
Workbooks("1.xls").Sheets("Sheet1").Range("a1":"z1") = v

こんな感じ
こっちのほうが普通にコピーするより実行速度も速いらしい
ただし、コピーできるのは値のみ、書式とか数式とかは引き継がれない

385 名前:382 mailto:sage [2014/03/03(月) 20:27:40.83 ]
>>384
素晴らしいですね!的確な回答を頂きましてありがとうございます。助かりましたし勉強になりました。

386 名前:384 mailto:sage [2014/03/03(月) 22:19:34.69 ]
>>382
今更だけど、>>382の式はおかしいよ
ブック1("1.xls")からブック2("2.xls")にコピーするなら
「イコールの右」から「イコールの左」に代入するんだから

Workbooks("2.xls").Sheets("Sheet1").Range("a1":"z1").Value = Workbooks("1.xls").sheets("Sheet1").Range("a1":"z1").Value

だよ
>>382は式の右と左が逆)

387 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 23:57:40.67 ]
>>384
それって>>382と同じだよ



388 名前:384 mailto:sage [2014/03/04(火) 00:20:39.61 ]
え、そうなの?
Variantに入れると速いってOfficeTANAKAに書いてあったけど

389 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 07:29:55.48 ]
ネットに書いてあることはすべて真実です

390 名前:デフォルトの名無しさん [2014/03/04(火) 08:07:22.59 ]
>>389
>>387もOfficeTANAKAもどっちも「ネットに書いてあること」なんだが?

391 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 08:25:07.77 ]
>>388
どこのページよ
URL 晒して

392 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 12:53:57.87 ]
>>390
うん、それを皮肉ったつもりなんだけどわからなかった?

393 名前:デフォルトの名無しさん [2014/03/04(火) 20:15:07.96 ]
>>392
うん、それを分かってて茶化したつもりなんだけどわからなかった?

394 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 21:51:23.58 ]
>>393
うん、さすがにそれは無理がありすぎてわからなかった

395 名前:デフォルトの名無しさん [2014/03/04(火) 22:07:20.57 ]
>>394
修行が足りない

396 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 00:20:10.55 ]
>>388
そう同じ
だから速くはならん

397 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 00:13:33.22 ]
入力作業中の100メガぐらい有るブックを任意のタイミングで瞬間的にLAN接続された3台のPCで閲覧できるようにすることは可能でしょうか?
現在VBAで別名で保存した場合1回数十秒 LAN経由で開くと応答無しになるのでそれぞれのローカルへコピーして開くと又数十秒かかり
数台へ配布するのになんだかんだ数分ぐらい時間がかかっています。
閲覧側は見れれば何でも良いです。(Excelブック形式だと尚良い)



398 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 00:35:31.08 ]
>>397
不可能
大量のデータをLAN越しに同時に閲覧したい場合はAccessを使うのが普通

399 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 00:39:25.86 ]
>>397
数式がてんこ盛り盛りならVBAで全部コピーして値だけ張り付けて別名保存する、ぐらいかな
処理にどのくらいの時間がかかるかは知らんけど

数式がほとんどなくてデータだけで重いのなら画像に出力してPDF化かな

400 名前:397 mailto:sage [2014/03/10(月) 00:55:43.48 ]
>>398
>>399
無理っぽいのですね。ありがとうございます。
データてんこ盛りなのでアクセスやSQLなのでしょうかねぇ 使った事ありませんが、、

401 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 01:18:59.92 ]
普通の人は100メガの情報は一度にはみれない
ほんとにそのサイズでやり取りする必要があるのか良く考えた方がいいんじゃね

402 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 06:46:54.06 ]
>>397
ブックの共有じゃダメなの?
そもそも Excel で 100MB って言うのも色々危険な香りがするが...

403 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 06:57:20.42 ]
>>400
文字データだけならCSVで吐いて
閲覧者がブックを開いたら取り込むとかはどうよ

セル書式は予め設定しておいて、不足なら自動書式で
グラフも置いてあるなら範囲を名前定義にして取り込み時に名前定義をちょろっと修正すればいい

>>402
>LAN経由で開くと応答無しになる
に該当するんじゃないの?しないの?

404 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 07:46:59.95 ]
>>403
> に該当するんじゃないの?しないの?

共有ブックはもう少し賢いけど、正直 100MB クラスのブックを共有で使ったこと無いから試してみてくれとしか言いようがない。
共有特有のトラブルもあるし。

405 名前:デフォルトの名無しさん [2014/03/10(月) 22:22:30.84 ]
まー、あんまり無茶な使い方しない方が無難だよね

406 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 22:31:12.02 ]
画像貼りまくりでWORDみたいな使い方をしていると想像
せめてシートごとに分割したほうがいいと思うが
変な規定でもあるんだろう

407 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 22:42:00.56 ]
100MBのファイルコピーするのに数十秒かかるLANってすごいな
それを瞬間的に閲覧するようにできるExcelVBAって万能だな



408 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 10:45:11.04 ]
>>407
100Mbpsで理論値maxでも100MBをコピーするのに10秒程度かかる。
実効値20Mbps位だったらその5倍かかるわけで、100MBのコピーに2,30秒かかる環境があってもおかしくない。

409 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 20:16:20.38 ]
>>408
細かいことだけど100Mbpsなら8秒じゃないの?

410 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 21:30:20.38 ]
>>409
実測してみるとわかるけど、固定IPで他のネット機器をすべて切り離して回線が独占できる状態を作ってやっても
オーバーヘッドがあるから最高でも表示の8割〜9割ぐらいの速度になる

実用に使ってる環境だともっと遅くなる

411 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 21:44:28.36 ]
>>409
細かい事をいうなら
ネットワーク回線を流れてるのはデータだけじゃない
実データの1バイトが8ビットの情報として流れているとは限らない

412 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 21:47:49.12 ]
でも論理値maxでって言ってるじゃん

413 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 22:23:55.06 ]
理論値なんて一番速い時の値だから、無線 LAN なんて理論的にも絶対その値は出ないしな。

414 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 22:41:58.20 ]
理論値にはいろんな取り方があるからな
ファイル転送の理論値マックスは回線上の理論値マックスからいろんな層のオーバーヘッド分下がるのが当然

415 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 18:19:11.62 ID:wdy6oLTC]
VBA初心者ですが
VBAの命令だけを書いた空のブックと、
分析したいデータが書かれたブックを分離して運用することは可能なのでしょうか?

現状データの書かれたブックが数十に同一処理をさすためにそれぞれにVBAを記述していますが
処理方法を変更する場合全ブックの同じVBAコードを書き換えていて手間がかかっています。
ならば空のVBAだけを書いたブックを1つ動かしておけば済むのではと思ったのですが
ここにいらっしゃるプロの方はどうされているのでしょうか?

416 名前:415 mailto:sage [2014/03/15(土) 18:22:17.82 ID:wdy6oLTC]
>>415
又、空のブックで運用ができるのであればよく使う命令を個別にモジュール化して連携やネストさせるような運用方法も可能なのでしょうか?
これができるとなるとデータの書かれているシートにVBAを書くのは大量のブックを処理する場合は非合理的かと思いましたがどうでしょうか?

417 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 18:34:24.97 ID:IpiW3W82]
>>415
> 分離して運用することは可能なのでしょうか?

可能

Excel アドイン 作成 とかでググると幸せになれるかも



418 名前:415 mailto:sage [2014/03/15(土) 18:47:05.31 ID:46w16LKJ]
>>417
アドイン、、こんな便利な物があったのですね。ありがとうございます。
大幅な合理化が図れそうです

419 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 04:12:41.18 ID:NI0yZz+J]
以前こちらでマクロを作っていただき、とても重宝して使わせていただいていたのですが
少し仕様の変更が出てきてしまったため、再度作成か手直しをしていただきたいのですが
お願いできますでしょうか。

以下のマクロで月初から月末の所を、月初から翌月の3日までにしたいのです。
どうか宜しくお願い致します。

420 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 04:15:10.22 ID:NI0yZz+J]
Sub SheetCopy()

Dim firstDay As Date
Dim lastDay As Date
Dim targetDay As Date
On Error GoTo Error_Handler

With ThisWorkbook

'月初日を取得
firstDay = .Sheets("1日").Range("B1").Value
'月末日を取得
lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0)

421 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 04:18:35.64 ID:NI0yZz+J]
'月初日のシートは既に存在しているので、
'先にシート名とシート色を設定してしまう。
'.Sheets(Sheet1.Name).Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日")
If Not .Sheets("祝日").Cells.Find(firstDay, LookAt:=xlWhole) Is Nothing Or _
Weekday(firstDay) = vbSunday Then
.Sheets("1日").Tab.ColorIndex = 3
End If

422 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 13:25:21.94 ID:vj1XNX0y]
>>419-421
これコードの一部分だけだよね?
月末日を保持しているであろう変数"lastDay"をどこで使うのか分からないけど、
(ここに貼られている範囲では月末日を取得してるだけでそれを使用していない)

lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0)



lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 3)

に変更するだけで翌月3日までにはなる。
ただし、それをどのように利用するのかはこのコード以外の部分に書いてあるので
単純にこれだけでそのコード全体が正常に(あなたの意図した通りに)動くかどうかは分からない。

423 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 22:24:00.94 ID:iQzGYjkh]
>>422
やる気のないやつに解釈垂れても意味ないぞ。
そんな解釈より動くコードしか興味ないからコード書けって言ってるんだから。

424 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 23:26:36.86 ID:vj1XNX0y]
>>423
いや、別にどんな相手でも良いっすよ
こっちが好き勝手に書いてるだけだし。

ところで、垂れるのは解釈じゃなくて講釈ですね。

425 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 00:01:33.11 ID:YCsGrVX8]
すみません419です。
昨日はなぜかエラーが出たあと、バイさるになったまま書き込みができなくなり
続きのコードを貼る事が出来ませんでした。

このあとの続きのコードは、シート名の指定と日祝の色指定のコードになっているのですが
シート名を1日、2日、3日、となるように指定しているため、これだと翌月の3日分が重複してしまうためか
422さんの仰るMonth(firstDay) + 1, 3では、エラーになってしまい上手くいきませんでした。

要は、月初から翌月の3日までのシートを作りたく、その際、日祝を赤字にし
尚且つ各シートのB1セルに○月○日と表示したものを作りたいのですが
何か上手くいく方法はありますでしょうか。
よろしくお願い致します。

426 名前:422 mailto:sage [2014/03/18(火) 00:51:31.95 ID:Riw4xitA]
>>425
シート名に月も入れるとか翌月の3日分のシート名に翌月って付け加えるとか、
やりようはそれなりに有るんでないかい?

その程度の修正は元のコードさえ曝せば
このスレの人達なら簡単に出来るだろうけど、
肝心のコードが無けりゃ誰にもどうにもなんないよね。

ちなみに俺は寝るんで今日はもう出来ないです。

427 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 01:11:58.51 ID:YCsGrVX8]
>>426
早速のレスありがとうございます!
修正でも新規に作成でも、作っていただけるのなら
どちらでも大変嬉しいのですが、一応続きのコードを晒しておきますので
お時間のある時に、どうか宜しくお願い致します!

因みにシート名は、1日、2日、3日、、、としたいため
翌月3日分は「翌月」と付け加える方向でお願いしたいと思います。



428 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 01:13:33.38 ID:YCsGrVX8]
'ひと月分のシートをコピーし、
'シート名、シート色の設定を行う。
For targetDay = lastDay To firstDay + 1 Step -1
.Sheets("1日").Copy After:=Sheets("1日")
.ActiveSheet.Tab.ColorIndex = xlNone
.ActiveSheet.Range("B1").Value = targetDay
.ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日")
If Not .Sheets("祝日").Cells.Find(targetDay, LookAt:=xlWhole) Is Nothing Or _
Weekday(targetDay) = vbSunday Then
.ActiveSheet.Tab.ColorIndex = 3
End If
Next

End With

Exit Sub

Error_Handler:

'例外時はエラー内容を表示する。
MsgBox Error

End Sub

429 名前:422 mailto:sage [2014/03/18(火) 08:56:33.08 ID:Riw4xitA]
>>428
こんな事言っちゃなんだけど、>>419-421の時点で薄々感じてたとおり
やっぱり糞コードだったw(気を悪くしたらゴメンネ)

いろいろ突っ込みどころ満載なんだけど、とりあえずこのままやるんだったら
例えば>>428

.ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日")



If Month(targetDay) = Month(firstDay) Then
.ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日")
Else
.ActiveSheet.Name = "翌月" & Format(ActiveSheet.Range("B1").Value, "d日")
End If

に変更するととりあえず動くよ。

根本的にコード全体を書き直したほうが尚更良いとは思うけど、
そういうのは俺みたいなアマチュアじゃなくて
お金を払って誰かきちんとしたプロに頼むような話になるんじゃないかな。

430 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 00:24:00.84 ID:mInA5lgN]
実行中のマクロを停止させたいときにはESCか、Ctrl+PauseもしくはCtrl+Breakとのことですが、
両者に違いはあるのでしょうか?また、どれを試しても停止しない場合の対応策ってあるんですか?

431 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 12:27:01.03 ID:KuNBiX6y]
>>430
ぐぐったらこんなん出てきた

detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1149563081

まぁ、なんで動作が違うのかは読んでも分からんかったけど。

あと、ESCとかで停まんないときは
おいらはしょうがないからタスクマネージャからエクセルごと停止させてる

432 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 16:33:15.72 ID:e3FYqT1N]
1万行×5列 の生データを元に、1万行×100列の中間データをひとまず作成し、
その後、中間データを諸々の処理に使う。
今は、VBAで中間データを計算させている。中間データはワークシート関数で計算させることもできる。
今のように中間データはVBAで計算させるのがいいのか、
それとも中間データはワークシート上で計算させVBAで計算結果を読み込んでその後の処理を行うのがよいのか?

433 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 19:49:34.25 ID:OpDSuCZS]
善し悪しの判断基準が曖昧だよ。

ブックの動作の軽さを求めるならVBAで処理して
セルには値だけを入れるほうが良いけど、
セルに数式を入れてあればどういう処理をしているのか目で見て確認できる。

これはVBAが分からない人を相手にする時には結構重要なことで
俺も勤務先で自分で使うブックはVBA使いまくりだけど
マクロ知らない上司に提出するものは出来る限りマクロを使わずに処理してる。

というか「マクロ使ったものは何をやってるか分からないから信用できない」
といわれて提出できない。

434 名前:432 mailto:sage [2014/03/29(土) 21:33:41.21 ID:e3FYqT1N]
>>433
このブックは私だけが使うものです。重視したいのはマクロが高速であるかどうかということ。
VBAの高速化に関するウェブページを読むと、
コーディングの方法によりマクロ終了までの時間が大きく変わり、
又、worksheetFunctionは比較的高速であるとの情報もありました。
そこで、下手にVBAで全部処理させるよりもワークシート関数で計算できるところはワークシートで処理させるほうが
今より早くなるのかなと思ったわけです(VBAは独学のためあまり自信がないのです)。
ちなみに、生データは1日に1行ずつ増えます。処理は毎日実行します(会社休日は実行しない)。

435 名前:433 mailto:sage [2014/03/29(土) 23:51:13.09 ID:OpDSuCZS]
>>434
あぁ、どっちみちVBA自体は使う前提で、
VBAのコード中でワークシート関数を使うかべきかどうかって話だったのね
そんなの好きにしたら良いじゃん
ワークシート関数使った場合と使わない場合を両方試して
速いほう使ったらいいんじゃないの

436 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 00:25:58.15 ID:v4CA15kT]
大量のデータをブックに貯めこむんじゃなくデータベースに入れてエクセルは
必要なデータだけ持ってきて計算にのみ使ったほうが良いんじゃないかい

ま、1万行くらいなら大丈夫ではあるんだろうけど

437 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 00:31:57.51 ID:4kZGo4f6]
VBA使う前提ではないんじゃない
VBA使うか、ワークシート関数でゴリゴリやるか、どっちかが早いかって話なんじゃ?
全部再計算させて、中間結果必要ないなら、多分VBAでやった方が早くできると思うけど
それなりにVBAがちゃんと使えるなら、って前提だが
まあ今時のスペックなら1万×5ぐらいならワークシートでも気にするほどではないと思うが



438 名前:432 mailto:sage [2014/03/30(日) 01:17:55.49 ID:hXPzlqPD]
>>435-437
レスありがとうございます。どちらにしてもVBAは使います。
今VBAで行っている計算の一部をワークシート関数で置き換えるべきかを検討中なのです。
VBA高速化関連のページは一通り目を通して以前に比べれば格段に早くなったのですが、
それでも数時間かかる処理もあって更なる高速化を目指しているところなのです。
一概には言えないようなので時間を測定してみます。
データの持ち方についてもいい方法を模索しています。ありがとうございました。

439 名前:デフォルトの名無しさん [2014/03/31(月) 00:10:35.50 ID:ymkB1Ks5]
すみません、質問です

Formula1:="=IF(A2="""",A2,INDIRECT(A2))"

A2の部分をを cells(1,2)という形で指定できないでしょうか?

やりたいことはプログラムのループでA2を
B2,B3と変えたりしたいのです、アドバイスお願いします

440 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 00:57:57.69 ID:+/Q0rb5y]
>>439
B2、B3・・・としたいなら

For b = 2 to 9
  (略) Formula1:="=IF(A2="""",A2,B" & b & ")"
Next

みたいにすればB2〜B9になる

本筋とは関係ないけどIFでA2が""の時A2を返すのってなんか無駄っぽい

441 名前:デフォルトの名無しさん [2014/03/31(月) 01:05:38.55 ID:ymkB1Ks5]
>>440さん

アドバイス頂き有難うございます。

もうひとつ質問させて頂きたいのですが、

Bという位置が不定の位置なので変数で値を決めたいのですが可能でしょうか?

お手数をおかけして申し訳ございません。

442 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 01:15:24.40 ID:+/Q0rb5y]
>>441
文字列型の変数に入れて
Retsu = "B"

こうする
(略) Formula1:="=IF(A2="""",A2," Retsu & b & ")"

B列以外だとbって変数名は不適切かな

443 名前:デフォルトの名無しさん [2014/03/31(月) 01:22:00.80 ID:ymkB1Ks5]
>>442さん

何度もアドバイス頂き有難うございます。

夜遅いのにご返事有難うございました。

今、エクセルを試す環境がないので明日試してみます。

また、質問があったら相談させて頂きます。

444 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 01:55:50.99 ID:nFhjZp0H]
>>438
処理に数時間もかかるの?
それなら、変わらない部分をメモ化すれば?

1日に1行ずつ増えるんでしょ?
前日までの行が変わらないなら、
その結果をファイルに書いておけばよい

出来れば、毎回する同じ計算を避ける(メモ化)

445 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 15:01:50.77 ID:Ial2Eqsw]
>>444
いや、そういうことするより、まず何にどれだけ時間がかかってるか計測するのが先。

446 名前:デフォルトの名無しさん [2014/03/31(月) 16:48:16.50 ID:3GCmwtHU]
エクセルで256×256のセルに数字が入っている状態で
BMPの画像を作るにはどうしたらいいでしょうか?プログラミングの技術が
ないと不可能でしょうか?

447 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 17:05:56.79 ID:r3mdI7xZ]
C言語でBMP作るのは、そういうのがあるってことは知ってる。それと同じことをvbaでやりたいってことなら
(それがvbaで出来るかどうかは知らんけど)当然
>プログラミングの技術がないと不可能
じゃないの?



448 名前:デフォルトの名無しさん [2014/03/31(月) 18:23:52.03 ID:L50LbWDs]
そうですよね・・・
自分には敷居が高そうなので諦めます。すみません

449 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 18:28:43.68 ID:8V+7Or/W]
はい敷居きた

450 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 18:31:32.29 ID:Ial2Eqsw]
>>448
「セルに数字」じゃなくて実際に色を付けて、セルの幅と高さを1:1に保って小さくして、枠線を消して
クリップボードにコピーして、BMPで書き出せば?

451 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 20:37:19.25 ID:S+MvAbw+]
図としてコピー
あれVBAからつかえんの?

452 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 01:26:03.72 ID:5tQShRLT]
三項演算子とか連想配列を最近知ったものですが
上記のような便利機能が他にも紹介されてるサイトってないですか

453 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 00:30:48.39 ID:+8s/Qgvh]
If Not IsNumeric(data) Then

ElseIf (data > 0) Then

ElseIf (data < 0) Then

Else

End If

数値か文字として渡されるdataの判定を上記のようにしたんですけど、
冗長なのでSelect Caseにしたいです。どうしたら良いですか?

454 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 00:53:09.51 ID:9+cif8YO]
>>453
Sgn

455 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 01:25:50.89 ID:+8s/Qgvh]
>>454
おお、ありがとうございました!

456 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 19:04:50.32 ID:zCQPlUhY]
ちょっとズレるけど
ここのセミナーってどうなの?
ステマとかじゃなく純粋に気になった
ttp://sugoikaizen.com/

457 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 19:07:13.30 ID:Crk62Mwa]
>>456
すごくおすすめだよ
行っておいでw



458 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 20:05:46.77 ID:eYN2DOjD]
VBAをVBE以外で書きたいんですけれども、誰かVBE以外のエディターで開発されてる方いますか?
いる方は、何をお使いになってますか?

VBEで以下の不満があり、関数のアウトライン機能がないこと、列挙体変数をTabで選択せずそのまま入力するとその入力された変数名に変更されてしまうなどがあり、困ってます

459 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 20:06:57.56 ID:FLwMWrjy]
dir を使って、配列にいれたファイルをチェックするマクロを作りたいのですが、
「インデックスが有効範囲にありません」というエラーがでてしまって困っています。

Sub チェック()

Const Target As String = "C:\Users\user\Desktop\格納\"

Dim tmp() As String
tmp = Split("Scr14", "Scr16")

For i = 1 To 2
If Dir(Target & tmp(i) & ".txt") <> "" Then '←エラーの出る場所(tmp部分)
Else
MsgBox tmp(i) & vbCrLf & "が存在しません"

End If

Next
MsgBox "確認できました"

End Sub


Dirに配列を使ってチェックするのは無理なのでしょうか?ご教授願います。

460 名前:デフォルトの名無しさん [2014/04/20(日) 20:12:33.50 ID:I6Nwishv]
>>459
配列のアクセスに関するエラーだからDirは関係ないかな
Split("Scr14", "Scr16")は、Split("Scr14,Scr16", ",")の間違いだとして、
tmpは
tmp(0) = "Scr14"
tmp(1) = "Scr16"
こうなってる

なんで、ループは0 To 1にしなきゃいけない

461 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 20:26:26.65 ID:FLwMWrjy]
>>460
回答ありがとうございます。

配列に関しても理解が足りてなかったようです。

単純に文字の配列を作りたいだけなので、

Dim tmp() As String = {"Scr14", "Scr16"}

のようにしたいのですが、 = のところで、コンパイルエラーが出てしまいます。(修正候補:ステートメントの最後)

どのように修正したら良いでしょうか。

462 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 20:36:06.91 ID:kzevG+UG]
>>461
VBAではVBみたいな書き方はできない

Dim tmp
tmp = Array("Scr14", "Scr16")

463 名前:デフォルトの名無しさん [2014/04/20(日) 20:36:17.19 ID:I6Nwishv]
>>461
VBAでは変数は宣言時に初期化できないので、これで

Dim tmp(1) As String
tmp(0) = "Scr14"
tmp(1) = "Scr16"

Variantでよければ
Dim tmp
tmp = Array("Scr14", "Scr16")

464 名前:alchemist ◆IOGp1zS1sA mailto:sage [2014/04/20(日) 20:41:04.41 ID:FLwMWrjy]
>>462
>>463

ありがとうございました。成功しました。

465 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 11:33:23.29 ID:/2+x+Vgo]
Excel VBAでpowershellを実行し、その結果を取り込みたいと考えています。
powershellで実行したいのは以下のコードです。

$drive = Get-WmiObject -Class Win32_LogicalDisk | where-object {$_.deviceid -eq 'Y:'};$drive.providername

txtファイルに出力してから取り込めばうまくいくことは分かるのですが、できればtxtファイルを経由せず、直接取り込みたいです。
直接取り込む方法があれば、ご教示いただけないでしょうか。

466 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 11:50:34.55 ID:HGvdUff0]
tech.guitarrapc.com/entry/2013/07/19/200702
のサイトで見ただけなんでそれが出来るのかどうかは知らないけど

結果をクリップボードに送り込めるなら、後はそのデータをapiを使うなりDataObjectオブジェクトを使うなりで
クリップボードから取り出せる

467 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 12:31:02.08 ID:ZM+hJQpr]
>>465
ほい
PowerShellの出力をワートシートのA列に取り込むサンプル

' OpenProcess
Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Const SYNCHRONIZE = &H100000
' WaitForSingleObject
Declare PtrSafe Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Const WAIT_OBJECT_0 = &H0
' CloseHandle
Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Sub sample2()
  Dim hProcess As Long, lret As Long
    
  lret = Shell("powershell ""Get-WmiObject -Class Win32_LogicalDisk|Clip""", vbHide)
  hProcess = OpenProcess(SYNCHRONIZE, 0, lret)
  Do Until WaitForSingleObject(hProcess, 100) = WAIT_OBJECT_0
    DoEvents
  Loop
  lret = CloseHandle(hProcess)
    
  Cells(1, 1).Select
  ActiveSheet.Paste
End Sub



468 名前:465 mailto:sage [2014/04/23(水) 15:48:54.72 ID:05nonx0d]
>>466
>>467
返信ありがとうございます。

>>467
試したのですが、ネットワークドライブのリモート名に日本語が含まれている場合は?に化けてしまい、うまく回らない状況です。
(含まれていない場合はうまくいったのですが)

469 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 18:28:55.92 ID:ZM+hJQpr]
>>468
Shell("powershell ""$OutputEncoding = [console]::OutputEncoding;ほげほげ

470 名前:465 mailto:sage [2014/04/25(金) 00:24:01.06 ID:dAeKMCVg]
>>469
返信ありがとうございます。


>>467
Declareのところだけ既に同名の宣言をしてあったのでそれを活かす形式にし(何故かPtrSafeがうまくいかなかった)、
$OutputEncoding =〜も使わせていただいたところ、
今のところ問題なく回っています。

皆さんご協力ありがとうございました。
助かりました。

471 名前:デフォルトの名無しさん mailto:sage [2014/04/25(金) 00:48:38.11 ID:97MfQF5y]
>>470
PtrSafeは64bit環境

472 名前:デフォルトの名無しさん mailto:sage [2014/04/25(金) 19:43:27.59 ID:IKtZUAxC]
お願いします
シート名「uriae」の
F2に入っている関数をF列の下へ向かってオートフィル
で関数をコピーしていくVBAをお願いします。
関数のコピーは、同じシートのA列に文字が入力されているので
A列の文字が入力されている最終行までコピーしたいと思います。

473 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 01:31:25.36 ID:w0bO41GV]
>>472
ここは質問スレであって作ってくれる場所じゃないから
まずは自分でどうやろうとしたかを書いてみればいいと思うんだ

474 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 01:08:06.58 ID:Z51g+zsH]
うりあえ?

475 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 00:35:51.93 ID:UkI77+Fd]
すみません、初めてVBAを作っているのですが詰まってしまいました。

<やりたいこと>
・セルに商品NOを入力して、そのセルがロストフォーカスしたタイミングで、
入力された商品NOで別シートの商品表から、商品名をもってきたい。
<困っていること>
"Worksheet_Change"イベントを使用して、ロストフォーカスのイベントを
拾うことはできたが、ロストフォーカス前に選択されていたセルの内容を
拾えない。
(ActiveCell.Valueで取得しようとしたが、ロストフォーカス後に選択された
セルの内容を取得してしまう。)

もしよい方法があれば、ご教授いただけませんでしょうか。

476 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 01:55:30.65 ID:uFaF33P2]
>>475
SelectionChangeイベントで、カーソルが動くたびにセルの座標をいちいち独自の履歴に溜めていく

だけど普通は商品NOが確定すると同時にChangeイベントで商品名をセットするもんだよ
ワンテンポ遅らせる理由がわからない
初心者ならなおさらセオリー通りにやった方がいい
さらに言えば、商品名をセットする程度の処理ならVBAを使うまでもなくVLOOKUPとかで可能だし

477 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 04:35:04.82 ID:UkI77+Fd]
>>476
vlookupなんていう関数あったんですね・・・
これで解決できそうです!
ありがとうございました!



478 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 18:42:40.78 ID:AK1zskjW]
Excel2013です。複数のページからクエリでデータを取得したいです。

Sheet1のA列から下へ取得したい先のURLが入力されていて、クエリでデータを取得し、新しいシートA1に貼り付けする。
Sheet1のA列のセルが空白になれば処理を終了する。

VBAでクエリを実行する事が出来る所までは出来たのですが、上記の様にしたいのですが知識が乏しく躓いています。

今、出来ているのは下記になります。

Sub クエリ抽出 ()

With ActiveSheet.QueryTables.Add(Connection:= _
"url;取得データがあるURL", _
Destination:=Range("A1"))
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "1"
.Refresh BackgroundQuery:=False

End With

End Sub

宜しくお願いします。

479 名前:デフォルトの名無しさん [2014/05/11(日) 20:01:24.57 ID:0QNYDm24]
申し訳ない、このスレの趣旨とはズレてると思うんだけど、総合スレ的なものがどこにあるか分からないから聞かせてほしい。
参照元のないセルにデータ(数式ではない)を入力したときに循環参照のエラーが出てしまうんだけど、EXCEL 2010にはそういうバグがありますか?
参照先のセルを見てもさっぱり原因がわからなくて困ってます。
周辺のセルはオートフィルで埋めてるので数式は大差ないのに、ある一つのセルだけどうしてもエラーになってしまいます。

480 名前:デフォルトの名無しさん mailto:sage [2014/05/11(日) 20:34:18.27 ID:9n+Ded1d]
総合スレならビジネスsoftの方に

Excel総合相談所 113
toro.2ch.net/test/read.cgi/bsoft/1398901813/l50

ってのがあるけど

481 名前:デフォルトの名無しさん mailto:sage [2014/05/11(日) 20:39:46.70 ID:0QNYDm24]
>>480
ありがとうございます。そちらで質問させていただきます。

482 名前:デフォルトの名無しさん [2014/05/11(日) 21:08:18.06 ID:valH51XC]
WordVBAスレがないんでここで質問させてください

フォルダに画像がたくさんあります。
これをWord文書の1ページに1枚貼り付けたいです。
貼り付け方は左上に合わすだけでいいのでたぶんそんなに設定はしなくていいんじゃないかな。
貼り付け方も行内でも四角でもどちらでも変わらないと思うし。
でも今後の発展のため仮に画面の中央のどまんなかにあわせ、挿入方法は「四角」だとどうなるでしょう?
幅・高さは、どちらかが外周に接するところまでひきのばし/縮めるとします。縦横比はオリジナルと同じにして。

ExcelVBAからでもCreateObject("Word.Application")みたい感じでWordを操ることができると思うのでお願いいたします。

483 名前:デフォルトの名無しさん [2014/05/11(日) 21:09:51.81 ID:valH51XC]
まあ画像のフルパス("C:\Users\USER\Desktop\pic01.jpg")みたいなのを
Excelのセルにあらかじめ書き込んでるとしましょう。

484 名前:デフォルトの名無しさん [2014/05/12(月) 01:23:50.26 ID:DXQGbXMr]
質問です。
VBAの講習を受講して思ったが、簡単な実務に生かすために、短時間で習得するための方法。
これあってますか?
★マクロを組んで、マクロで処理できない条件処理の構文を追加することを覚えることが、
一番楽で簡単なエクセル処理には向いてますか?
それとも、すべて手打ちすることを覚えるほうが、かなり有用ですか?


状況
簡単なマクロ等の自動処理がしたい。
スキルは、VBAの勉強は講習で30時間ほど。まったく身につかなかった。
関数等は普通に使える。

485 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 11:17:08.22 ID:tYXPKjS8]
今の自分が必要とするもの…で無い限りモチベーションに苦労しないか?
実務に活かす事が目的なら今の仕事を自動化するにはどうればいいかを考えれば良いと思う

>すべて手打ちすることを覚えるほうが
ってのが何を言ってるのかわかんないけど。

486 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 13:02:48.27 ID:OiSoC7y/]
マクロの記録と手書きで違うものだと思ってるのかな

487 名前:デフォルトの名無しさん [2014/05/12(月) 22:03:47.06 ID:1mlAXgHL]
マクロ自動記録で出来る事できない事は把握してるようだけど。。。
要は「簡単なマクロ等の〜」簡単がどこまでかでしょう。
最初はきちんと教えてもらった方がいい。
観念的だが、ゼロ→1は難しく1→2は比較来容易



488 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 02:43:20.87 ID:/l0lTNTz]
俺にはこの人の文章が理解できないが
30時間も講習うけてまったく身につかなかった人だぞ
うける講習まちがってるか、絶望的に向いてない人かどっちかだ

489 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 11:32:08.29 ID:VmzA9yq/]
>>484の★部分の意訳

マクロの自動記録をして
自動記録では処理が出来ない条件分岐等をVBAで追加するという方法が、
エクセルでの処理の自動化には有効ですか?

それとも、自動記録に頼らず、
全てVBAで記述することを覚えたほうが良いでしょうか?

ということだと思う。

俺なりの回答としては、自動記録を使おうが使うまいが
VBAの基本的な知識はどっちみち必要だし是非覚えるべき。

VBAで出来て自動記録で出来ないことはたくさん有るけど
自動記録で出来てVBAで出来ないことはない。

もちろん、自動記録で出来ることならVBA使わずにやったって構わないし、
自動記録で記録したほうがコード手書きするより早い場合もある。

でも、VBAを知ってないと
やりたい作業を自動記録でやるのとVBAでやるのと
どっちが楽かとか判断できない。

490 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 12:55:48.39 ID:V6Rb20LO]
再利用性とか考えると、シートからのデータ抽出、主処理、処理結果の反映って作りになる
だからマクロの記憶はベースとなるものではなく、Excelオブジェクトの操作方法を調べる時ぐらいしか使わない

491 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 16:35:43.02 ID:JkOdWH0g]
Sub A()
Range("D11").Select
Selection.End(xlDown).Columns("H").Select
ActiveCell.FormulaR1C1 = "1"
End Sub

(H列,Dの最終行)に1を入れたいんですが(K列,Dの最終行)になってしまいます。
どうすればいいんでしょうか。

492 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 16:49:49.69 ID:VmzA9yq/]
Selection.End(xlDown).Columns("H").Select

ってところが問題
これだとSelectionが"D11"で、.End(xlDown)がそこからの最終行(つまりD列の最終行)となるんだけど、
次の.Columns("H").Selectはそこを1列目(A列)として右に8列目(H列)
(つまりD列の7列右でK列)を選択している。
解決方法はまぁとりあえず.Columns("E").Select とか .Columns(5).Selectにしたり、
列の指定と行の指定を別々にやったり色々ある

493 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 18:00:38.46 ID:JkOdWH0g]
Hの文字を内部に使いたいんですがその場合はどういう方法がいいでしょうか

494 名前:デフォルトの名無しさん [2014/05/13(火) 18:51:25.04 ID:r+9o8GUq]
あるセル範囲 (行も列も複数ある) の値を配列変数に入れるには、どういう方法が一般的ですか?
行と列の二次元だけれど、配列は1次元とします。(順番はどうでもいい。セル範囲のセル数が要素数となる。)

495 名前:デフォルトの名無しさん [2014/05/13(火) 18:52:46.12 ID:r+9o8GUq]
ついでに空白セルがあった場合はそのセルは無視します。

496 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 19:01:16.72 ID:VmzA9yq/]
>>493
列と行を別々に指定する。

つまり、列はH列で決まってるわけだから
Cells(Selection.End(xlDown).Row, "H").Select
とかでいいじゃん。

Selection.End(xlDown).Row
で、Selection(つまり"D11")から下に探した行を取得して、それを指定
列はそのまま"H"でH列を指定
ということ

497 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 19:08:16.70 ID:JkOdWH0g]
>>496
ありがとうございます



498 名前:487 [2014/05/13(火) 21:08:23.50 ID:wn45zDPA]
>>488
すまん、30分と間違えた

499 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 21:32:17.40 ID:ph3+WM+5]
30分www
まぁ手書きで

500 名前:デフォルトの名無しさん mailto:sage [2014/05/14(水) 15:02:32.44 ID:CuHF+7gT]
何方か>>478をお願いします。
検索してみたら、同じ様な事をしたい人が居たのですが、解決には至っていませんでした。
どうか、宜しくお願いします。

501 名前:デフォルトの名無しさん mailto:sage [2014/05/14(水) 17:08:56.86 ID:ZCY9UWx+]
>>500
実行するたびにシートが増えるが、そこはどうにかしろ。

Sub foo()
  Dim r As Range
  Dim sheet As Worksheet

  For Each r In Range("A1").CurrentRegion
    Set sheet = Worksheets.Add
    クエリ抽出 sheet, r.Value
Next
End Sub

Sub クエリ抽出(ByRef sheet As Worksheet, ByVal url As String)
  With sheet.QueryTables.Add(Connection:= _
    "url;" & url, _
    Destination:=sheet.Range("A1"))
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = "1"
    .Refresh BackgroundQuery:=False
  End With
End Sub

502 名前:500 mailto:sage [2014/05/15(木) 01:25:42.71 ID:Gz+0SdGV]
>>501
ありがとうございます。
今夜、早速試してみます。

503 名前:デフォルトの名無しさん [2014/05/17(土) 08:01:53.07 ID:nXU1UeAN]
2次元配列の要素の数を調べるにはどうすればいいですか?
普通のはUBoundでいけるけど、2次元だと詰んでる。

504 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 08:07:13.92 ID:bGHl19aa]
それぐらいぐぐれよw

505 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 08:10:05.17 ID:q+MS9gLN]
ヘルプで十分

506 名前:500 mailto:sage [2014/05/17(土) 09:11:27.80 ID:kSvc6BWF]
>>501
実際に動作を確認しました。
シートが一枚一枚、増えるのはこちらの希望通りで、問題ありません。
期待していた通りになってくれました。大変助かりました。
重々、お礼申し上げます。ありがとうございました。

507 名前:デフォルトの名無しさん [2014/05/17(土) 18:55:01.51 ID:nXU1UeAN]
じゃあ
2次元配列の要素数を動的にして
あとでReDimで変更するにはどうしたらいいですか?
2つのうち両方とも変更したいです。



508 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 19:03:56.16 ID:q+MS9gLN]
>>507
そんなもん自分でやってみりゃいいじゃん
なんでもかんでも聞くなよ

Sub test()
  Dim a()
  ReDim a(3, 3)
  ReDim a(5, 5)
End Sub

さあ、どうなった?

509 名前:デフォルトの名無しさん [2014/05/17(土) 19:54:30.60 ID:nXU1UeAN]
>>508
あれ、できるじゃないか。
おかしいな。
2次元動的配列は、最終の2次元目のみ要素数を変更できると書いてあったのに。

510 名前:デフォルトの名無しさん [2014/05/17(土) 19:57:07.95 ID:nXU1UeAN]
実際こうしたらエラーが出たぞ。

Sub test2()
Dim a() As String
ReDim a(3, 3)
ReDim Preserve a(5, 5)
End Sub

511 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 20:48:25.73 ID:q+MS9gLN]
>>510
ヘルプぐらい読め
ていうかまず一番にヘルプを読め
ヘルプでわからなかったらググれ
それでもわからなかったら人に聞け

512 名前:デフォルトの名無しさん [2014/05/17(土) 21:35:47.99 ID:nXU1UeAN]
ヘルプ見つからず、検索出てこず、ここで人に聞いても回答なし。
詰んでる。

513 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 21:43:18.79 ID:E1N9nGHa]
PreserveなしのRedimは次元数も要素数も変更できる
Preserve付きのRedimは次元数は変更できず、最後の次元の要素数のみ変更できる

514 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 22:28:57.78 ID:q+MS9gLN]
>>512
Excelが入っててヘルプが入ってないわけないだろ

515 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 22:40:38.76 ID:bGHl19aa]
これすら見つけられなかった?
Redimステートメント
msdn.microsoft.com/ja-jp/library/w8k3cys2.aspx

516 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 22:42:59.11 ID:bGHl19aa]
VS2013?間違えた

517 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 23:06:02.53 ID:q+MS9gLN]
msdnだと日本語のリファレンスが見つからないんだよなあ (VBはあるけどVBAが見あたらない)
msdn.microsoft.com/en-us/library/gg251578%28v=office.15%29.aspx

探し方が悪い気もするんだけど、ようわからん



518 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 11:25:50.87 ID:f0QDfVej]
正直、ヘルプMSDNとかよりもググって誰かの書いた説明の方が
わかりやすいと思ってしまう俺はド素人なんだろうな。

519 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 11:52:19.34 ID:rUx0aG1K]
とりあえず動けばいいレベルのマクロを作るだけなら何を参考にしてもいい
想定外の動作をしてバグか仕様か自分の勘違いかわからない時は、結局はmsdnやヘルプを確認するしかない時もある

もちろん公式文書にも間違いはあるので注意が必要だけど、>>510みたいにヘルプにちゃんと書いてあることを
あたかも大発見みたいに書かれると萎える

520 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 16:00:29.34 ID:1/it3LsY]
>>518
英語力の問題では?

521 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 16:47:32.55 ID:0bx4PTQ0]
>>518
ヘルプやMSDNがわかりやすいと思ったら、だれもそんな解説書かないだろ
ヘルプみてわけわからんなら解説探せばいいけど、公式情報みるのは最低限必要

522 名前:デフォルトの名無しさん [2014/05/18(日) 21:22:16.26 ID:UBuQU1Du]
toro.2ch.net/test/read.cgi/tech/1382015080/

523 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 22:00:39.47 ID:H/JD4vj2]
MSDNも、機械翻訳版だと無意味に近いし、
人間が訳したのは英語版の重要なところを
こっそりスッ飛ばしてる場合があるから要注意だ。

524 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 22:23:52.70 ID:BFHFMym8]
俺ほどの人間は、自分で調べるなんて愚行しない。
ここに書いて手っ取り早く解答得るのがベスト。

525 名前:デフォルトの名無しさん [2014/05/22(木) 17:38:55.74 ID:OR1KcKew]
そして素人の書いた適当なレスに騙される

526 名前:デフォルトの名無しさん mailto:sage [2014/05/22(木) 18:09:40.63 ID:jxaWow30]
情報とか手がかりじゃなくて解答というあたりが・・・

527 名前:デフォルトの名無しさん [2014/05/24(土) 10:53:14.15 ID:eu02DRrY]
Excel2013 の PDF保存のコードについて教えてくださいませ。
名前をつけて保存、で複数シートを1つのPDFに保存するコードを書きましたが
なぜか動く動きません。

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Sheets("Sheet1").Activate
ActiveSheet.ExportAsFixedFormat type:=xlTypePDF,
Filename:= "C:\Sheet123.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

Arrayで最初に選択したシートのみが出力されてしまいます。
2行目の Sheets("Sheet1").Activate を削除しても結果は変わらずでした。
マクロで記録しても、上記と同様のコードが記録されます。
しかしこの記録されたマクロを実行すると、やはり最初に選択したシートしかPDF出力されません。

何が足りないのでしょうか?



528 名前:527 mailto:sage [2014/05/24(土) 10:56:45.70 ID:eu02DRrY]
ごめんなさい!出来ました!ワ〜イ
ウィンドウを複数開いてたのが原因でした

529 名前:デフォルトの名無しさん mailto:sage [2014/05/25(日) 22:23:52.52 ID:8sEJJ/Xn]
VBAを使ってπの道の桁数の計算に挑戦することは可能ですか?

530 名前:デフォルトの名無しさん mailto:sage [2014/05/25(日) 22:24:17.44 ID:8sEJJ/Xn]
>>529
道→未知・・

531 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 10:24:59.73 ID:xBqIirxp]
挑戦するだけなら可能でしょ
成功はしないけど

532 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 12:13:08.87 ID:ptXAqcmg]
たぶん未知の領域に到達する前に
後から来る人に追い越される

533 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 12:26:24.18 ID:dlApJPlM]
道の桁数の計算方法が確定しているなら
その計算に必要なリソースが確保できるなら可能

534 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 15:34:56.33 ID:EGdbrytd]
いや、未知の桁数に達するまで太陽系が存在出来るかを問題にしないと

535 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 19:57:34.24 ID:dlApJPlM]
>>534
挑戦出来るかどうかと聞いてるから、そこは問題にならない

536 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 20:30:26.14 ID:9XuuTI4K]
Excel VBA 量子コンピューター版が出れば最初に的確に着手した人なら達成出来る?
it.impressbm.co.jp/articles/-/10453
D-Wave はコンピュータではないらしい。
計算を高速化する独自の数式や手法を発見すれば現在のExcelでも可能?

537 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 20:39:03.08 ID:JsbqvBWY]
考えてみればExcelは1つじゃない
手に入るだけの台数の高速なPC(数千・数万台とか)とExcelで並列処理させればできるか?
VBAが何所まで並列処理にむいているかはやったことが無いのでわからんが。



538 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 20:51:31.05 ID:LCv9Wl+A]
>>529
VBA は 64KB 壁があったりして棘の道だと思うが君ならきっとやれる。

539 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 23:11:20.50 ID:Ed2uGBCo]
仕事で自動化したくてOLEオートメーション使いたいのだけど
これってもう古いの?
どこ探してもよくわからない
おすすめの本ってある?

540 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 23:43:24.09 ID:7NSDbYse]
>>539
質問の意味が良くわからない
何を自動化したいのか
「オートメーション」という言葉を何か勘違いして受け取っているようにも見える

541 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 23:47:12.46 ID:Js6v2rIN]
ActiveXでぐぐれなさい

542 名前:デフォルトの名無しさん [2014/05/27(火) 11:36:41.29 ID:CQuE4vUS]
VBAで満足しているんですが、
ほかのプログラム言語覚えるとなにかいいことありますか?
VBAじゃ出来ないことある?

543 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 12:10:21.53 ID:pK8lgo+n]
>>542
もちろんVBAにできないことはたくさんあるけど、他の言語にもそれぞれ苦手な分野があるんで
自分のやりたいことがVBAじゃ大変だとわかってから、その作業に最適な言語を探した方が無駄が少ないかもね

544 名前:デフォルトの名無しさん [2014/05/27(火) 12:29:28.96 ID:CQuE4vUS]
>>543
そうですかぁ
目的はっきりしないうちに、
ほかの言語覚えるのも大変ですよね・・
VBAの限界がみえるまではVBAだけで行きます!

545 名前:デフォルトの名無しさん [2014/05/27(火) 12:39:03.97 ID:JkwAmhtq]
>>542
JAVAとかCとかだと求人が多いけどVBAじゃ求人が少ないから
つぶしが利かない

546 名前:デフォルトの名無しさん [2014/05/27(火) 12:44:54.08 ID:CQuE4vUS]
>>545
なるほど、
仕事じゃなく個人で使うだけならVBAで十分かな?
足りなくなったら、DLL?とかほかの言語で作って、
VBAで呼び出せばいいか・・

547 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 13:18:47.16 ID:1WWRQ+yd]
Excel VBAで作ると、出力先がほぼシートになるから結構便利なのよね
グラフとか後でくっつければ良いだけだし

sheet1、使い方の説明とか入力用
sheet2、出力用テンプレート
sheet3以降、出力先

って感じで作れば、使い方とか後で訊かれる事も少ない
インターフェイスの設計とか悩まなくて済むのはメリット



548 名前:539 mailto:sage [2014/05/27(火) 21:24:50.12 ID:ynAF/lre]
>>540
Excelに数値を入れてCADでそれに沿った図面を作成したいのです。
OLE自体をあまり理解してないのですが、
アプリケーション自体が公開しているメソッド(CADでもソフトによって違う)
を使用するということでしょうか

549 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 06:25:58.57 ID:am2JQYoj]
つまり、CADソフトをOLEオートメーションでEXCELから操作したい、と
OLEオートメーションって言葉は古いな。間違ってはないが

VBAの命令としてはそのCADソフトのオブジェクトを生成するCreatObjectって言う命令だけ
それ以外は普通のEXCEL VBAの入門書でだいたい事足りるかと

あとはそのCADソフト側で用意されてるメソッドなり何なりを操作する
それはそのCADソフト側の問題なんでそっちに聞いてください

550 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 09:41:47.76 ID:BSb9yGb4]
ああ、昔AutoCADで似たような事やったな
VC++だったけど
CAD側の文字コードに注意してやらないと、文字化けとか大変な事になる予感

使い方としては、549の言ってる通りでいけると思うけど、
Excelで数値入れるのが果たして使いやすいかというと、
実はそうでもなかったりしがちになるので、
必要な要件はきっちり洗い出す必要あると思うよ

551 名前:デフォルトの名無しさん [2014/05/28(水) 11:36:19.19 ID:tvrcqpPe]
VBAの標準関数のソースを見たいのですがどこに記述されているのでしょうか?

552 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 11:42:23.21 ID:mspF09G9]
非公開じゃないの

553 名前:デフォルトの名無しさん [2014/05/28(水) 11:52:24.90 ID:tvrcqpPe]
そりゃないよかあちゃん

554 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 16:09:51.90 ID:PxoSlPb7]
excel vba実行中の画面のちらつきは
Application.ScreenUpdating で 抑えられたが
それでもタスクバーがちらついて困っていた。
タスクバーのちらつきは Application.ShowWindowsInTaskbar
で抑えられるのが分かった。

ShowWindowsInTaskbar って昔からありましたっけ?

555 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 18:00:58.65 ID:pq9FJS3g]
>>554
> ShowWindowsInTaskbar って昔からありましたっけ?

なんでググらないの?

556 名前:デフォルトの名無しさん [2014/05/28(水) 19:31:12.32 ID:tvrcqpPe]
あるセル範囲を選択してて
その中にあるセルで
 (1) 空白なら除外する
 (2) 同じ値があれば1つを残して他は除外する
の操作をしたあと
各セルの値をString型の配列変数として入れたいんです。
そのためにはどういうコードを書けばよいでしょうか?

さあ、書きなさい。

557 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 19:51:40.59 ID:6RxarYIU]
rangeをOLEで取得するとarrayになるようですが
VBA以外の言語とデータをやり取りするにはどうすれば良い?



558 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 20:35:31.75 ID:aALl0Wxc]
>>557
Variant型はExcelやVBAだけで使える型じゃなくてWindowsシステム全体で定義されてるんで
たいていの言語でそのまま扱うことができる

559 名前:539 mailto:sage [2014/05/28(水) 21:11:33.80 ID:tkho5s2n]
>>549-550
詳しい解答ありがとうございました。
非常に分かりやすかったです。
描くのは直線だけでなるものなので業務の時間を短縮できるのかなと。
あとはCADソフト側の命令の仕方ですね、頑張って探してみます。
ありがとうございました。

560 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 23:52:38.39 ID:am2JQYoj]
>>556
あるセル範囲を選択してて
その中にあるセルで
 (1) 空白なら除外する
 (2) 同じ値があれば1つを残して他は除外する
の操作をしたあと
各セルの値をString型の配列変数として入れる
こういうコードを書けばよいよ

要件定義が甘いが、どこがわからんかわからん

561 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 00:20:40.78 ID:pIxlUzsM]
>>556
Dictionary使うのはどう?
Existで調べて、無かったらAdd
これを繰り返して最後にString型の配列変数に入れる

562 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 00:22:14.59 ID:pIxlUzsM]
スペル間違えた
× Exist
○ Exists

563 名前:デフォルトの名無しさん [2014/05/29(木) 08:48:17.68 ID:/DaeRAwK]
Do
DoEvents
Sleep (100)
Loop Until flag = True

な無限ループをイベント監視用にユーザーフォームで走らせているんですが,
フォームのタイトルバーを捕まれるとループが止められてしまいます。

ループ用にvbModelessなフォームをHiddenで隠して回しても,
他のフォームのタイトルを捕まれると止まってしまいます。

タイトルを捕まれてもマクロが止まらなくなる方法ってありますか?

564 名前:デフォルトの名無しさん [2014/05/29(木) 12:02:11.02 ID:Amp5ddSE]
>>561
ありがとうございます。
あなたはこのスレにときどき登場するDistionary厨のかたですね?
これを機会にDisctionaryの使い方を理解してマスターしようと思うのですが
いいサイトか本はないでしょうか?

565 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 14:29:26.90 ID:sq7Ykhg/]
>>563
残念ながらExcelVBAはマルチスレッドに対応しておりません

というか、止められると言っても、終了してしまうのではなく中断するだけだろ?
タイトルバーを掴んでいる間さえも中断しちゃまずいって、いったい何を監視しているやら?
それに、ユーザーフォームの移動なんて、そう頻繁に行うことでも、長時間行うことでも無いじゃん

それとも、自分が使う物ではなく他人が使う物で、タイトルバーを掴んだままにすることで
意図的に監視を一時停止出来ちゃうと困るとかなのかな?
だとすれば、パス掛けたところで簡単に破れて、ソース弄れば監視の無効化も、もっと簡単に
一時停止できるようにすることも可能なVBAでそういうものを作ること自体が不適切

それに、タートルバーを掴んでいる間、つまりExcelの操作をしていない間も監視が必要って事は、
監視対象はExcel上のものではないんだよね?
だとすると、その辺に別の対処法の突破口があるかもしれないな

566 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 15:11:02.01 ID:dLhscPPS]
>>563
Sleepを消せば少し改善されると思う
空のループはDoEventsだけで十分

567 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 15:20:33.17 ID:mJj+KV4g]
タイトルバーを掴んでる間はDoEventsが戻ってきてないようだが



568 名前:563 [2014/05/29(木) 17:38:29.96 ID:/DaeRAwK]
>>565
やりたいことは測定器からのデータ取得(GPIB)で,2秒に一回のイベントを監視する目的です。

具体的には AD変換完了のイベント発生 -> 測定値の取得コマンド発行 -> 測定値の転送
という流れで,イベントが発生したら2秒以内に「取得コマンドの発行->転送」をしないと
データを取りこぼしてしまいます。
そこで,フォーム(中断イベント発生用ボタンを表示)がじゃまだと画面の脇によける動作をすると
ループが止まって取りこぼすので困っておりました。

その後,WindowsAPIのSetTimer/KillTimerを試しまして,今回の目的(2秒)なら
行けそうな感じで収まりました。

>>566
>>567 のとおり,つかんでいる間は帰ってきてくれないようです。

569 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 18:03:06.09 ID:mJj+KV4g]
そのAD変換完了のイベントってのがどうなってるかしらんが
それで空ループまわして待つ意味がわからんし、時間制限があるのに変換完了イベントから
取得コマンド発行までの間でDoEventsする必要もわからん

570 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 19:47:40.83 ID:sq7Ykhg/]
>>568
そういうのは普通、測定器→ローカルデータ、ローカルデータ→Excelって二段構えでやるもんだよ

ユーザーフォームのタイトルバーを掴む意外にも、ループが一時停止される要素はあるし
Excelのエラーで強制終了して再立ち上げするにも、2秒以内じゃまず無理なので取りこぼしが出る

だからまずはデータをローカル(HDD)に保存するってことだけに専念したアプリやスクリプトを走らせて
それが保存するローカルデータをExcelで監視するってのが常套手段
それなら、Excelの監視が止まっている間にイベントが2回発生しようと3回発生しようと
HDDにはその2回なり3回分なりのデータが保存されたままになるから、後からいくらでも読み出し可能

571 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 19:57:52.53 ID:dLhscPPS]
それこそ外部プログラムからOLEでワークシートにデータを書き込んで、Changeイベントで処理すべきだろ
リアルタイムで処理する必要があるかどうかは知らんが

リアルタイム性が必要なければファイルにCSV保存して、あとから加工なり分析なりすればええ

572 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 21:38:45.66 ID:pIxlUzsM]
>>564
Dictionaryでググレばいいと思うよ
俺もそうした

573 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 22:25:02.22 ID:MJP51S+k]
"プロジェクトまたはライブラリが見つかりません"のコンパイルエラーが発生したので以下のページを参考にして解決しました。
www.moug.net/tech/exvba/0150128.html
お聞きしたいのは、参照不可となった原因です。あと、参照不可となっていたライブラリのチェックを外すことで今後問題が起きないのか?ということです。
ちなみに、開発環境と実行環境は同一のPC1台のみです。よろしくお願いします。

574 名前:563 [2014/05/30(金) 08:43:27.05 ID:VsNT1DP0]
>>569
イベント=グローバル変数のビットが立つだけでなので,
単純にループを回し続けてグローバル変数を確認し続ける処理となってます。
また,DoEventsは中断/終了処理のためにフォームのボタンを押す必要があるためです。

>>570,571
CSVを吐かせるのが一番容易ではあるんですが,他者がメンテするときに開発環境等
構築の必要がないVBAのみで完結させたいなというのがありまして。

575 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 09:28:42.64 ID:ztZ/Ok0F]
>>574
悪い事は言わん、計測器関連はVBAでやるの止めとけ
今はVisualStudio Expressもあるし、無料で環境構築できるんだから、
Excel に拘らない方が良い

どっちかつうと、VB側からExcel吐き出しする方が経験上楽で確実

576 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 09:34:30.18 ID:tZceHJTB]
Excel2個起動したらマルチで動くよ

577 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 10:03:47.61 ID:gm611zV1]
そのグローバル変数を書き換えてるプロセスはいったいどこで動いてるんだ?



578 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 15:23:03.23 ID:g1Pwsqem]
>>574
>単純にループを回し続けてグローバル変数を確認
グローバル変数セットするときにイベント起こすなり特定プロシジャ呼ぶなりすれば良い話
ループで変数監視とかどう考えても設計がおかしい

>DoEventsは中断/終了処理のために
変換完了イベントから取得コマンド発行までの間は中断できないようにすれば良いだけ
要求される仕様にもよるけど設計がおかしい

579 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 15:38:13.41 ID:g1Pwsqem]
>>573
>参照不可となった原因
たとえば参照設定されていたプログラムをアンインストールしたら当然参照不可能になるわな
お前のPCに起こった事がそれだけの情報でわかるわけがないだろう

>今後問題が起きないのか
お前のプログラムが何をどうやってたかわからんのに、わかるわけがないだろう
コンパイルしてみてエラーが無いようなら、一応問題が無いと言えるかもしれんが
ライブラリの中身が変わって参照設定が無くなってたりしたら、そのライブラリに
互換性の問題があったりするかもしれん

580 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 15:45:03.61 ID:9Pr1vy7p]
いつもの

「設計が不適切だから、実現が困難になる」

という、初心者がよくハマる罠ですな

581 名前:デフォルトの名無しさん [2014/05/30(金) 16:06:49.06 ID:VsNT1DP0]
>>575
テンプレート作っておいて最終的にcom使って吐き出させるのが確実ですかね。

>>577
すみません,私の勘違いでグローバル変数が変わるのではなく,
ループ中で測定器のステータスを読みに行くコマンドを送り,
ADデータが更新されたかのフラグを自分で立てていました。

582 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:06:21.63 ID:uIjyT6t9]
具体的な記述は自分で考えますので方向性だけお力をおかしください


現在、シート1にデータの羅列を手入力しています
その後、いくらかの計算を経てシート2に転写しています
このとき、シート1は月日関係なく羅列が続いているのですがシート2は月末ごとに集計したいと考えています


↓へ続く

583 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:07:57.55 ID:uIjyT6t9]
イメージとしては

・シート1
1/1   5
1/10  3
1/25  6
1/31  10
2/3   5
2/20  2
3/2   4


シート2
1/1   5
1/10  3
1/25  6
1/31  10
----------
1月最大 10
1月最少 3
1月計  24
----------
2/3   5
2/20  2
----------
2月最大  5
2月最少  2
2月計   7
----------
3/2   4

こんなイメージです、初めは文字通り転写していたのですがそうするとあとから月末の集計を挟むとずれるのでそのあたりヒントをいただけたらと思います

584 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:20:31.98 ID:9Pr1vy7p]
クラス使って構造化すれば良いだけやん

因みに最大の反対は最小で、最少の反対は最多な

585 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:36:10.28 ID:e0LBlZuD]
転写後に集計行を挿入する。
転写元と転写先の行指定を同一にしないでわける。
(Row1行目をRow2行目に転写)

586 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 22:04:39.86 ID:FUgryqqJ]
>>583
分かり易いコードだったら
シート1の上から月の変わり目まで値をシート2に代入して、
その間最大と最小と月計を求めておいて、それをシート2に書き込んだら
また次の月を処理してやればいいんだけど、
別にそんなことしなくてもピボットで行けるんじゃないかと思う。

587 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 01:24:27.59 ID:BIC+yzDE]
ひとまずシート1からシート2へ、
全てのデータをコピーする

次にシート2へ、最大値・最小値・合計を、
後ろの行から追加していくと、
行の数え間違いが減りそう



588 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 08:16:56.63 ID:Ym0wh1sa]
エクセルの2003で作ったマクロを2013で使用したいのですが、
そのままコピーをしても使えません・・・

互換モードで変換しても、上手く起動してくれません。
どうしたらよいでしょうか?

589 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 08:31:34.05 ID:hcRtMx6V]
>>588
使えないってのどういう状況?
コピーって、何をどうコピーしたんだ?
それは本当に2003で作ったマクロなのか?

情報が足りなすぎて何とも言えん

エスパーするならセキュリティセンターの設定で行ける気がするが

590 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 10:11:58.90 ID:0hCJmlYV]
>>588
エスパーすると、
信頼できる場所、拡張子(マクロ有効ブック)、参照設定、PtrSafe
あたりかなあ?

591 名前:デフォルトの名無しさん [2014/05/31(土) 17:06:26.42 ID:vfwWW6a6]
質問でございます。
エクセルVBAで効果音を鳴らすにはいかにすればよろしいでしょうか?

また、画像を張ったり、消したりするにはどのようなコードを書き込めばいいものでしょうか?

592 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 17:57:42.27 ID:Ym0wh1sa]
マクロの制作代行(修正)を3000円位で行ってくれる所ないかな?

既にあるマクロに機能追加してもらいたいんだけど、
スキルがなくて困っています。

593 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 18:03:54.56 ID:MZZ4d7NB]
>>591
www13.plala.or.jp/kymats/study/multimedia.html

594 名前:デフォルトの名無しさん [2014/05/31(土) 18:15:17.55 ID:xW/2bai/]
>>593
いまいち、理解できないっす。
要するにどういうコードを書き込めばよいのでしょうか?
そして音源はどこにあるのでしょうか?

595 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 18:24:22.00 ID:6LzyMI+6]
>>592
翌日以降に発覚した瑕疵等は別途見積もり・請求させていたたきます

596 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 18:42:36.10 ID:ROAafTCn]
>>592
マッチングサイトなんてググればヒットするでしょ

597 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 20:08:49.36 ID:ENgUpqsf]
>>594
ググるという発想はないの?



598 名前:デフォルトの名無しさん [2014/06/01(日) 00:30:52.76 ID:1fLVc9/2]
エクセルに画像を取り込もうとすると、テキストファイルウィーザード「選択したデータは区切り文字で区切られていま」
というエラー?が出て、画像が取り込めず、文字列がだーっと出る画面になるのですが
保存された画像を普通に貼り付けるにはどうすればいいのでしょうか
保存の仕方がわるいのでしょうか?

599 名前:デフォルトの名無しさん [2014/06/01(日) 00:44:57.06 ID:J9cZPePT]
>>592
その値段では、誰も引き受けてくれんぞ。30万出せば、金に困っている
連中の誰かは、受けてくれるだろうが。

600 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 01:56:31.76 ID:4/q6rSuq]
>>598
君は諦めた方がいい

601 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:15:57.44 ID:Vdytlm3J]
>>592
相談料 3000円 (120分以内)なら考えてもいい

602 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:28:28.23 ID:mo4nCN9m]
>>601
120分3000円でいいならもうボランティアでやってやれよw

603 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:39:07.65 ID:m+nDoAYH]
>>598
まず最初にここは Excel VBA質問スレ
この時点でアウト
君が相談すべきスレは、ビジネスSOFT板のExcel総合相談所 113

ちなみに注意としてExcelのバージョンとどういう操作をしたのかくらい書けよ
Excel2007(2010)だとして、挿入→図からファイルを選択すれば良いのをなんでテキストファイルウィザードなんてもんが出てくる?

604 名前:デフォルトの名無しさん [2014/06/01(日) 12:52:54.92 ID:QlI1F8ze]
すいませんです
Excel2010で、ゲーム製作をしてましてVBAで画像が自動的に出たり消えたりと言うプログラミングを
設定しているのですが、画像がうまく開かないで苦心しておりました

605 名前:デフォルトの名無しさん [2014/06/01(日) 14:52:48.34 ID:ycdnLEoX]
Excel2007です。
Excel2003で動いていた、グラフの書式をコピーするVBAを実行すると、
データまでコピーされてしまうようになり、困っています。
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.ChartArea.Copy
ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveChart.Paste Type:=xlFormats

ヘルプにはxlPasteFormatsを指定とあるので、修正してみたのですが変わりませんでした。

グラフ選択→コピー→グラフ選択→形式を選択して貼り付けの書式を選択で、
シートに対してPasteSpecialを使えば元の動きになることはわかったのですが、
もともと使っていたPasteは使えなくなったのでしょうか?
それとも使い方がわるいのでしょうか?

606 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 15:23:51.99 ID:WV5hG6M3]
Excel2003ですが
VBAでくり返し操作するときは自動保存をOFFにしたいのですが
オプション設定はVBAで操作できるのでしょうか?

607 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 17:18:12.48 ID:XKcLg8fj]
>>606
 Application.AutoRecover.Enabled = False



608 名前:606 mailto:sage [2014/06/01(日) 21:41:47.16 ID:5iy05h8R]
>>607
これは便利ですねぇ知りませんでした。 ありがとうございます。

609 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 18:30:40.65 ID:YbWwqAFD]
教えてください。キーワードだけで構いません。
チャートオブジェクトの横幅と高さをVBAで変更することはできますが、
グラフオブジェクトの中のグラフ表示範囲(?)を変更する方法がわかりません。

ワークシートに複数のグラフがあり、これらのグラフの横幅を揃えたいのです。
チャートオブジェクトの横幅は揃っているのですが、図中に矢印で示すグラフ表示範囲がずれてしまっています。
手動ではなくVBAで自動的に揃え直したいのですが方法がわかりません。

よろしくお願いします。
i.imgur.com/fSS5gf9.png

610 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 19:36:28.50 ID:Qua9WhFM]
>>609
PlotArea.Width

611 名前:609 mailto:sage [2014/06/02(月) 22:43:18.89 ID:QcqSJ9d9]
>>610 ありがとうございました。
今試せる環境ではないので明日試してみます。
とりあえずググったところ下のように書いてありました。
厳密に複数グラフの横幅を揃えるのは難しそうですね。

www.moug.net/tech/acvba/0020000.html
プロットエリアの位置や大きさは、Top/Left/Height/Widthプロパティで設定しますが、
これらのプロパティで設定する領域は、プロットエリアの書式設定の際に参照される領域よりも大きくなります。
差が出るのは、軸/軸の目盛ラベル/データテーブルの領域分です。
これらを除いた領域の位置、及び大きさはInsideTop/InsideLeft/InsideHeight/InsideWidthプロパティで取得できますが、設定は出来ません。
したがって本来の意味でのプロットエリアの大きさを思い通りに設定するのは、非常に困難であると言えます。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef