!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part63
https://mevius.5ch.net/test/read.cgi/tech/1568630099/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part64
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 23d0-o7DB)
2019/12/02(月) 23:43:54.18ID:ngrqyTy20483デフォルトの名無しさん (スッップ Sd0a-HEKX)
2020/02/01(土) 18:20:25.98ID:6d1xNKB7d >>482
随分な言い様だな。
パスワード解除出来ることを知識として知っているかどうかの問題だろ。
俺の場合はかなり昔、といってもOffice2007が出て少しした頃だが、社内マクロのメンテナンスの仕事した時に、既に会社辞めた奴の作ったVBAにパスワード掛かってて、会社に了解を取って解除したことあるけど、実際に解除する奴なんてそんなにいないだろ。
だいたい、何が楽しくて解除なんてするんだよw
パスワード掛かってるコードが糞コードじゃないなんてこたあねーぞ。
随分な言い様だな。
パスワード解除出来ることを知識として知っているかどうかの問題だろ。
俺の場合はかなり昔、といってもOffice2007が出て少しした頃だが、社内マクロのメンテナンスの仕事した時に、既に会社辞めた奴の作ったVBAにパスワード掛かってて、会社に了解を取って解除したことあるけど、実際に解除する奴なんてそんなにいないだろ。
だいたい、何が楽しくて解除なんてするんだよw
パスワード掛かってるコードが糞コードじゃないなんてこたあねーぞ。
484デフォルトの名無しさん (スッップ Sd0a-HEKX)
2020/02/01(土) 18:23:48.41ID:6d1xNKB7d485デフォルトの名無しさん (オイコラミネオ MMb5-ONLx)
2020/02/01(土) 19:30:50.72ID:1yr2tbu5M 他人のファイルって、、
勝手に個人のファイルを会社に持ち込むな
勝手に個人のファイルを会社に持ち込むな
486デフォルトの名無しさん (ワッチョイ 6935-unxX)
2020/02/01(土) 19:46:14.96ID:JknOw5Wd0 しゃべるほどアホが露呈してて草
487デフォルトの名無しさん (ワッチョイ f1a2-/fp1)
2020/02/02(日) 06:03:03.69ID:7y4L711k0 イチゴの苗を盗んでうちのイチゴは世界一とか言う人たちがいたなぁ
他人のエクセルファイルを盗んで一般化して得意になるって同じ精神構造なんだろうなぁ
日本の民度もここまで下がったらもうブラックボックス化して自衛するしかないね
他人のエクセルファイルを盗んで一般化して得意になるって同じ精神構造なんだろうなぁ
日本の民度もここまで下がったらもうブラックボックス化して自衛するしかないね
488デフォルトの名無しさん (アークセー Sxbd-cpDI)
2020/02/02(日) 07:54:10.43ID:+yWqX/mnx コモディティとしか言いようがないVBAでコードを盗むだの何だのと言ってることが笑える
489デフォルトの名無しさん (ワッチョイ 11da-unxX)
2020/02/02(日) 09:18:18.30ID:cGh+eVsA0 公表してもどうせ誰も読めやしないから、パスかけてないわってのが殆どだと思う。
490デフォルトの名無しさん (スプッッ Sdea-rlSO)
2020/02/02(日) 09:38:02.33ID:CPvk3cGFd パスワードで保護する価値はないだろ
価値があると思ってるのは自分だけ
VBAは20年前に終わった古いコードでもう出尽くしてるから今更目新しいのはない
あると思ってるのは誰かがもう採用済み
価値があると思ってるのは自分だけ
VBAは20年前に終わった古いコードでもう出尽くしてるから今更目新しいのはない
あると思ってるのは誰かがもう採用済み
491デフォルトの名無しさん (アークセー Sxbd-cpDI)
2020/02/02(日) 10:05:41.35ID:+yWqX/mnx パワークエリとかスピル関連でVBAのオブジェクトモデルにもどんどん新しい機能が追加されているぞ
目新しいものがないと言い切るのはおかしい
目新しいものがないと言い切るのはおかしい
492デフォルトの名無しさん (ワッチョイ f1ce-unxX)
2020/02/02(日) 11:49:30.13ID:jXfyVbWx0 >>489
他人が作った、他人の仕事専用のコードなんか読む意味がない
他人が作った、他人の仕事専用のコードなんか読む意味がない
493デフォルトの名無しさん (ワッチョイ 11da-unxX)
2020/02/02(日) 11:55:17.84ID:cGh+eVsA0 >VBAは20年前に終わった古いコード
さすがにそれはないわ。
新しいバージョンから使えるコードがあるから。
さすがにそれはないわ。
新しいバージョンから使えるコードがあるから。
494デフォルトの名無しさん (ワッチョイ ea9c-TmxF)
2020/02/02(日) 19:10:02.86ID:mYIZG7DM0 >>490
コードをコビーされたくない財産と思っているのではなくて、書いた人の責任、管理を外れて、コードが勝手に変更されない為に保護するのが一般的。
コードをコビーされたくない財産と思っているのではなくて、書いた人の責任、管理を外れて、コードが勝手に変更されない為に保護するのが一般的。
495デフォルトの名無しさん (ワッチョイ ea9c-TmxF)
2020/02/02(日) 19:14:37.59ID:mYIZG7DM0 他の言語では、変更可能な形で、実務者に配布なんてありえないからな。
496デフォルトの名無しさん (ワッチョイ ea9c-TmxF)
2020/02/02(日) 19:26:59.62ID:mYIZG7DM0 オープンソースの歴史が示している通り、ケチケチするよりオープンにして仲間を増やしたほうが、自分の得になる。
497デフォルトの名無しさん (ワッチョイ 7579-/fp1)
2020/02/02(日) 20:14:04.59ID:hngL1FZE0 列をコピーする際にクリップボードを使わずにコピーをする方法ってないでしょうか?
Columns("A").Copy
Columns("B").PasteSpecial (xlPasteValues)
こんな感じでコピーをするとwindows10標準の「クリップボードの履歴」という機能が使われるらしく、負荷がかかってエクセルブック自体が強制終了してしまいます
数行のデータなら何も問題ありませんが数十万行くらいあると落ちます
「クリップボードの履歴」機能をオフにすれば問題なく処理されるのは確認済みですがオンの状態で作業をしたいです
よろしくお願いします
Columns("A").Copy
Columns("B").PasteSpecial (xlPasteValues)
こんな感じでコピーをするとwindows10標準の「クリップボードの履歴」という機能が使われるらしく、負荷がかかってエクセルブック自体が強制終了してしまいます
数行のデータなら何も問題ありませんが数十万行くらいあると落ちます
「クリップボードの履歴」機能をオフにすれば問題なく処理されるのは確認済みですがオンの状態で作業をしたいです
よろしくお願いします
498デフォルトの名無しさん (ワッチョイ ea9c-TmxF)
2020/02/02(日) 20:21:49.04ID:mYIZG7DM0 >>497
Columns("B").Value=Columns("A").Value
Columns("B").Value=Columns("A").Value
499デフォルトの名無しさん (ブーイモ MM8e-XveV)
2020/02/02(日) 20:22:47.88ID:OwB/30gMM Columns("B").Value = Columns("A").Value
500デフォルトの名無しさん (ワッチョイ 11da-unxX)
2020/02/02(日) 21:11:52.76ID:cGh+eVsA0 Columns("B").Value = Columns("A").Value
より
buf = Columns("A").Value
Columns("B").Value = buf
の方がいいって本当かよ。
より
buf = Columns("A").Value
Columns("B").Value = buf
の方がいいって本当かよ。
501デフォルトの名無しさん (ワッチョイ 5ef7-0Ybi)
2020/02/02(日) 21:51:07.65ID:vSAu5ol40 Columns(1).Copy Destination:=Cells(1, 2)
502デフォルトの名無しさん (ワッチョイ c55f-4v/K)
2020/02/02(日) 22:05:15.57ID:mKkHkkxd0 Destinationは厳密にはクリップボード経由だけど、履歴を残したくないって目的の>>497は達成できるな。
503483 (スッップ Sd0a-HEKX)
2020/02/02(日) 22:06:50.74ID:TNVAL2WHd >>494
俺がメンテナンスしてた時もこれに関してパスワード掛けてたな。
そこは、みんなVBAを弄るので勝手に改変されていって管理出来ないという問題があった。
それであるフォルダにあるブックのVBA全てに有効期限とパスワード掛けるコードとかをその時作った記憶がある。
俺がメンテナンスしてた時もこれに関してパスワード掛けてたな。
そこは、みんなVBAを弄るので勝手に改変されていって管理出来ないという問題があった。
それであるフォルダにあるブックのVBA全てに有効期限とパスワード掛けるコードとかをその時作った記憶がある。
504デフォルトの名無しさん (スッップ Sd0a-HEKX)
2020/02/02(日) 22:08:48.13ID:TNVAL2WHd >>498
多分、数式消えるよ。
多分、数式消えるよ。
505デフォルトの名無しさん (オッペケ Srbd-0TLc)
2020/02/02(日) 22:35:10.30ID:nUy+9nC9r >>504
ん?
ん?
506デフォルトの名無しさん (ワッチョイ 7579-/fp1)
2020/02/02(日) 22:56:08.65ID:hngL1FZE0 返事が遅くなりましたが理想通りの結果を得られました
コピーしてからペーストという概念に捕らわれていましたがこんなこともできるのですね
ありがとうございました
コピーしてからペーストという概念に捕らわれていましたがこんなこともできるのですね
ありがとうございました
507デフォルトの名無しさん (ワッチョイ 6935-unxX)
2020/02/03(月) 07:20:26.91ID:la6dU8XN0 >>500
特にそう書く意味は無いよ
特にそう書く意味は無いよ
508デフォルトの名無しさん (ブーイモ MM81-yzQx)
2020/02/04(火) 22:29:38.52ID:w6oOKiy/M ExcelのかわりにGoogle spreadsheetが台頭してきましたが
これにもマクロは使えるの?
これにもマクロは使えるの?
509デフォルトの名無しさん (スップ Sdea-HEKX)
2020/02/04(火) 22:37:40.55ID:QPddTA8md510デフォルトの名無しさん (アウアウウー Sa9b-YLe+)
2020/02/05(水) 00:55:11.04ID:6fUVVF1Va511デフォルトの名無しさん (ワッチョイ 1f05-gL6P)
2020/02/05(水) 15:59:16.28ID:N1BYfKU30 なんかVBAの実効速度が今日から急に早くなったんだけどなんでだろう?
512デフォルトの名無しさん (ワッチョイ 377c-OB/u)
2020/02/05(水) 19:22:41.84ID:yswtwGvQ0 使うデータ同じで速度が変わったんなら裏でなんか重い処理でも動いてたんじゃないの
513デフォルトの名無しさん (ワッチョイ b735-56gX)
2020/02/05(水) 19:37:41.90ID:GjIRsdly0 windowsのアップデートで妙に早くなることはたまによくあるな
514デフォルトの名無しさん (ワッチョイ f7da-56gX)
2020/02/05(水) 20:42:09.91ID:ljVFwt830 >VBAよりは遥かに優れてるよ
言い過ぎ。
というか、シート内で出来ること以外は機能が殆どかぶってないと思うが。
言い過ぎ。
というか、シート内で出来ること以外は機能が殆どかぶってないと思うが。
515デフォルトの名無しさん (ワッチョイ 9f79-25VD)
2020/02/05(水) 22:14:16.66ID:QzJPWqba0516デフォルトの名無しさん (ワッチョイ f7da-56gX)
2020/02/05(水) 23:05:17.88ID:ljVFwt830 マクロの記録はあるが、乗り換えって・・。
使い分けだろう。
使い分けだろう。
517デフォルトの名無しさん (スプッッ Sd3f-5XTe)
2020/02/06(木) 10:38:54.91ID:Lc0GjY0Ud エクセルは多人数で同一ファイルの同時使用が出来ないからgoogleの方が遥かに便利
518デフォルトの名無しさん (ドコグロ MM6b-YLe+)
2020/02/06(木) 11:40:29.55ID:W5BIAByhM ローカルのExcelブックからDBに上げる・DBからブックに落とすだけのマクロは非常に多いからな
VBAマクロの代替以前に、Googleスプレッドシートに移行した時点で不要になるゴミはとても多い
VBAマクロの代替以前に、Googleスプレッドシートに移行した時点で不要になるゴミはとても多い
519デフォルトの名無しさん (ワッチョイ b735-56gX)
2020/02/06(木) 18:57:22.24ID:QU3mlgEx0 excelブックをメールで行ったり来たりさせてメールボックスパンパン
→消した後に悲鳴
何度見たことか
→消した後に悲鳴
何度見たことか
520デフォルトの名無しさん (ワンミングク MM7f-DTjJ)
2020/02/06(木) 19:11:07.60ID:FEAB4c07M >>510
win32api使えるのかよ?
win32api使えるのかよ?
521デフォルトの名無しさん (ドコグロ MM6b-YLe+)
2020/02/06(木) 19:33:40.30ID:W5BIAByhM522デフォルトの名無しさん (ワッチョイ 9fad-DTjJ)
2020/02/06(木) 19:38:03.11ID:S5nSkDf80 面倒臭いじゃないか
523デフォルトの名無しさん (ドコグロ MM6b-YLe+)
2020/02/06(木) 19:43:08.95ID:W5BIAByhM 普通はその結果をDBなりに同期させる仕組みを考える方が面倒臭いと思うけど、仕事したことないんだろうね
524デフォルトの名無しさん (ワッチョイ b735-56gX)
2020/02/06(木) 19:47:10.12ID:QU3mlgEx0 VBAとGASだとさすがにVBAの方が上かな
GASはローカルファイルへのアクセス権がなさすぎるのと、他スプレッドシート扱うのがかなり面倒くさい。まぁしゃーないっちゃしゃーないんだけど
さっとスクリプト組みたい時はVBA+Excelシート以上にお手軽な環境は無いと思う
>>523
webに対しては確実にgoogleスプレッドシートの方が上だが・・・
どっちが上ってのは無いと思う。使い方次第だろう
GASはローカルファイルへのアクセス権がなさすぎるのと、他スプレッドシート扱うのがかなり面倒くさい。まぁしゃーないっちゃしゃーないんだけど
さっとスクリプト組みたい時はVBA+Excelシート以上にお手軽な環境は無いと思う
>>523
webに対しては確実にgoogleスプレッドシートの方が上だが・・・
どっちが上ってのは無いと思う。使い方次第だろう
525デフォルトの名無しさん (ワッチョイ 9fad-DTjJ)
2020/02/06(木) 20:18:44.88ID:S5nSkDf80 >>523
DBならaccessとodbcでいいや
DBならaccessとodbcでいいや
526デフォルトの名無しさん (ワッチョイ f7a2-Zca7)
2020/02/06(木) 20:23:02.70ID:5wTMgkbk0 DB接続してないエクセルとか糞だろw
GAS?情報共有が楽なだけで話にならん
GAS?情報共有が楽なだけで話にならん
527デフォルトの名無しさん (ワッチョイ 9fad-DTjJ)
2020/02/06(木) 20:50:55.98ID:S5nSkDf80 >>523
そもそもexcelやaccessならADODBで簡単にデータベース連携できるし
そもそもexcelやaccessならADODBで簡単にデータベース連携できるし
528デフォルトの名無しさん (ワッチョイ b735-56gX)
2020/02/06(木) 21:01:17.75ID:QU3mlgEx0 そもそもみんなどういう風に使っているんだ?
俺は・・・
・メインシステムはweb上にあり、ベンダーに開発してもらっている。csvを吐き出すシステムがある
・csvの元になるSQL部分は自作(しょっちゅう変わるから自分で作ったほうが早い)。
・後はそのcsvに対してvbaでちゃーっと加工して配布(順序変えたり見やすくしたり)
・ローカルネットワークにもファイルを置く
こういう使い方だとVBAの方が楽なんだよね。GASを使う理由があまりない。データが必要なら、都度csv落とせば良い
ODBCとかめんどくさくない?
php直接書いたほうが遥かに早いし楽だし、データの劣化を最小限に抑えられると思うんだけどなぁ
俺は・・・
・メインシステムはweb上にあり、ベンダーに開発してもらっている。csvを吐き出すシステムがある
・csvの元になるSQL部分は自作(しょっちゅう変わるから自分で作ったほうが早い)。
・後はそのcsvに対してvbaでちゃーっと加工して配布(順序変えたり見やすくしたり)
・ローカルネットワークにもファイルを置く
こういう使い方だとVBAの方が楽なんだよね。GASを使う理由があまりない。データが必要なら、都度csv落とせば良い
ODBCとかめんどくさくない?
php直接書いたほうが遥かに早いし楽だし、データの劣化を最小限に抑えられると思うんだけどなぁ
529デフォルトの名無しさん (ワッチョイ 9fad-DTjJ)
2020/02/06(木) 21:12:09.33ID:S5nSkDf80530デフォルトの名無しさん (ワッチョイ b735-56gX)
2020/02/06(木) 21:31:53.31ID:QU3mlgEx0531デフォルトの名無しさん (スプッッ Sd3f-b0Wi)
2020/02/07(金) 07:38:57.80ID:wkeLovp2d532デフォルトの名無しさん (スフッ Sdbf-n9KO)
2020/02/07(金) 11:47:05.80ID:aK4BdxNCd 社内のシステムへのログインをVBAで行おうとしたのですが、
特定の入力項目を小ウィンドの選択項目から選んででないとログインできません。
VBAを使って同じような入力内容に出来てるのですがダメです。
何かやり方があれば教えてください。
特定の入力項目を小ウィンドの選択項目から選んででないとログインできません。
VBAを使って同じような入力内容に出来てるのですがダメです。
何かやり方があれば教えてください。
533デフォルトの名無しさん (ベーイモ MM4f-N6vr)
2020/02/07(金) 12:43:05.40ID:cytAyAiUM c++で自作したdllをシャドウコピーして呼び出したいんだけど、そんなことできますかね?
できるなら教えてください
できるなら教えてください
534デフォルトの名無しさん (スプッッ Sd3f-5XTe)
2020/02/07(金) 13:44:00.60ID:EHPtr6+3d 社内システムへのログインでエクセル開くの?
キモくない?
キモくない?
535デフォルトの名無しさん (ワッチョイ 9f42-7zoJ)
2020/02/07(金) 14:23:11.44ID:TkpdzcfH0 うちもエクセルからだな
「え?URLのショートカットかなんかじゃなくそれ?」って思った
「え?URLのショートカットかなんかじゃなくそれ?」って思った
536デフォルトの名無しさん (ワッチョイ f7ce-56gX)
2020/02/07(金) 15:32:34.32ID:YhDqw1xL0 >>532
最後の手段はSendKeysとかWin32APIでマウス操作
最後の手段はSendKeysとかWin32APIでマウス操作
537デフォルトの名無しさん (ワッチョイ 378e-Ygtj)
2020/02/07(金) 17:44:09.47ID:f2jr6wz80 社内のシステムへのログインが全世界どこも同じだと思ってる馬鹿は死ね
538デフォルトの名無しさん (ワッチョイ f7da-56gX)
2020/02/07(金) 19:41:49.69ID:X+WmhjzG0 >>532
選択項目を選ぶと、非表示で隠れている部分にあるフラグが変わると見た。
選択項目を選ぶと、非表示で隠れている部分にあるフラグが変わると見た。
539デフォルトの名無しさん (ワッチョイ f7da-56gX)
2020/02/07(金) 19:45:33.80ID:X+WmhjzG0 あと酷いのになると、テキストボックスが2個重なっていて、
くそっ! 片方ダミーか! ふざけんな! とかさ。
くそっ! 片方ダミーか! ふざけんな! とかさ。
540デフォルトの名無しさん (ワッチョイ 377c-OB/u)
2020/02/07(金) 19:57:32.82ID:xFn4xdfL0 >>539
まさに最近引き継いだものがその罠だった
まさに最近引き継いだものがその罠だった
541デフォルトの名無しさん (ワッチョイ ff63-tipF)
2020/02/08(土) 09:50:54.70ID:8SzUllIw0 セルA1に金額(例えば100)を入れて
セルA2にセルA1の金額の数値を入れた次の文章
代金はセルA1円になります。
↓
代金は100円になります。
を表示させたいです。
自力で下記のまでは出来ました。
Range("A2") = "代金は(セルA1)円です"
ですがセルA1の値を文章の途中に組み込めず困っています。
A2に表示された文章は後でコピー貼り付けに使用します
(この部分は自分で出来ますが・・・)。
ご教授宜しくお願い致します。
セルA2にセルA1の金額の数値を入れた次の文章
代金はセルA1円になります。
↓
代金は100円になります。
を表示させたいです。
自力で下記のまでは出来ました。
Range("A2") = "代金は(セルA1)円です"
ですがセルA1の値を文章の途中に組み込めず困っています。
A2に表示された文章は後でコピー貼り付けに使用します
(この部分は自分で出来ますが・・・)。
ご教授宜しくお願い致します。
542デフォルトの名無しさん (アウアウウー Sa9b-YLe+)
2020/02/08(土) 09:57:09.44ID:zm8ORV47a543541 (ワッチョイ ff63-tipF)
2020/02/08(土) 10:12:44.92ID:8SzUllIw0544デフォルトの名無しさん (アークセー Sx0b-OKS/)
2020/02/08(土) 10:43:22.85ID:/gJCCAG4x Cells(2, 1).Value = "代金は" & Cells(1, 1).Value & "円です"
545541 (ワッチョイ ff63-tipF)
2020/02/08(土) 10:47:03.25ID:8SzUllIw0 有難うございます!そのやり方で今からやってみます!
546デフォルトの名無しさん (ワッチョイ ffcc-VM48)
2020/02/08(土) 11:24:39.88ID:1IpoZ9Ay0 D列に「集計」という文字が含まれていなければ、その行を削除して行間を詰めるために
↓のコードを使いたいのですが、Unionの.Rowのところで「参照が不正または不完全です」になります
Sub Delete_Rows()
Dim LastRow As Long '最終行の変数
Dim DereteRow As Range '該当する行を格納
Dim r As Long '処理の範囲を格納
Dim ws As Worksheet
Set DereteRow = Nothing 'オブジェクトへの参照を解除
Set ws = Worksheets("Sheet1")
' F列を基準にシートの最終行を取得
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
For r = 2 To LastRow '2行目から最終行までB列のセルを対象にする
'D列のセルが"集計"を含まない文字列の行なら DereteRow に追加
If Cells(r, "D") <> "*集計*" Then
Set DereteRow = Union(DereteRow, .Rows(r).EntireRow)
End If
Next r
'DereteRowに行が代入されていれば一括で削除するが、なければ処理を終了
If Not DereteRow Is Nothing Then
DereteRow.Delete
End If
End Sub
↓のコードを使いたいのですが、Unionの.Rowのところで「参照が不正または不完全です」になります
Sub Delete_Rows()
Dim LastRow As Long '最終行の変数
Dim DereteRow As Range '該当する行を格納
Dim r As Long '処理の範囲を格納
Dim ws As Worksheet
Set DereteRow = Nothing 'オブジェクトへの参照を解除
Set ws = Worksheets("Sheet1")
' F列を基準にシートの最終行を取得
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
For r = 2 To LastRow '2行目から最終行までB列のセルを対象にする
'D列のセルが"集計"を含まない文字列の行なら DereteRow に追加
If Cells(r, "D") <> "*集計*" Then
Set DereteRow = Union(DereteRow, .Rows(r).EntireRow)
End If
Next r
'DereteRowに行が代入されていれば一括で削除するが、なければ処理を終了
If Not DereteRow Is Nothing Then
DereteRow.Delete
End If
End Sub
547デフォルトの名無しさん (ワッチョイ 9f01-ep3J)
2020/02/08(土) 12:09:16.53ID:Di3wk8ih0 >>546
そりゃWithもないのに
> .Rows(r).EntireRow
なんてされてもExcelは困っちゃうわな
ルーチン名はDelete_Rowsなのに変数名はDereteRowとか、wsは何に使うつもりなのかとか色々指摘したいところがありまくり
そりゃWithもないのに
> .Rows(r).EntireRow
なんてされてもExcelは困っちゃうわな
ルーチン名はDelete_Rowsなのに変数名はDereteRowとか、wsは何に使うつもりなのかとか色々指摘したいところがありまくり
548デフォルトの名無しさん (アークセー Sx0b-OKS/)
2020/02/08(土) 12:40:15.95ID:/gJCCAG4x >>546
.Rows(r)の"."を消すかActivesheet.Rows(r)に切り替える
蛇足だが、コードにいろいろとおかしな点があるので指摘しておく
・DeleteRowを変数として宣言した直後、まだ何も代入していないのにSet DereteRow = Nothingとやるのは無意味
・ルーチン名をDelete_Rowsにするんだったら削除対象行の変数はDeleteRowではなくTargetRowsとかにした方が良い
・変数 r は「処理の範囲」ではなく「削除対象行判定のループで使用する行カウンタ」と説明しないと意味が通じにくい。「範囲ならばRangeオブジェクトじゃないのか?」と思うし、どの処理で使ってるかも分からない
・変数 ws は何のために宣言してるのか?
.Rows(r)の"."を消すかActivesheet.Rows(r)に切り替える
蛇足だが、コードにいろいろとおかしな点があるので指摘しておく
・DeleteRowを変数として宣言した直後、まだ何も代入していないのにSet DereteRow = Nothingとやるのは無意味
・ルーチン名をDelete_Rowsにするんだったら削除対象行の変数はDeleteRowではなくTargetRowsとかにした方が良い
・変数 r は「処理の範囲」ではなく「削除対象行判定のループで使用する行カウンタ」と説明しないと意味が通じにくい。「範囲ならばRangeオブジェクトじゃないのか?」と思うし、どの処理で使ってるかも分からない
・変数 ws は何のために宣言してるのか?
549546 (ワッチョイ ffcc-VM48)
2020/02/08(土) 13:46:03.51ID:1IpoZ9Ay0 >>547
>>548
ありがとうございます。
↓で
"Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)"
の部分が「プロシージャの呼び出し、または引数が不正です。」になります
Sub Delete_Rows()
Dim LastRow As Long '最終行の変数
Dim TargetRows As Range '該当する行を格納
Dim r As Long '削除対象行判定のループで使用する行カウンタ変数
' F列を基準にシートの最終行を取得
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
For r = 2 To LastRow '2行目から最終行までB列のセルを対象にする
'D列のセルが"集計"を含まない文字列の行なら TargetRows に追加
If Cells(r, "D") <> "*集計*" Then
Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)
End If
Next r
'TargetRowsに行が代入されていれば一括で削除するが、なければ処理を終了
If Not TargetRows Is Nothing Then
TargetRows.Delete
End If
End Sub
>>548
ありがとうございます。
↓で
"Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)"
の部分が「プロシージャの呼び出し、または引数が不正です。」になります
Sub Delete_Rows()
Dim LastRow As Long '最終行の変数
Dim TargetRows As Range '該当する行を格納
Dim r As Long '削除対象行判定のループで使用する行カウンタ変数
' F列を基準にシートの最終行を取得
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
For r = 2 To LastRow '2行目から最終行までB列のセルを対象にする
'D列のセルが"集計"を含まない文字列の行なら TargetRows に追加
If Cells(r, "D") <> "*集計*" Then
Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)
End If
Next r
'TargetRowsに行が代入されていれば一括で削除するが、なければ処理を終了
If Not TargetRows Is Nothing Then
TargetRows.Delete
End If
End Sub
550デフォルトの名無しさん (ワッチョイ 9f01-ep3J)
2020/02/08(土) 14:42:01.53ID:Di3wk8ih0 >>549
ちょっとググったらUnion(Nothing, ...)はダメみたいやね
> Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)
↓
If TargetRows Is Nothing Then
Set TargetRows = ActiveSheet.Rows(r).EntireRow
Else
Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)
End If
ちょっとググったらUnion(Nothing, ...)はダメみたいやね
> Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)
↓
If TargetRows Is Nothing Then
Set TargetRows = ActiveSheet.Rows(r).EntireRow
Else
Set TargetRows = Union(TargetRows, ActiveSheet.Rows(r).EntireRow)
End If
551546 (ワッチョイ ffcc-VM48)
2020/02/08(土) 16:59:25.90ID:1IpoZ9Ay0552デフォルトの名無しさん (ワッチョイ 175f-5WGQ)
2020/02/08(土) 17:09:00.05ID:/OGIL8aD0 D列セルに「*集計*」と入れてみるべし。
553546 (ワッチョイ ffcc-VM48)
2020/02/08(土) 17:20:57.16ID:1IpoZ9Ay0554デフォルトの名無しさん (ワッチョイ 175f-5WGQ)
2020/02/08(土) 17:22:19.30ID:/OGIL8aD0 つまり、確認結果の通りです。
ワイルドカードが使えないので、LIKEかInstrを使ってください。
ワイルドカードが使えないので、LIKEかInstrを使ってください。
556デフォルトの名無しさん (ワッチョイ f7da-56gX)
2020/02/09(日) 13:06:00.86ID:/49HxrXf0 いつのまにかテレビでスギちゃんみなくなったな
557デフォルトの名無しさん (ワッチョイ 172c-4cqo)
2020/02/09(日) 23:14:06.46ID:ltQcsHZu0 auto_openでユーザーフォームを開きます。
テキストボックスにデータを入力してエンターキーを押すとコマンドボタンに進んで
コマンドボタンでエンターキーを押すとデータがシートに入力されて
テキストボックス内がクリアされてテキストボックスにsetfocusします。
またデータを入力して、の繰り返しなんですが
1回目は上手く行くのに2回目に入力した時にエンターキーを押しても進まない現象が多々起こるんです。
そんな時は一度シートを適当にクリックしてユーザーフォームのテキストボックスに戻るとそれ以降はその現象は起きないんですが、正直シートには触らせたくないんです。
エンターキーで進まない現象は必ずマクロを起動させた一回目で発生します。
同じ様な現象で悩んでいる人は居ませんか?
解決策があれば知りたいです。
テキストボックスにデータを入力してエンターキーを押すとコマンドボタンに進んで
コマンドボタンでエンターキーを押すとデータがシートに入力されて
テキストボックス内がクリアされてテキストボックスにsetfocusします。
またデータを入力して、の繰り返しなんですが
1回目は上手く行くのに2回目に入力した時にエンターキーを押しても進まない現象が多々起こるんです。
そんな時は一度シートを適当にクリックしてユーザーフォームのテキストボックスに戻るとそれ以降はその現象は起きないんですが、正直シートには触らせたくないんです。
エンターキーで進まない現象は必ずマクロを起動させた一回目で発生します。
同じ様な現象で悩んでいる人は居ませんか?
解決策があれば知りたいです。
558デフォルトの名無しさん (ワッチョイ f7da-56gX)
2020/02/10(月) 00:37:21.85ID:qIOTpjy+0 カーソルが消えて見えないだけで、実は進んでるんじゃないの?
そういう現象なら知ってるが。
そういう現象なら知ってるが。
559デフォルトの名無しさん (ワッチョイ 9701-w9wO)
2020/02/10(月) 06:52:30.10ID:53UatRUA0 小さい再現ソース出すのが早いかも
560デフォルトの名無しさん (ワッチョイ bf68-7Ol7)
2020/02/10(月) 08:44:50.58ID:/E57ld2P0 最少構成のソース試行錯誤してる間に解決するのもあるあるだしな
561デフォルトの名無しさん (ワッチョイ f7ce-56gX)
2020/02/10(月) 08:53:02.50ID:OYuxrVSd0 対処療法になるけど、起動直後に1回だけ自動でダミーのデータを送り込むマクロを仕込んでおくとか
562デフォルトの名無しさん (ワッチョイ d72f-ndoi)
2020/02/10(月) 22:45:50.30ID:BIhYTAab0 >1回目は上手く行くのに2回目に入力した時に
>必ずマクロを起動させた一回目で発生
どっちだよ
>必ずマクロを起動させた一回目で発生
どっちだよ
563デフォルトの名無しさん (ワッチョイ 9701-w9wO)
2020/02/10(月) 23:11:08.64ID:53UatRUA0564デフォルトの名無しさん (ワッチョイ f7da-Za6j)
2020/02/11(火) 05:10:09.38ID:psNQEJFZ0 させたー 回目?
565デフォルトの名無しさん (スプッッ Sd3f-XyXy)
2020/02/11(火) 07:49:44.54ID:xcQXy4MHd 昔は最小構成ソースを美しいコードとか言ってた時代もあったけど今じゃ可読性の悪いコードの見本
やっぱ誰でも見やすくないとね
自己満じゃダメよね
やっぱ誰でも見やすくないとね
自己満じゃダメよね
566デフォルトの名無しさん (ワッチョイ 9701-w9wO)
2020/02/11(火) 08:34:22.59ID:STnJqlOX0 >>565
昔は少ないメモリがゆえのことで自己満なだけではないし、可読性の悪いコードになるとも限らない
昔は少ないメモリがゆえのことで自己満なだけではないし、可読性の悪いコードになるとも限らない
567デフォルトの名無しさん (ワッチョイ b735-56gX)
2020/02/11(火) 09:16:55.47ID:EGsB/Toy0 知る限り一番縛りがキツイのはポケコン
昔は変数が一文字だけ。変数26種類で終了!って時代があって
可読性が悪いと死ぬ時代があった
オブジェクトももちろんなし
今は多少可読性が多少悪かろうが余裕で読める
昔は変数が一文字だけ。変数26種類で終了!って時代があって
可読性が悪いと死ぬ時代があった
オブジェクトももちろんなし
今は多少可読性が多少悪かろうが余裕で読める
568デフォルトの名無しさん (ワッチョイ bf68-7Ol7)
2020/02/11(火) 09:17:00.76ID:mxXo+J1O0569デフォルトの名無しさん (ワッチョイ 9f01-ep3J)
2020/02/11(火) 09:37:10.38ID:4y2EJSQ80 そもそも最小構成ソースってなに?
570デフォルトの名無しさん (ワッチョイ f7ce-56gX)
2020/02/11(火) 10:38:55.72ID:CJD1Or630 最初はトラブルシューティング話をしていたのに、565がいきなり関係ないことを言い出した
571デフォルトの名無しさん (ワッチョイ bf43-Wgw0)
2020/02/11(火) 23:45:05.58ID:nC/jcaXZ0 integerとlongについて教えてください
今までは数値によりこの二つは使い分けた方がいいと思っていました
しかし、ネットで調べるとintegerも結局longに変換?しているためlong型で統一した方がいいといったことが書かれています
となると、integerの使いどころはどこになるのでしょうか?
今までは数値によりこの二つは使い分けた方がいいと思っていました
しかし、ネットで調べるとintegerも結局longに変換?しているためlong型で統一した方がいいといったことが書かれています
となると、integerの使いどころはどこになるのでしょうか?
572デフォルトの名無しさん (ワッチョイ f7ce-56gX)
2020/02/11(火) 23:51:45.85ID:CJD1Or630 >>571
昔の名残と言い切っていいと思う
今は使い分ける意味があんまりなくなってしまった
強いて言えば大きい配列にするとメモリの使用量が変わってくることぐらい
バイナリファイルの読み書きでも結果が変わるけど、そもそもバイナリデータの処理はVBAに向いてない
昔の名残と言い切っていいと思う
今は使い分ける意味があんまりなくなってしまった
強いて言えば大きい配列にするとメモリの使用量が変わってくることぐらい
バイナリファイルの読み書きでも結果が変わるけど、そもそもバイナリデータの処理はVBAに向いてない
573デフォルトの名無しさん (ワッチョイ f7ce-56gX)
2020/02/11(火) 23:53:50.82ID:CJD1Or630 メモリの使用量が目に見えて変わってくる
にしといて
突っ込まれそうだから
にしといて
突っ込まれそうだから
574デフォルトの名無しさん (ワッチョイ cbda-OxJ8)
2020/02/12(水) 00:34:42.09ID:H+ZtqLYW0 1048576行だから縦はLong。
16384列だから横はInteger。
異論ある?
16384列だから横はInteger。
異論ある?
575デフォルトの名無しさん (ワッチョイ 129c-zeWM)
2020/02/12(水) 02:07:44.57ID:Xc/lg/zI0 仕様変更に備えてlong一択
576デフォルトの名無しさん (ワッチョイ cb8a-918i)
2020/02/12(水) 02:23:22.72ID:X92zMCbd0 縦はともかく、横が拡張されることなんかあるんかいな。
577デフォルトの名無しさん (ドコグロ MMaf-2sCL)
2020/02/12(水) 07:15:12.66ID:RAjHSRhnM 過去に拡張されたことあるから今後もあるかも
って思うのは不思議じゃない
って思うのは不思議じゃない
578デフォルトの名無しさん (ワッチョイ 16cc-BDVY)
2020/02/12(水) 14:43:59.70ID:ktDCHij50 A列に今日の日付が入っている行であれば、同じ行の"B"cnt〜"AA"cnt+2を水色でぬりつぶす
(対象はA列の4行目から最終行)
と
B列に数字の1が入っている行であれば、同じ行の"B"cnt〜"AA"cnt+2を赤色でぬりつぶす
(対象はA列の4行目から最終行)
というのをしたくて書いたのですが、エラーなどはなく、何も起きません
原因を教えてください。
Sub tes()
Dim cnt As Long
Dim buf As String
Dim cnt2 As Long
buf = Date
For cnt = Cells(Rows.Count, 1).End(xlUp).Row To 4 Step 2
If Cells(cnt, 1) = buf Then
Range(Cells(cnt, 3), Cells(cnt + 2, 27)).Interior.Color = RGB(173, 242, 249)
End If
Next cnt
For cnt2 = Cells(Rows.Count, 2).End(xlUp).Row To 4 Step 2
If Cells(cnt2, 2) = 1 Then
Range(Cells(cnt, 3), Cells(cnt + 2, 27)).Interior.Color = RGB(255, 0, 0)
End If
Next cnt2
End Sub
(対象はA列の4行目から最終行)
と
B列に数字の1が入っている行であれば、同じ行の"B"cnt〜"AA"cnt+2を赤色でぬりつぶす
(対象はA列の4行目から最終行)
というのをしたくて書いたのですが、エラーなどはなく、何も起きません
原因を教えてください。
Sub tes()
Dim cnt As Long
Dim buf As String
Dim cnt2 As Long
buf = Date
For cnt = Cells(Rows.Count, 1).End(xlUp).Row To 4 Step 2
If Cells(cnt, 1) = buf Then
Range(Cells(cnt, 3), Cells(cnt + 2, 27)).Interior.Color = RGB(173, 242, 249)
End If
Next cnt
For cnt2 = Cells(Rows.Count, 2).End(xlUp).Row To 4 Step 2
If Cells(cnt2, 2) = 1 Then
Range(Cells(cnt, 3), Cells(cnt + 2, 27)).Interior.Color = RGB(255, 0, 0)
End If
Next cnt2
End Sub
579デフォルトの名無しさん (ワッチョイ ebce-OxJ8)
2020/02/12(水) 16:42:09.14ID:Z+Yfmz1v0 >>578
Forの条件が逆
For cnt = 4 to Cells(Rows.Count, 1).End(xlUp).Row
For cnt2 = 4 to Cells(Rows.Count, 2).End(xlUp).Row
Forの条件が逆
For cnt = 4 to Cells(Rows.Count, 1).End(xlUp).Row
For cnt2 = 4 to Cells(Rows.Count, 2).End(xlUp).Row
580デフォルトの名無しさん (ワッチョイ de8c-u3Kg)
2020/02/12(水) 17:49:54.70ID:5NT9XmcH0 VBA学びたいんだけど、office以外でVBA出来るところってない?
581デフォルトの名無しさん (アウアウエー Saaa-GUQA)
2020/02/12(水) 17:53:09.88ID:yl8WS00pa LibreOfficeで使える。
インテリセンスが使えないからだれも使わないしそれでもLibreOfficeつかうならpythonで動かす。
インテリセンスが使えないからだれも使わないしそれでもLibreOfficeつかうならpythonで動かす。
582デフォルトの名無しさん (ドコグロ MM32-H6bD)
2020/02/12(水) 18:16:19.33ID:gfctBwevM 今から学ぶなら>>414かGoogleスプレッドシートのGASにしとけば?
どっちも無料だしVBAはレガシーでもうすぐ無くなるよ
どっちも無料だしVBAはレガシーでもうすぐ無くなるよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 地震 [Hitzeschleier★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【地震】 茨城 栃木 埼玉 千葉 震度4 [KingFisherは魚じゃないよ★]
- もうなんか最近の日本人って大災害について"諦めてる"よな、災害が起きても助け合う精神がないもんな [904880432]
- 【悲報】人気女性落語家、気づいてしまう…「将棋をみてたら女性にのみ女流棋士などと"女"をつけられる、くだんな笑」 [339712612]
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
- ムミィ🥺いる❓🏡
- おさかなさんあつまれえ
- 自民党、金融所得課税30%で決定か。株を売ったり、配当金が入ると国が30%持って行きます [838847604]
