Excel VBA 質問スレ Part32
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/07(月) 22:19:55.86★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 質問スレ Part31
http://toro.2ch.net/test/read.cgi/tech/1376371376/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0526デフォルトの名無しさん
2014/01/21(火) 22:06:05.11普通に開ける
0527デフォルトの名無しさん
2014/01/21(火) 23:07:21.24まあ、がんばれ (w
0528523
2014/01/22(水) 00:26:27.94あ、ひらけた
でも、バイナリファイルになってるんですよ
0529デフォルトの名無しさん
2014/01/22(水) 02:37:51.49そいつは拡張子がlnkじゃないか?
IEのお気に入りの中のどれかを開いてみ
0530デフォルトの名無しさん
2014/01/22(水) 02:39:50.870531デフォルトの名無しさん
2014/01/22(水) 03:53:34.96負け惜しみはその辺にしとけ
0532デフォルトの名無しさん
2014/01/22(水) 07:37:22.14あー負け惜しみ、負け惜しみ。
負け惜しみでもなんでもいいから
早く>>525をやってみてくれよ。
場合によって継承は移譲で代用出来るというだけのことを
なんでわざわざ「インターフェース継承」なんて言っちゃうのか。
用語の違い云々って言ってるけど、デザインパターンどうのと言ってるところの
リンク貼ってるくらいだから
その観点からも継承と移譲はそれぞれどう言う時に使うかの違いくらいは分かってるんだろ?
ポリモーフィズムなんてのは100も承知で言ってるんだよ。
移譲はあくまで移譲であって、継承の代用に出来る場合があるだけで
用語の違いとかじゃなくて、そもそもが全くの別物だろ。
0533デフォルトの名無しさん
2014/01/22(水) 07:42:27.38まで読んだ
素直でよろしい
0534デフォルトの名無しさん
2014/01/22(水) 10:40:37.99> 早く>>525をやってみてくれよ。
VBAで「継承」ができるとは誰も言ってないと思います。
> なんでわざわざ「インターフェース継承」なんて言っちゃうのか。
かなり昔から、VBA(VB6)のimplementsを使ったコレのことを「インターフェース継承」と言う人が多いです。
語源は、Microsoftかもしれません。
なお、Microsoftはコレのことを委譲とは言わず委任と言っているようです。
> 5.1.3| 事前バインディングによるポリモーフィックなプログラム
> Visual Basic 6の開発者は、さらにもう1つの別の方法で継承を実装することができます。それは、いわゆる
> 「インターフェイスの継承」と呼ばれる方法です。この魅力的な名前は、Implementsステートメントを使用する
> 非常に一般的な方法を表しています。この方法では、基本クラスからメソッドのシグネチャだけを「継承」し、
> その実装は継承しません。したがってこの場合にも、実際の処理を行うすべてのプログラムは、それぞれの
> 開発者の責任において記述しなければなりません。
http://msdn.microsoft.com/ja-jp/library/dd297718.aspx
0535デフォルトの名無しさん
2014/01/22(水) 13:42:42.47> 移譲はあくまで移譲であって、継承の代用に出来る場合があるだけで
> 用語の違いとかじゃなくて、そもそもが全くの別物だろ。
イジョウを正しく変換できない奴にあれこれ言われたくないが、同じか別物かなんて
ことはどうでもいいことで、それで何ができるのかが重要。
0536デフォルトの名無しさん
2014/01/22(水) 13:47:58.08なんにしても言葉の定義なんてTPOで変化するんだから水かけあったって無意味だろ
0537デフォルトの名無しさん
2014/01/22(水) 13:51:58.320538デフォルトの名無しさん
2014/01/22(水) 14:01:12.250539デフォルトの名無しさん
2014/01/22(水) 14:15:26.81他の言語のクラスを知って、
「VBAのクラスを見下す俺博識でカッケー」
をやりたいだけでしょ
だから毎度のことだが直ぐに崩されて泣きを見る
0540デフォルトの名無しさん
2014/01/22(水) 21:58:27.42どっちかって言うと VBA でもできるもんって言ってる奴が自爆してるとしか思えんが (w
まあ、C#A を実装すればこんな不毛な争いは起きないので、早めに頼むよ ⇒MS
0541デフォルトの名無しさん
2014/01/22(水) 22:21:24.540542デフォルトの名無しさん
2014/01/22(水) 23:13:00.82カッケー(ワラ
最高にアホっぽい表現だな(藁)
0543デフォルトの名無しさん
2014/01/23(木) 00:30:34.26月給手取り20万でちょうカッケーw
0544デフォルトの名無しさん
2014/01/23(木) 02:29:35.460545デフォルトの名無しさん
2014/01/23(木) 05:26:49.000546デフォルトの名無しさん
2014/01/23(木) 07:21:56.98ゴミ
0547デフォルトの名無しさん
2014/01/23(木) 07:46:04.62本当に糞だったら突っかかる必要すら無いもんなw
0548デフォルトの名無しさん
2014/01/23(木) 09:24:18.49Excel と Visual Studio の区別もつかんのか (w
0549デフォルトの名無しさん
2014/01/23(木) 11:09:02.52これをまず上方向に重力があるときみたいに入力セルを上に落とし (←テトリスの逆バージョンみたいに)
さらに左方向に重力があるときみたいに入力セルを左に落とすには
どういうコードにすればいいですか?
0550デフォルトの名無しさん
2014/01/23(木) 11:38:08.59「落とす」って途中経過も表示するの?
それとも最終結果だけ表示するの?
0551デフォルトの名無しさん
2014/01/23(木) 11:52:16.81普通にループで条件判断すればいいだけじゃね?
それが解らないとかなら、まだVBA使うのは君には早いから
勉強してでも達成したいか、勉強するくらいなら諦めるか、好きな方を選んでね
0552デフォルトの名無しさん
2014/01/23(木) 12:30:05.05縦横両方となると何がしたいのかわからなくて根本から間違ってる気がしてくる
0553デフォルトの名無しさん
2014/01/23(木) 15:57:23.33左へ移動してから下へでは、結果が違ってくる
下へ移動してから、左へ移動したいの?
サメガメに似ているような
0554デフォルトの名無しさん
2014/01/23(木) 16:01:46.440555デフォルトの名無しさん
2014/01/23(木) 16:18:13.03> 下へ移動してから
もうここから違うし (w
0556デフォルトの名無しさん
2014/01/23(木) 18:13:05.910557デフォルトの名無しさん
2014/01/23(木) 18:14:28.47> まあ、C#A を実装すればこんな不毛な争いは起きないので、早めに頼むよ ⇒MS
こういうの使えば?
ttp://outofmem.tumblr.com/post/62233308198/excel-dna-1
0558デフォルトの名無しさん
2014/01/23(木) 20:13:31.821.まず入力セルの1つ上のセルに値が入っていたり入力セルが1番上だったら3へ。
2.End(xlUp)で自分より上のセルに値がある時のセル位置を求める。求めたセル位置に
値があればその1つ下のセルに、値がなければその位置に入力セルの値を入れて元の入力セルの値を消す。
3.入力セル(2を通っていたら2で値を入れたセル。以降入力セルと呼ぶ)の1つ左のセルに値が入っていたり入力セルが1番左だったら5へ。
4.End(xltoLeft)で自分より左のセルに値がある時のセル位置を求める。求めたセル位置に
値があればその1つ右のセルに、値がなければその位置に入力セルの値を入れて元の入力セルの値を消す。
5.処理を終了する。
多分こんな感じでループを使わないで出来る・・・ような気がする。
0559デフォルトの名無しさん
2014/01/23(木) 20:25:59.04いいねコレ、Linqも使えるのか。
ぱっと見た目、WorkSheetsもジェネリック扱いっぽいし。
ってことは多分、列や行もそんな扱いなんだろうね。
後は仕事場で使う許可が下りるかどうかだけど。
0560549
2014/01/23(木) 23:22:56.75ちょっと1分間空想してるだけで下のコードを思いつき、動作確認すると問題なく動き一瞬で解決した。
たった4行で実現できることだよ。
Sub Unko()
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlToLeft
End Sub
0561デフォルトの名無しさん
2014/01/23(木) 23:59:48.40それで、だからどうしたの僕ちゃん
ほめて欲しいのかちゅら
すご〜イ、良く頑張ったわね、偉いわよ僕ちゃん
0562デフォルトの名無しさん
2014/01/24(金) 00:03:57.36次は30行でテトリス作ってみてよ。
0563デフォルトの名無しさん
2014/01/24(金) 01:24:52.940564デフォルトの名無しさん
2014/01/24(金) 01:26:27.06自治厨うぜーぞ
誰もお前なんか必要としてないんだから早く消えろ
0565デフォルトの名無しさん
2014/01/24(金) 01:55:32.380566デフォルトの名無しさん
2014/01/24(金) 07:27:32.48ドヤ顔のとこ悪いけど、それって上と左に飛ばす対象セルの
下や右に入ってる値の入っているセルも一緒にずれない?
そうだとしたらコードもダメだけど、動作確認もダメダメだね。
0567デフォルトの名無しさん
2014/01/24(金) 10:57:23.360568デフォルトの名無しさん
2014/01/24(金) 11:55:35.88ゴミコードw
0569デフォルトの名無しさん
2014/01/29(水) 23:46:00.47こんどはスマホで自作アプリをいっぱい作りたいです。
プログラミング言語は変わるんですよね?
どの入門書を読めばいいでしょうか?
VBAの知識があるのでプログラミング全般の基礎(変数の使い方、if文、for文、など)は省いて
android開発に特化した入門書を希望なのですが。
0570デフォルトの名無しさん
2014/01/29(水) 23:59:50.67スレチ
泥は基本Java
VBAの知識なんてほとんど役に立たん
0571デフォルトの名無しさん
2014/01/30(木) 00:09:17.85どういう意味?
これ?
http://www.geocities.co.jp/HeartLand/6622/potato.jpeg
0572デフォルトの名無しさん
2014/01/30(木) 00:15:08.28馬鹿かオメェは
580もjavaやれって言ってるだろ。
andoroidでどうしてVBAって発想がでてくるんだよ
0573デフォルトの名無しさん
2014/01/30(木) 00:19:24.55なるほどぉー。そうなんだー。
0574デフォルトの名無しさん
2014/01/30(木) 00:20:19.410575デフォルトの名無しさん
2014/01/30(木) 03:00:00.80クラスモジュール内から、標準モジュールのパブリックなプロシージャを呼ぶのは設計としてはアリですか?
0576デフォルトの名無しさん
2014/01/30(木) 07:30:04.35有り。
ただし、インスタンスを生成してる訳ではないので、
呼び出し先の内容はすべて一緒になることに注意。
0577デフォルトの名無しさん
2014/01/30(木) 10:03:18.86> クラスモジュールAの中で、クラスモジュールBをインスタンス化して利用したり
これはあり。
> クラスモジュール内から、標準モジュールのパブリックなプロシージャを呼ぶのは設計としてはアリですか?
これはお勧めできない。
詳しくは「結合度」でググれ。
0578デフォルトの名無しさん
2014/01/30(木) 10:45:28.97留意すべきことがあるなら理解できる
0579デフォルトの名無しさん
2014/01/30(木) 11:04:28.31危険がありすぎるので過剰とは思わない。
0580デフォルトの名無しさん
2014/01/30(木) 11:29:33.90コメントに書くとかUMLで管理するとかいくらでもフォローきくじゃん
標準なパブリックは使わないならその需要はどうやって埋めてんの?
0581デフォルトの名無しさん
2014/01/30(木) 11:35:19.10> コメントに書くとかUMLで管理するとかいくらでもフォローきくじゃん
そういう問題じゃなくて、結合度やカプセル化の問題。
> 標準なパブリックは使わないならその需要はどうやって埋めてんの?
使わないとは言ってないよ。クラス内部からは呼ぶべきではないと言ってるだけ。
0582デフォルトの名無しさん
2014/01/30(木) 12:36:50.72>クラス内部からは呼ぶべきではない
その代替案をご教示賜りたく
これで疑問は全て解消される気がする
0583デフォルトの名無しさん
2014/01/30(木) 12:39:05.54> その代替案をご教示賜りたく
代替案も何も、俺は基本呼ばないから代替案も糞もないんだが。
0584デフォルトの名無しさん
2014/01/30(木) 12:40:36.330585デフォルトの名無しさん
2014/01/30(木) 13:29:20.03じゃあやっぱり留意すべき程度じゃないのか
0586デフォルトの名無しさん
2014/01/30(木) 14:02:40.66好きにすればいいんじゃないかな。
0587デフォルトの名無しさん
2014/01/30(木) 14:14:19.760588デフォルトの名無しさん
2014/01/30(木) 15:52:36.82>>577は結合度の問題だっていってるだろ
そのUtilクラスなり標準モジュールなりに依存するようになるから
クラスの独立性が保てなくなるって話だろ
設計方法論の話であって実装の問題じゃないからな
他のモジュールに依存するクラスを良しとするなら良し
ただし一般的なクラス設計では、他のクラス(モジュール)への依存度は低い方が良いとされてる
0589デフォルトの名無しさん
2014/01/30(木) 16:03:53.460590デフォルトの名無しさん
2014/01/30(木) 16:22:09.70標準モジュール名をUtilに変更して使うのと、C++でstd namespaceにある奴を使うのと、そんなに違いはないと思うけど
0591デフォルトの名無しさん
2014/01/30(木) 17:36:51.01標準モジュール使うのにモジュール名で修飾することなんてほとんどないぞ
もしかして、標準モジュールってそこにメソッドなりがシステム側で用意されてると思ってるのか?
システム側で用意されているものに依存するのと
ユーザ側で用意するのものに依存するのと
そんなに違わないと思うならそれでいいんじゃないかね
0592デフォルトの名無しさん
2014/01/30(木) 18:23:41.57> 標準モジュールの名前なんてどうでもいいんだけど、何でそこにこだわってる?
> 標準モジュール使うのにモジュール名で修飾することなんてほとんどないぞ
グローバルな何かを使うときに、気をつけないといけないのが名前衝突。
標準モジュールでも名前を付けて呼ぶときにそれで修飾しておけば、別の標準モジュールに同名のメソッドが作成されても問題無い。
加えて、他の言語でよくある「namespace」的な役割も持たせられる。
> もしかして、標準モジュールってそこにメソッドなりがシステム側で用意されてると思ってるのか?
何を言ってるんだかわからない。
> システム側で用意されているものに依存するのと
> ユーザ側で用意するのものに依存するのと
> そんなに違わないと思うならそれでいいんじゃないかね
Utilクラスを作ってそこに自作メソッドを入れて使うのと、標準モジュールに名前を付けて使うのに、それほど差はないよねって話。
0593デフォルトの名無しさん
2014/01/30(木) 19:11:22.87>Utilクラスを作ってそこに自作メソッドを入れて使うのと、標準モジュールに名前を付けて使うのに、それほど差はないよねって話。
依存関係においてはクラスだろうが標準モジュールだろうが大差ない
Utilクラスに依存するのはOKなのにUtil標準モジュールに依存するのはダメとかいうのは話がおかしい
つまり標準モジュール呼び出しの代替案がUtilクラスにまとめるってのはおかしな話だが、それは俺の意見じゃないぞ
0594デフォルトの名無しさん
2014/01/30(木) 19:48:24.290595デフォルトの名無しさん
2014/01/30(木) 22:18:37.25それこそ標準モジュール向きだと思うけどなぁ。
>>582
代替え案としては、クラスモジュールで作っておいて
そのインスタンスを、使う側のクラスのプロパティに設定して内部で使う。かなぁ。
0596デフォルトの名無しさん
2014/01/31(金) 00:46:27.000597デフォルトの名無しさん
2014/01/31(金) 06:18:42.27て言うかそんなこと出来るのかね
0598デフォルトの名無しさん
2014/01/31(金) 07:20:58.00プロシジャを他のブックにエクスポートとか出来たりもしたんじゃなかったっけ
(俺には出来んけど)
0599デフォルトの名無しさん
2014/01/31(金) 12:26:54.30ファイル - オプション - セキュリティセンター - セキュリティ センターの設定 - マクロの設定 - VBA プロジェクト オブジェクト モデルへのアクセスを信頼する
0600デフォルトの名無しさん
2014/01/31(金) 12:43:20.84どこかに数字が入力されてる時はマクロ実行って感じで
OSは7、エクセルは2010使っています
よろしくお願いします
0601デフォルトの名無しさん
2014/01/31(金) 13:54:53.980602デフォルトの名無しさん
2014/01/31(金) 16:53:24.380603デフォルトの名無しさん
2014/01/31(金) 17:59:38.260604デフォルトの名無しさん
2014/01/31(金) 18:03:32.360605デフォルトの名無しさん
2014/01/31(金) 18:14:47.51条件をチェックしたいタイミングのイベントプロシージャを作る
プロシージャ内で対象範囲をチェックする
0606デフォルトの名無しさん
2014/01/31(金) 21:18:09.720をTextで見ようとすると、セル幅を縮めると#になってしまうし。
ここで難しいのは一点のみで、
0と空のセルの見分けだけ。
0607デフォルトの名無しさん
2014/01/31(金) 21:33:39.180でも空白でもエラーなので見分ける必要はない
ほらもうできた
0608デフォルトの名無しさん
2014/01/31(金) 21:34:36.440609デフォルトの名無しさん
2014/01/31(金) 21:54:53.65では、イベントプロなんちゃらってのは関係内という事でいいんでしょうか?
0610デフォルトの名無しさん
2014/01/31(金) 22:12:46.74for each cel in range("A1:D3")
flag = flag or (val(cel.value) <> 0)
next
if flag then
処理
end if
0611デフォルトの名無しさん
2014/01/31(金) 23:31:02.090612デフォルトの名無しさん
2014/02/01(土) 06:16:32.91いんにゃ、ボタンを作ると勝手に作られる関数があるでしょ。それがイベントプロシージャ。
微妙なのが関数を作っておいてシェイプとかでマクロの登録で設定した場合。
これはイベントプロシージャと呼べるのかと言えば
シェイプ押下時に起きるイベントで呼び出される設定がされた関数ってだけになるのか、
「それってイベントプロシージャってことじゃん」ってなるのかどっちだろ?
0613デフォルトの名無しさん
2014/02/01(土) 07:02:12.88シェイププロシージャ(コードが先でオブジェクト関連付けが後)にしよう
イベントプロシージャ(オブジェクトが先でコードが後)ではないことにしよう
0614デフォルトの名無しさん
2014/02/01(土) 12:24:48.84後から関連付けようが自動的に作成されようがイベントプロシジャにきまってるだろが
0615デフォルトの名無しさん
2014/02/01(土) 14:58:00.05みなさん本当にありがとうございました
0616デフォルトの名無しさん
2014/02/01(土) 21:04:47.990617デフォルトの名無しさん
2014/02/01(土) 22:27:12.53>>610さん賢いなぁ
0618デフォルトの名無しさん
2014/02/02(日) 06:22:16.18冗長だし
0619デフォルトの名無しさん
2014/02/02(日) 07:41:58.11行儀のいい書き方でも3行
0620デフォルトの名無しさん
2014/02/02(日) 17:07:18.390621デフォルトの名無しさん
2014/02/02(日) 17:15:35.151行での書き方もしよければ教えてください
0622デフォルトの名無しさん
2014/02/02(日) 18:27:28.63width、height
0623デフォルトの名無しさん
2014/02/03(月) 20:23:54.81どういうコードを書けばいいですか?
いいアルゴリズムが思いつきません。
乱数を発生させたたびにそれまで発生させたすべての乱数と重複がないか調べ
なければ次の乱数、あればやりなおし、
というアルゴリズムよりいい方法はありますか?
0624デフォルトの名無しさん
2014/02/03(月) 21:33:24.65ここはとりあえず結果が出せればOKなスレ
アルゴリズムを詰めていって最適化する話は余所でどうぞ
0625デフォルトの名無しさん
2014/02/03(月) 21:33:50.25■ このスレッドは過去ログ倉庫に格納されています