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

Excel VBA 質問スレ Part36 [転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2015/01/09(金) 16:59:02.80ID:GzFHQ3J4
ExcelのVBAに関する質問スレです

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。

 VBAとは、『Visual Basic for Applications』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)

前スレ:Excel VBA 質問スレ Part35
http://peace.2ch.net/test/read.cgi/tech/1414186311/

関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0175デフォルトの名無しさん2015/01/24(土) 23:31:08.28ID:4KWVQwlI
はい、ごめんなさい。
向こうのスレに戻ります。
0176デフォルトの名無しさん2015/01/24(土) 23:47:03.79ID:LIgrDPe3
前もこんな流れで荒れたり白けたりしてたよな・・・
テンプレ守れってのは分かるけど、ちょっとな・・・
0177デフォルトの名無しさん2015/01/24(土) 23:51:10.58ID:LJy0wi3+
>>64
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
0178デフォルトの名無しさん2015/01/24(土) 23:52:38.15ID:KEoUQ8Iu
自分も>>4のスレ行きます
0179デフォルトの名無しさん2015/01/24(土) 23:56:43.86ID:4KWVQwlI
>>176
仕方ないよ。忘れてたけどこのスレはテンプレが絶対なんでしょ?
俺はあまり気にしてなかったけど、そう言うことなら仕方ない。
それ用のスレあるし。
0180デフォルトの名無しさん2015/01/25(日) 18:06:28.80ID:tAhczX8T
むこうの1がテンプレが悪いってことにするためにわざと荒らすからねぇ
0181デフォルトの名無しさん2015/01/25(日) 22:30:57.90ID:4QrMsa9l
VBAの構造化プログラミング初心者ですが
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/images/04_Structure02.gif
この図の全体制御に対して呼び出すプロシージャー(主制御)の下に

条件に応じて実行させる処理が300通りほどありプロシージャーを300個つくりどれか一つを呼び出して処理するように書くと
途中で処理能力の限界に達してErrorが発生します。

300の処理を1つのプロシージャーに書きセレクトケースで実行させようと書きましたがやはり容量オーバーで実行できません。

現状妥協策としてしょりを100に絞って1つのプロシージャーにセレクトケースで条件に応じた処理を選択し実行するように書いていますが、
選択肢が沢山有る処理をプロ大量のシージャーにわけて管理することはできないのでしょうか? 単純にこれをやるとループ処理させたときに
数秒たつとすぐに処理の限界というようなErrorが出ます。
01821812015/01/25(日) 22:56:23.58ID:4QrMsa9l
>>181
書き方がわかりにくくて済みません
要は

全体制御
  |
子制御1、子制御2

に対して 孫制御が300個あり
子制御が実行するのは300のうちの1つだけで

複数の子制御で併用して使えるよう300個のプロシージャーにわけて書いて
条件に応じてそのプロシージャーを呼び出すようにしますと構造化プログラミングのルールに違反するようでErrorとなりますという話ですが
こういう場合は一体どう組めばいいのでしょうか?
0183デフォルトの名無しさん2015/01/25(日) 23:05:41.21ID:khShqkpM
>>181
★2 ExcelのVBA以外の部分に関する質問はNGです。
0184デフォルトの名無しさん2015/01/25(日) 23:15:36.65ID:PLw+K7Cf
>>180
それでもテンプレのコピペでスレ違いになるんなら、テンプレに問題があるか、
レスに問題があるんじゃないの?

>>181
どうやらここではスレ違いらしいので、下記のスレで
http://peace.2ch.net/test/read.cgi/tech/1419718732/l50
0185デフォルトの名無しさん2015/01/25(日) 23:33:00.57ID:iT4+Hxbi
vbaでエクセル上で散布図グラフを作成するのですが、皆様のご知見をご教授頂きたいです。

1、グラフで散布図を書く
2、近似曲線を直線、指数、対数、多項式と4種類重ねて表示させる
3、一番R2が高い曲線だけ残して、他の曲線を消す

