トップページtech
1002コメント402KB

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

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

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

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

コードが嫌な人・作成依頼が嫌な人は別スレ建ててください。

※前スレ
Excel VBA 質問スレ Part37 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1420841190/
0263デフォルトの名無しさん2015/10/04(日) 23:20:01.96ID:oDZ+VI3p
ログイン先に問題があるじゃね
02642602015/10/05(月) 01:19:20.52ID:PnYDCBrn
>>261
win8.1では動いてます。
>>262
まじですか!自分のはwin8.1→10のノートパソコンですが駄目でした。
いまwin8.1に戻してしまったので、エラーコードかめんどくさがらずに書くべきでした。
すいません。原因不明のエラーと表示されていたきがします。
>>263
ログイン先に行く前の段階でエラーがでます。
Set objIE = CreateObject("InternetExplorer.application") ここでエラーになります。
0265デフォルトの名無しさん2015/10/05(月) 07:42:00.17ID:7DDjvrpa
ほんと、エラーが起きたってだけでそのメッセージが何かを書かない奴の多いこと多いこと
何考えてんだか
0266デフォルトの名無しさん2015/10/05(月) 08:43:26.84ID:1C0sZUC/
>>260
259です。
レスありがとう。

後の書き込みも含めて参考にします。
0267デフォルトの名無しさん2015/10/05(月) 13:56:42.70ID:CB+0+6Bh
>>264
一応聞くけど・・・
IEを手動で起動できるかためしてみました?
0268デフォルトの名無しさん2015/10/05(月) 14:42:30.01ID:PnYDCBrn
>>267
はい、ためしました。
ほかの証券会社のツールもIEからの起動が必要でそれは、ちゃんと動きました。

起動したIEの横にはみなれない黄色いニコちゃんマークがついていてそれをクリックすると、マイクロソフトに意見を送るみたいなものがでてきました。
0269デフォルトの名無しさん2015/10/06(火) 03:08:54.29ID:s30vzD+y
Worksheet_Calculateのイベント発生時に処理Aを行わせています。
Worksheet_Calculateのイベントが1分間発生しなかった時に処理Bを行わせたいのです。
それを実現する方法が浮かびません。どなたか教えて下さい。
Win7(64)+Excel2010です。
0270デフォルトの名無しさん2015/10/06(火) 03:41:02.57ID:RhU5oO7C
>>269
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv214.html#8-1
0271デフォルトの名無しさん2015/10/06(火) 13:27:42.67ID:s30vzD+y
>>270
ありがとうございます。
ただもう少し詳しく教えて下さい。

Worksheet_Calculateの終了直前時刻をDate型変数に格納、
時刻を格納後に(Worksheet_Calculate内で)タイマーをセットするということですか?

1分以内にWorksheet_Calculateが開始された場合、タイマーを解除しなければなりませんが、
そのようなことはできるのでしょうか?
0272デフォルトの名無しさん2015/10/06(火) 14:00:40.81ID:hiQs0jh9
>>271
そういうのはフラグで管理する
1分のタイマーでフラグを立てる
メインはフラグを見て、立ってたら実行する、立ってなかったら実行しない
0273デフォルトの名無しさん2015/10/06(火) 14:11:14.62ID:hXnC6CWE
>>271
丁寧に聞いてるのはいいとしても、なんでも相手に聞いて、
自分で考えなくて済むっていうのは、相手に対して失礼ですよ。
どうすればいいのか、そのヒントをもらってるんだから、
方法に疑問が待ててるのなら、まずそれを試すべきではないですか?
0274デフォルトの名無しさん2015/10/06(火) 14:53:30.20ID:8pBv5L1n
>>271
> 1分以内にWorksheet_Calculateが開始された場合、タイマーを解除しなければなりませんが、
> そのようなことはできるのでしょうか?
できる。
できるが、解除には起動したときの情報が必要。

Private Sub Worksheet_Calculate()
  'タイマー起動済みなら解除する
  If Len(executeAt) > 0 Then
    Application.OnTime executeAt, "foo", , False
  End If

  'なにか処理する

  executeAt = Now() + TimeValue("00:00:05")
  Application.OnTime executeAt, "foo"
End Sub

'module1.bas
Public executeAt As String

Public Sub foo()
  executeAt = ""

  'なにか処理する
End Sub
0275デフォルトの名無しさん2015/10/06(火) 16:53:57.77ID:s30vzD+y
>>272
最後にWorksheet_Calculateを実行した時刻を記憶し
そこから1分以内にWorksheet_Calculateが実行されたフラグ=Falseにして、
フラグ=falseならプロシージャを実行しないということですか。
なるほどありがとうございました。

>>273
今エクセルできる環境でないのと、理解力が足りてないので好意に甘えてしまってます。
申し訳ありません。知恵をつけて頑張ります。

