[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/03 13:58 / Filesize : 194 KB / Number-of Response : 612
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part33



1 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:04:40.64 ]
ExcelのVBAに関する質問スレです

                   ___
       ___      /____ヽ      ____
      /____\    | |´・ω・`| |    /___ヽ
      .l |´・ω・`|  ニX二 . ̄ ̄ ̄  二X二  |´・ω・`| l 俺たちに任せろ
      !、 ̄ ̄ ̄  ヽ   |       |    /    ̄ ̄ ̄/
       ヽ_/ヽ、  ヽ__)  \__/\_/.   /_/  ノヽ_/
             ̄                ̄ ̄

前スレ
Excel VBA 質問スレ Part32
toro.2ch.net/test/read.cgi/tech/1381151717/

このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。

コードが嫌な人はこちらのスレへ
toro.2ch.net/test/read.cgi/tech/1381151995/l50

2 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:11:59.51 ]
VBAはなくならなくても文法がVB.NETライクに変わってしまう可能性はあるんかな?

3 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:15:11.12 ]
前スレ
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/
21 hibari.2ch.net/test/read.cgi/tech/1316931607/
22 toro.2ch.net/test/read.cgi/tech/1322400978/
23 toro.2ch.net/test/read.cgi/tech/1327763113/
24 toro.2ch.net/test/read.cgi/tech/1334305148/
25 toro.2ch.net/test/read.cgi/tech/1341722983/
26 toro.2ch.net/test/read.cgi/tech/1345363310/
27 toro.2ch.net/test/read.cgi/tech/1353842387/
28 toro.2ch.net/test/read.cgi/tech/1359607536/
29 toro.2ch.net/test/read.cgi/tech/1364689772/
30 toro.2ch.net/test/read.cgi/tech/1370088822/
31 toro.2ch.net/test/read.cgi/tech/1376371376/

4 名前:デフォルトの名無しさん [2013/10/17(木) 22:31:44.49 ]
2007です。A1に日付、B1に「あ」、C1に「い」、D1に「お」
と入力したとして、「お」が入力された時だけA1、B1、C1、D1
の入力内容をE1,F1,G1,H1に自動入力する方法はないでしょうか?

D1に「お」が入力された時だけH1に「お」を入力するのはIFでできたんですが、
条件が合った時だけセル位置を指定して自動入力する事はできないのでしょうか? 

5 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:32:56.01 ]
>>2
今までの資産の問題があるから多分変わらないとは思うけど、
使えるようになってくれればいいね。

6 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:37:31.53 ]
>>4
取り敢えず前スレがまだ消化されてるどころの話じゃないのでこっちで聞こうか

前スレ
Excel VBA 質問スレ Part32
toro.2ch.net/test/read.cgi/tech/1381151717/

7 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 23:31:38.27 ]
>>5
変わった方がいいの?

8 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 23:36:04.76 ]
>>7
変わって欲しくない人もいっぱいいるとは思うけど、
.Netはかなり便利な機能が沢山あるからね。

9 名前:710 mailto:sage [2013/10/18(金) 08:04:26.31 ]
変えるなんてとてもできないだろうから、取り敢えず C# for Application「も」サポートしてくれ...

10 名前:デフォルトの名無しさん mailto:sage [2013/10/19(土) 16:27:30.16 ]
別に無理してObject指向にせんでも



11 名前:710 mailto:sage [2013/10/19(土) 17:33:45.78 ]
>>10
シートとかセルとかもオブジェクトなので、OOP の方が楽だよ。
とある案件で C++ から Excel 操作してるけど、楽だよ〜。

12 名前:デフォルトの名無しさん mailto:sage [2013/10/19(土) 18:45:25.93 ]
VB.NetとC#は文法が違うだけで後は8割方一緒だけどC++はよく知らない。
確か3DSはC++、PSVITAはC#でコード書くんだっけ?

13 名前:デフォルトの名無しさん mailto:sage [2013/10/21(月) 11:44:25.92 ]
現行スレに書きましょう。

Excel VBA 質問スレ Part32
toro.2ch.net/test/read.cgi/tech/1381151717/

14 名前:デフォルトの名無しさん [2013/10/29(火) 18:17:55.65 ]
まぁでもたまには上げとかないとね

15 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 18:57:18.55 ]
www.buzzword.jp/img/face10.png

16 名前:デフォルトの名無しさん [2013/11/05(火) 12:54:43.75 ]
>>15
この、一見ホモ顔、実はロリコン、実体はレイプ犯みたいな顔は誰

17 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 13:39:47.08 ]
お前だよ、お前

18 名前:デフォルトの名無しさん [2013/11/07(木) 13:15:50.48 ]
>>17
ありがとう、この人物の性癖広まってるんだ
いつの手配写真だろ
韓国で整形したから同じ顔が沢山いるのかな

19 名前:デフォルトの名無しさん [2013/11/19(火) 19:18:48.76 ]
たまには上げないと、
Dim app As New Application
app.Visible = False '無くても「ファイル名.xlsm」は表示しなかった
app.Workbooks.Open Filename:= "D:\ファイル名.xlsm"
act_sh_Name = app.ActiveSheet.Name
act_cel_Name = app.ActiveCell.Address
'act_cel_Name = app.ActiveCell.Address(True, True, xlA1, True)
'シートとセル名を一括で取得できるが利用時を考え別々に取得
app.Quit
必要最小限

20 名前:デフォルトの名無しさん [2013/11/22(金) 13:21:37.36 ]
誘導age



21 名前:デフォルトの名無しさん [2013/11/22(金) 13:45:41.81 ]
Application.LargeOperationCellThousandCount
コレってどんな時に使う?
使った事ある人いたら教えて

22 名前:デフォルトの名無しさん [2013/11/22(金) 14:17:06.27 ]
>>21


toro.2ch.net/test/read.cgi/tech/1382015080/21

23 名前:デフォルトの名無しさん [2013/11/22(金) 15:02:23.40 ]
>>22
意味不明〜ぃ
URL貼るなら、中身を見てからにして下さい

24 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 15:43:48.29 ]
>>21
初めてみるプロパティだからいじってみたけど
オプションの詳細設定にある 時間がかかる操作が発生したときに警告を表示する
の数値設定するだけだな
たしかにその数値がオプションに設定されるし、その設定数以上のセル削除の操作で警告がでた
マクロでセル操作してもその警告は出ないっぽいからあんまり関係ないかも

25 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 15:45:28.15 ]
オプション設定変えたら元の値解らんようになった
誰か>>24のオプションのデフォルト値いくらか教えてくれ

26 名前:デフォルトの名無しさん [2013/11/22(金) 15:49:51.76 ]
Excel 2007以降か。
俺には関係の無い話だった。

27 名前:21 [2013/11/22(金) 16:11:14.92 ]
>>24
ありがとう、理解できました。

28 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 16:36:59.51 ]
>>25
検証乙です。

ウチのPC (Win7 Office2010) では
MsgBox Application.LargeOperationCellThousandCount
の実行結果は"33554"だったよ
(""は便宜上書いてるだけで、実際には表示されてません)

29 名前:デフォルトの名無しさん [2013/11/22(金) 17:52:30.30 ]
P001:

Ans0 = Int(Rnd * 10000)

Ans1 = Mid(Ans0, 1, 1)
Ans2 = Mid(Ans0, 2, 1)
Ans3 = Mid(Ans0, 3, 1)
Ans4 = Mid(Ans0, 4, 1)

For i = 1 To 4

If Ans(i) = 0 Then 'Controls("Ans" & i)でもコンパイルエラーが出る・・・
GoTo P001:
End If

Next

30 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:23:29.32 ]
>>29
Controlsはそういう使い方をするもんではない
あれはフォーム内のオブジェクトとかに使う

この場合は変数Ansを素直に配列変数で宣言すれば良いだけの話

Dim Ans(4)
とかいうふうに宣言する
配列要素の数が不定なら動的配列で宣言する
Dim Ans()
としておいて、後から必要に応じて
Redim Ans("配列要素数") とかやる
基本的に配列の大きさを変えると中身が消えるけど、
消したくないときは 
Redim Preserve Ans("配列要素数") ってやる
ただし、大きくするのはこれで良いけど、
小さくするときにあふれた要素はどうやったって消えるので注意



31 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 20:24:48.16 ]
VBAでいろんなパラメータを与えて処理するのがあるんですけど、その設定を忘れて実行しちゃったりする時があります。
んで、途中で強制的にストップさせたりするのってESCを押せば中止できるけど、エラーになってしまうじゃないですか。

エラーを起こさずに中止させる方法ってあります?

32 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 20:50:03.84 ]
>>31
プログラムで中止するなら、一応、StopとかEndとかいう命令はあるが
普通は実行するコードが無くなったら止まるのでそんな命令書かない

プログラムの外から止めるのなら、それはプログラムにとっては異常事態なんだからエラーでてもしょうがない
つかためしたけど、エラーは出てないっぽいけどな

33 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 20:54:04.32 ]
"ESC VBA エラー"でぐぐるとこの辺がヒットした。

Office TANAKA - Excel VBA Tips[Escキーでマクロを停止させない]
officetanaka.net/excel/vba/tips/tips60.htm

VBA応用(ESCキーで処理が止まるのをコントロールする。)
www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_090_050.html

ただ、どんな処理をするのか知らんけど、
コードの内容如何によっては
何のアナウンスも出さずにただ処理を止めるだけでは
宜しくない場合ってのも有りうるわけで。

そういう場合、ESCで止めるよりも
コード実行中にパラメータの不備をチェックできるように
コード自体を書いておくほうが良いんじゃねーかなと思う。

34 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 21:16:27.53 ]
>>32,33

レスありがとです。
確かに強制的に停止させるよりは事前にパラメータの不備に対するチェックを掛けたほうが
本筋でしょうね。

紹介してくれたリンクも後で見てみます。

どもm(_ _)m

35 名前:デフォルトの名無しさん [2013/11/22(金) 21:25:13.85 ]
私はこんな方法で途中中止の分岐してる
DoEvents
If Sheet1.OptionButton1.Value = True Then
 call 途中中止処理
End If

36 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 22:48:42.85 ]
スレ立てた順番的にはこっちが先でしょ

>>1があっても大して変わらん。

Excel VBA 質問スレ Part32
toro.2ch.net/test/read.cgi/tech/1381151995/

37 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 23:56:40.27 ]
>>36
まぁPart31を見てあっちでいいと言うドMな人はあっちのスレに行けばいいんじゃないの?
コードもExcelのアプリケーションに依存しない話も禁止らしいけどね。

38 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 00:13:41.59 ]
VBAで、Windowsの設定でバックアップしたファイルの情報を取得する方法有りませんか?
フォルダとかで右クリックしてプロパティ選択してタブで「以前のバージョン」って選択すると出てくるやつ。
そこに格納されてるファイルやフォルダの名前や更新日付が欲しいんですが、
WMIで取得しようとしたけど情報の取得方法がイマイチよく分からなくて・・・

39 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 05:57:44.14 ]
>>37
複数スレが立ってるんだから立てた順に消化すればいい。
テンプレが無くても荒れたわけだし、大して変わらん。

40 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 06:23:37.78 ]
>>38
ネタの質問だな。ググれば数秒で解決。



41 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 07:15:02.62 ]
>>40
ネタなつもりは全くなくて、
ググっても分からないので聞いているんですが・・・
WMIのShadowCopyなどを使えば何となく出来る気がするんですが、
実際に名前やタイムスタンプを取得する方法を、
コード上でどう記述すればいいのか未だに分かりません。
数秒で解決出来たなら教えて頂いても宜しいでしょうか。

42 名前:28=30=33 mailto:sage [2013/11/23(土) 08:08:36.43 ]
>>39
あのスレとこっちじゃタイトルが似てるだけで中身が別物だからなぁ…
Part32がほぼ同時に二つたって、
こっちよりの前スレが1000まで行って、向こうは未だ100も行ってないっていう現実が
あの糞テンプレが如何に嫌われてたかを如実に表してる。

さすがに自分の戦略ミスに気付いたのかテンプレ厨も今はおとなしくしてるけど
ほとぼりが冷めたら(たとえばこのスレが落ちるとかしたら)
また暴れだすのは間違いないよ。
それが分かってるから俺は向こうには書き込まない。

もちろん、向こうで書きたい人は勝手に書けば良いけど
テンプレ厨が暴れだしたら結局こっちに帰らざるを得ないと思うよ。

……って言うようなことを書くことを指して
「荒れてる」とか表現するんだろうけど、
こういう議論は>>36とか>>39みたいな馬鹿げた主張が無ければ
わざわざ言う必要が無いことなんだよね。

こっちとしても関わらずに済むので
スレのコンセプトが根本的に違うと言うことを理解して
テンプレ君には向こうで勝手に活動してもらえたらありがたいと思う。

43 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 08:24:31.36 ]
>>42
避難スレかよw

44 名前:40 mailto:sage [2013/11/23(土) 08:26:50.63 ]
>>41
続きはこのスレでやりましょう。

Excel VBA 質問スレ Part32
toro.2ch.net/test/read.cgi/tech/1381151995/

45 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 09:01:59.71 ]
>>44
そちらのスレに行ったら普通の状態のフォルダやファイルの取得方法と勘違いされている方がおられました。
その辺の方法は流石に聞くのは失礼な部類に含まれると思っています。
私が知りたかったのは>>38でも記述した「以前のバージョン」、つまりシャドウコピー内のファイルやフォルダの情報です。
向こうのスレではその後にVB6で出来る様な事はスレ違いであるとの指摘が有ったので、
引き続きこちらでお世話になりたいと思います。

46 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 09:17:57.33 ]
>>45
アンチテンプレ厨の自演ネタ質問なので降りるわ。

47 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 09:36:55.54 ]
降りるも何も初めから舞台に上がっていないでしょ
挙句に見当違いのFSO持ち出したりしてみっともないったらありゃしない
答えられないなら下手な言い訳せずに黙って消えればいいのに

48 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 09:43:33.38 ]
>>45
何の為に必要なの?

49 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 09:43:54.19 ]
>>45
何の為に必要なの?

50 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 10:32:05.39 ]
>>49
サーバ上のフォルダやファイルの更新履歴を欲しいと思っています。
最初はサーバ上のフォルダやファイルを定期的に巡回し、その情報を取得してDBに登録する方法を考えていましたが、
膨大な数があるため、1巡するだけでも12時間以上掛かってしまいます。
それで指定されたファイルやフォルダの情報をシャドウコピー側から
取得出来ればいいなと思い聞いてみました。



51 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 10:49:48.08 ]
>>50
自演乙

52 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 10:59:33.23 ]
>>51
痛々し過ぎて見てられない

53 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 11:37:18.23 ]
自演ってことにしとかないと赤っ恥かきっぱなしだもんねw

54 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 12:36:38.98 ]
仮に自演だったとしても(まぁ自演ではない訳だけど)
トンチンカンな回答で偉そうにしていた事実は消えない

55 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:17:41.21 ]
ここもスレタイみるかぎり、"Excel"のVBAスレなんだが
スレチ気にするならVBAなんでもスレいけよ

56 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 14:20:32.85 ]
ExcelのVBAとVB6は被る所も多いからな。
そんなので一々ギャーギャー言うならあのドMスレに行け。

57 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 14:34:44.17 ]
>>50
シャドウコピー作る例はいっぱい見つかるけど戻すのはほとんど見ないな
かろうじて見つかったのがこれ
social.technet.microsoft.com/Forums/de-DE/57025a40-400d-498d-a163-3c613145d16c/powershell?forum=powershellja
ただ、ファイルのプロパティで出るやつは、シャドウコピーじゃない普通のバックアップも表示してるしどうやってるか知らん
そもそもファイルの更新情報とるのに12時間ってホントにそんなにかかるのか?
プロパティで出てくるのだいぶ遅いし、それで一覧つくるともっとかかる気がするけど

58 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 15:41:13.67 ]
>>57
レスありがとうございます。
シャドウコピーから取得するなら、巡回する必要もないしピンポイントで
対象のフォルダやファイルのバックアップ情報を見にいけば良いと思ったので
余り時間のことは気にしていませんでした。
そのリンク先にもWMIのShadowCopyが書いてあるのですが、
色々調べてみた結果、結局ローカルからサーバの情報を読みに行く際に
VSS登録先のIDやパスワードが必要になるのでこちらの環境上、結局は使えない
みたいです。
別にシャドウコピーを使わなくても今回は大量にある
ファイルやフォルダの履歴がピンポイントで指定して取れれば
それで良いんですが・・・。

59 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 18:20:45.18 ]
>>58
うーん。
ファイル数が多くても履歴をなんとかする方法、
知らなくもないけど、多分テンプレ君が数秒でググって教えてくれるよ。


口だけでなければ。

60 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 19:16:49.58 ]
>>59
テンプレ君は口だけなので当てには出来ません
是非>>59さまのお知恵をお貸しください



61 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 19:32:01.65 ]
>>60
大丈夫。>>40であれだけの事を豪語してるし。
まさかこれで何も無しって事はないだろw

62 名前:デフォルトの名無しさん [2013/11/23(土) 19:42:18.50 ]
なんだよw
口だけ君がまた一人増えただけか

63 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 19:53:49.10 ]
>>62
いや、俺はテンプレ君の出方を見るよ。
どうしても駄目でギブアップと言うなら
答えんでもないけどねw

64 名前:デフォルトの名無しさん [2013/11/23(土) 20:04:45.04 ]
>>63
あいつがギブアップなんてする訳無いじゃん
何事も無かったようにシカトして終わりだよ

大体、あんな屑相手にするより
今実際に困ってる>>38さんにアドバイスしてあげるほうが
よっぽどヤツにダメージ与えられるだろうが。

せめて期限を区切ってそれを過ぎたら回答すると宣言しておくとか
そのぐらいはしてもらわないと
今の時点では君も口だけ君と言わざるを得ない。
第一君の回答が正しいと言う保証も無いわけだし。

65 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 20:28:56.03 ]
答えられないテンプレ君が必死ですw
>>60は捨てメアド晒してくれ。先に俺の
考えた方法を送っておこう。
テンプレ君が考えを述べるまで、メールでやり取りすることにしようか。
テンプレ君が考えを述べた後はここでいくらでも俺の考えを晒してくれて構わない。
それならみんな幸せだよんな。

66 名前:60=62=64 mailto:sage [2013/11/23(土) 21:04:56.72 ]
いや、俺は別にどうでも良いのよ。
俺の能力では君の答えを聞いてもそれが正しいかどうか判断出来んし。
むしろ>>38さんに教えてあげてくれ。

ただ、こっちやあっちでそういう安い挑発をするより
答えられる質問にはこのスレで淡々と答え続けることの方が
あっちのスレの存在意義を失わせるという意味では遥かに有効だと思うよ。

あぁ、そういえばテンプレ君が俺を騙ってメールする可能性もあるから
君の正当性を証明する手法としてはおそらく不適切だね。

67 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 21:13:32.42 ]
>>65
助かります。実は代替案が思い浮かばなくて非常に困っていました。
少し諦めかけて月曜日に仕事場で何て報告しようか悩んでいた所です。
それと私は>>58ですが>>60ではありません。
宜しくお願いいたします。
sutemeado123456@gmail.com

68 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 21:22:25.84 ]
>>67
了解した。
それにしても>>60>>58では無かったとは。
>>66がテンプレ君で成りすましだったら全て帳尻が合うな。
いけずうずうしいと言うかなんというかw

69 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 21:47:07.49 ]
>>68
> >>66がテンプレ君で成りすましだったら全て帳尻が合うな。

会わねーよw
もし俺がテンプレ君だったら自虐的にも程があるだろ。
挙句に誘導してる向こうのスレじゃなくてこっちで答えられたら
ヤツにどんなメリットがあるんだよ。
(ちなみにこういうときに使うなら
「帳尻」じゃなくて「辻褄」のほうが適切だよ)

俺は向こうには書き込まないし、自分が分かる範囲の質問なら
こっちのスレで答えさせてもらってるだけだよ。

一応このスレで俺が今まで書き込んだレスは
>>28,>>30,>>33,>>42,>>47,>>52,>>54,>>60,>>62,>>64
だよ
これは全部俺の書き込みだし、このスレではこれ以外には一切書き込んで無い。
内容を吟味してテンプレ君かどうか判断してくれ。
つうか、仮に成りすましを疑われたところで
特にデメリットも無いわけだけどな。

70 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 22:36:41.94 ]
>>68
メール確認しました。
まさかここまで詳しい説明書き付けてくれて、
しかも一番重要と思える部分を既に作ってくれているとは思いもしませんでした。
家ではその部分は問題なく動いているので、
仕事場の膨大なフォルダやファイルで問題なく使えるか確認させて頂きたいと思います。
私の知識が足らず、よく分からない部分は済みませんが後でメール送付しますので宜しくお願いします。
どうもありがとうございます。



71 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 22:57:52.70 ]
>>69
そうか、信用しよう。
疑って済まんかったな。

>>70
そんな大層なもんじゃないけど、
仕事場でもちゃんと動くことを祈ってるよ。

72 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:07:20.41 ]
質問です
もうすぐクリスマスですが
皆さんは一緒に過ごす相手がいますか?

73 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 21:22:14.19 ]
うるせーハゲ

74 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 16:21:16.46 ]
質問です
もうすぐクリスマスですが
クリスマスまでに彼女ができるVBAのコードはありますか?

75 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 21:11:46.22 ]
ネタの質問だな。ググれば数秒で解決。

76 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:35:38.26 ]
ググって解決するんだ!

77 名前:デフォルトの名無しさん [2013/11/29(金) 11:03:07.73 ]
>>74
MsgBox "Love"

78 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 16:52:31.96 ]
MsgBox "クリスマスに1日一緒にいてくれたら10万円あげちゃう", vbOKOnly

79 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 21:18:14.46 ]
インターフェースって
よく分かんないのがあるんですが
あれって何に使うんですか?

80 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 22:10:15.32 ]
vbaのどこで「インターフェース」って出てくるのさ。
Vb.Netの方でならそういうのあるのは知ってるけど(ちらっとだけどねw



81 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 00:00:45.39 ]
>>78
例えば、AというクラスとBというクラスがあったとして、
それぞれに同じ数と型の引数、同じ型の戻り値を持った同じ名前のメソッドがあったとします。
コード的にAとBのインスタンスさえ入れ換えてやれば分岐して違うクラスとして
設定しなくても一発で行けるのに・・・
と言う時に、A、B、どちらの型のインスタンスも格納出来るのがインターフェースです。
もっとも、それ用に作らなければなりませんが。

>>80
vbaには継承は有りませんが実装は有る様ですよん。

82 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 06:02:14.70 ]
>>79
クリスマスの夜に僕と君を繋いでくれる
そういうものさ

83 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 13:24:33.41 ]
早くvba.net出来ないかな。
.netになったらあんなことやこんなことも
できるようにばなるんだろうな。
いや、よく知らないけど。

84 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 11:41:37.13 ]
プログラマーなら「FizzBuzz問題」解けるよな?
kohada.2ch.net/test/read.cgi/prog/1209467166/6
なんですが、forの後のコロンってどういう意味があるんでしょうか?

Sub a()
Dim s, i
For i = 1 To 100: s = s & IIf(i Mod 15 = 0, "FizzBuzz", IIf(i Mod 3 = 0, "Fizz", IIf(i Mod 5 = 0, "Buzz", i))) & vbCrLf: Next
MsgBox s
End Sub

85 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 15:21:31.23 ]
>>84
改行しないで、1行に複数の命令書くときの区切り

86 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 15:25:14.02 ]
>>85
なんと、ありがとうございます
セミコロンにしようよ・・・

87 名前:デフォルトの名無しさん [2013/12/03(火) 16:21:57.89 ]
>>86
セミコロンには別の意味が割り当てられてる

88 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 21:35:40.07 ]
>>84
へぇ、vbaでも三項演算子って使えるんだ。
vb.net辺りでも使えるけど、iifだと遅いからifの方の三項演算子使うとか色々あるんだけど、
まぁvbaのそれとは別物かも知れんね。

89 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 21:49:58.38 ]
三項演算子なんてたいそうなものじゃないよ
>>85のいうとおり一行に複数命令を書くときの単なる区切り文字
Cでのセミコロンと大体同じ(なので>>86はセミコロンにしようよと言ってると思う)

90 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 21:52:40.76 ]
あコロンのことをいってるんじゃないのか勘違い失礼



91 名前:デフォルトの名無しさん mailto:sage [2013/12/03(火) 22:38:33.25 ]
VBAではIIfは関数であって演算子ではない
VB.NETでも同様

92 名前:デフォルトの名無しさん mailto:sage [2013/12/04(水) 02:17:02.98 ]
GetPivotDataを使うとき、引数が条件によって変わる場合の処理ってどうすれば良いですか。
イメージとしては下記のようにしたいです。

Sub MYGETPIVOTDATA(ParamArray arr as Variant)
 GETPIVOTDATA(データ フィールド, ピボットテーブル,arr(0),arr(1),arr(2),arr(3),・・・arr(ubound(arr,1)))
End Sub

93 名前:92 mailto:sage [2013/12/04(水) 02:18:48.10 ]
引数の数が条件によって増えたり減ったりするという意味です。

94 名前:デフォルトの名無しさん mailto:sage [2013/12/04(水) 10:03:51.41 ]
数分ケース

95 名前:デフォルトの名無しさん [2013/12/04(水) 23:44:34.02 ]
>>93
役に立つかどうかは分からんけど、この辺のでどうだろうか

www.moug.net/tech/exvba/0100045.html

96 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 00:06:24.65 ]
演算子と言えばXor(排他的論理和)ってのがあって
True Xor True = False
True Xor False = True
False Xor True = True
False Xor False =False
みたいにどちらか片方のみがTrueの場合にTureを、
そうじゃない場合はFalseを返すんだけど、
これの使い道って何か有る?

97 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 03:16:55.19 ]
なんだろうね。
加算機とか半加算器とかで使うのかね。
言われてみれば使ったことないかも。

98 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 05:31:18.09 ]
code.msdn.microsoft.com/office/VBACRC-32-dad7d087

99 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 08:05:03.83 ]
>>96
今取り込んだデータと直前のデータの Xor とって、データの変化点を見るとか。
まあ、VBA ではあまり出番はないわな。

100 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 11:29:50.26 ]
スクランブラ/デスクランブラを実装したり
擬似乱数を自前で作ったり

かな?



101 名前:デフォルトの名無しさん [2013/12/05(木) 11:54:01.45 ]
今まで、「あ、これってxor使えば一発じゃん」と思ったことが数回あったと記憶しているが、
どういう場面だったかは思い出せない

102 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 16:40:08.46 ]
特定ビットの反転につかう

103 名前:デフォルトの名無しさん [2013/12/05(木) 16:48:23.56 ]
>>102
あ!それだ!

104 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 20:12:53.41 ]
で、VBAで「特定のビットを反転する」場面って?

105 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 21:19:40.58 ]
フラグって意味じゃないかな

106 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 22:04:39.69 ]
>>102
特定Bitの反転だったらNotとAndでよくない?

107 名前:デフォルトの名無しさん mailto:sage [2013/12/05(木) 23:46:22.83 ]
NotとAndでビット反転書いてみてくれ
それとXorと比べてみ

108 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 00:10:00.42 ]
ECCでも実装すれば

109 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 07:06:26.46 ]
>>107
ああ、なるほどね。解った。

110 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 09:15:16.89 ]
SQL で XOR が無くて困ったときってどうしてます?



111 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 13:29:52.61 ]
IE操作時、BusyとReadystateでページ読み込み完了をチェックしていますが、
タイムアウト(?)が原因なのか ページの読み込み中 で止まる場合があります
このような場合、どのように回避すればよろしいのでしょうか?

112 名前:デフォルトの名無しさん [2013/12/06(金) 17:32:08.44 ]
>>111
一定時間経過したら、再読み込み処理、
複数回再読み込みしてダメなら、読み込みエラー処理

113 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 22:03:11.45 ]
>>112
無事動きました、ありがとうございます

114 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 08:48:57.29 ]
仕事場でまれに内容が何も書いてない関数が
ずらっと並んでいるクラスモジュールを見かけることがあるんですが
この間気になってそことその関数を呼び出している所を
コメントアウトしたら挙動がなんかおかしくなりました。
この内容がまったく書かれていない関数ってどんな意味があるんでしょうか?

115 名前:桃白白 ◆9Jro6YFwm650 [2013/12/07(土) 10:02:34.86 ]
>>114
なにもしないってことじゃない。ヌルオブジェクトみたいな。

116 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 13:00:27.72 ]
呼び出してる前後で想像できないのかよ
想像しろよ、気になるだろ、なんなら聞いてくれよ
ずらっと並ぶ程沢山あるならなおさら

117 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 14:03:31.00 ]
>>114
コード見てないから分からんけど、
それ、多分ちょっと前にレスがあった
インターフェースだと思うよ。

118 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 21:05:07.86 ]
IIFってなんて詠むんでしょうか
アイアイエフ?
アイイフ?
2エフ?

119 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:14:16.32 ]
>>118
俺はアイイフと読んでいるけど、多分これには正しい答えはなく、
どれだけ多く世間に浸透しているかが正しいかどうかを決めていると思う。

そんな時はここを参考にするといいかも知れない。

shinh.skr.jp/yomikata/

120 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:26:52.30 ]
愛畏怖って読んでます



121 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 23:34:34.88 ]
>>119
いやおかしいだろそのリンク先w

122 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 00:33:08.88 ]
>>114
>>117

インターフェースだね。
って言うか前スレで、テーブルの集計を出して欲しいって言われた時
実はそれ使ってコード書いたし。長くなるけど、その時のコードで
説明しようか。

123 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 00:37:17.54 ]
標準モジュール部
モジュール:Main
Option Explicit

Private mSheetParameterEntity As ISheetParameterEntity

'メイン処理
Public Sub Main(ByVal targetSheet As Worksheet)

Dim factory As New sheetParameterFactory

On Error GoTo Error_Handler

Application.ScreenUpdating = False

Set mSheetParameterEntity = factory.makeSheetParameter(targetSheet)
Call Initialize
Call TableControl.CopyTable
Call SheetControl.Sort
Call TableControl.ReleaseTable
Call SheetControl.MakeSummary
Call SheetControl.SelectCellTopLeft
GoTo Finaly

124 名前:デフォルトの名無しさん [2013/12/08(日) 00:38:33.25 ]
Error_Handler:

Call MsgBox(Error)

Finaly:

Application.ScreenUpdating = True

End Sub

'初期化処理
Private Sub Initialize()
Call TableControl.SetSheetParameterEntity(mSheetParameterEntity)
Call SheetControl.SetSheetParameterEntity(mSheetParameterEntity)
Call TableControl.ClearOutLine
Call SheetControl.InitializeSheet
End Sub

125 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 00:42:50.80 ]
モジュール:SheetControl
Option Explicit

Private Const COPY_CRITERIA_POSITION As String = "B2"
Private mSheetParameterEntity As ISheetParameterEntity

'テーブルパラメタエンティティ格納
Public Sub SetSheetParameterEntity(ByVal value As ISheetParameterEntity)
Set mSheetParameterEntity = value
End Sub

'シート初期化
Public Sub InitializeSheet()
mSheetParameterEntity.GetTargetSheet.Cells.Clear
End Sub

'ソート処理
Public Sub Sort()

Dim sortRange As range

'ソートキーのクリア
mSheetParameterEntity.GetTargetSheet.Sort.SortFields.Clear

'ソートキー追加
For Each sortRange In mSheetParameterEntity.GetTargetSortItem
mSheetParameterEntity.GetTargetSheet.Sort.SortFields.Add Key:=sortRange, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Next

126 名前:デフォルトの名無しさん [2013/12/08(日) 00:44:08.11 ]
'ソート
With mSheetParameterEntity.GetTargetSheet.Sort
.SetRange mSheetParameterEntity.GetTargetRange
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub

'集計行の表示
Public Sub MakeSummary()
mSheetParameterEntity.GetTargetRange.Subtotal _
GroupBy:=mSheetParameterEntity.GetGroupColumn, _
Function:=xlSum, _
TotalList:=Array(mSheetParameterEntity.GetTargetSummaryItem), _
Replace:=True, _
PageBreaks:=False, _
SummaryBelowData:=True
End Sub

127 名前:デフォルトの名無しさん [2013/12/08(日) 00:45:26.07 ]
'対象の範囲と指定した列により、ソートする列の行範囲を取得
Public Function GetSortRange(ByVal targertSheet As Worksheet, _
ByVal originalRange As range, _
ByVal columnOffset As Long) As range

Set GetSortRange = targertSheet.range(Cells(originalRange.Row, _
originalRange.Column + columnOffset), _
Cells(originalRange.Row + originalRange.Rows.Count - 1, _
originalRange.Column + columnOffset))
End Function

'対象シートの左上セル選択
Public Sub SelectCellTopLeft()
mSheetParameterEntity.GetTargetSheet.Cells(1, 1).Select
End Sub

128 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 00:47:52.99 ]
モジュール:TableControl
Option Explicit

Private Const COPY_CRITERIA_POSITION As String = "B2"
Private mSheetParameterEntity As ISheetParameterEntity

'テーブルパラメタエンティティ格納
Public Sub SetSheetParameterEntity(ByVal value As ISheetParameterEntity)
Set mSheetParameterEntity = value
End Sub

'テーブルコピー処理
Public Sub CopyTable()
Sheet1.range(COPY_CRITERIA_POSITION).CurrentRegion.Copy
mSheetParameterEntity.GetTargetSheet.range(COPY_CRITERIA_POSITION).PasteSpecial
Application.CutCopyMode = False
'テーブル範囲格納
Call mSheetParameterEntity.SetTargetRange( _
mSheetParameterEntity.GetTargetSheet.range(COPY_CRITERIA_POSITION).CurrentRegion)
End Sub

'アウトラインの解除
Public Sub ClearOutLine()
mSheetParameterEntity.GetTargetSheet.Cells.ClearOutLine
End Sub

129 名前:デフォルトの名無しさん [2013/12/08(日) 00:49:12.40 ]
'テーブル解除処理
Public Sub ReleaseTable()

Dim list As ListObject

With mSheetParameterEntity
For Each list In .GetTargetSheet.ListObjects
If list.range.Row = .GetTargetRange.Row And _
list.range.Column = .GetTargetRange.Row And _
list.range.Rows.Count = .GetTargetRange.Rows.Count And _
list.range.Columns.Count = .GetTargetRange.Columns.Count Then
list.Unlist
Exit For
End If
Next
End With

End Sub

130 名前:デフォルトの名無しさん [2013/12/08(日) 00:58:17.49 ]
クラスモジュール部
モジュール:ISheetParameterEntity
'対象シート取得
Public Function GetTargetSheet() As Worksheet
End Function

'対象範囲取得
Public Function GetTargetRange() As range
End Function

'対象範囲格納
Public Sub SetTargetRange(ByVal value As range)
End Sub

'対象ソート項目取得
Public Function GetTargetSortItem() As Collection
End Function

'グループ化列取得
Public Function GetGroupColumn() As Integer
End Function

'対象合計項目取得
Public Function GetTargetSummaryItem() As Integer
End Function



131 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 01:00:28.87 ]
モジュール:Sheet2ParameterEntity
Option Explicit

Implements ISheetParameterEntity

Dim mTargetRange As range
Const SORT_ITEM1 As Long = 0
Const SORT_ITEM2 As Long = 1
Const GROUP_COLUMN As Integer = 2
Const SUMMARY_ITEM As Integer = 3

'対象シート取得
Public Function ISheetParameterEntity_GetTargetSheet() As Worksheet
Set ISheetParameterEntity_GetTargetSheet = Sheet2
End Function

'対象範囲取得
Public Function ISheetParameterEntity_GetTargetRange() As range
Set ISheetParameterEntity_GetTargetRange = mTargetRange
End Function

'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub

132 名前:デフォルトの名無しさん [2013/12/08(日) 01:01:16.16 ]
'対象ソート項目取得
Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet2, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet2, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function

'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function

'対象合計項目取得
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function

133 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 01:03:07.08 ]
モジュール:Sheet3ParameterEntity
Option Explicit

Implements ISheetParameterEntity

Dim mTargetRange As range
Const SORT_ITEM1 As Long = 3
Const SORT_ITEM2 As Long = 0
Const GROUP_COLUMN As Integer = 4
Const SUMMARY_ITEM As Integer = 3

'対象シート取得
Public Function ISheetParameterEntity_GetTargetSheet() As Worksheet
Set ISheetParameterEntity_GetTargetSheet = Sheet3
End Function

'対象範囲取得
Public Function ISheetParameterEntity_GetTargetRange() As range
Set ISheetParameterEntity_GetTargetRange = mTargetRange
End Function

'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub

134 名前:デフォルトの名無しさん [2013/12/08(日) 01:03:56.94 ]
'対象ソート項目取得
Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function

'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function

'対象合計項目
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function

135 名前:デフォルトの名無しさん [2013/12/08(日) 01:06:09.64 ]
モジュール:SheetParameterFactory
'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub

'対象ソート項目取得
Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function

'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function

'対象合計項目
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function

136 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 01:15:14.00 ]
ミスった>>135はなし
モジュール:SheetParameterFactory
'シートパラメタエンティティ作成クラス
Public Function makeSheetParameter(ByVal targetSheet As Worksheet) As ISheetParameterEntity
Dim instance As ISheetParameterEntity
Select Case targetSheet.Name
Case Sheet2.Name
Dim sht2Para As Sheet2ParameterEntity
Set sht2Para = New Sheet2ParameterEntity
Set instance = sht2Para
Case Sheet3.Name
Dim sht3Para As Sheet3ParameterEntity
Set sht3Para = New Sheet3ParameterEntity
Set instance = sht3Para
Case Else
Set instance = Nothing
End Select
Set makeSheetParameter = instance
End Function

137 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 01:36:17.38 ]
ちょっと長くなって荒らしみたいになって済みません。
が、>>130の部分がインターフェースで

>>123でそのインターフェースの型を用意して、>>136でSheet2ParameterEntityか、Sheet3ParameterEntityの
どちらかを生成して>>123で用意した型に設定しています。
後は生成される二つのクラスの中以外は差異なくコードが走るため、
クラスの違いによる分岐は有りません。
この様に違うクラスで生成したものを同じクラスの型で扱えるようにする
仕組みが、中に何も書かれていない関数の正体です。

138 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 01:39:18.23 ]
うわぁ、読み返してみると長すぎだ。
ごめんなさいもう二度としません。

139 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 07:58:29.03 ]
>>119
へー、面白いな、これ。
「Width」って「うぃどぅす」って呼ぶのが一般的なんだ。
今までずーっと「ワイズ」だと思ってた。

140 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 08:27:53.85 ]
>>138
「Vba、インターフェース、ストラテジーパターン」あたりで
ググれと言えば一発で分かることだろ。
どうしても長いコード書きたかったら前
桃臼が晒してたコード書き場があったから
そこを使え。
どこだったかは忘れたけど。



141 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 09:52:33.48 ]
フランス語ではいは?
京都人「うぃどす」

142 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 10:19:44.06 ]
茨城が
いばらきと
いばらぎで僅差なんだね。
本当はどっち?

143 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 11:10:35.20 ]
本当は
ちばらき

144 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 11:30:50.96 ]
Then は ゼンって言ってます
なぜか合ってるのか不安になる音です

145 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 12:26:13.53 ]
日本語に無い音だから、カナ表記するなら近い音を探すしかない

146 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 12:42:17.43 ]
そこでGoogle翻訳読み上げお姉さんですよ
キュートなお声ですよね

147 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 15:06:03.17 ]
いやだからおかしいだろそこのリンク先
最初のAAAからして読み方の
西恋ケ窪とかどこだよ。
IEnumerableって何なんだよ。

148 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 15:34:26.83 ]
IEnumerableはインターフェースだにょ

149 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 18:05:50.91 ]
私は関数で使う変数宣言を関数の頭で行いますが、
Javaもやっている私の同僚はインデント階層切替わりの単位で変数宣言をします。
関数内のどこで変数宣言しても特に動きが変わらないのは知っていますが、
同僚に言わせるとその方が分かり易いし、いずれObject指向言語に手を付けるなら、
そっちの方に慣れておいた方がいいと言います。
そう言うものなんでしょうか?

150 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 19:32:44.84 ]
>>149
>関数内のどこで変数宣言しても特に動きが変わらない
VBAではそうでも、Javaではそうではない
言語に合わせて宣言するべきで、VBAではプロシジャの先頭での宣言が薦められてたはず
まあ、どこで宣言しても良いんだが、ルールを決めてそれを守る方が大事
先頭で宣言したり使う直前に宣言したり、混在させるのが最悪



151 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 20:55:04.75 ]
>>149
vbaはやっぱり頭で合わせるもんだと思う。
無理してjavaなんぞに合わせなくても
object指向ので作る時にそうすればいいじゃない。

152 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:01:29.51 ]
>>148
冗談で言ってるのかと思ったら
本当でビビったw

153 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:07:26.86 ]
変数の話ならそんなことより
DimとPrivateの違いって何なの?

154 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:37:29.33 ]
>>153
モジュールレベルで宣言したときのスコープ(参照できる範囲)が違う
と思ったけど、モジュールレベルで使うとDimと同じスコープか
プロシジャレベルで使えるかどうかの違いだけで同じだな

VBではPublicかPrivate書いたらDimを省略できる出来るだけだったと記憶してるが
VBAではそうじゃないっぽいな

155 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 20:52:31.18 ]
>>153
Dimは遠い昔の、それこそVBじゃない頃、
N-Basicとかで配列をDim(dimension)で
宣言してた頃の名残りで盲腸みたいなもんだから、
出来ればPrivateで宣言した方がいいと、個人的には思う。
コメントをアポストロフィで付けないで、REMで書く様なもん。

156 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 01:13:10.32 ]
シングルコートまたはシングルコーテーションと言わずにアポストロフィとおっしゃるのは癖ですか?何か意図があれば解説きぼんぬ

157 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 01:51:33.24 ]
それを言うなら自分もまず「シングルクォート」と書くべきじゃね

158 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 02:05:44.25 ]
>>156
引用符(コーテーションマーク、クォーテーションマーク)は、前と後の一対で使うもの

159 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 02:09:15.25 ]
シングルコーテーションマークは、英語で使われ、
日本語ではあまり使われない
(中国語や韓国語では普通に使われるらしい)

160 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 02:38:21.76 ]
シングルクォーテーションとアポストロフィは厳密には別物なんだろうけど
もともともコメント記号としてどっちの意図で使われたのかはわからんしなぁ
俺もこの文脈なら'はアポストロフィって言うんだが、ヘルプみると
>コメントを入力するには、先頭にクォーテーション (') を入力するか、Rem ステートメントで指定します。
とか
>コメント行は、先頭にクォーテーション (') または Rem ステートメントのいずれかと、
とか書いてあるから、あれはクォーテーションと呼ぶのが正しいのかもしれん



161 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 03:14:25.20 ]
記号の読み方はJIS規格で「シングルクォーテーションマーク」と定められているので議論の余地はない

英語的な解釈をするなら、アポストロフィはコメント行の先頭に使っていい記号ではない
本来はクォーテーションで前後を囲ったであろう物を、8bit時代のMS-BASICのリソース的な制約から
後半を省略可能にしたと見るのが妥当

162 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 04:19:23.00 ]
そういうのも定められてるのか。
そのJIS企画の当該ページのリンクが貼られたらこの話は終わりにしよう。
それまでは存分に語らい合いましょう!

ってExcel VBAスレじゃないですか。
おわり。

163 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 04:33:44.43 ]
>>161
お前のキーボードはjIS規格配列なのか?
VBAはいつからJIS規格になったんだ

違う規格の定義をあてはめて議論の余地がないとか笑わせる

164 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 04:42:38.53 ]
おーっとここで待ったが入ったーっ!
これは確かにと言わざるを得ない。
これで結論はもう出たということか。
VBAのオフィシャルドキュメントで、
コメントには何を使うと記載されているのか?
で、この話に執着する者達が終着できそうだ。

公式文書のリンクが貼られたらこの話は終わりにしよう。
それまでは存分に語らい合いましょう!

って略

165 名前:桃白白 ◆9Jro6YFwm650 [2013/12/10(火) 05:26:36.90 ]
>>164
語らうには語り合うという意味があるから合うを付ける必要ないんじゃないかな。
語らいましょう、または、語り合いましょうでいいと思うんだよね。

166 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 05:33:56.97 ]
>>165
うっせーばーか
いいと思うんだよねってなんだよ
いいんだよって言い切れないのかよ
もっと自信もてよボケカス
早くVBAの公式文書のリンク持ってこいや

167 名前:桃白白 ◆9Jro6YFwm650 [2013/12/10(火) 05:38:24.57 ]
(´・ω・`)・ω・`) キャー
/  つ⊂  \  怖いー

168 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 05:57:51.45 ]
\               U         /
  \             U        /
             / ̄ ̄ ヽ,
            /        ',      /     _/\/\/\/|_
    \    ノ//, {0}  /¨`ヽ {0} ,ミヽ    /     \          /
     \ / く l   ヽ._.ノ   ', ゝ \       <   バーカ!  >
     / /⌒ リ   `ー'′   ' ⌒\ \    /          \
     (   ̄ ̄⌒          ⌒ ̄ _)    ̄|/\/\/\/ ̄
      ` ̄ ̄`ヽ           /´ ̄
           |            |  
  −−− ‐   ノ           |
          /            ノ        −−−−
         /           ∠_
  −−   |    f\      ノ     ̄`丶.
        |    |  ヽ__ノー─-- 、_   )    − _
