Excel VBA質問スレ Part8
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/08/25(月) 23:16:33前スレ http://pc11.2ch.net/test/read.cgi/tech/1212587819/
★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)
0134デフォルトの名無しさん
2008/09/07(日) 15:39:470135デフォルトの名無しさん
2008/09/07(日) 15:45:400136デフォルトの名無しさん
2008/09/07(日) 15:46:46知ったか振っててうざいんだもん
これぐらい言わせなよ
0137デフォルトの名無しさん
2008/09/07(日) 15:51:180138128
2008/09/07(日) 15:52:01言われた事から、相手がなぜそうしたいのか、ではどういう方法が適切かくらい想像しろよ、と思うね
おまえら自分の知ってることが唯一の回答であるようにこじつけてるだけだろ。
そういうのをバカの一つ覚えって言うんだよ。
でも回答ありがとう。じゃね。
0139デフォルトの名無しさん
2008/09/07(日) 15:52:320140>137
2008/09/07(日) 15:53:300141デフォルトの名無しさん
2008/09/07(日) 15:53:470142デフォルトの名無しさん
2008/09/07(日) 15:55:070143デフォルトの名無しさん
2008/09/07(日) 15:56:220144デフォルトの名無しさん
2008/09/07(日) 15:59:210145デフォルトの名無しさん
2008/09/07(日) 16:01:56最低限1から5くらいまで説明しようぜ。
俺らお前のお母さんじゃないんだからよ。
0146デフォルトの名無しさん
2008/09/07(日) 16:02:48出来ないことは出来ないと説明した上で代替案を示すなら
ここまで荒れないと思うのだが。
条件に反することを回答するからこうなる
0147デフォルトの名無しさん
2008/09/07(日) 16:03:39でできると思うぜ。
0148デフォルトの名無しさん
2008/09/07(日) 16:10:34えっ?
>128を1から5くらいの説明で理解できるのか?
最近のお母さんてスペック高いんだな!
0149デフォルトの名無しさん
2008/09/07(日) 16:11:33他にもっとシンプルなやり方が無いのかな、って思っただけ。
0150デフォルトの名無しさん
2008/09/07(日) 16:12:30非表示だけど、ファイル開いてるからNGだろ。
想像力のない俺からすれば、元の質問自体がNGだけどな。
0151デフォルトの名無しさん
2008/09/07(日) 16:13:040152デフォルトの名無しさん
2008/09/07(日) 16:14:32ファイル開かずにファイルを変更するなんて方法があったら俺が知りたいな
0153デフォルトの名無しさん
2008/09/07(日) 16:16:31まさかとは思うがプログラム板なのにAccessのVBAを知らん奴がいるのか
0154デフォルトの名無しさん
2008/09/07(日) 16:20:310155デフォルトの名無しさん
2008/09/07(日) 16:23:380156デフォルトの名無しさん
2008/09/07(日) 16:24:490157128
2008/09/07(日) 16:38:58低能エクセル厨乙w
0158デフォルトの名無しさん
2008/09/07(日) 16:49:47それから自分の質問と回答を100回音読しろ。
0159デフォルトの名無しさん
2008/09/07(日) 16:56:430160デフォルトの名無しさん
2008/09/07(日) 18:49:05が見えない
0161デフォルトの名無しさん
2008/09/07(日) 20:20:00お勧めの参考書はありますか?元制御系プログラマで
プログラミングの基本は充分できています。
技術評論社のポケットリファレンスはどうですか?
0162デフォルトの名無しさん
2008/09/07(日) 20:25:06win32APIを勉強したいのですが、お勧めの本ってありますか?
使用目的はExcel VBAで呼び出す事です。
0163デフォルトの名無しさん
2008/09/07(日) 20:29:47ぐぐることも出来ないの?
0164デフォルトの名無しさん
2008/09/07(日) 23:32:310165デフォルトの名無しさん
2008/09/08(月) 00:05:080166デフォルトの名無しさん
2008/09/08(月) 03:03:140167デフォルトの名無しさん
2008/09/08(月) 03:08:05結局お前らAccessVBAが理解できなかっただけ佳代w
低能エクセル厨乙w
こいつリアルでもこんな感じなんだろうな
0168デフォルトの名無しさん
2008/09/08(月) 07:45:44マジレスするとWin32APIの為に本を買うのはもったいない。
MSDNとネット上のAPIサンプル集とかで十分。
0169デフォルトの名無しさん
2008/09/08(月) 19:00:04上のようなことの逆は可能ですか?
例えば、セルAに映画のタイトルが縦に並んでて、
セルBにはその映画の詳細が見れるHPアドレスが沢山並んでます。
セルBのそれぞれのアドレスを、セルAに一括でハイパーリンクさせる(埋め込む)
方法が知りたいです。
ご教授、宜しくお願い致します。
0170デフォルトの名無しさん
2008/09/08(月) 19:41:350171デフォルトの名無しさん
2008/09/08(月) 20:08:18循環参照になってる
0172デフォルトの名無しさん
2008/09/08(月) 20:09:260173y
2008/09/08(月) 20:21:47セルB1にあるアドレスを、セルA1にハイパーリンクとして埋め込むのは、
次のようにすればできます。
Sheet1.Hyperlinks.Add Anchor:=Cells(1, "a"), _
Address:=Range(1, "b"), _
TextToDisplay:=Cells(1, "a").Value
(マクロの記録を使って、ハイパーリンクを埋め込む動作を記録してみれば簡単です)
これをループで括って、「1」となっているところ(これは行番号にあたります)を
変えていけば、お好みの行数分操作できます。
0174y
2008/09/08(月) 20:25:13169はマルチポストだったんですね。
気づかずに答えてしまいました。
>>169
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
一度ここを読んでおいてください。
0175デフォルトの名無しさん
2008/09/08(月) 20:29:35?
0176y
2008/09/08(月) 20:29:41Address:=Range(1,"b") → Address:=Cells(1,"b")
0177169
2008/09/08(月) 21:03:00ツール→マクロ→VBA→標準モジュールに保存した後、
マクロ実行してみたけどできません。
初心者なんでもう少し詳しく教えていただけませんか?
0178169
2008/09/08(月) 21:54:01行数分操作ができません。
Cells(1, "a"),
1の部分の範囲指定はどうすればいいの?
0179169
2008/09/08(月) 21:55:21一括で変更できると助かります
0180デフォルトの名無しさん
2008/09/08(月) 22:01:320181デフォルトの名無しさん
2008/09/08(月) 22:27:39いろいろ調べてもわからねぇよ
質問スレなんだから聞いてるんだろ。。意地悪しねぇで教えろよ。
その気がないなら返信するな
0182デフォルトの名無しさん
2008/09/08(月) 22:45:30な
0183デフォルトの名無しさん
2008/09/08(月) 22:46:160184デフォルトの名無しさん
2008/09/08(月) 23:16:260185デフォルトの名無しさん
2008/09/08(月) 23:40:480186デフォルトの名無しさん
2008/09/08(月) 23:43:520187デフォルトの名無しさん
2008/09/09(火) 01:33:11「XML入門」みたいな本はたくさん見るんですけど、あれって具体的なコーディングについては記述が無いorごく少ないですよね。。。
あってもPHPとかばっかりだし。。。
0188デフォルトの名無しさん
2008/09/09(火) 08:48:08まともな頭があればVBAでCOM(XMLDOM)使ってXML扱うくらい、
ネットの情報だけで事足りる
0189デフォルトの名無しさん
2008/09/09(火) 10:31:32↓のを作ったのですが、出来ません。どうすればいいですか?
SOLVERの参照設定はやりました。
Sub Macro1()
Dim x As Integer
For x = 1 To 5
Range("Cells(x, 3)").Select
SolverOk SetCell:=Cells(x, 5), MaxMinVal:=3, ValueOf:="0", ByChange:=Cells(x, 2)
SolverSolve Userfinish:=True
Next x
End Sub
0190y
2008/09/09(火) 19:35:50173の後半を、もう少し具体的に書きます。
まずループ用の変数rを宣言し、ここでは例として
For 〜 Next間を5回繰り返すループを示しておきます。
Dim r as Long
For r = 1 to 5
Sheet1.Hyperlinks.Add Anchor:=Cells(r, "a"), _
Address:=Cells(r, "b"), _
TextToDisplay:=Cells(r, "a").Value
Next
繰り返しのたびに、rは1, 2, 3, 4, 5と変化していくので、
上のコードでは1〜5行目に対する操作が行われることになります。
初心者の方なら、「VBA デバッグ」などで検索してみて、この過程を
一つ一つ目で確認する方法を身につけると、上達が早くなります。
For r = Inputbox("開始行?") to InputBox("終了行?")
とすれば、処理をしたい行の範囲を簡単に指定できますが、
もっと便利にしたければ、自分でも他の方法を色々調べてみてください。
質問する時は、どんなに間違っていてもいいので、とにかく何か自分なりに
調べて考えたコードを貼って、それに対するアドバイスを求めた方がいいですよ。
181のようなことを書くと、>>1の★5にあるように、「また丸投げか」と
怒りを買ってしまいます。
0191y
2008/09/09(火) 20:01:47マクロの記録を使って、ソルバーでやりたい作業をマウスでやってみて、
どんなコードが記録されるか確かめてみてください。(>>1★5)
189のコードについては、
@単純な構文ミス Range("Cells(x, 3)").Select → Cells(x, 3).Select
A目的セルをどこにしたいのか、可変セルをどこにしたいかが不明
です。特に、Aが分からないとアドバイスができません。
0193デフォルトの名無しさん
2008/09/09(火) 20:44:23ご親切にありがとうございました。
勉強になりました
0194デフォルトの名無しさん
2008/09/09(火) 22:41:34すみません
目的のセルがCells(x, 5)で、可変セルがCells(x, 2)のつもりでした。
で、@のやつをやったら出来ました。
ありがとうございました。
0195デフォルトの名無しさん
2008/09/09(火) 22:50:31何か作ろうと思うのですが…自分では思いつかないので…
何か問題お願いします。
0196デフォルトの名無しさん
2008/09/09(火) 22:57:53このスレを集計してyの貢献度を調査せよ。
0197195
2008/09/09(火) 23:04:59ラジャ
0198デフォルトの名無しさん
2008/09/09(火) 23:34:22A列には文章が入っています。
B列には文章に含まれる単語、C列にはコード番号が入っています。
それぞれ数百〜数千行になります。
A列にはB列の単語のいずれかが含まれる場合には、
単語に対応するC列のコードをD列に表示させたいのですが、
どのような式がよいでしょうか。
VLOOLUPやFINDなどを組み合わせてみても上手くいきません。
お手数ですが、どなたか至急お教え願えますでしょうか。
0199デフォルトの名無しさん
2008/09/10(水) 00:31:40このスットコドッコイ
0200デフォルトの名無しさん
2008/09/10(水) 07:26:43B列…デフォルト、セル、スットコドッコイ
C列…E46194、H23t55、342421
0201デフォルトの名無しさん
2008/09/10(水) 07:44:070202デフォルトの名無しさん
2008/09/11(木) 00:16:48c:\aaa 配下にある全てのファイルとサブフォルダを
c:\bbb 配下に全てコピーする事は可能ですか?
また、サンプルコード等ありましたらヒントを頂けると助かります
色々と探してはいるのですが、いまいちピンとこないので
サンプルがあると助かるのですが、、、、
VBAはまだまだ初心者なので未熟者で恐縮です。
0203デフォルトの名無しさん
2008/09/11(木) 06:12:54>>1★3 ★4
0204デフォルトの名無しさん
2008/09/11(木) 19:30:310205デフォルトの名無しさん
2008/09/11(木) 19:59:47AddItemで追加した後にシートを
Xボタンを押して閉じようとすると
変更を保存しますかと聞かれるんですが
このチェックを外す方法ってあります?
OSはXPでExcel2003です。
0206y
2008/09/11(木) 20:15:03文章中の、特定の単語の有無の判定なら、たぶんInStr関数で何とかなると思います。
調べてみて使えそうなら使ってください。
>199にもありますが、具体的なデータが分からないとアドバイスしずらいです...
0207y
2008/09/11(木) 20:17:20どんな業界で働いている方か分かりませんが、
実務に役立つ知識が増すようなテーマを選ぶと、
何かと都合がいいのではないでしょうか。
為替、株式市況、地価、青果水産物市況など、
ネット上にはたくさんの生データが公開されています。
それらを自動的に取得し、テーマに沿って演算し、
レポートを出力するマクロを組むだけでも、
相当勉強になると思います。
やるのであれば、日々刻々と変化する数字の方が面白いです。
例えばある人は、東京に10数箇所ある中央卸売市場の毎日の市況データを
取得し、各市場の卸売価格差をグラフに出力するマクロを作っていました。
仲買業者なら、どこの市場で買い付けをすれば一番安いか、
逆に生産者なら、どこの市場に出荷すれば一番高いか、
一目で分かるというものです。ちなみに彼は商社に勤めていますが、
似たようなことをしている人は結構いるでしょう。
Excelは基本的にデータ処理の道具なので、何を試すにしても、
まずは題材になるデータを見つけてこなければなりません。
ならば自分が、分析対象として最も興味を覚えるデータを選ぶのがベターです。
その上で、自分のスキルに応じた試行錯誤をしてみればいいと思います。
仮に「VBA解説書に載っている多機能な家計簿を作るんだ」と決意したとして、
自分で小遣い帳をつけているほどの人ならともかく、付属CDに入っている
仮想データを使って作っていくようなやり方は、モチベーションが湧きづらい
ように感じます。
0208デフォルトの名無しさん
2008/09/11(木) 22:02:380209デフォルトの名無しさん
2008/09/11(木) 23:07:26×しずらい
○しづらい
◎しにくい
0210デフォルトの名無しさん
2008/09/12(金) 01:38:18WindowsVBAつくってよ
0211デフォルトの名無しさん
2008/09/12(金) 03:36:310212y
2008/09/12(金) 20:05:30「シートを Xボタンを押して閉じようとすると」とありますが、
シートに×ボタンはないので、たぶん「ブックを」のつもりでしょうか。
「変更を保存しますか」というメッセージは、ブックを保存した直後の状態であれば
表示されません。この状態は、WorkbookオブジェクトのSavedプロパティをTrueに
することで、強制的に作り出すことができます。
ブックが閉じられる直前に、その操作が自動で行われるようするためには、
ThisWorkbookオブジェクトのコード領域にBeforeCloseイベントを挿入し、
その中でSavedプロパティを操作します。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub
0213デフォルトの名無しさん
2008/09/12(金) 20:44:060214デフォルトの名無しさん
2008/09/12(金) 20:51:26お前がな
0215205
2008/09/12(金) 22:35:11ありがとうございました。
0216デフォルトの名無しさん
2008/09/13(土) 00:10:190217y
2008/09/13(土) 02:54:400218デフォルトの名無しさん
2008/09/13(土) 03:49:120219デフォルトの名無しさん
2008/09/13(土) 06:49:480220デフォルトの名無しさん
2008/09/13(土) 07:14:090221デフォルトの名無しさん
2008/09/13(土) 08:56:370222デフォルトの名無しさん
2008/09/13(土) 09:06:33嫌ならNGしとけ。
0223デフォルトの名無しさん
2008/09/13(土) 09:25:580224デフォルトの名無しさん
2008/09/13(土) 10:01:340225デフォルトの名無しさん
2008/09/13(土) 11:55:22だけど、挿入する行をセルの値から指定したい場合はどうすればよいですか?
例
B2 = 3
3行目と4行目の間に行挿入をするようB2をつかってさせる。
0226デフォルトの名無しさん
2008/09/13(土) 13:16:55i = Range("B2")
Rows(i).Insert
0227デフォルトの名無しさん
2008/09/13(土) 13:18:30Rows(Range("B2")).Insert
0228デフォルトの名無しさん
2008/09/13(土) 14:07:04助かります、ありがとうございました。
0229y
2008/09/13(土) 16:13:470230デフォルトの名無しさん
2008/09/13(土) 22:03:030231デフォルトの名無しさん
2008/09/13(土) 22:16:440232デフォルトの名無しさん
2008/09/13(土) 22:33:410233デフォルトの名無しさん
2008/09/13(土) 23:38:26■ このスレッドは過去ログ倉庫に格納されています