トップページtech
1001コメント373KB

Excel VBA質問スレ Part8

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/08/25(月) 23:16:33
ExcelのVBAに関する質問スレです

前スレ 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)
0002デフォルトの名無しさん2008/08/25(月) 23:18:54
過去スレ
01 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/
0003デフォルトの名無しさん2008/08/25(月) 23:28:51
>>1
0004デフォルトの名無しさん2008/08/25(月) 23:31:24
>>995
入力文字列の書式が「999-9999-9999」か「9999-99-9999」だけなら、

x = split(入力文字列,"-")
x(0)="(" & x(0) & ")"
debug.print join(x,"-")
0005デフォルトの名無しさん2008/08/25(月) 23:32:46
あと>>1otu
0006デフォルトの名無しさん2008/08/25(月) 23:51:55
VBEってかなりイカスよな。なんていっても使いやすい。
これだけコンパクトに洗練されたIDEってほかにないだろ?
しかもお手頃。Excelに最初からついてくるんだぜ。
そんでExcelからマクロの記録とかやれば馬鹿でもチョンでもコードがかけるの。
こんな素晴らしい機能は他に類をみないよね。
もうビルゲイツさまさまってかんじ?
ろくにシェルスクリプトもかけないのにわざわざLinuxとか使ってる奴もったいねーw
とりあえずビルゲイツさまが提供してくださるOSとソフトウェアを使っていればいいんだよ。
0007デフォルトの名無しさん2008/08/26(火) 00:00:04
釣りも乙
0008デフォルトの名無しさん2008/08/26(火) 20:56:28
>前スレ985
ならんぞ。どういうパターンの話?
もしかして型変換起こしてるとか?
0009デフォルトの名無しさん2008/08/26(火) 22:43:02
>970
です。
いろいろなことを教えていただきありがとうございます。

ひとつひとつやってみます。

またなにか聞くかもしれませんそのときはお願いいたします。
0010デフォルトの名無しさん2008/08/27(水) 12:59:04
VBAで、構造体をTypeで定義する場合、変数を持たせることができるのは理解しています。
関数も持たせたいのですが可能でしょうか?
0011デフォルトの名無しさん2008/08/27(水) 13:56:15
クラスじゃだめなの?
0012デフォルトの名無しさん2008/08/27(水) 15:18:29
なるほど、クラスがありましたか!
ちょっと調べてみます。
0013デフォルトの名無しさん2008/08/27(水) 22:06:17
シート上の特定の列にオートシェイプを1行ずつ(1セルずつ)表示したりすべて消したりするマクロを作りたいと思っています。
並べて表示させるのはなんとなくわかるのですが、すべて削除するマクロがわかりません。

その列以外にもオートシェイプがあるのでDrawingObjects.Delete は使えないと思いますし、
マクロを記録しながら、オブジェクトの選択を選んで消したい箇所をドラッグしてDELしても
ActiveSheet.Shapes.Range(Array("AutoShape 260", "AutoShape 261")).Select
Selection.Delete
とオートシェイプの番号を指定して削除しているのでマクロには使えなさそうです。
マクロで使えるオートシェイプの削除方ってありませんか?
0014デフォルトの名無しさん2008/08/27(水) 22:19:54
key使えばよくね
0015デフォルトの名無しさん2008/08/27(水) 22:50:39
>>14
もう少し詳しくお願いします。
0016デフォルトの名無しさん2008/08/28(木) 00:40:08
座標をセルの幅と高さから計算してとりあえずシェイプの作成はできるよな。
んで作成時にkeyプロパティに座標(行,列)を文字列で格納しておくんだ。
あとはActiveSheet内のシェイプを走査して、特定の座標のシェイプを指定
して削除できると思うよ。
ActiveSheetの行or列orセルが削除されたらシェイプのkeyプロパティに格納
されている座標を更新する処理を加えれば完璧じゃね?
0017デフォルトの名無しさん2008/08/28(木) 20:54:48
ページの書式設定をVBAでやると遅いですよね。
ExecuteExcel4macroでやると速いんですが、
書式が通常と全く異なるので記述が難しい。
順番が決まってるし、""で囲む部分とかどうやったら良いのやら。
誰か上手いこと解説して下さい。
0018デフォルトの名無しさん2008/08/28(木) 22:37:59
subとfunctionについて教えてください。

何度も同じ処理をcallする場合に、処理を記述するのは、
sub と function、どちらにすべきでしょうか。
引数無しの記述なので、どちらで記述して呼び出しても同じ結果が出るのですが、
正しい使い方を覚えたいと思います。

よろしくお願いします。
0019デフォルトの名無しさん2008/08/28(木) 22:39:39
戻り値があればFunction、なければSub以外にやり方があるのか?
0020デフォルトの名無しさん2008/08/28(木) 22:40:42
subがいいよ
0021デフォルトの名無しさん2008/08/29(金) 08:38:25
初めての投稿です。よろしくお願いします。

Excel でコンマおよび引用符を区切り文字としてデータをテキスト ファイルにエクスポートするマクロ
http://support.microsoft.com/kb/123183/ja

上記のようなマクロを求めています。
例えばexcel上に、
1 2 3
4 5 6
という表があれば、
"1","2","3"
"4","5","6"
というテキストファイルに吐き出したいのです。
例では、囲い文字='"' 、 区切り文字=',' としましたが、両方とも簡単に変更出来るとなお良いです。

どなたかとっかかりでも良いですからアドバイスを下さい。よろしくお願いします。
0022デフォルトの名無しさん2008/08/29(金) 08:43:20
>>21
釣りじゃないなら、「名前をつけて保存」のcsvを飽きるほど試してみるんだ。
0023デフォルトの名無しさん2008/08/29(金) 08:54:11
>>22
回答ありがとうございます。

保存形式にcsvを選べばカンマ区切りのテキストファイルが得られるのは知っていますが、
それでは囲い文字までは指定できないと思います・・・。
それとも私の知らない機能があるのでしょうか?
0024デフォルトの名無しさん2008/08/29(金) 09:33:10
セルが文字列なら括られるべ。
0025デフォルトの名無しさん2008/08/29(金) 10:27:01
>>24
セルの書式を文字列に変更してcsv形式で保存しましたが、
""で括られることはありませんでした。ごめんなさい。

ちなみにセルの内容自体を"1"などとしてcsvで保存すると、
なぜか"が増えて"""1"""となってしまいます。

EXCELの機能のみで実現できるのならばそれにこしたことはないのですが、
色々調べた結果、これはマクロを組まなければ実現できないみたいなんです。
どうか、マクロを使った方法を教えていただけないでしょうか?

私の足りない頭では、まずベタにcsvで吐き出した後、
テキストエディタを使って正規表現で , や先頭を置換していく方法しか分かりません。
1ファイルだけならそんなに手間はかかりませんが、大量のファイルを処理したい場合、
マクロを使えたら便利だと思い質問させて頂いてます。
0026242008/08/29(金) 10:46:51
ありゃ、ダメだっけ。そりゃ失敬。
んじゃ、1を'1にしたらどう?
# つーか、理由が判らんから喰い付きが悪いんじゃないだろか。
■ このスレッドは過去ログ倉庫に格納されています