Excel VBA 質問スレ Part14
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/01/06(水) 12:34:5801 http://pc11.2ch.net/test/read.cgi/tech/1054356121/
02 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
0002デフォルトの名無しさん
2010/01/06(水) 12:35:43前スレ http://pc12.2ch.net/test/read.cgi/tech/1254281104/
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
0003デフォルトの名無しさん
2010/01/06(水) 14:29:46このスレはいつもヒマな回答者が監視しているので、
丁寧に頼めば丸投げでもExcelと無関係でも作ってくれる可能性があります。
ただし貧弱なアルゴリズムを力業で押し通すようなコードが多いので使用には注意が必要です。
0004デフォルトの名無しさん
2010/01/06(水) 14:31:302010ではまた以前のレベルに戻る予定らしいです。
0005デフォルトの名無しさん
2010/01/06(水) 15:01:54使用例も出るので、たいていのことはヘルプで間に合うはず。ただし誤植には注意…
★たいていのことはここらのサイトに書いてあります。まずは検索。
ttp://www.asahi-net.or.jp/~ef2o-inue/menu/menu04.html
ttp://www.moug.net/tech/exvba/
ttp://officetanaka.net/excel/vba/tips/index.htm
ただし、たまに堂々と嘘が書いてあるので注意が必要。
実際に試してみて(←ここ重要)、どうしてもうまくいかない時は質問。
0006デフォルトの名無しさん
2010/01/06(水) 15:08:35専用の関数はありません。
祝日は政府が毎年、国会で勝手に作ったり変えたりするので、計算で求める方法も未来の祝日を知る方法もありません。
一覧表を用意してその中から検索するしかありません。
ネットで検索すると祝日を求める方法や関数を発表しているサイトがいくつもありますが、
それらが確実に使えるのは、その方法が発表された日までです。未来は誰にもわかりません。
0007デフォルトの名無しさん
2010/01/06(水) 15:21:261ms単位で時間を測定できる精密なタイマーは存在しません。せいぜい13〜55msが最小単位になります。
1ms単位で時間を指定できるAPIがありますが、実際の動作は適当に丸められてしまいます。
他のソフトを同時に一切動かさない、などの条件を付ければ多少は精度を上げることはできますが、
どんな環境でも確実に動作するソフトはどこにもありません。
これはWindowsそのものの仕様なので、他のプログラミング言語を使っても条件はまったく同じです。
0008デフォルトの名無しさん
2010/01/06(水) 17:34:53簡単にできないことなんて山ほどあるので、>>6-7は不要。
0009デフォルトの名無しさん
2010/01/06(水) 20:47:45b1セルに書いてるパス付ファイル名へ
コピーさせる方法ありますか?
dosでできるならばそれでお願いしたいです。
前すれでdirはできるのはわかったのですが
copyはどうなんでしょ?
0010デフォルトの名無しさん
2010/01/06(水) 20:59:510011デフォルトの名無しさん
2010/01/07(木) 00:48:40できないことはいろいろあるけど、そのあたりはとくに素人からの要望が多くてFAQに近い
0012デフォルトの名無しさん
2010/01/07(木) 03:17:150013デフォルトの名無しさん
2010/01/07(木) 05:22:33大人ならスルー
0014デフォルトの名無しさん
2010/01/07(木) 05:32:07マニアックな事が載ってるやつがいいんだが。
0015デフォルトの名無しさん
2010/01/07(木) 11:54:16>12 ウゼー
0016デフォルトの名無しさん
2010/01/07(木) 13:44:44【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 vba 書き換え
あるフォルダにエクセルファイルが何個か入っています
そのフアイル全てのVBAの一部を一括で置換することは可能でしょうか
コードの内容は、コマンドボタンを押すとプリンタを変更、印刷、プリンタを変更という内容です
(マクロの記録そのままです)
このプリンタの場所がLAN内から自分のPCのUSB接続に変わったので
その部分を書き換えたいのです
Application.ActivePrinter = "\\user001\\epsonAAA on epsonAAA"
を
Application.ActivePrinter = "epsonAAA on USBPRN01"
にしたいのです
プリンタの名前を変えればいけると思ったのですが、LAN上ということを指定していたようでダメでした
PCの名前も変えようかと思いましたがNGでした。
VBAのコードは少しずつ違いますが、このプリンタに関係するところは同じです。
分かるかた教えて下さい。よろしくお願いします。
0017デフォルトの名無しさん
2010/01/07(木) 13:45:41レス多すぎなんだぜ
0018デフォルトの名無しさん
2010/01/07(木) 14:03:09マクロ自体を外部から変更するのは無理。バイナリ弄るなら別だが・・・
今回は諦めて、どこかを参照するように変更しては?
0019デフォルトの名無しさん
2010/01/07(木) 14:42:01ありがとうございます
そうですね、テキトーなセルでも設けてそこを参照するようにします
これならいちどに帰られますしね
0020デフォルトの名無しさん
2010/01/07(木) 14:47:02CodeModule.ReplaceLineでできるんじゃないの?Bookをオープンする必要はあるけど。
ただ、一回限りの修正なら手でやった方が速いし、将来にわたって何度も修正する
可能性があるなら、マクロを直接変更するんじゃなくて、別の方法にした方がいいと思うけどね。
0021デフォルトの名無しさん
2010/01/10(日) 12:51:10ワークシートをアクティブにするには
ワークシート.Activate
で良いけど、現在アクティブなシートは何かってどうやったら判別出来るんでしょうか?
0022デフォルトの名無しさん
2010/01/10(日) 12:53:46ActiveSheet.Nameとか
0023デフォルトの名無しさん
2010/01/10(日) 12:58:59即レスありがとです
0024デフォルトの名無しさん
2010/01/10(日) 21:46:17ifの条件文で、
同じ時は =
同じでないときは <>
の記号を使いますが、
含まれているとき、という記号はあるのでしょうか?
例えば、セルA1に、ZZZという文字が含まれているとき、
という場合、
Range("A1").Value α "ZZZ"
という、αに該当する記号を探しています。
宜しくお願い致します。
0025デフォルトの名無しさん
2010/01/10(日) 21:56:14Like 演算子じゃダメかな
IF Range("A1").Value Like "*ZZZ*" Then
とか
0026デフォルトの名無しさん
2010/01/10(日) 22:03:430027デフォルトの名無しさん
2010/01/10(日) 23:16:12VBA作成で困ったので、質問させてください。
Worksheetが、とある名前だったら
そのシートを削除してしまうという処理を行いたいのですが
うまくいきません。
現在は以下のように書いています。
Dim WST As Worksheet
For Each WST In Worksheets
If WST.Name = "SheetA" Or "SheetB" Then
WST.Delete
End If
Next
0028デフォルトの名無しさん
2010/01/10(日) 23:17:57If (WST.Name = "SheetA") Or (WST.Name = "SheetB") Then
0029デフォルトの名無しさん
2010/01/10(日) 23:37:05ありがとうございました。
おかげでうまくいきました。
Dim WST As Worksheet
Dim xlAPP As Application
xlAPP.DisplayAlerts = False
For Each WST In Worksheets
If WST.Name = "Sheet2" Or _
WST.Name = "Sheet3" Then
WST.Delete
End If
Next
xlAPP.DisplayAlerts = False
0030デフォルトの名無しさん
2010/01/11(月) 00:10:31重箱を突っつくが、条件判定式は括弧で括った方が良い。
それと、最後のアラート設定は無駄かと。アラートOFF->OFF設定だが。
0031デフォルトの名無しさん
2010/01/11(月) 01:51:59>>25>>26さん有難うございます。
お陰さまで解決しました。
使わせていただきます!
0032デフォルトの名無しさん
2010/01/11(月) 04:35:16アドバイスありがとうございます。
xlAPP.DisplayAlerts = True
すいません。最後のアラートはTrueでした。
条件判定式は、ミスを減らすためにも今後は括弧で括りたいと思います。
0033デフォルトの名無しさん
2010/01/11(月) 12:24:13If WST.Name = "Sheet2" Or WST.Name = "Sheet3" Then
If (WST.Name = "Sheet2") Or (WST.Name = "Sheet3") Then
計算順序に不安になるくらいなら、
「カッコつけずにカッコを付けよ。カッコは最強」と先輩に教えられた。
それ以降、計算順序の優劣は気にしたことがない。バッチリだよ。
0034デフォルトの名無しさん
2010/01/11(月) 13:11:15( ´∀`)⊃http://livedoor.blogimg.jp/gekisha-krw/imgs/1/c/1c21ac8b.jpg
http://livedoor.blogimg.jp/gekisha-krw/imgs/3/c/3c96435c.jpg
http://livedoor.blogimg.jp/gekisha-krw/imgs/7/c/7c810d55.jpg
http://livedoor.blogimg.jp/gekisha-krw/imgs/7/6/7685930e.jpg
http://image.blog.livedoor.jp/insidears/imgs/6/c/6c39db7d.jpg
http://image.blog.livedoor.jp/insidears/imgs/7/3/73d62d94.jpg
リアルネトウヨwww
( ´∀`)⊃http://image.blog.livedoor.jp/nankai2000/imgs/1/d/1d4780bb.jpg
http://image.blog.livedoor.jp/modela/imgs/4/8/480f891c.jpg
http://image.blog.livedoor.jp/modela/imgs/9/8/98645eb2.jpg
http://www.geocities.jp/gakuen_kova17/6463868e739a.jpg
ネトウヨ絵馬www
( ´∀`)⊃ http://lh6.ggpht.com/_iobkCWer7BA/SofHLI5OEXI/AAAAAAAAA9k/Lb83dzBTb7A/s640/IMG_1644.JPG
http://lh3.ggpht.com/_iobkCWer7BA/SofHLV_WH6I/AAAAAAAAA9s/g_7GS7pJkNk/s640/IMG_1645.JPG
http://lh4.ggpht.com/_iobkCWer7BA/SofHLyy5V_I/AAAAAAAAA90/qfSq8h0vzeE/s640/IMG_1648.JPG
http://lh4.ggpht.com/_iobkCWer7BA/SofHNXSfp7I/AAAAAAAAA-I/d9-LGGNyIyM/s640/IMG_1653.JPG
0035デフォルトの名無しさん
2010/01/11(月) 16:53:10「Or演算子より=演算子が優先されるから括弧はつける必要なし」
とかカッコいいこと言いたいけど、やっぱ括弧つけたほうが見やすいし
優先順位とか面倒なこと考えなくていいから俺も括弧つける派だな
>「カッコつけずにカッコを付けよ。カッコは最強」
激しく同意、すばらしい先輩だね
0036デフォルトの名無しさん
2010/01/11(月) 18:02:38Excel 2000 , Win XPです。
ボタンを作って、そこにVB書いて、いろいろと便利に使っていますが、
ボタンはマウスで行う必要があります。これをキーボードでやりたいのですが、
方法はありますでしょうか? 具体的には、
「S」で「開始ボタン」をクリックと同じ効果、
「T」で「停止ボタン」をクリックと同じ効果、とかです。
あるいは、複合でCTRL+Sとか、ALT+Uとかでも良いです。
マウス操作だと、ボタンの上にポインタを持っていく→ボタン狙う→クリックする。となります。
「うわぉ、緊急停止だ!」と言うときでも、まがマウスを探して、握って、ボタンに重ねて、クリック。
ちょっと面倒なのですが。
宜しくお願いします。
>>35
経験者(というか苦労してきた人)は、言うことが違いますよね。
ありがとうございました。
0037sage
2010/01/11(月) 18:49:300038デフォルトの名無しさん
2010/01/11(月) 21:30:11http://www42.atwiki.jp/syugyou?cmd=upload&act=open&pageid=236&file=ttt.zip
0039デフォルトの名無しさん
2010/01/11(月) 23:31:40Sub test()
Dim x(1 To 5) As Integer
For i = 1 To 5
x(i) = 2 * i
Next i
Range("a1:e1").FormulaArray = x '(1)○
Range("g1:g5").FormulaArray = x '(2)×
End Sub
0040デフォルトの名無しさん
2010/01/12(火) 00:32:45Range("g1:h6").FormulaArray = x 'ってすると
0041デフォルトの名無しさん
2010/01/12(火) 01:00:51匿名掲示板ののパス付マクロなんぞ怖くて開けんw
感想欲しいなら、パス解除 or どこかのHP掲載しないと誰も見ないと思うよ
変なことしないか確認できんしwww
004238
2010/01/12(火) 05:36:31一応パスはfukunyuu
標準モジュールが一個とブックとフォームにイベントが一個ずつ
0043デフォルトの名無しさん
2010/01/12(火) 08:20:32ウザイ
よそでヤレ
0044デフォルトの名無しさん
2010/01/12(火) 08:21:390045MS HELPDESK
2010/01/12(火) 13:46:05Sub ArrayDump2() 'For a two dimensional vertical array
'Declares an array ten rows by one column
Dim x(1 To 10, 1 To 1) As Double
'Calculates random values
For j = 1 To 10
x(j, 1) = j * j
Next j
'Transfers array contents to a vertical area
Range(Cells(1, 1), Cells(10, 1)).FormulaArray = x
End Sub
0046デフォルトの名無しさん
2010/01/12(火) 23:08:59Range("g1:g5").FormulaArray = _
Application.WorksheetFunction.Transpose(x)
0047デフォルトの名無しさん
2010/01/14(木) 15:46:47VBAでWorksheetFunction.Averageを実行しようとすると、
WorksheetFunctionクラスのAveraegプロパティを取得できません
というエラーが 下のCells(i, 8) = の部分で発生します。
For i = idou_array(0) + 4 To last_row
Cells(i, 8) = Application.WorksheetFunction.Average(Range("H" & i - idou_array(0) + 1, "H" & i))
Next
idou_array(0)には5という数字が入っています。
ツールからアドインで分析ツール、分析ツール(VBA)は入れてあります。
どうすれば計算できるようになるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています