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

Excel VBA 質問スレ Part33

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/17(木) 22:04:40.64
ExcelのVBAに関する質問スレです

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

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

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

コードが嫌な人はこちらのスレへ
http://toro.2ch.net/test/read.cgi/tech/1381151995/l50
0002デフォルトの名無しさん2013/10/17(木) 22:11:59.51
VBAはなくならなくても文法がVB.NETライクに変わってしまう可能性はあるんかな?
0003デフォルトの名無しさん2013/10/17(木) 22:15:11.12
前スレ
01 http://pc11.2ch.net/test/read.cgi/tech/1054356121/
02 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
14 http://pc12.2ch.net/test/read.cgi/tech/1262748898/
15 http://pc12.2ch.net/test/read.cgi/tech/1271261239/
16 http://hibari.2ch.net/test/read.cgi/tech/1280045912/
17 http://hibari.2ch.net/test/read.cgi/tech/1289182437/
18 http://hibari.2ch.net/test/read.cgi/tech/1298240666/
19 http://hibari.2ch.net/test/read.cgi/tech/1305754555/
20 http://hibari.2ch.net/test/read.cgi/tech/1312435844/
21 http://hibari.2ch.net/test/read.cgi/tech/1316931607/
22 http://toro.2ch.net/test/read.cgi/tech/1322400978/
23 http://toro.2ch.net/test/read.cgi/tech/1327763113/
24 http://toro.2ch.net/test/read.cgi/tech/1334305148/
25 http://toro.2ch.net/test/read.cgi/tech/1341722983/
26 http://toro.2ch.net/test/read.cgi/tech/1345363310/
27 http://toro.2ch.net/test/read.cgi/tech/1353842387/
28 http://toro.2ch.net/test/read.cgi/tech/1359607536/
29 http://toro.2ch.net/test/read.cgi/tech/1364689772/
30 http://toro.2ch.net/test/read.cgi/tech/1370088822/
31 http://toro.2ch.net/test/read.cgi/tech/1376371376/
0004デフォルトの名無しさん2013/10/17(木) 22:31:44.49
2007です。A1に日付、B1に「あ」、C1に「い」、D1に「お」
と入力したとして、「お」が入力された時だけA1、B1、C1、D1
の入力内容をE1,F1,G1,H1に自動入力する方法はないでしょうか?

D1に「お」が入力された時だけH1に「お」を入力するのはIFでできたんですが、
条件が合った時だけセル位置を指定して自動入力する事はできないのでしょうか? 
0005デフォルトの名無しさん2013/10/17(木) 22:32:56.01
>>2
今までの資産の問題があるから多分変わらないとは思うけど、
使えるようになってくれればいいね。
0006デフォルトの名無しさん2013/10/17(木) 22:37:31.53
>>4
取り敢えず前スレがまだ消化されてるどころの話じゃないのでこっちで聞こうか

前スレ
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/
0007デフォルトの名無しさん2013/10/17(木) 23:31:38.27
>>5
変わった方がいいの?
0008デフォルトの名無しさん2013/10/17(木) 23:36:04.76
>>7
変わって欲しくない人もいっぱいいるとは思うけど、
.Netはかなり便利な機能が沢山あるからね。
00097102013/10/18(金) 08:04:26.31
変えるなんてとてもできないだろうから、取り敢えず C# for Application「も」サポートしてくれ...
0010デフォルトの名無しさん2013/10/19(土) 16:27:30.16
別に無理してObject指向にせんでも
00117102013/10/19(土) 17:33:45.78
>>10
シートとかセルとかもオブジェクトなので、OOP の方が楽だよ。
とある案件で C++ から Excel 操作してるけど、楽だよ〜。
0012デフォルトの名無しさん2013/10/19(土) 18:45:25.93
VB.NetとC#は文法が違うだけで後は8割方一緒だけどC++はよく知らない。
確か3DSはC++、PSVITAはC#でコード書くんだっけ?
0013デフォルトの名無しさん2013/10/21(月) 11:44:25.92
現行スレに書きましょう。

Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/
0014デフォルトの名無しさん2013/10/29(火) 18:17:55.65
まぁでもたまには上げとかないとね
0015デフォルトの名無しさん2013/11/03(日) 18:57:18.55
http://www.buzzword.jp/img/face10.png
0016デフォルトの名無しさん2013/11/05(火) 12:54:43.75
>>15
この、一見ホモ顔、実はロリコン、実体はレイプ犯みたいな顔は誰
0017デフォルトの名無しさん2013/11/05(火) 13:39:47.08
お前だよ、お前
0018デフォルトの名無しさん2013/11/07(木) 13:15:50.48
>>17
ありがとう、この人物の性癖広まってるんだ
いつの手配写真だろ
韓国で整形したから同じ顔が沢山いるのかな
0019デフォルトの名無しさん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
必要最小限
0020デフォルトの名無しさん2013/11/22(金) 13:21:37.36
誘導age
0021デフォルトの名無しさん2013/11/22(金) 13:45:41.81
Application.LargeOperationCellThousandCount
コレってどんな時に使う?
使った事ある人いたら教えて
0022デフォルトの名無しさん2013/11/22(金) 14:17:06.27
>>21


