1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ Excel VBA 質問スレ Part76 https://mevius.5ch.net/test/read.cgi/tech/1651339421/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
382 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 21:40:01.71 ID:u0LihC760.net] >>381 なんだ、ただふざけてるだけか。。。
383 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 22:39:37.83 ID:fsND5nPed.net] そんなハゲ頭に免じてArrayListを進ぜよう
384 名前:デフォルトの名無しさん [2022/08/15(月) 22:52:26.96 ID:HvBHLkJg0.net] DictionaryがイヤならCollection使えばいいと思うけど。 まぁ別に普通に配列でもいいんだけどさ。 多少凝った作りにしたって関数化しとけばいい訳だし。
385 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 04:43:22.32 ID:Z2Qcd4DId.net] >>384 流石に無知すぎるから少し黙った方がいいよ
386 名前:310 mailto:sage [2022/08/16(火) 05:59:23.35 ID:CNdrdYLw0.net] Collection に Exists メソッドがあれば...
387 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 11:11:29.27 ID:09rAK4Ti0.net] 何作ってんだよ
388 名前:デフォルトの名無しさん [2022/08/16(火) 12:23:01.42 ID:2L6vp4NY0.net] >>385 そうだね よく分かりもしないで無知とか決めつける無知は すっこんでればいいよね
389 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 16:58:27.92 ID:tG1qlgnq0.net] あまりマウントの取り合いは止めようぜ 意見交換の場なんだから
390 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 17:40:43.11 ID:09rAK4Ti0.net] どちらかというとけなし合いだな
391 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 18:00:08.72 ID:0h33t1VnM.net] ここにいると神になった気分になるな お前らの見苦しさに対してもなんだか優しくなれそう
392 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 18:20:47.96 ID:tG1qlgnq0.net] 昔は違ったんよ いつからか荒れやすいスレになった
393 名前:デフォルトの名無しさん [2022/08/16(火) 20:19:48.02 ID:NUsqsy200.net] >>382 ふざけてるつもりは毛頭ございませぬ。 でもこれからもハーゲマンの名に恥じぬようVBAを探求していきたいです。
394 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 20:50:53.76 ID:tG1qlgnq0.net] 毛という毛全部剃っちゃえ!
395 名前:デフォルトの名無しさん [2022/08/16(火) 21:16:40.24 ID:NUsqsy200.net] >>394 アホ。 そしたらハゲてまうやんけ。
396 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:54:28.52 ID:tG1qlgnq0.net] え? 別にいいじゃん、アンタ元から禿なんだから。
397 名前:デフォルトの名無しさん [2022/08/17(水) 01:45:03.16 ID:d962r+SMa.net] ソルのはムダ毛だけにしとけ
398 名前:デフォルトの名無しさん [2022/08/17(水) 01:57:01.99 ID:sNWv67oad.net] 頭髪は生えないのに髭は生える
399 名前:デフォルトの名無しさん [2022/08/17(水) 04:59:55.38 ID:EILeizBb0.net] >>396 コラ、われわれハゲ族は、 励まし合って生きていかねばならぬ。 ハゲ増し合うことはするな。
400 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 07:35:41.89 ID:hasTYsFP0.net] 頭髪はハゲても、耳毛は濃くなる
401 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 11:39:32.10 ID:Ork7WWB+0.net] 禿ではないのだけど、40歳にして髪は真っ白よ。
402 名前:デフォルトの名無しさん (ワッチョイ 6eda-5Ix7) mailto:sage [[ここ壊れてます] .net] 好きな色に染めようぜ
403 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 12:58:33.86 ID:PQdbwjDzr.net] Excelらしく緑だな
404 名前:デフォルトの名無しさん [2022/08/18(木) 12:18:45.39 ID:yPHO1+kSp.net] なんという体たらく もうハゲはこのスレ出入り禁止でいいな
405 名前:デフォルトの名無しさん (ワッチョイ fdb7-laJE) mailto:sage [[ここ壊れてます] .net] 2つの表があって、表Aと表Bとして 表の作りは二つとも同じで、 コードと数字を持ってます。 二つの表のコードが一致してる場合は コード A B 101 50 60 102 40 100 103 30 104 50 といった感じで片方にしか存在しない場合は片方だけの行を追加して行くってvbaを作りたいんですが、何かいい案はありますか? AとBの表で数字の比較をしたいです for nextでやろうとしてますがうまくいいやり方が見つからずです
406 名前:デフォルトの名無しさん (ブーイモ MM85-Hx7L) mailto:sage [[ここ壊れてます] .net] まずVBAを忘れます SQLで FULL OUTER JOIN します (゚д゚)
407 名前:デフォルトの名無しさん (ワッチョイ 468c-hYSv) [[ここ壊れてます] .net] >>405 テーブルのリレーションシップを設定したらいいんじゃないかな
408 名前:デフォルトの名無しさん (アウアウウー Saa5-dwW8) mailto:sage [[ここ壊れてます] .net] 例えば以下の様なデータがあるとします 開始~終了:消費量 1月1日 0時~1月1日16時:500 1月1日16時~1月2日10時:1000 1月2日10時~1月5日 0時:800 1月5日 0時~1月5日0時:300 1月5日0時~1月6日0時:2500 1月6日0時~1月7日12時:1200 このように時間の区切りがバラバラ(かつ日跨ぎや0分間もある)のデータに対して、1月1日、2日、3日にそれぞれ合計いくらかを出したいです なお、例えば20時~翌6時で1000の様な場合は4h:6h=400:600として計上したいです どう計算するか方針すら思い浮かばないのですが何かアイディアありましたら教えてください
409 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:01:03.74 ID:JMDQexcx0.net] vlookupでできない? 普通にforループでも難しいことなさそうだけど、どんなコード書いたの?
410 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:04:36.75 ID:JMDQexcx0.net] >>409 は>>405 へのレスね
411 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:14:31.63 ID:EMP5KmCeM.net] >>408 まず問題を分割しよう まず(step1)日別にレコードを分割し、(step2)それを日付でグループ化して合計を出すと考えればいい step2は典型的なグループ化と小計なんで楽勝として、step1はちょっと面倒だから更に分割しようか 例えば、入力として一行の内容を渡すと、日別分割されたレコードの配列を返す関数を作って、その結果を結合すればいいだろう
412 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:53:00.45 ID:XgHMEnCRd.net] >>405 深く考えなくていいなら ①2つの表(シート)をそれぞれ参照して作業用のシートAを作る コード シート 値 101 A 50 102 A 40 ・・・ 101 B 60 102 B 100 ②シートAをソートする ③シートAの内容を読み込んで質問にあるようなシートBを作る
413 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:12:23.70 ID:EfwMa2qS0.net] できた! 二重ループでできました。
414 名前:411 mailto:sage [2022/08/18(木) 16:21:20.45 ID:fCi7ElhaM.net] 日別分割関数について補足しておこう この関数を更に分割すれば、下記のようになるだろう (1) 開始日時と終了日時の間の日付を全て取得する (2) 終了日時と開始日時の差を時間単位で求め、結果をHとする (3) (1) で取得したそれぞれの日付(dとする)について、下記を実施する (3.1) 開始日時と終了日時の間において、日付dに属する時間が何時間あるかを計算し、結果をhとする (3.2) 消費量*h/Hを計算し、結果をxとする (3.3) 日付dと消費量xのペアを分割結果の1レコードとする ここまで分ければ簡単だろう。もしまだ難しければこのように適宜分割するとよい。
415 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:23:33.57 ID:MNMwm62Z0.net] 初歩的な質問なんだけど、上下一致してる場合だけ転記して行くという場合 1行目は例外として省く処理いれて cells(r-1,1)=cells(r,1)とかってやってくと、不一致のものが現れた時に一致してた行の最初の値が転記できなくなるんだけどどうしたらいい? 100 100 101 101 102 とかって並びの時に、100の一番上が転記されないとか 102とかも転記されない 上下比較の時の最適解の比較方法を知りたい
416 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:23:56.43 ID:X/mZUHYK0.net] >>405 結構面倒、前提条件として「表A, 表Bのコードは各々ソートされてる」かつ「表A, 表Bのコードは各々の表内で重複してない」のであれば... Type T S As WorkSheet: L As Long: R As Long: C As Long: D As Long: F As Boolean End Type Dim TA As T, TB As T Set TA.S = WorkSheets("表A"): Set TB.S = WorkSheets("表B") TA.L = TA.S.Cells(TA.S.Rows.Count, 1).End(xlUp).Row: TB.L = TB.S.Cells(TB.S.Rows.Count, 1).End(xlUp).Row TA.R = 1: TB.R = 1 TA.F = False: TB.F = False Dim S As WorkSheet: Set S = WorkSheets("結果") Dim R As Long: R = 1 Do G TA: G TB If TA.F And TB.F And TA.C = TB.C Then S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: S.Cells(R, "C").Value = TB.D: TA.F = False: TB.F = False ElseIf (TA.F And TB.F And TA.C < TB.C) Or (TA.F And Not TB.F) Then S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: TA.F = False ElseIf (TA.F And TB.F And TB.C < TA.C) Or (Not TA.F And TB.F) Then S.Cells(R, "A").Value = TB.C: S.Cells(R, "C").Value = TB.D: TB.F = False Else Exit Do End If R= R + 1 Loop Private Sub G(T As T) If Not T.F And T.R <= T.L Then T.C = T.S.Cells(T.R, "A").Value: T.D = T.S.Cells(T.R, "B").Value: T.F = True: T.R = T.R + 1 End If End Sub
417 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:34:05.48 ID:EfwMa2qS0.net] >>416 ありがとぅざいます! そうなんです 考え出したらこれかなり面倒だなと思って、、 同じような発想かもしれないですが 外のループはA表のコード番号の縦列の値を固定して、 内側ループでB表を縦にコードが一致するまで検知して 一致した場合フラグを立てて、一致したコードの時は一致してるコードの隣に値を転記。 内側ループを抜けた時点でフラグが立っていない場合はBにしか存在しない値なので、A表の最終行以降に転記 って考え方でいけました!
418 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:37:32.42 ID:EfwMa2qS0.net] あ.A表に転記ではなくてC表ですね
419 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 18:49:57.27 ID:AeknNWbaa.net] >>411 ,414 ありがとうございます、そのヒント元に自己解決できました 1. 対象となる期間を配列に格納 2. データを1つずつ0:00で分解、按分は都度[その日の時間/全体の時間]で実施 3. 配列内の一致する日付に割振り 4. 2-3ループ
420 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 20:46:21.25 ID:JMDQexcx0.net] >>415 102は一致する相手がいないけど、転記される必要があるのかな? ぱっと思いつくのは ポインタをrとsの2つを用意してr=1, s=1から始める 1. Cells(s, 1) == Cells(r, 1) の間だけ s を進める。 2. Cells(s, 1) の値が変わったところで a) s - r > 1 なら Cells(r, 1) を転記しながら s に追いつくまで r を進める b) s - r == 1 なら転機せずに s に追いつくまで r を進める 3. 1からの手順を表の最後まで繰り返す
421 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 22:39:41.60 ID:MNMwm62Z0.net] >>420 相手がいない場合も転記です そのやり方試してみます 単純そうでむずかしい…
422 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 01:11:58.45 ID:OSKKwF+I0.net] >>415 そこからどういうデータを求めたいんだ? 単に重複データ削除するだけで良い気がするんだが
423 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 07:58:47.24 ID:YEGDOEOJ0.net] >>422 上下一致してるものだけ足し込んでいくということをしたいです 一致してなくても一個だけのはそのまま転記したい 空白は無視で 単純なコードでいけるかなと思ったら難しくて、、
424 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 09:33:47.59 ID:TD6yT77i0.net] まずどういう出力か書けよ 頭悪すぎだろ
425 名前:デフォルトの名無しさん [2022/08/19(金) 10:55:40.42 ID:agk3kSn7p.net] >>424 >>423 で説明すているだろ これで分からないってお前白痴か?
426 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:00:49.57 ID:0SH6JCsd0.net] >>415 の入力例で言うと 100は上下で一致してるから転記する 101は上下で一致するからこれも転記する >>421 の説明だと102単独でも転記する 転記しない入力例ってどんなのよ?
427 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:05:43.32 ID:nezaNaBad.net] 423の足しこんでいくというのは?もう何もわからない
428 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:07:12.98 ID:nezaNaBad.net] 転記?今日の天気? Excel必要ですか
429 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:32:50.63 ID:LZdSBpbV0.net] うるせえ!この禿!
430 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 13:14:47.90 ID:aeNJth6k0.net] まず髪の毛緑に染めてこい
431 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 13:37:04.21 ID:NSoYBxeid.net] 質問する側がおかしいと(どういう結果にしたいかが不明の場合)回答する気も失せるよね上下一致と言われたら A B C D ならBを基準にA=BかつB=Cって自分はするんだが違うんだろ?
432 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 16:42:31.05 ID:TM0tepDc0.net] 重複除去したいって解釈してた
433 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 17:14:26.61 ID:OSKKwF+I0.net] >>423 最終的に欲しい形を書け エクセルの機能に重複データの除去ってあるのはしってるのか?
434 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 19:41:03.51 ID:LZdSBpbV0.net] 知らないのでわ?
435 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 19:54:20.05 ID:fs7pDiUMd.net] 足しこむとか転記とか何がしたいか意味不明なんだよね 単純にいま記載されている列の値について 1.同じ値が続く場合は最初の一つだけ残す 2.ただし途中にある空白は無視する(1、空白、1は同じ値が続いてるとする) 3.最終的に残した値で詰める または 残した値は別の列なりシートなりに転記する みたいな事をやりたいのか質問見ただけではわからんのよね この場合なら検索する行とセットする行を用意すれば簡単にできる話なんだけどね 仕事もそうなんだけど説明が下手な人ってやっぱり仕事もできない人が多い
436 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 20:23:56.98 ID:uBoRK/pGd.net] 足し込むというのが加算という意味であれば必然的に数値ということになるけど、、、 上の行と同じ数値なら足し算する=2倍するってことか? それとも上と下の行が同じ数値なら現在行と上下の3行の和にするってことか? なんかいろんな解釈ができる要望なんよね。。。
437 名前:デフォルトの名無しさん [2022/08/19(金) 22:10:12.43 ID:zQKwV5nn0.net] まぁ重複したデータを足し込むのか削除するのかはさした問題ではない。 ディクショナリやコレクションに元にあった値をキーにして まずキーと同じ値をキーに該当する値として設定して、 同じキーが次回来たときに無視するか足し込むかすればいいだけの話だからな 最後にそれをシートに展開すればいいだけの話。 そうしとけば足し込もうが重複削除だろうが簡単に対応出来る。 SQLを知っているならSQLでやってもいい。 問題は同じ値が飛び石で来る可能性があるのかということ。 例えば101、101、102、101の順序で来ることがあるのか? この場合、要件としては「上下で一致しているものだけ足し込む」ということなので上の例で言えば202、102、101と設定されるのが正ということになる。 これは上記した方法でやるのはかえってまどろっこしい。 そうしたら上から舐めてコレクションに値を格納、前回の行と次の行の頭が同じなら無視するか足し込むかすればいいし、値が違うならそのままコレクションに追加すればいい。 最後にそれをシートに展開する。 このように同じ数値が飛び石で来るかで作りがガラッと変わってしまう。せめてそこだけでもハッキリさせてくれれば。
438 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:10:31.82 ID:KYv4qV6Cd.net] もう終わった話なんだと思うけど正直質問する人はこういうデータをいじりたいという事は伝えても 結果としてこういうものが欲しいっていう事を伝える人が少ないんだよね だからいろんな解釈ができるからその辺もちゃんと情報を伝えてほしいわ
439 名前:デフォルトの名無しさん (ワッチョイ ffda-tEjH) mailto:sage [[ここ壊れてます] .net] そういうの含めて個人の能力
440 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 18:51:09.99 ID:VyM585LM0.net] Unique関数の引数って二次元配列じゃないとだめなの?
441 名前:デフォルトの名無しさん [2022/08/24(水) 19:20:17.01 ID:lK4e5BLcM.net] Range型を渡すんじゃダメなの?
442 名前:デフォルトの名無しさん [2022/08/24(水) 20:13:49.71 ID:LO0U8Jrb0.net] 実際に試してみれば答えが出ると思うのだが
443 名前:デフォルトの名無しさん (ワッチョイ 1fce-tEjH) mailto:sage [[ここ壊れてます] .net] マニュアル読め
444 名前:デフォルトの名無しさん (ワッチョイ 9fda-iK0u) mailto:sage [[ここ壊れてます] .net] MSヘルプですね~
445 名前:デフォルトの名無しさん [2022/08/28(日) 22:27:57.16 ID:uLwcj+rg0.net] excel2019 win10 設定シートに各項目を入力させたらそれに応じて別シートに計算結果を入力させるVBAを書いてる途中なのですが、 VBAソースを書いてる途中に設定シートにこんな数値も持たせたい、 入力画面のレイアウトをあれこれ変えたいと行や列の挿入をしたくなってしまうのですが そうするとVBAソースの方がずれたままになってしまうのですが、シートに挿入をしたら それにともなって既にかけている部分だけでもソースコードのcellsやrangeの値が更新されてくれたりしないでしょうか?
446 名前:デフォルトの名無しさん [2022/08/28(日) 22:36:45.40 ID:bZvgSFoz0.net] >>445 参照先は自動更新されない セルに名前を付けてその名前で参照すればよい
447 名前:デフォルトの名無しさん [2022/08/28(日) 22:37:28.82 ID:z6hd8oqM0.net] 名前付きセル範囲 https://thom.hateblo.jp/entry/2016/07/08/001933
448 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 20:34:19.97 ID:6xba6Hkk0.net] おまいらが毛がどうのこうので喜ぶがらマジで頭ツルッツルにしてきたぞ
449 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 22:48:42.98 ID:Qu5uun0od.net] >>445 コレクションに格納するのが攻守最強
450 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 02:50:20.75 ID:Ie2cpGsY0.net] >>449 そのコレクションの中身はどうやって保守するのかね?
451 名前:デフォルトの名無しさん [2022/08/31(水) 19:22:22.41 ID:QCzzbP6t0.net] >>448 ツルツルがいいのは下の毛です
452 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 22:52:05.08 ID:q/z2hnkB0.net] >>451 お、おうw しかし真夏にはツルッツルもなかなか良いわ涼しい
453 名前:デフォルトの名無しさん [2022/09/01(木) 03:46:18.56 ID:Xg3rwxDQ0.net] win10 excel2019 Sub y() Dim st As Range Set st = Worksheets("参加者").Range("A1:BA80").Find(What:="氏名") If st is Nothing Then else Debug.Print st.Row end if End Sub これをすると"氏名"文字列に一致したセルがrangeオブジェクトで貰えますけど 本当に欲しいのは氏名のx個下のrangeオブジェクトなのです。 氏名のセルと参加者の開始セルの相対位置は固定的です。 氏名はいろいろな名前があるのでマッチングしづらいので氏名で位置を探って取り込んでいます。 rowやcolumnくらいしか使いませんけど、すっきり感としては本当に欲しいのは氏名の開始セルのrangeオブジェクトなのです。 返り値のrangeオブジェクトをずらすということはできますでしょうか?
454 名前:453 mailto:sage [2022/09/01(木) 03:53:25.83 ID:Xg3rwxDQ0.net] Set st = Worksheets("参加者").Range("A1:BA80").Find(What:="氏名").offset(1,1) こんな感じで解決しました。 動いてるのはまぐれでしょうか?
455 名前:デフォルトの名無しさん [2022/09/01(木) 06:49:22.79 ID:UMivoEC40.net] >>453 何やってるかわからんままコピペして動かしてる感をヒシヒシと感じるので Rangeオブジェクト Findメソッド Offsetプロパティ について理解できるまで解説サイト読んでください あと、>>445 についても回答付いてるんだからなんかリアクションしてください
456 名前:デフォルトの名無しさん [2022/09/01(木) 09:42:20.83 ID:wgtUDrt5a.net] 451 おまわりさんこいつです
457 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:01:37.99 ID:Ak8bAeS9M.net] VIO脱毛する人が増えてる
458 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:51:28.10 ID:Xg3rwxDQ0.net] >>455 何度か書き込もうとしたんですけど、書き込みエラーになってしまっていました。 なんだかレスアンカーが不正とか出てきてたのでわからなくなりました。 レスアンカーをつけちゃいけないみたいな制約? >>445 に回答いただいた方ありがとうございました。 これも書き込めないかもしれませんが。 RangeオブジェクトのOffsetメソッド?は結合セルがやっかいなのですね。 結合セルでない時のエラー処理を加えると結局コードが汚くなっていくジレンマでした。 オブジェクト型がなかなか理解できません。 dim wf as object set wf = worksheetfunction とやってもwf.でエクセル関数を使えるようになるわけではないみたいですし。 ありがとうございました。
459 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 11:00:01.20 ID:Xg3rwxDQ0.net] Function wf() As WorksheetFunction Set wf() = WorksheetFunction End Function こっちで呼び出し短縮は出来ました。初めて使いましたfunction
460 名前:デフォルトの名無しさん [2022/09/01(木) 14:07:42.09 ID:Xg3rwxDQ0.net] 名前付きセル範囲を使うためにnamesコレクションを理解しようとしてるのですが、 activeworkbook.namesをfor eachに入れると現在は1個しか出て来なくて 値が =#NAME? こんなのです。エクセルの方から名前の管理を開いてもこの名前は出てきませんし、何も出てきません。 何なのでしょうか?この値は? なにも設定されてない時の値かと思ってワークシートのあるセルに名前の設定をしみたのですが、 やはりこの値は残ったままでした。 RefersToでもvalueと同じく =#NAME?
461 名前:460 mailto:sage [2022/09/01(木) 14:14:01.95 ID:Xg3rwxDQ0.net] わからないまま、vbaから非表示を表示させるコードをコピペして削除しておきました。 こんな名前作った覚えはないですが
462 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 14:38:52.05 ID:nUWOz2Sg0.net] そっか、うんうん、非表示を表示ね、良かったね はい次の方
463 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 15:07:23.09 ID:xiyCUJHG0.net] ニートならロン毛にしろよ
464 名前:デフォルトの名無しさん [2022/09/01(木) 19:17:21.60 ID:Xg3rwxDQ0.net] Range型と配列の違いが後一歩わからないのですが、 Sheet1にA1=10,A2=20,A3=30,B1=40,B2=50,B3=60....みたいにしてar(2,2)と近い感じにしてます。 Sub Sample1() Dim ar(2, 2) As Variant ar(0, 0) = 10 ar(1, 0) = 20 ar(2, 0) = 30 ar(0, 1) = 40 ar(1, 1) = 50 ar(2, 1) = 60 ar(0, 2) = 70 ar(1, 2) = 80 ar(2, 2) = 90 Debug.Print TypeName(ar) Debug.Print TypeName(Worksheets("Sheet1").Range("A1:C3")) End Sub arはvariant型の配列でWorksheets("Sheet1").Range("A1:C3")はrange型のオブジェクトになるんですよね。 感覚的にはどちらも配列を渡している気分なのですが、セル範囲参照のrangeだからrange型オブジェクトになるってだけですか?
465 名前:デフォルトの名無しさん [2022/09/01(木) 19:18:06.47 ID:EeQXBP72d.net] 馬鹿過ぎてやばい奴が来てる
466 名前:464 mailto:sage [2022/09/01(木) 19:23:31.46 ID:Xg3rwxDQ0.net] for each のinの後に配列をおいても、range型オブジェクトをおいても 同じように中身を取り出してくれるから混乱してしまったのかもしれません。
467 名前:デフォルトの名無しさん [2022/09/01(木) 19:28:08.64 ID:bYXIuDKK0.net] もし Dim ar(2, 2, 2) As Variant なら3次元の配列としか言いようがない
468 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 20:43:50.82 ID:QMR92n1t0.net] 本人は切実なんだろうけどイマイチ何を理解しようとしているのかが汲み取れない。 とりあえず、シートは二次元配列みたいなものと思えばいいんじゃないかなぁ。 バリアント型の変数に範囲指定したrangeを代入したら配列が出来上がるんだから。。。 って、こういうの説明するのって余計に混乱させそうで怖いのよね。
469 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 22:31:39.49 ID:xiyCUJHG0.net] なんでそんな事やっているんだろう。。??
470 名前:デフォルトの名無しさん [2022/09/01(木) 23:45:17.73 ID:7Zuj6Csb0.net] Rangeオブジェクトと配列、全く異質のものなのに同じ代入インターフェースがつかえるのが不思議なのでしょう 女学生は貧困で給食費すら払えないのに上級国民は交通費で200万円貰えるのですから
471 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 00:10:13.04 ID:vXxCvmAd0.net] >>464 配列には数字しか入っていませんが、 Rangeオブジェクトには数字以外に色や罫線やハイパーリンクなど色々な情報が入っています。というかワークシートのセルそのもの(オブジェクト)です。
472 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 03:22:55.43 ID:XYWvvS0T0.net] >>464 オブジェクトにはデフォルトプロパティというのがあってな オブジェクトを参照してるつもりでも、実はそのデフォルトプロパティを参照してるんだよ Worksheets("Sheet1").Range("A1:C3")はRange型だが、 そのデフォルトプロパティは2次元配列なのだよ
473 名前:デフォルトの名無しさん (ワッチョイ 023e-y80L) [[ここ壊れてます] .net] ttps://www.tipsfound.com/vba/18014 このコードでcsvファイルをエクセルの指定のシートに取り込めますか?
474 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 07:13:47.06 ID:rviUcujq0.net] >>473 やってみて聞いてるの?自分でやるのが面倒臭いからとりあえず聞いてるだけ?
475 名前:デフォルトの名無しさん [2022/09/02(金) 07:18:17.22 ID:K+fb6kZO0.net] 最近のレベル低下には目を見張るものがあるな
476 名前:デフォルトの名無しさん [2022/09/02(金) 07:25:48.67 ID:+uzTYabFM.net] 総合相談所で総スカンされた馬鹿だろ
477 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 11:01:00.75 ID:BYdQXtrB0.net] いや、そもそも何でそんな事やりたいのか?? という質問自体がさ
478 名前:デフォルトの名無しさん [2022/09/02(金) 12:33:00.40 ID:MAC5jHq+0.net] よそのサイトなんだから作った奴にきけばいいのにと思う今日この頃
479 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 14:51:15.82 ID:BYdQXtrB0.net] ど正論出ました 終了
480 名前:デフォルトの名無しさん (ワッチョイ 5f3e-NodX) [[ここ壊れてます] .net] >>476 あれ総スカンだったんですか? 外部データの取り込みでcドライブのファイルを取り込んでいるのに そのエクセルのファイルを他の人にコピーして渡したら同じ場所にファイルを配置しているのにファイルが読み込めないって聞いただけなのに笑
481 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 12:58:16.39 ID:WuOEJ3Bid.net] あっちでも総スカンだしここでも総スカンなんだからもういいでしょ レベル低いよあんた
482 名前:デフォルトの名無しさん [2022/09/03(土) 14:11:09.43 ID:fgoOqg3v0.net] しつこい馬鹿