Excel VBA 質問スレ Part66
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part65 https://mevius.5ch.net/test/read.cgi/tech/1584430040/ ※デフォルト設定 >>2 ここには馬鹿しか来ませんよ 貴方と私を含めて 相談させてください。 あるデータ群に対して、データの大小が分かりやすいように 「条件付き書式」→「カラースケール」でセルの色付けをしています。 セルに色付けた後に、セル中の数字が邪魔で、数字を見えなくしたいと考えています。 最初考えたのは、各セルに対してセル色と同色のフォント設定をすればよいと思いました。 が、どうも条件付き書式でつけられたセルの色は、セルの色ではないらしく .Interior.Color→色なし(16777215)、とのことで詰まってしまいました。 カラースケールで色付けた後に、文字が見えなる方法について存知の方、 アイディア思いつく方いましたらご教授お願いいたします。 最初からデータは別の位置に書いて色付けしたいセルは空白のままにしときゃいいんじゃね ID:KpBIrL5Ad ID:74X5YOol0 ID:MibsCGor0 >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 >出来る奴は瞬時に何通りかは思いつく。 >もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。 >瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。 >>5 ありがとうございます。 思った通りの表示になってくれました。 勉強になりました。 >>6 返信ありがとうございました。 >>4 でも書いた通りカラースケールでの色付けは、 セルに色をつけている訳ではないようなのです。 (カラースケールで色付けしたセルをコピー→書式のみ貼り付け、などで試すと分かるかと思います) >>8 セルに色を付けた場合、条件付き書式の条件が成り立った場合に指定した書式で上書きされる >>7 日本語勉強しろなwww 人の言ってることも理解出来ない、質問の意味も分からないじゃ話にならんよw >>4 元々、そのデータ全部の文字を見えなくしたいなら条件付き書式で文字も背景色と一緒にすれば可能だけどお勧めはしないね。 >>10 そうだな、日本語勉強して自分で書き込んだ↓の意味を整理して答えてくれww ID:KpBIrL5Ad ID:74X5YOol0 ID:MibsCGor0 ID:EYEPvAyt >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 >出来る奴は瞬時に何通りかは思いつく。 >もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。 >瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。 >>13 まだ分かって無かったの? 5通り思いつくなんて言って無いんだがw >>14 じゃあ具体的に何通り思い付くんだよw ww で、それが最善じゃないのか?できる奴の癖にww >出来る奴は瞬時に何通りかは思いつく。 >出来る奴は瞬時に何通りかは思いつく。 >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 ID:KpBIrL5Ad ID:74X5YOol0 ID:MibsCGor0 ID:EYEPvAyt >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 >出来る奴は瞬時に何通りかは思いつく。 >もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。 >瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。 >>15 やっと理解出来たようだな。 勝手な思い込みで先走るのはいかんね。 理解出来たら、勝手な思い込みで迷惑かけてるんだから謝罪するのがまともだと思うがw 具体的って、そんなの内容によるわな。 最善って、だからその場合は1通りだが、条件等で最善は変わるから条件が詰められて無ければ1通りじゃ無いぞ。 ここみたいな質問の場合は条件が詰められて無いことも多いしな。 具体的な例なら今は無理だから帰りの時だな。 >>17 >>14 具体的に何通りだよw 言うことブレブレすぎだww お前は「言ってることがブレブレでごめんなさいもうしません」って謝れよww それともあれか?「質問の意味がわかってないバカです」て認めるか?ww >出来る奴は瞬時に何通りかは思いつく。 >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 ID:KpBIrL5Ad ID:74X5YOol0 ID:MibsCGor0 ID:EYEPvAyt >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 >出来る奴は瞬時に何通りかは思いつく。 >もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。 >瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。 自称「できるやつ」の名言集w でもこいつは回答にコードも出さない素人以下ww ID:KpBIrL5Ad ID:74X5YOol0 ID:MibsCGor0 ID:EYEPvAyt ID:bK9/OgSI (1) 最善の方法が唯一になると明言w >「バカと違って」質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 (2) できる奴は何通りも思い付くw >出来る奴は瞬時に何通りかは思いつく。 (3) 唯一になるといった直ぐあとに手のひらクルーww >最善って、だからその場合は1通りだが、条件等で最善は変わるから条件が詰められて無ければ1通りじゃ無いぞ。 (4) 唯一のできるやつの最善の方法が改善できるとかww最善じゃねえww >瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。 (5) そしてプライド高そうなベテラン自慢ww >もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。 俺より馬鹿なやつっているんだな みっともない喧嘩だねぇ このスレのおかげで自殺者が2人減ったと思えば我慢できるだろ? いや、そうでもないか 何が楽しくて生きているのだろう >>18 全くブレて無いんだがw 最初から何通りかは思いつくと言ってるだろw 最初から具体的に何通りなどと想定していない発言だ。 内容によって3通りになる場合もあれば5通りになる場合もある。 それに最適と考える1通りの場合だってある。 ←これがあるから「何通りかは思いつく」の発言で、「最適の1通りの場合もありうる」等と追加して全ての状況に対応する必要は無い。 こんなのは日本語扱っていれば当然の話だからだ。 そうしないと、やり取り自体が出来なくなる。 お前の「ブレブレ」という単語の意味はどの辞書に載っているどういう意味なのか、そしてそういう説明をしていないからその不備をもって日本語が出来ていない等と突っ込むことなどという事態になってしまう。 だから相手の言っている意味を推し量ってやり取りをする必要があるし、俺もお前も実際にそうしてる。 しかし、お前の「・瞬時に5個思い付く(ドヤア)」は、「瞬時に5通り思いついたとして」の例示に対して、常に5通り思いつくと解釈したということだ。 これは完全にお前の日本語の理解が未熟だということを表している。 そういうわけで「ブレブレ」なら俺の何処が「ブレブレ」なのかを示す必要がある。 そして、お前はまだ日本語の理解不足でかけた迷惑を謝罪していないな。 理解不足でないと言うなら、お前の「・瞬時に5個思い付く(ドヤア)」は日本語としてどういう解釈の後に成り立っているかを示す必要がある。 >>24 いがみ合う二人を作ってしまうようなスレならば、無い方がいいのかもしれない 精度1ms程度、20ms間隔でイベントを発生させたいんですがVBAで使える良いタイマーは無いでしょうか settimerでは精度も分解能も足りないようです。 そもそも高精度タイマーつかわんと、標準のタイマーで1msは無理なんだが >>25 ブレてんじゃんww できる奴なんだろ? じゃないなら「私の"何通り"には1つでも含まれますごめんなさいもうしません」って謝れよww あとコード付で答えたことないこともなw >出来る奴は瞬時に何通りかは思いつく。 >バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。 >内容によって3通りになる場合もあれば5通りになる場合もある。 >それに最適と考える1通りの場合だってある。 お前はVBAならintもint()も同一視するのかよww 素人めw 1個か3個か5個か、断言も出来ない臆病者めww >>25 言い訳がましいんだよなww >最初から具体的に何通りなどと想定していない発言だ。 →普通ツッコまれるから想定するんだよなあw >内容によって3通りになる場合もあれば5通りになる場合もある。 それに最適と考える1通りの場合だってある。 →最適は1つじゃないのかねww それとも要件がわからないから最適と言えませんぴえーんとか社会で言ってるのかww >←これがあるから「何通りかは思いつく」の発言で、「最適の1通りの場合もありうる」等と追加して全ての状況に対応する必要は無い。 →後だしで言い訳ww それまでずっと「何通りか」を固持してるのになww >お前の「ブレブレ」という単語の意味はどの辞書に載っているどういう意味なのか、そしてそういう説明をしていないからその不備をもって日本語が出来ていない等と突っ込むことなどという事態になってしまう。 →頭固いねえw日本語の由来とかにこだわって嫌われるタイプだろwwww そんなんだからずっとVBAおじさんなんだよw >しかし、お前の「・瞬時に5個思い付く(ドヤア)」は、「瞬時に5通り思いついたとして」の例示に対して、常に5通り思いつくと解釈したということだ。 →じゃあ「何通りか思いつく」は具体的に何個なんだよww 腹くくってきめろやww >>31 面白いよなww 仮に結論をそっちに寄せると、 今までの発言が全て、 「瞬時に思い付きます。でもそれは1通りでもあるし複数通りでもあるし、思い付かないかもしれません」 とかいう、「私は10年以上のベテラン(笑)だけど雑魚です」って告白するような発言になるんだぜww こんなちょろいやつ初めてだわw サンプルコードも出せないわけですわww >>31 だからどこがブレてんだよwww さっさと指摘しろな。 最初から場合によると言ってるがw お前はIf文やSelect文を使えないのか? >>32 www お前の考えだと頭が固くなるという話をしたのにw そんな頭の固い話じゃ会話にならねえと言ってる。 あいかわらず日本語が未熟だなw >>33 全てに対応したやり取りなんて出来ないし、誰もやってないと言ってるんだ。 お前も出来ていない。 まともな奴ならそういう前提で会話してる。 >>33 ところで、「・瞬時に5個思い付く(ドヤア)」が間違ってたことについては無視か? 触れて欲しくない? そういうわけにはいかんぞ。 散々迷惑かけてるんだからな。 >>34 VBA10年おじさん大発狂の4連投してて草 高血圧だな、体は大事にしろよw >だからどこがブレてんだよwww 自分が日本語分かってねえじゃねえかw 「場合による」は後だしだぞww何通りかは思い付くの時点で名言してるか?ww >お前の考えだと頭が固くなるという話をしたのにw お前のは表現のゆらぎじゃなくて、明確にずれてんだよw ほら、1個か3個か?臆病者めwww >全てに対応したやり取りなんて出来ないし、誰もやってないと言ってるんだ。 10年おじさんなら最適解出せるだろ?w 「瞬時に思い付きます。でもそれは1通りでもあるし複数通りでもあるし、思い付かないかもしれません。私は10年以上のベテラン(笑)だけど雑魚ですすいません」って告白してもいいぞw >ところで、「・瞬時に5個思い付く(ドヤア)」が間違ってたことについては無視か? 最初から何個か名言しない臆病者のせいで仮に特定してあげてるだけだよww お前のせいじゃんwww 5個のところ好きな数字にしろよww 数字特定したら次はほんとに「瞬時に思い付くか」テストしたげてもいいなw てか>>28 にも答えてないしなw 10年以上やってるのにww >>39 間違いを認めるか、間違って無い根拠を示せ。 逃げようとしてるのミエミエだぞw ↑もうこれを示さない限り先には進まん。 >>40 言い返せないことを認めた負け宣言あざっすww >>28 もわかんないんだもんなw よっわ、こりゃVBA10年おじさんだわww これに懲りたらてきとーなこと言ったり「10年以上前だけど(ドヤア)」とか言うの控えとけよww こうやって恥かくからなww あ、でもまた数年後思い出して修正するんでしたっけww こいつのプロダクトとかアウトプットは信用できないなww ここで教わった「空白になるまで」とか 「空白じゃなければ」 って言うのが自分の職場で凄い役に立って多用してますわ ケースによるんだろうけどこれが当たり前なのかあまり使わない方がいいのはわからない Sub 空白まで処理 () Dim gy As Long Do while cells(gy, 5) <> "" 何かの処理 gy = gy + 1 loop End Sub Sub 作成者を入力させる () Dim Ib As String Ib = Inputbox ("フルネームで入力して下さい","作成者","") If Ib <>"" Then Range("A4").value = Ib Else Msgbox ("後で入力して下さい",vbokonly,"作成者欄") End If End Sub ここら辺とか職場で多用してたら俺です。 あと色々覚えて作ってて思うのが絶望的に変数の名付け方にセンスが無い… データ型は深く覚えなくてもいいってサイトで見たけどVbMsgBoxResultとか前スレで教えたくた人のおかげで役立ってるし多分覚えた方がいいデータ型も結構あるんだろうなぁと if文ってスゲー便利!って言ってるのと変わらんぞ 条件ループなんてプログラミング言語として最低限の必須機能 >>45 変わらんぞというかまさにそこに感動してるレベルの入門者ですよ ただ毎日コードを何かしら書かないとすぐ忘れ書き方のルールを忘れちゃいますわ ある程度多用する基本的なコードは自分でテンプレ作ってそこから引用してるから 必要なコードは必要な時だけそこから引っ張れば良いという人ももいたけどやっぱこのマクロ作ろうと思ってカタカタと悩まずに打って作れるようになりたいですね >>44 繰り返しの内側やIF文の内側ではインデント(字下げ)すると読みやすくなる あと個人的には変数宣言(Dim)の下に空行入れてる システムにお願いしても駄目ならプロセスのプライオリティを 思い切り上げて他のプロセスをできるだけ起動させないとか。 >>44 書けないとか忘れるなんて言ってるけどただのネタだろ? 普通にコピペしたら Msgbox とはならない 自動的に MsgBox に修正されるからな >>49 いや、ここでのレスは手打ちだよ そのぐらい練習癖つけないと忘れちゃう とにかく体に無意識に覚えさせたい は?手打ちならVBEに入力しなきゃ意味ないだろう それとも常時Excelに触ることができない環境でイメージトレーニングでもしているの? それならキーボードじゃなくて手書きをお勧めするよ いやVBE触りながらスマホで2ちゃんもやってるんよ 家帰ってダラダラしたいのに勉強しなきゃという強迫観念すらあるんですわ そのぐらい使いこなせるようになりたひ >>41 逃げるのかねwww 間違いを認めるか、間違って無い根拠を示せ。 へー、スマホで打ち込んだのか スゲーな 尊敬するわ スマホは本当に入力がむずかしい iphoneだけど、@ とか ? とか ; とか、 半角と全角を見分ける方法ないですかね >>41 なんだ、敗走か? 言い返せなくなると敗走? 「・瞬時に5個思い付く(ドヤア)」が間違ってたことに反論出来なくて敗走? >>58 俺より馬鹿じゃないから気にしなくて良いよ! VBA7以前でPtrSafe付コードを修正する際にコンパイルエラーを避けるには、該当箇所を一つずつコメントアウトしないといけないのでしょうか '変数cに列番号が記録されており、その右隣の列から右に向かって最終列(変数LastCol)までに一つ目の文字列"型式"がある1つ手前の列番号を変数ccに記録したいのですが、これであってますか? cc = Range( c : LastCol ).Find("型式").Columns - 1 検索条件が甘いのと見つかんないとエラーが出るのが問題だけど cc = Range(Columns(c + 1), Columns(LastCol)).Find("型式").Column - 1 >>41 結局、勝ち負けだけで論理的に正しい間違いはどうでも良い奴だったな。 こういう奴は確かに拘ることをしないからいつまでたっても初心者を脱っすることが出来ない。 実際には言い負かされてるんだが言い負かされなかった形だけあれば満足すると。 こういう糞がどこで自尊心を保っているのか全く理解出来んw 基地外同士のケンカがやっと終わったか 最初に引いた奴の方が偉いな はい次の方 ネットで拾ったコードをつぎはぎ足してoffice2010のExcelで使ってたけど 今年会社がやっと2019に上げるらしい 使えなくなるコードがあったら終わるわ 32bit→64bitならエラーが出るかもだが、それ以外は特に変更はないはず クラス化して再利用考えて作ってたのですが、getter経由で取得したデータを処理したり、ボタン関係の養生したり、フォームに描画反映したりでユーザーフォームにコードが集中してしまいました 構造が悪いのでしょうか ユーザーフォーム -ボタンイベントコールバッククラス -シートのデータ書き換えクラス -割込タイマークラス -シリアル機器インターフェースクラス --各機器のラッパークラス ---COMポートクラス >>75 何でクラス化したのにフォームに集中するの? 寧ろクラスに分割されるんじゃなくて? >>75 単純にGetter以外のメソッドを実装すればいいのでは? ユーザーフォームは俺のようなVBA超初心者にとって憧れだわ ある程度マクロ作ったら とりあえずThisWorkbookのとこで Private sub Workbook_Open() UserForm1. Show End Sub を作って ユーザーフォームのShowModalをFalseにする ↓ で使えるのはコマンドボタンという… ボタンクリックに標準モジュールで作ったプロシージャ名を貼り付けると… 毎回これじゃそりゃ上達しないわ もっとコード覚えて効率的な高見を目指したいところだけど脳がついていかない >>80 いや、流石にこれじゃいかんわ情けないと自覚 標準モジュールにあるプロシージャが自作のコードならまだしもマクロの記録を無駄な動きだけ消して貼り付けたりネットのをパクって少しいじったりするだけ ユーザーフォームもコマンドボタン以外に使い方わからず使ってないし CSVやtxtを読み込んだりとかそういう特殊な事書ける人は凄いわ 若い頃から情報システムとかそういう勉強すればよかったわ 英語 資格 PCスキルの時代は変わらんね >>76 >>77 ポーリングしてる機器Aの状態に応じて機器B、Cに異なるコマンドを送ってデータを取得する様な処理が何通りか合って多くなってます。インターフェースクラスとの間に処理クラスみたいなのを入れるのでしょうか >>82 データの取得をクエリサービスクラスに分離してください フォームクラスはフォーム自身の管理とサービスの呼び出しだけを行うものです >>81 今はボタン使うマクロしか作る予定がないだけだと思うが。 csvを使うマクロが必要になった時に調べるだろうし、 今は知らないからって自虐的になる必要ないんでは? >>82 一般的にオブジェクト指向は「最終的にやらせたいこと(=やれること)」をメソッドとしてクラスに定義にして、 そのための条件や必要なデータなどはクラス自体が判断したり取得したりするか、引数として与える もし、Getter等でデータをメインルーチンに集めて統合的に処理するなら従来の手続き型になる 今回の例で言えば、 機器BCからから受け取ったデータを処理するPublicメソッドを定義したクラスを作って 機器Aに応じて機器BCにコマンドを送ったりっていった処理は、そのクラス内でやるのがいいかも ExcelフォームにExcelグリッドコントロールがあればむてきだたかもしれない 割り込みとかコールバックとかわからないシロートの発想で笑える >>84 CSVを扱う必要性がじりじり迫ってるんだけどネットにあるコードの窃盗常習犯で覚える脳みそがないからノースキル野郎 当然モチベもないから全然進んでない @ダイアログで任意のCSVデータを選択して それを今開いているシートに読み込まれる(CSVデータは読み込んだ後に自動で閉じる) (元々シートにグラフがあるがそれはそのまま) Aこのシートをブック内の一番右にシートをコピー 多分Aはどこかで拾えそうだけど@のプロシージャがありそうでなかなかネットから盗めず激ムズ ここの勉強できる人達は勝ち組だよ 非表示のシートがいくつかある状態で、一番右端のシートをアクティブにしたいのですが、worksheets.countで取得しようとすると、非表示のシートが選択されてしまいます 表示されているシートの一番右端をアクティブにするにはどうすればいいですか? 質問がおかしかったので書き直します マクロブックでなくアドインでやっています 一番右端のシートから値を取ってきて、その後に作成する新規のシートに貼り付けたいです Sheets(WorkSheets.Count).Activateで、表示上の一番右端のシートをアクティブにすることはできるのですが、操作ができません 非表示のシートがいくつかあり、シート番号は若くてもそちらがWorkSheets.Countで選ばれているようで、値はそこから取ってきてしまっているみたいです エクセルの表示上のシートの並びで、一番右端を選択してそこから値を取りたいのですが、どうすればいいでしょうか? For i = Worksheets.Count To 1 Step - 1 If Worksheets(i).Visible Then Worksheets(i).Activate Exit For End If Next >>91 あー、なるほど カウントを減らしていって最初にヒットしたVisibleでループを抜ければいいんですね 助かりました、ありがとうございます シート1にラベルやタイトルや色を設定した 雛型になるグラフがあって それをアクティブなシートにコピーして貼り付けられる事コード、もし出来れば教えて下さい。 今はシート1に戻ってグラフをコピーして 貼りたいシートに戻って貼り付け をやってます 数値は反映させなくて雛形になるグラフをとにかくすぐにアクティブなシートに持ってきたいです マクロの記録でもやり方わからずです… シート1にある("グラフ1")というのを アクティブなシートに貼り付け、わかりませぬ Ruby なんか、こういう感じで、CSV ファイルを1行ずつ処理していくだけ。 GUI で処理すると、Rubyよりも何倍も難しい require 'csv' file_path = ARGV[ 0 ] # 引数には、ファイルパスを渡す。input.csv # CSV ファイルを、1行ずつ処理する CSV.foreach( file_path ) do |row| puts "#{ row[ "col_1" ] } : #{ row[ "col_2" ] }" # 列1・列2 end シート1にあるグラフ1をアクティブシートにコピペ 調べてみたところ結局俺がやりたいのはシンプルにこれか マクロの記録だと限界あるわ。 Sub 数値反転() Dim ms As VbMsgBoxResult Dim gg As Long ms = MsgBox("マイナス値?", vbYesNo, "B列C列を確認") If ms = vbYes Then gg = 113 Do While Cells(gg, 2) <> "" Cells(gg, 17) = Cells(gg, 2) * -1 Cells(gg, 18) = Cells(gg, 3) * -1 gg = gg + 1 Else Do While Cells(gg, 2) <> "" Cells(gg, 17) = Cells(gg, 2) Cells(gg, 18) = Cells(gg, 3) gg = gg + 1 Loop End If End Sub ドヤ顔でいけるだろと思ったらnoを選択するとElseの次のDo whileのところでエラーになりますけどどう手直ししたらいいですか >>97 レスした後にvbnoの時のgg入れ忘れてたと思ってElseの後に gg=113を入れたけどやっぱりエラーになりました 根本的にルールが間違ってます? 1つめの Do while に対応する Loop がない >>99 ほんと恥ずかしすぎるミスでした。 ありがとうございます。 間違っといてなんだけど自分の考え方が間違ってない事もわかってホッとしました。 何言ってんだこいつと思われて当然ですがそんな気持ちです ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.4.7 2024/03/31 Walang Kapalit ★ | Donguri System Team 5ちゃんねる