というマクロを組んでいるのですが、
例えば、
.SeriesCollection(1).Trendlines(1)が直線
.SeriesCollection(1).Trendlines(2)が指数曲線
.SeriesCollection(1).Trendlines(3)が対数曲線

としたときに、
.trendlines(2).deleteにしても、.trendlines(3).deleteにしても、
なぜか.trendlines(1)が消去されてしまいます。
あげく、
.trendlines(2).select
selection.delete
と書いても、やはりtrendlines(1)が消去されてしまいます。

.trendlines(1)以外が削除できないのはどのような原因が考えられますでしょうか。
0186デフォルトの名無しさん2015/01/26(月) 00:15:50.90ID:T/6/Lmwg
>>183
ExcelのVBAで起きている問題ですので宜しくお願い致します。
0187デフォルトの名無しさん2015/01/26(月) 00:28:38.48ID:gVLbs092
>>186
どうしてこのスレにこだわるw
もう一方のスレなら制限が緩いんだから、素直にそっち行った方が良くないか?

たぶん、>>1
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
に引っかかってるんだと思うぞ
0188デフォルトの名無しさん2015/01/26(月) 00:36:48.78ID:pD45ZdVE
>>182
>複数の子制御で併用して使えるよう300個のプロシージャーにわけて書いて

300でエラー出るそうだが100位に減らすと出ないのか?
300で実行中にタスクマネージャーでexcelのメモリー消費量がどんどん増えて行くのか?
0189デフォルトの名無しさん2015/01/26(月) 00:45:46.23ID:Vf+uB+Jv
>>182
エラー番号とエラーメッセージを正確に教えて
0190デフォルトの名無しさん2015/01/26(月) 00:58:46.96ID:ajD/biY/
>>186
処理の限界というようなErrorってなんだよ
0191デフォルトの名無しさん2015/01/26(月) 10:04:58.09ID:WvtN1ik0
エラーメッセージがあった場合、その正確な文言を報告する。またはそれでググルというのが
普通の能力を持った人間ができること。
つまり>>185 は無能力故に作ったモノが動かないのであって決してExcel VBAのせいではない。
0192デフォルトの名無しさん2015/01/26(月) 10:39:14.60ID:7PO1Rygt
>>191
アンカーもまともにつけられない無能乙
0193デフォルトの名無しさん2015/01/26(月) 11:15:08.23ID:o5EuO8YW
アンカにまともとかあんの?
頭につけてさらに改行しなきゃいけないとか?
パースの弱いまとめサイトか何かか?
こんなスレを二次利用するとかあんのか?
>>192

>>191
エラーなんて書いてないけど「場合」としているから問題ないとか卑怯だからな
憶測で人を蔑めるお前は能力云々以前にどうしようもない奴だよ
isis行けよゴミ

>>185
原因知らね
set target = .SeriesCollection(1).Trendlines(2)
target.delete
も同じ結果?VBAの常識的には異常だね、なんだろうね
ヘルプとかにヒントないの?(興味本意)
0194デフォルトの名無しさん2015/01/26(月) 11:30:41.12ID:eJA+Ejea
>>193
> アンカにまともとかあんの?

レス番間違えてるってことだろ
0195デフォルトの名無しさん2015/01/26(月) 20:21:12.52ID:ajD/biY/
>>185
そんなわけないだろうと思いつつ2007で試したら再現したわ
原因や解決方法が欲しいなら、マイクロソフトに問い合わせをお勧めする

上の方にもなんかあったけど、グラフって結構あやしいんだよなぁ
0196デフォルトの名無しさん2015/01/26(月) 23:04:30.68ID:h7ndqy83
MSから金をとれるときいて
0197デフォルトの名無しさん2015/01/27(火) 01:33:16.01ID:upRrWRGK
>>186
テンプレを守れない奴に回答するつもりはない
0198デフォルトの名無しさん2015/01/27(火) 07:41:58.62ID:juhI5XvQ
>>197
べつにアンタだけが回答者じゃないんだから
答えられないなら黙ってスルーしときなさいよ
0199デフォルトの名無しさん2015/01/27(火) 14:48:06.31ID:YTyfrIUd
vbaのsheetモジュールに書くと、C++などで言うクラス内メソッドになるんでしょうか
0200デフォルトの名無しさん2015/01/27(火) 14:49:06.88ID:YTyfrIUd
続けてすいません、Thisworkbookモジュールと標準モジュールはどう違うんでしょうか?
0201デフォルトの名無しさん2015/01/27(火) 15:11:07.01ID:jF6LtWis
>>199-200
「C++などで言うクラス内メソッド」の意味するところが良くわかりませんが、ワークシートモジュールは
各ワークシート専用のメソッドを記述する場所です。
Sheet1のワークシートモジュールでRange等を参照する場合、Worksheetを明示しなければ、それは
Sheet1内のRangeだということになります。
ワークブックモジュールも同様ですね。

標準モジュールでは、Workbookを省略した場合はActiveWorkBookを(*1)、Worksheetを省略した場合は
ActiveWorkSheetが対象となります。
(*1)ひょっとしたら、ThisWorkbookなのかもしない。

また、IDEのコード編集領域の上部に(General)と書かれたコンボボックスがありますが、ここで
WorkbookやWorksheetを選択すると、右のコンボボックスでイベントを選択できるようになり、
各Worksheet/Workbook用のイベントハンドラを記述できます。
0202デフォルトの名無しさん2015/01/27(火) 15:20:02.68ID:jF6LtWis
「各ワークシート専用のメソッド」というわかるようなわからないような表現をしたのには理由があります。

VBAでは(VBも同様なんですが)、暗黙のインスタンス化というものがあり、新たにBookを開いたとき、
ワークシート数が1なら、
* Sheet1クラス
* Sheet1クラスのインスタンス
* ThisWorkbookクラス
* ThisWorkbookクラスのインスタンス
が自動的に生成されます。

Sheet1クラスが作られるため、Dim sht as Sheet1という型指定ができ、Sheet1クラスのインスタンスが
作られるため、標準モジュールで何の宣言もせずにSheet1.SomeMethodと呼び出すことができます。
ただし、Dim sht as Sheet1と宣言しても、Set sht = new Sheet1とはできません。

他のオブジェクト指向用語で言うなら、各WorksheetとWorkbookのシングルトンオブジェクトが自動生成される
というイメージでしょうか。
0203デフォルトの名無しさん2015/01/27(火) 15:29:06.53ID:jF6LtWis
以上をまとめて「C++などで言うクラス内メソッド」と表現するなら、その理解は正しいです。
0204デフォルトの名無しさん2015/01/27(火) 15:35:17.31ID:YTyfrIUd
丁寧にありがとうございました。よく理解出来あmした。
0205デフォルトの名無しさん2015/01/27(火) 18:41:59.26ID:upRrWRGK
>>202
シートって考えれば考えるほど分からなくなるよね。
暗黙のインスタンスがシングルトンで作られるのは分かるけど、
ブックを閉じても内容がクリアされないってところはファイルそのものだし。
0206デフォルトの名無しさん2015/01/27(火) 18:51:14.65ID:9/pKg/Bv
>>205
内容がクリアされない
どういうこと?
0207デフォルトの名無しさん2015/01/27(火) 18:53:08.10ID:nXIQJnkv
>>206
セルとかに書かれている内容とか、クリアされないじゃない。
0208デフォルトの名無しさん2015/01/27(火) 19:51:46.04ID:upLB79bt
状態を持ったオブジェクトはファイルに保存する方法が無いとでも思ってるんだろうか
0209デフォルトの名無しさん2015/01/27(火) 19:56:47.93ID:9/pKg/Bv
そんなの当たり前じゃない。
VBAはEXCELのオマケなんだから。
0210デフォルトの名無しさん2015/01/27(火) 20:54:51.84ID:nXIQJnkv
なるほど、自分自身がファイルのアプリケーションだから違和感を感じるのか。
0211デフォルトの名無しさん2015/01/27(火) 21:13:32.64ID:ZHjx6d1m
そんなに変なのか?俺は何も感じないけどなw
0212デフォルトの名無しさん2015/01/28(水) 08:13:22.17ID:a3QtgkTi
>>211
俺も感じない。

