Excel VBA 質問スレ Part68 at TECH
[2ch|▼Menu]
[前50を表示]
300:デフォルトの名無しさん
20/09/18 01:50:57.23 V3SekzLi0.net
そもそもオブジェクト指定のないCellsがいつでもActiveSheetを参照すると思うなよ
シートモジュールに書いたCellsはそのシートを参照するんだぜ

301:デフォルトの名無しさん
20/09/18 10:32:05.02 68qBgcmgH.net
VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?

302:デフォルトの名無しさん
20/09/18 14:09:52.14 1dkG1MHP0.net
>>301
多くのアプリで、正規表現はWindowsに標準で内蔵されてるDLLを使ってる
独自の仕様やバグがあるのは既知だから、それが気に入らない時は別のライブラリを見つけてくるしかない

303:デフォルトの名無しさん
20/09/18 17:55:04.61 vGT+RG4a0.net
VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー
参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー
まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?

304:デフォルトの名無しさん
20/09/18 20:53:29.32 Ej6zlwK4a.net
見てるだけで殺意はないだろ
自分で分かりやすく直していけばいい

305:デフォルトの名無しさん
20/09/18 20:57:08.45 E6dIN4Hja.net
どんな人が書いたコードでも理解できるのがプロ

306:デフォルトの名無しさん
20/09/18 20:57:17.16 nL5nIenz0.net
C列に"2007/3/26"などのような書式で年月日が入っていますが
それをC=年、D列=月、E列=日にしたいのですが
↓だと年が1905,月が1、日が26日のように変換されてしまいます。
Dim r As Long, dt As date
For r = 2 To 435
dt = CDate(cells(r,3))
Cells(r, 3) = Year(dt)
Cells(r, 4) = Month(dt)
Cells(r, 5) = Day(dt)
Next r

307:デフォルトの名無しさん
20/09/18 21:01:25.47 vGT+RG4a0.net
>>306
最初date型で取ってやれば確か年や月や日を取る関数が有ったと思うよー
じゃあねー

308:デフォルトの名無しさん
20/09/18 21:05:10.29 3fDNLBctH.net
>>302
私が気に入りそうなものはありますか?
肯定先読み肯定後読み以上に高度な機能は求めていないのですが

309:デフォルトの名無しさん
20/09/18 21:10:13.79 vGT+RG4a0.net
ていうかそうしてんじゃん
出力先のセルの書式はどうなってるの?
コードを見た感じじゃ少なくとも3列目は
日付型みたいだけど

310:デフォルトの名無しさん
20/09/18 21:14:07.50 Kp8J/oyZ0.net
>>306
year、month、dayの引数のdtの中身は2007/3/26ではない

311:デフォルトの名無しさん
20/09/18 21:16:37.69 Kp8J/oyZ0.net
または3、4、5列目の表示形式をそれぞれy、m、dにしてる

312:デフォルトの名無しさん
20/09/18 21:29:41.49 LhaPjq300.net
>>306
考えなしに書くからセンス皆無なコードだけど3列目の日付が文字列で入ってるならこんなんどうよ
Dim Ary(2 to 435,1 to 3) As Long,r As Long, a As String
For LBound(Ary,1) to UBound(Ary,1)
a = Sheet1.Cells(r,3).Value
Ary(r,0) = Split(a,“/“)(0)
Ary(r,1) = Split(a,“/“)(1)
Ary(r,2) = Split(a,“/“)(2)
Next
Range(Sheet1.Cells(2,3),Sheet1.Сells(435,5)) = Ary

313:デフォルトの名無しさん
20/09/18 22:40:09.47 1dkG1MHP0.net
>>306
Sub Macro1()
  Range("C2:C435").Copy
  Range("D2:E435").Select
  ActiveSheet.Paste
  Range("C2:C435").NumberFormatLocal = "yyyy"
  Range("D2:D435").NumberFormatLocal = "m"
  Range("E2:E435").NumberFormatLocal = "d"
End Sub

314:デフォルトの名無しさん
20/09/18 22:48:07.19 mNDgEDOXa.net
>>313
くそこーどを貼るのはやめてあげて

315:デフォルトの名無しさん
20/09/18 23:02:36.64 V3SekzLi0.net
>>306
セルに表示されている文字とセルの値は別だって理解が必要
おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26
まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ

316:デフォルトの名無しさん
20/09/18 23:05:29.99 V3SekzLi0.net
つヵ、C列の値でC列に書き換えるとかしないで
元の値を別の列にもっとけば、VBAなしで関数だけで出来るだろうけど

317:デフォルトの名無しさん
20/09/19 04:14:23.53 JSd39pzr0.net
C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる
C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる
でどう?

318:デフォルトの名無しさん
20/09/19 07:38:40.10 kGiNzl5D0.net
>>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ
まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
テストどうしてたんだとか思うよねー
正直こんなのに関わりたくないけど
仕事だからやるって感じだねー

319:デフォルトの名無しさん
20/09/19 07:43:05.72 kGiNzl5D0.net
あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね
まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー

320:デフォルトの名無しさん
20/09/19 07:51:21.74 oBjg4zik0.net
仕事の内容でそのソースを直せってことなら書き直せばいいんじゃねーの
そのまま残すと後任者に同じように思われるんだぜ

321:257
20/09/19 10:25:54.04 fwfEHGdP0.net
>>259
遅くなってしまいましてごめん。自分の欲しかった情報がこれで取れる
事ができました。
ありがと!

322:デフォルトの名無しさん
20/09/19 15:00:02.54 TN+kKyJDd.net
>>320
その判断は結構難しい。
今動いてるものは、そのままにしておくというのが通常だ。
Accessでレコードセットループで回してる最中にその値でもって別のレコードセット開いたりを7、8回やって10分かけてデータ作ってるプログラムが有るんだけど、コレ、クエリ1つで出来るんじゃね?と思って試しに作ったら一瞬で出来る。
それでも、正式に変更することになるかと言えばならない。
こっちだってその辺は分かってる。
何かの時に、きちんと作り直しましょうという話になるまで置いとくもんで、むしろそんな話にならずにずっ―とそのままというのが殆ど。

323:デフォルトの名無しさん
20/09/19 15:56:27.98 nGfYM+wGM.net
>>322
なら
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
とか書くなよ
どうせ盛々で語ってるだけだろw

324:デフォルトの名無しさん
20/09/19 15:59:42.46 TN+kKyJDd.net
>>323
いやいや、俺はその人じゃないから。

325:デフォルトの名無しさん
20/09/19 16:24:18.56 oBjg4zik0.net
>>322
重要な変更とは別で、こまかい高速化や最適化として変更するんだよ
それができないなら他人のコードを悪くいってはいけない

326:デフォルトの名無しさん
20/09/19 18:06:32.97 kGiNzl5D0.net
そうかーみんなそんな具合に考えてるのかー
でも悪いけどその場でチャチャっと直すことはしないよ
もちろん上に話を通すのは当然だけど
こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから直すんなら他への影響調査の時間貰う
まぁ当たり前だよねー

327:デフォルトの名無しさん
20/09/19 18:37:26.04 e5zvgWAXM.net
>>324
本人でもないのに
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
に対して
> 今動いてるものは、そのままにしておくというのが通常だ。
って言うの?
アホの上塗りにしかなってないけど… w

328:デフォルトの名無しさん
20/09/19 18:39:28.33 DdZzGNwy0.net
>>319
実際にそういう動きをする言語もあるからな
>>325
それは開発方法とフェーズによる
いつでも好き勝手コード弄れるような環境ばかりではない
まあ、VBAではあまりないだろうけど

329:デフォルトの名無しさん
20/09/19 18:41:22.13 HTxR1ogMM.net
>>326
お前の会社のレベルが低いだけだろ
まあそんな会社にしかいられない自分を省みたほうがいいなw

330:デフォルトの名無しさん
20/09/19 20:51:03.26 kGiNzl5D0.net
>>329
ふーん
そっちの会社ではそういうの見つけたら
調べないでチャチャっと直しちゃうのかー
よっぽど優秀なんだねー
俺みたいな無能にはとても怖くて出来ないやーw

