ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
関連スレ
Excel VBA 質問スレ Part79(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1674875532/
※前スレ
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
探検
Excel VBA 質問スレ Part80
■ このスレッドは過去ログ倉庫に格納されています
2023/05/31(水) 08:23:38.97ID:4RV1IxmB
292デフォルトの名無しさん
2023/12/29(金) 20:53:15.92ID:1fvRXsft >>283
Excelを使わずに自分でデスクトップアプリを作った方がいいよ
Excelを使わずに自分でデスクトップアプリを作った方がいいよ
293デフォルトの名無しさん
2023/12/30(土) 01:00:29.23ID:lZZlE2RF >>291
これな。ネットの野良マクロをコピー職人が多い事多い事
これな。ネットの野良マクロをコピー職人が多い事多い事
294デフォルトの名無しさん
2023/12/31(日) 00:00:13.72ID:gZgGGHZV 綺麗すぎるコードはかえって怪しいかもな
295デフォルトの名無しさん
2023/12/31(日) 01:35:35.84ID:vraHwHL1 学校のテストじゃないんだから、評価されるのは仕事で結果を出したやつだけ
自作かコピペか、自分で考えたか人に聞きまくったかAIにやらせたか、手段が問われることなんてないから
自作かコピペか、自分で考えたか人に聞きまくったかAIにやらせたか、手段が問われることなんてないから
296デフォルトの名無しさん
2023/12/31(日) 17:53:00.32ID:3wmF+Ciz Dim Match As Object
Dim Matches As Collection
Dim Re As Object
Set Re = CreateObject("VBScript.RegExp")
Re.Pattern = "\d+"
Re.Global = True
Set Matches = Re.Execute("123qwe456rty789oikj")
For Each Match In Matches
Debug.Print Match.Value
Next Match
上記を実行するとMathesの型が違うとエラーが出ます。
Matchesが返すのはコレクションだと聞いていたのですが、Objectなのですか?
as Collectionで宣言するのは何故間違いなのでしょうか?
Dim Matches As Collection
Dim Re As Object
Set Re = CreateObject("VBScript.RegExp")
Re.Pattern = "\d+"
Re.Global = True
Set Matches = Re.Execute("123qwe456rty789oikj")
For Each Match In Matches
Debug.Print Match.Value
Next Match
上記を実行するとMathesの型が違うとエラーが出ます。
Matchesが返すのはコレクションだと聞いていたのですが、Objectなのですか?
as Collectionで宣言するのは何故間違いなのでしょうか?
297デフォルトの名無しさん
2023/12/31(日) 18:00:03.29ID:fNILhI+9 CollectionてVBA内部世界のオブジェクト管理に限るんじゃないの?
CreateObjectで作ったVBA外部のオブジェクトを扱えるとは思えないけど
CreateObjectで作ったVBA外部のオブジェクトを扱えるとは思えないけど
298デフォルトの名無しさん
2023/12/31(日) 18:55:45.23ID:1wnOvxvM >>296
クラスモジュールに書いてる?
クラスモジュールに書いてる?
299デフォルトの名無しさん
2024/01/01(月) 00:07:34.93ID:MaH6J7uc 開けましておめ
300デフォルトの名無しさん
2024/01/01(月) 01:30:53.10ID:/rCM9JK/ >>295
仕事だからこそ、どう作られているかが重要。
仕事だからこそ、どう作られているかが重要。
301デフォルトの名無しさん
2024/01/02(火) 08:54:33.87ID:nzmFeBBB >>283
やりたい目的言えば別の代替案出てきそう臭がする。
やりたい目的言えば別の代替案出てきそう臭がする。
302デフォルトの名無しさん
2024/01/02(火) 14:58:32.95ID:NJgc4isg Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyControl Then
MsgBox "ok"
End If
End Sub
UserForm1にリストボックスを設置してKeyDownイベントを置いただけです
Ctrl
Alt
Shift
を押してもキーダウン
イベント自体発生しないのですが何かヒントありますか?
もう少し詳細に書きます
If の行にブレイクポイントを作っても上の3つのキーを押したときは、無反応です
他のキーを押した場合はVBEが反応してブレイクポイントで処理が止まったことを示す強調色が表示されます。この結果から、上の3つのキーを押した場合のみKeyDownイベント自体が発生していないと判断しました
実は、自宅のデスクトップパソコン(Excel2019)でこのコードを実行すると、上の3つのキーでもちゃんと反応してくれます
会社のノートパソコン(おそらくExcel2016)だと上の3つのキーを押したときだけ無反応です。他のキー、例えば数字やアルファベットキーを押した場合はイベント発生します。
コードはコピペしてるので完全に同じです
よろしくお願いします
If KeyCode = vbKeyControl Then
MsgBox "ok"
End If
End Sub
UserForm1にリストボックスを設置してKeyDownイベントを置いただけです
Ctrl
Alt
Shift
を押してもキーダウン
イベント自体発生しないのですが何かヒントありますか?
もう少し詳細に書きます
If の行にブレイクポイントを作っても上の3つのキーを押したときは、無反応です
他のキーを押した場合はVBEが反応してブレイクポイントで処理が止まったことを示す強調色が表示されます。この結果から、上の3つのキーを押した場合のみKeyDownイベント自体が発生していないと判断しました
実は、自宅のデスクトップパソコン(Excel2019)でこのコードを実行すると、上の3つのキーでもちゃんと反応してくれます
会社のノートパソコン(おそらくExcel2016)だと上の3つのキーを押したときだけ無反応です。他のキー、例えば数字やアルファベットキーを押した場合はイベント発生します。
コードはコピペしてるので完全に同じです
よろしくお願いします
303デフォルトの名無しさん
2024/01/02(火) 17:08:18.59ID:CQp0gfLy304デフォルトの名無しさん
2024/01/02(火) 17:48:42.59ID:HPsEIlot >>302
フォームのKeyPreviewプロパティがTrueじゃないんだろ
フォームのKeyPreviewプロパティがTrueじゃないんだろ
305デフォルトの名無しさん
2024/01/02(火) 20:19:27.92ID:G9bvfkvl306デフォルトの名無しさん
2024/01/02(火) 21:37:51.33ID:HPsEIlot >>305が無能なだけでVBAのせいじゃなくね?
308デフォルトの名無しさん
2024/01/02(火) 23:13:53.34ID:MZzCTdib >>302
その3つは複数のキーを同時に押すことで特殊な動作をさせるために使っている
その3つは複数のキーを同時に押すことで特殊な動作をさせるために使っている
309デフォルトの名無しさん
2024/01/02(火) 23:57:34.67ID:NJgc4isg310デフォルトの名無しさん
2024/01/03(水) 00:16:06.66ID:PY0bko23 他のキーと同時に押さないとキーコードを送らない可能性は自分も考えていたのですが、もう少し掘り下げて調べてみます
311デフォルトの名無しさん
2024/01/03(水) 00:56:53.29ID:+zfFyPC5 馬鹿ってWindows標準でないキーアサインするよな
312デフォルトの名無しさん
2024/01/03(水) 08:50:41.30ID:Aw29e2Gk Emacs
313デフォルトの名無しさん
2024/01/03(水) 11:46:15.43ID:PY0bko23 >>302ですが、いくつか実験したところ解決しました
環境によって受け取れるキーコードが違うようです
イベントハンドラの第一引数KeyCodeにコントロールキーが入るケースと入らないケースがあるようで、会社の環境だと入らないようです
KeyCodeにコントロールキーが入る環境だと、コントロールキーを単独で打っても認識できるようなのですが、入らない環境だと他のキーとセットで打った場合のみ第二引数のShiftにコントロールキーがはいるようです
環境によって受け取れるキーコードが違うようです
イベントハンドラの第一引数KeyCodeにコントロールキーが入るケースと入らないケースがあるようで、会社の環境だと入らないようです
KeyCodeにコントロールキーが入る環境だと、コントロールキーを単独で打っても認識できるようなのですが、入らない環境だと他のキーとセットで打った場合のみ第二引数のShiftにコントロールキーがはいるようです
314デフォルトの名無しさん
2024/01/04(木) 09:51:48.22ID:8ldacu+2 ノートPCに外付けのキーボード接続すれば、自宅PCと同じ動作するかもね
確かにノートPCのキー・アサインはメーカーに依っても製造時期に依っても様々
確かにノートPCのキー・アサインはメーカーに依っても製造時期に依っても様々
315デフォルトの名無しさん
2024/01/04(木) 15:37:18.98ID:e9Yi6W7+ 素直にWindowsアプリを作ればいいのにな
316デフォルトの名無しさん
2024/01/04(木) 16:26:45.35ID:t9OXoE69317デフォルトの名無しさん
2024/01/04(木) 17:31:34.88ID:e9Yi6W7+ ハードウェアの割り込み、OSのメッセージをExcel経由で得るというのは素直じゃない。
318デフォルトの名無しさん
2024/01/04(木) 17:35:33.92ID:t9OXoE69 >>317
糞!糞!糞!
糞!糞!糞!
319デフォルトの名無しさん
2024/01/04(木) 19:08:52.50ID:e9Yi6W7+ Pythonについてはどう思ってんのかな?
320デフォルトの名無しさん
2024/01/04(木) 19:31:16.02ID:t9OXoE69 >>319
もう糞(ふん)をして寝るわ
もう糞(ふん)をして寝るわ
321デフォルトの名無しさん
2024/01/04(木) 19:44:33.23ID:zwj60hXG 5×5のセル内をソートして、左上が最大値でそこから昇順に右下が最小値にして数値を入れ替えるマクロって作れますか?
322デフォルトの名無しさん
2024/01/04(木) 20:28:44.78ID:e9Yi6W7+323デフォルトの名無しさん
2024/01/04(木) 20:48:12.58ID:epENqCjo Excelのバージョンわからないけど、そういうのは今はマクロでなくてシート関数で出来るレベル。
324デフォルトの名無しさん
2024/01/04(木) 21:30:12.87ID:TL+QpeJQ 最大値から昇順は全データが同一の時のみ可能なので、初期状態で必ず昇順になっている
マクロも関数もまったく必要ない
マクロも関数もまったく必要ない
325デフォルトの名無しさん
2024/01/04(木) 21:44:11.20ID:reskTtOH >>321
馬鹿は帰れ
馬鹿は帰れ
326デフォルトの名無しさん
2024/01/04(木) 21:58:19.60ID:vv8992PB >>321
昇順だと最大値より大きな値はないんじゃね
昇順だと最大値より大きな値はないんじゃね
327デフォルトの名無しさん
2024/01/04(木) 22:52:57.73ID:8ldacu+2 A1:E5まですでに埋まっていると
それを一旦作業列にでもコピーして昇順に並べ替えると
並び終わった順に5つずつA1:E1、B1:E2、・・という行ごとに埋めてくカタチなのか
A1、B1、A2、C1、B2、A3、・・と、ハスに埋めてくカタチなのか
A1:A5、B1:B5、C1:C5、・・と、列ごとに埋めてくカタチなのか
いや、いずれにしろA1:E5を入れ替えるなら関数は無理だろ マクロやVBAでしかできない
それを一旦作業列にでもコピーして昇順に並べ替えると
並び終わった順に5つずつA1:E1、B1:E2、・・という行ごとに埋めてくカタチなのか
A1、B1、A2、C1、B2、A3、・・と、ハスに埋めてくカタチなのか
A1:A5、B1:B5、C1:C5、・・と、列ごとに埋めてくカタチなのか
いや、いずれにしろA1:E5を入れ替えるなら関数は無理だろ マクロやVBAでしかできない
328デフォルトの名無しさん
2024/01/04(木) 23:18:36.18ID:44UH0tDv >>275
たいぶ亀だけど、最初に言った通り参照設定やApplication.Runを使用します。
まずBook2で選択状態のセルを取得するメソッド(関数)やプロパティを標準モジュールで作成して、
Book1のモジュール内で宣言したCellsに上記の方法で呼び出したその戻り値を割り当てます。
ただし、そもそも他のブックを見ているときに選択状態というのを認識してくれるのか検証してないです。
たいぶ亀だけど、最初に言った通り参照設定やApplication.Runを使用します。
まずBook2で選択状態のセルを取得するメソッド(関数)やプロパティを標準モジュールで作成して、
Book1のモジュール内で宣言したCellsに上記の方法で呼び出したその戻り値を割り当てます。
ただし、そもそも他のブックを見ているときに選択状態というのを認識してくれるのか検証してないです。
329デフォルトの名無しさん
2024/01/05(金) 11:28:46.79ID:OkMjEs1t330デフォルトの名無しさん
2024/01/07(日) 14:25:39.45ID:Zu5udfiU シートコピーとシート名変更について質問なのですが
アクティブシートの7個左にあるシートをコピーして
アクティブシートの右側にシート名を明日の日付(例:24年1月8日)にして貼り付け
という動きをさせたいんですがどうすればいいでしょうか?
アクティブシートの7個左にあるシートをコピーして
アクティブシートの右側にシート名を明日の日付(例:24年1月8日)にして貼り付け
という動きをさせたいんですがどうすればいいでしょうか?
331デフォルトの名無しさん
2024/01/07(日) 14:34:54.50ID:BWXKnEg4 「マクロの記録」でやりたい操作をコードにしてみ
332デフォルトの名無しさん
2024/01/07(日) 15:33:58.57ID:9MKsxzn1333デフォルトの名無しさん
2024/01/09(火) 20:19:55.53ID:/NZC7p4w ファイル移動をするのにNameで変数を使ってやりたいけどうまくできません
334デフォルトの名無しさん
2024/01/09(火) 20:23:46.49ID:/NZC7p4w >>333 の続き
Sub rename()
Name "C:\A\1.txt" As "C:\B\1.txt"
End Sub
だと移動できるけど
Sub rename()
Name Cells(1, 1) As Cells(2, 1)
End Sub
だとうまくいきません(A1 ←"C:\A\1.txt"、A2 ←"C:\B\1.txt")
書き方の問題ですか?それともNameで変数は使えませんか?
Sub rename()
Name "C:\A\1.txt" As "C:\B\1.txt"
End Sub
だと移動できるけど
Sub rename()
Name Cells(1, 1) As Cells(2, 1)
End Sub
だとうまくいきません(A1 ←"C:\A\1.txt"、A2 ←"C:\B\1.txt")
書き方の問題ですか?それともNameで変数は使えませんか?
335デフォルトの名無しさん
2024/01/09(火) 22:02:52.13ID:yOyd7K8a >>334
うちの環境では動いたのでなんか見落としているのではないかな
うちの環境では動いたのでなんか見落としているのではないかな
336デフォルトの名無しさん
2024/01/09(火) 22:31:05.76ID:g/zTW0/0 セル内の文字の頭にシングルクォーテーションがついてるとか。
337デフォルトの名無しさん
2024/01/10(水) 00:45:29.03ID:QjRR+OtK うまくいかないと主張するだけで絶対にエラーを書かないタイプ
338デフォルトの名無しさん
2024/01/10(水) 11:25:08.02ID:sAzyr022 罫線についての質問です。
連続した任意の選択されたセル範囲
(例えばA1,A2,A3,B3,C3,D3のようなL字型)
に外枠の罫線を描きたいのですが、
どのようにすればよいでしょうか
連続した任意の選択されたセル範囲
(例えばA1,A2,A3,B3,C3,D3のようなL字型)
に外枠の罫線を描きたいのですが、
どのようにすればよいでしょうか
339デフォルトの名無しさん
2024/01/10(水) 11:32:15.87ID:Wf3Eae89 > 彼らはよく、社会に貢献したいと口にする。
> なんでも社会悪のネトウヨを自殺に追い込むことが、社会に貢献することなんだそうで。
> イジメや嫌がらせで社会に貢献できる教師や警官になるために、あえて帰化したんであって、祖国同胞を裏切ったわけではなく、心は●●人なんだそうだ。
>
> 昔は帰化すると裏切り者と呼ばれたりしたが、祖国に国籍を残したまま帰化する方法が確立された現在では、社会に貢献するためにむしろ帰化することが推奨されている。
> 拳銃所持で前科のある生粋の反日家ですら、今では普通に帰化している。
>
> ●●学会などはネトウヨ認定した日本人を盗撮して、痴漢の写真だと言ってばらまいている。
> それらの写真は、集団ストーカーに使用される。
> 彼らは集団ストーカーを、[地域で子供を守る安心安全パトロール]と称している。
> なんでも社会悪のネトウヨを自殺に追い込むことが、社会に貢献することなんだそうで。
> イジメや嫌がらせで社会に貢献できる教師や警官になるために、あえて帰化したんであって、祖国同胞を裏切ったわけではなく、心は●●人なんだそうだ。
>
> 昔は帰化すると裏切り者と呼ばれたりしたが、祖国に国籍を残したまま帰化する方法が確立された現在では、社会に貢献するためにむしろ帰化することが推奨されている。
> 拳銃所持で前科のある生粋の反日家ですら、今では普通に帰化している。
>
> ●●学会などはネトウヨ認定した日本人を盗撮して、痴漢の写真だと言ってばらまいている。
> それらの写真は、集団ストーカーに使用される。
> 彼らは集団ストーカーを、[地域で子供を守る安心安全パトロール]と称している。
340デフォルトの名無しさん
2024/01/10(水) 13:52:33.52ID:QjRR+OtK >>338
それはVBAに関係があるのか?
それはVBAに関係があるのか?
341デフォルトの名無しさん
2024/01/10(水) 14:42:52.94ID:54SkLlBn 必要なセルをCtrlキーを押しながら選択し、L字型を形成
右クリック − セルの書式設定 − 罫線タブ − スタイルで線種を選んでから[外枠]ボタンを押す
想定していない余計な位置にも罫線が引かれるので、同様に不要なセルを選択し罫線タブから[なし]を使って消す
2024年の方針 : おっちょこちょいに要注意(要らぬ低評価に繋がり兼ねない)
右クリック − セルの書式設定 − 罫線タブ − スタイルで線種を選んでから[外枠]ボタンを押す
想定していない余計な位置にも罫線が引かれるので、同様に不要なセルを選択し罫線タブから[なし]を使って消す
2024年の方針 : おっちょこちょいに要注意(要らぬ低評価に繋がり兼ねない)
342デフォルトの名無しさん
2024/01/10(水) 15:34:00.16ID:6PPGwb7s >>340
VBAで実現する方法を聞いてるんだろ
VBAで実現する方法を聞いてるんだろ
343338
2024/01/10(水) 16:34:51.12ID:sAzyr022 >>338です。
>>341さんありがとうございます。
>>342さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Add_
>>341さんありがとうございます。
>>342さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Additional_Address", Selection).Select
を繰り返して複数のセルを同時に選択するところまではできています。
一方で、例えばA1,A2,A3,B3,C3,D3の順にAdditional_Addressを指定すると
選択範囲がA1〜A3の縦3連とB3〜D3の横3連に分割されて選択されるため、
xlEdgeLeft等の処理が縦3連と横3連それぞれで実行されてしまう状況です。
こうなるのを
┌┐
││
│├──┐
└┴──┘
こうしたい
┌┐
││
│└──┐
└───┘
セルごとに隣接判定をして罫線を描く/描かないの処理を
するしかないのでしょうか
>>341さんありがとうございます。
>>342さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Add_
>>341さんありがとうございます。
>>342さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Additional_Address", Selection).Select
を繰り返して複数のセルを同時に選択するところまではできています。
一方で、例えばA1,A2,A3,B3,C3,D3の順にAdditional_Addressを指定すると
選択範囲がA1〜A3の縦3連とB3〜D3の横3連に分割されて選択されるため、
xlEdgeLeft等の処理が縦3連と横3連それぞれで実行されてしまう状況です。
こうなるのを
┌┐
││
│├──┐
└┴──┘
こうしたい
┌┐
││
│└──┐
└───┘
セルごとに隣接判定をして罫線を描く/描かないの処理を
するしかないのでしょうか
344デフォルトの名無しさん
2024/01/10(水) 16:39:20.24ID:xiFTPfWu >>343
そう、それしかない
そう、それしかない
346デフォルトの名無しさん
2024/01/10(水) 18:06:26.38ID:54SkLlBn A1:D3選択で範囲の外枠を描画
B1:D2選択で範囲の左端・下端に枠線を引き 範囲の上端・右端の枠線を消す
の二段構えなら可能
描きたい枠線が上記だけじゃ無いだろうしL字だけとも限らないだろうけど創意工夫で
B1:D2選択で範囲の左端・下端に枠線を引き 範囲の上端・右端の枠線を消す
の二段構えなら可能
描きたい枠線が上記だけじゃ無いだろうしL字だけとも限らないだろうけど創意工夫で
347338
2024/01/10(水) 18:49:21.47ID:sAzyr022348デフォルトの名無しさん
2024/01/10(水) 21:34:25.26ID:54SkLlBn A1:A3外枠描いてからB3:D3の外枠左辺抜きのが楽だった
その他、右辺抜き、上辺・下辺それぞれ抜きのを、全枠と合わせて五つのマクロだけで
L字の左右反転でも上下反転でも、E字F字H字T字それぞれ上下左右反転だろうと対応できたわ
全周
Sub all4()
Selection.BorderAround True
End Sub
上辺抜き
Sub nontop()
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
下辺抜き
Sub nonbottom()
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
あと、左右は上下の真似してそれぞれxlNone するだけの、都合五つのマクロで自由自在
罫線の色とか種類を変えたいなら、それぞれに加工加えて
その他、右辺抜き、上辺・下辺それぞれ抜きのを、全枠と合わせて五つのマクロだけで
L字の左右反転でも上下反転でも、E字F字H字T字それぞれ上下左右反転だろうと対応できたわ
全周
Sub all4()
Selection.BorderAround True
End Sub
上辺抜き
Sub nontop()
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
下辺抜き
Sub nonbottom()
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
あと、左右は上下の真似してそれぞれxlNone するだけの、都合五つのマクロで自由自在
罫線の色とか種類を変えたいなら、それぞれに加工加えて
350デフォルトの名無しさん
2024/01/11(木) 21:32:22.23ID:jLVdVVn1 >>348
そんなことするなら素直に
>セルごとに隣接判定をして罫線を描く/描かないの処理
を実装すればいいんじゃねえかと
Sub test()
Dim r As Range
Dim r2 As Range
Set r2 = Selection
For Each r In Selection
If Not isSelect(r, xlEdgeTop) Then r.Borders(xlEdgeTop).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeBottom) Then r.Borders(xlEdgeBottom).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeLeft) Then r.Borders(xlEdgeLeft).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeRight) Then r.Borders(xlEdgeRight).LineStyle = xlContinuous
Next
End Sub
Function isSelect(testRange As Range, index As XlBordersIndex) As Boolean
On Error Resume Next
Dim r As Range
For Each r In Selection
Select Case index
Case xlEdgeTop
If r.Address = testRange.Offset(-1, 0).Address Then isSelect = True
Case xlEdgeBottom
If r.Address = testRange.Offset(1, 0).Address Then isSelect = True
Case xlEdgeLeft
If r.Address = testRange.Offset(0, -1).Address Then isSelect = True
Case xlEdgeRight
If r.Address = testRange.Offset(0, 1).Address Then isSelect = True
End Select
Next
End Function
こんな感じか。行数制限あるからやってるけど、1行If は推奨しないぞ
そんなことするなら素直に
>セルごとに隣接判定をして罫線を描く/描かないの処理
を実装すればいいんじゃねえかと
Sub test()
Dim r As Range
Dim r2 As Range
Set r2 = Selection
For Each r In Selection
If Not isSelect(r, xlEdgeTop) Then r.Borders(xlEdgeTop).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeBottom) Then r.Borders(xlEdgeBottom).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeLeft) Then r.Borders(xlEdgeLeft).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeRight) Then r.Borders(xlEdgeRight).LineStyle = xlContinuous
Next
End Sub
Function isSelect(testRange As Range, index As XlBordersIndex) As Boolean
On Error Resume Next
Dim r As Range
For Each r In Selection
Select Case index
Case xlEdgeTop
If r.Address = testRange.Offset(-1, 0).Address Then isSelect = True
Case xlEdgeBottom
If r.Address = testRange.Offset(1, 0).Address Then isSelect = True
Case xlEdgeLeft
If r.Address = testRange.Offset(0, -1).Address Then isSelect = True
Case xlEdgeRight
If r.Address = testRange.Offset(0, 1).Address Then isSelect = True
End Select
Next
End Function
こんな感じか。行数制限あるからやってるけど、1行If は推奨しないぞ
351デフォルトの名無しさん
2024/01/11(木) 21:35:04.35ID:jLVdVVn1 ああ
Dim r2 As Range
Set r2 = Selection
の2行はいらん
Dim r2 As Range
Set r2 = Selection
の2行はいらん
352デフォルトの名無しさん
2024/01/12(金) 11:23:51.46ID:Dgb3NVJl >>350
さすがです
さすがです
353デフォルトの名無しさん
2024/01/12(金) 16:52:25.20ID:LICC/lNk さすがだ。良い書き方してる
354デフォルトの名無しさん
2024/01/12(金) 18:08:01.72ID:m3q3lwQ5 For i =1 to 500
Sheets("A").Cells(1,1)=i
Sheets(Array("A", "B", "C", "D", "E")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\out.pdf"
next
というふうに、シートAのA1セルにiを入れたあと、複数シートを一つのpdfにすることを500回繰り返したいのですが、150回くらい行うと「この操作を完了するにはメモリが不足しています。扱うデータ量を減らすか、他のアプリケーションを終了してください。使用できる目盛りを増やすには、以下を検討してください。・64ビット版のMicrosoft Excelを使う。」というエラーが出ます
これを解消することはできないでしょうか?
ネットで検索してもSetしたものをNothingすればいいと書いてあるのですが、そもそもSetしてるものがないので‥
Sheets("A").Cells(1,1)=i
Sheets(Array("A", "B", "C", "D", "E")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\out.pdf"
next
というふうに、シートAのA1セルにiを入れたあと、複数シートを一つのpdfにすることを500回繰り返したいのですが、150回くらい行うと「この操作を完了するにはメモリが不足しています。扱うデータ量を減らすか、他のアプリケーションを終了してください。使用できる目盛りを増やすには、以下を検討してください。・64ビット版のMicrosoft Excelを使う。」というエラーが出ます
これを解消することはできないでしょうか?
ネットで検索してもSetしたものをNothingすればいいと書いてあるのですが、そもそもSetしてるものがないので‥
355デフォルトの名無しさん
2024/01/12(金) 20:43:53.34ID:LR75xgwt356デフォルトの名無しさん
2024/01/12(金) 21:09:33.72ID:m3q3lwQ5357デフォルトの名無しさん
2024/01/13(土) 01:36:13.45ID:PnyKt9oE チャットgptに聞いたところ、ActiveSheet.ExportAsFixedFormatはメモリを使用するので、複数回やればエラーになる可能性があるとのことでした。しかし新しいブックを作成し、そこに貼り付けてpdf化、新しいブックを閉じることによって、メモリの使用を抑えることができるとことでした
それで試してみたのですが、結果は変わらず‥
新しいブックを開いてそこで作業して閉じたとしてもメモリの使用量は変わらないのでしょうかね?
それで試してみたのですが、結果は変わらず‥
新しいブックを開いてそこで作業して閉じたとしてもメモリの使用量は変わらないのでしょうかね?
358デフォルトの名無しさん
2024/01/13(土) 08:06:25.09ID:ublfaSAv >>354
Win10,Excel365,64ビット版でそのサンプルコードを動かしたけどエラーが出なかった。
64ビット版にすれば?
あとは実際のワークシートの内容、コードの内容にもよると思うけど、
・シートA〜Eは毎回選択する必要はないかと。Forの前に持っていったらどうなる?
・PDFを出力するコードの下に「DoEvents」を追加してみる
Win10,Excel365,64ビット版でそのサンプルコードを動かしたけどエラーが出なかった。
64ビット版にすれば?
あとは実際のワークシートの内容、コードの内容にもよると思うけど、
・シートA〜Eは毎回選択する必要はないかと。Forの前に持っていったらどうなる?
・PDFを出力するコードの下に「DoEvents」を追加してみる
359デフォルトの名無しさん
2024/01/13(土) 10:46:37.60ID:14sT36Xv どなたかコードを作成いただけませんでしょうか。マクロ初心者で恐縮です。
やりたい作業としては
・範囲指定してある部分の印刷
・.pdfで印刷→デスクトップに保存
・保存ファイル名がセル(I8)の値を入れたい
よろしくお願いします。
やりたい作業としては
・範囲指定してある部分の印刷
・.pdfで印刷→デスクトップに保存
・保存ファイル名がセル(I8)の値を入れたい
よろしくお願いします。
360デフォルトの名無しさん
2024/01/13(土) 10:50:05.61ID:PnyKt9oE >>358
職場のパソコンなので環境を変更するのは難しいです
doeventsを入れたところ、エラーは出ないのですが、やはり150回ほどループしたタイミングで強制再起動となってしまいました
タスクマネージャーで見ていたところ、メモリがどんどん増えていきます
色々調べたのですが環境によるものみたいです
素直に、100回ループさせたら一度EXCELを終了させ、メモリを解放してから再度EXCEL起動して続きからマクロを回すことにします
ありがとうございました
職場のパソコンなので環境を変更するのは難しいです
doeventsを入れたところ、エラーは出ないのですが、やはり150回ほどループしたタイミングで強制再起動となってしまいました
タスクマネージャーで見ていたところ、メモリがどんどん増えていきます
色々調べたのですが環境によるものみたいです
素直に、100回ループさせたら一度EXCELを終了させ、メモリを解放してから再度EXCEL起動して続きからマクロを回すことにします
ありがとうございました
361デフォルトの名無しさん
2024/01/13(土) 14:05:15.65ID:veMnryOA 32bit→64bitでどのくらい支障がでるんだろうか
顧客とのやり取りとかで支障がでるのが嫌で移行できないでいる
逆に64bitで32bitでの作成物を扱うのには特に支障はないのかな?
顧客とのやり取りとかで支障がでるのが嫌で移行できないでいる
逆に64bitで32bitでの作成物を扱うのには特に支障はないのかな?
362デフォルトの名無しさん
2024/01/13(土) 14:05:21.54ID:v88G6T5y Sheet対象を辞めてRange対象にしてみたらどうか
いきなりout.pdfに出力するのを辞めて新規ブックに追加していって、最後にそのブックをpdfでは
メモリ不足から逃げる手立てを一考
いきなりout.pdfに出力するのを辞めて新規ブックに追加していって、最後にそのブックをpdfでは
メモリ不足から逃げる手立てを一考
363デフォルトの名無しさん
2024/01/13(土) 16:41:42.38ID:PnyKt9oE >>362
なるほど‥
新規ブックを開いて、pdf化したいシートを順々にコピーしていき、最後に一回だけpdf化するということですね
デメリットとしてはpdfが一つにまとまってしまいますが、運用に支障はないのかもしれません
ありがとうございます
関係者に聞いてみて、それでも問題ないならその方向で行こうと思います
なるほど‥
新規ブックを開いて、pdf化したいシートを順々にコピーしていき、最後に一回だけpdf化するということですね
デメリットとしてはpdfが一つにまとまってしまいますが、運用に支障はないのかもしれません
ありがとうございます
関係者に聞いてみて、それでも問題ないならその方向で行こうと思います
364デフォルトの名無しさん
2024/01/13(土) 19:24:41.20ID:veMnryOA 出来上がったpdfを分割までやればいいだけでは?
コマンドラインで動く外部ツール使えばできるような
コマンドラインで動く外部ツール使えばできるような
365デフォルトの名無しさん
2024/01/13(土) 20:34:27.31ID:PnyKt9oE >>364
後出しで申し訳ないのですが、実は出来上がったpdfをメールで送って、相手方で印刷するのが今回の運用だったのです
なので「pdfを全て開いて印刷するのは結構面倒だよなぁ」とは思っていました
しかし一つのpdfにできるのであれば、その問題も解決できるので、一つの方が今回は都合が良かったりします
pdfを分割して置かなければならない別の機会があれば、そのようなことも検討したいと思います
ありがとうございました
後出しで申し訳ないのですが、実は出来上がったpdfをメールで送って、相手方で印刷するのが今回の運用だったのです
なので「pdfを全て開いて印刷するのは結構面倒だよなぁ」とは思っていました
しかし一つのpdfにできるのであれば、その問題も解決できるので、一つの方が今回は都合が良かったりします
pdfを分割して置かなければならない別の機会があれば、そのようなことも検討したいと思います
ありがとうございました
366デフォルトの名無しさん
2024/01/13(土) 21:55:24.12ID:2NbpGDvt 頭の悪い人は解決方法自体を間違えている
いつもの
いつもの
367デフォルトの名無しさん
2024/01/13(土) 22:36:38.78ID:v88G6T5y そういうことを平気で衆人環視の環境で書き込める人は 間違い無く病んでる
適しているかどうかは実際にやってみないといけないでしょ?
最後の大きく成ったブックをPDF化するときにエラー吐いて完走しなかったら
元も子も無いんだし 単なる思い付きで書いただけなので検証を
相手が居るならすり合わせも大事だし ダメ出しされたら再検討だし
ところで、初手のout.pdf(このネーミングも如何なものか、とちょっと思った
Outputの意味なのか、Out of Orderとかの意味なのか、いずれにしろ経営陣から
したら眉を顰めてしまう単語 ま、それは置いといて)には、どう蓄積されるのか
興味があった これ走らせたらC:\out.pdfにページが追加されてく?
C:\out.pdfが(2)(3)(4)・・とか増えてく? 誰か教えて
適しているかどうかは実際にやってみないといけないでしょ?
最後の大きく成ったブックをPDF化するときにエラー吐いて完走しなかったら
元も子も無いんだし 単なる思い付きで書いただけなので検証を
相手が居るならすり合わせも大事だし ダメ出しされたら再検討だし
ところで、初手のout.pdf(このネーミングも如何なものか、とちょっと思った
Outputの意味なのか、Out of Orderとかの意味なのか、いずれにしろ経営陣から
したら眉を顰めてしまう単語 ま、それは置いといて)には、どう蓄積されるのか
興味があった これ走らせたらC:\out.pdfにページが追加されてく?
C:\out.pdfが(2)(3)(4)・・とか増えてく? 誰か教えて
368デフォルトの名無しさん
2024/01/14(日) 01:10:58.98ID:oEubWJyC >>367
すみません、out.pdfというのはネットから適当に拾ったコードなので、自分のコードではチキンとした名前をつけています
これを走らせるとout.pdfが上書きされ、一番最後のpdfしか残りません
また、さっそく一番最後だけpdf化を試してみたのですが、ダメでした
50個回分をシートに蓄積してpdf化を繰り返したところ3回目まではうまく行ったのですが、4回目(160ループ目)くらいからpdfが文字化けしてしまいました
どうもpdf化の回数は関係なく、どれくらいのデータ量をpdf化したかによって上限が来て、それ以降は文字化けするような仕組みみたいです
.ExportAsFixedFormatを使用せずにworksheet.printoutメゾットでpdfに印刷するようにしたら、画質は劣るものの、全てpdf化できました
長々とありがとうございました
すみません、out.pdfというのはネットから適当に拾ったコードなので、自分のコードではチキンとした名前をつけています
これを走らせるとout.pdfが上書きされ、一番最後のpdfしか残りません
また、さっそく一番最後だけpdf化を試してみたのですが、ダメでした
50個回分をシートに蓄積してpdf化を繰り返したところ3回目まではうまく行ったのですが、4回目(160ループ目)くらいからpdfが文字化けしてしまいました
どうもpdf化の回数は関係なく、どれくらいのデータ量をpdf化したかによって上限が来て、それ以降は文字化けするような仕組みみたいです
.ExportAsFixedFormatを使用せずにworksheet.printoutメゾットでpdfに印刷するようにしたら、画質は劣るものの、全てpdf化できました
長々とありがとうございました
369デフォルトの名無しさん
2024/01/14(日) 07:32:56.45ID:TX+95vKD 次は添付ファイルのサイズ制限に引っかかって、結局分割することになると見た
そしてVBAからメールを連続送信する方法を聞きに来て、最後にPDFがいくつあっても簡単に一括印刷できることを知るまでがセット
そしてVBAからメールを連続送信する方法を聞きに来て、最後にPDFがいくつあっても簡単に一括印刷できることを知るまでがセット
370デフォルトの名無しさん
2024/01/14(日) 08:46:41.57ID:kWzMOUYI >>367はコマンドラインツール使ったことなさそう
371デフォルトの名無しさん
2024/01/14(日) 11:11:31.44ID:Oiv3IqyF >>359
それくらいならChatGptが良いコードを書いてくれるはずだよ
それくらいならChatGptが良いコードを書いてくれるはずだよ
372デフォルトの名無しさん
2024/01/16(火) 19:30:09.09ID:1/22QV7P それならそのコードを貼ってあげなよ
373ぐううさ
2024/01/16(火) 21:08:30.59ID:r9xAueHW 業務でvba上手くいかないので質問させてもらってもよろしいでしょうか?
374ぐううさ
2024/01/16(火) 21:08:36.00ID:r9xAueHW 業務でvba上手くいかないので質問させてもらってもよろしいでしょうか?
375デフォルトの名無しさん
2024/01/16(火) 21:09:02.93ID:wgtY3Vx1 先輩に聞け
376ぐううさ
2024/01/16(火) 21:17:31.47ID:r9xAueHW エクセルシートで他システムから吐き出したデータの列の位置や内容がバラバラのため、整理してからまた、他のシステムにデータを取り込むため、列の削除や移動をマクロと変数を使って、ユーザにパラメータを入れてもらって実行することをしたい。
変数にパラメータの値を入れられるが、その後のデータセットからデータの型がとエラーに、なりうまくいかない。
変数はstringsです。
変数にパラメータの値を入れられるが、その後のデータセットからデータの型がとエラーに、なりうまくいかない。
変数はstringsです。
377デフォルトの名無しさん
2024/01/16(火) 21:59:35.09ID:6je2UWdW 致命的に説明が下手くそなやついるじゃん
376みたいなやつねw
376みたいなやつねw
378デフォルトの名無しさん
2024/01/16(火) 23:15:06.93ID:Lr6G4gzP >>376
なにしようとしてるかよくわからないけど、列番号とか指定したいならInteger型にしないといけないんじゃない?
なにしようとしてるかよくわからないけど、列番号とか指定したいならInteger型にしないといけないんじゃない?
379デフォルトの名無しさん
2024/01/16(火) 23:21:40.56ID:Lr6G4gzP これに下記コードを〇〇できるように書き換えてくださいってソースコード貼付ければいい感じに直してくれるよ
https://www.perplexity.ai/
https://www.perplexity.ai/
380デフォルトの名無しさん
2024/01/16(火) 23:33:44.09ID:r9xAueHW381デフォルトの名無しさん
2024/01/17(水) 02:48:46.43ID:tk11Vx7i 馬鹿な会社の馬鹿社員
早く潰れろや
早く潰れろや
382デフォルトの名無しさん
2024/01/17(水) 07:28:15.10ID:dIg9jZv4 自分の能力以上のことを要求されたら
断るのも仕事ですよ
断るのも仕事ですよ
383デフォルトの名無しさん
2024/01/17(水) 08:40:16.63ID:VIMKRH3+ 断る勇気も必要ですよ と書きたかったんだろうけど、断ってばかりじゃ評価下がるしな
どんどん周りの人間の評価が上がり続けちゃったら、遠く無い将来に窓際に追いやられるし
おちんぎんもらってチャレンジできるなら、やらないよりはやった方が自分のためにも成る
もらったデータがどういうファイル形式なのかに依りけり
csv(Comma Separated Valuesの略で、各項目がカンマ(,)で区切られたテキストデータ)なのか
txt(中身が文字だけのデータ)なのか、それ以外の形式なのか
より実務に即した回答が欲しければ、じぶんの環境を提示するのもだいじ 取り敢えず叩き台で
https://www.crie.co.jp/chokotech/detail/264/ こんな作業をしていてどこで躓いてる、とかを
どんどん周りの人間の評価が上がり続けちゃったら、遠く無い将来に窓際に追いやられるし
おちんぎんもらってチャレンジできるなら、やらないよりはやった方が自分のためにも成る
もらったデータがどういうファイル形式なのかに依りけり
csv(Comma Separated Valuesの略で、各項目がカンマ(,)で区切られたテキストデータ)なのか
txt(中身が文字だけのデータ)なのか、それ以外の形式なのか
より実務に即した回答が欲しければ、じぶんの環境を提示するのもだいじ 取り敢えず叩き台で
https://www.crie.co.jp/chokotech/detail/264/ こんな作業をしていてどこで躓いてる、とかを
384デフォルトの名無しさん
2024/01/17(水) 09:18:18.18ID:bryPjBMS そんなあなたにPower Query
385デフォルトの名無しさん
2024/01/17(水) 10:15:06.17ID:4yidygkf できないものはできない
請け負った仕事には責任があるんだから最後までやりとげる
能力がないなら評価も低いのは当たり前
請け負った仕事には責任があるんだから最後までやりとげる
能力がないなら評価も低いのは当たり前
386デフォルトの名無しさん
2024/01/17(水) 11:50:01.48ID:KP/5Q6je 今日から始めた初心者ですが
予測変換の決定でエンター押すと改行されてしまうのですが、
それをさせない方法ありますか?
スペースで決定なのはわかるのですが、慣れません。
予測変換の決定でエンター押すと改行されてしまうのですが、
それをさせない方法ありますか?
スペースで決定なのはわかるのですが、慣れません。
387デフォルトの名無しさん
2024/01/17(水) 12:03:19.97ID:W/DshM4G >>386
それVBAの話?
それVBAの話?
388デフォルトの名無しさん
2024/01/17(水) 14:40:54.05ID:KP/5Q6je389ぐううさ
2024/01/17(水) 18:16:44.75ID:ldP/vXQ/ 376ですが自力で本日できました。
回答頂いた方ありがとうございました🙇
回答頂いた方ありがとうございました🙇
390デフォルトの名無しさん
2024/01/17(水) 19:12:31.19ID:HRooiYus 質問の意味も分からなければ、
回答も役立たず
ただのスレ汚し
回答も役立たず
ただのスレ汚し
391デフォルトの名無しさん
2024/01/18(木) 00:33:52.88ID:j51Gu5qi VBAの質問なのですが
運送系事務でコース表の各店舗に数量を記入する作業があるのですが
この数量記入を例えば入力用というシートを作り一元管理したいのですが
配送を4社に振り分けている関係で月曜日でも月曜@、月曜➁、月曜➂、月曜C、と
シートが4つに分かれておりシステム上これは変えられないと言われました
店舗も例えばセブン、ローソン、ファミマ、サンクス、ミニストップ、と色々あり
100店舗ほどあるのを該当店舗があるシートへ移動し数量を入力するという…
現状でやり始めた事はデータベースを作りキーワードで検索できるようにし
ドロップダウンリストでセブンを選んだらセブン全店が表示されるようにしました
これを利用してオプションボタン等で月曜を指定し店舗名の右セルに数量を入力すると
月曜日シートにある同名店舗の右セルに入力した数量が反映されるという形にしたいのです
ここまで書いて思ったけどこれってVBAで解決させる物でしょうか?
vlookupとかの関数の領域? すいません素人に毛が生えた程度の知識しか無いもので
ご教授いただけると幸いです
運送系事務でコース表の各店舗に数量を記入する作業があるのですが
この数量記入を例えば入力用というシートを作り一元管理したいのですが
配送を4社に振り分けている関係で月曜日でも月曜@、月曜➁、月曜➂、月曜C、と
シートが4つに分かれておりシステム上これは変えられないと言われました
店舗も例えばセブン、ローソン、ファミマ、サンクス、ミニストップ、と色々あり
100店舗ほどあるのを該当店舗があるシートへ移動し数量を入力するという…
現状でやり始めた事はデータベースを作りキーワードで検索できるようにし
ドロップダウンリストでセブンを選んだらセブン全店が表示されるようにしました
これを利用してオプションボタン等で月曜を指定し店舗名の右セルに数量を入力すると
月曜日シートにある同名店舗の右セルに入力した数量が反映されるという形にしたいのです
ここまで書いて思ったけどこれってVBAで解決させる物でしょうか?
vlookupとかの関数の領域? すいません素人に毛が生えた程度の知識しか無いもので
ご教授いただけると幸いです
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【調査】クレジットカード、1人何枚持つのが「平均的」?★3 [ひぃぃ★]
- 【作家】高市総理支持の背景に見えるヤンキー的「ケンカ上等!」と「日本人は特別だ」感がとても怖い 北原みのり [少考さん★]
- 宮崎あおい「電子レンジ持ってない」“丁寧な暮らし”を告白「ごはんを温め直すときも蒸し器」に「凄すぎ」の声 [muffin★]
- 【テレビ】池上彰氏 報道の自由度が高い国の特徴「どんどん政府を批判する。政治家は受け入れる」 一方独裁国家は… [冬月記者★]
- 「日本が戦争に一歩踏み出す危機感」官邸前で抗議デモ 高市総理“台湾有事”発言の撤回求める 中国メディアの姿も ★3 [蚤の市★]
- 「『ETC』←なんて読んでますか?」 公募で決めたのに全然呼ばれなかった“幻の愛称”とは [七波羅探題★]
- お前らそんなにマウント取りたいんか?
- 古市憲寿「スタジオでも中国批判して気持ち良くなってる人はいるが高市答弁で日本人は損してる。国益を害した」スタジオ凍りつく [931948549]
- 今俺が満を持して…
- 車の暖房最初だけ電気で加熱してくれるか
- 🖐( ・᷇ὢ・᷆ )おはようさ
- 高市政権「中国への反論はSNSでやるわ。覚悟しろ中国!!!!!」 [834922174]