んなこといったら、Accessなんてもっと違和感だからけで使えないわな。
インターフェースとDBも、さらには言語まで全部内包してるんだから。
しかし、そんなことに違和感覚える人は脳みそが硬直化してると言える。

昔からあるんだからこんなもの。
0213デフォルトの名無しさん2015/01/28(水) 17:35:08.43ID:kJf5e2Zn
俺も違和感は感じないが

昔はバイト列にデータとプログラムの区別は無かった
今はプログラムとデータは区別する時代

違和感を感じないのは鈍感なだけかもしれん
0214デフォルトの名無しさん2015/01/28(水) 18:39:15.99ID:cH2DWeor
あー、言いたいことは何となく分かる。
多分VBA系じゃなくて.Netや旧VBとかを主体にやってるんじゃないか?
そうしたら普段は外部からただのファイルとして扱っているだろうからな。
俺もやっぱりVB.Netのフォームで不思議に感じたわ。
あいつは生成しようがしまいが使えるからな。
意味合い的にはちょっと違うけどな。
0215デフォルトの名無しさん2015/01/28(水) 20:03:06.31ID:FEW+DfFq
ユーザ定義型の配列をoptionalで渡したい場合って、どうすればよい?
variantに突っ込むのは無理だった
0216デフォルトの名無しさん2015/01/28(水) 21:56:35.26ID:Xnh8EDKt
>>215
配列をプロシージャの引数に渡すってこと?

ならば、
Sub kinoko(simejiArray() As String)
といった形で渡す。

simejiArray()の元になる配列を生成してるルーチンでは
最後に

Call kinoko(matsutake)

といった形で呼び出す。
0217デフォルトの名無しさん2015/01/29(木) 00:49:28.98ID:tR9/a+yn
>>216
ユーザ定義型の配列をoptionalで渡すとエラーになるのです。
調べたところ、vbaでは配列をoptionalで渡せない仕様らしく、
その場合は配列をvariant型変数に代入して回避する方法があるということでしたが、
ユーザ定義型の場合は、variant型変数に代入するところでエラーになりました。
やりたいことはこんな感じです。
type kinoko
name as string
season as string
end type

sub main
dim k(1) as kinoko
dim ret as string
k(0).name = "shimeji"
k(1).name = "maitake"
ret = myfunc(k)
end sub

function myfunc(optional k() as kinoko) as string
なにか処理
myfunc = "miso soup"
end function
0218デフォルトの名無しさん2015/01/29(木) 00:51:13.82ID:HI8rUnX+
>>215
byrefしかできんのじゃ
0219デフォルトの名無しさん2015/01/29(木) 01:41:49.80ID:N336K0Nj
>>217
普通にVBAプロジェクト内で定義してるユーザ定義型では無理
諦めるかクラスで代用するか
0220デフォルトの名無しさん2015/01/29(木) 07:39:06.00ID:3hW0BXTS
>>217
今手元にExcelがないから試せないけど、
その配列の変わりにCollectionを使うか、
配列ごとCollectionに突っ込んでみてもダメ?
0221デフォルトの名無しさん2015/01/29(木) 11:37:49.91ID:wMkjI3CS
 
お世話になります。
私、責任者の加茂と申します。以後、宜しくお願い致します。
http://www.apamanshop.com/membersite/27009206/images/kamo.jpg
浪速建設様の見解と致しましては、メールによる対応に関しましては
受付しないということで、当初より返信を行っていないようで、今後につい
てもメールや書面での対応は致しかねるというお答えでした。
 
このように現在まで6通のメールを送られたとのことですが、結果一度も
返信がないとう状況になっています。
 
私どものほうでも現在までのメール履歴は随時削除を致しております
ので実際に11通のメールを頂戴しているか不明なところであります。
 
 
 ・T   http://s-at-e.net/scurl/ia-T.html
 ・Zle  http://s-at-e.net/scurl/ia-Zle.html
0222デフォルトの名無しさん2015/01/29(木) 14:10:35.50ID:qpPWWKCR
>>219
諦めてoptionalやめました。
不要な場合は空配列渡して、function側で if (not arr) <> -1 で判定するように修正
0223デフォルトの名無しさん2015/01/29(木) 17:49:35.18ID:pY+BfFdL
variant配列を用いて一括貼り付けが高速だということを知り
試しにrangeをvariant配列にいれて
配列を同じ場所に貼り付けたら
書式がクリアされたのですが
同じ配列で同じrangeに貼り付けるとこうなるものですか?
文字サイズを9にしてたのが11になってしまったのですが
何か対策手段があれば教えてください
0224デフォルトの名無しさん2015/01/29(木) 18:53:48.34ID:OdkcJOPr
>>223
> 書式がクリアされたのですが
試したけど、書式はそのままだったよ。

> 配列を同じ場所に貼り付けたら
そもそも「貼り付ける」というのが誤りな気がするが・・・。
variant配列を使う場合は、普通代入するもんだけど。
0225デフォルトの名無しさん2015/01/29(木) 19:12:12.05ID:qpPWWKCR
dim val as variant
set val = range(ほげ)
とかやってたら笑う
0226デフォルトの名無しさん2015/01/30(金) 08:06:03.60ID:W+N1TSjq
>>222
なんか汚いな。
If arr = True Then
じゃ駄目なのか?
0227デフォルトの名無しさん2015/01/30(金) 08:49:04.36ID:kOBKTeQq
>>226
dim arr() as string
で、arrがredimされてるかの判別方法を探してて見つけたのをそのまま使ってました。
-1がtrueだから、直すとしたら
(not arr) = false
ですかね。あとで試してみます
0228デフォルトの名無しさん2015/01/30(金) 10:51:17.37ID:nfdpmMl0
結果を反転してそれがFalseかどうか調べるなら
反転せずにそれがTrueかどうか調べたほうが素直だと思うんですけど
0229デフォルトの名無しさん2015/01/30(金) 10:53:28.10ID:nfdpmMl0
って -1が True なのか。ややこしいなw
0230デフォルトの名無しさん2015/01/30(金) 11:01:05.83ID:1A+w7QQq
Not [可変長配列]
ってのが、可変長配列が初期状態かどうかの唯一の判定方法っぽいなあ。
初めて知ったよ。
0231デフォルトの名無しさん2015/01/30(金) 13:26:09.86ID:kOBKTeQq
(not array) の値調べた
redim前→-1
redim後→大きい負の値(190億くらい)
なので、-1と比較するしかないみたい

>>230
on error gotoな状態でuboundして分岐させたり(これが本来のやりかた?)
sgn関数使ったりする方法もあるようですよ
0232デフォルトの名無しさん2015/01/30(金) 16:44:17.55ID:Um9YeW/1
=(B11*B51)+(C11*C51)+(D11*D51)+(E11*E51)+(F11*F51)+(G11*G51)+(H11*H51)+(I11*I51)+(J11*J51)+(K11*K51)+(L11*L51)+(M11*M51)+(N11*N51)+(O11*O51)+(P11*P51)+(Q11*Q51)+(R11*R51)+(S11*S51)+(T11*T51)+(U11*U51)+(V11*V51)+(W11*W51)

上記数式の加算記号の後に改行を入れたとこ下記のようになりました。

(B11*B51)+
(C11*C51)+
(D11*D51)+
(E11*E51)+
(F11*F51)+
(G11*G51)+
(H11*H51)+
(I11*I51)+
(J11*J51)+
(K11*K51)+
(L11*L51)+
(M11*M51)+
(N11*N51)+
(O11*O51)+
(P11*P51)+
(Q11*Q51)+
(R11*R51)+
(S11*S51)+
(T11*T51)+
(U11*U51)+
(V11*V51)+
(W11*W51)