331:デフォルトの名無しさん
20/09/19 21:40:33.28 b3MmLDI3M.net
>>326
お前以外にチャッチャッと直すなんて言ってる奴いないんだけどw
レベルの話は
> こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから
の部分な

332:デフォルトの名無しさん
20/09/19 22:13:23.39 TN+kKyJDd.net
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。
ウォーターフォールでやってて、プロジェクトの目的が決まってるのに、いくら高速化しても余計なことすれば怒られるのが当然なんだよ。
それが原因で不具合が出てみろ。
大変なことになるんだから。
確かに、思いつきでどんどん改変してく仕事も結構やったことある。

333:デフォルトの名無しさん
20/09/19 22:16:29.20 TN+kKyJDd.net
>>327
開発全般によくある話として言ったまで。
cとかbとかの話に参加したわけじゃない。
動いてるなら、触らないというのはよくあることだ。

334:デフォルトの名無しさん
20/09/19 22:21:26.21 TN+kKyJDd.net
>>328
確かに少ないかもね。
考えてみれば俺も今の職場で初めて。
でも他言語じゃよく聞く話だよな。

335:デフォルトの名無しさん
20/09/19 22:26:15.60 cNAZP0Op0.net
>>333
話の流れが読めないバカということはよくわかった

336:デフォルトの名無しさん
20/09/19 22:48:23.19 RlUx9i/e0.net
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ

337:デフォルトの名無しさん
20/09/19 23:01:33.58 Q45ivJBB0.net
修正するか確認してからじゃないとしないな

338:デフォルトの名無しさん
20/09/20 01:28:31.38 Hljg9CcL0.net
>>332
それは逆だ、今のコードが悪いかのを直したせいで不具合がおきるのは直し方が悪いせい
自分できちんと直す能力もない奴が今のコードが悪いとか語るなよ

339:デフォルトの名無しさん
20/09/20 01:34:05.40 Hljg9CcL0.net
というのは言い過ぎなのかもしれんな、直せる自信がないなら直さないでいいんじゃね

340:デフォルトの名無しさん
20/09/20 01:38:55.36 Hljg9CcL0.net
俺から見れば細かい変更もできない人が重要な処理を変更する方が不具合が起きるだろって思うが

341:デフォルトの名無しさん
20/09/20 03:34:03.51 G6tFT8m8M.net
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど

342:デフォルトの名無しさん
20/09/20 08:02:49.76 MxR9qqIJa.net
ここの会話見てると仕事してる時に戻ったみたいでイヤになる

343:デフォルトの名無しさん
20/09/20 08:29:09.75 lYpGB0SB0.net
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが
VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな

344:デフォルトの名無しさん
20/09/20 09:11:52.63 jB/qzKKfa.net
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない

345:デフォルトの名無しさん
20/09/20 09:13:39.89 WRa/xy2u0.net
だれも技術的に可能かどうかなんて言ってないのに意味不明なことを言い出してて笑う

346:デフォルトの名無しさん
20/09/20 10:58:42.70 uHe9qv/N0.net
企業や仕事がどういうものかを理解していない馬鹿ばっかりで草

347:デフォルトの名無しさん
20/09/20 11:39:55.26 bN/HvUsh0.net
内製でも気軽に弄らないなぁ

348:デフォルトの名無しさん
20/09/20 12:04:24.67 WRa/xy2u0.net
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース

349:デフォルトの名無しさん
20/09/20 16:05:38.71 Q2tD94P+d.net
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。
ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。

350:デフォルトの名無しさん
20/09/20 16:13:52.61 WRa/xy2u0.net
ふと、
日本人のできません
韓国人のできます
中国人のできました
を信用しちゃダメ
って言うのを思い出した… w

351:デフォルトの名無しさん
20/09/20 16:52:11.86 qZo3Wq6A0.net
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな
さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変