.        |  |            /  /
         | |          ,'  /
    /  /  ノ           |   ,'    \
      /   /             |  /      \
   /_ノ /              ,ノ 〈           \
    (  〈              ヽ.__ \        \
     ヽ._>              \__)

169 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 19:53:40.33 ]
まぁいいじゃないか。
「'」に変わりはないんだろうし。

170 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 00:23:21.08 ]
Excelにはテキストリーダー の機能があると聞きました。
それに音程付けてボーカロイドみたいにすることってできますか?



171 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 05:55:28.56 ]
無理

172 名前:デフォルトの名無しさん mailto:sage [2013/12/15(日) 07:52:32.98 ]
>>170
可能

173 名前:デフォルトの名無しさん mailto:sage [2013/12/15(日) 20:26:43.18 ]
マクロの設定を有効にしているにもかかわらず多変量解析を行おうとすると
マクロが使用できないか、全てのマクロが無能になっている可能性があります、と出ます
どうすれば多変量解析を実行できるでしょうか?

174 名前:デフォルトの名無しさん mailto:sage [2013/12/15(日) 20:39:43.00 ]
excelのバージョンも書かず、どこに置いてあるものなのかも言わず
excel2007以降なら信頼できる場所に置いてあるのかいないのかなどなど情報を一切書かず