>>274
解除できるんですね。
あまり見かけない情報なのでとても参考になります。
ありがとうございました。
0276デフォルトの名無しさん2015/10/06(火) 17:22:28.83ID:8pBv5L1n
>>275
> 解除できるんですね。
> あまり見かけない情報なのでとても参考になります。
俺も今回ググって知ったからね。
「Application.OnTime 解除」でググったら、ここで聞くまでもなく解決したかもね。
0277デフォルトの名無しさん2015/10/10(土) 03:55:34.16ID:uc7CQwkx
昨日からVBAの学習を始めた者です。

<質問内容>
リストボックスにsheet2のA1:A13に入力されている内容を一覧表示したいのですが、何故かsheet1のA1:A13の内容が表示されてしまいます。
どの様な原因が考えられるでしょうか。お手数ですがご教授願いますm(__)m
(シートは「sheet1」、「sheet2」、「sheet3」があります)

<環境>
Windows7 home premium(64bit)+Excel2007

<作成手順>
1.「挿入>ユーザフォーム」からユーザーフォームを作成
2.「ツールボックス>リストボックス」からリストボックスを作成
3.作成したユーザーフォームを選択した状態でコードを表示し、以下のコードを入力

Option Explicit

Private Sub UserForm_Initialize()
Dim objsheet As Worksheet
Set objsheet = ThisWorkbook.Worksheets(3)

ListBox1.RowSource = objsheet.Range("a1:a13").Address
ListBox1.MultiSelect = fmMultiSelectExtended

End Sub

4.上記コードを標準モジュール(Module1)から以下の様に呼び出し実行
Sub Test()
ユーザーフォーム.Show
End Sub
02782772015/10/10(土) 04:07:02.62ID:uc7CQwkx
申し訳御座いません。作成手順の内容に一箇所誤記がございました。

誤: Set objsheet = ThisWorkbook.Worksheets(3)
正: Set objsheet = ThisWorkbook.Worksheets(2)

正しくは上記の通りです。


Worksheetsをインデックス指定、シート名指定とそれぞれ数パターン試してみたのですが
("sheet2")、("sheet3")や(2)、(3)の場合でも、sheet1のA1:A13の内容が表示されてしまいます。


以上
0279デフォルトの名無しさん2015/10/10(土) 05:55:55.11ID:C+B5gV9T
RowSource = "Sheet2!A1:A13"

俺は、
.ListBox1.AddItem.Cells(i,0) = Objsheet.Cells(i,1)
を薦めるけど
0280デフォルトの名無しさん2015/10/10(土) 09:13:52.25ID:PLSIx7MG
>>278
objsheet.Range("a1:a13").Address(1,1,1,1)

それか

Dim L(12) As String
Dim i As Long
Dim c As Range

With Worksheets("Sheet2")
Set c = Range(.Cells(1, 1), .Cells(1, 13))
End With

For Each x In c
ReDim Preserve L(i)
L(i) = x
i = i + 1
Next

ListBox1.List = L
0281デフォルトの名無しさん2015/10/10(土) 09:45:53.50ID:LK1jtOCB
>>280
最初にLを L(12) と宣言してるのに
わざわざループの中で毎回Redimする意味が分からない
あと x だけ宣言してない意味も分からない
0282デフォルトの名無しさん2015/10/10(土) 09:51:36.43ID:PLSIx7MG
>>281
ああ、ごめん。それはいつものクセだ。これだとエラー出るな。
仕事でやる時は要素数固定な方が稀なんで忘れてた。

ちなみにVariant型は宣言しない方が処理が早いんだよ。
0283デフォルトの名無しさん2015/10/10(土) 10:13:17.20ID:C9mCx++X
Address(1,1,1,1)なんて使い方初めて見た
確かに早いかもしれないけど、変数宣言してないほうが違和感凄い
277のコードはOption Explicit付いてるからそのままだと動かないね
0284デフォルトの名無しさん2015/10/10(土) 10:18:44.34ID:LK1jtOCB
>>282
俺も静的な配列の宣言ってやらないけど、
対象の要素数が不定であっても、
ループ前に確定してるならループに入る前にRedimしとくな
ループ内でRedimするのは
その時々で配列に入れるかどうかを判定してるときだけだね

あと、大して変わるとも思わんけど速くしたいなら
x もRange型で宣言するほうがいいんじゃないの?
0285デフォルトの名無しさん2015/10/10(土) 10:29:02.02ID:PLSIx7MG
>>284
Range型からRange型への代入よりRange型からVariant型への代入の方が早い。
たぶんRange→Variantだと丸ごとのmemcpyだけどRange→Rangeは要素毎にmemcpyしてるんだと思う。




っていうか他人のコードにいちゃもんつけてる暇あったら自分で書いて欲しい。
別に俺が皆様の為にコード書くスレじゃ無いし、いちいち指摘される意味が分からん。
0286デフォルトの名無しさん2015/10/10(土) 10:36:42.22ID:LK1jtOCB
>>285
>Range型からRange型への代入よりRange型からVariant型への代入の方が早い