352:デフォルトの名無しさん
20/09/20 20:23:41.76 r+WJtgDsM.net
VBAの後継言語がExcelに標準搭載されると知識も勉強時間も無駄になる
と考えてしまいVBAの学習が捗らないのですが、どうしたらよいでしょうか

353:デフォルトの名無しさん
20/09/20 20:29:51.63 w1btmlsr0.net
開発する能力と言語の習熟は別と考えた方がいいと思うよ
弘法筆を選ばずって言うし

354:デフォルトの名無しさん
20/09/20 20:39:12.03 Q2tD94P+d.net
>>352
そんな風に考えたことは無いなあ。
その時に必要だから覚えるんだよ。

355:デフォルトの名無しさん
20/09/20 20:46:14.34 IR23Mwdta.net
VBAなんて勉強するもんじゃなくて使っていくうちにわかるもんだし

356:デフォルトの名無しさん
20/09/20 20:55:59.15 6QmidxOBa.net
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f−bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?

357:デフォルトの名無しさん
20/09/20 21:02:07.06 bN/HvUsh0.net
vblfで分割

358:デフォルトの名無しさん
20/09/20 21:04:12.62 w1btmlsr0.net
セル内の改行コードはCRとLFとCRLFがあるのでどれかに統一して
統一した改行コードでsplitすれば

359:デフォルトの名無しさん
20/09/20 21:09:38.60 ce1O3kmIH.net
VBAやっててもオブジェクト指向が全然身につかないんだけどどうしよう

360:デフォルトの名無しさん
20/09/20 21:30:48.40 Q2tD94P+d.net
>>358
セル内の改行はLFだよ。
キーボード入力ならの話だけど。

361:デフォルトの名無しさん
20/09/20 21:31:49.13 Q2tD94P+d.net
>>359
VBAとは別にオブジェクト志向に親和性のある言語勉強すれば?
それがVBAにも役に立つよ。

362:デフォルトの名無しさん
20/09/20 21:35:54.17 w1btmlsr0.net
>>360
よそからコピペしたりするとLF以外も混じるよ
念のため統一する方が安心

363:デフォルトの名無しさん
20/09/20 22:02:19.77 BARJaSzG0.net
>>359
オブジェクト指向を身につけるためにVBAをやっているのか?

364:デフォルトの名無しさん
20/09/20 22:16:21.98 ce1O3kmIH.net
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん

365:デフォルトの名無しさん
20/09/20 22:48:07.21 lUm0Ft460.net
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。

366:デフォルトの名無しさん
20/09/20 22:53:39.67 Q2tD94P+d.net
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。
それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。
でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。

367:デフォルトの名無しさん
20/09/20 23:22:55.87 szIFBvS40.net
>>365
Excel 4.0 マクロ

368:デフォルトの名無しさん
20/09/20 23:26:29.37 lUm0Ft460.net
>>367
さんきゅー

369:デフォルトの名無しさん
20/09/20 23:28:59.95 bN/HvUsh0.net
>>358
crでセル内改行はしない

370:デフォルトの名無しさん
20/09/20 23:29:16.08 pX+ICxi/0.net
フレームワークどうするよ

371:デフォルトの名無しさん
20/09/20 23:30:38.40 szIFBvS40.net
そもそもVBAが古いMS-BASICの言語仕様をほとんどそのまま踏襲してるもんだからオブジェクト指向との親和性はあんまり高くない
まだVB.netの方が色々やりやすい

372:デフォルトの名無しさん
20/09/20 23:38:32.30 wTyEOUZY0.net
>>369
セルをアクティブにするとCRでも改行するらしいよ
自分はそういうよくわからない挙動に振り回されたく無いから変換するよ

373:デフォルトの名無しさん
20/09/20 23:40:59.31 XhiE7Cxv0.net
>>372
らしいよ

374:デフォルトの名無しさん
20/09/20 23:44:11.30 wTyEOUZY0.net
LFとCRLFが混在するのは確かめたよ
なので片方に寄せてる
CRも混ざる可能性はあるのでついでに処理してるよ