175 名前:デフォルトの名無しさん [2013/12/15(日) 20:45:23.66 ]
>>173
他のブックのVBAでも同じ状態?
ググって見つかった下記などは試してみたのかな
answers.microsoft.com/ja-jp/office/forum/office_2007-excel/%E7%AA%81%E7%84%B6%E3%83%9E%E3%82%AF%E3%83%AD/b9379ad8-40f6-4415-b490-3090a900a8a0?msgId=122645e7-040b-400b-8f7e-77bddfa6e101

176 名前:デフォルトの名無しさん mailto:sage [2013/12/17(火) 22:47:10.17 ]
よくわかりませんが同じようなスレがここにもありましたので
同じ質問になると思いますが

日付で今日より1年前のデータで、最古のデータ行を拾いたいのです
WorksheetFunction.Matchで照合の型を-1で、降順に並び替えれば
うまくいきますが、データは昇順の状態で
一年前の最古のデータ行を拾う方法ありますか?
昇順のままで照合の型を-1だと当然失敗します
(最新のデータを拾ってしまいます)
いろいろ調べたのですが、いい方法がみつかりませんでした
どなたかいい方法ありませんか?

177 名前:デフォルトの名無しさん [2013/12/17(火) 23:20:52.18 ]
>>176
マルチ
どちらかを質問終了するべし

178 名前:176 mailto:sage [2013/12/19(木) 01:49:09.75 ]
自己解決できました

179 名前:デフォルトの名無しさん [2013/12/19(木) 18:30:09.13 ]
同じフォルダ内にある複数のtextの記述(数字が縦に6行)を読み込むマクロを
作りたいのですが、
たとえば1つ目のtextの1行目をA-1に 2行目の記述をB-1に …
と6行を6列のに読み込み、さらにファイル名(文字列)を7列目のG-1に読み込み、
2つ目のtextの1行目をA-2に、2行目の記述をB-2に …
と読み込ませることはできませんでしょうか?

180 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 19:30:34.70 ]
できます



181 名前:デフォルトの名無しさん [2013/12/19(木) 19:40:28.24 ]
できましたら、その方法を教えて頂けませんでしょうか?

182 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 19:52:46.93 ]
まだできていませんので教えることはできません

183 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 21:54:28.52 ]
>>179
とりあえず書いてみたけど、やっつけなのでエラー処理とかは書いてません

以下のマクロを書いたブックと同じフォルダに"text"フォルダを作って
その中に読み込ませたいテキストファイルを入れてください。
マクロを実行すると、マクロと同じフォルダに"test.xlsx"というファイルが作成されます。
既に"test.xlsx"が存在する場合、上書きするか聞いてきます。
"text"フォルダ内には不要なファイルは入れないでください。

Option Explicit
Sub test()
Dim f As Object
Dim w As Workbook
Dim t As Workbook
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set w = Workbooks.Add
With w.Sheets(1)
 For Each f In fso.GetFolder(ThisWorkbook.Path & "\text").Files
  Set t = Workbooks.Open(f)
  t.Sheets(1).UsedRange.Copy
  If .Cells(1, 1) = "" Then
   .Cells(1, 1).PasteSpecial Transpose:=True
  Else
   .Cells(.Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Transpose:=True
  End If
  t.Close
 Next f
End With
w.Close SaveChanges:=True, Filename:=ThisWorkbook.Path & "\test.xlsx"
End Sub

184 名前:183 mailto:sage [2013/12/19(木) 22:08:35.18 ]
やべ、各テキストファイルのファイルネームを入れるっての忘れてた…orz

185 名前:183 mailto:sage [2013/12/19(木) 22:22:52.58 ]
修正も超やっつけですが、コード中の
t.Close 
の行の前に
.Cells(.Rows.Count, 1).End(xlUp).End(xlToRight).Offset(, 1) = t.Name
ってのを一行入れてください。

186 名前:デフォルトの名無しさん [2013/12/20(金) 09:18:25.34 ]
ありがとう!
あなたは救世主です!
本当にたすかりました。

187 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 16:20:17.72 ]
大学生でエクセルテストちょっと前にしたんですが答えは小数点第2位までて言われたので切り捨てして提出したんですが
いつ切り捨てするのかよくわかりませんでした。
計算は1度計算したのをさらにかけたり割ったりします。
ここで、
最初にかけ算→小数点切り捨て→かけ算
なのか
かけ算→かけ算→割り算など全部した後いっきに切り捨てた方が良いのか
前者でやっていたんですがこの2つだと当然答えも違ってきますよね
普通どっちが正解なんですか?

188 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 18:55:18.13 ]
>>187
toro.2ch.net/test/read.cgi/tech/1381151995/236

189 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 22:31:06.75 ]
ここ最近、毎日のようにマルチが現れるな

190 名前:デフォルトの名無しさん mailto:sage [2013/12/21(土) 23:30:15.40 ]
>>189
スレ立て自体がマルチなんだからしゃーない



191 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 06:22:28.69 ]
ここ最近、毎日のようにマルチマルチってうるせえ馬鹿が現れるな

192 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 19:22:49.48 ]
本年大変お世話になりました
来年もお力をお借りするかもしれませんが宜しくお願いいたします

机周りの掃除が終りましたので帰ります
皆様良いお年を!@22歳OL

193 名前:デフォルトの名無しさん [2013/12/31(火) 00:00:44.71 ]
たまにはこのスレに遊びにきてね

194 名前:デフォルトの名無しさん [2014/01/01(水) 11:34:15.70 ]
あけおめ〜〜〜〜〜〜

195 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 13:54:51.99 ]
ことよろ

196 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 22:44:38.74 ]
さくおせ

197 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 02:37:30.74 ]
なあ、桃白白
ピラフ知らない?

198 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 05:04:21.87 ]
あけましておめでとう
23歳OL

199 名前:デフォルトの名無しさん [2014/01/14(火) 15:36:02.26 ]
何をどこで質問したらいいかもわからないからスレ違いなら許して。
適当に1〜100までとか1〜20までとかの数字から無作為に実数の数字を抽出
するのはどうしたらいいのでしょうか。

200 名前:デフォルトの名無しさん mailto:sage [2014/01/14(火) 16:31:22.93 ]
>>199
VBA 乱数 とかでググるといいと思うよ



201 名前:デフォルトの名無しさん [2014/01/14(火) 18:59:00.73 ]
>>199
Rnd  でどう?

202 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 02:21:35.14 ]
>>199
らんだまいずもわすれずにね

203 名前:デフォルトの名無しさん [2014/01/17(金) 15:26:54.71 ]
放置プレイ

204 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 02:44:28.45 ]
エクセルは2000、VBAは6.0です。

同じファイルにある他のマクロはちゃんと起動するのですが、
同じファイルにある、とあるマクロを実行しようと
ユーザーフォームの実行(▲を右90度傾けたボタン)を押しても
うんともすんともいいません。
エラーも出ません。
何が原因だと思いますか?

205 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 03:11:26.69 ]
>>204
一瞬で計算が終わって、動いてるのに気付いてないだけの可能性

206 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 09:29:19.72 ]
>>204
具体的なコードを貼らないと、なんとも言えん。
具体的なコードを晒すのが嫌なら、自力でなんとかするか諦めよう。

というか、コード全部は晒さないにしても、ステップ実行とかして
どの関数やステートメントで想定外の動作が起きてるか調べて
もうちょっと詳しい状況書けば、憶測も少しは煮詰まるかもだけどな。

そもそもデバッグ出来ないってのはVBA使えないのと同義だからね。
不都合が起こったところでお手上げでいいなら、コード書くだけは
パソコンで文字入力できる全ての人に可能な行為だからな。

207 名前:204 mailto:sage [2014/01/19(日) 19:45:55.40 ]
>>205
すみません。正解です。
最初のfornextの、終了回の変数名の打ち間違いで、
どうやら0回ループになっていたようです。
>>206
すみませんでした。

208 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 22:34:06.31 ]
格言
「プログラムは決して思った通りには動かない。書いた通りに動くだけだ。」

209 名前:デフォルトの名無しさん [2014/01/21(火) 10:55:48.33 ]
いいね♪(FB風に

210 名前:デフォルトの名無しさん mailto:sage [2014/01/23(木) 04:13:29.39 ]
サブフォルダを含むpdfファイルから画像サイズだけ抜き出してセルに表示したいのですが
この場合どのようにPDFファイルのmediaboxを参照すれば良いか教えてください。



211 名前:デフォルトの名無しさん mailto:sage [2014/01/23(木) 04:17:34.57 ]
win7 excel2010です

212 名前:デフォルトの名無しさん mailto:sage [2014/01/23(木) 19:06:40.97 ]
どういうこと?

213 名前:デフォルトの名無しさん mailto:sage [2014/01/23(木) 20:00:12.85 ]
どういうpdfなんだか差し支えない範囲で見せて欲しい w

214 名前:デフォルトの名無しさん mailto:sage [2014/01/23(木) 21:15:12.64 ]
というか、Excel関係ないやんw

なんて言うと、例のキチガイがまたうるさそうだけど

215 名前:デフォルトの名無しさん [2014/01/23(木) 21:32:49.29 ]
>>210
「VBA pdf」でググれば情報が見つかる

216 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 18:18:15.20 ]
Excel 2007での質問です。

(1)特定の文字列を持つセルを詮索する。

(2)(1)で検索したセルの2セル下までの行から、特定の文字列を持つセルを検索する。
  (※2セルは結合されているセルがある)

ということをしたいです。

(1)で取得したセルの行や列番号を+するなりして、Findかけてやれば(2)はいいのかなぁ、と思い、
Range(Cells(......),Cells(......)).Find()〜とかやっているのですが、うまくいきません。
どう指定して検索をかけてやればでしょうか?

217 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 18:23:51.19 ]
>>216
Resize使えよとは思うが、それでもできなくはないと思うが
動かんっていうコード張れ

218 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 18:34:03.11 ]
つーか、計算とかVBAでの操作とか行うシートで
セルの結合は使うなよ

Excelは表計算だけではなくワープロ的な機能も多くて
自由度が高いけど、その自由度の高さで不適切なデータの作り方をして
不適切なデータ形式によって自分の首を絞めるバカが多すぎる

219 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 18:47:48.99 ]
>>217
素早い反応ありがとうございます。
こんな感じです。

Dim cell_a As Range
Dim cell_b As Range

Set cell_a = Worksheets("Sheet1").Range("B:B").Find(What:="target1")
Set cell_b = Worksheets("Sheet1").Range(Cells(cell_a.Row + 1, 1), Cells(cell_a.Row + 2, 1)).EntireRow.Find(What:="target2")

セルの結合に関しては、そういう風なフォーマットになっているものからデータ取り出せ、って言うことなので、自分にはどうしようもないです……

220 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 19:33:28.55 ]
>>219
どうしようもないってことはないはずだけどね
会社とかでも、改善の提案提言はできるんだからさ
単にそれをしないで、頭を使わずサルのように与えられたモノをそのまま使うことに慣れきっちゃってるだけで

そんで、本題はおそらく
Set cell_b = Worksheets("Sheet1").Range(Cells(cell_a.Row + 1, 1), Cells(cell_a.Row + 2, 1)).EntireRow.Find(What:="target2")
   ↓
Set cell_b = cell_a.MergeArea.Cells(1).EntireRow.Offset(1).Resize(2).Find(What:="target2")
ってことじゃないかな?

シート見てないから憶測でしかコード書けないけど、これでダメだってならシートうpね
漏らしちゃまずいデータは、"target1"みたいに適当な語句に置き換えていいからさ



221 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 20:06:06.50 ]
>>220
うぉぉぉ……
無事に動きました
どうもありがとうございます

フォーマットについては掛け合って見ます

222 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 22:39:14.10 ]
Excel2013での質問です。
Do While 特定のセル.Value <> ""
で特定のセルが空白だったら終了する、という処理をしようとしています。
この特定のセルが使用中とは別シートのセルだった時の記述を教えて下さい。
データを転記&計算してデータ用のシートの中身がこれ以上ない場合に止める、ということをやりたいのですが

223 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 22:53:52.87 ]
>>222
Do While 別のシート.特定のセル.Value <> ""

224 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 22:58:19.12 ]
>>219,220
Set cell_b = cell_a.EntireRow.Offset(1).Resize(2).Find(What:="target2")
じゃないのか

というか>>219のコードでも動いてるっぽいけど
target1が(横方向の)結合セルの場合もあるのか?
だったら>>220のコードでもダメだと思うが

225 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 23:12:51.30 ]
>>223
素早いご回答ありがとうございます。
更にご質問いたしますが、特定のセル(別シート)をアクティブセルと同一座標から選びたいという時はどうすればいいでしょうか
処理を繰り返した時のアクティブセルがたまたま成績表シートC3なら、
にちゃん太郎シートC3(たまたま決まった座標)が空白の時に処理を止めるという具合です
相対参照を使うのかな?とは思うのですが……

226 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 23:59:30.44 ]
どういう設計になってんだかサパーリワカンネ

227 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 00:19:28.82 ]
すみません、わかりにくかったですね
データシートの設計
名前 性別 国語 算数 理科 社会
愛   女  80   60   75  90


228 名前:222 mailto:sage [2014/01/26(日) 00:28:45.75 ]
途中送信してもうたorz

データシートの状態
出席番号 名前 性別 国語 算数 理科 社会
1       愛   女  80   60   75  90
2       誠   男  50   72   68  85
(以下何人も続くと思って下さい)

表示用シートは
出席番号 名前 性別 国語 算数 理科 社会 合計点 平均点
1
だけ入力してある状態で、
名前をデータ用から引っ張る→性別を(中略)→平均点を出す→次の行に移る→上の数字に1足した数字を入力→以下繰り返し
上記の操作を生徒のデータを全員分入力できたら(名前が空白セルになったら)終わりたいわけです

わかるでしょうか?
Do Whileさえうまく行けば入力自体はうまくいくことは確認済みです。
なお、上記のはやりたいことを単純化して一例で出したので、コピペしろとかそういうのはなしにしてくださいw

229 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 00:38:45.97 ]
>>225
別のシート.Cells(特定のセル.Row(), 特定のセル.Column()).Value

230 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 00:39:26.01 ]
別のシート.Cells(ActiveCell.Row(), ActiveCell.Column()).Value



231 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 00:41:39.97 ]
目的が平均と合計を出したいだけ
であればワークシート関数=average(,) =sum()

データシートの右端に加えればいいじゃない
表示用の見た目に書式を変えればいいじゃない

232 名前:222 mailto:sage [2014/01/26(日) 01:22:05.92 ]
>>229-230
ありがとうございます!無事動作いたしました!

>>231
上記のは一例で、目的が他に色々あるし……w

233 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 05:40:30.51 ]
>>224
君にはまだ早いみたいだから無理するな

234 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 20:41:31.77 ]
今エクセルで作業をしてて、行き詰ってしまったんで助力お願いします

フォルダ内にある.CSVファイルの行数を一つずつ取得して、それを別のブック(開いていない)のC10とC12のセルに結果を貼り付けて
そのブックを新しい名前で特定のフォルダ内に保存したいです(保存ファイル名は行数を取得したファイルの名前&amp;_assにしたい)
それをフォルダ内にある.csvファイル全てに連続して処理をさせたいのですが、さすがに3000ファイルもあるとこれをしないと詰みそうです

途中までの作業はぐぐって何とかやってきましたが、ちょっとどんづまってます
よろしくお願いします

235 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 21:20:37.26 ]
>>234
Excelマクロ4.0を使えばブックは開かなくても済むかもね。
あと、CSVの行数取得はここに載ってた。
www.moug.net/tech/exvba/0060083.html

236 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 21:20:39.30 ]
Office TANAKAさんのページだけで完成させられるじゃないか
ここで質問するような形式のレスではないし、論外だと思います

237 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 22:17:46.82 ]
i = 1
kannsuu1 = Worksheets("Sheet1").Cells(i, 1)
kannsuu2 = Worksheets("Sheet1").Cells(i + 1, 1)

Do Until kannsuu1 <> kannsuu2

i = i + 1
kannsuu1 = Worksheets("Sheet1").Cells(i, 1)
kannsuu2 = Worksheets("Sheet1").Cells(i + 1, 1)

Loop

上記のようであれば完走するのですが i = i + 1 の下2行を削除すると動かなくなってしまいます
マクロの動きとしては Do Until でkannsuu1,2を呼び出すだけではダメで、必要であるごとにkannsuu1 =
などと一度呼びだしてiの値を反映させなければいけないのでしょうか?
多分ものすごく馬鹿なことを聞いてるのだと思いますが、さしつかえなければヒントだけでもご教示ください

