Excel VBA 質問スレ Part33
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/17(木) 22:04:40.64___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
前スレ
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人はこちらのスレへ
http://toro.2ch.net/test/read.cgi/tech/1381151995/l50
0357デフォルトの名無しさん
2014/02/25(火) 11:01:09.75エクセル2000だけどおなじ症状が出てる
0358デフォルトの名無しさん
2014/02/25(火) 15:26:49.432007で試したけど、保存して開き直したら消えてる
0359356
2014/02/25(火) 17:00:57.86ってか、参照設定を解除するのを教えてもらったんで、それで消しましたた^^;
Sub testRef()
Dim Ref As Object
For Each Ref In ThisWorkbook.VBProject.References
Debug.Print Ref.Name
If Ref.Name = "MSForms" Then
ThisWorkbook.VBProject.References.Remove Ref
End If
Next Ref
End Sub
0360デフォルトの名無しさん
2014/02/26(水) 13:49:18.84ttp://www.forest.impress.co.jp/docs/news/20140226_636988.html
0361デフォルトの名無しさん
2014/02/27(木) 13:32:25.19www.hatinosu.net/camp/archives/okinawa/
www.hatinosu.net/camp/archives/1200/
こういうページが複数あります (下のURL)
これをExcelの表にまとめてしたいと思っています
場所1 料金1 期間1 関連1 備考1
場所2 料金2 期間2 関連2 備考2
場所3 料金3 期間3 関連3 備考3
場所4 料金4 期間4 関連4 備考4
htmlで表を取り込む方法はわかったのですが
まとめてやる場合はマクロが必要なのでしょうか
参考になるサイトなどありましたらご教示ください
0362デフォルトの名無しさん
2014/02/27(木) 14:21:41.96ホームページに書いてある内容から必要な部分だけ取り出す方法は色々あるけどVBAを使った方が楽だと思う
ただ、人間の目で必要な部分を探すのは簡単だけど、それをコンピューターに自動でやらせるのはものすごく大変
参考サイトを見た程度でできるような物じゃない
手順としては
(1) URLの一覧を作る
(2) HTMLを読み込む
(3) タグとテキストを解析して必要な情報を取り出す
(4) 取り出したデータをシートに並べる
どれも専門的な知識が必要なんで、どこまでわかっているのか細かく確認しながらじゃないと教えるのも大変
0363デフォルトの名無しさん
2014/02/27(木) 14:24:27.05ホームページから情報を取り出してワークシートにコピーする例
http://www.happy2-island.com/excelsmile/smile03/capter00721.shtml
0364デフォルトの名無しさん
2014/02/28(金) 00:02:45.20という処理はどのようにすればよいでしょうか。
検索結果のページタイトル一覧は
ol#rso > li > div > h3.r > a……(結果毎にli繰り返し)となっていたので、
「ol id="rso"内の、一つ目のh3 class="r"をクリックする」という処理が
できればと思うのです。
i'mfeelingluckyに渡して取得していたのですが、一部直接飛べないものがあり、
このような処理をしたいと思いました。
0365デフォルトの名無しさん
2014/02/28(金) 00:27:30.76クリックしなきゃいけないの?
aタグのURLをブラウザに直接渡せばいいじゃん
まあGoogleの場合はちょっと文字列の加工が必要だけど
0366デフォルトの名無しさん
2014/02/28(金) 23:51:48.43デバックしてみると、アプリケーションまたはオブジェクト定義のエラーですと言われWith Cells(Rows.Count, 1).End(x1Up).Offset(1)の部分が黄色く反転しています。
どのように修正するとよいのでしょうか?また、今、シートは中1、中2、中3という名前のシートがあります。
ユーザーフォームで学年を中1を選択した場合には中1のシートに入力(中2、中3も同様に)する場合どのように修正すればよいか教えていただきませんか?
0367デフォルトの名無しさん
2014/02/28(金) 23:55:12.51Private Sub cmd終了_Click()
Unload Me
End Sub
Private Sub cmd登録_Click()
Dim RowNum As Long
With Cells(Rows.Count, 1).End(x1Up).Offset(1)
.Value = Text生年月日.Value
.Offset(, 1).Vulue = schoolyears.Value
.Offset(, 2).Vulue = Text氏名.Value
.Offset(, 3).Vulue = Textフリガナ.Value
.Offset(, 4).Vulue = Text中学.Value
.Offset(, 5).Vulue = Text郵便番号.Value
.Offset(, 6).Vulue = Text住所.Value
.Offset(, 7).Vulue = Text自宅tel.Value
.Offset(, 8).Vulue = Text生徒携帯.Value
.Offset(, 9).Vulue = Text生徒アドレス.Value
.Offset(, 10).Vulue = Text保護者氏名.Value
.Offset(, 11).Vulue = relations.Value
.Offset(, 12).Vulue = Text保護者携帯.Value
.Offset(, 13).Vulue = Text緊急連絡先.Value
.Offset(, 14).Vulue = Textメールアドレス.Value
.Offset(, 15).Vulue = Text備考ス.Value
End With
End Sub
0368デフォルトの名無しさん
2014/02/28(金) 23:56:00.50End Sub
Private Sub UserForm_Initialize()
schoolyears.AddItem "中1"
schoolyears.AddItem "中2"
schoolyears.AddItem "中3"
relations.AddItem "父"
relations.AddItem "母"
relations.AddItem "その他"
End Sub
0369デフォルトの名無しさん
2014/03/01(土) 01:27:58.58○ XlUp
× X1Up
0370デフォルトの名無しさん
2014/03/01(土) 01:37:04.380371デフォルトの名無しさん
2014/03/01(土) 01:56:54.39○ Value
× Vulue
0372デフォルトの名無しさん
2014/03/01(土) 01:58:05.73「備考ス」?
0374sage
2014/03/01(土) 02:28:01.51ありがとうございます。初歩以前のミスしてしまいました。
>>370
すいません。
>>371
間違ったものをコピペしてしまったのが原因です(泣)ありがとうございます。
>>372
オブジェクト名確かに変ですね。備考に直しました。ありがとうございます。
0375デフォルトの名無しさん
2014/03/01(土) 02:32:30.20代わりに(?)フォローしていただきありがとうございます。
0376デフォルトの名無しさん
2014/03/01(土) 14:57:19.03レスありがとうございます。
現状、i’mfeelinglucky検索で取得ページ移動、表示されているページタイトルとURL取得、
としていたので、VBAもあまり慣れていないため、
クリック動作さえ加えれば問題なくなるかと思ったのですが、難しいものでしょうか。。。
0377デフォルトの名無しさん
2014/03/01(土) 16:44:08.18レスありがとうございます。
現状、i’mfeelinglucky検索で取得ページ移動、表示されているページタイトルとURL取得、
としていたので、VBAもあまり慣れていないため、
クリック動作さえ加えれば問題なくなるかと思ったのですが、難しいものでしょうか。。。
0378デフォルトの名無しさん
2014/03/01(土) 21:17:15.14変換する方法ありますか?出来ればブックの全シートを一気に。
0379デフォルトの名無しさん
2014/03/01(土) 21:30:56.910380デフォルトの名無しさん
2014/03/01(土) 22:05:09.76getElementById('rso').getElementsByTagName('a')[0].click
みたいなことVBAでできないのでしょうか。
それを聞いてるんだよと言うのならスマン。
0381デフォルトの名無しさん
2014/03/01(土) 22:58:29.98できるよ
0382デフォルトの名無しさん
2014/03/02(日) 18:09:03.96Workbooks("1.xls").Sheets("Sheet1").Range("a1":"z1").Value = Workbooks("2.xls").Worksheets("Sheet1").Range("a1":"z1").Value
このように書くと数値が極端な桁のマイナスになっていたりエラー値に変化しているセルが発生するのですが
元の数値のセルは =c1 =c2 ・・・といったような単純なセル参照の羅列で数値は小数点入りの正数で計算式やらセルの特殊指定は
一切はいってないので何故化ける箇所が発生するのか謎なのですが 原因は何なのでしょうか?
上記のコマンドに xlPasteValues 値を貼り付けの指定を追加するにはどう書けばいいのでしょうか?
0383382 半分自己解決しました
2014/03/02(日) 18:54:41.58よく見直してみますと元セルの セルの書式設定- 表示形式- 数値 の箇所が
http://homepage3.nifty.com/gakuyu/excel/syosiki2_fig03.gif
小数点ありの負の数値で選ばれていました。
これが原因のようですお騒がせしました
全部が負の数値になっていたらすぐわかるのですがほとんどは正数のままで
所々負の数値に置き換わっているのは謎です
0384デフォルトの名無しさん
2014/03/03(月) 07:39:32.84値の貼り付けでいいならVariant変数に入れてから貼り付けるのが簡単でいいと思う。
たとえば382の例なら
Dim v As Variant
v = Workbooks("2.xls").Worksheets("Sheet1").Range("a1":"z1")
Workbooks("1.xls").Sheets("Sheet1").Range("a1":"z1") = v
こんな感じ
こっちのほうが普通にコピーするより実行速度も速いらしい
ただし、コピーできるのは値のみ、書式とか数式とかは引き継がれない
0386384
2014/03/03(月) 22:19:34.69今更だけど、>>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は式の右と左が逆)
0387デフォルトの名無しさん
2014/03/03(月) 23:57:40.67それって>>382と同じだよ
0388384
2014/03/04(火) 00:20:39.61Variantに入れると速いってOfficeTANAKAに書いてあったけど
0389デフォルトの名無しさん
2014/03/04(火) 07:29:55.480391デフォルトの名無しさん
2014/03/04(火) 08:25:07.77どこのページよ
URL 晒して
0392デフォルトの名無しさん
2014/03/04(火) 12:53:57.87うん、それを皮肉ったつもりなんだけどわからなかった?
0393デフォルトの名無しさん
2014/03/04(火) 20:15:07.96うん、それを分かってて茶化したつもりなんだけどわからなかった?
0394デフォルトの名無しさん
2014/03/04(火) 21:51:23.58うん、さすがにそれは無理がありすぎてわからなかった
0395デフォルトの名無しさん
2014/03/04(火) 22:07:20.57修行が足りない
0396デフォルトの名無しさん
2014/03/05(水) 00:20:10.55そう同じ
だから速くはならん
0397デフォルトの名無しさん
2014/03/10(月) 00:13:33.22現在VBAで別名で保存した場合1回数十秒 LAN経由で開くと応答無しになるのでそれぞれのローカルへコピーして開くと又数十秒かかり
数台へ配布するのになんだかんだ数分ぐらい時間がかかっています。
閲覧側は見れれば何でも良いです。(Excelブック形式だと尚良い)
0398デフォルトの名無しさん
2014/03/10(月) 00:35:31.08不可能
大量のデータをLAN越しに同時に閲覧したい場合はAccessを使うのが普通
0399デフォルトの名無しさん
2014/03/10(月) 00:39:25.86数式がてんこ盛り盛りならVBAで全部コピーして値だけ張り付けて別名保存する、ぐらいかな
処理にどのくらいの時間がかかるかは知らんけど
数式がほとんどなくてデータだけで重いのなら画像に出力してPDF化かな
0400397
2014/03/10(月) 00:55:43.48>>399
無理っぽいのですね。ありがとうございます。
データてんこ盛りなのでアクセスやSQLなのでしょうかねぇ 使った事ありませんが、、
0401デフォルトの名無しさん
2014/03/10(月) 01:18:59.92ほんとにそのサイズでやり取りする必要があるのか良く考えた方がいいんじゃね
0402デフォルトの名無しさん
2014/03/10(月) 06:46:54.06ブックの共有じゃダメなの?
そもそも Excel で 100MB って言うのも色々危険な香りがするが...
0403デフォルトの名無しさん
2014/03/10(月) 06:57:20.42文字データだけならCSVで吐いて
閲覧者がブックを開いたら取り込むとかはどうよ
セル書式は予め設定しておいて、不足なら自動書式で
グラフも置いてあるなら範囲を名前定義にして取り込み時に名前定義をちょろっと修正すればいい
>>402
>LAN経由で開くと応答無しになる
に該当するんじゃないの?しないの?
0404デフォルトの名無しさん
2014/03/10(月) 07:46:59.95> に該当するんじゃないの?しないの?
共有ブックはもう少し賢いけど、正直 100MB クラスのブックを共有で使ったこと無いから試してみてくれとしか言いようがない。
共有特有のトラブルもあるし。
0405デフォルトの名無しさん
2014/03/10(月) 22:22:30.840406デフォルトの名無しさん
2014/03/10(月) 22:31:12.02せめてシートごとに分割したほうがいいと思うが
変な規定でもあるんだろう
0407デフォルトの名無しさん
2014/03/10(月) 22:42:00.56それを瞬間的に閲覧するようにできるExcelVBAって万能だな
0408デフォルトの名無しさん
2014/03/11(火) 10:45:11.04100Mbpsで理論値maxでも100MBをコピーするのに10秒程度かかる。
実効値20Mbps位だったらその5倍かかるわけで、100MBのコピーに2,30秒かかる環境があってもおかしくない。
0409デフォルトの名無しさん
2014/03/11(火) 20:16:20.38細かいことだけど100Mbpsなら8秒じゃないの?
0410デフォルトの名無しさん
2014/03/11(火) 21:30:20.38実測してみるとわかるけど、固定IPで他のネット機器をすべて切り離して回線が独占できる状態を作ってやっても
オーバーヘッドがあるから最高でも表示の8割〜9割ぐらいの速度になる
実用に使ってる環境だともっと遅くなる
0411デフォルトの名無しさん
2014/03/11(火) 21:44:28.36細かい事をいうなら
ネットワーク回線を流れてるのはデータだけじゃない
実データの1バイトが8ビットの情報として流れているとは限らない
0412デフォルトの名無しさん
2014/03/11(火) 21:47:49.120413デフォルトの名無しさん
2014/03/11(火) 22:23:55.060414デフォルトの名無しさん
2014/03/11(火) 22:41:58.20ファイル転送の理論値マックスは回線上の理論値マックスからいろんな層のオーバーヘッド分下がるのが当然
0415デフォルトの名無しさん
2014/03/15(土) 18:19:11.62ID:wdy6oLTCVBAの命令だけを書いた空のブックと、
分析したいデータが書かれたブックを分離して運用することは可能なのでしょうか?
現状データの書かれたブックが数十に同一処理をさすためにそれぞれにVBAを記述していますが
処理方法を変更する場合全ブックの同じVBAコードを書き換えていて手間がかかっています。
ならば空のVBAだけを書いたブックを1つ動かしておけば済むのではと思ったのですが
ここにいらっしゃるプロの方はどうされているのでしょうか?
0416415
2014/03/15(土) 18:22:17.82ID:wdy6oLTC又、空のブックで運用ができるのであればよく使う命令を個別にモジュール化して連携やネストさせるような運用方法も可能なのでしょうか?
これができるとなるとデータの書かれているシートにVBAを書くのは大量のブックを処理する場合は非合理的かと思いましたがどうでしょうか?
0417デフォルトの名無しさん
2014/03/15(土) 18:34:24.97ID:IpiW3W82> 分離して運用することは可能なのでしょうか?
可能
Excel アドイン 作成 とかでググると幸せになれるかも
0419デフォルトの名無しさん
2014/03/17(月) 04:12:41.18ID:NI0yZz+J少し仕様の変更が出てきてしまったため、再度作成か手直しをしていただきたいのですが
お願いできますでしょうか。
以下のマクロで月初から月末の所を、月初から翌月の3日までにしたいのです。
どうか宜しくお願い致します。
0420デフォルトの名無しさん
2014/03/17(月) 04:15:10.22ID:NI0yZz+JDim 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)
0421デフォルトの名無しさん
2014/03/17(月) 04:18:35.64ID: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
0422デフォルトの名無しさん
2014/03/17(月) 13:25:21.94ID:vj1XNX0yこれコードの一部分だけだよね?
月末日を保持しているであろう変数"lastDay"をどこで使うのか分からないけど、
(ここに貼られている範囲では月末日を取得してるだけでそれを使用していない)
lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0)
を
lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 3)
に変更するだけで翌月3日までにはなる。
ただし、それをどのように利用するのかはこのコード以外の部分に書いてあるので
単純にこれだけでそのコード全体が正常に(あなたの意図した通りに)動くかどうかは分からない。
0423デフォルトの名無しさん
2014/03/17(月) 22:24:00.94ID:iQzGYjkhやる気のないやつに解釈垂れても意味ないぞ。
そんな解釈より動くコードしか興味ないからコード書けって言ってるんだから。
0424デフォルトの名無しさん
2014/03/17(月) 23:26:36.86ID:vj1XNX0yいや、別にどんな相手でも良いっすよ
こっちが好き勝手に書いてるだけだし。
ところで、垂れるのは解釈じゃなくて講釈ですね。
0425デフォルトの名無しさん
2014/03/18(火) 00:01:33.11ID:YCsGrVX8昨日はなぜかエラーが出たあと、バイさるになったまま書き込みができなくなり
続きのコードを貼る事が出来ませんでした。
このあとの続きのコードは、シート名の指定と日祝の色指定のコードになっているのですが
シート名を1日、2日、3日、となるように指定しているため、これだと翌月の3日分が重複してしまうためか
422さんの仰るMonth(firstDay) + 1, 3では、エラーになってしまい上手くいきませんでした。
要は、月初から翌月の3日までのシートを作りたく、その際、日祝を赤字にし
尚且つ各シートのB1セルに○月○日と表示したものを作りたいのですが
何か上手くいく方法はありますでしょうか。
よろしくお願い致します。
0426422
2014/03/18(火) 00:51:31.95ID:Riw4xitAシート名に月も入れるとか翌月の3日分のシート名に翌月って付け加えるとか、
やりようはそれなりに有るんでないかい?
その程度の修正は元のコードさえ曝せば
このスレの人達なら簡単に出来るだろうけど、
肝心のコードが無けりゃ誰にもどうにもなんないよね。
ちなみに俺は寝るんで今日はもう出来ないです。
0427デフォルトの名無しさん
2014/03/18(火) 01:11:58.51ID:YCsGrVX8早速のレスありがとうございます!
修正でも新規に作成でも、作っていただけるのなら
どちらでも大変嬉しいのですが、一応続きのコードを晒しておきますので
お時間のある時に、どうか宜しくお願い致します!
因みにシート名は、1日、2日、3日、、、としたいため
翌月3日分は「翌月」と付け加える方向でお願いしたいと思います。
0428デフォルトの名無しさん
2014/03/18(火) 01:13:33.38ID: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
0429422
2014/03/18(火) 08:56:33.08ID:Riw4xitAこんな事言っちゃなんだけど、>>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
に変更するととりあえず動くよ。
根本的にコード全体を書き直したほうが尚更良いとは思うけど、
そういうのは俺みたいなアマチュアじゃなくて
お金を払って誰かきちんとしたプロに頼むような話になるんじゃないかな。
0430デフォルトの名無しさん
2014/03/24(月) 00:24:00.84ID:mInA5lgN両者に違いはあるのでしょうか?また、どれを試しても停止しない場合の対応策ってあるんですか?
0431デフォルトの名無しさん
2014/03/24(月) 12:27:01.03ID:KuNBiX6yぐぐったらこんなん出てきた
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1149563081
まぁ、なんで動作が違うのかは読んでも分からんかったけど。
あと、ESCとかで停まんないときは
おいらはしょうがないからタスクマネージャからエクセルごと停止させてる
0432デフォルトの名無しさん
2014/03/29(土) 16:33:15.72ID:e3FYqT1Nその後、中間データを諸々の処理に使う。
今は、VBAで中間データを計算させている。中間データはワークシート関数で計算させることもできる。
今のように中間データはVBAで計算させるのがいいのか、
それとも中間データはワークシート上で計算させVBAで計算結果を読み込んでその後の処理を行うのがよいのか?
0433デフォルトの名無しさん
2014/03/29(土) 19:49:34.25ID:OpDSuCZSブックの動作の軽さを求めるならVBAで処理して
セルには値だけを入れるほうが良いけど、
セルに数式を入れてあればどういう処理をしているのか目で見て確認できる。
これはVBAが分からない人を相手にする時には結構重要なことで
俺も勤務先で自分で使うブックはVBA使いまくりだけど
マクロ知らない上司に提出するものは出来る限りマクロを使わずに処理してる。
というか「マクロ使ったものは何をやってるか分からないから信用できない」
といわれて提出できない。
0434432
2014/03/29(土) 21:33:41.21ID:e3FYqT1Nこのブックは私だけが使うものです。重視したいのはマクロが高速であるかどうかということ。
VBAの高速化に関するウェブページを読むと、
コーディングの方法によりマクロ終了までの時間が大きく変わり、
又、worksheetFunctionは比較的高速であるとの情報もありました。
そこで、下手にVBAで全部処理させるよりもワークシート関数で計算できるところはワークシートで処理させるほうが
今より早くなるのかなと思ったわけです(VBAは独学のためあまり自信がないのです)。
ちなみに、生データは1日に1行ずつ増えます。処理は毎日実行します(会社休日は実行しない)。
0435433
2014/03/29(土) 23:51:13.09ID:OpDSuCZSあぁ、どっちみちVBA自体は使う前提で、
VBAのコード中でワークシート関数を使うかべきかどうかって話だったのね
そんなの好きにしたら良いじゃん
ワークシート関数使った場合と使わない場合を両方試して
速いほう使ったらいいんじゃないの
0436デフォルトの名無しさん
2014/03/30(日) 00:25:58.15ID:v4CA15kT必要なデータだけ持ってきて計算にのみ使ったほうが良いんじゃないかい
ま、1万行くらいなら大丈夫ではあるんだろうけど
0437デフォルトの名無しさん
2014/03/30(日) 00:31:57.51ID:4kZGo4f6VBA使うか、ワークシート関数でゴリゴリやるか、どっちかが早いかって話なんじゃ?
全部再計算させて、中間結果必要ないなら、多分VBAでやった方が早くできると思うけど
それなりにVBAがちゃんと使えるなら、って前提だが
まあ今時のスペックなら1万×5ぐらいならワークシートでも気にするほどではないと思うが
0438432
2014/03/30(日) 01:17:55.49ID:hXPzlqPDレスありがとうございます。どちらにしてもVBAは使います。
今VBAで行っている計算の一部をワークシート関数で置き換えるべきかを検討中なのです。
VBA高速化関連のページは一通り目を通して以前に比べれば格段に早くなったのですが、
それでも数時間かかる処理もあって更なる高速化を目指しているところなのです。
一概には言えないようなので時間を測定してみます。
データの持ち方についてもいい方法を模索しています。ありがとうございました。
0439デフォルトの名無しさん
2014/03/31(月) 00:10:35.50ID:ymkB1Ks5Formula1:="=IF(A2="""",A2,INDIRECT(A2))"
A2の部分をを cells(1,2)という形で指定できないでしょうか?
やりたいことはプログラムのループでA2を
B2,B3と変えたりしたいのです、アドバイスお願いします
0440デフォルトの名無しさん
2014/03/31(月) 00:57:57.69ID:+/Q0rb5yB2、B3・・・としたいなら
For b = 2 to 9
(略) Formula1:="=IF(A2="""",A2,B" & b & ")"
Next
みたいにすればB2〜B9になる
本筋とは関係ないけどIFでA2が""の時A2を返すのってなんか無駄っぽい
0441デフォルトの名無しさん
2014/03/31(月) 01:05:38.55ID:ymkB1Ks5アドバイス頂き有難うございます。
もうひとつ質問させて頂きたいのですが、
Bという位置が不定の位置なので変数で値を決めたいのですが可能でしょうか?
お手数をおかけして申し訳ございません。
0442デフォルトの名無しさん
2014/03/31(月) 01:15:24.40ID:+/Q0rb5y文字列型の変数に入れて
Retsu = "B"
こうする
(略) Formula1:="=IF(A2="""",A2," Retsu & b & ")"
B列以外だとbって変数名は不適切かな
0443デフォルトの名無しさん
2014/03/31(月) 01:22:00.80ID:ymkB1Ks5何度もアドバイス頂き有難うございます。
夜遅いのにご返事有難うございました。
今、エクセルを試す環境がないので明日試してみます。
また、質問があったら相談させて頂きます。
0444デフォルトの名無しさん
2014/03/31(月) 01:55:50.99ID:nFhjZp0H処理に数時間もかかるの?
それなら、変わらない部分をメモ化すれば?
1日に1行ずつ増えるんでしょ?
前日までの行が変わらないなら、
その結果をファイルに書いておけばよい
出来れば、毎回する同じ計算を避ける(メモ化)
0445デフォルトの名無しさん
2014/03/31(月) 15:01:50.77ID:Ial2Eqswいや、そういうことするより、まず何にどれだけ時間がかかってるか計測するのが先。
0446デフォルトの名無しさん
2014/03/31(月) 16:48:16.50ID:3GCmwtHUBMPの画像を作るにはどうしたらいいでしょうか?プログラミングの技術が
ないと不可能でしょうか?
0447デフォルトの名無しさん
2014/03/31(月) 17:05:56.79ID:r3mdI7xZ(それがvbaで出来るかどうかは知らんけど)当然
>プログラミングの技術がないと不可能
じゃないの?
0448デフォルトの名無しさん
2014/03/31(月) 18:23:52.03ID:L50LbWDs自分には敷居が高そうなので諦めます。すみません
0449デフォルトの名無しさん
2014/03/31(月) 18:28:43.68ID:8V+7Or/W0450デフォルトの名無しさん
2014/03/31(月) 18:31:32.29ID:Ial2Eqsw「セルに数字」じゃなくて実際に色を付けて、セルの幅と高さを1:1に保って小さくして、枠線を消して
クリップボードにコピーして、BMPで書き出せば?
0451デフォルトの名無しさん
2014/03/31(月) 20:37:19.25ID:S+MvAbw+あれVBAからつかえんの?
0452デフォルトの名無しさん
2014/04/01(火) 01:26:03.72ID:5tQShRLT上記のような便利機能が他にも紹介されてるサイトってないですか
0453デフォルトの名無しさん
2014/04/02(水) 00:30:48.39ID:+8s/QgvhElseIf (data > 0) Then
ElseIf (data < 0) Then
Else
End If
数値か文字として渡されるdataの判定を上記のようにしたんですけど、
冗長なのでSelect Caseにしたいです。どうしたら良いですか?
0454デフォルトの名無しさん
2014/04/02(水) 00:53:09.51ID:9+cif8YOSgn
0455デフォルトの名無しさん
2014/04/02(水) 01:25:50.89ID:+8s/Qgvhおお、ありがとうございました!
0456デフォルトの名無しさん
2014/04/05(土) 19:04:50.32ID:zCQPlUhYここのセミナーってどうなの?
ステマとかじゃなく純粋に気になった
ttp://sugoikaizen.com/
■ このスレッドは過去ログ倉庫に格納されています