375:デフォルトの名無しさん
20/09/20 23:47:19.77 GTzW+qv5H.net
>>366
なるほどそうなんですね
別言語で勉強してみます

376:デフォルトの名無しさん
20/09/20 23:51:14.87 bN/HvUsh0.net
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される

377:デフォルトの名無しさん
20/09/21 23:04:27.19 lAfdaJg/0.net
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。

378:デフォルトの名無しさん
20/09/22 09:46:47.28 9vuxubOza.net
で、そのままの仕様で残すんだろ

379:デフォルトの名無しさん
20/09/22 09:47:44.43 9vuxubOza.net
変に直すと他で問題が起きるかもしれんし

380:デフォルトの名無しさん
20/09/23 18:03:19.32 a1crOWFAM.net
今開いてるエクセル3つを左右で3分割させるマクロとかありますか?

381:デフォルトの名無しさん
20/09/23 18:23:33.24 18wwGwYm0.net
表示→整列じゃだめなのか?

382:デフォルトの名無しさん
20/09/23 19:23:23.78 nN1KQy3b0.net
あるけど、マクロっていうかWindowsAPIで画面サイズ調整だろうな。
3画面用意する方が楽かも。

383:デフォルトの名無しさん
20/09/23 20:26:43.04 kiC/kEHG0.net
Windows.Arrange ArrangeStyle:=xlVertical

384:デフォルトの名無しさん
20/09/23 20:34:38.55 Dfniq8Ns0.net
>>381
ありがとう
>>383
本当にありがとう
馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました
めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます

385:デフォルトの名無しさん
20/09/23 21:30:49.65 kiC/kEHG0.net
>>384
できる

386:デフォルトの名無しさん
20/09/23 22:06:19.89 gKXTj3UI0.net
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ

387:デフォルトの名無しさん
20/09/23 22:26:51.67 uvIhcfbN0.net
特徴っていうかこれいつもの人

388:デフォルトの名無しさん
20/09/25 20:09:48.08 48EvNsnc0.net
accdb   → 問題なく型指定出来る。
csv    → schema.iniで型指定出来る。
自シート → どうすんの? IMEX=1も利いたり効かなかったりで当てにならん。

389:デフォルトの名無しさん
20/09/25 21:07:06.86 1nrszLVg0.net
そういう報告はいらないです

390:デフォルトの名無しさん
20/09/25 21:36:41.69 WSuN06d1F.net
罫線の所属するセルについて質問です
セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします

391:デフォルトの名無しさん
20/09/25 22:18:01.90 JBJKUwWVM.net
>>390
実験して報告よろしく

392:デフォルトの名無しさん
20/09/25 22:34:46.55 48EvNsnc0.net
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。

393:デフォルトの名無しさん
20/09/25 23:34:29.90 3gugGrYy0.net
>>390
これ、たしか罫線の種類で、基本ごっつい順に優先順位があったはず
ついでに、セルの書式設定で罫線設定すると、隣のセルの罫線設定も消えたり変わったりする

394:デフォルトの名無しさん
20/09/26 11:57:49.22 aYgi9d/P0.net
太いほうだった(Excelばーじょん2016)
URLリンク(i.imgur.com)
印刷境界とかは分けて認識されてるから、なんだかんだ自分のコードを検証したほうがいいな

395:デフォルトの名無しさん
20/09/26 13:23:27.50 aYgi9d/P0.net
あ、宣言とかしときながらシート指定するん忘れてやがる

396:デフォルトの名無しさん
20/09/26 19:01:46.19 J5kcfwi60.net
ワラタ

397:デフォルトの名無しさん
20/09/26 20:07:30.98 wDXyaCpN0.net
getElementBy飽きたんだけど、RPA的制御じゃなくて、htttp通信を駆使してどうにかする、みたいのない?
APIとか使えない古いシステムに対して。

398:デフォルトの名無しさん
20/09/27 07:29:13.82 KJpIeh7z0.net
htttp通信がわからんがセキュリティー的に問題起きるんじゃね