238 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 23:07:45.25 ]
>>237
そのプログラムが正しいとすると、kannsuu1もkannsuu2も関数じゃなくて変数
名前をkannsuuにしても関数にはならない

239 名前:デフォルトの名無しさん mailto:sage [2014/01/28(火) 01:37:20.21 ]
>>237
>>238の言うとおり、kannsuu1やkannsuu2はセルの値を入れる「変数」。
変数っていうのはプログラマの意図に反して勝手に中身の値が変わられると困る
(そもそもある値を一時的に保持しておく目的で変数というものが存在する)ので、
プログラム的に指示がない限り、勝手に中身が書き換わることは普通はない。

なのでそのコードは、A列のi行目と(i+1)行目のセルの値が一致する箇所を発見するまで
A列を上から下へ走査するという目的のコードであるなら、
間違いではない(最善ではないかも知れない)。

むしろ6、7行目を消そうとする理由が知りたい。

240 名前:デフォルトの名無しさん mailto:sage [2014/01/28(火) 01:54:30.04 ]
>>237
i = 1
k1 = 0
k2 = 0
while k1 = k2
..k1 = cells(i+0,1)
..k2 = cells(i+1,1)
..i + 1
loop

または

i = 1
while cells(i+0,1) = cells(i+1,1)
..i + 1
loop
debug.print cells(i+0,1), cells(i+1,1)



241 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 21:02:33.55 ]
win 7 excel 2013なんですけど、
配列の数を取得するにはどうすればいいんでしょうか
UBoundって入力しても補完で出てこないし、
オブジェクトブラウザーで調べてみても存在していないんですが

242 名前:デフォルトの名無しさん [2014/02/04(火) 21:53:17.23 ]
>>241
HELP参照するか、ググルと沢山有る

243 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 22:49:10.29 ]
教えてくれんのですか
ググり力を鍛えなければなぁ

244 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 01:40:01.47 ]
office2013のリファレンスみたけどUBoundはあった
でも、やっぱ俺の環境にはUBoundねーぞ
UCaseはあんのにどういうこっちゃ

245 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 03:55:50.64 ]
うちの2007でもUBound,LBoundは補完されないな
オブジェクトブラウザにもみつからない

でも普通に使えるしヘルプはF1で参照できる
WordやACCESSでも同じだったから、VBEの問題かもね

246 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 05:28:39.22 ]
2010でもUbound補完されない
けど気にせず入力しちゃえば普通に使える

247 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 20:25:50.87 ]
使えました!
補完出ないとかありえなくないですかw?

248 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 20:37:29.17 ]
ところで、VBA初めてなんですが、
Javaでいうリスナーを動的に設定するには何かいい方法ありますか?

text_ChangeAfter みたいなところに記述するのは、
数が増えると大変なので
エクセルテーブルにコンポーネントとそれに対する処理方法を記載しておいて、
例えば、郵便番号textには郵便番号処理(4桁目に-を挿入)をやらせるとかしたいです

249 名前:デフォルトの名無しさん [2014/02/05(水) 20:37:50.41 ]
他にも補完が効かないものもあるからなぁ datediffとか
まだ他にもあるんかな

250 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 20:57:01.65 ]
>>246 UBoundは「関数」でなく「構文」だ。文字の色を見ろ。

>>248
Excelでコードを半自動生成すると捗る。
 Private Sub TextBox5_Change(): Call 処理8(TextBox5): End Sub
 Private Sub TextBox6_Change(): Call 処理3(TextBox6): End Sub



251 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 21:16:07.29 ]
>>250
大変興味深いです

でも、それはやっぱり
TextBox5_Changeメソッドに記述するという方法になってしまいますか?

252 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 22:30:17.57 ]
テキストボックスに入力した文字列をシート内から検索できるようなVBAをWEBで見つけました。

(テキスト入力→ボタンを押す→検索される)

Sub ボタン1_Click()
On Error GoTo エラー処理 '検索文字が見つからなかったときはエラー処理へジャンプ
Cells.Find(What:=TextBox1.Value, LookAt:=xlPart).Activate'シート全体を対象に検索
TextBox1.Value = "" 'テキストボックスの入力文字を消去
Exit Sub '検索文字が発見できた場合はここで終了
エラー処理:
MsgBox "見つかりませんでした"
TextBox1.Value = ""
End Sub

この場合、同じ文字列が複数有る場合、2つめ以降が検索できません。
2つめ以降を検索できるようにするにはどうすれば良いでしょうか?

253 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 22:38:15.96 ]
あまりオススメしないけど、
「WithEventsを使用してコントロールのイベントを受け取って、
 別オブジェクトのActionPerformedメソッド?を呼び出す」
クラスを作りまくる方法もある

254 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 23:04:34.06 ]
>>253
ありがとうございます
まさにそれらしい記事を発見いたしました
ateitexe.com/excelvba-control-change-event/

家にexcelがないのですが、会社で試してみたいと思います

それと、textboxのプロパティで郵便番号ならIMEを半角数字限定
住所なら全角ひらがなとか設定できたと思いますが
それをテンプレートとして保存するような機能はありますでしょうか?

プロパティのこことここを直して〜だと設定ミスが出るので、
テンプレから反映できたらなぁと
これもテーブルに定義してもいいのですが

255 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 00:21:03.25 ]
>>252
>Cells.Find(What:=TextBox1.Value, LookAt:=xlPart).Activate

どの位置から検索するかを引数に与えることができたはずだから、
変数を用意して位置情報を扱うように改造すれば、連続して検索出来るよ
その際、検索処理をWhile Loop内にするのが一般的だと思う

256 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 00:23:20.25 ]
>>254
VBAスレだから、その、作ればいいと思うよ

257 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:01:49.69 ]
>>250
すくなくとも、ヘルプにはUBound「関数」とかいてあるわけですが
入力補完はしないくせに、uboundと書くとちゃんとUBoundにしてくれるんだな

258 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:30:45.07 ]
>>250
msdnにもUBound Functionて書いてあるよ
msdn.microsoft.com/en-us/library/gg278658(v=office.14).aspx

259 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:31:48.95 ]
リンク失敗
msdn.microsoft.com/en-us/library/gg278658%28v=office.14%29.aspx

260 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 01:24:05.94 ]
Javaやってたから継承とかできないとかクソとか思ってたけど、
variantとかめっちゃ便利やった



261 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 01:36:34.71 ]
VBとかVBAはオブジェクト指向言語ではないが
オブジェクト指向言語のいいとこ取りはしてるってこと

262 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 02:17:26.39 ]
継承とかできないとかクソとか言ってる奴は、まだまだ「言語に使われてる」レベル

継承出にないよりは出来た方が良いって話なら当然のことだけど
出来ないなら出来ないなりに使いこなせる奴が、「言語を使ってる」奴だ

263 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 05:10:14.13 ]
とは言えやっぱり使えるにこしたことはないよ。
昔のアセンブラなんかは掛算や割算も自前でロジックを組まなければならない時も
あったけど、今そんなの嫌でしょ?
例えば配列の中の値をソートしたいとして、それが出来るメソッドが最初から有ったとき、
わざわざ自前で作る必要はないよね?
そのロジックの仕組みを知ってて使うのと、知らないで使うのも違うけど、
そのロジックの仕組みを知ってても、そう言った便利機能を使えるのと使えないのではやっぱり違うよ。

264 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 10:56:14.31 ]
>>262
> 継承とかできないとかクソとか言ってる奴



> 出来ないなら出来ないなりに使いこなせる奴

は、別に排他じゃないだろ。
バカなの?

265 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 10:58:13.72 ]
ソートも凝った条件付けようとしたら、結局自作になるから
組込機能頼りってのも、良いことばかりではないけどね

例えば
数値の1〜3と、英大文字のA〜Cと、英小文字のa〜cをソートした場合、Excelの並べ替えだと
「1,2,3,a,A,b,B,c,C」だが、
「1,2,3,A,B,C,a,b,c」にしたい場合や
「A,B,C,a,b,c,1,2,3」にしたい場合や
「1,2,3,a,b,c,A,B,C」にしたい場合とかもある

また数値だと
「7,8,9,40,50,60,100,200,300」だが、文字列数字だと
「100,200,300,40,50,60,7,8,9」になるので、文字列でも数値への変換無しに、
数値と同じ並べ替えをしたい場合や、逆に数値を文字列数字の順にしたい場合もある

便利なモノほど利用者をバカにすると言われてるわけで、
もちろん便利じゃないものを使いこなせる能力を持った上で、
便利なものを有効活用して工数を減らすのは良いが
便利なものに頼りきりになってしまうのも、問題と言えば問題だな

266 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 13:59:41.61 ]
>>265
大体は同意だけど、

>便利なモノほど利用者をバカにすると言われてるわけで、

これは少し違うと思う。
便利なものが有った場合、今度はそれをいかに有効活用するかということと、
自分で考えて作った方がいいかの選択肢が出てくる。
上のような例の場合、本来の項目を変えずに別項目を作って、
そこに前0で埋めたり、大文字変換した値を用意してソートすれば事足りる。
それもダメだというならそう言うLinqとラムダ式で組めばいい。
視点が変わるのと、出来ることが増えることによって夢がひろがりんぐになるわけだ。

267 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 14:13:43.52 ]
解ってないのか

268 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 19:53:17.21 ]
解らなくてもいい
理解しろ

269 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 00:39:22.03 ]
>>265
そう思うんなら中間言語使って頭鍛えなよ。
そんなのの成り立ち一々全部理解しなきゃいけないなら
VBAでだってまともに組めないよ。

270 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 10:47:10.65 ]
>>265
便利なものが人をバカにするんじゃなくて
便利なものに頼りきる人はもともとバカだっただけ



271 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 15:31:20.21 ]
>>265
それはExcelのソートのインターフェースが糞なだけ。
まともな言語ならラムダ式とかで比較を書ける。
クイックソートとかをいちいち真面目に実装するのは面倒だろ。

272 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 17:52:51.32 ]
20年前に仕様が固まったBasic言語に文句言う奴

273 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 21:17:25.11 ]
>>271
Javaってラムダ式あったっけ?

274 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 22:12:34.15 ]
>>273
Java8で導入とか何とか。

275 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 22:59:24.35 ]
>>272
Basicと言う観点から見れば仕様が固まるなんてことはないよ。
時代に合わせてる常に仕様は変わる。
VBAがたまたまVB6.0辺りの仕様で停滞してるだけ。
もっと前のN-Basic辺りは
Console 0,25,0,1とかおまじないのようにみんな付けてたけど、
VBAから入った人にしてみれば何のこっちゃってことになる。

276 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 08:44:06.43 ]
便利なことって言うより新しいことに頭がついていけないじじいなんだろ

277 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 10:11:19.84 ]
Excelでもバージョンアップのたびに関数がどんどん追加されてるけど
古いシステムでも修正なしで動くように新しい機能をわざと使わないことならある

278 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 11:13:16.08 ]
windows xpとoffice2003廃止に伴い、
もうバージョン違いに悩まないで良くなるのかなあ。

279 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 12:02:07.37 ]
古いのがなくなるのとバージョンアップは無関係だろ
これからもどんどん新機能が追加されてくに決まってる

280 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 14:29:28.14 ]
未だにOffice2000使ってますが、特に問題ないです。



281 名前:デフォルトの名無しさん [2014/02/11(火) 23:00:10.06 ]
特定のセルに入力がないと空欄になるようにif関数が入力してあるんですが、
空欄のセルだけ非表示にできるようにはどうマクロを組めばよいのでしょうか。
数式が入っていなければ非表示にできるようには組めるのですが、
見た目上は空欄でもセルには数式が入力されているため上手くできません…。
どうかご教授ください。

282 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 23:05:27.59 ]
>>281
セルの非表示ってどうやってやってるの?

283 名前:デフォルトの名無しさん [2014/02/11(火) 23:41:26.34 ]
>>282
セルではなく行の非表示でした。
例えばa1からa10に入力がない場合ですが、
If [Counta(a1:a10)] < 11 Then
Range("a1:a10").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End If
で処理をしています。
ですがこれだと関数で空欄になっていてもセルには数式が入っているので、
非表示にはならないので困っています。

284 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 07:33:54.19 ]
>>283
ちょっと思い出せないけどxlCellTypeBlanks以外に何かなかったっけ?
ないなら判定を自分で作ればいいかと

285 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 10:47:06.24 ]
普通にValueとかTextプロパティを見ればいいだけでは

286 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 12:30:57.75 ]
>>283
For Each c In Range("a1:a10")
  If c.Text = "" Then Rows(c.Row).Hidden = True
Next

287 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 14:37:20.00 ]
CountBlankでいいんじゃないか

288 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 14:40:01.25 ]
>>286
それだと1個でも空白セルがあったら非表示になるんじゃ

289 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 16:22:45.01 ]
>>288
For Each でA1:A10内の各セルを一個ずつ選んで
そのセルのテキストが""だったらセルの行全部を削除する

これは>>283の要求どおりの動作だと思う

290 名前:289 mailto:sage [2014/02/12(水) 16:25:01.52 ]
ごめん、書き間違えた
削除じゃなく非表示だった



291 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 17:49:50.09 ]
>>289
ああ、行単位でコントロールするのか
If [Counta(a1:a10)] < 11 Then しか見てなかったわ

292 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 19:19:18.29 ]
そもそも最初のIfって必要か?
1行も消さない場合のがよっぽど多くないと、このロジックだとむしろナノ秒単位で遅くなるだろ

293 名前:283 mailto:sage [2014/02/12(水) 19:43:37.89 ]
>>286
このマクロで思った通りの処理をしてくれました、ありがとうございます。
ですが思ったよりも処理に時間がかかってしまうようです...。

レスを下さった方々ありがとうございます!

294 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 19:47:46.74 ]
>>293
まとめて処理すればいいよ
もらったコードに手を加えちゃダメってわけじゃないんでしょ?

295 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 19:56:10.39 ]
>>293
えっ調べるのはA列だけでいいの?だとしたら>>283のコードはなんだったのか…
遅いと感じるならScreenUpdatingを入れればたぶん一瞬で終わるよ

296 名前:283 mailto:sage [2014/02/12(水) 20:26:25.50 ]
マクロを断片的に覚えているので質問や発言がチグハグになってしまい申し訳ありません…。
レスくださった方のものを参考にさせていただいて自分で再度考えてみます。

ご迷惑おかけしました、ROMに戻ります。

297 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 03:55:36.59 ]
エクセルは2000、VBAは6.0です。

ウェブの某サイトに自動ログインするマクロを作っています。
IDとパスワードはうまく入力させることができたのですが、
ログインができません。

ログインボタンが次のようなソースコードのサイトに
ログインするにはどうしたら良いでしょうか?


<input type="hidden" name="SsLoginPage" value="/members/" id="hidden1">
<input type="hidden" value=" ログイン " id="submit1" name="submit1">
<input type="image" src="../../ssl_img/login/btn_login.gif" alt="ログイン" tabindex="300" id=image1 name=image1>

298 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 19:01:26.24 ]
>>297
スレ違い

299 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 21:24:22.54 ]
>>297
できてるところまでソース貼って

300 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 22:46:45.67 ]
>>299
サイトは伏せさせてもらっていいでしょうか? ネットで調べて無理矢理作ったので洗練されてません。

Sub 自動ログイン()
Dim obj As Object

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "https://《ログインしたいサイト》"
Do Until objIE.Busy = False
Do Until objIE.ReadyState = 4
Do Until objIE.Busy = False
DoEvents
Loop
Loop
Loop

CreateObject("WScript.Shell").AppActivate "《ログインしたいサイトのタイトル》"
Set objU = objIE.document.getElementsByName("SsLogonUser")
If objU.Length = 0 Then
MsgBox "ログインページが変わった?"
WScript.Quit
End If

objU(0).Value = "《ID番号はここ》"
Set objU = Nothing

objIE.document.getElementsByName("SsLogonPassword").Item(0).Value = "《パスワードはここ》"
Set objU = Nothing

'このあと、ログインできるようにしたいのですが…
End Sub



301 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 11:58:56.47 ]
質問です
ExcelシートにユーザフォームでDTPickerを貼り付けて、日付をこのカレンダーで
選択すると、フォームがある位置の陰になっているセルにこっそり日付格納して
マクロでその日付を使うように作成しました。
ところがこのカレンダーが動く人と動かない人がいて困っています。
(クリックしてもユーザフォームが固定された状態でカレンダーが表示されない)

環境はExcel2010で作成および表示
拡張子は会社の方針で互換重視のxls(関連会社とのファイル共有などのため)
どうもExcel2000でファイルを開くと動くというのも確認されていて、意味不明です。
インスコされている環境も社内標準環境なので、ランタイムが異なるなど無いはず
なんですが…

解決策の心当たりがあればよろしくお願いします。

302 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 13:34:19.94 ]
>>301
ここにアクセスがインストールされてないとどうたらとか
アクセスが無くてもVBランタイムが入ってれば動くけど
それをエクセルで使うのはライセンス違反がどうたらとか色々書いてある

www.h3.dion.ne.jp/~sakatsu/Excel_Tips06.htm

303 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) NY:AN:NY.AN ]
>>302
kojikoji75.hatenablog.com/entry/2013/08/17/175328
の Date and Time Picker Control を使っているのでライセンス等は大丈夫なはずです
よく見るとAxtiveXコントロールとあるので
www.ilovex.co.jp/blog/system/cat820/excelactivex.html
と同じ罠に引っかかってるかもです(症状が良く似ている印象)

とりあえず月曜会社で試してみますが、これで解決しなかったら本格的に分からないw

304 名前:302 mailto:sage [2014/02/15(土) 14:44:20.37 ]
>>303
その Date and Time Picker Control てのは2007から実装されたんでしょ?
それだと>>301で言ってた「2000で動く」ってのはおかしくない?

305 名前:301 mailto:sage [2014/02/15(土) 15:10:33.32 ]
>>302
言われてみると確かにおかしいですね
でも2kで「動いた」って目の前で見せられたので…

昨日発覚したばかりなので、月曜改めて周囲の状況も含め確認してきます。

306 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 17:36:08.31 ]
2000と2007って同時にインストールできるんじゃまいか

307 名前:デフォルトの名無しさん [2014/02/17(月) 21:49:42.74 ]
質問です。長いので二つに分けて質問させてください
Sub 総計計算_送料()
Dim 行番号 As Currency
Dim 工場直送送料 As Currency
Dim 受注生産送料 As Currency
Dim 送料合計 As Currency
行番号 = 14
送料合計 = 0
工場直送送料 = 500
受注生産送料 = 800
Do Until Cells(行番号, 4) = ""
If Cells(行番号, 6) = "工場直送" Then
送料合計 = 送料合計 + 工場直送送料
ElseIf Cells(行番号, 6) = "受注生産" Then
送料合計 = 送料合計 + 受注生産送料

308 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:54:21.14 ]
上記のような構文の場合、
例えば
送料合計 = 送料合計 + 工場直送送料は
0 = 0 + 500
と、工場直送送料は「500」として計算されると思うのですが
Do Until Cells(行番号, 4) や If Cells(行番号, 6)といった式の場合
なぜいきなり(14 , 4)セルや(14 , 6)セルといったセルに飛ばずに、
ちゃんと一行目のセルから計算されるのかわかりません。
本当に初心者でアホな質問だと思うのですが、答えて欲しいです。

309 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:18:32.41 ]
>>307のプログラムが途中で切れてるから推測だけど単純な入力ミスしてる

310 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:26:13.83 ]
>>308
ステップ実行で1行ごとに各変数の値を確認してみたら?



311 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 03:36:11.85 ]
むしろ1行目から計算されているというのが勘違いじゃないのか

312 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 07:28:15.08 ]
行番号にCurrencyを使うな気持ち悪い

313 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 11:22:50.43 ]
タシカニ

314 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 14:32:12.07 ]
だな。
IntegerじゃないぞLong使えよ

315 名前:297 mailto:sage [2014/02/19(水) 01:25:10.63 ]
>>300誰か分からないでしょうか…?

316 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 12:30:10.58 ]
>>315
残念ながらわかりません
ごめんなさい

317 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 13:51:27.51 ]
>>315
ログインボタンのクリックは
objIE.document.all.btn01.Click
みたいに書く
ページ内にクリックできる場所が複数ある時はボタン番号を適切に変える
「戻る」「入力内容をクリア」「IDをクッキーに保存」とか色々と並んでる場合があるからね

ていうか検索ぐらいしろよ
「VBA IE操作 クリック」みたいなキーワードでサンプルがいくらでも出てくるぞ

318 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 21:09:16.21 ]
=IFERROR(HYPERLINK(VLOOKUP(Cells(n1,5),$Q$2:$R$10,2,TRUE)),"")
上記を代入したいんですがうまくいきません。
n1は任意の変数です。Vlookupのところではねられます。

Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(Cells(" & n1 & ", 5), $Q$:$R$10, 2, True)), "")"
考えてやってみましたがこれではダメっぽいです。
ご教授いただけると助かります。

