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)
0115デフォルトの名無しさん
2008/09/06(土) 17:04:48113 です。早速のお教え有難う御座います。
なんらか値を返す様に変更します。
0116デフォルトの名無しさん
2008/09/06(土) 17:10:04Sub main()
Call abc()
End Sub
Sub abc()
---
End Sub
戻り値の型がvoidの関数はSub、それ以外はFunction。
戻り値を受け取らない場合、Sub/FunctionにかかわらずCallを付ける(Call使わない記法もあるけど)。
0117デフォルトの名無しさん
2008/09/06(土) 17:30:42113 です。いろいろお教え戴き有難う御座います。
この方法が簡単なので採用させて戴きます。
0118デフォルトの名無しさん
2008/09/06(土) 18:07:40>>116
113 です。プログラム作成途中ですが、両方とも必要になりましたので、
共に採用させて戴きます。いろいろと、有難う御座いました。
0119デフォルトの名無しさん
2008/09/06(土) 21:14:050120デフォルトの名無しさん
2008/09/06(土) 23:37:07身に染み付いてるから、SubとVoid関数は非常にきもちわるい。
0121デフォルトの名無しさん
2008/09/06(土) 23:38:230122デフォルトの名無しさん
2008/09/07(日) 00:36:46よほどのことがないかぎり作らない。むしろ121がしろうと
0123デフォルトの名無しさん
2008/09/07(日) 00:52:19VBAスレで恥ずかしい事いうなよおっさん。
0124デフォルトの名無しさん
2008/09/07(日) 01:49:03VBAで純粋関数型プログラミングは無茶があるだろ、常識的に考えて。
012589
2008/09/07(日) 03:31:47必殺コピペです。
グローバルエリアに変数定義しようとしたらDimと打った時点でエラーメッセージが頻発
変数書こうとしても打っている途中でメッセージ頻発して書けない。
どこかにエラーチェックのタイミングプロパティがあると思うがコピペで解決したから諦めようかと思います
0126デフォルトの名無しさん
2008/09/07(日) 07:55:300127デフォルトの名無しさん
2008/09/07(日) 10:23:410128デフォルトの名無しさん
2008/09/07(日) 14:27:52AccessのTransferSpreadsheetでエクセルの任意シートへデータを出力していますが、
エクセルファイルを開いた時に、値を出力したシートがアクティブになっているようにしたいのです。
0129128
2008/09/07(日) 14:30:040130デフォルトの名無しさん
2008/09/07(日) 14:45:07Sheets("hoge").Activate
Sheets("hoge").SaveAs "c:\hoge.xlsx", xlWorkbookNormal, , , True
0131128
2008/09/07(日) 15:15:51そのやり方だとインデックスエラーになっちゃうんですけど。
0132デフォルトの名無しさん
2008/09/07(日) 15:26:27ファイルオープン(非表示)
シートをアクティブにする
保存
0133デフォルトの名無しさん
2008/09/07(日) 15:30:41結局ファイルを開かなきゃいけないってことですね。どうもありがとうございました。
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お前がな
■ このスレッドは過去ログ倉庫に格納されています