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/ ※デフォルト設定
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
559 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:50:59.98 ID:8UrD2y10.net] 39歳で限界とか。元々能力が低いとしか。
560 名前:デフォルトの名無しさん [2020/06/05(金) 05:51:53 ID:td6kQI8l.net] >>535 なんだと、このハゲ!
561 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 06:27:32.36 ID:YMz2fC5g.net] >>523 一応解説すると、、、 値にはいろんな型があるけど、 文字リテラル(例:"Hello") 数値リテラル(例:123) 日付リテラル(例:#2020/6/5#) 真偽値 (例:True) 上記で構成される配列(例:Array("月","火","水") ) これらは(またはこれらの値を返す式)はイコールだけで変数にぶっ込めるけど、 これら以外はすべてオブジェクトと見なされるので、 Set 左辺=右辺 の記述で変数に代入する必要がある。 例えば、ブック、シート、といったものはすべてオブジェクト扱い。 もちろんセル範囲(Range)もオブジェクトなので、Setが必要。 範囲オブジェクトを返すには Range("アドレス記述")で表せるけどこれだと 示してくれた例のように全部書き出す必要がありコードが冗長になる。 そんなときはCells(行,列)の記述で範囲オブジェクトを返すとLoop処理で 簡潔に記述できる。 Cells(行,列)だと1セルしか表せないからRangeと組み合わせて Range(Cells(行,列),Cells(行,列)) みたいに記述すれば指定範囲を表現できる。 または、 Cells(行,列).Resize(500,3) みたいに記述すれば範囲サイズを拡張できる。 あとはForで行、列の変数をうまうコントロールすればOK. 理解の助けになるといいけど、、
562 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 06:58:05 ID:Lq81HhXC.net] >>536 年齢を言い訳に使ってる時点で人として残念な人でしょ
563 名前:デフォルトの名無しさん [2020/06/05(金) 07:40:51.89 ID:oZqvF/U1.net] まったく最近の若者は……
564 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 08:25:59 ID:KlfmBaSN.net] 勉強の話が出てるけど上級者だって全てを覚えているわけじゃない。 >>533のCharactersの話だって、取りあえずこの後に"("を打って見れば説明が出てくるんで、そこから推理してる。 そして推理したら実際に別でテストする。 上手く動いたら、うっすら何となく覚える。 うっすら覚えてる場合は次回も"("打ってからの推理から始まる。 それで問題は起こらないし、何回か繰り返せば完全に覚える。 丸暗記は大変だし結果的に覚えない。
565 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 10:36:23 ID:fHeju+Td.net] いや何となく覚えてたけど
566 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 12:39:12 ID:tnz6CDPA.net] そのなんとなくでいんじゃねって話でなくて?
567 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 18:45:39 ID:IG+dLk9+.net] >>525 そろそろ引退したらどうですか?
568 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 19:01:37 ID:7QZKDprx.net] >>522 入れ子時の対策として言っただけで、普通は入れ子になりづらいとか急に言われても困る あと意識せずに自然に再帰になるとかマ? 関数型以外じゃ意識しないと普通できないだろw やるとしても配列の畳み込みメソッドぐらいなんでは?
569 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 20:18:14.26 ID:KlfmBaSN.net] >>544 例えば初めて再起を使った時に再起なるものなんか知らなかった。 単純に自分を呼び出せば良くね?と思って書いたら再起だった。 再起なるものを知った後でも、基本的に自分を呼び出せば良いじゃんと思う場面が殆ど。 例えば、パスを与えたらそのフォルダの下のファイルやフォルダ名を全部列挙するという関数を考える。 列挙してる中でフォルダ名取得したら、そのフォルダ名で自分を呼び出せば良いわけだ。 そうすればその呼び出しで更に配下の列挙が得られるんだから。 もっとも、このファイル列挙では最初はDir関数グローバルな動きをすると知らなかったので上手く行かなかったけど。
570 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 20:57:20.30 ID:H0L/fXZL.net] 再起って何だろう?
571 名前:デフォルトの名無しさん [2020/06/05(金) 21:05:54 ID:rCWyQTVZ.net] >>543 職場の業務というか海外含めて複数の支部で使われてるから出てくるデータを瞬時に処理できるコードをここで3つ教わってしまったからね もうVBA続けるしかないわ textデータにプローシージャコピーしてクラウドに保存してあるレベルの
572 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:08:38 ID:cCPYycaK.net] >>546 たぶん再帰の変換ミスだろ
573 名前:デフォルトの名無しさん [2020/06/05(金) 21:32:27 ID:ZSs62RcL.net] 色々調べたのですが・・・。 コピーし貼り付けのマクロで 条件付き書式だけを除いて張り付ける、というマクロを探しています。 今の状態ですと条件付き書式の情報まで上書きされて困っています。 ご教授宜しくお願い致します。
574 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:43:17.50 ID:H0L/fXZL.net] >>548 変換ミスにしては何度も使ってるぞ
575 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:47:17.22 ID:2CjtUfu9.net] >>549 まず他スレの質問締め切るなり断り入れるなりして来いよ
576 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:47:20.00 ID:nvWU7/6f.net] 貼り付けた後に .FormatConditions.Delete で条件付き書式だけ削除じゃダメなの?
577 名前:548 [2020/06/05(金) 22:17:11 ID:ZSs62RcL.net] >>552 有難うございます! しかしそれでは出来ないのです。すいません。
578 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 22:21:45.02 ID:WwtDf+8P.net] >>549 そもそも"コピー"する必要はあるの?
579 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 02:50:09 ID:2JXrsjtz.net] pasteSpecial繰り返して必要なものだけ貼り付けるしかないんじゃない?
580 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 07:05:32 ID:boE/wbIl.net] 何度でも蘇るのが再起だろうな
581 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 08:07:18.40 ID:dTKuJKfw.net] >>436 ロマサガ3とはなかなか分かってる先輩だなw
582 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 12:47:06 ID:EOD/vRIp.net] VBAの配列にもCount使わせて欲しい・・・・ 面倒でたまらないわぁ ちなみにSplitで空配列になったときってUBoundは必ず-1返すのかな まぁSplitする前の文字列が空かどうかで判別すればいいんだけど
583 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 14:19:39.59 ID:nsmtjJW2.net] SetTimerのコールバック関数内でSetTimerしなおすやつは、再起といっていいかも あれ、再帰じゃないし
584 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 14:24:54.65 ID:FUHWS7EH.net] >>558 そういうのはラッパークラス定義しちゃえばいい 要素を持たない配列はuboundで-1になるけど、 配列を返す関数をそのままuboundの引数にするとメモリが解放されないらしい 一度変数に代入してから、その変数を引数にするしかない
585 名前:548 [2020/06/06(土) 19:20:06 ID:evXurMFK.net] >>555 有難うございます!そういうやり方もありますね。勉強になりました。 あれからIF関数と条件付き書式を組み合わせて問題克服できました。 相談に乗っていただけた方みなさん有難うございます。 お騒がせしますた。
586 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:10:37.79 ID:czcu/Wo5.net] ボタンを押してランダムに1ー100の数字をコンピュータに選ばせて、その結果をセルに表示させたいと思いマクロを組みました。 それはできたのですが、ボタンを押すごとに出る数字の履歴を残したいときはどうしたらいいでしょうか?例えば初めはA1、次はA2、次はA3…のようにしたいです。
587 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:27:02 ID:MDOjbT3v.net] また馬鹿が来た
588 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:42:25 ID:Dw2BAEV/.net] 消さなきゃいんじゃないの…
589 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:51:41 ID:czcu/Wo5.net] 1回目、2回目とボタンを押すごとにA列を下方向に順に記録させたいのです。 説明が悪いかも、すみません
590 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:00:00 ID:81VYwWTh.net] 色々やり方があるが回数を持たせるのが簡単だろうな