へー、そうなんだ
Variantは遅いって固定観念があったんで試したこと無いから知らんかった
勉強になったよ、有難う
ちなみに、「早い」じゃなくて「速い」だよね

あと、あなた個人にいちゃもんつけてる積もりも無いんだよね
単純にコードの動作やなんかに疑問があっただけだから
人格攻撃とかではないことは分かってほしい
0287デフォルトの名無しさん2015/10/10(土) 10:47:25.91ID:bWA1pvcm
>>286
多分、人格どうのではなくて
「ウダウダ抜かすならテメーが書けよ糞が」
って言いたかったんじゃないかな
0288デフォルトの名無しさん2015/10/10(土) 11:07:48.09ID:LK1jtOCB
>>287
だからさ、そういうのが理解できないんだよ
コード自体大枠で問題ないから部分的に気になるところを指摘しただけで
お前が書けっていわれてもそんなに違ったもんにはならないよ

仮に書いてもこんな感じ
Dim L As String
Dim i As Long
Dim c As Range
Dim x As Range

With Worksheets("Sheet2")
 Set c = Range(.Cells(1, 1), .Cells(1, 13))
End With
ReDim L(12)
i = 0
For Each x In c
 L(i) = x
 i = i + 1
Next x

ListBox1.List = L

指摘以外で変えたのは i に初期値を入れてるのと、Next に添え字をつけたことぐらいかな
(あくまで個人的好みの問題なんであえて指摘では書かなかった)
あと、x をRangeで宣言してるのはあの時点ではVariantよりも速いと思っていたから
あるいは要素数決まってるんだしFor Next使うってのも有りかも知んない
0289デフォルトの名無しさん2015/10/10(土) 11:10:24.79ID:LK1jtOCB
>>288
あ、
Dim L() As String
だった
Variantならカッコ不要だけど、ほかはカッコつけて宣言しとかないと駄目だね
0290デフォルトの名無しさん2015/10/10(土) 11:40:09.15ID:PLSIx7MG
>>288
・知ったかぶるだけでコード書けないヤツが排除できる。
・余計な事を喋らなくて済むので好みの違いで水掛け論にならない。
・重複しても全部出した方が初心者でも比較しやすい。
・他人に改訂を強制出来る権利なんてないんだから改訂が必要だと思うなら自分ですべき。

理由としてはこんなもんじゃないかな。他人のコードに口を出すなら全部自分の流儀で1から書けよ、と。


>>277
Listbox1.List = Worksheets("Sheet2").Range("A1:A13").Value

という方法があった事を忘れていた。
0291デフォルトの名無しさん2015/10/10(土) 12:39:23.58ID:hKmSBUx+
頼まれてもいないのに人のコードをレビューして指摘を上げるのはトラブルの元だぜ
俺もリアルで人を怒らせてしまった経験あるぜ
やっぱり上司やレビュー会等、己がレビューを期待されている立場の時にやるべきだぜ
人のコードを見ると脊椎反射でレビューしてしまう癖のある人は気をつけようぜ


ところで、>>277の現象説明については、
Addressプロパティがシート名を含まないセル座標を返してくる仕様のため
その時点のActiveシートのセルが参照されてしまうってことでいいのかな

んー、過去にAddressプロパティを使って組んだシステムがあった気がする
恐いから週明けに確認しとこう
横からだけど参考になった
0292デフォルトの名無しさん2015/10/10(土) 13:27:44.59ID:LK1jtOCB
>>291
ここはそういうことするスレだと思ってる
ただ、指摘内容は個人的信条に掛かる部分は避けるけれど

変数の型宣言とか、ループ内で不要な処理は出来るだけ外に出すとかは
割合普遍的な内容だよね?

仮に俺がそれやってて誰かに言われても全然気にならないと言うか、
むしろ感謝するんで、まるで悪い事とは思ってない
多分、怒る人ってのは自分自身に対するプライドが無い人なんだと思う

もちろん、こんなのネットだから気軽に言えるんであって
リアルでそんな人に出くわしたら
係わり合いになるのを極力避けるだろうけどさ
0293デフォルトの名無しさん2015/10/10(土) 18:34:58.23ID:BWs8hoM+
>Variantは遅いって固定観念があったんで試したこと無いから知らんかった
VBA自体が遅いからVariantでも相対的に速く見えるんだよね
rangeオブジェクト直接使うより一旦variantに代入して配列として処理した方が速いし
ただフィルタとかの組み込みAPIはめちゃ速いから下手にforで回したりせず積極的に使って行きたい
0294デフォルトの名無しさん2015/10/10(土) 18:48:19.64ID:e9OvRw0M
>>292
ここは質問スレなんだけど
そういう基本的な事すら勘違いしてる人程、頼まれもしないのに他人に指摘をしたがる。
しかも勘違いしやすい人だから指摘の内容も間違っていたり偏っていたりする。
やはり、頼まれもしないのに自分勝手な指摘などするべきではないし
された方も、それを鵜呑みにすべきではない。
0295デフォルトの名無しさん2015/10/10(土) 19:55:36.82ID:LK1jtOCB
>>294