319 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 21:49:24.13 ]
>>318
Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(Cells(" & n1 & ", 5), $Q$:$R$10, 2, True)), """")"

とりあえずこんな感じ?

320 名前:319 mailto:sage [2014/02/19(水) 21:52:23.42 ]
>>318
ダブルクォーテーションをダブルクォーテーションで囲んだ中で使うときは
"" と2個続けるっていうルールになってるよ



321 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 21:58:31.80 ]
>>318
Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(Cells(" & n1 & ", 5), $Q$2:$R$10, 2, True)), """")"

322 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 00:46:24.24 ]
>>317
それで番号をひと通り押してみたんですけど
どれもダメでした
>>297のソースコードでもボタン形式でいいのでしょうか?

>>316
丁寧にありがとうございます

323 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 01:24:13.28 ]
>>322
よくわからんけどinputタグにname=image1って書いてあるからクリックするのもimage1と違う?

324 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 01:55:37.89 ]
>>317
>>323
すげえええええええ
objIE.document.all.image1.Click
であっさり通りました

ありがとうございます

325 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 07:29:20.69 ]
>>324
解決してよかったね
でもスレチなんだから今後は余所に行ってやってね

326 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 09:03:39.96 ]
>>325
このスレでは問題ない
そういうことが気になるなら君が他所へ行きたまえ

327 名前:デフォルトの名無しさん [2014/02/20(木) 10:28:54.40 ]
>>326
ですよね

328 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 19:00:31.77 ]
EXCELファイルを読み込んで、セルのデータを加工するプログラムを作って
いるのですが、文字列、数値、計算式などが入っている普通のファイルなら
期待通り動くのですが、EXCELは多機能ですので、普段全く使ったことが無い
ような機能とか設定がシートやセルなどに追加されていると、自作プログラム
が予期しない動きをするのではないかと思っています。
そのテストの為には、自分でEXCELファイルにいろんな加工を行えば良いわけですが、
自分でも知らないような機能は使うことができません。例えばデータベースとか
テーブルとか、グラフ、フィルターなどなど、まだまだ沢山あります。
そこで質問なのですが、そういうEXCELの機能がてんこ盛りみたいにいろいろ
組み込まれているような何か良いテスト用のファイルって、どこかにありませんか?

329 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 19:21:36.25 ]
>>319,320,321

""が余計にいるとは知りませんでした。
おかげさまで解決・・・となればよかったんですが
なぜかVookupのあとがCellsだとうまく読み出ししてくれません。

ちゃんと =IFERROR(HYPERLINK(VLOOKUP(Cells(20, 5), $Q$2:$R$10, 2, TRUE)), "")とセルには入っています。
手動でCells(20,5)をE20にすると思った通りの動きになるんですが、なんででしょう?

330 名前:デフォルトの名無しさん [2014/02/20(木) 21:17:27.35 ]
>>329
ワークシートでは
Cellsが使えないからエラーになるんじゃないか?



331 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 21:20:43.09 ]
>>329
そもそもワークシート関数にCellsなんて無いから

332 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 04:14:19.51 ]
>>329
ワークシート上の数式にCellsは使えないけど、
VBAでは使えるからコード中でCells(20,5)を指定させる事なら出来た。
ただし、絶対参照になっちゃったけど。

Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(" & Cells(20, 5).Address & ", $Q$2:$R$10, 2, True)), """")"

相対参照で書きたければFormulaではなくFormulaR1C1を使えば良いと思う。

333 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 07:35:53.62 ]
>>328
あなたにプログラムを依頼した人にもらえばよいと思います

334 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 01:34:21.73 ]
数式の中で参照のあるツールいじるのこえー

シートAのA1に名前A1とつけたとき
$A$1 = 名前A1なのかな?

=A1の相対参照で行列の挿入して参照がずれる
アンチパターンの整理ができてないわ

335 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 15:56:19.01 ]
ループ処理について質問ですが

Do Until 親 = 20 '20回ループ


   Do Until 子 = 10 '10回ループ
     '子くり返し処理内容
   子 = 子 + 1
   Loop


'親くり返し処理内容
親 = 親 + 1
Loop

このようにネストさせる事は可能なのでしょうか?
とりあえず作ってみたら動きませんでしたが出来ると説明されている解説サイトもあるようで
一体どうやって書けば良いのでしょうか?

336 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:27:41.93 ]
>>335
親の二回目のループで 子 の内容どうなってる?

337 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:31:18.92 ]
親も子もゼロに初期化しないといけないんじゃね?

338 名前:335 mailto:sage [2014/02/23(日) 16:32:17.71 ]
>>336
親の計算結果の数値を子に渡して詳細分析を10パターン行うと言ったないようですが
これってプロシージャをわければ解決でしょうか? そんな気がしてきました。

339 名前:335 mailto:sage [2014/02/23(日) 16:34:27.48 ]
>>337
初期化定義はつけてあります。

340 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:52:35.73 ]
>>338-339
ごたくはいいから >>336 を確認しろよ



341 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 17:15:19.70 ]
>>335
わからないならコードを削らず貼ろう

342 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 17:45:19.18 ]
>>340
>>341
チェックしたところ子のループ処理が終了したところでVBAの実行が終了いるようで、、 やはりネストは無理か??

343 名前:デフォルトの名無しさん [2014/02/23(日) 17:53:58.08 ]
>>342
ネスト自体はできるよね。
コード見直したがいいっすよ。

Dim Parent As Long
Parent = 0

Do Until Parent = 20
 Dim Child As Long
 Child = 0

 Do Until Child = 10
  Debug.Print Parent & " " & Child
  Child = Child + 1
 Loop

 Parent = Parent + 1
Loop

344 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 17:54:51.09 ]
>>336
>>340
>>341
なるほど!!親処理1回ごとに子の変数を初期値に戻さないと子の処理がすべてスルーされているわけですね、修正するとばっちり動きました。
超初歩的な間違いでした。。どうもありがとうございました!

345 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 17:56:18.66 ]
>>343
ありがとうございますm(_ _)m

346 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 18:03:05.91 ]
>>344
VBA は変数の初期値が決まってるからいいんだけど、こんなケースもあるから明示的に設定した方がいいよ。
あと、今回の場合なら For 〜 Next 使った方がいいと思う。

347 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 18:29:53.38 ]
>>346
どうしてですか?

348 名前:335 mailto:sage [2014/02/23(日) 18:33:31.05 ]
For 〜 Next  は使った事がありませんが勉強してみます。ありがとうございます。

349 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 19:26:51.74 ]
>>347
どこを質問してるんだよ...

350 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 21:43:02.28 ]
>>349
すみません
後半部分についてです



351 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 21:54:19.10 ]
ループの回数判ってんだろ?
実行時でないと判らないってんなら Do Unti
の方でないとダメだろうけど判ってんなら
For Nextの方が良いに決まってるl

352 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 21:57:31.13 ]
>>350
今回みたいな初期化漏れや Parent = Parent + 1 の入れ忘れがなくなるから。

353 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 22:04:00.80 ]
>>351-352
ありがとうございます
ヒューマンエラーを低減させるためにFor〜Nextの方が良い、ということだったのですね
ちょっと深読みしすぎていたようです

354 名前:デフォルトの名無しさん mailto:sage [2014/02/24(月) 20:49:02.56 ]
質問です。

複数のインスタンスでExcelが起動していて、それぞれのインスタンスに
未保存の新規ブックがひとつずつ開いています。
これらのブックは未保存のまま、すべてのブックのオブジェクトを取得する方法は
あるのでしょうか?

VBAでできるに越したことはないのですが、別の方法でもOKです。
よろしくお願いします。

355 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 07:33:56.81 ]
>>354
インスタンスを生成したあと
コレクションに格納しておいて
ループでコレクションの中身を取得するようにしとけば?

356 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 09:28:04.02 ]
excel2010

vbaの参照設定で一度フォームを使ったら
Microsoft Forms 2.0 Object Library
のチェックを外すこと出来なくなるん?

フォーム使ったら自動でチェックが入るけど、いらなくなったんで
フォームを解放してついでに参照設定のチェックをoffにしようとしたら
「使用中のコントロールまたは参照を削除することはできません。」
って出るんだけど

357 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 11:01:09.75 ]
>>356
エクセル2000だけどおなじ症状が出てる

358 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 15:26:49.43 ]
>>356-357
2007で試したけど、保存して開き直したら消えてる

359 名前:356 mailto:sage [2014/02/25(火) 17:00:57.86 ]
こっちは消えないなぁ??

ってか、参照設定を解除するのを教えてもらったんで、それで消しましたた^^;

Sub testRef()
Dim Ref As Object

For Each Ref In ThisWorkbook.VBProject.References
Debug.Print Ref.Name
If Ref.Name = "MSForms" Then
ThisWorkbook.VBProject.References.Remove Ref

End If

Next Ref

End Sub

360 名前:デフォルトの名無しさん mailto:sage [2014/02/26(水) 13:49:18.84 ]
Microsoft、「Microsoft Office 2013 Service Pack 1」を公開
ttp://www.forest.impress.co.jp/docs/news/20140226_636988.html



361 名前:デフォルトの名無しさん [2014/02/27(木) 13:32:25.19 ]
Excel2007で
www.hatinosu.net/camp/archives/okinawa/
www.hatinosu.net/camp/archives/1200/
こういうページが複数あります (下のURL)
これをExcelの表にまとめてしたいと思っています
場所1 料金1 期間1 関連1 備考1
場所2 料金2 期間2 関連2 備考2
場所3 料金3 期間3 関連3 備考3
場所4 料金4 期間4 関連4 備考4
htmlで表を取り込む方法はわかったのですが
まとめてやる場合はマクロが必要なのでしょうか
参考になるサイトなどありましたらご教示ください

362 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 14:21:41.96 ]
>>361
ホームページに書いてある内容から必要な部分だけ取り出す方法は色々あるけどVBAを使った方が楽だと思う

ただ、人間の目で必要な部分を探すのは簡単だけど、それをコンピューターに自動でやらせるのはものすごく大変
参考サイトを見た程度でできるような物じゃない

手順としては
(1) URLの一覧を作る
(2) HTMLを読み込む
(3) タグとテキストを解析して必要な情報を取り出す
(4) 取り出したデータをシートに並べる

どれも専門的な知識が必要なんで、どこまでわかっているのか細かく確認しながらじゃないと教えるのも大変

363 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 14:24:27.05 ]
>>361
ホームページから情報を取り出してワークシートにコピーする例
www.happy2-island.com/excelsmile/smile03/capter00721.shtml

364 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 00:02:45.20 ]
「表示されたGoogleの検索結果一覧から、一番最初の検索結果をクリックする」
という処理はどのようにすればよいでしょうか。

検索結果のページタイトル一覧は
ol#rso > li > div > h3.r > a……(結果毎にli繰り返し)となっていたので、
「ol id="rso"内の、一つ目のh3 class="r"をクリックする」という処理が
できればと思うのです。

i'mfeelingluckyに渡して取得していたのですが、一部直接飛べないものがあり、
このような処理をしたいと思いました。

365 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 00:27:30.76 ]
>>364
クリックしなきゃいけないの?
aタグのURLをブラウザに直接渡せばいいじゃん
まあGoogleの場合はちょっと文字列の加工が必要だけど

366 名前:デフォルトの名無しさん [2014/02/28(金) 23:51:48.43 ]
ユーザーフォームを使って、名簿に入力しようとしましたが、上手くいきません。
デバックしてみると、アプリケーションまたはオブジェクト定義のエラーですと言われWith Cells(Rows.Count, 1).End(x1Up).Offset(1)の部分が黄色く反転しています。
どのように修正するとよいのでしょうか?また、今、シートは中1、中2、中3という名前のシートがあります。
ユーザーフォームで学年を中1を選択した場合には中1のシートに入力(中2、中3も同様に)する場合どのように修正すればよいか教えていただきませんか?

367 名前:デフォルトの名無しさん [2014/02/28(金) 23:55:12.51 ]
これがコードです。

Private Sub cmd終了_Click()
Unload Me
End Sub

Private Sub cmd登録_Click()
Dim RowNum As Long


With Cells(Rows.Count, 1).End(x1Up).Offset(1)
.Value = Text生年月日.Value
.Offset(, 1).Vulue = schoolyears.Value
.Offset(, 2).Vulue = Text氏名.Value
.Offset(, 3).Vulue = Textフリガナ.Value
.Offset(, 4).Vulue = Text中学.Value
.Offset(, 5).Vulue = Text郵便番号.Value
.Offset(, 6).Vulue = Text住所.Value
.Offset(, 7).Vulue = Text自宅tel.Value
.Offset(, 8).Vulue = Text生徒携帯.Value
.Offset(, 9).Vulue = Text生徒アドレス.Value
.Offset(, 10).Vulue = Text保護者氏名.Value
.Offset(, 11).Vulue = relations.Value
.Offset(, 12).Vulue = Text保護者携帯.Value
.Offset(, 13).Vulue = Text緊急連絡先.Value
.Offset(, 14).Vulue = Textメールアドレス.Value
.Offset(, 15).Vulue = Text備考ス.Value
End With
End Sub

368 名前:デフォルトの名無しさん [2014/02/28(金) 23:56:00.50 ]
Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()

schoolyears.AddItem "中1"
schoolyears.AddItem "中2"
schoolyears.AddItem "中3"

relations.AddItem "父"
relations.AddItem "母"
relations.AddItem "その他"




End Sub

369 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:27:58.58 ]
>>366
○ XlUp
× X1Up

370 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:37:04.38 ]
デバック



371 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:56:54.39 ]
>>367
○ Value
× Vulue

372 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 01:58:05.73 ]
>>367
「備考ス」?

373 名前:366 [2014/03/01(土) 02:25:07.81 ]
>>369,>>371
すいません、英語が苦手なもので。

>>372
それは「備考ッス」のタイプミスです。

374 名前:sage [2014/03/01(土) 02:28:01.51 ]
>>369
ありがとうございます。初歩以前のミスしてしまいました。
>>370
すいません。
>>371
間違ったものをコピペしてしまったのが原因です(泣)ありがとうございます。
>>372
オブジェクト名確かに変ですね。備考に直しました。ありがとうございます。

375 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 02:32:30.20 ]
>>373
代わりに(?)フォローしていただきありがとうございます。

376 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:57:19.03 ]
>>365
レスありがとうございます。
現状、i’mfeelinglucky検索で取得ページ移動、表示されているページタイトルとURL取得、
としていたので、VBAもあまり慣れていないため、
クリック動作さえ加えれば問題なくなるかと思ったのですが、難しいものでしょうか。。。

377 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 16:44:08.18 ]
>>365
レスありがとうございます。
現状、i’mfeelinglucky検索で取得ページ移動、表示されているページタイトルとURL取得、
としていたので、VBAもあまり慣れていないため、
クリック動作さえ加えれば問題なくなるかと思ったのですが、難しいものでしょうか。。。

378 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 21:17:15.14 ]
漢字に振られているカタカナのふりがなを一気に平仮名に
変換する方法ありますか?出来ればブックの全シートを一気に。

379 名前:デフォルトの名無しさん [2014/03/01(土) 21:30:56.91 ]
StrConv

380 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:05:09.76 ]
>377

getElementById('rso').getElementsByTagName('a')[0].click
みたいなことVBAでできないのでしょうか。

それを聞いてるんだよと言うのならスマン。



381 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:58:29.98 ]
>>380
できるよ

382 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 18:09:03.96 ]
数十のセル範囲を選択してブック1からブック2へコピペする単純なコマンドを作ろうとしていますが

Workbooks("1.xls").Sheets("Sheet1").Range("a1":"z1").Value = Workbooks("2.xls").Worksheets("Sheet1").Range("a1":"z1").Value

このように書くと数値が極端な桁のマイナスになっていたりエラー値に変化しているセルが発生するのですが
元の数値のセルは =c1 =c2 ・・・といったような単純なセル参照の羅列で数値は小数点入りの正数で計算式やらセルの特殊指定は
一切はいってないので何故化ける箇所が発生するのか謎なのですが 原因は何なのでしょうか?
上記のコマンドに xlPasteValues 値を貼り付けの指定を追加するにはどう書けばいいのでしょうか?

383 名前:382 半分自己解決しました mailto:sage [2014/03/02(日) 18:54:41.58 ]
>>382
よく見直してみますと元セルの セルの書式設定- 表示形式- 数値 の箇所が
homepage3.nifty.com/gakuyu/excel/syosiki2_fig03.gif
小数点ありの負の数値で選ばれていました。
これが原因のようですお騒がせしました
全部が負の数値になっていたらすぐわかるのですがほとんどは正数のままで
所々負の数値に置き換わっているのは謎です

384 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 07:39:32.84 ]
>>382
値の貼り付けでいいならVariant変数に入れてから貼り付けるのが簡単でいいと思う。
たとえば382の例なら

Dim v As Variant
v = Workbooks("2.xls").Worksheets("Sheet1").Range("a1":"z1")
Workbooks("1.xls").Sheets("Sheet1").Range("a1":"z1") = v

こんな感じ
こっちのほうが普通にコピーするより実行速度も速いらしい
ただし、コピーできるのは値のみ、書式とか数式とかは引き継がれない

385 名前:382 mailto:sage [2014/03/03(月) 20:27:40.83 ]
>>384
素晴らしいですね!的確な回答を頂きましてありがとうございます。助かりましたし勉強になりました。

386 名前:384 mailto:sage [2014/03/03(月) 22:19:34.69 ]
>>382
今更だけど、>>382の式はおかしいよ
ブック1("1.xls")からブック2("2.xls")にコピーするなら
「イコールの右」から「イコールの左」に代入するんだから

Workbooks("2.xls").Sheets("Sheet1").Range("a1":"z1").Value = Workbooks("1.xls").sheets("Sheet1").Range("a1":"z1").Value

だよ
>>382は式の右と左が逆)

387 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 23:57:40.67 ]
>>384
それって>>382と同じだよ

388 名前:384 mailto:sage [2014/03/04(火) 00:20:39.61 ]
え、そうなの?
Variantに入れると速いってOfficeTANAKAに書いてあったけど

389 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 07:29:55.48 ]
ネットに書いてあることはすべて真実です

390 名前:デフォルトの名無しさん [2014/03/04(火) 08:07:22.59 ]
>>389
>>387もOfficeTANAKAもどっちも「ネットに書いてあること」なんだが?



391 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 08:25:07.77 ]
>>388
どこのページよ
URL 晒して

392 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 12:53:57.87 ]
>>390
うん、それを皮肉ったつもりなんだけどわからなかった?

393 名前:デフォルトの名無しさん [2014/03/04(火) 20:15:07.96 ]
>>392
うん、それを分かってて茶化したつもりなんだけどわからなかった?

394 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 21:51:23.58 ]
>>393
うん、さすがにそれは無理がありすぎてわからなかった

395 名前:デフォルトの名無しさん [2014/03/04(火) 22:07:20.57 ]
>>394
修行が足りない

396 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 00:20:10.55 ]
>>388
そう同じ
だから速くはならん

397 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 00:13:33.22 ]
入力作業中の100メガぐらい有るブックを任意のタイミングで瞬間的にLAN接続された3台のPCで閲覧できるようにすることは可能でしょうか?
現在VBAで別名で保存した場合1回数十秒 LAN経由で開くと応答無しになるのでそれぞれのローカルへコピーして開くと又数十秒かかり
数台へ配布するのになんだかんだ数分ぐらい時間がかかっています。
閲覧側は見れれば何でも良いです。(Excelブック形式だと尚良い)

398 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 00:35:31.08 ]
>>397
不可能
大量のデータをLAN越しに同時に閲覧したい場合はAccessを使うのが普通

399 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 00:39:25.86 ]
>>397
数式がてんこ盛り盛りならVBAで全部コピーして値だけ張り付けて別名保存する、ぐらいかな
処理にどのくらいの時間がかかるかは知らんけど

数式がほとんどなくてデータだけで重いのなら画像に出力してPDF化かな

400 名前:397 mailto:sage [2014/03/10(月) 00:55:43.48 ]
>>398
>>399
無理っぽいのですね。ありがとうございます。
データてんこ盛りなのでアクセスやSQLなのでしょうかねぇ 使った事ありませんが、、



401 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 01:18:59.92 ]
普通の人は100メガの情報は一度にはみれない
ほんとにそのサイズでやり取りする必要があるのか良く考えた方がいいんじゃね

402 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 06:46:54.06 ]
>>397
ブックの共有じゃダメなの?
そもそも Excel で 100MB って言うのも色々危険な香りがするが...

403 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 06:57:20.42 ]
>>400
文字データだけならCSVで吐いて
閲覧者がブックを開いたら取り込むとかはどうよ

セル書式は予め設定しておいて、不足なら自動書式で
グラフも置いてあるなら範囲を名前定義にして取り込み時に名前定義をちょろっと修正すればいい

>>402
>LAN経由で開くと応答無しになる
に該当するんじゃないの?しないの?

404 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 07:46:59.95 ]
>>403
> に該当するんじゃないの?しないの?

共有ブックはもう少し賢いけど、正直 100MB クラスのブックを共有で使ったこと無いから試してみてくれとしか言いようがない。
共有特有のトラブルもあるし。

405 名前:デフォルトの名無しさん [2014/03/10(月) 22:22:30.84 ]
まー、あんまり無茶な使い方しない方が無難だよね

406 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 22:31:12.02 ]
画像貼りまくりでWORDみたいな使い方をしていると想像
せめてシートごとに分割したほうがいいと思うが
変な規定でもあるんだろう

407 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 22:42:00.56 ]
100MBのファイルコピーするのに数十秒かかるLANってすごいな
それを瞬間的に閲覧するようにできるExcelVBAって万能だな

408 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 10:45:11.04 ]
>>407
100Mbpsで理論値maxでも100MBをコピーするのに10秒程度かかる。
実効値20Mbps位だったらその5倍かかるわけで、100MBのコピーに2,30秒かかる環境があってもおかしくない。

409 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 20:16:20.38 ]
>>408
細かいことだけど100Mbpsなら8秒じゃないの?

410 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 21:30:20.38 ]
>>409
実測してみるとわかるけど、固定IPで他のネット機器をすべて切り離して回線が独占できる状態を作ってやっても
オーバーヘッドがあるから最高でも表示の8割〜9割ぐらいの速度になる

実用に使ってる環境だともっと遅くなる



411 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 21:44:28.36 ]
>>409
細かい事をいうなら
ネットワーク回線を流れてるのはデータだけじゃない
実データの1バイトが8ビットの情報として流れているとは限らない

412 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 21:47:49.12 ]
でも論理値maxでって言ってるじゃん

413 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 22:23:55.06 ]
理論値なんて一番速い時の値だから、無線 LAN なんて理論的にも絶対その値は出ないしな。

414 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 22:41:58.20 ]
理論値にはいろんな取り方があるからな
ファイル転送の理論値マックスは回線上の理論値マックスからいろんな層のオーバーヘッド分下がるのが当然

415 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 18:19:11.62 ID:wdy6oLTC]
VBA初心者ですが
VBAの命令だけを書いた空のブックと、
分析したいデータが書かれたブックを分離して運用することは可能なのでしょうか?

現状データの書かれたブックが数十に同一処理をさすためにそれぞれにVBAを記述していますが
処理方法を変更する場合全ブックの同じVBAコードを書き換えていて手間がかかっています。
ならば空のVBAだけを書いたブックを1つ動かしておけば済むのではと思ったのですが
ここにいらっしゃるプロの方はどうされているのでしょうか?

416 名前:415 mailto:sage [2014/03/15(土) 18:22:17.82 ID:wdy6oLTC]
>>415
又、空のブックで運用ができるのであればよく使う命令を個別にモジュール化して連携やネストさせるような運用方法も可能なのでしょうか?
これができるとなるとデータの書かれているシートにVBAを書くのは大量のブックを処理する場合は非合理的かと思いましたがどうでしょうか?

417 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 18:34:24.97 ID:IpiW3W82]
>>415
> 分離して運用することは可能なのでしょうか?

可能

Excel アドイン 作成 とかでググると幸せになれるかも

418 名前:415 mailto:sage [2014/03/15(土) 18:47:05.31 ID:46w16LKJ]
>>417
アドイン、、こんな便利な物があったのですね。ありがとうございます。
大幅な合理化が図れそうです

419 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 04:12:41.18 ID:NI0yZz+J]
以前こちらでマクロを作っていただき、とても重宝して使わせていただいていたのですが
少し仕様の変更が出てきてしまったため、再度作成か手直しをしていただきたいのですが
お願いできますでしょうか。

以下のマクロで月初から月末の所を、月初から翌月の3日までにしたいのです。
どうか宜しくお願い致します。

420 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 04:15:10.22 ID:NI0yZz+J]
Sub SheetCopy()

Dim firstDay As Date
Dim lastDay As Date
Dim targetDay As Date
On Error GoTo Error_Handler

With ThisWorkbook

'月初日を取得
firstDay = .Sheets("1日").Range("B1").Value
'月末日を取得
lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0)



421 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 04:18:35.64 ID:NI0yZz+J]
'月初日のシートは既に存在しているので、
'先にシート名とシート色を設定してしまう。
'.Sheets(Sheet1.Name).Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日")
If Not .Sheets("祝日").Cells.Find(firstDay, LookAt:=xlWhole) Is Nothing Or _
Weekday(firstDay) = vbSunday Then
.Sheets("1日").Tab.ColorIndex = 3
End If

422 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 13:25:21.94 ID:vj1XNX0y]
>>419-421
これコードの一部分だけだよね?
月末日を保持しているであろう変数"lastDay"をどこで使うのか分からないけど、
(ここに貼られている範囲では月末日を取得してるだけでそれを使用していない)

lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0)



lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 3)

に変更するだけで翌月3日までにはなる。
ただし、それをどのように利用するのかはこのコード以外の部分に書いてあるので
単純にこれだけでそのコード全体が正常に(あなたの意図した通りに)動くかどうかは分からない。

423 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 22:24:00.94 ID:iQzGYjkh]
>>422
やる気のないやつに解釈垂れても意味ないぞ。
そんな解釈より動くコードしか興味ないからコード書けって言ってるんだから。

424 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 23:26:36.86 ID:vj1XNX0y]
>>423
いや、別にどんな相手でも良いっすよ
こっちが好き勝手に書いてるだけだし。

ところで、垂れるのは解釈じゃなくて講釈ですね。

425 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 00:01:33.11 ID:YCsGrVX8]
すみません419です。
昨日はなぜかエラーが出たあと、バイさるになったまま書き込みができなくなり
続きのコードを貼る事が出来ませんでした。

このあとの続きのコードは、シート名の指定と日祝の色指定のコードになっているのですが
シート名を1日、2日、3日、となるように指定しているため、これだと翌月の3日分が重複してしまうためか
422さんの仰るMonth(firstDay) + 1, 3では、エラーになってしまい上手くいきませんでした。

要は、月初から翌月の3日までのシートを作りたく、その際、日祝を赤字にし
尚且つ各シートのB1セルに○月○日と表示したものを作りたいのですが
何か上手くいく方法はありますでしょうか。
よろしくお願い致します。

426 名前:422 mailto:sage [2014/03/18(火) 00:51:31.95 ID:Riw4xitA]
>>425
シート名に月も入れるとか翌月の3日分のシート名に翌月って付け加えるとか、
やりようはそれなりに有るんでないかい?

その程度の修正は元のコードさえ曝せば
このスレの人達なら簡単に出来るだろうけど、
肝心のコードが無けりゃ誰にもどうにもなんないよね。

ちなみに俺は寝るんで今日はもう出来ないです。

427 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 01:11:58.51 ID:YCsGrVX8]
>>426
早速のレスありがとうございます!
修正でも新規に作成でも、作っていただけるのなら
どちらでも大変嬉しいのですが、一応続きのコードを晒しておきますので
お時間のある時に、どうか宜しくお願い致します!

因みにシート名は、1日、2日、3日、、、としたいため
翌月3日分は「翌月」と付け加える方向でお願いしたいと思います。

428 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 01:13:33.38 ID:YCsGrVX8]
'ひと月分のシートをコピーし、
'シート名、シート色の設定を行う。
For targetDay = lastDay To firstDay + 1 Step -1
.Sheets("1日").Copy After:=Sheets("1日")
.ActiveSheet.Tab.ColorIndex = xlNone
.ActiveSheet.Range("B1").Value = targetDay
.ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日")
If Not .Sheets("祝日").Cells.Find(targetDay, LookAt:=xlWhole) Is Nothing Or _
Weekday(targetDay) = vbSunday Then
.ActiveSheet.Tab.ColorIndex = 3
End If
Next

End With

Exit Sub

Error_Handler:

'例外時はエラー内容を表示する。
MsgBox Error

End Sub

429 名前:422 mailto:sage [2014/03/18(火) 08:56:33.08 ID:Riw4xitA]
>>428
こんな事言っちゃなんだけど、>>419-421の時点で薄々感じてたとおり
やっぱり糞コードだったw(気を悪くしたらゴメンネ)

いろいろ突っ込みどころ満載なんだけど、とりあえずこのままやるんだったら
例えば>>428

.ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日")



If Month(targetDay) = Month(firstDay) Then
.ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日")
Else
.ActiveSheet.Name = "翌月" & Format(ActiveSheet.Range("B1").Value, "d日")
End If

に変更するととりあえず動くよ。

根本的にコード全体を書き直したほうが尚更良いとは思うけど、
そういうのは俺みたいなアマチュアじゃなくて
お金を払って誰かきちんとしたプロに頼むような話になるんじゃないかな。

430 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 00:24:00.84 ID:mInA5lgN]
実行中のマクロを停止させたいときにはESCか、Ctrl+PauseもしくはCtrl+Breakとのことですが、
両者に違いはあるのでしょうか?また、どれを試しても停止しない場合の対応策ってあるんですか?



431 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 12:27:01.03 ID:KuNBiX6y]
>>430
ぐぐったらこんなん出てきた

detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1149563081

まぁ、なんで動作が違うのかは読んでも分からんかったけど。

あと、ESCとかで停まんないときは
おいらはしょうがないからタスクマネージャからエクセルごと停止させてる

432 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 16:33:15.72 ID:e3FYqT1N]
1万行×5列 の生データを元に、1万行×100列の中間データをひとまず作成し、
その後、中間データを諸々の処理に使う。
今は、VBAで中間データを計算させている。中間データはワークシート関数で計算させることもできる。
今のように中間データはVBAで計算させるのがいいのか、
それとも中間データはワークシート上で計算させVBAで計算結果を読み込んでその後の処理を行うのがよいのか?

433 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 19:49:34.25 ID:OpDSuCZS]
善し悪しの判断基準が曖昧だよ。

ブックの動作の軽さを求めるならVBAで処理して
セルには値だけを入れるほうが良いけど、
セルに数式を入れてあればどういう処理をしているのか目で見て確認できる。

これはVBAが分からない人を相手にする時には結構重要なことで
俺も勤務先で自分で使うブックはVBA使いまくりだけど
マクロ知らない上司に提出するものは出来る限りマクロを使わずに処理してる。

というか「マクロ使ったものは何をやってるか分からないから信用できない」
といわれて提出できない。

434 名前:432 mailto:sage [2014/03/29(土) 21:33:41.21 ID:e3FYqT1N]
>>433
このブックは私だけが使うものです。重視したいのはマクロが高速であるかどうかということ。
VBAの高速化に関するウェブページを読むと、
コーディングの方法によりマクロ終了までの時間が大きく変わり、
又、worksheetFunctionは比較的高速であるとの情報もありました。
そこで、下手にVBAで全部処理させるよりもワークシート関数で計算できるところはワークシートで処理させるほうが
今より早くなるのかなと思ったわけです(VBAは独学のためあまり自信がないのです)。
ちなみに、生データは1日に1行ずつ増えます。処理は毎日実行します(会社休日は実行しない)。

435 名前:433 mailto:sage [2014/03/29(土) 23:51:13.09 ID:OpDSuCZS]
>>434
あぁ、どっちみちVBA自体は使う前提で、
VBAのコード中でワークシート関数を使うかべきかどうかって話だったのね
そんなの好きにしたら良いじゃん
ワークシート関数使った場合と使わない場合を両方試して
速いほう使ったらいいんじゃないの

436 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 00:25:58.15 ID:v4CA15kT]
大量のデータをブックに貯めこむんじゃなくデータベースに入れてエクセルは
必要なデータだけ持ってきて計算にのみ使ったほうが良いんじゃないかい

ま、1万行くらいなら大丈夫ではあるんだろうけど

437 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 00:31:57.51 ID:4kZGo4f6]
VBA使う前提ではないんじゃない
VBA使うか、ワークシート関数でゴリゴリやるか、どっちかが早いかって話なんじゃ?
全部再計算させて、中間結果必要ないなら、多分VBAでやった方が早くできると思うけど
それなりにVBAがちゃんと使えるなら、って前提だが
まあ今時のスペックなら1万×5ぐらいならワークシートでも気にするほどではないと思うが

438 名前:432 mailto:sage [2014/03/30(日) 01:17:55.49 ID:hXPzlqPD]
>>435-437
レスありがとうございます。どちらにしてもVBAは使います。
今VBAで行っている計算の一部をワークシート関数で置き換えるべきかを検討中なのです。
VBA高速化関連のページは一通り目を通して以前に比べれば格段に早くなったのですが、
それでも数時間かかる処理もあって更なる高速化を目指しているところなのです。
一概には言えないようなので時間を測定してみます。
データの持ち方についてもいい方法を模索しています。ありがとうございました。

439 名前:デフォルトの名無しさん [2014/03/31(月) 00:10:35.50 ID:ymkB1Ks5]
すみません、質問です

Formula1:="=IF(A2="""",A2,INDIRECT(A2))"