何やら法則があるのは分かるのですが、これを一括で解決する書き方(短い式)がありましたら教えてください!
0233デフォルトの名無しさん2015/01/30(金) 16:50:13.43ID:0YV6xwSy
>>232
sumproduct
0234デフォルトの名無しさん2015/01/30(金) 17:04:21.86ID:Um9YeW/1
>>233
できました!ありがとうございます!
0235デフォルトの名無しさん2015/02/01(日) 01:20:19.75ID:1M64orpF
VBA初心者ですが
VBA自体をVBAで書き換える事はできないのでしょうか?
0236デフォルトの名無しさん2015/02/01(日) 01:38:20.77ID:R7pq7q7A
>>235
出来ない事はないが
初心者にはハードル高い
0237デフォルトの名無しさん2015/02/01(日) 01:57:54.04ID:rAGWgKIP
>>235
何十年前のコンピュータで、メモリが足らないから自己書き換えなんてやってた時代ならともかく、
そういうことは考える必要は無い。
最初から書き換え後のコードを用意しておいて、必要に応じて条件分岐すればいい
0238デフォルトの名無しさん2015/02/01(日) 02:00:25.02ID:4ng7/cbq
自己書き換えって実行時まで条件が分からないからするものだろ?
VBAでやろうとは思わないけど。
0239デフォルトの名無しさん2015/02/01(日) 05:10:58.76ID:hbd+H1bA
モジュールが100以上ありプロシージャが千以上あるコードの大仕様変更の時に手入力と置換だけではいつまでたっても終わらない
どうしても自家書きしなければ逝けない数値の書き換えや
VBAの記述でも配列などが使えたらさっさとで終わるだろうなあと
0240デフォルトの名無しさん2015/02/01(日) 05:42:43.70ID:Zdr4/0x6
>>239
モジュールが100あるの?凄いねw
エクスポートして、それぞれモジュールをテキストファイルにしてから書き変えればいいんじゃないかな。
それで各モジュールを消してインポートすれば、まぁ100個くらいなら何とかなるよ。
0241デフォルトの名無しさん2015/02/01(日) 09:05:49.17ID:oCjnTYIk
モジュールが100以上あってプロシージャが1000以上あるプログラムって例えばどんなの何だろう
excelにそんな多く機能持たせた経験ないからよくイメージ出来ないんだけど
そんなにモジュール多いと、ファイルサイズとかに影響出ないのかな
0242デフォルトの名無しさん2015/02/01(日) 09:24:12.16ID:4ng7/cbq
>>239の状況は、シートに簡易DSLでロジックを記述しておいて
VBAではそれを実行する簡易インタープリタを実装すれば
問題解決出来そうな気がする
0243デフォルトの名無しさん2015/02/01(日) 09:31:32.57ID:Zdr4/0x6
>>241
本気にするなよw
このスレから人離れを起こさせないように苦労しているいつもの>>1の自演だろw
モジュールが本当に100も必要なアプリなら、
まともなチームリーダーだったら外部システムからExcelを出力することを考えるわw

いつも健気に頑張っているから騙されてるふりしてるけどさ、流石にこれはちょっと酷いw
0244デフォルトの名無しさん2015/02/01(日) 10:25:49.02ID:P6Wv1Uek
>>239
>>154か?大変なことになってるねw
0245デフォルトの名無しさん2015/02/01(日) 10:42:56.79ID:rgNJ3Qt7
>>244
頭の悪いコードを書いてるとこうなるっていういい事例だわな。
0246デフォルトの名無しさん2015/02/01(日) 13:05:10.56ID:gxx6hjcz
まあ大抵はそのサイズになる前にギブアップするだろうけど
ホントにそのボリュームのVBA作り上げてるなら根性だけは大したものかと
0247デフォルトの名無しさん2015/02/01(日) 15:03:51.30ID:sjXjc1T+
>>235
ウイルス作りたいの?
0248デフォルトの名無しさん2015/02/01(日) 16:09:14.35ID:s/JSe9N/
住めば都ということわざがあるように頭の悪いコードでも動けば都だよ
0249デフォルトの名無しさん2015/02/01(日) 19:07:26.98ID:Zdr4/0x6
いや〜、モジュール100個の都なら、俺田舎でいいや
0250デフォルトの名無しさん2015/02/01(日) 19:26:05.58ID:4ng7/cbq
>>248は頭の悪いコード(田舎)でも動けば都だと言ってるのに対し
「田舎でいいや」というレスは
頭の悪いコード(田舎)が頭の悪いコード(田舎=動かない)のままでいい
という事だから、結果「動かなくてもいいや」という意味になる。

>>249は本当に
モジュール100個のVBAだったら動かなくてもいいや
という意味の事を伝えたかったのだろうか?
ちょっと気になる。
0251デフォルトの名無しさん2015/02/01(日) 19:33:32.30ID:Zdr4/0x6
何かめんどくさそうな人だなぁ
0252デフォルトの名無しさん2015/02/01(日) 19:36:29.46ID:Oy9MlKBG
>>250
どう見ても >>248 の言う
・頭の悪いコード
・動けば都
は、同一のコードを指してると思うが
0253デフォルトの名無しさん2015/02/01(日) 19:41:02.43ID:4ng7/cbq
>>252
うん、俺も同一のコードを指してると思うよ。
お前の解釈だとどういう意味になるんだ?
ちょっと気になる。
0254デフォルトの名無しさん2015/02/01(日) 19:43:23.05ID:Zdr4/0x6
そうだね。そんなんだったら最初の時点でお断りだよ。
受けるなら時間もらって詳細設計から、場合によっては基本設計からやり直す。
0255デフォルトの名無しさん2015/02/01(日) 19:43:32.01ID:Oy9MlKBG
> お前の解釈だとどういう意味になるんだ?

>>250 はうまいこと言おうとして失敗するタイプと言う意味かと w
0256デフォルトの名無しさん2015/02/01(日) 19:45:51.14ID:Zdr4/0x6
>>255
何を言っているのか分からないなぁ
0257デフォルトの名無しさん2015/02/01(日) 19:48:10.46ID:4ng7/cbq
>>255
うまい事言ってるのは>>248だろ?
俺なんかがうまい事言うなんて、畏れ多くて出来んわ。
0258デフォルトの名無しさん2015/02/01(日) 20:05:13.84ID:jkfzVUo5
>>248 とか >>255 とかにいちいち突っ込む男の人って‥
0259デフォルトの名無しさん2015/02/01(日) 20:28:17.66ID:a7daD80f
Book1.xlamでVBAで何らかのツールを作ってその中で
Application.OnKey "{ESC}", "func1"
でESCをfunc1に設定したとしても、このxlamとは別のマクロ付きBook2が同時に読み込まれたとして、
その中でOnKeyが実行されて別の関数func2に割り当てられた場合、当初のfunc1がESC押下で実行出来なくなると
思うのですが、こういう場合、func1はどんな事が有ってもESC押下で実行出来るようにする設定みたいなのは
ありますか?ただし、私が変更出来るのはBook1.xlamのみという前提で。
0260デフォルトの名無しさん2015/02/01(日) 20:42:58.80ID:Zdr4/0x6
ねー、ここで聞く前にググったりしてみた?

http://officetanaka.net/excel/vba/tips/tips60.htm

田中さんが何か言ってるよ。参考にならない?