だからさ、別に>>280に書かれた「コード」について思うところを述べたのであって
>>280さん「個人」に対して指摘したわけじゃないのよ
言ってみれば俺のレスだって>>277さんやほかの人たち宛といってもいい
それを勘違いされちゃうとそれこそ基本的なこのスレの趣旨から外れちゃうと思うんだよね

指摘の内容が間違っているかどうかはこの際関係ないというか、
たとえケアレスミスであったにせよ>>280のコードも間違いであったわけで
そんなこと言い出したら誰もここに書き込めないよ
読んで間違ってると思ったら誰でも自由に書き込めば良いだけじゃん

所詮は2chの書き込みなわけで、それをただ鵜呑みにするなんて真似は
誰が書いたもんだろうとすべきではないのも同じことだしね
0296デフォルトの名無しさん2015/10/10(土) 20:15:44.13ID:PLSIx7MG
いや、だからコードに対して何か指摘したい事があるなら、
指摘する代わりに訂正したコードをレスすれば問題ないだろ。

コードは鵜呑みにしても正しいかどうかは結果が語ってくれるし。
0297デフォルトの名無しさん2015/10/10(土) 20:21:28.17ID:S77+iWrc
goto 命令で他のブックに記述されたプロシージャの GoTo 定義へ飛ばす事は出来ないのでしょうか?

-book1-
GoTo endbook2

-book2-
endbook2:
0298デフォルトの名無しさん2015/10/10(土) 20:27:19.33ID:PLSIx7MG
>>297
プロシージャ間でのGotoは出来ないはず。
0299デフォルトの名無しさん2015/10/10(土) 20:28:45.42ID:e9OvRw0M
>>295
> そんなこと言い出したら誰もここに書き込めないよ
> 読んで間違ってると思ったら誰でも自由に書き込めば良いだけじゃん
良くはないぞ。誰でも自由に書込めるのはその通りだが
スレにはスレの主旨というものがある。

特にここは質問スレだから、質問者は自分に対するレスを鵜呑みにしやすし
常駐してる訳ではないから、たとえその指摘が間違いだった事が分かっても
質問者はその経緯を見ていない事が多い。

しかも、質問の本筋と関係ない指摘によって質問者を余計に混乱させたり
スレが荒れる原因にもなる。今もそういう状態だと言っていいだろう。

結論としてはやはり、質問と関係ない指摘はすべきではない。
0300デフォルトの名無しさん2015/10/10(土) 21:29:45.80ID:LK1jtOCB
>>296
そこはまぁ、コード書くほどのことかどうかって話だよね
実際これまでもコード書かずにグダグダ言うだけの人はいたから
あなたの主張も分からんではないし、
だからこそおれも一応>>288にコード書いたんだけど
あれって結局書くほどのことも無いもんだったでしょ?
あの程度の違いだったら別に書く必要ないと思うわけですよ

それでもどうしてもコードだけしか認めないってのは
ちょっと狭量すぎるというか
絶対にコードは書かない人ってたちと逆の意味でやっぱり問題あると思うな

>>299
質問スレの主旨って質問者に対して直接安価つけた回答以外は
回答として認めないわけ?

俺は質問者に対してだけじゃなく、
それを傍から見てるほかの人たちに対するものでも別に問題ないし
そちらこそがむしろ本筋だとすら思ってる

実際、俺だってこのスレで自分では質問してなくても
いろいろ参考になる意見を読ませてもらって感謝してるもの
03012772015/10/10(土) 21:43:42.05ID:uc7CQwkx
なるほど!!

Addressプロパティはシート名を含まないセル座標を返す仕様なんですね。
Range.Address プロパティのリファレンスを見ただけではそこまで気付けませんでした。


まずは、以下の方法で試してみようと思いますが処理速度を考慮した
様々な記述方法をご紹介頂いたので今後の参考にしたいと思います。
(速いに越したこと無いですからね)

・Listbox1.List = Worksheets("Sheet2").Range("A1:A13").Value
・.ListBox1.AddItem.Cells(i,0) = Objsheet.Cells(i,1)
・objsheet.Range("a1:a13").Address(1,1,1,1)
・RowSource = "Sheet2!A1:A13"


ご回答下さった皆さん、本当に有難うございましたm(__)m
0302デフォルトの名無しさん2015/10/10(土) 22:01:39.36ID:e9OvRw0M
>>300
なるほど、お前はこのスレの本筋は
質問自体ではなく、常駐してる人同士の情報交換にある
と思っている訳だな。

ところで、お前が問題があると思っている
絶対にコードは書かないって人たち
も同じように、安易にコードを出して結論だけを示すのではなく
質問者に理屈を理解してもらう事がこのスレの本筋だと思っているのだろうな。