399:デフォルトの名無しさん
20/09/27 15:17:02.78 a7rnW+2W0.net
htttpは、ハイパー・トンマ・トンチンカン・タコ・( ´,_ゝ`)プッの略かな

400:デフォルトの名無しさん
20/09/27 15:27:50.06 o5RjmHqkd.net
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。
こういう便利なものを放棄するならhtmlのソースを自前テキスト処理で頑張るしかないと思うが。
普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。

401:デフォルトの名無しさん
20/09/27 17:34:22.53 V5qiYsAI0.net
>>397
その辺は自作ライブラリでビブラートに包めばOK

402:デフォルトの名無しさん
20/09/27 18:37:04.65 ZqjiPey8M.net
>>401
> >>397
> その辺は自作ライブラリでビブラートに包めばOK
震わせてどうすんのさ。オブラートだろって釣られた

403:デフォルトの名無しさん
20/09/27 18:40:59.82 6iq7bspN0.net
>>400
マジか!
xmlがどうとか、APIがないとダメなんだと思ってたわ。

404:デフォルトの名無しさん
20/09/27 18:44:20.59 6iq7bspN0.net
ん?
それだと、逆に何のためにGUI操作(IE制御)の方法があるの?
初心者用?

405:デフォルトの名無しさん
20/09/28 07:43:08.08 VRZutR0gd.net
>>403
勘違いしてる。
別のAPI使ってるということだ。
で、別のAPIにもgetElemetByが出てくると言ってる。

406:デフォルトの名無しさん
20/09/28 13:09:33.23 LAwWa5+y0.net
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と
取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな

407:デフォルトの名無しさん
20/09/28 15:51:42.57 m7hqrCGdM.net
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・
>>404
どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う
IEクラスはブラウザを操作する為のコンポーネントの一部
mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部
WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部
(コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと)
それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ
どれもVBAの為だけに作ったプログラムではない
ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある

408:デフォルトの名無しさん
20/09/28 16:26:17.24 gMLgNw+wd.net
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?

409:デフォルトの名無しさん
20/09/28 16:37:22.01 oE/worxcM.net
結果をexcelで扱うならVBAが最適では?

410:デフォルトの名無しさん
20/09/28 18:37:13.13 jqaTJ4CpM.net
CSVで吐いてExcelで開くだけだろう

411:デフォルトの名無しさん
20/09/28 19:21:37.82 JyFvX52s0.net
あーい
あーい
ああああーい

412:デフォルトの名無しさん
20/09/28 21:25:16.14 d76PIxro0.net
質問させていただきます
ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…

413:デフォルトの名無しさん
20/09/29 00:06:40.59 bEee4vhd0.net
Windowオブジェクトにどんなプロパティがあるんだっけ

414:デフォルトの名無しさん
20/09/29 00:29:27.68 zU8eGPuC0.net
フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな

415:デフォルトの名無しさん
20/09/29 00:32:40.28 zjqvAHva0.net
deactivateは用途が違う

416:デフォルトの名無しさん
20/09/29 00:49:54.82 Iz7+ZlTk0.net
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単
curl, wget でも、ファイルをダウンロードできるし
Rubyで、nokogiri, curl を使った例
require 'nokogiri'
html = `curl URLリンク(www.example.com)
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

417:デフォルトの名無しさん
20/09/29 06:58:50.11 iE38wEdU0.net
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ

418:デフォルトの名無しさん
20/09/29 09:56:21.75 UZS7qkIf0.net
Rubyの自動運転は使いやすかったけど
早々にサポート切られたから印象悪い

419:デフォルトの名無しさん
20/09/29 11:55:53.23 NIgnBYPca.net
>>413
調べて見ましたがそれっぽいものは発見できませんでした…
>>414
>>415さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。

420:デフォルトの名無しさん
20/09/29 23:34:39.45 Rcn+G4xKd.net
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。
1.Excelを閉じる。
2.他言語で実行。
3.csvをExcelで開く。
全くアホらしい。
運用についての考え方がまるで違う。
他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。

421:デフォルトの名無しさん
20/09/30 00:00:14.29 BPaZHsLq0.net
>>407
jsしたかったらIEするしかないのね。
今時のHPほぼ全滅じゃん。

422:デフォルトの名無しさん
20/09/30 00:36:25.50 5bnpK3a00.net
>>419
WINAPIでポーリング
URLリンク(i.imgur.com)

423:デフォルトの名無しさん
20/09/30 06:50:20.08 RkFeWfqX0.net
イルカのカイル

424:デフォルトの名無しさん
20/09/30 16:18:36.41 7F4wikGt0.net
>>419
そのマルチタスク、マルチウィンドウを否定したい理由は何なの?

425:デフォルトの名無しさん
20/09/30 16:57:41.88 QOxpj5qw0.net
>>424
フォームのテキストボックスに機器の計測値が入るようになっており
テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れないのでおじーちゃんたちにも気づくようにフォーカスが離れた時に警告ユーザーフォームを出したいのです。他アプリケーションなどを立ち上げる事も想定されます。
>>422
情報ありがとうございます
画像の通りやってみましたがイルカさんは働いてくれませんでした…

426:デフォルトの名無しさん
20/09/30 20:43:21.94 2p9V72Q+M.net
>>425
アホとしか言えんわ
そもそも設計が間違えてる

427:デフォルトの名無しさん
20/09/30 21:46:10.98 d9KXZKY60.net
>>425
値を入れる部分を直せよ

428:デフォルトの名無しさん
20/09/30 22:51:09.04 wQcBlxXT0.net
RPAとか使ったらこんなおぞましいものができたりするのかな?
でも普通はExcelぐらいサポートしてるよな。。。

429:デフォルトの名無しさん
20/09/30 23:05:33.83 FnwBo45S0.net
むしろRPA向きの案件だと思う

430:デフォルトの名無しさん
20/10/01 01:07:42.33 lGabW6tFM.net
>>425
> フォームのテキストボックスに機器の計測値が入るようになっており
wの前にデータ取得しとるわなw
>テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れない
wそんな業務データを取りこぼすとか意味不明w
>のでおじーちゃんたちにも気づくように
wなんだ?老害か?w

431:デフォルトの名無しさん
20/10/01 01:18:01.34 eVzeZjSn0.net
意味がわからないなら黙ってればいいじゃない

432:デフォルトの名無しさん
20/10/01 07:38:17.90 v/kjpRq5M.net
業務用ツール作るのってホント大変よな……
使いたい人向けに配信するんじゃなくて、使わされる人に使ってもらうツールだからどんなに優しいUIにしても平気で想像を上回るイレギュラーな操作して動かなくなった!ポンコツめ!みたいなクレーム出してくる人もいるし
単純に新しい物を使いたくないからってワザとメチャクチャな操作したりもしてるんだろうけど
ツールを要求してくる上の人達は現状の環境で対応出来るようにしたいからExcelのマクロでどうにかしてよ!とか言ってくるし、VBAはなんでも出来る魔法のツールだと思ってるし
長々と愚痴ってスマンな
スレチだよな

433:デフォルトの名無しさん
20/10/01 07:49:06.10 H0TKMoBwd.net
Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。
フォーカスがあたってなくても計測値が取れるように作るという発想が無いのが厳しい。
そんなこと出来ないなら根本から違うユーザーインターフェイスを採用すべき。
こういう処理でユーザーに何かさせる必要は無い筈。

434:デフォルトの名無しさん
20/10/01 10:04:49.32 +ML6JMtp0.net
初心者がツール作るように言われたら大変なんだろうな、俺は大変だと思ったことないが

435:デフォルトの名無しさん
20/10/01 10:34:23.83 6DJ6J+GDM.net
タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像
COMで操作できるライブラぐらい付いているだろうからそれ使えば解決

436:デフォルトの名無しさん
20/10/01 16:54:34.45 Ld5Ou2iR0.net
>>435
まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。
次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう
とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…

437:デフォルトの名無しさん
20/10/01 17:12:49.41 W6bAQtLIM.net
>>431
知ってた

438:デフォルトの名無しさん
20/10/01 18:58:16.32 9Yax9dsIa.net
>>434
かっけぇ

439:デフォルトの名無しさん
20/10/01 21:36:53.69 dM4yb7Ap0.net
罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか?
簡単に言うと罫線で作った表の形式を保持したい。

440:デフォルトの名無しさん
20/10/01 21:50:29.37 5ESnmk3DM.net
>>439
テンプレートを隠しシートに保存しておいて、
ボタン押下で書式をコピペしてくるってどう?

441:デフォルトの名無しさん
20/10/01 22:00:05.10 gLHdGUpR0.net
>>439
切り貼りじゃなくてコピーアンドペーストした後に元のところの数式と値をクリア(右クリック+N)すればよいのでは

442:デフォルトの名無しさん
20/10/01 23:26:28.37 ywfP0KwV0.net
changeイベントで常に罫線引くことしか思いつかん

443:デフォルトの名無しさん
20/10/01 23:48:07.63 2OGRwJxy0.net
移動できないようにする

444:デフォルトの名無しさん
20/10/02 01:42:30.77 MWdBgx4Q0.net
セルをマウスでドラッグって何だよ?
エクセルで将棋でもやるの?

445:デフォルトの名無しさん
20/10/02 01:43:49.39 ChxT/cO/0.net
>>425
それExcel VBAでやるものではない。
自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。

446:デフォルトの名無しさん
20/10/02 01:49:29.59 ChxT/cO/0.net
>>439
そもそも手順というものを考えた方がいい。
移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?

447:デフォルトの名無しさん
20/10/02 10:09:18.16 A7BNHAQE0.net
指定したフォルダ内の全てのCVSファイルを配列に追記していき対のですが、コードを教えてください
配列の0列目(1次元目)にはそれぞれのCSVファイルのファイル名をいれたいです。
Sub Sptyou()
Dim FolderPath As String, buf As String, TargetDate As String
'■フォルダを指定する
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
FolderPath = .SelectedItems(1)
End With
'■指定されたフォルダ内の全てのCSVファイルを開いて、そのファイルA列からGH列を配列に入れていく
ReDim BiforeArraybar(1, 190) As Variant

448:447
20/10/02 10:09:56.74 A7BNHAQE0.net
つづき
buf = Dir(FolderPath & "*.csv")
Do While buf <> ""
Open buf For Input As #1 'インプットモードでファイルを開く
Line Input #1, TargetDate
Do Until EOF(1) 'ファイルの終点まで
Line Input #1, Tardt '開いたファイルを上から順に読み込んでいき、変数TargetDateに代入していく
If Split(TargetDate, ",")(1) = "" Then Exit Do
'配列に追記する
ReDim Preserve BiforeArray(Ubound(BiforeArray) + 1 To ??, 1 To 190) = Sprit(TargetDate,",")
Loop
Close #1
buf = Dir()
Loop
End Sub

449:デフォルトの名無しさん
20/10/02 10:42:45.10 cHoSzh9XM.net
ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ
いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ

450:デフォルトの名無しさん
20/10/02 10:56:02.65 ooD45Zz30.net
Linux のcat なら、複数のファイルを連結できるけど

451:デフォルトの名無しさん
20/10/02 12:25:22.61 XdHW2/g2M.net
win dosならcopyで連結できるけど

452:デフォルトの名無しさん
20/10/02 12:29:54.55 a296oIK60.net
>>448
内側のLoop内で Tardt ってのが気になった

453:447
20/10/02 13:32:21.66 A7BNHAQE0.net
>>449
右端にファイル名を入れるにはどうしたらいいですか?
それと、配列のUpperをどう設定したらいいですか?

454:デフォルトの名無しさん
20/10/02 15:56:01.43 7/1+1goB0.net
また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?

455:デフォルトの名無しさん
20/10/02 16:13:26.37 XdHW2/g2M.net
右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー?
excelなんだからとりあえずシートに格納すればいいと思うんだけどなー
配列に1行づつ追加するよりはやいんじゃね?
VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ
行数をキーにしたDictionaryもいいかもね


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1326日前に更新/123 KB
担当:undef