1 名前:デフォルトの名無しさん [2017/11/08(水) 11:26:30.13 ID:+KUB1/9hd.net] スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※関連スレ VBAなんでも質問スレ Part2 mevius.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 mevius.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 126 https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/ ※前スレ Excel VBA 質問スレ Part50 mevius.2ch.net/test/read.cgi/tech/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
190 名前:デフォルトの名無しさん [2017/11/22(水) 20:57:00.17 ID:fITl6ULj0.net] >>182 あんまり1文字変数は使わない 処理行数や処理列数などを使ってるわ 年取ると覚えるのが大変なんだよ
191 名前:答えはI〜N mailto:sage [2017/11/22(水) 21:18:19.80 ID:W0SJQGiTM.net] >>177 > そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり 嘘書くなよ... X, Y, Z が整数型とかあり得んわ
192 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:46:50.38 ID:T8s4U7Y50.net] 最近デザパタに凝っててイテレーターパターンやってるけどなかなかいいよ まあいかに多重ループしないかは大事だわ
193 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:49:25.89 ID:HR2X/8WF0.net] イテレータと多重ループ回避って関係あったっけ?
194 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:55:38.62 ID:T8s4U7Y50.net] >>187 いやまあ、見た目上ループ変数は減るからw よってるからよくわからんなってるわ すまん
195 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:48:54.39 ID:HR2X/8WF0.net] VBAでイテレータパターンて難しそうだ ループをなくす、って方向の方が良さそうです。
196 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:51:49.31 ID:HR2X/8WF0.net] 方向の方w
197 名前:デフォルトの名無しさん [2017/11/22(水) 23:20:15.38 ID:pTVfJfW70.net] Excel2010です。 文字列を引数に文字列を返すユーザ定義関数を作りました。 アドインにしてチーム内に配布しようと思ってます。 試しに新規ブックで使ってみたところ、開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。 関数の中の処理を全て消しても保存確認メッセージがでます。 文字列を返すだけの関数なので、保存確認メッセージを出ないようにしたいのですが、どうすればよいでしょうか。
198 名前:デフォルトの名無しさん [2017/11/23(木) 00:02:49.97 ID:Kpe6aW6i0.net] >>191 中身を見ないとわからない Function Foo(bar As Long) Foo = bar * 2 End Function と作ってみたけど >開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。 この減少は起きなかったよ 何か別の所に原因があると思う
199 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 06:39:11.72 ID:Y2T7cP8D0.net] >>191 それって要するにvlookupの事?
200 名前:デフォルトの名無しさん [2017/11/23(木) 13:05:29.27 ID:IQVJTYbd0.net] >>192 簡単に書くとこんな感じの関数です。 Function Kubun(code as string) as string if (left(code,3) = "123") then Kubun = "A" end function if文が大量に続くので共通化してアドインで配布しようと思ってます。 これをKubun.xlbとしてアドインフォルダに保存しました。 新規BookでセルA1に123、セルB1に =Kubun(A1) と入力したところ セルB1にAと表示され、関数は機能しました。 その後保存した新規Bookを開き何もせず閉じようとすると保存確認メッセージがでます。
201 名前:デフォルトの名無しさん [2017/11/23(木) 13:22:13.30 ID:fJlhhdGs0.net] >>194 再計算されてるから 値は変化しないけどセルの内容は更新されていると予想
202 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 13:42:02.49 ID:UTTVtMan0.net] >>194 アトインって *.xla じゃなかったっけ? *.xlb だとなんかいいことあるの? (ツールバー設定とかを記憶するファイルだと思ってた)
203 名前:デフォルトの名無しさん [2017/11/23(木) 14:06:43.11 ID:1VQF43Qed.net] >>194 xlbってなんだっけ? xlamじゃないの?
204 名前:デフォルトの名無しさん [2017/11/23(木) 14:07:06.07 ID:1VQF43Qed.net] かぶった
205 名前:デフォルトの名無しさん [2017/11/23(木) 14:35:16.43 ID:IQVJTYbd0.net] すいません。拡張子は違ったかもしれません。
206 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 15:49:16.74 ID:AvEDQSYF0.net] >>194 ネットで検索してみると回答は>>195 氏の「再計算」で正解だと思うよ そのユーザー定義関数の中で使ってる関数の中に再計算が発生する関数が含まれているのでは? 簡単な例でいくと新規ブックのセルA1に=TODAY()と入力し確定、そのブックを保存し閉じる そのブックを開くとTODAY関数による再計算が発生するため何もせずに閉じようとしても保存確認出る それと同じことでは
207 名前:デフォルトの名無しさん [2017/11/23(木) 17:02:33.93 ID:IQVJTYbd0.net] >>200 192の通り使っているのはif文とLeft関数だけです。 試しに関数の中の処理を全て消してみたのですが、 状況は変わりませんでした。
208 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:02:38.88 ID:mWIv05A8x.net] >>115 要らない
209 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:22:13.82 ID:k3nQdCAx0.net] >>201 おそらく A1が変わってないときに、=Kubun(A1) という式が必ず同じ値を返すという「保証」ができないので B1セルが変更されている可能性を排除できない ということで変更されている(可能性がある)と判断されてる ユーザ定義関数は中身チェックしないで非決定的だって判断だな シート開くときに再計算するかどうかのオプション設定なかったっけ?最悪手動かな
210 名前:デフォルトの名無しさん [2017/11/23(木) 17:30:51.41 ID:JDomtUrWp.net] >>201 その関数にDebug.print 文を仕込んでおいて 呼ばれたかどうかを確認してみたら?
211 名前:デフォルトの名無しさん [2017/11/23(木) 19:42:47.05 ID:IQVJTYbd0.net] >>203 保存確認メッセージを防ぐ方法はないですかね? >>204 関数は呼ばれていますが、それだと何か方法ありますか?
212 名前:デフォルトの名無しさん [2017/11/23(木) 20:00:32.08 ID:fJlhhdGs0.net] >>205 関数が呼ばれると言うことは変更されると言うことだから 保存確認ダイアログが出るのが普通 savedプロパティを変更する方法とか calculationプロパティをマニュアルにする方法とか 方法はあるかもしれないけど 他の問題が起きるようになるかもしれない
213 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 23:21:24.29 ID:SB9DcOfL0.net] Application.DisplayAlerts = False のこと?
214 名前:デフォルトの名無しさん [2017/11/24(金) 11:41:27.83 ID:h1FhSyIp0.net] 質問です。Excel 2016で、Autofilerされたシートの内容を参照するために (wsはワークシートオブジェクトです) Debug.Print ws.AutoFilterMode →この結果は True Debug.Print ws.AutoFilter.FilterMode →この結果も True Dim rgFilter As Range Set rgFilter = ws.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible) For Each e In rgFilter Debug.Print e Next e こんな感じで参照しようとしてるんですが、 参照してるシートでフィルターが掛かっていても、いなくても 同じように全件(25行なら25行)がイミディエイトに表示されます。 絞り込まれた結果のみを表示するためにはどうしたら良いのでしょうか?
215 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 11:52:22.18 ID:BOT2k7iW0.net] >>208 Set rgFilter = ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
216 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 12:05:42.58 ID:h1FhSyIp0.net] >>209 素早いご回答ありがとうございます。 修正してみましたが、今度は絞込みあり/なし何れも1行だけになりました 何だか難しい操作ですねえ…
217 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 12:12:04.66 ID:h1FhSyIp0.net] Dim MaxRow As Long MaxRow = ws.Range("A" & Rows.Count).End(xlUp).row これを追加して、 Set rgFilter = ws.Range("A1:A" & MaxRow).CurrentRegion.SpecialCells(xlCellTypeVisible) にしてみても、結果は>>208 と同じになりました。 んー謎です
218 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 13:34:47.29 ID:bxAooAvMa.net] >>205 あるにはあるけどクソめんどくさいぞ すべてのセルの初期値保持しといて、閉じるときに確認して値に変更なければsavedをtrueにしてから閉じる、とかね
219 名前:デフォルトの名無しさん [2017/11/24(金) 16:52:13.42 ID:x6NJ51zce.net] Sheets("Sheet1").Columns(2).Insert Shift:=xlToLeft Sheets("Sheet1").Columns(2).Insert Shift:=xlToRight この二行の動作の差が分からないので 違いを教えてください
220 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:34:32.78 ID:HKDmIDHRH.net] >>213 現在のcolumns(2)の中身が左にずれるか、そのままか、かな? 当てずっぽうだけど。
221 名前:デフォルトの名無しさん [2017/11/24(金) 19:18:42.44 ID:V+PY16OM0.net] >>206 >>212 アドインをあきらめます。 ありがとうございました。
222 名前:デフォルトの名無しさん [2017/11/25(土) 12:49:09.41 ID:roqaXNhOa.net] エクセルVBAですがあるシートで入力し別のシートに転記するというコードを記入しているのですが For文でやろうとするとうまくいきません。元々のシートの行が11行目から始まり転記先のシートが2行目から始まるのでネストを使って以下のようにコードを組んでみたのですが2行目の入力データが転記先のデータに2行追加されてしまいました。 1行目と2行目はそれぞれ別のデータが記述されておりそのまま転記できるようなコードにしたいです。 もしかしたら、そもそもforだとだめなのかもしれません。ちなみに入力するデータが11行目から始まり終わりは20行目で終わります。 がとりあえず繰り返し構文でできればかまいません。下記のコードをどう変えればいいか教えてください。 Sub 登録() Set syougai = Sheets("障害記録") 'シート名にて指定しているので変更しない事 Set itigi = Sheets("一時データ") 'シート名にて指定しているので変更しない事 Const hiduke As Long = 19 '日付列の定数 Const gouki As Long = 17 '号機の列の定数 Const era As Long = 18 'エラーコードの列の定数 Const hyou1 As Long = 11 '障害集計表上の定数 Const kisyu As Long = 21 Const syuukei1 As Long = 21 For i = 2 To 3 For j = 11 To 12 itigi.Cells(i, 1).Value = syougai.Cells(j, hiduke).Value '日付 itigi.Cells(i, 2).Value = syougai.Cells(j, gouki).Value '号機 itigi.Cells(i, 3).Value = syougai.Cells(j, kisyu).Value '機種 itigi.Cells(i, 4).Value = syougai.Cells(j, era).Value 'エラーコード itigi.Cells(i, 5).Value = syougai.Cells(j, syuukei1).Value '集計データ i = i + 1 j = j + 1 Next j Next i End Sub
223 名前:デフォルトの名無しさん [2017/11/25(土) 13:36:20.17 ID:fp6T8Ewd0.net] 〉〉214 ネストの使い方間違ってると思うのですがどう直せばいいのかわかりません。
224 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 13:39:02.15 ID:Sg1k8TV00.net] >>216 itigi じゃなくて itiji にしろ シート名「にて」はやめてシート名「で」にしろ i = i + 1 と j = j + 1 は不要なので消せ
225 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 13:55:20.06 ID:QhU2UVSF0.net] >>216 単純にシートで開始行がずれているだけなら For i = 2 to 3 itigi.Cells(i, 1).Value = syougai.Cells(i +9, hiduke).Value 以下略 Next でいいんじゃないでしょうか ループはネストすると 内側のループだけ全部回して外に抜ける、を外のループの回数 だから、ネストでは意図した動作にならないでしょう >>218 も言っているけど、Nextで変数に勝手に+1されるから足さなくていい
226 名前:デフォルトの名無しさん [2017/11/25(土) 14:08:02.51 ID:fp6T8Ewd0.net] ありがとうございました。 できました。
227 名前:デフォルトの名無しさん [2017/11/25(土) 15:25:06.65 ID:P/RTUJJid.net] てか hiduke なんて変数名使うくらいなら「日付」のほうが10倍まし
228 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:03:29.39 ID:dlgn0p0Vx.net] そもそもVBAでやることなのかな 転記先の一時データのシートのセルに障害記録シートのセルを参照する式を書くだけで良くない?
229 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:17:31.37 ID:4suMRhlB0.net] 変数名ぐらい自由にしてやれw
230 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:23:34.66 ID:Yv0FOuti0.net] >>216 値を取得しながら転記しようとするから混乱する コレクションなり配列なりに一回格納してから転記するようにすればネスト要らん
231 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:30:52.78 ID:Yv0FOuti0.net] >>223 変数名は大事でしょ こいつの変数の付け方は最悪に近いわ 代入の式見なかったらなんのことだかわからねー
232 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:32:47.09 ID:+Jz8ZPqE0.net] 本人できたって言ってるのにグダグダ言う奴ウザイわ
233 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:35:56.02 ID:ISZ6M3sb0.net] hidukeと日付のどちらか選べと言われたら、hidikeを選ぶ。
234 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:37:28.74 ID:S5e4mFeJd.net] 仕事内容を記録するエクセルを作成したく、 シート名は各個人名でフォームを開くボタン設置。 登録用に必要項目をフォームで作り、転記するサンプルマクロを書いたんですが、今後必要項目が増えたり、減ったりしたときに人数分フォームを弄ったりマクロ書き換えるのは面倒ななんですけど、一個をものを共有し使用するにはどうしたらいいですか? 各個人のエクセルを開き、作ったボタンで共通のエクセルを開きフォームを開いて転記させるとか? 共通のエクセルを読み取り専用で開き書き込む時に自分のエクセルを開いて転記させるとか? なんかうまいやり方ないですか?
235 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:42:32.82 ID:Sg1k8TV00.net] >>227 何が言いたいんだW
236 名前:デフォルトの名無しさん [2017/11/25(土) 17:52:49.62 ID:M1jU9gED0.net] >>228 シート毎つまり人毎にボタンを作るなら そのボタンをクリックした時にその人独自の値をグローバル変数とかに代入して フォームは共通のものを呼び出す フォームに入力されたものを書き込む時は さっきのグローバル変数を見て 書き込み先のシートとかを特定する
237 名前:デフォルトの名無しさん [2017/11/25(土) 17:53:40.22 ID:M1jU9gED0.net] >>230 同時に複数の人がそのエクセルファイルを使わない事が前提だけど
238 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:31:33.42 ID:S5e4mFeJd.net] >>231 同時に開くことがあるんですよ。
239 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:33:58.83 ID:MqKvnHus0.net] >>228 一つのエクセルファイルを複数人で同時に使うのはいろいろ大変だと思う。 共有共通にせず個人毎に違うファイルを使ってもらって、 仕事内容記録フォルダに入ってるファイル全てをまとめて集計するマクロを作った方がよさそ。
240 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:34:51.02 ID:Sg1k8TV00.net] >>232 データはなんでもいいからDBに書き込んでエクセルはインプット画面として割り切りなさい マジで
241 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:38:42.16 ID:Yv0FOuti0.net] エクセルの共有はマジで地雷 運用を見直した方がいい
242 名前:デフォルトの名無しさん [2017/11/25(土) 19:34:05.10 ID:PrfYax++p.net] >>232 入力するのが一人で他の人が見るだけなら問題ない 複数人が同時に書き込むならエクセルじゃなくて ウェブアプリとかにした方が良いと思う
243 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 19:37:11.17 ID:T5+qbkCf0.net] mdbを複数ユーザーで同時に掴めるなら、SQLでデータを投げれば動作するんじゃないの。 入力フォーム作りがクソ面倒くさいからエクセルでやるのは愚策中の愚策なのは確かだけど。
244 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 19:44:15.61 ID:4suMRhlB0.net] >>225 健康のためなら死ねるタイプ?w ごめんけど理解不能
245 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 19:46:52.39 ID:4suMRhlB0.net] どうしてもエクセルだけでやりたいなら、フォームとデータでファイル別けるべきだね
246 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 20:15:23.25 ID:Yv0FOuti0.net] >>238 いや、常識だろ 自分でメンテするにしたって嫌だわ
247 名前:デフォルトの名無しさん [2017/11/25(土) 20:24:47.32 ID:fZkth5mu0.net] フォームボタンをクリックした時に グローバル変数とかに時刻なり、その人のIDなりを記録して 編集中である事が分かるようにしておく 書き込んだら
248 名前:Nリアする 他の人がフォームボタンをクリックしたら 編集中かどうかチェックして 編集中なら後で再実行するようにダイアログを出す [] [ここ壊れてます]
249 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 20:38:06.48 ID:4suMRhlB0.net] >>240 お前の常識とか知らんし興味もない。 他人の変数名にケチ付けるのは常識じゃなくてエゴだろ
250 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 20:40:07.39 ID:99QBz+fh0.net] React では、データアクセス(CRUD)部分は、 Flux の、Store という部分で、 UI とは完全に分離させている nmp の、immutable パッケージで、データを変更不能にしたり
251 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 20:41:41.46 ID:4suMRhlB0.net] 日本語でおk
252 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 21:19:48.45 ID:d0mIe/tRa.net] 変数名は結構考えるけどな。 普段なら辞書サイトでその意味の英単語から付けることが多い。 API使えば変数名の重要性が分かる。
253 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 21:53:57.63 ID:Sg1k8TV00.net] >>245 それは変数名と言うより引数名でしょ? それだったら確かに大事
254 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 22:00:33.02 ID:T5+qbkCf0.net] 個人的に引数含む変数名に半角英字は避けるように徹底してる。 予約語と被らなくなるし徹底すれば読みやすいしね。 一般的に、名前に半角英数使うのはコンパイラが2バイト文字対応していない事が理由なんで、 対応しているコンパイラには積極的に2バイト文字で投げた方がいい。
255 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 23:35:03.26 ID:Yv0FOuti0.net] >>246 一年前に作ったコードの宣言部分と代入部分見ずになんの値か把握できる自信があるならどうぞ まだシステムハンガリアンの方がポリシーあるだけマシ
256 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 23:36:51.22 ID:Yv0FOuti0.net] レスの相手間違えたわ >>242 に対するレスね
257 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 23:47:28.66 ID:Sg1k8TV00.net] >>248 俺が>>246 で言った意図は、「引数名は大事だがローカル変数名はたいして大事じゃない」という意味だ。 それに反論しているのかな?
258 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 09:00:43.39 ID:/OBEl30Ad.net] 大事じゃない変数なんてないんだよ みんなそれぞれに役割があって、一生懸命に生きてるんだから
259 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 09:30:00.33 ID:ci9PkC0t0.net] >>250 それは違うだろ まあ、使い捨てのテストなんかは適当にやるけど 長い変数名が嫌なのは打つのが面倒だからなんだろうけど、そもそも同じ変数が何度も出てくる時点でリファクタリングの臭いがするわけでな
260 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:10:58.75 ID:A1ZwwN/70.net] >>252 ローカル変数に限っていうなら、上の方がよくて下に行くにしたがって悪くなると思っている ・ローカル変数がない ・tmp とか a とか x とかいう名前で十分わかる ・適切な名前をつけることでよくわかる ・適切な名前がつけられていないことで混乱する ・適切な名前がつけられているにもかかわらず混乱する そうだよね?
261 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:15:24.53 ID:hep87Sd80.net] >・適切な名前をつけることでよくわかる >・適切な名前がつけられていないことで混乱する 同じことじゃね?
262 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:16:38.23 ID:KMInKg0R0.net] ソンタクして変数名にvarを採用
263 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:24:16.70 ID:A1ZwwN/70.net] >>254 いや、 やれば改善する可能性があるのにやっていない状態、ということで下位になっている
264 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:44:51.98 ID:DTyNodR2M.net] >>251 底辺のお前も頑張ってるもんな w
265 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:50:05.48 ID:ApNVvKeX0.net] >>253 ローカル変数がないの意味がよくわからん 値渡しの引数はローカル変数なんだけど それを除外したとしても、変数なしで書ける処理は限られてくるし
266 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:54:24.61 ID:pGcZHtwF0.net] >>258 不要な変数を作るなってことだろ そのまま代入すりゃいいのに>>224 みたいにいったん変数に格納したがる奴は一定数いる
267 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:56:36.30 ID:OTnHPyYR0.net] VBAからどんどん離れて公開オナニーになってきた
268 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:04:15.84 ID:ci9PkC0t0.net] >>253 tmpとか、座標系の短い変数はきちっと関数化して処理の分断ができてるときに限るけどね 大体そんなもんじゃないかな >>259 配列に格納してから云々はそれぞれの処理を独立させることであとから見通しがよくなるんだよ たとえば、代入する値に条件付きで何らかの処理を加えなきゃいけなくなったときなんかにループしながら直接吐き出してるとネストが深くなって可読性が低くなる それぞれ独立してれば関数化するのも楽だしな
269 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:33:08.74 ID:pGcZHtwF0.net] >>261 > たとえば、代入する値に条件付きで何らかの処理を加えなきゃいけなくなったとき その時にやればいいだけ
270 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:16:29.61 ID:ci9PkC0t0.net] >>262 一回変数にいれることでそれがなんの値か、というのを明示するって意味もある 意味があるからやってんだよ
271 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:40:03.00 ID:pGcZHtwF0.net] >>263 >>216 ならコメントで十分
272 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 15:20:43.89 ID:A1ZwwN/70.net] >>258 日付が変わっているからIDは違うが、元の俺の発言は>>250 の >「引数名は大事だがローカル変数名はたいして大事じゃない」という意味だ。 なんだよね。 つまり引数は別として狭い意味のローカル変数について語っている。 それと、>変数なしで書ける処理は限られてくるし については、良い〜悪いの序列の話なので、「変数なしで書けるくらいスコープが狭い方が良い」ということさ。
273 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 16:18:08.52 ID:t/ZpdAAca.net] ( ・ω・)∩シツモーン 範囲A1:C10の値をまとめてD1:F10に代入するときにさ 直接=で結ぶと駄目で 一旦変数で tmp=range(A1:C10).value range(D1:F10)=tmp とかいうふうにすればオッケーなのって何でなのん?
274 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 16:56:09.10 ID:A1ZwwN/70.net] >>266 Range(A1:C10).Value = Range(D1:F10).Value でいけると思うけど?
275 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 17:06:14.25 ID:A1ZwwN/70.net] ごめん逆 >>266 のやりたいことは Range(D1:F10).Value = Range(A1:C10).Value だね
276 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 17:18:28.93 ID:ApNVvKeX0.net] 値のコピーは Range("D1:F10") = Range("A1:C10").Value
277 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 09:03:15.77 ID:3l0DMD54a.net] 範囲が同じなら R1.Value=R2.Valueで行けるな、普通に Set R1=R2はなんか無理 R1=R2でいけない理由はよくわからん RangeオブジェクトのデフォルトプロパティってValueだよね?
278 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 12:39:02.79 ID:Hzamsy590.net] >>270 Rangeの既定のプロパティは、ドキュメント上だとItem 実際はちょっとトリックがあって、_Defaultっていう隠しプロパティ こいつがアドレス指定しない場合はValueを返す
279 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 22:21:45.18 ID:HF1f2kGW0.net] >>270 Setを使うということはオブジェクトということだぞ。 それはRangeそのものを代入することを意味する。 A1セルにB1セルを代入など出来よう筈が無い。 A1セルのアドレスがB1? 意味不明だろ。
280 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 22:54:13.44 ID:scsxtpuJM.net] indirectの悪口はそこまでだ
281 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 23:55:45.37 ID:++h0dxh80.net] indirectが未だに理解できない
282 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 23:58:34.84 ID:VuuuCAGm0.net] >>272 rangeオブジェクトの実体はアドレス情報ってことか?
283 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 02:02:42.04 ID:+NcnLu/Q0.net] >>275 ??? それだけじゃねーだろ。 が、それも含むのは当然。
284 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 07:27:08.64 ID:ZnyBsd4x0.net] indirectとかsumproductとか、便利なんだけどいまいちよく解らんよな。
285 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 09:30:34.94 ID:PHeqRDr40.net] 忘れちまえよindirectの事なんか
286 名前:デフォルトの名無しさん [2017/11/28(火) 09:41:03.64 ID:/j8R3q5Od.net] >>272 Set の左辺は変数だから当然と言えば当然 A1セル自体は変数じゃなくてオブジェクトだからな
287 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 10:01:09.63 ID:mtOclWiza.net] >>276 いやまあ、セル同士を直接セットが無理っぽいのは何となく感覚でわかるんだが、どういう動きでそうなってんのかなーって気になるわけよ
288 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 12:43:56.96 ID:ZLcA5r8L0.net] Range()みたいなのって返却値がRangeクラスなだけあってRange()自体は関数だから
289 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 14:06:44.13 ID:WkhkCF1D0.net] Rangeオブジェクト Rangeプロパティ Range関数 Rangeでチン これが区別できれば完璧
290 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 22:19:20.97 ID:0EijvfTXM.net] ら...らんげ? (´・ω・`)b