A2の部分をを cells(1,2)という形で指定できないでしょうか?

やりたいことはプログラムのループでA2を
B2,B3と変えたりしたいのです、アドバイスお願いします

440 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 00:57:57.69 ID:+/Q0rb5y]
>>439
B2、B3・・・としたいなら

For b = 2 to 9
  (略) Formula1:="=IF(A2="""",A2,B" & b & ")"
Next

みたいにすればB2〜B9になる

本筋とは関係ないけどIFでA2が""の時A2を返すのってなんか無駄っぽい



441 名前:デフォルトの名無しさん [2014/03/31(月) 01:05:38.55 ID:ymkB1Ks5]
>>440さん

アドバイス頂き有難うございます。

もうひとつ質問させて頂きたいのですが、

Bという位置が不定の位置なので変数で値を決めたいのですが可能でしょうか?

お手数をおかけして申し訳ございません。

442 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 01:15:24.40 ID:+/Q0rb5y]
>>441
文字列型の変数に入れて
Retsu = "B"

こうする
(略) Formula1:="=IF(A2="""",A2," Retsu & b & ")"

B列以外だとbって変数名は不適切かな

443 名前:デフォルトの名無しさん [2014/03/31(月) 01:22:00.80 ID:ymkB1Ks5]
>>442さん

何度もアドバイス頂き有難うございます。

夜遅いのにご返事有難うございました。

今、エクセルを試す環境がないので明日試してみます。

また、質問があったら相談させて頂きます。

444 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 01:55:50.99 ID:nFhjZp0H]
>>438
処理に数時間もかかるの?
それなら、変わらない部分をメモ化すれば?

1日に1行ずつ増えるんでしょ?
前日までの行が変わらないなら、
その結果をファイルに書いておけばよい

出来れば、毎回する同じ計算を避ける(メモ化)

445 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 15:01:50.77 ID:Ial2Eqsw]
>>444
いや、そういうことするより、まず何にどれだけ時間がかかってるか計測するのが先。

446 名前:デフォルトの名無しさん [2014/03/31(月) 16:48:16.50 ID:3GCmwtHU]
エクセルで256×256のセルに数字が入っている状態で
BMPの画像を作るにはどうしたらいいでしょうか?プログラミングの技術が
ないと不可能でしょうか?

447 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 17:05:56.79 ID:r3mdI7xZ]
C言語でBMP作るのは、そういうのがあるってことは知ってる。それと同じことをvbaでやりたいってことなら
(それがvbaで出来るかどうかは知らんけど)当然
>プログラミングの技術がないと不可能
じゃないの?

448 名前:デフォルトの名無しさん [2014/03/31(月) 18:23:52.03 ID:L50LbWDs]
そうですよね・・・
自分には敷居が高そうなので諦めます。すみません

449 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 18:28:43.68 ID:8V+7Or/W]
はい敷居きた

450 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 18:31:32.29 ID:Ial2Eqsw]
>>448
「セルに数字」じゃなくて実際に色を付けて、セルの幅と高さを1:1に保って小さくして、枠線を消して
クリップボードにコピーして、BMPで書き出せば?



451 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 20:37:19.25 ID:S+MvAbw+]
図としてコピー
あれVBAからつかえんの?

452 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 01:26:03.72 ID:5tQShRLT]
三項演算子とか連想配列を最近知ったものですが
上記のような便利機能が他にも紹介されてるサイトってないですか

453 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 00:30:48.39 ID:+8s/Qgvh]
If Not IsNumeric(data) Then

ElseIf (data > 0) Then

ElseIf (data < 0) Then

Else

End If

数値か文字として渡されるdataの判定を上記のようにしたんですけど、
冗長なのでSelect Caseにしたいです。どうしたら良いですか?

454 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 00:53:09.51 ID:9+cif8YO]
>>453
Sgn

455 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 01:25:50.89 ID:+8s/Qgvh]
>>454
おお、ありがとうございました!

456 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 19:04:50.32 ID:zCQPlUhY]
ちょっとズレるけど
ここのセミナーってどうなの?
ステマとかじゃなく純粋に気になった
ttp://sugoikaizen.com/

457 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 19:07:13.30 ID:Crk62Mwa]
>>456
すごくおすすめだよ
行っておいでw

458 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 20:05:46.77 ID:eYN2DOjD]
VBAをVBE以外で書きたいんですけれども、誰かVBE以外のエディターで開発されてる方いますか?
いる方は、何をお使いになってますか?

VBEで以下の不満があり、関数のアウトライン機能がないこと、列挙体変数をTabで選択せずそのまま入力するとその入力された変数名に変更されてしまうなどがあり、困ってます

459 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 20:06:57.56 ID:FLwMWrjy]
dir を使って、配列にいれたファイルをチェックするマクロを作りたいのですが、
「インデックスが有効範囲にありません」というエラーがでてしまって困っています。

Sub チェック()

Const Target As String = "C:\Users\user\Desktop\格納\"

Dim tmp() As String
tmp = Split("Scr14", "Scr16")

For i = 1 To 2
If Dir(Target & tmp(i) & ".txt") <> "" Then '←エラーの出る場所(tmp部分)
Else
MsgBox tmp(i) & vbCrLf & "が存在しません"

End If

Next
MsgBox "確認できました"

End Sub


Dirに配列を使ってチェックするのは無理なのでしょうか?ご教授願います。

460 名前:デフォルトの名無しさん [2014/04/20(日) 20:12:33.50 ID:I6Nwishv]
>>459
配列のアクセスに関するエラーだからDirは関係ないかな
Split("Scr14", "Scr16")は、Split("Scr14,Scr16", ",")の間違いだとして、
tmpは
tmp(0) = "Scr14"
tmp(1) = "Scr16"
こうなってる

なんで、ループは0 To 1にしなきゃいけない



461 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 20:26:26.65 ID:FLwMWrjy]
>>460
回答ありがとうございます。

配列に関しても理解が足りてなかったようです。

単純に文字の配列を作りたいだけなので、

Dim tmp() As String = {"Scr14", "Scr16"}

のようにしたいのですが、 = のところで、コンパイルエラーが出てしまいます。(修正候補:ステートメントの最後)

どのように修正したら良いでしょうか。

462 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 20:36:06.91 ID:kzevG+UG]
>>461
VBAではVBみたいな書き方はできない

Dim tmp
tmp = Array("Scr14", "Scr16")

463 名前:デフォルトの名無しさん [2014/04/20(日) 20:36:17.19 ID:I6Nwishv]
>>461
VBAでは変数は宣言時に初期化できないので、これで

Dim tmp(1) As String
tmp(0) = "Scr14"
tmp(1) = "Scr16"

Variantでよければ
Dim tmp
tmp = Array("Scr14", "Scr16")

464 名前:alchemist ◆IOGp1zS1sA mailto:sage [2014/04/20(日) 20:41:04.41 ID:FLwMWrjy]
>>462
>>463

ありがとうございました。成功しました。

465 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 11:33:23.29 ID:/2+x+Vgo]
Excel VBAでpowershellを実行し、その結果を取り込みたいと考えています。
powershellで実行したいのは以下のコードです。

$drive = Get-WmiObject -Class Win32_LogicalDisk | where-object {$_.deviceid -eq 'Y:'};$drive.providername

txtファイルに出力してから取り込めばうまくいくことは分かるのですが、できればtxtファイルを経由せず、直接取り込みたいです。
直接取り込む方法があれば、ご教示いただけないでしょうか。

466 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 11:50:34.55 ID:HGvdUff0]
tech.guitarrapc.com/entry/2013/07/19/200702
のサイトで見ただけなんでそれが出来るのかどうかは知らないけど

結果をクリップボードに送り込めるなら、後はそのデータをapiを使うなりDataObjectオブジェクトを使うなりで
クリップボードから取り出せる

467 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 12:31:02.08 ID:ZM+hJQpr]
>>465
ほい
PowerShellの出力をワートシートのA列に取り込むサンプル

' OpenProcess
Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Const SYNCHRONIZE = &H100000
' WaitForSingleObject
Declare PtrSafe Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Const WAIT_OBJECT_0 = &H0
' CloseHandle
Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Sub sample2()
  Dim hProcess As Long, lret As Long
    
  lret = Shell("powershell ""Get-WmiObject -Class Win32_LogicalDisk|Clip""", vbHide)
  hProcess = OpenProcess(SYNCHRONIZE, 0, lret)
  Do Until WaitForSingleObject(hProcess, 100) = WAIT_OBJECT_0
    DoEvents
  Loop
  lret = CloseHandle(hProcess)
    
  Cells(1, 1).Select
  ActiveSheet.Paste
End Sub

468 名前:465 mailto:sage [2014/04/23(水) 15:48:54.72 ID:05nonx0d]
>>466
>>467
返信ありがとうございます。

>>467
試したのですが、ネットワークドライブのリモート名に日本語が含まれている場合は?に化けてしまい、うまく回らない状況です。
(含まれていない場合はうまくいったのですが)