お前と同じだ。
どちらもそれなりに自分の信条はあるのだろうが
決してそれが唯一解ではない。

ただし
絶対にコードを出す事を厭う事
質問と関係ない指摘をする事
どちらも同じように、スレが荒れる原因になってる事も理解してくれ。
0303デフォルトの名無しさん2015/10/10(土) 22:05:31.62ID:LK1jtOCB
>>301
悪気は無いんですが結果的にスレを読みにくくしちゃってごめんなさいね

ただ、処理速度もさることながら
コード内でリスト内容に修正を加える必要が出た場合など、
後々の使い勝手も考慮するのがより望ましいかもしれません

その点で言うと、RowSourceでは後からの変更がやりにくいので
ListやAddItemを用いるほうが柔軟に対応しやすいようですよ

というようなことがこの辺に書いてありました
http://officetanaka.net/excel/vba/tips/tips139.htm

ご参考まで
0304デフォルトの名無しさん2015/10/10(土) 22:10:56.42ID:LK1jtOCB
>>302
>決してそれが唯一解ではない。

そう、だから俺はコードを書かない人も排斥しないし、
スレチだ何だといって質問者を追い返す人たちに対してですら
別スレに行けばと提案はするけれど拒絶はしない

実のところ俺はこのスレの>>1なんだけど
前スレの>>1にあった束縛云々という文言を抜いたのは
そういう思いも込めてのことなんだよね
0305デフォルトの名無しさん2015/10/10(土) 22:40:02.38ID:PLSIx7MG
>>300
コピペして動くコードが貼られていれば便利だろ。
だからどんだけ些細な修正であれコードは貼ってくれ。

その上で問題の指摘なりなんなりごちゃごちゃ言うのは俺は構わない。
0306デフォルトの名無しさん2015/10/10(土) 22:47:28.14ID:LK1jtOCB
>>305

いや、その辺のさじ加減は書き手側に任せようよ

>>288も質問者やその他の人達に対して必要だとは思わないけど
>>287氏(に代表される「コード書かない人を許さない人達」)に対しては
必要な事だと思ったから書いたまでのこと
これからも必要があると判断すれば書くしそうじゃなきゃ書かない
0307デフォルトの名無しさん2015/10/10(土) 23:22:07.02ID:PLSIx7MG
次のスレには「指摘する時は同等の機能を持ったコードを必ず添えろ」という趣旨のテンプレが欲しいなぁ。
0308デフォルトの名無しさん2015/10/10(土) 23:34:41.84ID:LK1jtOCB
>>307
だからさぁ、そういうのって結局別スレの人達と同類じゃん
自分と異なる考え方だからといって
頭ごなしに拒絶するのは極力避けるべきだと思うよ
0309デフォルトの名無しさん2015/10/11(日) 06:49:55.78ID:v4cWO+Xb
ブックAのVBAでブックBを開いてあるものとする
その後、操作者がブックBを閉じたことを検出して
ブックAの特定のプロシージャを実行したいのだが、どうすればよいか
他ブックが閉じられたというイベントは存在しないようなので困っている
0310デフォルトの名無しさん2015/10/11(日) 07:01:13.52ID:/glPH0Mb
ブックBのBeforeCloseでブックAのプロシージャを動かすか、
ブックBをユーザーに操作させないかのどっちかくらいしかないんじゃないか。
0311デフォルトの名無しさん2015/10/11(日) 07:17:12.35ID:dc8fNJEd
ブックAの方でタイマーを仕掛けて、1秒間隔でブックBの存在を確認するとか
0312デフォルトの名無しさん2015/10/11(日) 19:27:33.17ID:fLjk4aVM
>>309
やりたい事が
他ブックの BeforeCloseイベント処理 であるなら可能

一応サンプル
★AppSetプロシージャを一度実行してやる必要がある★

[ThisWorkbookモジュール]へ
Option Explicit

Private WithEvents APP As Application

Private Sub APP_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
  MsgBox Wb.Name & "がCLOSE"
End Sub

Sub AppSet()
  Set APP = Application
End Sub
0313デフォルトの名無しさん2015/10/11(日) 20:49:24.97ID:K+nxBSBI
>>309,312
Workbooks.Openは開いたブックへの参照を返すから、WithEvents付き変数で受ければそれでイベントハンドリングできる


Dim WithEvents b As Workbook

Sub 開く処理()
Set b = Workbooks.Open("c:\book1.xlsx")
End Sub

