23/09/01 14:53:10.50 c6Z/nkux.net
「フレーム」はラベルやコンボボックスなどのコントロールをフレーム内に配置するコンテナ
という概念から、フレーム内にフレームは配置できないのでは?
フレーム1内のコントロールの戻り値に依って、ユーザーフォームの他の位置にフレーム2を
動的に配置したいとかなら可能だろうけど
若しくは、動的に生成されたコントロールを、不要になった都度開放していないとかか?
151:デフォルトの名無しさん
23/09/01 15:03:21.78 c6Z/nkux.net
MSコミュニティに似たような質問があるのを見付けた
URLリンク(answers.microsoft.com)
10年も前の事例だけど、辛辣な回答ひとつしか
152:付いていない 当時はクラッシュしてた、ってんだから、エラーに成るだけ手心は加えられてるのか
153:141
23/09/01 15:35:25.53 ne/hzOol.net
>>149
そのエラーは デバッグするのが 厄介だ。
去年、職業訓練校でVBAを習ったとき、
SQLが ちょっと違うだけで そのエラー発生した。
154:デフォルトの名無しさん
23/09/01 16:26:50.24 u1EfhygX.net
>>150
静的にはできるのにね?
フォーム内に用意した1個のフレーム内に動的に配置しようとするだけでエラー吐くので、後段で以下でご指摘いただいた点はとりあえず無関係のようです
今回は外側をマルチページで代用したけど、モヤっとする…
155:デフォルトの名無しさん
23/09/01 16:55:57.14 c6Z/nkux.net
ン? 静的にはできるんだ
じゃあ、フレーム内にコントロールを配置する時に、ちょっと順番を間違えるとフレームとの
リンクが切れて、見た目はフレーム内だけど別物として配置されてしまうように成るとかと
似た状況なんじゃ?
動的に配置するモジュール内で、その過程をなぞらないと入れ子フレームとして設置できない
とかが思い付いたが、果たして
或いは、静的に配置しておいてvisibleをon/offで切り替えるとか
何にしろ利用者の現場でトラブらないような、安定した方法が望まれる(シンプルイズベスチャ)
156:デフォルトの名無しさん
23/09/01 17:05:15.42 QGSBVRun.net
>>152
職業訓練校www
157:デフォルトの名無しさん
23/09/01 18:26:16.13 jzQZ9hsj.net
たまに訓練校でVBAコースとか見掛けるけど、どの辺りまで教わるのですか? 経験したエロい人教えて
158:デフォルトの名無しさん
23/09/01 18:41:22.55 qEQ7NwLw.net
指まで
159:141
23/09/01 20:45:25.45 ne/hzOol.net
>>156
【架空の店や 個人病院など】の『商品CODE一覧表』とか 『顧客の住所録』とかを、ACCESSで 複数の『データベースの箱』を用意する。
EXCELで入力フォーム作って、SQLでACCESSデータベースの追加・変更。
授業では、スクレイピングや IE制御は習ってない。← これは独学(ネットで)
職業訓練校に通えば 就職できる訳ではない。
俺は『失業給付金の延長』が最大の目的だった。
160:デフォルトの名無しさん
23/09/02 09:29:37.93 t45vXwol.net
エロチックな人体験談ありがとうございました。
なるほど給付金延長目当てはあるあるな話ですね。
自分は♀との出逢い目当てで通いますよ。
161:デフォルトの名無しさん
23/09/09 09:48:51.46 x8sBUwGJ.net
With Sheet1
Dim ary
ary = .range(セル範囲)
End With
これ多用してきたんだけど、セル範囲がセル一個だけだとaryに配列じゃなくて普通のVariant型が入ることに今気づいた
この後の処理は配列であることを前提にやってるから、そこでエラーが起きる
結構いろんな所で使ってたからこれはやべー・・・・
162:デフォルトの名無しさん
23/09/09 09:58:43.37 x8sBUwGJ.net
最終行取得してセル範囲を定義したりすると、
1セルになる可能性があるからダメなんだよな
この方法使う時はセル範囲は固定した上で、
代入された配列の要素が異常値なら排除する仕組みの方がいいのか
163:デフォルトの名無しさん
23/09/09 11:21:24.50 +0dsEkXE.net
選択された範囲がセルひとつだけだった場合は
エラーメッセージ出して範囲を拡げるよう促す 処理を停める そうする方が手間は少ない
164:デフォルトの名無しさん
23/09/09 11:
165:38:21.48 ID:skhr6YT2.net
166:デフォルトの名無しさん
23/09/09 15:33:08.91 F9Z+i/7c.net
>>162
たとえていうなら、この表に追加的に買ってきてほしいものを書いてくれたら買ってきますよ、というようなものなので、買ってきてほしいものがバナナだけの時もあるわけで、バナナだけじゃ困るというエラーメッセージを出すのはちょっと・・・
>>163
それ考えたんですけど、ちょい面倒くさいなぁと思ってやめました
でもそのコードは簡潔でいいですね。拝借させてもらいますね
ありがとうございました
167:デフォルトの名無しさん
23/09/09 17:39:26.81 be6v4mh1.net
同じ問題に直面したけどググってみつけた自作関数GetArrFromRangeで対応してるわ
URLリンク(yaromai.jp)
流れとしては>>163に近いかな?
168:デフォルトの名無しさん
23/10/05 02:08:04.21 +NVPN5Yc.net
あるセルをマウスで選択すると、
選択したそのセルと隣のセルも消す、
というマクロを作って現在動かしていますが、
どうしても類似のシートをもう一つ作って連動
させたいのですが、例えば、
シートAのセルのE1をマウスで選択した時、
シートBのセルのE1も同時に選択状態にする、
というマクロは可能でしょうか?
宜しくお願い致します。
169:デフォルトの名無しさん
23/10/05 03:02:59.67 +NVPN5Yc.net
追記
別に「同時」でなくともいいです。
要は、シートBのセルのE1をマクロで
操作できればなんだっていいです。
170:デフォルトの名無しさん
23/10/05 04:09:43.70 tRnDXjTr.net
同時は無理かも知れんが
同時じゃなくて良ければ可能
次の方どうぞ
171:デフォルトの名無しさん
23/10/05 08:25:15.77 +NVPN5Yc.net
>>168
どうやればできるか教えてください
172:デフォルトの名無しさん
23/10/05 10:30:07.40 AvBTKCCq.net
Range("シートB!E1").Select
173:デフォルトの名無しさん
23/10/05 12:27:59.35 9btcP5Iv.net
>>166
「選択したそのセルと隣のセルも消す、というマクロ」
をここに書いてもらえればアドバイスできる。
174:デフォルトの名無しさん
23/10/05 20:37:12.52 +NVPN5Yc.net
>>166です。
自己解決しました。
結局ここで質問している方法は分かりませんでしたが、
別の方法でなんとかできるようになったのでそちらを
採用します。皆さん有難うございました。
175:デフォルトの名無しさん
23/10/05 20:37:35.99 +NVPN5Yc.net
>>166です。
自己解決しました。
結局ここで質問している方法は分かりませんでしたが、
別の方法でなんとかできるようになったのでそちらを
採用します。皆さん有難うございました。
176:デフォルトの名無しさん
23/10/09 18:37:12.70 bDtEeCCl.net
test
177:デフォルトの名無しさん
23/10/09 18:37:28.81 bDtEeCCl.net
test
178:デフォルトの名無しさん
23/10/09 18:43:55.87 bDtEeCCl.net
MT4のDDEサーバー機能使ってエクセルにリアルタイムレート表示させてるんだが
ここで質問よい?
179:デフォルトの名無しさん
23/10/21 00:44:14.90 QYcnZo6w.net
VBAとVBSで同じ内容をPOSTして、
返ってきたreponsebodyも同じなのに、
操作出来るHtmlElementが違うってどういう事やねん!!
180:デフォルトの名無しさん
23/10/24 23:47:02.19 Qu5vmivm.net
forで配列testにシート名を格納し、Sheets(test).Selectでシートを複数選択したいですがエラー9になります
Sheets(test(0)).Selectとするとエラーは出ないです
Debug.Print test(0)
Debug.Print test(1)
と指定するとシート名が確認できますが
Debug.Print Join(test)
と指定すると空の値でした。test0とtest1の値が連携されて表示される想定でしたがなぜ空なんでしょうか
181:デフォルトの名無しさん
23/10/25 01:50:17.21 iLS1no5v.net
配列testの初期化かforでシート名を取得している部分がおかしいんじゃない?そこのコードを書いてもらわないと。
182:デフォルトの名無しさん
23/10/25 19:24:35.26 8bx5SHat.net
>>178
そもそも
>test0とtest1の値が連携されて表示される想定
が間違ってるんだが
それができたとしても、Sheets().Selectで複数シートのセレクトはできないと思うが
183:デフォルトの名無しさん
23/10/25 19:32:55.99 8bx5SHat.net
>>178
試したけど、
Sheets()に文字列配列渡せば複数セレクトできるな
渡すのは連結された文字列とかじゃなくて、文字列の配列津
testを文字列配列で宣言すればいけるんっぽ
184:デフォルトの名無しさん
23/10/25 20:15:45.40 //t71i0T.net
>>179-181
ご指摘いただいて確認し直したところRedimの指定が間違ってました
ありがとうございました
185:デフォルトの名無しさん
23/10/31 23:39:07.52 0l/KyLnQ.net
バージョンはExceloffice2019です。
「Sheet1」で購入した野菜の一覧を作成します。
A1:A100に野菜の種類.例:トマト、キュウリ、キャベツ…
B1:B100に野菜の産地.例:千葉、埼玉‥‥
C1:C100に野菜の購入年月日.例:2023/10/31
D1:D100に野菜の価格.例:1,000
「Sheet2」に
A1:A5に野菜の種類
B1:B5に野菜の産地
を記載したときに
C1:C5に、「Sheet1」のAとBの条件に合う一番下の行の購入年月日を返す。
かつ
D1:D5に、「Sheet1」のAとBの条件に合う一番下の行の価格を返す。
これをVBAで表現できますでしょうか。
何卒、よろしくお願いいたします。
186:デフォルトの名無しさん
23/11/01 02:50:19.57 nS+y2GzJ.net
できます
187:デフォルトの名無しさん
23/11/01 02:56:30.71 LeiRH4ql.net
表現
'できらぁ
188:デフォルトの名無しさん
23/11/01 03:05:32.93 5z6NYMjm.net
ぶいば
189:デフォルトの名無しさん
23/11/01 03:12:36.26 H7+Ix2LY.net
仕様に応じて価格は変わります
価格に応じて仕様も変わります
色々突っ込みどころが多すぎる
190:デフォルトの名無しさん
23/11/01 03:27:01.62 Q2iQ3kej.net
バージョンすらまともに書けない馬鹿に何を期待するのか
191:デフォルトの名無しさん
23/11/08 17:47:52.62 TYSKNLfT.net
初歩的な質問ですみません
例えばですがセルA2の型が標準だったとして、標準だった場合は色を付けたいです
どうやってセルが標準かどうか判断すれば良いか教えて頂けませんでしょうか
192:デフォルトの名無しさん
23/11/08 18:14:40.14 TYSKNLfT.net
186です
自己解決しました
193:デフォルトの名無しさん
23/11/08 19:53:31.21 7oppFyNo.net
>>190
どうやったの?
194:デフォルトの名無しさん
23/11/10 00:50:32.41 VwCFMbHh.net
俺も気になる。
NumberFormatLocalじゃない奇想天外な解決策だったらウケる。
195:デフォルトの名無しさん
23/11/21 22:58:20.04 AR1yXI4p.net
If (a = 1) Then
'{
b = 1 ';
'}
Else
'{
b = 2 ';
'}
End If
どう?
196:デフォルトの名無しさん
23/11/21 23:58:40.18 xeomrwBy.net
それVBAか?
197:デフォルトの名無しさん
23/11/22 00:34:59.56 byPvCzkk.net
バレバレだと思ったらバレてなくてワロタ
198:デフォルトの名無しさん
23/11/26 13:42:56.19 8a4yzyW0.net
>>193
どうでもいい
199:デフォルトの名無しさん
23/11/26 20:04:28.62 bZOTy+QC.net
VBEで-キーを押すとExcelが落ちる
何で?
200:デフォルトの名無しさん
23/11/27 19:55:15.09 IFAh3DJf.net
床に置いたら落ちないんじゃね
201:デフォルトの名無しさん
23/11/27 20:06:45.93 y0lY01bz.net
俺もそう思う
202:デフォルトの名無しさん
23/11/27 20:19:28.03 wYp6UIkr.net
なにごとも
低い位置においておけば落ちることはない
203:デフォルトの名無しさん
23/11/29 05:31:22.23 0nQJ/yPv.net
Uiautomationでアプリに表示されてる文字を3万行くらい読み取ったら落ちた
エクセルじゃなくてアプリの方が
どういう理屈?
204:デフォルトの名無しさん
23/11/29 09:05:11.59 F9HVG0++.net
イベントビューアーで何が起きたかぐらいは確かめなさい
再現性あるならタスクマネージャーのパフォーマンスでメモリなのかCPUなのか
とかも アプリの表示文字3万行だけで、アバウト過ぎる
205:デフォルトの名無しさん
23/11/29 10:10:43.50 sD7VzCeS.net
昔はintの最大が32767 だからそれ越える数を扱うと落ちるソフトがよくあったな
206:デフォルトの名無しさん
23/11/30 09:29:06.87 vgaDfHiB.net
変数の値がマイナスとか変な数字になるだけじゃないの?
その程度のことで落ちるの?
207:デフォルトの名無しさん
23/11/30 10:14:04.34 uCTIv0ls.net
マイナスの場所がアクセスできなかったり
永遠にloopの終了条件に達しないとか
結果が大きくなりすぎてメモリ不足とかなる
208:デフォルトの名無しさん
23/11/30 12:17:27.34 3oFcABR+.net
古いexcelも最下行が少なかった
209:デフォルトの名無しさん
23/12/01 02:42:24.09 xLT/7JKF.net
このスレも落ちる
210:デフォルトの名無しさん
23/12/01 16:31:31.03 7wVpTT+J.net
落ちないで
211:デフォルトの名無しさん
23/12/01 17:06:11.81 fwRU51B8.net
ハゲないで
212:デフォルトの名無しさん
23/12/02 09:27:15.99 gVhM2KTB.net
戦えよ
213:デフォルトの名無しさん
23/12/02 09:57:19.84 vycJbAdX.net
Excel VBAって長時間経過すると一定間隔で一時的にCPU割り当てが止まったりする仕様ですか?
プログレスバーもどきやマクロ経過時間を10秒毎に表示させているんですが、毎回2万件を超えたあたりから一時的に処理が停止しているみたいなんですが。
214:デフォルトの名無しさん
23/12/02 09:58:41.46 vycJbAdX.net
訂正。10秒毎にではなく10件処理する毎にです。
215:デフォルトの名無しさん
23/12/02 10:01:01.61 OwcK4uEB.net
セルコピーの繰返しで条件付書式設定が多大になってるとか
216:デフォルトの名無しさん
23/12/02 10:11:47.98 0tC7Yjqi.net
excelで一万件以上のデータを扱わないで下さい
217:デフォルトの名無しさん
23/12/02 10:11:58.70 vycJbAdX.net
変数の価をセルへ記入する処理は繰り返し行っていますが条件付書式は設定していないしセルからセルへのコピー処理はしていません。
処理開始から20000件あたりまではスルスルと進んで行って20000件を超えたあたりから休み休みになるのが謎です。
ソース的には同じことを繰り返しているだけなんですけどね。
セルへ記入されていく行数は増えていくのでそのあたりが原因なんでしょうか。
218:デフォルトの名無しさん
23/12/02 10:29:12.94 gVhM2KTB.net
pcの性能じゃね
毎回起きるなら条件を変えてテストし発生条件をはっきりさせる
219:デフォルトの名無しさん
23/12/02 10:55:39.59 5w2fWXOw.net
計算式が2万行あるとか
220:デフォルトの名無しさん
23/12/02 10:58:44.05 5w2fWXOw.net
実行前に以下弄って画面更新を抑制してる?
Application.ScreenUpdating
Application.Calculation
221:デフォルトの名無しさん
23/12/02 11:01:53.10 vycJbAdX.net
いえ、単なる文字列を上から下に向かってひたすら記入していくだけです。
記入する文字列を決めるためにVlookup関数の結果をフィルターして抽出された1行を文字列としてセルに記入してますが、Vlookup関数の数は固定で増えるわけでは無いのでCPU負荷も一定なんじゃないかと思います。
222:デフォルトの名無しさん
23/12/02 11:02:50.91 vycJbAdX.net
>>218
Vlookup関数の結果を利用するのでそれはできないです。
223:デフォルトの名無しさん
23/12/02 11:03:58.36 vycJbAdX.net
あ、すみません
Application.ScreenUpdating
は抑止したり解除したりを繰り返してました。
224:デフォルトの名無しさん
23/12/02 12:25:52.64 dC73Xol+.net
原因追及したいのなら
出力データを増やさずに同じ行に書き出すとか
225:デフォルトの名無しさん
23/12/02 13:23:33.03 gVhM2KTB.net
そのうち前の担当が作ったとか言い出すんじゃね
226:デフォルトの名無しさん
23/12/02 17:03:47.70 H7HADDQf.net
Windowsの仕様として、重たい処理をさせてるときは中の人が勝手に一休みするようにできている
アプデがいくつもある時など、進捗の%が進んだり止まったりなのを目にしたこともあるだろう
エロ動画を何本もDLしてる時に同サイズなのにすぐ落ちるのといつまでも落ちないのがあるように
基本的にExcelは同じディレクトリにテンポラリーファイルを自動的に作る(Excelに限らないが
そのファイルと相互に連携して「戻る」だの「処理を取り消す」だの「保存しない」だのを可能にしている
システムファイルなので敢えて表示する指定をしないと通常は目に見えない
処理は目の前のファイルだけで無くそのシステムファイルにも反映されている
いっぺんに大量の仕事をさせると「さすがに休ませろよ」と両方のファイルがブー垂れる←チンタラし出す
for-nextとかLoopの中にDoEventを盛り込むと、多少は改善されるかも知れないしされないかも知れない
URLリンク(www.tipsfound.com)
URLリンク(qiita.com)
正直なハナシ、おれには何が何だかさっぱり理解できないが呪文みたいなものなんだろう(違う
227:デフォルトの名無しさん
23/12/02 17:12:50.25 hwp9WWnB.net
デフォルト10分に一回の自動回復用データの保存か
228:デフォルトの名無しさん
23/12/02 19:21:37.99 FUL/sgR0.net
>>224
馬鹿の妄想
229:デフォルトの名無しさん
23/12/02 19:43:05.04 UnnytQXE.net
>>224
バカの長文ってホント的を得てるな
応答なしってのは文字通りマウス操作やキー操作に応答がない状態で、
なぜそれが起きるかは操作に応答する余裕もないくらい全集中して処理してるから
リンク先に書いてあるのは定期的にマウスだのキーボードだの気にしろよって指示
ID:vycJbAdXが書いてることとは根本的に違う事象
230:デフォルトの名無しさん
23/12/02 21:20:16.63 gVhM2KTB.net
内容を理解しないで ○○すると速くなるとか、エラーを出なくするとかを検索で見つけたのを
鵜呑みにして呪文のように至る所に無意味なコードを貼るタイプかな
231:デフォルトの名無しさん
23/12/02 22:41:07.55 H7HADDQf.net
「詳細設定」-「ハードウェア グラフィック アクセラレータを無効にする」にチェックしOK
使っていないアドインがあったらチェックを外す
可能性が高いのが、GPUがレッドゾーン タスクマネージャーのパフォーマンスでCPU・メモリ・ディスク
辺りはまったりと余裕ぶっこいてるのに、GPUがパンパン状態 これは増設できないマシンなら
どうしようもない 一行目の処理の前後でこれを比較してみて変わったら原因はそこ
フリーズする訳でも無くちゃんと完走するなら「こういうもんだ」で済ますのも大人の対応
高性能ギンギン!のマシンとCeleronマシンでも現象一緒とかなら尚更コチラ側では対処のしようも無い
232:デフォルトの名無しさん
23/12/03 01:31:41.80 MKV2NgOh.net
>Windowsの仕様として、重たい処理をさせてるときは中の人が勝手に一休みするようにできている
そもそもこれが嘘
そんな仕様ねーよ
233:デフォルトの名無しさん
23/12/03 06:53:42.28 xZHPSaOR.net
>>203
そもそもintって何?
データ型は正確に書かないと
234:デフォルトの名無しさん
23/12/03 06:55:03.43 xZHPSaOR.net
>>230
アイドリング中はデータの先読みをしているから、彼は勘違いして反対のことを言ってしまっているんだろうな。
235:デフォルトの名無しさん
23/12/03 09:55:11.40 5HcnYZkn.net
重たい処理で休むってCPU温度が上がったせいで速度落とすあれのことかと
236:デフォルトの名無しさん
23/12/03 11:08:35.63 QTewqrs7.net
>>224
これはひどい
237:デフォルトの名無しさん
23/12/03 11:10:09.56 QTewqrs7.net
>>228
script kiddie
238:デフォルトの名無しさん
23/12/04 15:12:23.07 Nbpgvbo/.net
for each で処理するときにI列は処理を飛ばしたかったので
for each rng in range
if rng.column = 9 then
goto skip
処理内容
という風にしたところすべての処理がスキップされてしまったので
以下のようにしたらうまくいきました。解決したんでよかったんですが
どういった理由で結果が違うのでしょうか?
if rng.column <> 9 then
処理内容
239:デフォルトの名無しさん
23/12/04 15:18:26.28 +hRuE00u.net
skip,endif,next の位置関係を省略すんな
240:デフォルトの名無しさん
23/12/04 16:25:34.26 xc8M7hCZ.net
まーたどっかから質問パクって来た?
URLリンク(oshiete.goo.ne.jp)
若干改変してるか RangeとCellsについて、小一時間問い詰められてみるのもいいかも
URLリンク(sugoikaizen.com)
ここでこうだよって書かれても身に付かないだろうし(おれもだし
241:デフォルトの名無しさん
23/12/04 16:43:57.28 Nbpgvbo/.net
質問パクったわけではないですが確かに似てますね
省略しないと以下になります
処理の内容は同じです
■うまくいく方
For Each rng In Range(Cells(3, 7), Cells(m, n))
If rng.Column <> 9 Then
If rng.Value = "-" Then
dataEx.Cells(j, i) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(rng.Row, 3).Value
dataEx.Cells(j, i + 1) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(2, rng.Column).Value
j = j + 1
End If
End If
-----------------------------------------------------------------
■すべてスキップされてしまう方
For Each rng In Range(Cells(3, 7), Cells(m, n))
If rng.Column = 9 Then
GoTo skipCol
If rng.Value = "-" Then
dataEx.Cells(j, i) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(rng.Row, 3).Value
dataEx.Cells(j, i + 1) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(2, rng.Column).Value
j = j + 1
End If
skipCol:
End If
242:デフォルトの名無しさん
23/12/04 16:46:57.68 Nbpgvbo/.net
すみません最後両方とも「Next」付け忘れました
243:デフォルトの名無しさん
23/12/04 17:25:36.52 IJgpRS5M.net
>>239
馬鹿はGotoを使う法則
こんなこと瞬時にわからん頭ならやめとけ
244:デフォルトの名無しさん
23/12/04 20:44:12.36 iY+/6ufA.net
>>239
落ち着いてよく考えてみ
245:デフォルトの名無しさん
23/12/04 21:18:11.46 1Ww5lLLM.net
ネタだろうな
246:デフォルトの名無しさん
23/12/05 01:23:49.48 9BlMohwu.net
よく知らないけど、この= は代入演算子か
j = j + 1
この= は比較演算子か
If rng.Column = 9 Then
こんな= を、2つの意味で使う言語ってあるの?
Ruby では、= は代入演算子で、== は比較演算子だけど
247:デフォルトの名無しさん
23/12/05 01:30:03.25 +1t+2z4I.net
Rubyの話にしたい例のキチガイ
248:デフォルトの名無しさん
23/12/05 06:54:56.45 i0GvpvVS.net
>>244
馬鹿にはわからんよ
ドンマイ
249:デフォルトの名無しさん
23/12/05 10:53:58.86 3p/65ALc.net
客観的にこの人はVBAができる人だと思ってもらうのに、VBAエキスパートのスタンダードを取るのは効果あり?
受験料高い上に対して難しくもない資格なんだけど、知らん人から見れば勘違いしてくれるかねぇ
250:デフォルトの名無しさん
23/12/05 11:03:15.47 3GhQ7B+D.net
あんなハリボテみたいな資格で勘違いしてくれるような会社に入りたいのか?
251:デフォルトの名無しさん
23/12/05 11:03:58.32 0D+v86FO.net
名刺に書くには恥ずかしくない?
252:デフォルトの名無しさん
23/12/05 11:21:20.84 3p/65ALc.net
>>248
ある大手の非IT子会社の求人にVBAやデータベース、PowerAutomateができれば尚可
みたいなことが書いてあるんよ
まぁVBA自体は広く知られてるから他企業でも資格持ってれば多少有利になるかどうなのかと思ってね。
>>249
名刺に書くなら恥ずかしいわな
253:デフォルトの名無しさん
23/12/05 20:07:16.92 R0TA+AvY.net
>>239
自分でステップ実行してどのように処理されているか確認してみては。本当に分からないならif文の仕組みを勉強するところから始める必要があるかと。
254:デフォルトの名無しさん
23/12/06 23:52:59.21 Y0R/nynM.net
>>239って
ここに張り付けたからインデント消えているのか?
実際のコードもインデントなしで書いてそうだな
255:デフォルトの名無しさん
23/12/07 01:27:12.14 J0zHJsHa.net
>>252
ちゃんとインデントついてるぞ
256:デフォルトの名無しさん
23/12/10 09:52:24.49 b059r/QR.net
フィルターの設定について質問させてください。各年の1月のデータを取得したいのですがうまくいきません。
手動だと、[日付フィルタ]から[期間内の全日付で1月を選んでできます。同じようにしたいのですがどうすればよいでしょうか?
ws.Rows("1:1").AutoFilter
' C列日付のフィルター条件を設定
Dim oldestYear As Integer
oldestYear = 2021 ' 最も古い年を指定
' 1月のデータを含むフィルター条件を設定
Dim filterCriteria As String
filterCriteria = ">=01/01/" & oldestYear & " AND <02/01/" & (oldestYear + 1)
' C列で条件に基づいてフィルタリング
ws.Columns("C:C").AutoFilter Field:=3, Criteria1:=filterCriteria
257:デフォルトの名無しさん
23/12/10 11:43:28.11 /HCFQ2uK.net
手動でうまくいくなら
マクロの記録→手動操作→記録終了
とすればマクロできてないか
258:デフォルトの名無しさん
23/12/10 22:40:23.08 sT365tcs.net
Stringなの?日付は
259:デフォルトの名無しさん
23/12/11 20:35:30.67 bj1MKtN8.net
Integerじゃね?(適当
260:デフォルトの名無しさん
23/12/11 20:37:58.60 dC/0oU5n.net
以外にもDecimal
261:デフォルトの名無しさん
23/12/11 23:17:25.43 D21ZDkpy.net
意外?
262:デフォルトの名無しさん
23/12/12 07:24:28.25 oC/8xaVQ.net
>>254
そのフィルター条件の書き方はどこかで紹介されてたもの?
Criteria1に複数条件を入れず、分ける必要があるみたい
ws.Columns("C:C").AutoFilter Field:=3, Criteria1:=">=01/01/" & oldestYear, Operator:=xlAnd, Criteria2:="<02/01/" & (oldestYear + 1)
263:デフォルトの名無しさん
23/12/12 11:29:55.50 TixshqYj.net
ユーザーフォームをワークブックから指定するにはどのようにすればいいですか?
セルだとこんな書き方をしてます
Workbooks(”book1”).Worksheets("Sheet1").Cells(1,1)
そこで
Workbooks(”book1”).UserForm1.Label1
のように書いたらエラーです
検索しても、ブックを指定せず単にUserForm1とだけ書いている事例しか見当たりませんでした
264:デフォルトの名無しさん
23/12/12 18:44:33.33 isBhbmiY.net
「やまぶきいろ」って
ヤマブ黄色かと思ってたら
山吹色だったんですね。
まあそれだと「ヤマブ」というのが意味不明なんだけど。
265:デフォルトの名無しさん
23/12/12 18:47:07.92 EvQ2Bvwd.net
お馬鹿自慢要らない
266:デフォルトの名無しさん
23/12/12 21:52:49.64 FzkyMEiq.net
まあ将来はマクロVBAは廃止されると予想されるからデカイ顔できるのも今のうちだぞ
267:デフォルトの名無しさん
23/12/13 09:34:17.90 0IbkX0L9.net
VBベースじゃないほうがこれからは良いだろうしなあ
268:デフォルトの名無しさん
23/12/13 10:08:54.21 fb2rzu10.net
仮にマクロ無くなってもでかい顔するやつはする
269:デフォルトの名無しさん
23/12/13 10:20:57.24 ZzGWLSGP.net
>>261
開いてるファイルからVBAを使って他のファイルのユーザーフォームを操作したい
みたいな要望に読めるけど、こういうことかな?
URLリンク(www.chishikinosoukonoseiri.com)
この人も苦労したみたいだけど、結果が正しいのか正統派の記述方式なのかもよくわからん
Designer なんて今まで食べたこと無いし
しかもバージョンが若干古い? IE絡みのオブジェクトっぽいし、IE亡き今、通用するのか
どうかも不明 ま、サイトは今年の春に更新されてるから使えなくなったなら泣き言も
書かれていそうだがそれは無いからだいじょぶか?
行き詰ってるなら試してみる価値はありそう
270:デフォルトの名無しさん
23/12/13 10:52:16.86 +QBADPFJ.net
VBA廃止でpowerqueryの時代が来る?
271:デフォルトの名無しさん
23/12/13 11:21:09.91 bFxo3E2h.net
>>267 レスありがとうございます
質問の意図はもっと単純で、複数ブックが開いているとき、Book1のマクロでcells(1.1).value=1みたいなコードを実行したとして、
実はBook2がアクティブだとBook1じゃなくてBook2の方が書き換わっちゃう
けど、操作したいセルをワークブック、ワークシートの順で書いとけば特定できる
ならば、複数ブックが開いていて、各ブックに同名のUserForm1があるとどうなるの?
どのブックかの明示は必要?書き方は? ということでした
(これを書いた方が良かったですね)
んで、カキコした後、試しにBook1、Book2にそれぞれ同名のUserForm1を作ってブックが2つ開かれてる状態にしても特に何も起きない
Book2をセル選択状態にして、Book1でUserForm1.ShowとやるとBook1側のユーザーフォームが開く
じゃあ、どのブックかの明示は不要?ほかの問題は起きないの?というのが現在の疑問です
マイクロソフトのリファレンスくらいは見ているのですけど理解できていません・・ 以前、オブジェクト階層樹形図のようなものがあった気がするけど、それも見つけられず・・
URLリンク(learn.microsoft.com)
272:デフォルトの名無しさん
23/12/13 11:21:15.74 hoISaMFl.net
>>268
このハゲ!
273:デフォルトの名無しさん
23/12/13 11:26:50.73 bFxo3E2h.net
>>269
一般のネットブラウザだと字がちいさいと思います、すみません
スレチですが時々発生するのも疑問です
274:デフォルトの名無しさん
23/12/13 13:47:39.13 b26gKOXL.net
>>269
ブックじゃなくてプロジェクトのメンバー
例えばプロジェクト名がVBAProject1で、UserForm1っていうフォームモジュールがあるとして
dim a as VBAProject1.UserForm1
set a = new VBAProject1.UserForm1
で指定できる
プロジェクト名はメニューのツール→(プロジェクト名)のプロパティとかから設定可能
275:デフォルトの名無しさん
23/12/13 13:51:08.21 b26gKOXL.net
こういうのはオブジェクトブラウザから見ると簡単に確認できるよ
今回なら適当なモジュール内で
dim a as UserForm1
と書いてUserForm1を右クリック→オブジェクトブラウザを選択すると
「Private Class UserForm1
VBAProject1 のメンバー」
と下部の説明欄に表示される
276:デフォルトの名無しさん
23/12/13 14:05:40.64 ZzGWLSGP.net
>>269
じゃあ、みんな大好きオフィスTANAKAさんのこれで
URLリンク(officetanaka.net)
変数に入れとけば他のファイルには影響出ないんじゃないかな、と
>Book2をセル選択状態にして、Book1でUserForm1.ShowとやるとBook1側のユーザー
フォームが開く
これは、Book1で・・の時点で選択状態が移行しちゃってるんじゃないのか?
あと、このページの中ほどで説明してるけど
URLリンク(www.kurumico.com)
>・実は、事前にメモリにロードされていないまま Showメソッドで UserForm を
>表示する場合、自動的にメモリにロードされているんです。
ここがミソか
いくつもファイルを開いて作業することが多いケースなら、Show では無く Load を使えと
最後にちゃんとUnLoadするのも忘れずに
277:デフォルトの名無しさん
23/12/13 15:19:48.92 bFxo3E2h.net
皆さんありがとうございます
>>274
>選択状態が移行しちゃってるんじゃないの
それはないと判断してます、というのは
Book1に下記コードをかいておき、Book2のセルB2とかを選択した状態で、VBエディタの三角ボタンで実行すると、同名のユーザーフォームのうちBook1側が表示されるが、セル(1,1)はBook2側が操作されるからです
Sub 試験用()
UserForm1.Show
Cells(1,1).Value=1
End Sub
>>272
VBAProjectの下にあることは分かりました
オブジェクトブラウザも見ましたし、VBAProject1. と打ち込んで、入力サジェストにUserFormが出てくることも確認しました
で、2つのブックのプロジェクトも同名のVBAProject1にして、先ほどのコードのshowの行を下記に変えて実行しても結果は同じでした
VBAProject1.UserForm1.Show
つまり、指定が無いとシートやセルはその時アクティブなものを操作するけど、ユーザーフォームは(サブプロシージャとかも?)プロジェクト内から選択されるので、別ブックが開いていて、偶然同名のものがあっても問題ない、ということですかね
278:デフォルトの名無しさん
23/12/13 15:24:52.44 bFxo3E2h.net
>>274
xボタンで閉じても「メモリ上から削除」されるんですよね、もう一度落ち着いて読み返して見ますけど
279:デフォルトの名無しさん
23/12/13 22:46:03.48 b26gKOXL.net
>>275
>>プロジェクト内から選択されるので、別ブックが開いていて、偶然同名のものがあっても問題ない
その通りです。
参照設定やApplication.Runなどで明示的に他プロジェクトのメンバーを呼び出さない限り、
そのプロジェクト内では自らのプロジェクトのメンバーしか呼ばれません。
ちなみに UserForm1 が変数名ではなくクラス名の場合、自動的にインスタンス化されたフォームを参照します。
プロジェクトのメンバーはあくまでクラス(≒型レベル)であり、インスタンス(≒値レベル)ではないという事は注意してください。
また、「指定が無いとシートやセルはその時アクティブなものを操作する」は厳密には、省略されたと判断されたら親オブジェクトを補完しようとすると考えた方がいいです。
例えばそのスコープ内でCellsという名前を定義した場合、 Cells(1,1).Value と書いても省略されたと判断されずにその定義したオブジェクトが参照されます。
定義されていない場合は省略されたと判断され Application.ActiveSheet. が頭に追加されます。
280:デフォルトの名無しさん
23/12/14 09:05:18.07 3Jt9wkWi.net
>>277
詳しくありがとうございます
疑問だった同名ユーザーフォームの件はまずは解決です
後半の「スコープ内でCellsという名前を定義・・」の部分を練習問題と思って、
Book2選択状態でもBook1でCells(1,1).Value=1を実行してBook1側セルが操作されるコードを考えてみます
ご説明頂きながらこちらの理解が足らない状態です,もし、そーじゃねーよ、ということなら恐縮ですがご指摘頂ければ幸いです
281:デフォルトの名無しさん
23/12/21 07:46:49.25 VfXlm8CZ.net
会社の先輩が
「サーバーがコケた」と言って魔した。
これはどういう意味なんですか?擬人法だとは思うけど。
282:デフォルトの名無しさん
23/12/21 07:46:58.32 VfXlm8CZ.net
ま
283:デフォルトの名無しさん
23/12/21 08:07:57.44 5xKtyKw4.net
>>279
板違い
284:デフォルトの名無しさん
23/12/21 08:44:41.65 VfXlm8CZ.net
Excelの先輩が
「サーバーがコケた」と言ってました。
これはどういう意味なんですか?擬人法だとは思うけど。
285:デフォルトの名無しさん
23/12/21 08:45:07.84 VfXlm8CZ.net
>>281
このハゲ!
286:デフォルトの名無しさん
23/12/21 10:36:38.99 xlAPeSS0.net
>>279
ウォーターサーバーかな?
287:デフォルトの名無しさん
23/12/21 11:39:20.36 VfXlm8CZ.net
>>284
そうみたいです。
「コケちゃいました。だから金メダル取れませんでした。」という意味だって。
288:デフォルトの名無しさん
23/12/21 15:11:32.27 UFnvFSs2.net
現在計算が自動なのか手動なのかを判断する変数は見つけたのですが、これをリアルタイムで画面に出力する方法ってありますでしょうか?
イメージとしては条件付き書式で現在の計算が自動なら青、手動なら赤を表示するみたいなのを実装したいです
289:デフォルトの名無しさん
23/12/21 19:59:01.09 3GSHThlW.net
その変数の値をセルに表示するサブルーチンを作って1秒毎に実行する
290:デフォルトの名無しさん
23/12/21 20:55:44.88 Zzwx7STl.net
毎回必ず自動計算にしてしまうのはだめなの?
291:デフォルトの名無しさん
23/12/22 08:39:48.76 FajFP1p6.net
>>286
Excelでリアルタイムに更新する意味がない
自分で変更するなら変更時にセルにも値出すように組めばいい
292:デフォルトの名無しさん
23/12/22 17:31:18.37 ldIFfRbs.net
VBAは使わないが、
Webやローカルのデータを
外部参照するクエリーを
秒単位で更新させる機能はある。
あまり頻度を上げるとサーバに負荷をかけてしまうので、
確認しながら慎重に使っているが。
293:デフォルトの名無しさん
23/12/23 15:28:27.09 TfHA7K1j.net
>>286
よく使うシートでってなら、適当なオプションボタンなんかにその関数紐付けておけばいいんでは?
更にはそれで切替もできるような
全Workbookでってなら、フォームで作って呼出ボタンをクイックアクセスツールバーにでも置くくらい?
294:デフォルトの名無しさん
23/12/24 01:28:27.22 l/0x93fn.net
A1:C1*D2:D5の計算結果を二次元配列にするみたいなときってループなしでできたりするんでしょうか?
ワークシート関数ならスピルで一発だと思うんですが、VBAだとどうなんでしょう?
295:デフォルトの名無しさん
23/12/24 06:18:33.95 I70/tr7G.net
ワークシート関数でできるならそれでやれば良いんじゃね
296:デフォルトの名無しさん
23/12/29 20:50:51.68 1fvRXsft.net
>>247
ちゃんと体系的に学んで知っていることは重要
ちょっとしたことを知らないせいで、変なやり方をする技術者は多い
297:デフォルトの名無しさん
23/12/29 20:53:15.92 1fvRXsft.net
>>286
Excelを使わずに自分でデスクトップアプリを作った方がいいよ
298:デフォルトの名無しさん
23/12/30 01:00:29.23 lZZlE2RF.net
>>294
これな。ネットの野良マクロをコピー職人が多い事多い事
299:デフォルトの名無しさん
23/12/31 00:00:13.72 gZgGGHZV.net
綺麗すぎるコードはかえって怪しいかもな
300:デフォルトの名無しさん
23/12/31 01:35:35.84 vraHwHL1.net
学校のテストじゃないんだから、評価されるのは仕事で結果を出したやつだけ
自作かコピペか、自分で考えたか人に聞きまくったかAIにやらせたか、手段が問われることなんてないから
301:デフォルトの名無しさん
23/12/31 17:53:00.32 3wmF+Ciz.net
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で宣言するのは何故間違いなのでしょうか?
302:デフォルトの名無しさん
23/12/31 18:00:03.29 fNILhI+9.net
CollectionてVBA内部世界のオブジェクト管理に限るんじゃないの?
CreateObjectで作ったVBA外部のオブジェクトを扱えるとは思えないけど
303:デフォルトの名無しさん
23/12/31 18:55:45.23 1wnOvxvM.net
>>299
クラスモジュールに書いてる?
304:デフォルトの名無しさん
24/01/01 00:07:34.93 MaH6J7uc.net
開けましておめ
305:デフォルトの名無しさん
24/01/01 01:30:53.10 /rCM9JK/.net
>>298
仕事だからこそ、どう作られているかが重要。
306:デフォルトの名無しさん
24/01/02 08:54:33.87 nzmFeBBB.net
>>286
やりたい目的言えば別の代替案出てきそう臭がする。
307:デフォルトの名無しさん
24/01/02 14:58:32.95 NJgc4isg.net
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つのキーを押したときだけ無反応です。他のキー、例えば数字やアルファベットキーを押した場合はイベント発生します。
コードはコピペしてるので完全に同じです
よろしくお願いします
308:デフォルトの名無しさん
24/01/02 17:08:18.59 CQp0gfLy.net
>>305
ノートPCのメーカーと型番を書いた方がいいかも。
もしかしたら他のキーと同時に押した時にしかキーコードを送らないとかやってるかもしれない
309:デフォルトの名無しさん
24/01/02 17:48:42.59 HPsEIlot.net
>>305
フォームのKeyPreviewプロパティがTrueじゃないんだろ
310:デフォルトの名無しさん
24/01/02 20:19:27.92 G9bvfkvl.net
>>305
そういうOSに関することをやると挙動が変わるからやめた方がいい。
Excel VBAは古いものと新しいものが同居しているから、あまり書かれないことを書くとはまる。
311:デフォルトの名無しさん
24/01/02 21:37:51.33 HPsEIlot.net
>>308が無能なだけでVBAのせいじゃなくね?
312:デフォルトの名無しさん
24/01/02 21:47:33.55 yI/hz6th.net
>>309
>>308が無毛なだけでハゲのせいで頭がおかしなことを言っている
313:デフォルトの名無しさん
24/01/02 23:13:53.34 MZzCTdib.net
>>305
その3つは複数のキーを同時に押すことで特殊な動作をさせるために使っている
314:デフォルトの名無しさん
24/01/02 23:57:34.67 NJgc4isg.net
ありがとうございます
>>306
>>311
最終目標がctrl+down/upによりリストボックス内の項目を入れ替える事です
ctrl+down/upが機能しないため、原因を探っている所なんです
もちろん自宅のパソコンでは思った通りの動きが実現できています
型番は会社に行かないとわからないので今はわかりません
>>307
KeyPreviewプロパティが見当たらないので調べたところ、
VBではKeyPreviewプロパティがあるが、VBAでは存在しないとのことです
正しいでしょうか
315:デフォルトの名無しさん
24/01/03 00:16:06.66 PY0bko23.net
他のキーと同時に押さないとキーコードを送らない可能性は自分も考えていたのですが、もう少し掘り下げて調べてみます
316:デフォルトの名無しさん
24/01/03 00:56:53.29 +zfFyPC5.net
馬鹿ってWindows標準でないキーアサインするよな
317:デフォルトの名無しさん
24/01/03 08:50:41.30 Aw29e2Gk.net
Emacs
318:デフォルトの名無しさん
24/01/03 11:46:15.43 PY0bko23.net
>>305ですが、いくつか実験したところ解決しました
環境によって受け取れるキーコードが違うようです
イベントハンドラの第一引数KeyCodeにコントロールキーが入るケースと入らないケースがあるようで、会社の環境だと入らないようです
KeyCodeにコントロールキーが入る環境だと、コントロールキーを単独で打っても認識できるようなのですが、入らない環境だと他のキーとセットで打った場合のみ第二引数のShiftにコントロールキーがはいるようです
319:デフォルトの名無しさん
24/01/04 09:51:48.22 8ldacu+2.net
ノートPCに外付けのキーボード接続すれば、自宅PCと同じ動作するかもね
確かにノートPCのキー・アサインはメーカーに依っても製造時期に依っても様々
320:デフォルトの名無しさん
24/01/04 15:37:18.98 e9Yi6W7+.net
素直にWindowsアプリを作ればいいのにな
321:デフォルトの名無しさん
24/01/04 16:26:45.35 t9OXoE69.net
>>318
わたしが素直でないと申すか?
糞!
322:デフォルトの名無しさん
24/01/04 17:31:34.88 e9Yi6W7+.net
ハードウェアの割り込み、OSのメッセージをExcel経由で得るというのは素直じゃない。
323:デフォルトの名無しさん
24/01/04 17:35:33.92 t9OXoE69.net
>>320
糞!糞!糞!
324:デフォルトの名無しさん
24/01/04 19:08:52.50 e9Yi6W7+.net
Pythonについてはどう思ってんのかな?
325:デフォルトの名無しさん
24/01/04 19:31:16.02 t9OXoE69.net
>>322
もう糞(ふん)をして寝るわ
326:デフォルトの名無しさん
24/01/04 19:44:33.23 zwj60hXG.net
5×5のセル内をソートして、左上が最大値でそこから昇順に右下が最小値にして数値を入れ替えるマクロって作れますか?
327:デフォルトの名無しさん
24/01/04 20:28:44.78 e9Yi6W7+.net
>>324
そんな課題を出す学校があるのか
なぜできないと思うのかな?
328:デフォルトの名無しさん
24/01/04 20:48:12.58 epENqCjo.net
Excelのバージョンわからないけど、そういうのは今はマクロでなくてシート関数で出来るレベル。
329:デフォルトの名無しさん
24/01/04 21:30:12.87 TL+QpeJQ.net
最大値から昇順は全データが同一の時のみ可能なので、初期状態で必ず昇順になっている
マクロも関数もまったく必要ない
330:デフォルトの名無しさん
24/01/04 21:44:11.20 reskTtOH.net
>>324
馬鹿は帰れ
331:デフォルトの名無しさん
24/01/04 21:58:19.60 vv8992PB.net
>>324
昇順だと最大値より大きな値はないんじゃね
332:デフォルトの名無しさん
24/01/04 22:52:57.73 8ldacu+2.net
A1:E5まですでに埋まっていると
それを一旦作業列にでもコピーして昇順に並べ替えると
並び終わった順に5つずつA1:E1、B1:E2、・・という行ごとに埋めてくカタチなのか
A1、B1、A2、C1、B2、A3、・・と、ハスに埋めてくカタチなのか
A1:A5、B1:B5、C1:C5、・・と、列ごとに埋めてくカタチなのか
いや、いずれにしろA1:E5を入れ替えるなら関数は無理だろ マクロやVBAでしかできない
333:デフォルトの名無しさん
24/01/04 23:18:36.18 44UH0tDv.net
>>278
たいぶ亀だけど、最初に言った通り参照設定やApplication.Runを使用します。
まずBook2で選択状態のセルを取得するメソッド(関数)やプロパティを標準モジュールで作成して、
Book1のモジュール内で宣言したCellsに上記の方法で呼び出したその戻り値を割り当てます。
ただし、そもそも他のブックを見ているときに選択状態というのを認識してくれるのか検証してないです。
334:デフォルトの名無しさん
24/01/05 11:28:46.79 OkMjEs1t.net
>>330
ありがとございます!
一度べつのセルに並べてから昇順にして元のセルに入れなおせばいいんですね!
335:デフォルトの名無しさん
24/01/07 14:25:39.45 Zu5udfiU.net
シートコピーとシート名変更について質問なのですが
アクティブシートの7個左にあるシートをコピーして
アクティブシートの右側にシート名を明日の日付(例:24年1月8日)にして貼り付け
という動きをさせたいんですがどうすればいいでしょうか?
336:デフォルトの名無しさん
24/01/07 14:34:54.50 BWXKnEg4.net
「マクロの記録」でやりたい操作をコードにしてみ
337:デフォルトの名無しさん
24/01/07 15:33:58.57 9MKsxzn1.net
>>334
おお…なるほど
君がやりたい操作はこういう事でしょ?と
操作してみて表示させればいいのか
ありがとうございますその発想はありませんでした
338:デフォルトの名無しさん
24/01/09 20:19:55.53 /NZC7p4w.net
ファイル移動をするのにNameで変数を使ってやりたいけどうまくできません
339:デフォルトの名無しさん
24/01/09 20:23:46.49 /NZC7p4w.net
>>336 の続き
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で変数は使えませんか?
340:デフォルトの名無しさん
24/01/09 22:02:52.13 yOyd7K8a.net
>>337
うちの環境では動いたのでなんか見落としているのではないかな
341:デフォルトの名無しさん
24/01/09 22:31:05.76 g/zTW0/0.net
セル内の文字の頭にシングルクォーテーションがついてるとか。
342:デフォルトの名無しさん
24/01/10 00:45:29.03 QjRR+OtK.net
うまくいかないと主張するだけで絶対にエラーを書かないタイプ
343:デフォルトの名無しさん
24/01/10 11:25:08.02 sAzyr022.net
罫線についての質問です。
連続した任意の選択されたセル範囲
(例えばA1,A2,A3,B3,C3,D3のようなL字型)
に外枠の罫線を描きたいのですが、
どのようにすればよいでしょうか
344:デフォルトの名無しさん
24/01/10 11:32:15.87 Wf3Eae89.net
> 彼らはよく、社会に貢献したいと口にする。
> なんでも社会悪のネトウヨを自殺に追い込むことが、社会に貢献することなんだそうで。
> イジメや嫌がらせで社会に貢献できる教師や警官になるために、あえて帰化したんであって、祖国同胞を裏切ったわけではなく、心は●●人なんだそうだ。
>
> 昔は帰化すると裏切り者と呼ばれたりしたが、祖国に国籍を残したまま帰化する方法が確立された現在では、社会に貢献するためにむしろ帰化することが推奨されている。
> 拳銃所持で前科のある生粋の反日家ですら、今では普通に帰化している。
>
> ●●学会などはネトウヨ認定した日本人を盗撮して、痴漢の写真だと言ってばらまいている。
> それらの写真は、集団ストーカーに使用される。
> 彼らは集団ストーカーを、[地域で子供を守る安心安全パトロール]と称している。
345:デフォルトの名無しさん
24/01/10 13:52:33.52 QjRR+OtK.net
>>341
それはVBAに関係があるのか?
346:デフォルトの名無しさん
24/01/10 14:42:52.94 54SkLlBn.net
必要なセルをCtrlキーを押しながら選択し、L字型を形成
右クリック - セルの書式設定 - 罫線タブ - スタイルで線種を選んでから[外枠]ボタンを押す
想定していない余計な位置にも罫線が引かれるので、同様に不要なセルを選択し罫線タブから[なし]を使って消す
2024年の方針 : おっちょこちょいに要注意(要らぬ低評価に繋がり兼ねない)
347:デフォルトの名無しさん
24/01/10 15:34:00.16 6PPGwb7s.net
>>343
VBAで実現する方法を聞いてるんだろ
348:338
24/01/10 16:34:51.12 sAzyr022.net
>>341です。
>>344さんありがとうございます。
>>345さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Add_
>>344さんありがとうございます。
>>345さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Additional_Address", Selection).Select
を繰り返して複数のセルを同時に選択するところまではできています。
一方で、例えばA1,A2,A3,B3,C3,D3の順にAdditional_Addressを指定すると
選択範囲がA1~A3の縦3連とB3~D3の横3連に分割されて選択されるため、
xlEdgeLeft等の処理が縦3連と横3連それぞれで実行されてしまう状況です。
こうなるのを
┌┐
││
│├─┐
└┴─┘
こうしたい
┌┐
││
│└─┐
└──┘
セルごとに隣接判定をして罫線を描く/描かないの処理を
するしかないのでしょうか
349:デフォルトの名無しさん
24/01/10 16:39:20.24 xiFTPfWu.net
>>346
そう、それしかない
350:338
24/01/10 18:00:56.27 sAzyr022.net
>>347さん
やはり愚直に処理するしかないのですね。
ありがとうございます。
351:デフォルトの名無しさん
24/01/10 18:06:26.38 54SkLlBn.net
A1:D3選択で範囲の外枠を描画
B1:D2選択で範囲の左端・下端に枠線を引き 範囲の上端・右端の枠線を消す
の二段構えなら可能
描きたい枠線が上記だけじゃ無いだろうしL字だけとも限らないだろうけど創意工夫で
352:338
24/01/10 18:49:21.47 sAzyr022.net
>>349さん
ありがとうございます。
L字だけだったらこれもありですね。
今回は範囲が動的なので愚直にやろうと思います…
353:デフォルトの名無しさん
24/01/10 21:34:25.26 54SkLlBn.net
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 するだけの、都合五つのマクロで自由自在
罫線の色とか種類を変えたいなら、それぞれに加工加えて
354:338
24/01/11 10:04:37.01 q0ONoHEN.net
>>351さん
ありがとうございます。
参考にします。
355:デフォルトの名無しさん
24/01/11 21:32:22.23 jLVdVVn1.net
>>351
そんなことするなら素直に
>セルごとに隣接判定をして罫線を描く/描かないの処理
を実装すればいいんじゃねえかと
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 は推奨しないぞ
356:デフォルトの名無しさん
24/01/11 21:35:04.35 jLVdVVn1.net
ああ
Dim r2 As Range
Set r2 = Selection
の2行はいらん
357:デフォルトの名無しさん
24/01/12 11:23:51.46 Dgb3NVJl.net
>>353
さすがです
358:デフォルトの名無しさん
24/01/12 16:52:25.20 LICC/lNk.net
さすがだ。良い書き方してる
359:デフォルトの名無しさん
24/01/12 18:08:01.72 m3q3lwQ5.net
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してるものがないので‥
360:デフォルトの名無しさん
24/01/12 20:43:53.34 LR75xgwt.net
>>357
試してないけどPDFを作成するたびにビューアが起動するから?
OpenAfterPublish:=False 'ビューアー起動の有無設定
を追加してみたらどうかね
361:デフォルトの名無しさん
24/01/12 21:09:33.72 m3q3lwQ5.net
>>358
レスありがとうございます
すみません、記載省略してしまったのですが、ビューワーの起動はしないようにしています
362:デフォルトの名無しさん
24/01/13 01:36:13.45 PnyKt9oE.net
チャットgptに聞いたところ、ActiveSheet.ExportAsFixedFormatはメモリを使用するので、複数回やればエラーになる可能性があるとのことでした。しかし新しいブックを作成し、そこに貼り付けてpdf化、新しいブックを閉じることによって、メモリの使用を抑えることができるとことでした
それで試してみたのですが、結果は変わらず‥
新しいブックを開いてそこで作業して閉じたとしてもメモリの使用量は変わらないのでしょうかね?
363:デフォルトの名無しさん
24/01/13 08:06:25.09 ublfaSAv.net
>>357
Win10,Excel365,64ビット版でそのサンプルコードを動かしたけどエラーが出なかった。
64ビット版にすれば?
あとは実際のワークシートの内容、コードの内容にもよると思うけど、
・シートA~Eは毎回選択する必要はないかと。Forの前に持っていったらどうなる?
・PDFを出力するコードの下に「DoEvents」を追加してみる
364:デフォルトの名無しさん
24/01/13 10:46:37.60 14sT36Xv.net
どなたかコードを作成いただけませんでしょうか。マクロ初心者で恐縮です。
やりたい作業としては
・範囲指定してある部分の印刷
・.pdfで印刷→デスクトップに保存
・保存ファイル名がセル(I8)の値を入れたい
よろしくお願いします。
365:デフォルトの名無しさん
24/01/13 10:50:05.61 PnyKt9oE.net
>>361
職場のパソコンなので環境を変更するのは難しいです
doeventsを入れたところ、エラーは出ないのですが、やはり150回ほどループしたタイミングで強制再起動となってしまいました
タスクマネージャーで見ていたところ、メモリがどんどん増えていきます
色々調べたのですが環境によるものみたいです
素直に、100回ループさせたら一度EXCELを終了させ、メモリを解放してから再度EXCEL起動して続きからマクロを回すことにします
ありがとうございました
366:デフォルトの名無しさん
24/01/13 14:05:15.65 veMnryOA.net
32bit→64
367:bitでどのくらい支障がでるんだろうか 顧客とのやり取りとかで支障がでるのが嫌で移行できないでいる 逆に64bitで32bitでの作成物を扱うのには特に支障はないのかな?
368:デフォルトの名無しさん
24/01/13 14:05:21.54 v88G6T5y.net
Sheet対象を辞めてRange対象にしてみたらどうか
いきなりout.pdfに出力するのを辞めて新規ブックに追加していって、最後にそのブックをpdfでは
メモリ不足から逃げる手立てを一考
369:デフォルトの名無しさん
24/01/13 16:41:42.38 PnyKt9oE.net
>>365
なるほど‥
新規ブックを開いて、pdf化したいシートを順々にコピーしていき、最後に一回だけpdf化するということですね
デメリットとしてはpdfが一つにまとまってしまいますが、運用に支障はないのかもしれません
ありがとうございます
関係者に聞いてみて、それでも問題ないならその方向で行こうと思います
370:デフォルトの名無しさん
24/01/13 19:24:41.20 veMnryOA.net
出来上がったpdfを分割までやればいいだけでは?
コマンドラインで動く外部ツール使えばできるような
371:デフォルトの名無しさん
24/01/13 20:34:27.31 PnyKt9oE.net
>>367
後出しで申し訳ないのですが、実は出来上がったpdfをメールで送って、相手方で印刷するのが今回の運用だったのです
なので「pdfを全て開いて印刷するのは結構面倒だよなぁ」とは思っていました
しかし一つのpdfにできるのであれば、その問題も解決できるので、一つの方が今回は都合が良かったりします
pdfを分割して置かなければならない別の機会があれば、そのようなことも検討したいと思います
ありがとうございました
372:デフォルトの名無しさん
24/01/13 21:55:24.12 2NbpGDvt.net
頭の悪い人は解決方法自体を間違えている
いつもの
373:デフォルトの名無しさん
24/01/13 22:36:38.78 v88G6T5y.net
そういうことを平気で衆人環視の環境で書き込める人は 間違い無く病んでる
適しているかどうかは実際にやってみないといけないでしょ?
最後の大きく成ったブックをPDF化するときにエラー吐いて完走しなかったら
元も子も無いんだし 単なる思い付きで書いただけなので検証を
相手が居るならすり合わせも大事だし ダメ出しされたら再検討だし
ところで、初手のout.pdf(このネーミングも如何なものか、とちょっと思った
Outputの意味なのか、Out of Orderとかの意味なのか、いずれにしろ経営陣から
したら眉を顰めてしまう単語 ま、それは置いといて)には、どう蓄積されるのか
興味があった これ走らせたらC:\out.pdfにページが追加されてく?
C:\out.pdfが(2)(3)(4)・・とか増えてく? 誰か教えて
374:デフォルトの名無しさん
24/01/14 01:10:58.98 oEubWJyC.net
>>370
すみません、out.pdfというのはネットから適当に拾ったコードなので、自分のコードではチキンとした名前をつけています
これを走らせるとout.pdfが上書きされ、一番最後のpdfしか残りません
また、さっそく一番最後だけpdf化を試してみたのですが、ダメでした
50個回分をシートに蓄積してpdf化を繰り返したところ3回目まではうまく行ったのですが、4回目(160ループ目)くらいからpdfが文字化けしてしまいました
どうもpdf化の回数は関係なく、どれくらいのデータ量をpdf化したかによって上限が来て、それ以降は文字化けするような仕組みみたいです
.ExportAsFixedFormatを使用せずにworksheet.printoutメゾットでpdfに印刷するようにしたら、画質は劣るものの、全てpdf化できました
長々とありがとうございました
375:デフォルトの名無しさん
24/01/14 07:32:56.45 TX+95vKD.net
次は添付ファイルのサイズ制限に引っかかって、結局分割することになると見た
そしてVBAからメールを連続送信する方法を聞きに来て、最後にPDFがいくつあっても簡単に一括印刷できることを知るまでがセット
376:デフォルトの名無しさん
24/01/14 08:46:41.57 kWzMOUYI.net
>>370はコマンドラインツール使ったことなさそう
377:デフォルトの名無しさん
24/01/14 11:11:31.44 Oiv3IqyF.net
>>362
それくらいならChatGptが良いコードを書いてくれるはずだよ
378:デフォルトの名無しさん
24/01/16 19:30:09.09 1/22QV7P.net
それならそのコードを貼ってあげなよ
379:ぐううさ
24/01/16 21:08:30.59 r9xAueHW.net
業務でvba上手くいかないので質問させてもらってもよろしいでしょうか?
380:ぐううさ
24/01/16 21:08:36.00 r9xAueHW.net
業務でvba上手くいかないので質問させてもらってもよろしいでしょうか?
381:デフォルトの名無しさん
24/01/16 21:09:02.93 wgtY3Vx1.net
先輩に聞け
382:ぐううさ
24/01/16 21:17:31.47 r9xAueHW.net
エクセルシートで他システムから吐き出したデータの列の位置や内容がバラバラのため、整理してからまた、他のシステムにデータを取り込むため、列の削除や移動をマクロと変数を使って、ユーザにパラメータを入れてもらって実行することをしたい。
変数にパラメータの値を入れられるが、その後のデータセットからデータの型がとエラーに、なりうまくいかない。
変数はstringsです。
383:デフォルトの名無しさん
24/01/16 21:59:35.09 6je2UWdW.net
致命的に説明が下手くそなやついるじゃん
376みたいなやつねw
384:デフォルトの名無しさん
24/01/16 23:15:06.93 Lr6G4gzP.net
>>379
なにしようとしてるかよくわからないけど、列番号とか指定したいならInteger型にしないといけないんじゃない?
385:デフォルトの名無しさん
24/01/16 23:21:40.56 Lr6G4gzP.net
これに下記コードを〇〇できるように書き換えてくださいってソースコード貼付ければいい感じに直してくれるよ
URLリンク(www.perplexity.ai)
386:デフォルトの名無しさん
24/01/16 23:33:44.09 r9xAueHW.net
>>382
ありがとうございます。
会社でやっているのですぐにはわかりかねますが、再度説明し直して書き込ませていただきます。
387:デフォルトの名無しさん
24/01/17 02:48:46.43 tk11Vx7i.net
馬鹿な会社の馬鹿社員
早く潰れろや
388:デフォルトの名無しさん
24/01/17 07:28:15.10 dIg9jZv4.net
自分の能力以上のことを要求されたら
断るのも仕事ですよ
389:デフォルトの名無しさん
24/01/17 08:40:16.63 VIMKRH3+.net
断る勇気も必要ですよ と書きたかったんだろうけど、断ってばかりじゃ評価下がるしな
どんどん周りの人間の評価が上がり続けちゃったら、遠く無い将来に窓際に追いやられるし
おちんぎんもらってチャレンジできるなら、やらないよりはやった方が自分のためにも成る
もらったデータがどういうファイル形式なのかに依りけり
csv(Comma Separated Valuesの略で、各項目がカンマ(,)で区切られたテキストデータ)なのか
txt(中身が文字だけのデータ)なのか、それ以外の形式なのか
より実務に即した回答が欲しければ、じぶんの環境を提示するのもだいじ 取り敢えず叩き台で
URLリンク(www.crie.co.jp) こんな作業をしていてどこで躓いてる、とかを
390:デフォルトの名無しさん
24/01/17 09:18:18.18 bryPjBMS.net
そんなあなたにPower Query
391:デフォルトの名無しさん
24/01/17 10:15:06.17 4yidygkf.net
できないものはできない
請け負った仕事には責任があるんだから最後までやりとげる
能力がないなら評価も低いのは当たり前
392:デフォルトの名無しさん
24/01/17 11:50:01.48 KP/5Q6je.net
今日から始めた初心者ですが
予測変換の決定でエンター押すと改行されてしまうのですが、
それをさせない方法ありますか?
スペースで決定なのは�
393:墲ゥるのですが、慣れません。
394:デフォルトの名無しさん
24/01/17 12:03:19.97 W/DshM4G.net
>>389
それVBAの話?
395:デフォルトの名無しさん
24/01/17 14:40:54.05 KP/5Q6je.net
>>390
VBAのVBEの話ですね
一般的なエディタと挙動が違うので混乱してますが
慣れれば問題ないですかね
396:ぐううさ
24/01/17 18:16:44.75 ldP/vXQ/.net
376ですが自力で本日できました。
回答頂いた方ありがとうございました🙇
397:デフォルトの名無しさん
24/01/17 19:12:31.19 HRooiYus.net
質問の意味も分からなければ、
回答も役立たず
ただのスレ汚し
398:デフォルトの名無しさん
24/01/18 00:33:52.88 j51Gu5qi.net
VBAの質問なのですが
運送系事務でコース表の各店舗に数量を記入する作業があるのですが
この数量記入を例えば入力用というシートを作り一元管理したいのですが
配送を4社に振り分けている関係で月曜日でも月曜①、月曜➁、月曜➂、月曜④、と
シートが4つに分かれておりシステム上これは変えられないと言われました
店舗も例えばセブン、ローソン、ファミマ、サンクス、ミニストップ、と色々あり
100店舗ほどあるのを該当店舗があるシートへ移動し数量を入力するという…
現状でやり始めた事はデータベースを作りキーワードで検索できるようにし
ドロップダウンリストでセブンを選んだらセブン全店が表示されるようにしました
これを利用してオプションボタン等で月曜を指定し店舗名の右セルに数量を入力すると
月曜日シートにある同名店舗の右セルに入力した数量が反映されるという形にしたいのです
ここまで書いて思ったけどこれってVBAで解決させる物でしょうか?
vlookupとかの関数の領域? すいません素人に毛が生えた程度の知識しか無いもので
ご教授いただけると幸いです
399:デフォルトの名無しさん
24/01/18 01:53:45.90 jpryHAaY.net
>>394
ある程度複雑になるとVBAを使わないと何処に何があるかわからなくなって積む
特に他人からするとブラックボックス化する
ドキュメントを残すことができるなら良いけど
400:デフォルトの名無しさん
24/01/18 04:26:25.22 O3FeaIOP.net
ワークシートの内容が固まりきってもう変更は無い、新しいものの追加はない、ならVBAでもいいけど自分なら関数で作る。
VBAで作った方が後々のメンテナンスが大変になる。
401:デフォルトの名無しさん
24/01/18 10:41:22.24 i5FxeiUS.net
>>394
現状を正しく理解できないからなんとも言えないけど、関数かvbaかって質問なら、関数でできるなら関数、できないならvbaってしか答えられないと思う
関数って言っても組み合わせ次第では色々出来るから、vbaでしかできないと思っていても、工夫したら関数でできましたって事なんか腐る程あるし
402:デフォルトの名無しさん
24/01/18 11:06:18.05 DZf6Ha1U.net
現行のシステムの改良/改善なのか? それをベースによりよいシステム化をしてもいいのか?
月曜だけで4シートとあるが一週間分で28シートが現状で存在するのか?
100店舗ほどもあるシートに移動して入力した数量はどこの何に反映されるのか?
入力元のデータは指示書のようなカタチでまとまったものがあるのか?
或いは各店舗からの要請があって、それを元に質問者側が曜日で振り分けているのか?
4社に振り分けているとは?下請けの意味?配送コースの4車輛の意味?
コンビニを例えに出しているが、例示が悪いのかどうか、コンテナ(カゴ)に種々雑多な商品が詰め込まれた
イメージが付きまとってしまい、面倒臭いのはもっと他にあるだろうにと思ってしまうが、
あくまでも4社への振り分けが面倒なだけで、積み荷はもっと単純なものなのか(一店舗に一品とか)
全体のボリュームも知りたいところ
物流の観点から言うと、ピッキングなのか仕分けなのか 似たようなものだろと言われるかも知れないが
そのどっち側なのかでも設計も変わるし成果物も変わる ↓参考までに
URLリンク(www.keyence.co.jp)
403:デフォルトの名無しさん
24/01/18 12:03:28.39 J8Jk6UJ9.net
なげーよ
404:391
24/01/18 12:31:08.59 KlrhRgnN.net
曖昧な情報で皆様を混乱させてしまい申し訳ありません
現状でやっている作業の前提条件としては
曜日毎のコース表シートが4つあり
1シート内に曜日毎に決められた店舗の組み合わせで4~5コース存在している
店舗に出荷される数量が前日に確定し全店舗数量一覧が"紙ベース"で来る
数量一覧を元に該当店舗に出荷数を順次入力していく
月曜①~月曜④と分かれているのは下請け配送会社4社に振り分けた形で
月曜①にはA社担当コース、月曜➁にはB社担当コースという形になっています
各曜日シートに数量を記入したらその4つのシートが完成版で共有されます
完成版シートの仕様は変えられないと言われてしまったので
せめて数量入力を一元管理して効率化したいと思っていますが
>>394で作った入力用シートの入力情報を各曜日に転記さたいと思い
ChatGPTを使ってみましたがどうしても上手く行きませんでした
上記作業を持ち回りでやっている人間が3人いて入力作業効率化の提案をしても
「良く分からないからいい」「新しい作業を覚えたくない」「そうやって楽する事ばかり考えるな」
作ったという意見を頂いているのでシステムがブラックボックス化しても問題ありません
他作業と並行しながら2~3時間かかる入力作業を続けたいそうです
405:デフォルトの名無しさん
24/01/18 12:51:09.85 i5FxeiUS.net
>>400
ごめん、結局最終的に何がやりたいのか全然分からないからアドバイスができない
「他作業と並行しながら2~3時間かかる入力作業を続けたいそうです」って言うならそれでいいんじゃない?
と思うけど、聞きたいのは多分そういうことじゃないよね?
言葉で説明されてもこっちはシートがどうなってるのか分からないからなんとも言えない
「東京から大阪まで行きたいけどどう行けばいいですか?」って聞かれても新幹線もあるしバスもあるし飛行機もあるから、なんとも答えられないよね?
それが「東京から大阪まで◯日◯時までにつくように新幹線で行きたいんですけど、どの新幹線に乗ればいいですか?」って聞かれたら答えられる
まずは関数なりvbaなりで自分でやってみて、分からないところのみを聞かないと誰も答えられないと思うよ
406:デフォルトの名無しさん
24/01/18 12:59:01.97 i5FxeiUS.net
あと、無駄な情報が多すぎ
ここは質問をして答えるスレなんだから運用までは面倒見きれない
完成版を変えちゃだめとかブラックボックスが~とかは運用の話であって、その話をされても「はぁ」って感想しかでない
407:デフォルトの名無しさん
24/01/18 13:04:56.76 J5B7weBB.net
【VBA作成 依頼】
5ちゃんねるHTMLを WEBクエリしたんだが、見づらい。
タグ『< >』で改行させるVBAコードを 誰か作ってください。 無料で。
URLリンク(i.imgur.com)
408:デフォルトの名無しさん
24/01/18 14:58:45.62 DZf6Ha1U.net
曜日毎のコース表シートが4つあり : それ、火曜日水曜日って続かないってことだよね?
28シートあるのか?の問いに応じずに同じことを繰り返すってことは、そういうことだろ?
つまり、曜日毎は関係無くて、4コース用に4シートがあるだけ
面倒だけどそれぞれの店舗シートに入力したら、その4シートに反映される ということだろ?
その100店舗前後のシートを探すのが面倒だから入力用に新たに1シート設けて、そこに入力したら
店舗のシートに反映されて、尚且つコース用シートにもまとめられる と? そおゆうのが欲しいと?
409:デフォルトの名無しさん
24/01/20 11:31:50.99 vOFZkfTX.net
>>400
結論から言うとそんなの余裕でできる
その前に、あのさ、君結構アタマいい人でしょ?
話を聞く人の労力もうちょっと考えてわかりやすい説明しようよ
・曜日7日
・コース4~5
・下請け4社
・コンビニ5社(セブン・ローソン・ファミマ・サンクス・ミニストップ)
この4次元マトリックスがどういう風に表になってるのか
口だけで上手に説明するのって難しいし、読む側の読解力にも依存する
ひな形でもいいから自分で簡単なの作ってスクリーンショットとってあげるぐらいしなって
読んでる方はいろんな形式の表が頭に浮かぶんだけど、一体どれなのか特定できないもんだからまともなアドバイスできないわけよ
いろんな人からいろんなアドバイス聞きたいなら、まずどうやればできるだけ多くの人に正しい情報を伝えられるのか工夫しな
URLリンク(i.imgur.com)
410:デフォルトの名無しさん
24/01/20 12:01:23.58 vOFZkfTX.net
>>403
タグをvbNewLineに置換するだけ
自 分 で や れ
.
411:デフォルトの名無しさん
24/01/20 12:04:37.73 FNhUV8xD.net
Excel VBAでAIは作れますか?
412:デフォルトの名無しさん
24/01/20 19:05:48.23 6lky6R4+.net
>>407
はい
チューリング完全なので
413:デフォルトの名無しさん
24/01/21 03:02:30.89 cfaA1lc6.net
みんなの環境は32bit? 64bit?
世間はどっちが多いんだろう
最近は64bitにしても影響少なくなったと聞くけどどうなんだろう?
414:デフォルトの名無しさん
24/01/21 03:14:48.63 t3S6ML7u.net
MacのVBEの中だけ、
controlキーを使ったショートカットが無効になってるんですが
仕様ですか?
カーソル移動のショートカットが使えないので困ってるのですが
Macの方はどう対応されてますか?
415:デフォルトの名無しさん
24/01/21 08:52:16.21 M95x8PfE.net
>>409
逆に今32bit選ぶ理由って何?
416:デフォルトの名無しさん
24/01/21 11:25:30.02 6T/txFD4.net
2021年以降は32bit版のWindowsが原則販売されなくなったんで、Officeも64bit化が急速に進んでると思われる
417:400
24/01/21 12:07:31.28 FTr5VFHF.net
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
ここまで作った。 ほめて~
418:デフォルトの名無しさん
24/01/21 13:35:45.91 HjVkmv/J.net
>>413
あんたすげえなマジで。
419:デフォルトの名無しさん
24/01/21 21:54:39.11 cfaA1lc6.net
>>411
まだまだ32bit使って所が多いから
以前64bitにしたら客先で原因不明のエラーでまくったことがあってトラウマに
そのころはMSも32bitを推奨してた
ただ自分の周りくらいしかしらないから世間一般ではどんな感じなのかなと思って
ちなみに取引のある某測定器メーカは外に出すファイルは未だに「xls」に変換するなんてルールが残ってる
420:デフォルトの名無しさん
24/01/21 21:55:41.57 cfaA1lc6.net
>>412
そうなんだ、混在によるトラブルが少なくなってきてるなら自分も64bitに変えたいな
421:デフォルトの名無しさん
24/01/21 22:45:54.49 FYICgzZP.net
取引先が無数にあると、とんでもない環境が残ってるところがあるもんなあ
うちの下請けにもWinXPのとこがあるし
業務用アプリと機器がVista以降サポート外で、それを作ってた会社もなくなってリプレースできないそうだ
422:デフォルトの名無しさん
24/01/21 23:16:41.24 HjVkmv/J.net
64bitの方が高速なんでしょ。わ
423:デフォルトの名無しさん
24/01/22 13:22:08.13 A+cdLUDz.net
32bitのほうが省メモリなので場合によっては32の方が速い
424:デフォルトの名無しさん
24/01/23 13:00:26.55 TWMJRKR5.net
>>419
もしかして、まだWindows95使ってる?
それならその意見も一理あるね
425:デフォルトの名無しさん
24/01/23 23:11:52.95 p5vRgsqV.net
64はパターセーフしろって言われるんだけど、そのくらいエクセルのほうで面倒見てくれんものか
スタート直後に羽根を外そうとしても警告してくれないBウイング並みに気がきかん
426:デフォルトの名無しさん
24/01/24 00:26:00.94 SDekNUM/.net
PtrはPointerの略
PtrSafeはポインタセーフ
427:デフォルトの名無しさん
24/01/24 07:28:58.42 jPeFRyU8.net
パターセーフからそれ読み取れるのすごいわ
脳が勝手にptrをポインタと変換してしまうから、
何言ってんだコイツとしか思えなかった
428:デフォルトの名無しさん
24/01/24 09:04:52.24 aGyCqA0L.net
>>421
データイーストw
429:デフォルトの名無しさん
24/01/24 09:35:36.07 kKiVyROU.net
酔って書き込んでそう
430:デフォルトの名無しさん
24/01/24 13:07:54.28 4H3THdR1.net
>>420
意味不明だな
Win95はメモリ8MBでも動作するように設計されたOSだが64bitアプリはサポートしていないぞ
431:デフォルトの名無しさん
24/01/26 10:50:59.48 HmDFTXOY.net
時代は64bit
432:デフォルトの名無しさん
24/01/27 00:55:42.82 t7pPpNfJ.net
32ビット版のExcelをやめられるところはまだ少ない。
ようやく64ビット版に置き換えられる大企業が出てきた程度。
433:デフォルトの名無しさん
24/01/27 06:28:48.80 0SBBADg4.net
Dim i as long と宣言してたのに
i = なんちゃらかんちやら とかいうコードで
iの価が32000程度を、超えるようなとき、over flowという
エラーになることがあります。
Dim i as long なら、32000を少し超えてもover flow
しないのに不思議です。
なんちゃらのとこには定数3とかの数式なのですが
ヤケクソで定数3を、 3# にしたらoverflowせず正常に動作しました。
なんでoverflowしたのか、憶測でも構わないので
誰か教えて下さい
ま、おそらくintegerと見做されたのでしょうが
どうして、Dim i as long 宣言したのに、なんか腑に落ちません
434:デフォルトの名無しさん
24/01/27 07:28:24.81 TVHASdZo.net
なんちゃらかんちやら を正確にここに書いて
435:デフォルトの名無しさん
24/01/27 07:38:44.57 5pa6Aq5E.net
>>429
数式中に使っているそれぞれの定数がIntegerの範囲内で、その合計がIntegerの範囲を超えるとオーバーフローするらしい。
定数もあらかじめ変数に入れたりして対策するみたい。
URLリンク(www.bold.ne.jp)
436:デフォルトの名無しさん
24/01/27 11:56:53.89 bKl8GlI9.net
そういや32bitから64bitにしたら、
Adoで取得したレコード数をlong型の変数に入れる時に型がおかしいとかいうエラーが出たことあるな。
longlongにしても駄目で、clng()したら動いた。
ワケわからん。
437:デフォルトの名無しさん
24/01/27 12:15:04.39 ltTMqvHO.net
>>432
型ぐらいマニュアルに書いてなかったか?
438:デフォルトの名無しさん
24/01/27 16:54:02.91 bKl8GlI9.net
>>433
マニュアルなんてあるの?
VBなら電話帳より分厚いのがあったけど。
439:デフォルトの名無しさん
24/01/27 16:59:10.82 vdIbcaGJ.net
ADOを使うにあたって適切な参照設定が選択されているか
440:デフォルトの名無しさん
24/01/27 17:06:20.98 CH7ruCqI.net
>>434
今どき紙とか光学メディアなんか使うわけないだろ
マニュアルと言ったらWEB上のオンラインマニュアルのことだよ
441:デフォルトの名無しさん
24/01/27 18:28:22.44 qMJDUKYO.net
リファレンスとマニュアルは別だぞ
442:デフォルトの名無しさん
24/01/27 19:18:08.00 KybuIZx4.net
同じ意味合いで使うこともあるよ
443:デフォルトの名無しさん
24/01/27 21:10:11.38 tuLNWDY3.net
バカが混同してるだけ
444:デフォルトの名無しさん
24/01/27 21:49:32.99 kM+lvGOz.net
いやハゲが光ってるだけだろ
445:デフォルトの名無しさん
24/01/27 22:06:36.73 t7pPpNfJ.net
>>437
そんなの文脈次第だろw
446:デフォルトの名無しさん
24/01/28 09:17:03.35 0xzGzgK7.net
AutoFilterもしくはAdvancedFilterで行を抽出する
条件が2つまでしか指定できないので、3つ以上のときは条件を配列変数へ代入するというのがまずよく分からんが
条件にワイルドカードを指定するときは配列要素の3つ目以降は無視されるという制限を知らずに、1日ハマった
447:デフォルトの名無しさん
24/01/28 09:25:58.21 P/o+j6FX.net
Excel VBAの嫌なところはUTF-8のテキストファイルを扱うときだな
UTF-8とは相性が最悪で入力して出力するときになぜか一部がどこかに消える
448:デフォルトの名無しさん
24/01/28 14:12:49.59 GlU8zkf4.net
>>429
iがintegerだとされたんじゃなくて、右辺がintegerだと判定されて、右辺の計算でオーバーフローしてる
>>431
定数の値じゃなくて、定数の型できまるはず
結論はConstにもちゃんと型指定しろ、ってことだ
ちなみに#は倍精度浮動小数点数らしいぞ
>>432
ADOのバージョンは?
一部バージョンでライブラリがばぐってたはず
449:デフォルトの名無しさん
24/01/28 15:58:37.92 FpdhcBpS.net
>>428
やっぱりそうだよね?自分の周りでも64bitに置き換えてる企業ってほぼないので
しかしここでは64bitが当たり前みたいだし、この手の質問を過去にもしたけどまともな回答得られたことないしで、自分の知らないところでは64bitが当たり前な業界もそれなりにあるのかな?と思ってしまった
64bit移行は取引先が多ければ多いほどハードルが高そう
世間一般的に32bitを切り捨てられるタイミングはいつ頃になるのかな
「xls」ですら切り捨てられない企業を見てると、そんなのは当分先になりそうなイメージ
もしくはMSが完全互換を達成してくれるか
450:426
24/01/28 16:52:07.92 v9jfp3rb.net
イロイロ、ありがとう
さて、ま、念の為、何というか、
Dim i as long
Dim x as long
Dim y as long
Dim BDATA(約25000000) as BYTE
For x = 0 to 3840 - 1
For y = 0 to 2160 - 1
i = 3840 * 3 * y + 3 * x
BDATA(i) = 255
BDATA(i+1) = 0
BDATA(i+2) = 0
next
next
は、モチロン、駄目なプログラミング
さて、いや。呟きです。
とにかく、ありがとう
451:デフォルトの名無しさん
24/01/28 19:19:46.49 oSgnhTDB.net
Doevents 入れないのか
452:デフォルトの名無しさん
24/01/28 19:53:30.89 PqCzO7aX.net
>>445
いわゆる大手企業だけど64bit導入済みだよ
元々アドイン禁止だから影響もほぼなし
一部VBAを多少手直ししたくらい
453:デフォルトの名無しさん
24/01/28 19:54:43.44 I0zbqNbd.net
Doevents 入れないのだ
これでいいのだ
バカボンのパパなのだ
454:デフォルトの名無しさん
24/01/28 21:08:37.59 v9jfp3rb.net
Do
Dim i as long
Dim x as long
Dim y as long
Dim BDATA(約25000000) as BYTE
For x = 0 to 3840 - 1
cells(1,"A") = x
DoEvents '''✦✦DoEvents 入れてみた \(^o^)/
For y = 0 to 2160 - 1
i = 3840# * 3# * y + 3# * x
BDATA(i) = 255
next
next
って感じでやると A1のセル、すなわちセルA1が
xの値がドンドン更新表示され、面白いです。
面白いから、これで、良いのだぁぁぁぁぁぁ
455:447
24/01/28 21:15:24.83 v9jfp3rb.net
>>450 自己スレ
でも、DoEvents なくても
xの値は表示されるな🤔 なくてもヨイのだ。
少しギコチナイ動きになる気がするが、
気のせいなら、気にしなくてヨイのだ。🥳
456:デフォルトの名無しさん
24/01/28 21:19:00.87 09VyNDQR.net
Excel VBAでDVDドライブをオープンさせることはできますか?
部署内のPC端末のDVDドライブを一斉にオープンさせるドッキリをしたいです
457:デフォルトの名無しさん
24/01/29 05:09:16.17 XzFB+619.net
>>444
型指定しないと、値によって型が決まる
32767以下の整数だと自動的にIntegerになる
458:デフォルトの名無しさん
24/01/29 05:16:06.75 XzFB+619.net
業務アプリをVBAで書いてるとこがあってな
明治時代に創業してみんなも知ってる一部上場企業だよ
膨大な古いアプリを今さら改修とかできないから、なかなか64bitに移行できないんだよ
459:デフォルトの名無しさん
24/01/29 05:53:44.09 evC8W0zb.net
んー、?
Dim b(40000) as byte
Dim i as long
─途中 省略─
for i=0 to 40000
b(i) = 128
b(i+1) = 128
b(i+2) = 128
next
は、上手くいく予感を感じます。
もしかして、b(i+1) = 128で
iが32000一寸超えたあたりで
なんかある気もしますが、杞憂のような気もするし
実験するのも面倒だな
だってOSや実行環境やバージョンで、
実験結果に再現性がない気もするし
てか、64bitのEXCELにすれば、
配列の要素数的に動画も丸ごとメモリに読み込ませられる
ぢゃーーーん。メモリが、なくなって
障害が、発生が、するなんてことは、アリエナイ❓
b(i+clng(1)) = 128 にしなくてもOkかな
b(i+1#) = 128 にしようかな それとも
b(i+1&) = 128 にしようかな
&は文字連結だけどこの場合は
ま、1をlongで解釈というか
んー、まぁいいや。
460:デフォルトの名無しさん
24/01/29 06:03:43.33 evC8W0zb.net
東証一部というか東京一部というか
東証プライムというか東京プライムというか
とにかく、変な名前に変更するのは、反対
64bitにするのは、反対の反対の反対の…なのだ
というか、東証一部なら名門だね。
というか、富士通とかNECとか東芝とかパナソニックとか
社内のは、まだ32ビットのエクセルなのかな❓
これらも、一部を除いて東証一部上場だな
461:443
24/01/29 06:14:49.65 AKFLgh7s.net
ん、いろんな人による
いろんなアドバイス、ありがとう
i = 3840 * 3 * y + 3 * x
でオーバーフローエラーになったら
今度は、
i = 3840 * 3 * y + 3 * x + 32768 - 32768
って、修正してみようかな❓
ゼッタイ、上手くいくハズだよね❓
でも、面倒だし、次回も3は3#にしゃおうかな
by 姑息な対応するデバッグプログラマでした
462:454 自作自演ぢゃありません。∵自己レビュー
24/01/29 08:04:04.78 AKFLgh7s.net
>>0454 1h40min前の自分に返信してあげる。
いま、1h40min前の自分の通り実験したけど、
❌ i = 3840 * 3 * y + 3 * x + 32768 - 32768
オバーフローエラーになっちゃたよん。
ちなみに、#とか定数にヤケクソでつけてもいいけどさ
やっぱり、&の方がヨイ
🙆 i = 3840& * 3& * y + 3& * x って感じでバッチリだ
でも、
❌ i = 1& - 1& + 3840 * 3 * y + 3 * x
の様な気もする。∵イロイロやってみた感触
というか、#とか&を定数の後にくっつけるのってヤヴァイ
様な気もするが、とにかく、珍しく、EXCELがバッチリ動いた\(^o^)/
463:455
24/01/29 08:12:40.14 AKFLgh7s.net
>>458 5min前の自分に返信してあげる
その数式ないの定数 3とか3840とかの全て、全て、全部に
Clng(3)とかClng(3840)に置き換えなさい。
神からお告げなのだ。ていうか、今実験してみた結果ぢゃ
でも、&とか#の方が短くて見易い