これさー、今度から何でエラーが出るか聞きたいときはエラーメッセージ書けとか、
質問する前にググれとか、テンプレに追記しといた方がいいんじゃない?
0261デフォルトの名無しさん2015/02/01(日) 20:47:48.76ID:a7daD80f
>>260
レス有難うございます。
読んでみましたが私のやりたい事とちょっと
違うようなんですが?
0262デフォルトの名無しさん2015/02/01(日) 21:05:15.93ID:Zdr4/0x6
>>261
あ、そう。じゃ何をどうしたいのか分からないし、めんどくさいからいいや。
じゃーねー
0263デフォルトの名無しさん2015/02/01(日) 21:12:43.16ID:4ng7/cbq
他のマクロからキー割りあてを変更出来ないようにするということは
一部のマクロに絶大な特権を与える事にも似たようなものであり
また、これを許可するのも、そのマクロ自身であるという事は
その実行環境であるところのエクセル自身の重大なセキュリティホールと言っても
過言ではないくらいの恐るべき脅威に近いものがあるから
多分出来ないんじゃないかと考察するに至ったわけです。

なんも知らんけどな
0264デフォルトの名無しさん2015/02/01(日) 22:04:35.58ID:Oy9MlKBG
まあ、いつものことだけど「なんのために」そんなことしたいのか書いた方がいいわな
特に
> ただし、私が変更出来るのはBook1.xlamのみという前提で。
なんて条件は非常に胡散臭いので、知ってても迂闊に答えない人がほとんどだし
0265デフォルトの名無しさん2015/02/01(日) 22:21:01.30ID:Zdr4/0x6
>>264
じゃ、それも次回テンプレ追加で
0266デフォルトの名無しさん2015/02/01(日) 23:07:46.68ID:XG47cZe8
SurfaceでExcel使ってるんだけど、ここで質問していいのかな?

ExcelでSurfaceのペンを使ってるんだけど、ペンを有効にしてるときって手が画面に少し触れただけでペンが触れたと反応するんだけど、なんとかならないかな?
onenoteとかだどペン以外は反応しないようになってるから、Excelでも同じようにしたいんだ

詳しい人教えて下さい
0267デフォルトの名無しさん2015/02/01(日) 23:37:29.07ID:P6Wv1Uek
スレ違いにも程があるぞ
0268デフォルトの名無しさん2015/02/02(月) 00:20:52.28ID:FBHevKSn
すまん
総合スレで聞くわ
0269デフォルトの名無しさん2015/02/02(月) 00:21:29.92ID:XTmeW3Aa
>>266
ここは「ExcelのVBA」の質問スレです。
「Excel」の質問スレではありません。
0270デフォルトの名無しさん2015/02/02(月) 00:37:04.92ID:0iu4BYNO
If (Cells(x, 3) <= Range("f3")) And (Range("f3") <= Cells(y, 14)) Then

↑これはコードの一部ですが
RANGEとセルズが混在していても一応動いているようですが
やはり統一した方が良いのでしょうか?
混在していても全く問題は無いのでしょうか?
何か問題はありますでしょうか?
0271デフォルトの名無しさん2015/02/02(月) 00:51:04.53ID:/NzKCxLk
問題はありません
が、統一した方が読みやすいと思います。

私は使い分けとして
行だけループする場合はRange
列もループする場合はCellsを使います。
大体 Range("A" & row) みたいな書き方をします。
後、Rangeの方がインテリセンスを使うことができます。
0272デフォルトの名無しさん2015/02/02(月) 00:59:08.60ID:0iu4BYNO
>>271
ありがとうございます。
VBAを覚えたての頃に書いたコードはすべてRangeのみで書かれていまして
列のループ処理をやるためにセルズにする必要が出てきた感じですが
全部書き換えるのは手間なので問題がないようでしたらそのままでも良いかと考えています。
02732722015/02/02(月) 01:27:00.98ID:jDU54aaN
Cellsの記述の場合列行の表記がRangeと逆になっていますが
これを差し替えていくのはめんどくさい&間違えの元じゃないかと思うのですが
大量にあるRangeの記述を簡単にセルズに変換する方法はあるのでしょうか?
0274デフォルトの名無しさん2015/02/02(月) 04:05:08.60ID:SJWlqNpA
おれできる限りCell使ってるわ
Range使うのは範囲指定するとき必要な場合だけ
■ このスレッドは過去ログ倉庫に格納されています