http://toro.2ch.net/test/read.cgi/tech/1382015080/21
0023デフォルトの名無しさん2013/11/22(金) 15:02:23.40
>>22
意味不明〜ぃ
URL貼るなら、中身を見てからにして下さい
0024デフォルトの名無しさん2013/11/22(金) 15:43:48.29
>>21
初めてみるプロパティだからいじってみたけど
オプションの詳細設定にある 時間がかかる操作が発生したときに警告を表示する
の数値設定するだけだな
たしかにその数値がオプションに設定されるし、その設定数以上のセル削除の操作で警告がでた
マクロでセル操作してもその警告は出ないっぽいからあんまり関係ないかも
0025デフォルトの名無しさん2013/11/22(金) 15:45:28.15
オプション設定変えたら元の値解らんようになった
誰か>>24のオプションのデフォルト値いくらか教えてくれ
0026デフォルトの名無しさん2013/11/22(金) 15:49:51.76
Excel 2007以降か。
俺には関係の無い話だった。
0027212013/11/22(金) 16:11:14.92
>>24
ありがとう、理解できました。
0028デフォルトの名無しさん2013/11/22(金) 16:36:59.51
>>25
検証乙です。

ウチのPC (Win7 Office2010) では
MsgBox Application.LargeOperationCellThousandCount
の実行結果は"33554"だったよ
(""は便宜上書いてるだけで、実際には表示されてません)
0029デフォルトの名無しさん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
0030デフォルトの名無しさん2013/11/22(金) 18:23:29.32
>>29
Controlsはそういう使い方をするもんではない
あれはフォーム内のオブジェクトとかに使う

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

Dim Ans(4)
とかいうふうに宣言する
配列要素の数が不定なら動的配列で宣言する
Dim Ans()
としておいて、後から必要に応じて
Redim Ans("配列要素数") とかやる
基本的に配列の大きさを変えると中身が消えるけど、
消したくないときは 
Redim Preserve Ans("配列要素数") ってやる
ただし、大きくするのはこれで良いけど、
小さくするときにあふれた要素はどうやったって消えるので注意
0031デフォルトの名無しさん2013/11/22(金) 20:24:48.16
VBAでいろんなパラメータを与えて処理するのがあるんですけど、その設定を忘れて実行しちゃったりする時があります。
んで、途中で強制的にストップさせたりするのってESCを押せば中止できるけど、エラーになってしまうじゃないですか。

エラーを起こさずに中止させる方法ってあります?
0032デフォルトの名無しさん2013/11/22(金) 20:50:03.84
>>31
プログラムで中止するなら、一応、StopとかEndとかいう命令はあるが
普通は実行するコードが無くなったら止まるのでそんな命令書かない

プログラムの外から止めるのなら、それはプログラムにとっては異常事態なんだからエラーでてもしょうがない
つかためしたけど、エラーは出てないっぽいけどな
0033デフォルトの名無しさん2013/11/22(金) 20:54:04.32
"ESC VBA エラー"でぐぐるとこの辺がヒットした。

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

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

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

そういう場合、ESCで止めるよりも
コード実行中にパラメータの不備をチェックできるように
コード自体を書いておくほうが良いんじゃねーかなと思う。
0034デフォルトの名無しさん2013/11/22(金) 21:16:27.53
>>32,33

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

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

どもm(_ _)m
0035デフォルトの名無しさん2013/11/22(金) 21:25:13.85
私はこんな方法で途中中止の分岐してる
DoEvents
If Sheet1.OptionButton1.Value = True Then
 call 途中中止処理
