1 名前:1000 [2020/05/10(日) 13:43:45 ID:Nkoph0aj.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part65 https://mevius.5ch.net/test/read.cgi/tech/1584430040/ ※デフォルト設定
458 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 18:48:48 ID:jizMt7mj.net] Sub 乱れ雪月花 風雪即意付け 月影の太刀 三花仙 End Sub
459 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 19:40:30 ID:o1fpUPSE.net] 取り敢えずマジックナンバーだらけのを保守しろとかいうのはやめてー セル参照も起点ぐらいは定数宣言しといて欲しい
460 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 19:48:00 ID:xzpno8fJ.net] 1列目の2行目から下にEXCELファイル名があります。(同一ファイル名あり) それらを全て開く、処理、閉じるを繰り返すと時間がかかるので、同一ファイル名は一度だけ開いて閉じるをやりたいのですがどしたらいいですか? 1列目をソート Do until 1列目 ??? 処理 loop ファイル名は数字(000001.xlsなどで桁数は同じ) ???の所で開くor閉じるをやりたいのですがどうしたらいいですか?
461 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:00:55.95 ID:Ct20WAoS.net] パリィは草
462 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:10:21 ID:MDu2hpC8.net] >>439 ひとつ上のセルが同じファイル名なら なにもせず次へ
463 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:42:10 ID:eRBcTATy.net] 重複禁止の処理は連想配列(VBAだとDictionaryオブジェクト)を使うと便利だよ。 既に連想配列に存在するなら何もしない、存在しないなら処理して連想配列に登録する。 Valueに結果を入れておいて、実行結果をシートに出力とかするとカッコイイよ。
464 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 21:05:54 ID:Otvtnefa.net] 結果をシートに出すなら配列使わんと重複削除して
465 名前:ゥら開いた方が速くて楽じゃん [] [ここ壊れてます]
466 名前:デフォルトの名無しさん [2020/06/01(月) 23:34:24 ID:5NIHbXOS.net] まだ22歳の学生社長が得た、23億円の「使い道」 あの橋本環奈をCMに使うバイトアプリの雄 https://toyokeizai.net/articles/-/319511 中学時代の車いす生活から、17歳で起業するまで https://www.advertimes.com/20200130/article306925/ ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家 https://roboteer-tokyo.com/archives/14840 自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣 https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life アプリの視聴率がわかる 高専卒起業家の独創力 https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/ 1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー https://sogyotecho.jp/glowship-adachi-interview/ 大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】 https://foodfun.jp/archives/3490
467 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 00:29:20 ID:hEtyTtKQ.net] 俺ならこうかな。 Sub サンペイグッドカメラ() どっきりカメラのキシフォート カメラのドイ End Sub
468 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 00:35:26 ID:0adtr6kX.net] VBAだしそういう名前面白いかもなw 簡単だけど保守したくないやつは、もう先輩や同僚の連絡先を名前にしようかな
469 名前:デフォルトの名無しさん [2020/06/02(火) 01:36:20.19 ID:rfJHDu9M.net] Sub 馬鹿専用() 馬鹿には無理() 馬鹿は帰れ() End Sub
470 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:01:31.67 ID:cr7Q5ahz.net] Sub 鱸() 鰯() 鰹() 鮪() End Sub
471 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:07:31.79 ID:SOkkDiQ6.net] >>439 Ruby なら重複要素を許さない、集合を使って、 require 'set' filenames = <<"EOT" a/foo.txt a/bar.txt a/foo.txt EOT set = Set.new filenames.each_line do |filename| # 1行ずつ処理する filename.chomp! # 末尾の改行を削除する # 同じ要素は追加できないので、追加できた時だけ、そのファイルを読み込む p File.read( filename ) if set.add?( filename ) end
472 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:24:02 ID:cr7Q5ahz.net] >>439 [データ]→[重複の削除] って機能あるけど
473 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 04:12:46 ID:xDFjMRpH.net] >>439 ファイル名がリストアップされてる列があるなら そこでまず回して重複排除したファイル名の配列 as Stringをつくればいいだけじゃ てかその程度も思い浮かばないとなるとプログラミング向いてないような気がするわ 重複排除のプログラムって基礎の基礎でやるよ 便利な機能を使う前に順次・分岐・繰り返しでほぼほぼなんでも出来ちゃうことを学んだ方がいいわ C言語の勉強するとそういうの鍛えられる感じする
474 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:37:46 ID:ZejDuh3H.net] >>364 Readme読む限り、ちょっとこれはと思う。 一定間隔はあまり良くないな。 出来ればWM_DRAWCLIPBOARD捕まえるのが常套手段。
475 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:39:17 ID:ZejDuh3H.net] >>386 まあ、プログラマ―としては糞コードの見本を強要されるわけだからねえ。
476 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:41:06 ID:ZejDuh3H.net] >>398 引数という言葉を調べてみよう。
477 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 09:53:39.10 ID:DG4jD+ms.net] い・・引数
478 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 10:17:05 ID:ZKdkos41.net] いんすう、なの? 勝手に、ひきすう、って読んでた。
479 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 10:38:01.33 ID:HxakEXb6.net] いんすうだと因数と間違えるから、わざとひきすうと読む慣習
480 名前:デフォルトの名無しさん [2020/06/02(火) 11:01:38 ID:P+GfDheU.net] ソヒキスウブンカイとかあったよねー。
481 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 11:28:56 ID:Bxw1Fg+T.net] 淫吸だとエロい言葉に聞こえるからひきすうと読む
482 名前:デフォルトの名無しさん [2020/06/02(火) 12:59:58 ID:86yzZ856.net] Sub セル2行を結合して出力() Sheets("雛型").Select ActiveSheet.Copy Dim gg As Long, rr As Long For gg = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1 Rows(gg + 1).Insert For rr = 5 To 31 Cells(gg, rr).Resize(2).Merge Next rr Next gg HorizontalAlignment = xlCenter VerticalAlignment = xlCenter Range("A1") = "2行を結合して出力" End Sub すみません、ネットで調べまくってる相変わらずのど初心者です。 セルの行挿入と結合を範囲指定して 2行を結合するのは何とか調べてできたのですが、 「セルの列挿入と結合を繰り返して 2列1行のセルにしたい」 というのができず。。ご教示頂けませんか。 理想は 「セルを2列挿入と結合をして3列1行のセルにする」や 「2列と2行の挿入と結合繰り返して2列2行のセルにする」 など、色々パターンを作りたいのですが。 ネットと入門編の本だとやはり限界を感じます。。 どなかた何卒お願いします。
483 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 13:09:54.31 ID:YHzZdfxN.net] .resize(1,2).mergeとか Range(rows(gg+1)rows(gg+2)).insertとか
484 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 14:39:08.29 ID:cr7Q5ahz.net] セルの結合をマクロでやる設計者ってセンスないね
485 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 14:42:20 ID:cr7Q5ahz.net] マクロとVBAな
486 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 16:30:35 ID:wladzkcs.net] セル結合はなあ
487 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 17:14:02 ID:3pwUYc8f.net] vlookupとセル結合をディスってはじめてexcel使い方として一人前
488 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 17:30:35.84 ID:ZKdkos41.net] セル結合は帳票イメージでの最終手段。
489 名前:デフォルトの名無しさん [2020/06/02(火) 17:36:37.19 ID:86yzZ856.net] セルの結合をする理由は 取引先の提出フォームが客先ごとに 1セルの結合の構成が本当に様々で8種類くらいパターンがあり 元のマクロで出した値の貼り付けが出来ないのが現状です。 なので元のマクロの1行1列のセルの値を セルの構成を客先のに合わせたシートに出力 そのシートから客先提出フォームに値の貼りつけ というのをやろうとしています。
490 名前:デフォルトの名無しさん [2020/06/02(火) 17:42:54.46 ID:86yzZ856.net] >>461 すみません、どこにどう弄ったらいいか 教えて頂きたいです。 すみません、、
491 名前:デフォルトの名無しさん [2020/06/02(火) 17:45:43.97 ID:lB7mMLW8.net] >>468 自分で考えろ
492 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:33:10 ID:0adtr6kX.net] じゃあ8種類のテンプレでよくね
493 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:40:35 ID:bGVvB1yX.net] 結合したりvlookupとかしたいから、わざわざエクセル使ってるんじゃないの?
494 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:55:17 ID:R+Y1d9Tj.net] セル結合された部分は別の結合とかできないから その都度結合解除するとか 行の挿入や削除で表が壊れたり 見えなくなるプロパティがあったり 嫌な思い出しかない
495 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 19:17:40.08 ID:xDFjMRpH.net] Application.OnKey ってプロシージャに引数渡せないのが残念だなぁ これってキーごとにプロシージャ作らないといけないかね
496 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 19:20:48.48 ID:ZejDuh3H.net] >>462 そんなこたぁねえだろ。 確かに問題多いけど、分かった上で使うことあるぜ。 ゴミのSendkeys使うよりはあるね。
497 名前:デフォルトの名無しさん [2020/06/02(火) 19:31:05.26 ID:0+iVbcJA.net] Sub 列挿入() ActiveSheet.Copy Dim i As Long For i = 32 To 8 Step -1 Columns(i).Insert Next End Sub ここまでは何とか、、ってとこです。 後は指定したの行を全部何とか 2列1行のセルに 道のりが遠すぎる…
498 名前:デフォルトの名無しさん [2020/06/02(火) 19:38:40.44 ID:xX39KyXM.net] データモデルに入れたデータからSQLを使ってシートに出力する方法を教えてください。 ネットになかなか情報がなくて ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("クエリ - パワークエリ名"), Destination:=Range("$A$1")).TableObject から .WorkbookConnection.OLEDBConnection.CommandText = "テーブル名" にするとテーブルを出力 .CommandText = Array("EVALUATE CALCULATETABLE('テーブル名' , 'テーブル名'[項目名] =""検索語"" ) ") .CommandType = xlCmdDAX のようにするとDAX式で加工したテーブルを出力できるようになりましたが、SQLを使用する方法がわかりません。
499 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 03:13:14.17 ID:4xNyRocT.net] >>475 Sub 列挿入() ActiveSheet.Copy Dim i As Long, c As Long, r As Long 'カウント用 Const n As Long = 2 '列挿入, 列マージ数 Const sC As Long = 8, eC As Long = 32 '開始列, 終了列 Const sR As Long = 2, eR As Long = 10 '開始行, 終了行 With Excel.Application .DisplayAlerts = False .ScreenUpdating = False End With For c = eC To sC Step -1 For i = 1 To n - 1 Columns(c).Insert Next i Next c For c = eC * n To sC Step -n For r = sR To eR Cells(r, c).Resize(1, n).Merge Next r Next With Excel.Application .DisplayAlerts = True End With End Sub
500 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 03:29:44 ID:4xNyRocT.net] あっ行別の列マージならRange.Merge Across:=Trueってのがあるのか初めて知ったわ
501 名前:デフォルトの名無しさん [2020/06/03(水) 17:16:57.27 ID:AwTWg+pQ.net] すいません。関数を使って集計する方法を教えていただけないでしょうか。 index matchの組み合わせもしくは、sumifもしくはindex match sumifの複合で表示させたいです。 画像の出荷と書かれたセルに関数を入れて集計したいです。 集計は参照シートの黄色で書かれた「販売+その他出荷」の合計を表示したいです。 sumifでは縦の計算になってしまい、横の足し算が出来ない印象です。 上の数字はmatchを使った際の引用条件になると思い入れました。 説明わかりづらくてすいません。関数を教えていただけないでしょうか。 具体例のエクセルは簡単に書いてますが、実際に書くエクセルはデータが膨大なものです。 なぜかindexもうまく引用できていませんでした。 https://d.kuku.lu/ca513f39a8
502 名前:デフォルトの名無しさん [2020/06/03(水) 17:19:07.42 ID:bl/wSmIk.net] >>479 死ねよ、ここは何のスレかわかっているか?
503 名前:デフォルトの名無しさん [2020/06/03(水) 17:31:05 ID:AwTWg+pQ.net] すれ違いでしたか。。 別のスレで質問してみます 失礼します
504 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 18:58:22.75 ID:ajKAwYcj.net] >>481 説明が下手な質問には答えられない
505 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 19:02:55.47 ID:4xNyRocT.net] >>479 Offsetっていうセルのサイズを変える関数があるが この集計を関数でやるのは根本的にムリだね 1,10行目の数字とかに何の関連性もないから列が特定できない 元データ正規化すんのが先だよ
506 名前:デフォルトの名無しさん [2020/06/03(水) 21:04:01 ID:Wz
] [ここ壊れてます]
507 名前:EARBto.net mailto: 前にも少し聞いたけど上級者はVBAどうやって作ってくもん? そこそこボリュームのあるマクロを素人ながら作ってるんだけど ・標準モジュールにオブジェクト名付けて そこに同じ名前のプロシージャを1つ作る ユーザーフォームのボタンに プロージャ名を2つや3つ並べたり とにかくボタンに割り当ててく コードの表示見ると凄いシンプルに見えるけど 標準モジュールが30個とかあるんだが… 自己流だと全然だめねこれ [] [ここ壊れてます]
508 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:12:23 ID:eXcAe8GC.net] そういうのは言語関係ない 上級者のコード読むなりプログラミング技法の初歩とかを勉強せえ
509 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:16:06 ID:jxQ4kFWw.net] 上級者じゃないんでわからんが 数こなしていくうちに上達するんじゃね
510 名前:デフォルトの名無しさん [2020/06/03(水) 22:45:33 ID:DFbqrKTL.net] ネットで勉強してる初心者以前のレベルだけど 変数をiで宣言してるサイトが結構多いけど テンプレ的な変数名なの?何かの略字?
511 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/06/03(水) 22:54:44 ID:fRs9+Xkd.net] integer
512 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:55:14 ID:1Bet+/qH.net] >>487 もともとはIntegerの頭文字から とりあえず整数型変数にはI、もっと必要な時はJ、K以下略を使うというルールを70年ぐらい前にIBMの技術者が決めて、それが今まで慣習として残っている
513 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:58:16 ID:k+INKoSh.net] テーブル(ListObject)の指定列に計算結果値をLoopで書き込む処理を作ったんだけど、 ひどく遅延します。事象の原因と対策わかる方いたら教えてください。 ・(同一シートの)テーブルの枠外だと同じ行数でも瞬時に終わります。 ・計算結果じゃなくて 1 を埋め込むのでも遅い。 ・再計算Off ・ためしにEnableEvents = false もやってみたけど効果なし。 3000行くらいなんですが、しばらく帰ってこない感じ。 結局式埋込に変えたんだけど、その場合だと5〜6秒くらい。 テーブルなんてそんなもん、ということであればそう認識します。 詳しい方教えてください。
514 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:59:26 ID:uWfzdzS4.net] >>484 モジュールが増えるのは、 他に流用するからとか、 スクロールが面倒だからとか、 そんな理由だと思うけど。 宣言は一番上派、使用する直前派。 参照設定派、CreateObject(xxx)派、 If a = True Then派、If a Then派、 色々だから気にすんなと。
515 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:02:38.52 ID:k+INKoSh.net] >>489 iteratorが語源かと思った。
516 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:03:56.76 ID:LXJ+6sS7.net] DEFINT A-Z
517 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:35:44.50 ID:6MdsocRT.net] ループ変数にはiもよく使うけど、rとかcも割と使う。 列と行を入れ子にしてループ処理する時は、こちらの方が分かりやすい。
518 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:40:14.49 ID:K30dfupm.net] >>487 古くは Fortran かな I, J で始まる変数は無条件で整数型だった Iがアルファベットの10番目だからという よくわからない説もある
519 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:05:55 ID:k3k6AIFZ.net] 実際の慣例ではどうなのか知らないが、i〜tまでを使うって教えられた intのtまでってことで まあ大抵使ってもi,j,kぐらいだと思うが
520 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:09:42 ID:L9xk6UQ0.net] 視認性が悪いから、j とか l とか使いたくない。 なので、 i, k, n, とか適当に飛ばして使ってる。
521 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:09:53 ID:OnK1RXVm.net] 自分は最大nまで使うよ。 i、j、k、
522 名前:l、m、n [] [ここ壊れてます]
523 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:14:11 ID:L9xk6UQ0.net] >>494 r は Range Loop用と決めてるから、r, c, はあまり使わない。 そんときは iR, iC ってやるな。 c は1文字入れるとき使うかも。 人それぞれやね。
524 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 01:00:45 ID:BD433+5i.net] すみません、教えてください。<br> caseの条件を変数で設定していると条件に一致しなくてelseに流れてしまいます。<br> ベタ打ちで条件を記載した場合は、正しく処理へ流れるのですが・・・<br> sub テスト() <br> Dim a As String <br> Dim temp As String a = "みかん" temp = "りんご"", ""みかん" 'ここはチェックボックスの選択によって可変にする予定 Select Case a Case temp Msgbox("冬") Case Else Msgbox("冬以外") End Select End sub
525 名前:500 mailto:sage [2020/06/04(Thu) 01:02:03 ID:BD433+5i.net] <BR>は誤って記載したので無視してください。 すみません。
526 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 01:05:29 ID:bxYszK7T.net] ダブルクォーテーション大好きなんだな
527 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 01:09:25.97 ID:22WZQRcv.net] >>490 同じ行やってみたけど一秒かかんない テーブルに数式列あると遅延したけどcalculation=falseで気にならなくなったし
528 名前:デフォルトの名無しさん [2020/06/04(木) 01:47:41.43 ID:OTCVkkK8.net] 馬鹿の特徴 教えて、助けて等で始まる書き込みをする
529 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 02:18:53.76 ID:oqMXr6z+.net] >>500 Caseの条件が変数かどうかは関係ないから、どこか別のところが間違ってる よく見直せ
530 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 03:10:03 ID:e1eCmfnY.net] >>496 俺だけかな i1,i2,i3 とか、 iX,,iY, iCnt, iLoop, iStep みたいに使う
531 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 03:52:02 ID:e1eCmfnY.net] 命名規則とかハンガリアン表記とかあるよね https://ja.wikipedia.org/wiki/命名規則_(プログラミング)
532 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 07:06:03.13 ID:iR1nViON.net] >>489 Fortranが始まりが正解
533 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 08:16:07 ID:i/KeU7gc.net] ループのiはindexのiかと思ってたわ for(i=0;i<10;i++) value[i] = 〜〜的な
534 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 10:24:37 ID:lE9Ts1od.net] C列が変数aと同じ値で、かつD列が変数bと同じ値で、かつE列が変数cと同じ値の各行で Z列(整数)が最大値の行の行番号を変数iに代入する方法を教えてください Dim r As Long,i As Long Dim a As String, b As String, c As String For r = 5 to lsr If Cells(r,3) = a And Cells(r,4) = b And Cells(r,5) = c Then Rows(r).??? End If Next cnt i = Application.WorksheetFunction.Max(???)
535 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 12:04:02 ID:0kTawYgE.net] >>510 Z列の"暫定"最大値を保持する変数を使います。 Dim r As Long, i As Long Dim a As String, b As String, c As String Dim Z_v As Long '追加部分 Dim lsr As Long '定義漏れですよ lsr = 処理範囲の最終行をセット Z_v = 0 ' Z列の最大値が負になりそうなら-9999999999などとしておく For r = 5 to lsr If Cells(r, 3).Value = a And _ Cells(r, 4).Value = b And _ Cells(r, 5).Value Then If Cells(r, "Z").Value > Z_v Then ' 暫定最大値を超えたら Z_v = Cells(r, "Z").Value ' 暫定最大値を更新 i = r ' 行位置も更新 End If End If Next 最大値となる行が複数あった場合は、最初の行位置が i の値となります。
536 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 12:13:10.50 ID:0kTawYgE.net] >>511 の修正 Cells(r, 5).Value Then の行は Cells(r, 5).Value = c Then です
537 名前:510 mailto:sage [2020/06/04(Thu) 13:00:40 ID:lE9Ts1od.net] >>511 ありがとうございます!いつも勉強になりますm(__)m
538 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 14:32:12.42 ID:L9xk6UQ0.net] >>503 レスありがとう。 どうも同時に開いているブックに大量の関数が配置されているとListObject内でLoop入力時に遅延するみたい。再計算Offでも。 まっさらのブックにテーブル1個作ってLoop書き込みしたら瞬時だった。 そこに関数を多く含むブックを同時に開くことで、上記のテーブルで遅延が発生。特に自作関数が影響大きいみたい。 追加で開いたブックからシートを一つずつ削除→計測を繰り返したら、少しずつ早くなって、最終的に瞬時になった。 数行ならパラパラッって感じで気にしなくていいんだろうけど行数が多いとかなり待たされる。 ちなみに対象のテーブルを「範囲に変換」するとどんだけ関数を含んでいようが瞬時に書き込まれる。 こんなもんだと思うしかないのかもだけど、再計算Offでも影響を受けるのが納得いかない。 Win7 on vmwareな環境で試したので自宅のWin10でも試してみる。
539 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:52:15.99 ID:MXeQjX7b.net] おれ、昔は i , j ばかり使ってたけど、最近は回す配列の名前を反映した変数を使ってる Forブロックが単独で存在するならいいんだけど、if や 他のForブロックと組み合わさって 階層構造になってると、だいぶあとになってメンテするときに理解が遅れる
540 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 16:42:33 ID:9nIeytil.net] いいね 他にもループ内の処理をそのまま関数にしてしまう方法もある コメントを書かなくても処理の意味を関数名として記述できるし、再利用性も高まる。 おまけとしてVBAの構文にはないcontinue(処理を中断して次のループへ入る)が行える。 もしくは再帰関数を定義してfor文自体を無くすという凝った方法もある。
541 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 18:37:05 ID:08KHEEC1.net] データモデルに入れたデータからSQLを使ってシートに出力する方法を教えてください。 ネットになかなか情報がなくて ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("クエリ - パワークエリ名"), Destination:=Range("$A$1")).TableObject から .WorkbookConnection.OLEDBConnection.CommandText = "テーブル名" にするとテーブルを出力 .CommandText = Array("EVALUATE CALCULATETABLE('テーブル名' , 'テーブル名'[項目名] =""検索語"" ) ") .CommandType = xlCmdDAX のようにするとDAX式で加工したテーブルを出力できるようになりましたが、SQLを使用する方法がわかりません。
542 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:02:46.64 ID:fQr1zLSRu] ガチのにわかでスレチかもしれませんが エクセル上で123d+789という数字を10進数に直すことはできますか?
543 名前:デフォルトの名無しさん [2020/06/04(木) 19:00:14.86 ID:OTCVkkK8.net] 馬鹿ではなさそうだが、しつこい教えてクレクレに呆れる ググれよ
544 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:01:01.58 ID:gQJ1UXfv.net] >ネットになかなか情報がなくて 逆にそれを探し当てる方が難しいと思うんだが・・・。 とりあえず、マクロを記録しながらMSクエリを操作すれば答えが出ると思う。
545 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:03:34.01 ID:gQJ1UXfv.net] >パワークエリ名 あ、2016以上か。 パワークエリがあるせいで、MSクエリにたどり着かなかったということか。
546 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 19:43:02 ID:ZOeL7/nf.net] >>516 同じ処理を関数にするのはよくあることだけど、同じ処理を括るよりは意味合いで括る方が上策だと思う。 適切に関数に分けていれば、そもそもそんなに入れ子にならんだろう。 再起なんて、それこそ意味合いで自然に出来上がるもんで、無理して作るもんじゃねえと思うんだが。
547 名前:デフォルトの名無しさん [2020/06/04(木) 22:08:56.53 ID:uauxSmqO.net] Sub セル構成を2行3列に() Application.DisplayAlerts = False Application.ScreenUpdating = False j = 2 '←ここで何列おき Set rng = ActiveSheet.UsedRange For i = rng.Columns.Count To 8 Step -1 rng.Cells(10,i).Resize(10,j).EntireColumn.Insert Next Set rng = Nothing Range("G10", "I510").Merge Across:=True Range("J10", "L510").Merge Across:=True Range("M10", "O510").MergeAcross:=True Range("P10", "R510").Merge Across:=True Range("S10", "U510").Merge Across:=True Range("V10", "X510").Merge Across:=True Range("Y10", "AA510").MergeAcross:=True Range("AB10", "AD510").Merge Across:=True Range("AE10", "AG510").Merge Across:=True Range("AH10", "AJ510").Merge Across:=True
548 名前:デフォルトの名無しさん [2020/06/04(木) 22:10:21.75 ID:uauxSmqO.net] Range("AK10", "AM510").MergeAcross:=True Range("AN10", "AP510").MergeAcross:=True Range("AQ10", "AS510").Merge Across:=True Range("AT10", "AV510").Merge Across:=True Range("AW10", "AY510").MergeAcross:=True Range("AZ10", "BB510").Merge Across:=True Range("BC10", "BE510").Merge Across:=True Range("BF10", "BH510").Merge Across:=True Range("BI10", "BK510").Merge Across:=True Range("BL10", "BN510").Merge Across:=True Range("BO10", "BQ510").MergeAcross:=True Range("BR10", "BT510").Merge Across:=True Range("BU10", "BW510").MergeAcross:=True Range("BX10", "BZ510").Merge Across:=True Range("CA10", "CC510").MergeAcross:=True Dim po As Long, ro As Long For gg = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1 Rows(po + 1).Insert For ro = 5 To 79 Cells(po, ro).Resize(2).Merge Next ro Next po HorizontalAlignment = xlCenter VerticalAlignment = xlCenter Application.DisplayAlerts = True End Sub VBAの勉強すらしてない俺が10個くらいのサイトからパクってつなげて一応希望通り動いた setとかレンジ型とか意味わからんわ…
549 名前:デフォルトの名無しさん [2020/06/04(木) 22:13:08.78 ID:uauxSmqO.net] For po = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1 ここはこうだったな俺の変数癖だわ なんかもう難しすぎて勉強するよりネットで検索してパクって繋げたほうが楽な気がする 39歳からVBA覚えるって脳みそがついていかんわ
550 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:15:04.15 ID:k3k6AIFZ.net] そんな報告いらん 自分の日記スレでも立てればいい
551 名前:デフォルトの名無しさん [2020/06/04(木) 22:15:05.91 ID:OTCVkkK8.net] 隙あらば馬鹿が日記を書き込む
552 名前:デフォルトの名無しさん [2020/06/04(木) 22:19:18.86 ID:uauxSmqO.net] 隙あらば馬鹿って言いにきてんの? 定期的に馬鹿としか書いてないけど
553 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:22:05.20 ID:i/KeU7gc.net] そうして精神を保ってるとでも思っておこう
554 名前:デフォルトの名無しさん [2020/06/04(Thu) 22:43:14 ID:OTCVkkK8.net] >>528 馬鹿は黙っていろよ
555 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:57:09.20 ID:nxAuSZLn.net] セルにコメント挿入して中の文字色を一部だけ変えれる事って出来ますか? strTxt=111111(vbtab)223(vbtab)8975 例えばこんな文字列の223だけ赤色、それ以外は黒色。
556 名前:デフォルトの名無しさん [2020/06/04(木) 22:59:22.67 ID:c/xPJE8L.net] >>528 お前の書き込みは馬鹿の自己満足以外の何物でもないぞ
557 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:25:19 ID:fHeju+Td.net] >>531 Cells(1, 1).AddComment "あいうえおかきくけこさしすせそ" Dim c As Excel.Characters Set c = Cells(1, 1).Comment.Shape.TextFrame.Characters(2, 10) c.Font.ColorIndex = 3 例えばこれだと、コメントを追加して2文字目から10文字のフォント色を色番号3=赤に変える という処理になるよ。 他にもフォント,太字斜体,サイズとか、fontクラスのものなら何でも変えれるね。 処理的には変更開始と文字数をどう特定するかだけど頑張ってね
558 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:27:45 ID:2CjtUfu9.net] >>531 comment.shape.textFrame.characters