469 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 18:28:55.92 ID:ZM+hJQpr]
>>468
Shell("powershell ""$OutputEncoding = [console]::OutputEncoding;ほげほげ

470 名前:465 mailto:sage [2014/04/25(金) 00:24:01.06 ID:dAeKMCVg]
>>469
返信ありがとうございます。


>>467
Declareのところだけ既に同名の宣言をしてあったのでそれを活かす形式にし(何故かPtrSafeがうまくいかなかった)、
$OutputEncoding =〜も使わせていただいたところ、
今のところ問題なく回っています。

皆さんご協力ありがとうございました。
助かりました。



471 名前:デフォルトの名無しさん mailto:sage [2014/04/25(金) 00:48:38.11 ID:97MfQF5y]
>>470
PtrSafeは64bit環境

472 名前:デフォルトの名無しさん mailto:sage [2014/04/25(金) 19:43:27.59 ID:IKtZUAxC]
お願いします
シート名「uriae」の
F2に入っている関数をF列の下へ向かってオートフィル
で関数をコピーしていくVBAをお願いします。
関数のコピーは、同じシートのA列に文字が入力されているので
A列の文字が入力されている最終行までコピーしたいと思います。

473 名前:デフォルトの名無しさん mailto:sage [2014/04/26(土) 01:31:25.36 ID:w0bO41GV]
>>472
ここは質問スレであって作ってくれる場所じゃないから
まずは自分でどうやろうとしたかを書いてみればいいと思うんだ

474 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 01:08:06.58 ID:Z51g+zsH]
うりあえ?

475 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 00:35:51.93 ID:UkI77+Fd]
すみません、初めてVBAを作っているのですが詰まってしまいました。

<やりたいこと>
・セルに商品NOを入力して、そのセルがロストフォーカスしたタイミングで、
入力された商品NOで別シートの商品表から、商品名をもってきたい。
<困っていること>
"Worksheet_Change"イベントを使用して、ロストフォーカスのイベントを
拾うことはできたが、ロストフォーカス前に選択されていたセルの内容を
拾えない。
(ActiveCell.Valueで取得しようとしたが、ロストフォーカス後に選択された
セルの内容を取得してしまう。)

もしよい方法があれば、ご教授いただけませんでしょうか。

476 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 01:55:30.65 ID:uFaF33P2]
>>475
SelectionChangeイベントで、カーソルが動くたびにセルの座標をいちいち独自の履歴に溜めていく

だけど普通は商品NOが確定すると同時にChangeイベントで商品名をセットするもんだよ
ワンテンポ遅らせる理由がわからない
初心者ならなおさらセオリー通りにやった方がいい
さらに言えば、商品名をセットする程度の処理ならVBAを使うまでもなくVLOOKUPとかで可能だし

477 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 04:35:04.82 ID:UkI77+Fd]
>>476
vlookupなんていう関数あったんですね・・・
これで解決できそうです!
ありがとうございました!

478 名前:デフォルトの名無しさん mailto:sage [2014/05/05(月) 18:42:40.78 ID:AK1zskjW]
Excel2013です。複数のページからクエリでデータを取得したいです。

Sheet1のA列から下へ取得したい先のURLが入力されていて、クエリでデータを取得し、新しいシートA1に貼り付けする。
Sheet1のA列のセルが空白になれば処理を終了する。

VBAでクエリを実行する事が出来る所までは出来たのですが、上記の様にしたいのですが知識が乏しく躓いています。

今、出来ているのは下記になります。

Sub クエリ抽出 ()

With ActiveSheet.QueryTables.Add(Connection:= _
"url;取得データがあるURL", _
Destination:=Range("A1"))
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "1"
.Refresh BackgroundQuery:=False

End With

End Sub

宜しくお願いします。

479 名前:デフォルトの名無しさん [2014/05/11(日) 20:01:24.57 ID:0QNYDm24]
申し訳ない、このスレの趣旨とはズレてると思うんだけど、総合スレ的なものがどこにあるか分からないから聞かせてほしい。
参照元のないセルにデータ(数式ではない)を入力したときに循環参照のエラーが出てしまうんだけど、EXCEL 2010にはそういうバグがありますか?
参照先のセルを見てもさっぱり原因がわからなくて困ってます。
周辺のセルはオートフィルで埋めてるので数式は大差ないのに、ある一つのセルだけどうしてもエラーになってしまいます。

480 名前:デフォルトの名無しさん mailto:sage [2014/05/11(日) 20:34:18.27 ID:9n+Ded1d]
総合スレならビジネスsoftの方に

Excel総合相談所 113
toro.2ch.net/test/read.cgi/bsoft/1398901813/l50

ってのがあるけど



481 名前:デフォルトの名無しさん mailto:sage [2014/05/11(日) 20:39:46.70 ID:0QNYDm24]
>>480
ありがとうございます。そちらで質問させていただきます。

482 名前:デフォルトの名無しさん [2014/05/11(日) 21:08:18.06 ID:valH51XC]
WordVBAスレがないんでここで質問させてください

フォルダに画像がたくさんあります。
これをWord文書の1ページに1枚貼り付けたいです。
貼り付け方は左上に合わすだけでいいのでたぶんそんなに設定はしなくていいんじゃないかな。
貼り付け方も行内でも四角でもどちらでも変わらないと思うし。
でも今後の発展のため仮に画面の中央のどまんなかにあわせ、挿入方法は「四角」だとどうなるでしょう?
幅・高さは、どちらかが外周に接するところまでひきのばし/縮めるとします。縦横比はオリジナルと同じにして。

ExcelVBAからでもCreateObject("Word.Application")みたい感じでWordを操ることができると思うのでお願いいたします。

483 名前:デフォルトの名無しさん [2014/05/11(日) 21:09:51.81 ID:valH51XC]
まあ画像のフルパス("C:\Users\USER\Desktop\pic01.jpg")みたいなのを
Excelのセルにあらかじめ書き込んでるとしましょう。

484 名前:デフォルトの名無しさん [2014/05/12(月) 01:23:50.26 ID:DXQGbXMr]
質問です。
VBAの講習を受講して思ったが、簡単な実務に生かすために、短時間で習得するための方法。
これあってますか?
★マクロを組んで、マクロで処理できない条件処理の構文を追加することを覚えることが、
一番楽で簡単なエクセル処理には向いてますか?
それとも、すべて手打ちすることを覚えるほうが、かなり有用ですか?


状況
簡単なマクロ等の自動処理がしたい。
スキルは、VBAの勉強は講習で30時間ほど。まったく身につかなかった。
関数等は普通に使える。

485 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 11:17:08.22 ID:tYXPKjS8]
今の自分が必要とするもの…で無い限りモチベーションに苦労しないか?
実務に活かす事が目的なら今の仕事を自動化するにはどうればいいかを考えれば良いと思う

>すべて手打ちすることを覚えるほうが
ってのが何を言ってるのかわかんないけど。

486 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 13:02:48.27 ID:OiSoC7y/]
マクロの記録と手書きで違うものだと思ってるのかな

487 名前:デフォルトの名無しさん [2014/05/12(月) 22:03:47.06 ID:1mlAXgHL]
マクロ自動記録で出来る事できない事は把握してるようだけど。。。
要は「簡単なマクロ等の〜」簡単がどこまでかでしょう。
最初はきちんと教えてもらった方がいい。
観念的だが、ゼロ→1は難しく1→2は比較来容易

488 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 02:43:20.87 ID:/l0lTNTz]
俺にはこの人の文章が理解できないが
30時間も講習うけてまったく身につかなかった人だぞ
うける講習まちがってるか、絶望的に向いてない人かどっちかだ

489 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 11:32:08.29 ID:VmzA9yq/]
>>484の★部分の意訳

マクロの自動記録をして
自動記録では処理が出来ない条件分岐等をVBAで追加するという方法が、
エクセルでの処理の自動化には有効ですか?

それとも、自動記録に頼らず、
全てVBAで記述することを覚えたほうが良いでしょうか?

ということだと思う。

俺なりの回答としては、自動記録を使おうが使うまいが
VBAの基本的な知識はどっちみち必要だし是非覚えるべき。

VBAで出来て自動記録で出来ないことはたくさん有るけど
自動記録で出来てVBAで出来ないことはない。

もちろん、自動記録で出来ることならVBA使わずにやったって構わないし、
自動記録で記録したほうがコード手書きするより早い場合もある。

でも、VBAを知ってないと
やりたい作業を自動記録でやるのとVBAでやるのと
どっちが楽かとか判断できない。

490 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 12:55:48.39 ID:V6Rb20LO]
再利用性とか考えると、シートからのデータ抽出、主処理、処理結果の反映って作りになる
だからマクロの記憶はベースとなるものではなく、Excelオブジェクトの操作方法を調べる時ぐらいしか使わない



491 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 16:35:43.02 ID:JkOdWH0g]
Sub A()
Range("D11").Select
Selection.End(xlDown).Columns("H").Select
ActiveCell.FormulaR1C1 = "1"
End Sub

(H列,Dの最終行)に1を入れたいんですが(K列,Dの最終行)になってしまいます。
どうすればいいんでしょうか。

492 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 16:49:49.69 ID:VmzA9yq/]
Selection.End(xlDown).Columns("H").Select

ってところが問題
これだとSelectionが"D11"で、.End(xlDown)がそこからの最終行(つまりD列の最終行)となるんだけど、
次の.Columns("H").Selectはそこを1列目(A列)として右に8列目(H列)
(つまりD列の7列右でK列)を選択している。
解決方法はまぁとりあえず.Columns("E").Select とか .Columns(5).Selectにしたり、
列の指定と行の指定を別々にやったり色々ある

493 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 18:00:38.46 ID:JkOdWH0g]
Hの文字を内部に使いたいんですがその場合はどういう方法がいいでしょうか

494 名前:デフォルトの名無しさん [2014/05/13(火) 18:51:25.04 ID:r+9o8GUq]
あるセル範囲 (行も列も複数ある) の値を配列変数に入れるには、どういう方法が一般的ですか?
行と列の二次元だけれど、配列は1次元とします。(順番はどうでもいい。セル範囲のセル数が要素数となる。)

495 名前:デフォルトの名無しさん [2014/05/13(火) 18:52:46.12 ID:r+9o8GUq]
ついでに空白セルがあった場合はそのセルは無視します。

496 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 19:01:16.72 ID:VmzA9yq/]
>>493
列と行を別々に指定する。

つまり、列はH列で決まってるわけだから
Cells(Selection.End(xlDown).Row, "H").Select
とかでいいじゃん。

Selection.End(xlDown).Row
で、Selection(つまり"D11")から下に探した行を取得して、それを指定
列はそのまま"H"でH列を指定
ということ

497 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 19:08:16.70 ID:JkOdWH0g]
>>496
ありがとうございます

498 名前:487 [2014/05/13(火) 21:08:23.50 ID:wn45zDPA]
>>488
すまん、30分と間違えた

499 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 21:32:17.40 ID:ph3+WM+5]
30分www
まぁ手書きで

500 名前:デフォルトの名無しさん mailto:sage [2014/05/14(水) 15:02:32.44 ID:CuHF+7gT]
何方か>>478をお願いします。
検索してみたら、同じ様な事をしたい人が居たのですが、解決には至っていませんでした。
どうか、宜しくお願いします。



501 名前:デフォルトの名無しさん mailto:sage [2014/05/14(水) 17:08:56.86 ID:ZCY9UWx+]
>>500
実行するたびにシートが増えるが、そこはどうにかしろ。

Sub foo()
  Dim r As Range
  Dim sheet As Worksheet

  For Each r In Range("A1").CurrentRegion
    Set sheet = Worksheets.Add
    クエリ抽出 sheet, r.Value
Next
End Sub

Sub クエリ抽出(ByRef sheet As Worksheet, ByVal url As String)
  With sheet.QueryTables.Add(Connection:= _
    "url;" & url, _
    Destination:=sheet.Range("A1"))
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = "1"
    .Refresh BackgroundQuery:=False
  End With
End Sub

502 名前:500 mailto:sage [2014/05/15(木) 01:25:42.71 ID:Gz+0SdGV]
>>501
ありがとうございます。
今夜、早速試してみます。

503 名前:デフォルトの名無しさん [2014/05/17(土) 08:01:53.07 ID:nXU1UeAN]
2次元配列の要素の数を調べるにはどうすればいいですか?
普通のはUBoundでいけるけど、2次元だと詰んでる。

504 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 08:07:13.92 ID:bGHl19aa]
それぐらいぐぐれよw

505 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 08:10:05.17 ID:q+MS9gLN]
ヘルプで十分

506 名前:500 mailto:sage [2014/05/17(土) 09:11:27.80 ID:kSvc6BWF]
>>501
実際に動作を確認しました。
シートが一枚一枚、増えるのはこちらの希望通りで、問題ありません。
期待していた通りになってくれました。大変助かりました。
重々、お礼申し上げます。ありがとうございました。

507 名前:デフォルトの名無しさん [2014/05/17(土) 18:55:01.51 ID:nXU1UeAN]
じゃあ
2次元配列の要素数を動的にして
あとでReDimで変更するにはどうしたらいいですか?
2つのうち両方とも変更したいです。

508 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 19:03:56.16 ID:q+MS9gLN]
>>507
そんなもん自分でやってみりゃいいじゃん
なんでもかんでも聞くなよ

Sub test()
  Dim a()
  ReDim a(3, 3)
  ReDim a(5, 5)
End Sub

さあ、どうなった?

509 名前:デフォルトの名無しさん [2014/05/17(土) 19:54:30.60 ID:nXU1UeAN]
>>508
あれ、できるじゃないか。
おかしいな。
2次元動的配列は、最終の2次元目のみ要素数を変更できると書いてあったのに。

510 名前:デフォルトの名無しさん [2014/05/17(土) 19:57:07.95 ID:nXU1UeAN]
実際こうしたらエラーが出たぞ。

Sub test2()
Dim a() As String
ReDim a(3, 3)
ReDim Preserve a(5, 5)
End Sub



511 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 20:48:25.73 ID:q+MS9gLN]
>>510
ヘルプぐらい読め
ていうかまず一番にヘルプを読め
ヘルプでわからなかったらググれ
それでもわからなかったら人に聞け

512 名前:デフォルトの名無しさん [2014/05/17(土) 21:35:47.99 ID:nXU1UeAN]
ヘルプ見つからず、検索出てこず、ここで人に聞いても回答なし。
詰んでる。

513 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 21:43:18.79 ID:E1N9nGHa]
PreserveなしのRedimは次元数も要素数も変更できる
Preserve付きのRedimは次元数は変更できず、最後の次元の要素数のみ変更できる

514 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 22:28:57.78 ID:q+MS9gLN]
>>512
Excelが入っててヘルプが入ってないわけないだろ

515 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 22:40:38.76 ID:bGHl19aa]
これすら見つけられなかった?
Redimステートメント
msdn.microsoft.com/ja-jp/library/w8k3cys2.aspx

516 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 22:42:59.11 ID:bGHl19aa]
VS2013?間違えた

517 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 23:06:02.53 ID:q+MS9gLN]
msdnだと日本語のリファレンスが見つからないんだよなあ (VBはあるけどVBAが見あたらない)
msdn.microsoft.com/en-us/library/gg251578%28v=office.15%29.aspx

探し方が悪い気もするんだけど、ようわからん

518 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 11:25:50.87 ID:f0QDfVej]
正直、ヘルプMSDNとかよりもググって誰かの書いた説明の方が
わかりやすいと思ってしまう俺はド素人なんだろうな。

519 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 11:52:19.34 ID:rUx0aG1K]
とりあえず動けばいいレベルのマクロを作るだけなら何を参考にしてもいい
想定外の動作をしてバグか仕様か自分の勘違いかわからない時は、結局はmsdnやヘルプを確認するしかない時もある

もちろん公式文書にも間違いはあるので注意が必要だけど、>>510みたいにヘルプにちゃんと書いてあることを
あたかも大発見みたいに書かれると萎える

520 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 16:00:29.34 ID:1/it3LsY]
>>518
英語力の問題では?



521 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 16:47:32.55 ID:0bx4PTQ0]
>>518
ヘルプやMSDNがわかりやすいと思ったら、だれもそんな解説書かないだろ
ヘルプみてわけわからんなら解説探せばいいけど、公式情報みるのは最低限必要

522 名前:デフォルトの名無しさん [2014/05/18(日) 21:22:16.26 ID:UBuQU1Du]
toro.2ch.net/test/read.cgi/tech/1382015080/

523 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 22:00:39.47 ID:H/JD4vj2]
MSDNも、機械翻訳版だと無意味に近いし、
人間が訳したのは英語版の重要なところを
こっそりスッ飛ばしてる場合があるから要注意だ。

524 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 22:23:52.70 ID:BFHFMym8]
俺ほどの人間は、自分で調べるなんて愚行しない。
ここに書いて手っ取り早く解答得るのがベスト。

525 名前:デフォルトの名無しさん [2014/05/22(木) 17:38:55.74 ID:OR1KcKew]
そして素人の書いた適当なレスに騙される

526 名前:デフォルトの名無しさん mailto:sage [2014/05/22(木) 18:09:40.63 ID:jxaWow30]
情報とか手がかりじゃなくて解答というあたりが・・・

527 名前:デフォルトの名無しさん [2014/05/24(土) 10:53:14.15 ID:eu02DRrY]
Excel2013 の PDF保存のコードについて教えてくださいませ。
名前をつけて保存、で複数シートを1つのPDFに保存するコードを書きましたが
なぜか動く動きません。

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Sheets("Sheet1").Activate
ActiveSheet.ExportAsFixedFormat type:=xlTypePDF,
Filename:= "C:\Sheet123.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

Arrayで最初に選択したシートのみが出力されてしまいます。
2行目の Sheets("Sheet1").Activate を削除しても結果は変わらずでした。
マクロで記録しても、上記と同様のコードが記録されます。
しかしこの記録されたマクロを実行すると、やはり最初に選択したシートしかPDF出力されません。

何が足りないのでしょうか?

528 名前:527 mailto:sage [2014/05/24(土) 10:56:45.70 ID:eu02DRrY]
ごめんなさい!出来ました!ワ〜イ
ウィンドウを複数開いてたのが原因でした

529 名前:デフォルトの名無しさん mailto:sage [2014/05/25(日) 22:23:52.52 ID:8sEJJ/Xn]
VBAを使ってπの道の桁数の計算に挑戦することは可能ですか?

530 名前:デフォルトの名無しさん mailto:sage [2014/05/25(日) 22:24:17.44 ID:8sEJJ/Xn]
>>529
道→未知・・



531 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 10:24:59.73 ID:xBqIirxp]
挑戦するだけなら可能でしょ
成功はしないけど

532 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 12:13:08.87 ID:ptXAqcmg]
たぶん未知の領域に到達する前に
後から来る人に追い越される

533 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 12:26:24.18 ID:dlApJPlM]
道の桁数の計算方法が確定しているなら
その計算に必要なリソースが確保できるなら可能

534 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 15:34:56.33 ID:EGdbrytd]
いや、未知の桁数に達するまで太陽系が存在出来るかを問題にしないと

535 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 19:57:34.24 ID:dlApJPlM]
>>534
挑戦出来るかどうかと聞いてるから、そこは問題にならない

536 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 20:30:26.14 ID:9XuuTI4K]
Excel VBA 量子コンピューター版が出れば最初に的確に着手した人なら達成出来る?
it.impressbm.co.jp/articles/-/10453
D-Wave はコンピュータではないらしい。
計算を高速化する独自の数式や手法を発見すれば現在のExcelでも可能?

537 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 20:39:03.08 ID:JsbqvBWY]
考えてみればExcelは1つじゃない
手に入るだけの台数の高速なPC(数千・数万台とか)とExcelで並列処理させればできるか?
VBAが何所まで並列処理にむいているかはやったことが無いのでわからんが。

538 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 20:51:31.05 ID:LCv9Wl+A]
>>529
VBA は 64KB 壁があったりして棘の道だと思うが君ならきっとやれる。

539 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 23:11:20.50 ID:Ed2uGBCo]
仕事で自動化したくてOLEオートメーション使いたいのだけど
これってもう古いの?
どこ探してもよくわからない
おすすめの本ってある?

540 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 23:43:24.09 ID:7NSDbYse]
>>539
質問の意味が良くわからない
何を自動化したいのか
「オートメーション」という言葉を何か勘違いして受け取っているようにも見える



541 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 23:47:12.46 ID:Js6v2rIN]
ActiveXでぐぐれなさい

542 名前:デフォルトの名無しさん [2014/05/27(火) 11:36:41.29 ID:CQuE4vUS]
VBAで満足しているんですが、
ほかのプログラム言語覚えるとなにかいいことありますか?
VBAじゃ出来ないことある?

543 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 12:10:21.53 ID:pK8lgo+n]
>>542
もちろんVBAにできないことはたくさんあるけど、他の言語にもそれぞれ苦手な分野があるんで
自分のやりたいことがVBAじゃ大変だとわかってから、その作業に最適な言語を探した方が無駄が少ないかもね

544 名前:デフォルトの名無しさん [2014/05/27(火) 12:29:28.96 ID:CQuE4vUS]
>>543
そうですかぁ
目的はっきりしないうちに、
ほかの言語覚えるのも大変ですよね・・
VBAの限界がみえるまではVBAだけで行きます!