End If
0036デフォルトの名無しさん2013/11/22(金) 22:48:42.85
スレ立てた順番的にはこっちが先でしょ

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

Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151995/
0037デフォルトの名無しさん2013/11/22(金) 23:56:40.27
>>36
まぁPart31を見てあっちでいいと言うドMな人はあっちのスレに行けばいいんじゃないの?
コードもExcelのアプリケーションに依存しない話も禁止らしいけどね。
0038デフォルトの名無しさん2013/11/23(土) 00:13:41.59
VBAで、Windowsの設定でバックアップしたファイルの情報を取得する方法有りませんか?
フォルダとかで右クリックしてプロパティ選択してタブで「以前のバージョン」って選択すると出てくるやつ。
そこに格納されてるファイルやフォルダの名前や更新日付が欲しいんですが、
WMIで取得しようとしたけど情報の取得方法がイマイチよく分からなくて・・・
0039デフォルトの名無しさん2013/11/23(土) 05:57:44.14
>>37
複数スレが立ってるんだから立てた順に消化すればいい。
テンプレが無くても荒れたわけだし、大して変わらん。
0040デフォルトの名無しさん2013/11/23(土) 06:23:37.78
>>38
ネタの質問だな。ググれば数秒で解決。
0041デフォルトの名無しさん2013/11/23(土) 07:15:02.62
>>40
ネタなつもりは全くなくて、
ググっても分からないので聞いているんですが・・・
WMIのShadowCopyなどを使えば何となく出来る気がするんですが、
実際に名前やタイムスタンプを取得する方法を、
コード上でどう記述すればいいのか未だに分かりません。
数秒で解決出来たなら教えて頂いても宜しいでしょうか。
004228=30=332013/11/23(土) 08:08:36.43
>>39
あのスレとこっちじゃタイトルが似てるだけで中身が別物だからなぁ…
Part32がほぼ同時に二つたって、
こっちよりの前スレが1000まで行って、向こうは未だ100も行ってないっていう現実が
あの糞テンプレが如何に嫌われてたかを如実に表してる。

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

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

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

こっちとしても関わらずに済むので
スレのコンセプトが根本的に違うと言うことを理解して
テンプレ君には向こうで勝手に活動してもらえたらありがたいと思う。
0043デフォルトの名無しさん2013/11/23(土) 08:24:31.36
>>42
避難スレかよw
0044402013/11/23(土) 08:26:50.63
>>41
続きはこのスレでやりましょう。

Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151995/
0045デフォルトの名無しさん2013/11/23(土) 09:01:59.71
>>44
そちらのスレに行ったら普通の状態のフォルダやファイルの取得方法と勘違いされている方がおられました。
その辺の方法は流石に聞くのは失礼な部類に含まれると思っています。
私が知りたかったのは>>38でも記述した「以前のバージョン」、つまりシャドウコピー内のファイルやフォルダの情報です。
向こうのスレではその後にVB6で出来る様な事はスレ違いであるとの指摘が有ったので、
引き続きこちらでお世話になりたいと思います。
0046デフォルトの名無しさん2013/11/23(土) 09:17:57.33
>>45
アンチテンプレ厨の自演ネタ質問なので降りるわ。
0047デフォルトの名無しさん2013/11/23(土) 09:36:55.54
降りるも何も初めから舞台に上がっていないでしょ
挙句に見当違いのFSO持ち出したりしてみっともないったらありゃしない
答えられないなら下手な言い訳せずに黙って消えればいいのに
0048デフォルトの名無しさん2013/11/23(土) 09:43:33.38
>>45
何の為に必要なの?
0049デフォルトの名無しさん2013/11/23(土) 09:43:54.19
>>45
何の為に必要なの?
0050デフォルトの名無しさん2013/11/23(土) 10:32:05.39
>>49
サーバ上のフォルダやファイルの更新履歴を欲しいと思っています。
最初はサーバ上のフォルダやファイルを定期的に巡回し、その情報を取得してDBに登録する方法を考えていましたが、
膨大な数があるため、1巡するだけでも12時間以上掛かってしまいます。
それで指定されたファイルやフォルダの情報をシャドウコピー側から
取得出来ればいいなと思い聞いてみました。
0051デフォルトの名無しさん2013/11/23(土) 10:49:48.08
>>50
自演乙
0052デフォルトの名無しさん2013/11/23(土) 10:59:33.23
>>51
痛々し過ぎて見てられない
■ このスレッドは過去ログ倉庫に格納されています