Private Sub b_BeforeClose(Cancel As Boolean)
If MsgBox("close?", vbYesNo) <> vbYes Then
Cancel = True
End If
End Sub
03143092015/10/11(日) 20:56:35.89ID:v4cWO+Xb
みなさんありがと
手動で保存されたブックBのデータを読み込んで
自動処理を走らせるので、BeforeCloseイベントではダメなんだ
>>311のやり方を検討してみる
0315デフォルトの名無しさん2015/10/12(月) 22:27:56.55ID:Ur21F95J
>>309
ブックBを閉じたことを検出するボタンを作ったほうがシンプルだと
思うのだが
0316デフォルトの名無しさん2015/10/13(火) 03:20:04.77ID:BftcgOPm
だったらブックBを読み込みボタンで良い気がするんだが
0317デフォルトの名無しさん2015/10/13(火) 10:16:15.75ID:v0mnZW8d
>>316
両方つけときゃいいでないの>w
0318デフォルトの名無しさん2015/10/13(火) 10:27:59.85ID:jBFoqp2r
>>302
> 質問と関係ない指摘をする事
> どちらも同じように、スレが荒れる原因になってる事も理解してくれ。

指摘を受けた人が暴れなければすむ話なんだけどね。
一方、指摘そのものは、受けた人のみならず第三者にも利益になることが多々ある。
なので、今後もみんなどんどん指摘して欲しい。
0319デフォルトの名無しさん2015/10/13(火) 10:29:37.14ID:jBFoqp2r
>>305
> コピペして動くコードが貼られていれば便利だろ。
> だからどんだけ些細な修正であれコードは貼ってくれ。

受け取る側がそれを強制しちゃうの?
問題解決になるキモがわかる断片的なコードで十分な場合も多いでしょ。
0320デフォルトの名無しさん2015/10/13(火) 14:59:16.74ID:v0mnZW8d
>>318
なるほど、318はどんどん指摘してほしいそうなので
みんなよろしくな!
0321デフォルトの名無しさん2015/10/13(火) 15:51:17.66ID:jBFoqp2r
自分のコードに何か言われるのが嫌なら、コード上げなきゃいいよね
0322デフォルトの名無しさん2015/10/13(火) 17:22:52.96ID:vdpuTcbV
気に入らないならこのスレ見なきゃいい
自分の思い通りにするのは無理と早く悟ってくれないかなあ
0323デフォルトの名無しさん2015/10/13(火) 20:10:10.75ID:6nIGFdyo
事の発端が「自分のコードのミスを指摘された事に文句を言った」という構図では無いのに誰と戦ってるんだ
0324デフォルトの名無しさん2015/10/14(水) 10:09:25.38ID:H3NHgayM
>>323
自分のコード: >>280
のミスを指摘された: >>281
事に文句を言った(人のコードにいちゃもんつけるな): >>285=>>280

というのが事の発端じゃないの?
0325デフォルトの名無しさん2015/10/14(水) 15:50:25.41ID:AS+yqKLJ
ブックのサイズが増えるとマクロに時間がかかってしまうことってありますか?
0326デフォルトの名無しさん2015/10/14(水) 16:51:03.01ID:btG23wVT
>>325
絶対条件ではないが、可能性はゼロではない
とくにシートにアクセスして書き換えや再計算が発生すると規模に応じた時間が掛かる場合
0327デフォルトの名無しさん2015/10/14(水) 18:26:49.84ID:AS+yqKLJ
そうなんですか
ただセルにデータが増えただけではマクロに影響はないですか?
0328デフォルトの名無しさん2015/10/14(水) 18:31:11.58ID:H3NHgayM
>>327
多分影響ないけど、心配なら実測したら?
0329デフォルトの名無しさん2015/10/14(水) 20:32:26.17ID:KtGF3f0I
マクロとデータが具体的にどういうものかが分かってないと「あり得る」以外言えないだろ。

めちゃくちゃ複雑な関数が1000*1000セルにびっしり詰まっててネックになってるかもしれないし、
マクロがシート上の情報によって処理時間を左右される類いのものかもしれないし。
0330デフォルトの名無しさん2015/10/14(水) 20:36:33.73ID:AS+yqKLJ
似たようなマクロ2つの処理時間がかなり違ったのでブックのサイズが増えたことが原因なのかと
思ったのですが違うみたいですね。どうもありがとうございました。
0331デフォルトの名無しさん2015/10/14(水) 20:46:42.90ID:KAxvZKuP
>>329
そりゃ処理するデータ量増えたら遅くなるのはあたりまえだろ w
普通に考えてマクロの処理は変わらない前提の質問だと思うぞ
0332デフォルトの名無しさん2015/10/15(木) 12:58:50.64ID:BCBs43Sq
>>325
>>331
Excelの作りを知っているわけではないから
マクロに影響がどう出るかはわからないよ。
データの量によってどう影響するかは、
どれくらいのデータ量を想定しているか325が考えて試すしかないよ。
0333デフォルトの名無しさん2015/10/15(木) 13:45:15.66ID:mYfmOhz6
>>332
お前はもうこのスレでレスするな
迷惑
0334デフォルトの名無しさん2015/10/15(木) 14:14:38.75ID:vaiTvozu
>>333
>>332はわりとまともな事言ってると思うけど?
そうやって貴方のように個人的主観で仕切ろうとする人のほうが
どっちかってーと迷惑に感じる
0335デフォルトの名無しさん2015/10/15(木) 14:28:16.56ID:aU04CjvL
質問させてくださいm(_ _)m

A列のセルに貼られた画像(1セルに1画像)の名前を
B列に書き出すには、どのようにするのが宜しいでしょうか?

かなりの行があります・・・
0336デフォルトの名無しさん2015/10/15(木) 15:00:20.15ID:VWNdFEFl
君の説明だけでは不可能
0337デフォルトの名無しさん2015/10/15(木) 15:01:14.19ID:mYfmOhz6
>>334
>>332
> Excelの作りを知っているわけではないから
> マクロに影響がどう出るかはわからないよ。
お前が知らない、わからないなんて知ったこっちゃない
いちいち報告するな

> データの量によってどう影響するかは、
> どれくらいのデータ量を想定しているか325が考えて試すしかないよ。
何人も同じ事言ってる
スレ読んでからレスしろ

って説明しなきゃわからんのか
0338デフォルトの名無しさん2015/10/15(木) 16:23:42.66ID:vaiTvozu
>>337
説明が間違ってるので分かり様が無い

まず
> Excelの作りを知っているわけではないから
> マクロに影響がどう出るかはわからないよ。

に関しては>>332個人が分る分らないではなく
本人 (または現物を見ている人間)以外には分らない
と言う一般的な意味だろうから
お前が云々という批判自体が的外れ

次に
>何人も同じ事言ってる
>スレ読んでからレスしろ
については
もしも複数人が同じ事を言ってはいけないのならば
二人目以降は全員同様の批判を受けねばならない
ちなみに、>>325自身に測定せよとアドバイスしてるのは
俺のみる限り>>328しか居ないように見える
つまり、何人も は言っていない
そしてその内容も若干違っているので
>>332が批判されるほどの理由とは思えない


そのうえで、それらの問題点を抜きにしたところで
君自身が他者の書き込みについて排除できる根拠にはなりえない
0339デフォルトの名無しさん2015/10/15(木) 16:35:33.53ID:BCBs43Sq
>>333
すまないねー迷惑だったかw
今後も自由に書きこみさせてもらうよー
0340デフォルトの名無しさん2015/10/15(木) 16:37:13.51ID:mYfmOhz6
>>338
> > Excelの作りを知っているわけではないから
> > マクロに影響がどう出るかはわからないよ。
>
> に関しては>>332個人が分る分らないではなく
> 本人 (または現物を見ている人間)以外には分らない
> と言う一般的な意味だろうから
> お前が云々という批判自体が的外れ
は?何言ってんの?
Excelの作りを知っている奴もいるかもしれないし、マクロに影響が出るかわかってる奴もいるかもしれないだろ
なんで「一般論」になるのか理解不能


> つまり、何人も は言っていない
何人もが言ってるのは

> データの量によってどう影響するかは
の方だ。つまりそれもわからんって言ってるに過ぎない

> 君自身が他者の書き込みについて排除できる根拠にはなりえない
自己矛盾もはなはだしいね
だったら俺に絡むな
0341デフォルトの名無しさん2015/10/15(木) 16:48:19.96ID:BCBs43Sq
まぁ敢えて言うならば、
331は質問の趣旨に答え切れてない気もするけどね。
聞かれているのは、
ブックの容量とマクロの実行速度に関する相関関係だし・・・。
0342デフォルトの名無しさん2015/10/15(木) 16:52:32.40ID:mYfmOhz6
>>341
まあ質問そのものが曖昧だったしな

俺は「同じマクロで同じ計算量の場合に、それ以外の要素でブックが肥大化したときに
そのマクロの実行時間に影響を及ぼすのか」という疑問なんじゃないかと思ったが

まあどっちにしても、気になるなら実測しろで終わりだな
0343デフォルトの名無しさん2015/10/15(木) 17:23:30.43ID:vaiTvozu
>>340
> 君自身が他者の書き込みについて排除できる根拠にはなりえない
自己矛盾もはなはだしいね
だったら俺に絡むな

俺は排除していないよ
自分にとって参考にならない意見は書き込むなと主張する人と
その人に批判された人ならば
どちらかと言えば前者(つまり貴方)の方が迷惑だ
と評しただけで
だから書き込むなと言った覚えは無い
0344デフォルトの名無しさん2015/10/15(木) 17:29:09.66ID:mYfmOhz6
>>343
「書き込むな」とは書いてないから俺を排除しようとしてるわけではないって言いたいのか

おめでてーな
0345デフォルトの名無しさん2015/10/15(木) 17:43:45.52ID:vaiTvozu
>>344
おめでてーかどうかはともかく
書いてない以上、そんなことを言われてもどうにもなんない

勝手に深読みしといて相手のせいにするってそれこそおめでてー人だ
0346デフォルトの名無しさん2015/10/15(木) 17:48:12.67ID:mYfmOhz6
>>345
お前、現実世界で誰かにナチュラルにハラスメントとかしてるんじゃねーの?
気をつけろよ
0347デフォルトの名無しさん2015/10/15(木) 17:51:49.74ID:vaiTvozu
>>346
自己矛盾してますねw
0348デフォルトの名無しさん2015/10/15(木) 17:53:36.22ID:BCBs43Sq
>>335
Excelのバージョンとかも書かないと無理よ。
俺の持っている2013では画像の名前は取れなかった。

以前ファイルパス取る方法とか質問あったけど、取れるって回答は無かったよ
古いVerでは代替テキストにはいっているとか書かれていたので参考にどうぞ。
0349デフォルトの名無しさん2015/10/15(木) 17:54:04.36ID:mYfmOhz6
俺は明確な意思を持ってゴミレスをdisった
何の自己矛盾もないが

一方、
俺はお前が排除しようとしていると感じている
お前は排除してないと言う

これ、ハラスメントの構図
0350デフォルトの名無しさん2015/10/15(木) 17:55:53.84ID:mYfmOhz6
あー、ナチュラルにの意味がわからんかったのか?

意識せずに、だ
0351デフォルトの名無しさん2015/10/15(木) 17:58:56.03ID:BCBs43Sq
>>349
さらっとひどいこと書きますねw
明確な意志をもってゴミレスをdisりましたかw
悪意あるんですね!
0352デフォルトの名無しさん2015/10/15(木) 18:01:58.99ID:vaiTvozu
>>349
明確な意思の下であれば
御自身のハラスメント行為自体にはなんら痛痒を感じないのであれば
お気の毒ですが何も言いようが無いですね
おそらく価値観が根底から違っていようと思われます
0353デフォルトの名無しさん2015/10/15(木) 18:09:46.58ID:mYfmOhz6
別にお前の価値観なんぞ誰も気にしてないわ

自分の価値観にあわない奴は悪ですか
おめでてーな
0354デフォルトの名無しさん2015/10/15(木) 18:17:08.26ID:vaiTvozu
>>353
>明確な意思の下であれば自身のハラスメント行為に痛痒を感じない

問題はこの部分ですよ?
これが私個人の独自な価値観かどうか、貴方は判断できませんか?
まぁ、出来ないからこんな事やってるんでしょうけれど
貴方個人がどう思うかよりは我々のやり取りが第三者から見てどう思われるかを
客観的にご覧になることをオススメします
もちろん、その点では私の方も
かなりうざがられているであろう事は確かですけどw
0355デフォルトの名無しさん2015/10/15(木) 18:26:10.01ID:mYfmOhz6
要するに個人攻撃したくて、なおかつ自分を正義側に起きたいってことか

>>333のレスすることになんの痛痒も感じてないよ?
それが何か?
0356デフォルトの名無しさん2015/10/15(木) 18:29:10.14ID:vaiTvozu
>>335

>それが何か?

ですから、それなら何も言いようが無いですよ

客観視してその程度なら本当にお気の毒ですけれど
私がどう思おうが、あるいは他のスレ住人がどう感じようが
貴方の気にする事ではないので気にしないでください
0357デフォルトの名無しさん2015/10/15(木) 18:31:13.32ID:mYfmOhz6
2chでそんなこと言われてもねー

あってないんじゃないの?
0358デフォルトの名無しさん2015/10/15(木) 18:32:50.41ID:vaiTvozu
どうしても気になっちゃうみたいですね
2chあってないんじゃないですか?
0359デフォルトの名無しさん2015/10/15(木) 18:41:27.86ID:BCBs43Sq
>>357
>Excelの作りを知っている奴もいるかもしれないし、マクロに影響が出るかわかってる奴もいるかもしれないだろ
でもさー、これって「無い」よね?
0360デフォルトの名無しさん2015/10/15(木) 19:54:11.73ID:9cYvWnzz
ユーザーフォーム内のリストボックスで選択した値がテキストボックスに表示されるように連動したいのですが、どのようにしたらよいでしょうか。
いろいろな行を選択するたびにそのテキストボックス内の値も自動で変わるようにしたいです。
0361デフォルトの名無しさん2015/10/15(木) 20:03:18.88ID:tI6xpC1E
>>360
Private Sub ListBox1_Click()
With Me.ListBox1
If .ListIndex = -1 Then Exit Sub
Me.TextBox1.Value = .Value
End With
End Sub
0362デフォルトの名無しさん2015/10/15(木) 20:04:30.41ID:BCBs43Sq
Private Sub UserForm_Initialize()
Me.ListBox1.AddItem "あ"
Me.ListBox1.AddItem "い"
Me.ListBox1.AddItem "う"
Me.ListBox1.Selected(0) = True
End Sub
Private Sub ListBox1_Change()
Me.TextBox1.Value = Me.ListBox1.Value
End Sub

あげる!
■ このスレッドは過去ログ倉庫に格納されています