545 名前:デフォルトの名無しさん [2014/05/27(火) 12:39:03.97 ID:JkwAmhtq]
>>542
JAVAとかCとかだと求人が多いけどVBAじゃ求人が少ないから
つぶしが利かない

546 名前:デフォルトの名無しさん [2014/05/27(火) 12:44:54.08 ID:CQuE4vUS]
>>545
なるほど、
仕事じゃなく個人で使うだけならVBAで十分かな?
足りなくなったら、DLL?とかほかの言語で作って、
VBAで呼び出せばいいか・・

547 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 13:18:47.16 ID:1WWRQ+yd]
Excel VBAで作ると、出力先がほぼシートになるから結構便利なのよね
グラフとか後でくっつければ良いだけだし

sheet1、使い方の説明とか入力用
sheet2、出力用テンプレート
sheet3以降、出力先

って感じで作れば、使い方とか後で訊かれる事も少ない
インターフェイスの設計とか悩まなくて済むのはメリット

548 名前:539 mailto:sage [2014/05/27(火) 21:24:50.12 ID:ynAF/lre]
>>540
Excelに数値を入れてCADでそれに沿った図面を作成したいのです。
OLE自体をあまり理解してないのですが、
アプリケーション自体が公開しているメソッド(CADでもソフトによって違う)
を使用するということでしょうか

549 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 06:25:58.57 ID:am2JQYoj]
つまり、CADソフトをOLEオートメーションでEXCELから操作したい、と
OLEオートメーションって言葉は古いな。間違ってはないが

VBAの命令としてはそのCADソフトのオブジェクトを生成するCreatObjectって言う命令だけ
それ以外は普通のEXCEL VBAの入門書でだいたい事足りるかと

あとはそのCADソフト側で用意されてるメソッドなり何なりを操作する
それはそのCADソフト側の問題なんでそっちに聞いてください

550 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 09:41:47.76 ID:BSb9yGb4]
ああ、昔AutoCADで似たような事やったな
VC++だったけど
CAD側の文字コードに注意してやらないと、文字化けとか大変な事になる予感

使い方としては、549の言ってる通りでいけると思うけど、
Excelで数値入れるのが果たして使いやすいかというと、
実はそうでもなかったりしがちになるので、
必要な要件はきっちり洗い出す必要あると思うよ



551 名前:デフォルトの名無しさん [2014/05/28(水) 11:36:19.19 ID:tvrcqpPe]
VBAの標準関数のソースを見たいのですがどこに記述されているのでしょうか?

552 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 11:42:23.21 ID:mspF09G9]
非公開じゃないの

553 名前:デフォルトの名無しさん [2014/05/28(水) 11:52:24.90 ID:tvrcqpPe]
そりゃないよかあちゃん

554 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 16:09:51.90 ID:PxoSlPb7]
excel vba実行中の画面のちらつきは
Application.ScreenUpdating で 抑えられたが
それでもタスクバーがちらついて困っていた。
タスクバーのちらつきは Application.ShowWindowsInTaskbar
で抑えられるのが分かった。

ShowWindowsInTaskbar って昔からありましたっけ?

555 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 18:00:58.65 ID:pq9FJS3g]
>>554
> ShowWindowsInTaskbar って昔からありましたっけ?

なんでググらないの?

556 名前:デフォルトの名無しさん [2014/05/28(水) 19:31:12.32 ID:tvrcqpPe]
あるセル範囲を選択してて
その中にあるセルで
 (1) 空白なら除外する
 (2) 同じ値があれば1つを残して他は除外する
の操作をしたあと
各セルの値をString型の配列変数として入れたいんです。
そのためにはどういうコードを書けばよいでしょうか?

さあ、書きなさい。

557 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 19:51:40.59 ID:6RxarYIU]
rangeをOLEで取得するとarrayになるようですが
VBA以外の言語とデータをやり取りするにはどうすれば良い?

558 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 20:35:31.75 ID:aALl0Wxc]
>>557
Variant型はExcelやVBAだけで使える型じゃなくてWindowsシステム全体で定義されてるんで
たいていの言語でそのまま扱うことができる

559 名前:539 mailto:sage [2014/05/28(水) 21:11:33.80 ID:tkho5s2n]
>>549-550
詳しい解答ありがとうございました。
非常に分かりやすかったです。
描くのは直線だけでなるものなので業務の時間を短縮できるのかなと。
あとはCADソフト側の命令の仕方ですね、頑張って探してみます。
ありがとうございました。

560 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 23:52:38.39 ID:am2JQYoj]
>>556
あるセル範囲を選択してて
その中にあるセルで
 (1) 空白なら除外する
 (2) 同じ値があれば1つを残して他は除外する
の操作をしたあと
各セルの値をString型の配列変数として入れる
こういうコードを書けばよいよ

要件定義が甘いが、どこがわからんかわからん



561 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 00:20:40.78 ID:pIxlUzsM]
>>556
Dictionary使うのはどう?
Existで調べて、無かったらAdd
これを繰り返して最後にString型の配列変数に入れる

562 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 00:22:14.59 ID:pIxlUzsM]
スペル間違えた
× Exist
○ Exists

563 名前:デフォルトの名無しさん [2014/05/29(木) 08:48:17.68 ID:/DaeRAwK]
Do
DoEvents
Sleep (100)
Loop Until flag = True

な無限ループをイベント監視用にユーザーフォームで走らせているんですが,
フォームのタイトルバーを捕まれるとループが止められてしまいます。

ループ用にvbModelessなフォームをHiddenで隠して回しても,
他のフォームのタイトルを捕まれると止まってしまいます。

タイトルを捕まれてもマクロが止まらなくなる方法ってありますか?

564 名前:デフォルトの名無しさん [2014/05/29(木) 12:02:11.02 ID:Amp5ddSE]
>>561
ありがとうございます。
あなたはこのスレにときどき登場するDistionary厨のかたですね?
これを機会にDisctionaryの使い方を理解してマスターしようと思うのですが
いいサイトか本はないでしょうか?

565 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 14:29:26.90 ID:sq7Ykhg/]
>>563
残念ながらExcelVBAはマルチスレッドに対応しておりません

というか、止められると言っても、終了してしまうのではなく中断するだけだろ?
タイトルバーを掴んでいる間さえも中断しちゃまずいって、いったい何を監視しているやら?
それに、ユーザーフォームの移動なんて、そう頻繁に行うことでも、長時間行うことでも無いじゃん

それとも、自分が使う物ではなく他人が使う物で、タイトルバーを掴んだままにすることで
意図的に監視を一時停止出来ちゃうと困るとかなのかな?
だとすれば、パス掛けたところで簡単に破れて、ソース弄れば監視の無効化も、もっと簡単に
一時停止できるようにすることも可能なVBAでそういうものを作ること自体が不適切

それに、タートルバーを掴んでいる間、つまりExcelの操作をしていない間も監視が必要って事は、
監視対象はExcel上のものではないんだよね?
だとすると、その辺に別の対処法の突破口があるかもしれないな

566 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 15:11:02.01 ID:dLhscPPS]
>>563
Sleepを消せば少し改善されると思う
空のループはDoEventsだけで十分

567 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 15:20:33.17 ID:mJj+KV4g]
タイトルバーを掴んでる間はDoEventsが戻ってきてないようだが

568 名前:563 [2014/05/29(木) 17:38:29.96 ID:/DaeRAwK]
>>565
やりたいことは測定器からのデータ取得(GPIB)で,2秒に一回のイベントを監視する目的です。

具体的には AD変換完了のイベント発生 -> 測定値の取得コマンド発行 -> 測定値の転送
という流れで,イベントが発生したら2秒以内に「取得コマンドの発行->転送」をしないと
データを取りこぼしてしまいます。
そこで,フォーム(中断イベント発生用ボタンを表示)がじゃまだと画面の脇によける動作をすると
ループが止まって取りこぼすので困っておりました。

その後,WindowsAPIのSetTimer/KillTimerを試しまして,今回の目的(2秒)なら
行けそうな感じで収まりました。

>>566
>>567 のとおり,つかんでいる間は帰ってきてくれないようです。

569 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 18:03:06.09 ID:mJj+KV4g]
そのAD変換完了のイベントってのがどうなってるかしらんが
それで空ループまわして待つ意味がわからんし、時間制限があるのに変換完了イベントから
取得コマンド発行までの間でDoEventsする必要もわからん

570 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 19:47:40.83 ID:sq7Ykhg/]
>>568
そういうのは普通、測定器→ローカルデータ、ローカルデータ→Excelって二段構えでやるもんだよ

ユーザーフォームのタイトルバーを掴む意外にも、ループが一時停止される要素はあるし
Excelのエラーで強制終了して再立ち上げするにも、2秒以内じゃまず無理なので取りこぼしが出る

だからまずはデータをローカル(HDD)に保存するってことだけに専念したアプリやスクリプトを走らせて
それが保存するローカルデータをExcelで監視するってのが常套手段
それなら、Excelの監視が止まっている間にイベントが2回発生しようと3回発生しようと
HDDにはその2回なり3回分なりのデータが保存されたままになるから、後からいくらでも読み出し可能



571 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 19:57:52.53 ID:dLhscPPS]
それこそ外部プログラムからOLEでワークシートにデータを書き込んで、Changeイベントで処理すべきだろ
リアルタイムで処理する必要があるかどうかは知らんが

リアルタイム性が必要なければファイルにCSV保存して、あとから加工なり分析なりすればええ

572 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 21:38:45.66 ID:pIxlUzsM]
>>564
Dictionaryでググレばいいと思うよ
俺もそうした

573 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 22:25:02.22 ID:MJP51S+k]
"プロジェクトまたはライブラリが見つかりません"のコンパイルエラーが発生したので以下のページを参考にして解決しました。
www.moug.net/tech/exvba/0150128.html
お聞きしたいのは、参照不可となった原因です。あと、参照不可となっていたライブラリのチェックを外すことで今後問題が起きないのか?ということです。
ちなみに、開発環境と実行環境は同一のPC1台のみです。よろしくお願いします。

574 名前:563 [2014/05/30(金) 08:43:27.05 ID:VsNT1DP0]
>>569
イベント=グローバル変数のビットが立つだけでなので,
単純にループを回し続けてグローバル変数を確認し続ける処理となってます。
また,DoEventsは中断/終了処理のためにフォームのボタンを押す必要があるためです。

>>570,571
CSVを吐かせるのが一番容易ではあるんですが,他者がメンテするときに開発環境等
構築の必要がないVBAのみで完結させたいなというのがありまして。

575 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 09:28:42.64 ID:ztZ/Ok0F]
>>574
悪い事は言わん、計測器関連はVBAでやるの止めとけ
今はVisualStudio Expressもあるし、無料で環境構築できるんだから、
Excel に拘らない方が良い

どっちかつうと、VB側からExcel吐き出しする方が経験上楽で確実

576 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 09:34:30.18 ID:tZceHJTB]
Excel2個起動したらマルチで動くよ

577 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 10:03:47.61 ID:gm611zV1]
そのグローバル変数を書き換えてるプロセスはいったいどこで動いてるんだ?

578 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 15:23:03.23 ID:g1Pwsqem]
>>574
>単純にループを回し続けてグローバル変数を確認
グローバル変数セットするときにイベント起こすなり特定プロシジャ呼ぶなりすれば良い話
ループで変数監視とかどう考えても設計がおかしい

>DoEventsは中断/終了処理のために
変換完了イベントから取得コマンド発行までの間は中断できないようにすれば良いだけ
要求される仕様にもよるけど設計がおかしい

579 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 15:38:13.41 ID:g1Pwsqem]
>>573
>参照不可となった原因
たとえば参照設定されていたプログラムをアンインストールしたら当然参照不可能になるわな
お前のPCに起こった事がそれだけの情報でわかるわけがないだろう

>今後問題が起きないのか
お前のプログラムが何をどうやってたかわからんのに、わかるわけがないだろう
コンパイルしてみてエラーが無いようなら、一応問題が無いと言えるかもしれんが
ライブラリの中身が変わって参照設定が無くなってたりしたら、そのライブラリに
互換性の問題があったりするかもしれん

580 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 15:45:03.61 ID:9Pr1vy7p]
いつもの

「設計が不適切だから、実現が困難になる」

という、初心者がよくハマる罠ですな



581 名前:デフォルトの名無しさん [2014/05/30(金) 16:06:49.06 ID:VsNT1DP0]
>>575
テンプレート作っておいて最終的にcom使って吐き出させるのが確実ですかね。

>>577
すみません,私の勘違いでグローバル変数が変わるのではなく,
ループ中で測定器のステータスを読みに行くコマンドを送り,
ADデータが更新されたかのフラグを自分で立てていました。

582 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:06:21.63 ID:uIjyT6t9]
具体的な記述は自分で考えますので方向性だけお力をおかしください


現在、シート1にデータの羅列を手入力しています
その後、いくらかの計算を経てシート2に転写しています
このとき、シート1は月日関係なく羅列が続いているのですがシート2は月末ごとに集計したいと考えています


↓へ続く

583 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:07:57.55 ID:uIjyT6t9]
イメージとしては

・シート1
1/1   5
1/10  3
1/25  6
1/31  10
2/3   5
2/20  2
3/2   4


シート2
1/1   5
1/10  3
1/25  6
1/31  10
----------
1月最大 10
1月最少 3
1月計  24
----------
2/3   5
2/20  2
----------
2月最大  5
2月最少  2
2月計   7
----------
3/2   4

こんなイメージです、初めは文字通り転写していたのですがそうするとあとから月末の集計を挟むとずれるのでそのあたりヒントをいただけたらと思います

584 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:20:31.98 ID:9Pr1vy7p]
クラス使って構造化すれば良いだけやん

因みに最大の反対は最小で、最少の反対は最多な

585 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 21:36:10.28 ID:e0LBlZuD]
転写後に集計行を挿入する。
転写元と転写先の行指定を同一にしないでわける。
(Row1行目をRow2行目に転写)

586 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 22:04:39.86 ID:FUgryqqJ]
>>583
分かり易いコードだったら
シート1の上から月の変わり目まで値をシート2に代入して、
その間最大と最小と月計を求めておいて、それをシート2に書き込んだら
また次の月を処理してやればいいんだけど、
別にそんなことしなくてもピボットで行けるんじゃないかと思う。

587 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 01:24:27.59 ID:BIC+yzDE]
ひとまずシート1からシート2へ、
全てのデータをコピーする

次にシート2へ、最大値・最小値・合計を、
後ろの行から追加していくと、
行の数え間違いが減りそう

588 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 08:16:56.63 ID:Ym0wh1sa]
エクセルの2003で作ったマクロを2013で使用したいのですが、
そのままコピーをしても使えません・・・

互換モードで変換しても、上手く起動してくれません。
どうしたらよいでしょうか?

589 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 08:31:34.05 ID:hcRtMx6V]
>>588
使えないってのどういう状況?
コピーって、何をどうコピーしたんだ?
それは本当に2003で作ったマクロなのか?

情報が足りなすぎて何とも言えん

エスパーするならセキュリティセンターの設定で行ける気がするが

590 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 10:11:58.90 ID:0hCJmlYV]
>>588
エスパーすると、
信頼できる場所、拡張子(マクロ有効ブック)、参照設定、PtrSafe
あたりかなあ?



591 名前:デフォルトの名無しさん [2014/05/31(土) 17:06:26.42 ID:vfwWW6a6]
質問でございます。
エクセルVBAで効果音を鳴らすにはいかにすればよろしいでしょうか?

また、画像を張ったり、消したりするにはどのようなコードを書き込めばいいものでしょうか?

592 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 17:57:42.27 ID:Ym0wh1sa]
マクロの制作代行(修正)を3000円位で行ってくれる所ないかな?

既にあるマクロに機能追加してもらいたいんだけど、
スキルがなくて困っています。

593 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 18:03:54.56 ID:MZZ4d7NB]
>>591
www13.plala.or.jp/kymats/study/multimedia.html

594 名前:デフォルトの名無しさん [2014/05/31(土) 18:15:17.55 ID:xW/2bai/]
>>593
いまいち、理解できないっす。
要するにどういうコードを書き込めばよいのでしょうか?
そして音源はどこにあるのでしょうか?

595 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 18:24:22.00 ID:6LzyMI+6]
>>592
翌日以降に発覚した瑕疵等は別途見積もり・請求させていたたきます

596 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 18:42:36.10 ID:ROAafTCn]
>>592
マッチングサイトなんてググればヒットするでしょ

597 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 20:08:49.36 ID:ENgUpqsf]
>>594
ググるという発想はないの?

598 名前:デフォルトの名無しさん [2014/06/01(日) 00:30:52.76 ID:1fLVc9/2]
エクセルに画像を取り込もうとすると、テキストファイルウィーザード「選択したデータは区切り文字で区切られていま」
というエラー?が出て、画像が取り込めず、文字列がだーっと出る画面になるのですが
保存された画像を普通に貼り付けるにはどうすればいいのでしょうか
保存の仕方がわるいのでしょうか?

599 名前:デフォルトの名無しさん [2014/06/01(日) 00:44:57.06 ID:J9cZPePT]
>>592
その値段では、誰も引き受けてくれんぞ。30万出せば、金に困っている
連中の誰かは、受けてくれるだろうが。

600 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 01:56:31.76 ID:4/q6rSuq]
>>598
君は諦めた方がいい



601 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:15:57.44 ID:Vdytlm3J]
>>592
相談料 3000円 (120分以内)なら考えてもいい

602 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:28:28.23 ID:mo4nCN9m]
>>601
120分3000円でいいならもうボランティアでやってやれよw

603 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:39:07.65 ID:m+nDoAYH]
>>598
まず最初にここは Excel VBA質問スレ
この時点でアウト
君が相談すべきスレは、ビジネスSOFT板のExcel総合相談所 113

ちなみに注意としてExcelのバージョンとどういう操作をしたのかくらい書けよ
Excel2007(2010)だとして、挿入→図からファイルを選択すれば良いのをなんでテキストファイルウィザードなんてもんが出てくる?

604 名前:デフォルトの名無しさん [2014/06/01(日) 12:52:54.92 ID:QlI1F8ze]
すいませんです
Excel2010で、ゲーム製作をしてましてVBAで画像が自動的に出たり消えたりと言うプログラミングを
設定しているのですが、画像がうまく開かないで苦心しておりました

605 名前:デフォルトの名無しさん [2014/06/01(日) 14:52:48.34 ID:ycdnLEoX]
Excel2007です。
Excel2003で動いていた、グラフの書式をコピーするVBAを実行すると、
データまでコピーされてしまうようになり、困っています。
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.ChartArea.Copy
ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveChart.Paste Type:=xlFormats

ヘルプにはxlPasteFormatsを指定とあるので、修正してみたのですが変わりませんでした。

グラフ選択→コピー→グラフ選択→形式を選択して貼り付けの書式を選択で、
シートに対してPasteSpecialを使えば元の動きになることはわかったのですが、
もともと使っていたPasteは使えなくなったのでしょうか?
それとも使い方がわるいのでしょうか?

606 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 15:23:51.99 ID:WV5hG6M3]
Excel2003ですが
VBAでくり返し操作するときは自動保存をOFFにしたいのですが
オプション設定はVBAで操作できるのでしょうか?

607 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 17:18:12.48 ID:XKcLg8fj]
>>606
 Application.AutoRecover.Enabled = False

608 名前:606 mailto:sage [2014/06/01(日) 21:41:47.16 ID:5iy05h8R]
>>607
これは便利ですねぇ知りませんでした。 ありがとうございます。

609 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 18:30:40.65 ID:YbWwqAFD]
教えてください。キーワードだけで構いません。
チャートオブジェクトの横幅と高さをVBAで変更することはできますが、
グラフオブジェクトの中のグラフ表示範囲(?)を変更する方法がわかりません。

ワークシートに複数のグラフがあり、これらのグラフの横幅を揃えたいのです。
チャートオブジェクトの横幅は揃っているのですが、図中に矢印で示すグラフ表示範囲がずれてしまっています。
手動ではなくVBAで自動的に揃え直したいのですが方法がわかりません。

よろしくお願いします。
i.imgur.com/fSS5gf9.png

610 名前:デフォルトの名無しさん mailto:sage [2014/06/02(月) 19:36:28.50 ID:Qua9WhFM]
>>609
PlotArea.Width



611 名前:609 mailto:sage [2014/06/02(月) 22:43:18.89 ID:QcqSJ9d9]
>>610 ありがとうございました。
今試せる環境ではないので明日試してみます。
とりあえずググったところ下のように書いてありました。
厳密に複数グラフの横幅を揃えるのは難しそうですね。

www.moug.net/tech/acvba/0020000.html
プロットエリアの位置や大きさは、Top/Left/Height/Widthプロパティで設定しますが、
これらのプロパティで設定する領域は、プロットエリアの書式設定の際に参照される領域よりも大きくなります。
差が出るのは、軸/軸の目盛ラベル/データテーブルの領域分です。
これらを除いた領域の位置、及び大きさはInsideTop/InsideLeft/InsideHeight/InsideWidthプロパティで取得できますが、設定は出来ません。
したがって本来の意味でのプロットエリアの大きさを思い通りに設定するのは、非常に困難であると言えます。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef