Excel VBA 質問スレ Part39 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/11/27(金) 20:36:45.35ID:9HV+ag/s___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人・作成依頼が嫌な人は別スレ建ててください。
※前スレ
Excel VBA 質問スレ Part38 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/
0191デフォルトの名無しさん
2015/12/30(水) 15:42:53.87ID:WC2i3iylSet objTest = Nothing
という解放処理をするべきかどうかの議論がときどきありますが、
そもそもメモリ使用に関してこのSet objTest = Nothingはなにをやっているのでしょうか?
これがはっきり分かっていないままで議論しても意味がないと思うのですが。
基本的にオブジェクト変数の場合でもプロシージャ内の変数はプロシージャを抜けると役目を終えたということで消えますが
その参照先であるオブジェクトの実体はメモリに残ったままですよね?
Javaのガベージコレクションの機能があるという話はこのVBAで聞いたことが無いので
もしその実体をSet objTest = Nothingで消せるということなら
いかなるオブジェクト変数を使ったあとは必ずSet objTest = Nothingを書くべき、というのが(もし上の仮定が正しい場合)わたしの見解なのですが。
0192183
2015/12/30(水) 15:47:44.59ID:WC2i3iyl>>184
>>185
それはinitializeという英単語が引数を2つとる動詞、つまり1つ目の引数は「実行する主体」、2つ目の引数が「初期化される物」でうまくいきますが
例えば引数を1つしか取らない英単語、例えばrunだとかdieだとかappearの場合どうしたらいいのですか?
0193デフォルトの名無しさん
2015/12/30(水) 15:50:40.47ID:WC2i3iylinitializeの場合は、うんこをひねり出すかのごとく
initiializeDataやinitializeCellのようにDataやCellをひねり出すことができましたが
先にも書いたrunやdieやappearなどのときはどうしますか?
0194185
2015/12/30(水) 16:18:23.99ID:0l8puLjU全部英文で考えれば "何を"の君のゆう所の 実行主体 が付けれると思うが
・・・をrun 何を実行?(runProcess)
・・・をdie 何を殺す(が死ぬ)? (dieProcess)
・・・をappear 何が出る?(appearBigin)
※英単語の訳等の間違いはスルーして下さいね
これ以上 君に付き合うつもりは無いので あしからず(年末なんで)
0195デフォルトの名無しさん
2015/12/30(水) 16:27:23.62ID:Y9esFwyMFirstTime とかのフラグかな
0196デフォルトの名無しさん
2015/12/30(水) 18:39:36.91ID:PBmz2gbUFor i = 1 は古いって言われても、
m(i) = m1(i) + m2(i)
をどう実装するんですか?
0197デフォルトの名無しさん
2015/12/30(水) 18:58:26.89ID:JPIixvGP別の処理を施したいなら、別のForEach文なり、Do文なりを利用すべき。
そもそもForEachはオブジェクト型を扱わない場合は処理が重いので必要が無い限り極力使わない方がいい。
別の処理なら別のループとして分けられるはず。変なこだわりを持っているせいでややこしい事になっているだけ。
0198デフォルトの名無しさん
2015/12/30(水) 19:05:08.95ID:yH9ydeBO0199デフォルトの名無しさん
2015/12/30(水) 20:02:26.27ID:bRclVw7x何回目の処理かをループ内で知ることの出来る機能を持ったものがある
VBAは残念ながらそれがないから、自分でカウンタ変数を用意するか
一個目のデータに特有の項目があるならそれを判定するか、だろうね
0200デフォルトの名無しさん
2015/12/30(水) 22:00:46.01ID:yDP/mW46最初の時だけ何らかの値を計算してとっておくということであれば
Dim val As Variant として、ループの中で
If IsEmpty(val) Then val = ...
とやればいい。
余計なフラグなしにできるl。
0201デフォルトの名無しさん
2015/12/30(水) 23:44:51.92ID:RDoNJfseで
マクロ"更新"の最後にまた上のコード
以前教えてもらった1時間毎にマクロを起動するコードですが
23時になると狂って連続で"更新"マクロを繰り返してしまいます
23時から0時へは跨げないということでしょうか? 対策をお願いします
0202デフォルトの名無しさん
2015/12/31(木) 00:00:57.74ID:yJLj8/Bn対策をお願いします(キリッ
上から目線だなオイ
0203デフォルトの名無しさん
2015/12/31(木) 00:47:01.17ID:2YFGdsnlDim user_list As Collection
Dim user As Collection
Set user_list = New Collection
Set user = New Collection
user.Add Key:="SEQ_NO", Item:=user_list.Count + 1
user.Add Key:="NAME", Item:="aaa"
user.Add Key:="PASSWORD", Item:="xxx"
user_list.Add user
Set user = New Collection
user.Add Key:="SEQ_NO", Item:=user_list.Count + 1
user.Add Key:="NAME", Item:="bbb"
user.Add Key:="PASSWORD", Item:="yyy"
user_list.Add user
Dim msg As String
For Each user In user_list
If user("SEQ_NO") <> 1 Then
msg = msg & ","
End If
msg = msg & user("NAME") & ":" & user("PASSWORD")
Next
MsgBox msg
0204デフォルトの名無しさん
2015/12/31(木) 06:18:32.30ID:EUZydMuqHourは、0〜23を返す。最後には、
23 + 1 = 24
これで値を見てみれば?
Debug.Print TimeSerial(24, 0, 0)
0205191
2015/12/31(木) 08:06:51.15ID:D5b/7JR8答は、For eachループに入る直前にその1回目の書きたかったコードを書けばいいだけでした。
0206186 (=191)
2015/12/31(木) 08:07:43.82ID:D5b/7JR80207デフォルトの名無しさん
2015/12/31(木) 08:13:13.18ID:xcpAmXWKひとつ目の値を使うんじゃないのか?それをどうやって取得するんだよ?
0208デフォルトの名無しさん
2015/12/31(木) 09:43:58.89ID:18DEmBMjもしかして「僕はVBAにとても詳しいんだ」ってプライドを崩されてへそ曲げたのか。
0209デフォルトの名無しさん
2015/12/31(木) 11:11:22.46ID:xcpAmXWKFor Each z in M 構文での z と、For i = 0 To 〜 での M(i) の違いとして、
z はM(i)のコピーでしかないという点がある。(Mが配列の場合)
M がジャグ配列で要素が再び大きな配列だったりしたら重い処理になりえるな。
それに、コピーだから z に何か代入しても M には反映されない。
For i = 1は古い、なんて決めつけてると(以下略
0210デフォルトの名無しさん
2015/12/31(木) 12:11:06.57ID:3FCNx6UT1.iやjの変数の宣言がされてないとエラーが出ます。
2.下記の記述をしていますが、自分が想定したのと違う動きになります。
For i = 1 To 9
For j = 1 To 9 - i
If IsNumeric("TextBox" & (2 * (i - 1) + 2 * j + 7)) = False Then
テキストボックスを順にチェックしていきたかったのですが
なにか記述方法が間違っているのでしょうか?
ご指導のほど、よろしくお願いたします。
0211デフォルトの名無しさん
2015/12/31(木) 12:21:48.92ID:e/tEw3yPもうその通りだろうね。稚拙すぎて笑える
0212デフォルトの名無しさん
2015/12/31(木) 14:10:55.55ID:KhBichDlこんなかんじで指定するんじゃなかったっけ
Controls("TextBox" & i).Value
0213デフォルトの名無しさん
2015/12/31(木) 15:23:07.54ID:18DEmBMjFor i = 1 to 9
For j = 1 to 9 - i
Next
Next
だけならエラー吐かないのでテキストボックスの問題だなぁ。
それ以上はどういう形か分からない以上調べようがないから何とも。
全部のテキストボックスを調べて良いなら
For Each x In Me.Cotrols
If TypeName(x) = "TextBox" then
...
End If
Next
とやると簡単。Tag使って判定すれば特定のものだけ除外できるし。
0214210
2015/12/31(木) 17:47:16.72ID:3FCNx6UT順番にチェックしていく関係でこのような記述をしました。
最初にテキストボックスの7-9、7-11、7-13、・・・・7-23、9と-11、9-13のようにしたかったのです。
For i = 1 To 9
For j = 1 To 9 - i
If Abs(("TextBox" & 2 * i + 5) - ("TextBox" & 2 * (i - 1) + 2 * j + 7)) <= 100 Then
【処理内容】
End If
Next j
Next i
の記述をしたのですが・・・テキストボックスの記述方法がダメなのでしょうか?
0215デフォルトの名無しさん
2015/12/31(木) 18:21:50.17ID:xcpAmXWKのように指定すればいいみたいだけど?
0216デフォルトの名無しさん
2016/01/01(金) 08:16:43.96ID:sVrrx3Fuプログラムが終了するまでずっと有効ですか?
ある区間だけ有効にしたい、あるいはずっと有効しておきたい、のように使い分けたいこともこれから出てくると思うのです。
0217デフォルトの名無しさん
2016/01/01(金) 08:18:12.65ID:sVrrx3Fu0218デフォルトの名無しさん
2016/01/01(金) 09:06:31.31ID:HVUfaNaTあけおめ
On Error はプロシージャ内のみ有効
Application.DisplayAlertsは Excel終了するまで継続のハズ
ちなみに
On Error Resume Next
は短い範囲でかつどうしても実行時エラーの可能性が排除できない
時のみ使う方が良いとおもうよ
ステートメント毎に Errオブジェクトを見てればいいけど
不具合発生してもスルーされるからどこでどんなエラーが発生したか分らなくなる
せめて
On Error Goto ラベル
でトラップ処理するなら別だけど
0219デフォルトの名無しさん
2016/01/01(金) 10:06:58.64ID:sVrrx3Fuどもあり、ことよろ。
そうなんですか、スッキリしました。これでこれから使い分けができそうです。
0220デフォルトの名無しさん
2016/01/01(金) 10:17:22.33ID:NO+H6ZMg> ある区間だけ有効にしたい、あるいはずっと有効しておきたい
On Error Goto 0
0221デフォルトの名無しさん
2016/01/01(金) 19:56:00.98ID:xpOY3CWT個人的にはErr.Raiseをthrowのように使いたいんだけどね
0222デフォルトの名無しさん
2016/01/01(金) 20:52:55.76ID:sVrrx3Fuなるへそありがとう。
0223デフォルトの名無しさん
2016/01/01(金) 20:55:39.83ID:sVrrx3Fuどこに書けばいいとか注意点はありますか?
自分で作ったクラスの中ででもその列挙型定数は使いたいです。
0224デフォルトの名無しさん
2016/01/01(金) 21:04:54.88ID:+cD+YD5u0225デフォルトの名無しさん
2016/01/01(金) 23:06:06.65ID:+cD+YD5u0226デフォルトの名無しさん
2016/01/02(土) 01:20:56.54ID:jWkoNf5r>自分で作ったクラスの中ででもその列挙型定数は使いたいです。
やめたほうがいいです。
ライブラリとして再利用する為なんじゃないの?
むしろ、そのクラスで使うならそのクラスに実装すべきで、他でも使いたいなら
公開すればいいだけ。
クラス以外で実装した列挙型をクラス内で使いたい場合は、クラスの中で再定義
するか、橋渡しするようなプロシージャを用意する必要があるかな。
めんどくさいけどね。
>>224
コピペしかないと思うけど、
そもそもイミディエイトに出力ってDebug.Print使ってるって
ことなんだろうけど、そろそろテキストファイルに出力する方法も
覚えたらどう?
0227デフォルトの名無しさん
2016/01/02(土) 09:24:31.29ID:Dnf2flaM「もとに戻す」と「繰り返し」をショートカットでできるようにしてほしい。
ついでに「繰り返し」はctrl + yに統一してくれ。
0228デフォルトの名無しさん
2016/01/02(土) 09:44:03.17ID:Nffz1P8Xマクロ終了直前にメモ帳を起動してその文字列をそこに入力させておくためのコードは
どう書けばいいですか?
0229デフォルトの名無しさん
2016/01/02(土) 09:51:29.48ID:sxcdtv6m素直にテキストに落としてみては?
0230デフォルトの名無しさん
2016/01/02(土) 09:58:15.99ID:vN/+lOC5確かクラスでパブリックな列挙体を指定すると、クラス.列挙体.列挙値の記述が出来ないはず。
そもそも列挙体はそのクラスから生成したインスタンスで挙動が変わるものでないので、クラスに記述すること自体が微妙。
VBAは.Netと違ってSheardがないので、標準モジュールに記述して使うのが変な挙動をしなくていいと思う。
VBAでクラスを使おうとすると、まだ考え方が確立され切れていないときの状態を引きずった言語だから使い方に戸惑うことが多いよね。
ユーザー定義型なんてもっと顕著にそう言うことが起こるよ。
0231デフォルトの名無しさん
2016/01/02(土) 21:54:01.64ID:MhjWcLlUどういう使いどころあるかな?
0232デフォルトの名無しさん
2016/01/04(月) 06:20:47.61ID:D+zYtfMVまとめて管理するとかもVariantの配列に突っ込めばいいし
もうちょと互換性があれば使ったかもしれないけど
0233デフォルトの名無しさん
2016/01/05(火) 00:10:29.99ID:USCQ6V11Activeってどうやって判断しますか?
UserForm_Click()だとボタンをクリックしたときにはそれが発動されないし。
0234デフォルトの名無しさん
2016/01/05(火) 02:05:35.42ID:Kvov8i6k0235デフォルトの名無しさん
2016/01/05(火) 02:25:02.47ID:Kvov8i6kコードはそのフォームモジュールだけにに書いて
標準モジュールは作りさえしないというやり方で良いでしょうか?
いまのところ標準モジュールを作る意図が見いだせないのですが。
0236デフォルトの名無しさん
2016/01/05(火) 02:34:32.38ID:LNU3ZziC作らなくても 動作上問題ないなら 作らんでいいんじゃね?
0237デフォルトの名無しさん
2016/01/05(火) 03:15:29.83ID:mStzs5Tn普通はそのまんまのActivateイベント使うんじゃないかね
>>235
じゃあそれでいいんじゃない
0238デフォルトの名無しさん
2016/01/05(火) 03:22:29.47ID:cUCC3uaz2013だとイベント拾えないなActivateイベント
フォームロード時には発生するんだが…
0239233
2016/01/05(火) 03:30:01.47ID:Kvov8i6kそのActivateがくせもので
フォームが複数あったときにそのフォームがActivateになったときはそのイベントをひろうけど
フォームが1つだとmodelessで開いたとき普通のExcelワークシートからそのフォームにActiveが移動しても
Acticateに書いたコードは実行してくれず無反応なんですよ。
0240デフォルトの名無しさん
2016/01/05(火) 12:34:15.92ID:Kvov8i6k他のSub(例えば名前をAdditionの2つの引数を取るとします)を呼ぶときに
Addition(5 , 8)
が構文エラーとなるのが気持ち悪くてしかたがありません。
正しくは
Addition 5 , 8
Call Addition(5 , 8)
のいずれかにしなければなりません。
でもどうにかしてJavaのように
Addition(5 , 8)
のようにできる方法はありませんかね?
0241デフォルトの名無しさん
2016/01/05(火) 12:36:58.68ID:LntnFA7d無理だと思う。
Functionにはしたくないんだよね?
0242デフォルトの名無しさん
2016/01/05(火) 12:41:34.28ID:Kvov8i6kFunctionにしてもいいですよ。
でも同様にできなそうです。
0243デフォルトの名無しさん
2016/01/05(火) 12:45:32.43ID:33a1opJu0244デフォルトの名無しさん
2016/01/05(火) 12:51:11.49ID:Kvov8i6k0245デフォルトの名無しさん
2016/01/05(火) 13:01:18.99ID:LntnFA7dああ、戻り値を捨てるってことか。それも無理だと思う。
Functionにして繋げてしまえば?
result = Func1(Func2(Func3(...Addition(5, 8))))
どこにも副作用がなく、無駄な戻り値も無いようにすればいい。
0246デフォルトの名無しさん
2016/01/05(火) 13:02:44.78ID:LntnFA7dJavaを捨てて関数型に移行するのだ。VBAならそれができる。
0247デフォルトの名無しさん
2016/01/05(火) 13:16:48.58ID:YLBFKxeK気持ち悪いのは君の勝手
言語には言語の流儀がある。それが嫌ならやらなきゃいいだけ。逆に、JavaでVBAっぽく
やりたいとかアホ抜かせって話。
そして、普通みなそういう言語毎に流儀は慣れる。気持ち悪いなんて言ってるような奴は
プログラマーとしては三流。
0248デフォルトの名無しさん
2016/01/05(火) 13:56:27.25ID:LntnFA7d>>247ってプログラマなの?
0249デフォルトの名無しさん
2016/01/05(火) 16:31:17.21ID:mlWeSkma非常にレアなケースでしかメリットが出てこないが、消費するヒープがSubの方が少ないから再帰の回数が多くできる
厳密には戻り値の変数エリアを初期化する手間がなくなるので実行速度も誤差程度には速い、はず
0250デフォルトの名無しさん
2016/01/05(火) 19:25:18.04ID:LntnFA7dなるほど
s/ヒープ/スタック/
だよね?
0251デフォルトの名無しさん
2016/01/05(火) 20:12:50.80ID:KIPOXvA0・プリプロセッサを作って変換する
・MSに入社してVBAの言語仕様書を書き換える
・MSを買い取ってVBJをサボートさせる
・…
ただ、こう言う本質的でないところに突っかかる奴はたいてい適性がないので、素直にマをやめた方が本人も周りも幸せになれる
0252デフォルトの名無しさん
2016/01/06(水) 03:05:54.21ID:IHMGmJSjプログラムの覚え始めってインプリンティングみたいな愛着が湧くから、そんな時期なんでしょ。
0253デフォルトの名無しさん
2016/01/06(水) 06:08:03.77ID:wTjSz+NM逆を言えばそれしか出来ないんでしょ?wwwこんな程度で気持ち悪いとか吐いてる程度だから、Java自体のレベルも知れてる。
0254デフォルトの名無しさん
2016/01/06(水) 09:24:36.49ID:qs2eqDcnExcel VBA(windows7 Excel2010 VBA7,0)で パソコンがミュート状態かどうかを
判定したいのですが・・・
ミュート状態だと if 〜 Else で処理(ミュート解除)させようと思っていますが
ミュートかどうかを判定する方法がわかりません
みなさんのお力をお借りしたく書き込みさせて
頂きました。
よろしくお願いします 22歳OL
0255デフォルトの名無しさん
2016/01/06(水) 10:01:38.51ID:nVjV76XEmixerGetControlDetailsを使う
0256デフォルトの名無しさん
2016/01/06(水) 10:04:22.66ID:/XlzX9bHMMDevice API とかでぐぐってみる
0257デフォルトの名無しさん
2016/01/06(水) 10:36:47.15ID:qs2eqDcn>>256
早速の返信ありがとうございます
質問する前にgoogle先生に質問して
mixerGetControlDetails や
API などを使うと出来そうな感じの事が書いてあったのですが・・・
最近VBAを独学で勉強しだした私には難しくどうしたらいいか
よくわからず・・・ここで質問させていただきました
また、お時間ある時でいいのでアドバイスお願いします
まだどうしtらいいかわからないです
22歳OL
0258デフォルトの名無しさん
2016/01/06(水) 10:49:05.08ID:f2GjMEVM最後の1行 なんかバカにされてる気がするぞ
0259デフォルトの名無しさん
2016/01/06(水) 11:47:08.51ID:/XlzX9bH0260デフォルトの名無しさん
2016/01/06(水) 11:48:38.02ID:/XlzX9bH独学はよくない。
明日からavivaに行きなさい。
0261デフォルトの名無しさん
2016/01/06(水) 11:51:57.78ID:nVjV76XEだったらこれからも独学でやれや
俺はグーグル先生みたいに甘くねーぞ
0262デフォルトの名無しさん
2016/01/06(水) 11:57:47.28ID:9dwHBHIu喧嘩売ってんの?
0263デフォルトの名無しさん
2016/01/06(水) 12:48:37.88ID:uGhm1id+0264デフォルトの名無しさん
2016/01/06(水) 12:54:07.42ID:IHMGmJSjオートメーションと呼ばれる手法で、たとえばAccessでCreateObject("Excel.Application")して、
そこで得られたエクセルオブジェクトを利用するっていうんじゃなきゃ不可能じゃないの。
あとはVBSにでもするしか。
0265デフォルトの名無しさん
2016/01/06(水) 13:12:52.54ID:YDWhVPVuまずは誠意を見せたまえ。
おっ○いうp
0266デフォルトの名無しさん
2016/01/06(水) 16:16:54.72ID:uGhm1id+やはり普通には使えないようですね、残念
ブラウザ上で動くサーバーサイドExcelみたいなのがあれば便利だったのですが
0267デフォルトの名無しさん
2016/01/06(水) 16:26:44.21ID:uGhm1id+ls.Remove k
ls.Add Item:=v, Key:=k
End Function
Public Sub Test()
Dim list As New Collection
list.Add New Collection
list(1).Add New Collection
list(1)(1).Add Item:=123, Key:="key"
Reset list(1)(1), "key", 456
' Dim list_sub As Collection
' Set list_sub = list(1)
' Reset list_sub(1), "key", 456
MsgBox list(1)(1)("key")
End Sub
これが関数呼び出し時にエラーになるのは何故でしょう?
コメントアウト部の方を有効にするか、ByRefをByValにすると正しく動くので構わないんですが
もしかしてコレクションはByValで渡すのが当然とか?
0268デフォルトの名無しさん
2016/01/06(水) 16:47:03.10ID:9dwHBHIuGoogle Spreadsheetでも使って下さい。
0269デフォルトの名無しさん
2016/01/06(水) 18:33:10.74ID:jZfE0I4kReset list(1).Item(1), "key", 456
とかなら呼び出せるっぽい
デフォルトプロパティの評価あたりでおかしな事になってるのかもしれん
実はItemは真のデフォルトプロパティじゃないし
0270デフォルトの名無しさん
2016/01/06(水) 20:01:54.35ID:uGhm1id+そういう方法がありましたか
ありがとう
0271初心者A
2016/01/06(水) 20:04:38.71ID:tBMwYmRtうまくいかなくて、悩んでます。
■■■■質問
'SH2のE列に、次のように出力するためには、どのようにコードしたら
いいか教えてもらえませんでしょうか?
0272初心者A
2016/01/06(水) 20:05:11.36ID:tBMwYmRt2
3
4
5
-----
1
3
4
5
-----
1
2
4
5
-----
1
2
3
5
-----
1
2
3
4
-----
0273初心者A
2016/01/06(水) 20:06:39.51ID:tBMwYmRtNo(1)=1
No(2)=2
No(3)=3
No(4)=4
No(5)=5
の配列を、違うシート(シート名:sheet2name)に出力したい。
動的配列ですが、NUM1=5として考えやすくしてみました。
計算結果を出力するシートを、
Set SH2 = Worksheets(sheet2name)とする。
0274初心者A
2016/01/06(水) 20:07:07.71ID:tBMwYmRt1
1
1
1
-----
2
2
2
2
-----
3
3
3
3
-----
4
4
4
4
-----
5
5
5
5
-----
0275初心者A
2016/01/06(水) 20:07:24.26ID:tBMwYmRtと出力するために、次のようにコードしました。
--------------------------------------------------
r = 0
t = 1
For s = 1 To NUM1
For q = r + 1 To r + NUM1 - 1
SH2.Cells(q + 2, 4).Value = No(t) 'SH2のD列にデータ出力
r = r + 1
Next q
t = t + 1
Next s
--------------------------------------------------
0276デフォルトの名無しさん
2016/01/06(水) 20:30:41.31ID:5UG3hvjQ真っ当な技と言えるんでしょうか?
0277デフォルトの名無しさん
2016/01/06(水) 20:37:10.97ID:cINiOzEy質問がとっちらかっててよくわからん
とりあえず>>272のコード
Sheets("SH2").Activate
num = 5
r = 1
For i = 1 To num
For j = 1 To 5
If i <> j Then
Cells(r, 5) = j
r = r + 1
End If
Next
Cells(r, 5) = "-----"
r = r + 1
Next
0278デフォルトの名無しさん
2016/01/06(水) 20:38:10.90ID:cINiOzEyは
For j = 1 To num
の間違い
0279初心者A
2016/01/06(水) 21:15:55.49ID:tBMwYmRtやってみます。ありがとうございます。
http://ww10.puny.jp/uploader/download/1452081929.xls
パスワード:abc
Module1で試行錯誤中です。
SH2(シート名:計算結果)の【F列】
SH2.Cells(u + 2, 6).Value=
にデータ出力したいです。
初心者なんで難しいです(>_<)
時間かかりそうです。
0280初心者A
2016/01/06(水) 21:30:56.38ID:tBMwYmRt下記のコード
r = 1
For i = 1 To NUM1
For j = 1 To NUM1
If i <> j Then
SH2.Cells(r + 2, 6).Value = No(j)
r = r + 1
End If
Next j
Next i
0281デフォルトの名無しさん
2016/01/07(木) 00:21:58.78ID:GoyK1MG8Cellsの親を省略するみたいな書き方って気持ち悪いと思いませんか
扱うシートが増えたりしたらどうするんですか
0282デフォルトの名無しさん
2016/01/07(木) 01:36:13.89ID:w0ujcVRl好きな方を使えばよい
0283デフォルトの名無しさん
2016/01/07(木) 08:35:20.93ID:bWvRU8750284デフォルトの名無しさん
2016/01/07(木) 09:09:34.45ID:QNCWlpNpどちらでもよくない。
処理中にシートが切り替わると副作用があるので、必ずsheet1.cellのように指定する。
個人で作って使うなら何してもいいが、人に渡す時はそんな舐めたことすんじゃねーぞ
0285デフォルトの名無しさん
2016/01/07(木) 09:29:17.60ID:bWvRU875人に渡すってどういう意味?
0286初心者A
2016/01/07(木) 12:18:16.88ID:pq62efvo下記のURL先のエクセルファイル
(ファイル名:2点間距離の差011)の
計算結果シートにて、
●D値が多い順の表を完成させたい。
●D値の合計が大きい順の表を完成させたい。
どうコーディングすればいいか、アドバイス
頂けると幸いですm(_ _)mぺこり
http://ww10.puny.jp/uploader/download/1452136421.xls
パスワード;abc
0287初心者A
2016/01/07(木) 12:19:39.64ID:pq62efvo点間距離の差を計算結果シートのO列に表示しています。
座標入力シートのG2セルにて、
点間距離の差がある値より大きいものをD値としています。
計算結果シートのO列で、そのD値より大きい値を赤くしています。
-----------------------------------------------------------
例えば、
点名A1 点名B1では、D値が多い順の個数は、
2個です(赤くなっている文字が2つ)
例えば、
点名A1 点名B1では、D値の合計が大きい順の合計(mm)は、
51.5です。
0288デフォルトの名無しさん
2016/01/07(木) 17:52:38.68ID:2nH+0Iqya1-b1
a2-b2
a3-b3
の表完成させて並び変えたら
0289初心者A
2016/01/07(木) 18:17:44.40ID:pq62efvoここまで、できました。
現状で満足してますが
できれば、VBAを用いて、ソートしたい。
http://ww10.puny.jp/uploader/download/1452157302.xls
パスワード:abc
上記URL先のエクセルファイル(2点間距離の差016.xls)
の計算結果シートにおいて、
(表:D値の個数)個数をキー(多い順)として、ソートしたい。
(表:D値の合計)合計をキー(大きい順)としてソートしたい。
■これ勉強しなきゃいけないんかな?
VBAでクイックソート
http://howto-it.com/excelvbaqsort.html
http://excel-ubara.com/excelvba5/EXCELVBA229.html
0290初心者A
2016/01/07(木) 18:24:25.57ID:pq62efvoホーム→
→並び替えとフィルター
→ユーザー設定の並べ替え
→列にて、優先されるキーで、個数または合計を選択
→順序で降順
→OKボタン
■ このスレッドは過去ログ倉庫に格納されています