Excel VBA 質問スレ Part61at TECH
Excel VBA 質問スレ Part61 - 暇つぶし2ch321:デフォルトの名無しさん
19/05/23 16:14:38.98 hFcQqqxb0.net
>>317
すまん、リンク先を読む気もしない

322:デフォルトの名無しさん
19/05/23 17:56:30.55 pyUsEGpsM.net
>>317
べき論の先には「VBAを使うのをやめるべき」という結論しかないから不毛よ
俺ならどうするか?下請けに丸投げして終わりだよ

323:
19/05/23 19:35:05.76 QGT5qlDg0.net
>>318
>義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ
脅かすことでプログラミングができるようになるとはおもいませんが…
プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません

324:デフォルトの名無しさん
19/05/23 20:39:50.63 X/3FpVKz0.net
機械学習やweb系ならともかく、
VBAレベルなら極めて事務的な仕事だろう。どこにも創造性なんて無いよ
ルーチンワークを自動化させてるだけ

325:
19/05/23 20:58:31.34 QGT5qlDg0.net
>>324
でもそのルーチンワークを実際に記述するとなると一本道というわけにはいかないでしょう?
論理的な一貫性を維持しながらしたいことを記述するのは、いわれているほどやさしい仕事ではない

326:デフォルトの名無しさん
19/05/23 21:06:10.14 X/3FpVKz0.net
>>325
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度
面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい

327:デフォルトの名無しさん
19/05/23 22:12:48.96 0Fgm70+GM.net
まあ、自己満足で終わるなら簡単だな
おばはんにも満足いくように作るんだよ

328:デフォルトの名無しさん
19/05/23 22:27:50.56 49rcJhkB0.net
>>317
コンスト過ぎてワロタ。

329:デフォルトの名無しさん
19/05/23 22:55:08.55 EGX4zlJj0.net
>>323
それもそうだが、その老害を大人しく
させることができれば上出来と考えた

330:デフォルトの名無しさん
19/05/24 01:42:55.95 9kKOGm+S0.net
Excel2016にてpersonal.xlsbに「保存せず閉じて開き直すマクロ」を作ったところ挙動が変です
Sub ReOpen()
  Dim wb As Workbook
  Dim path As String
  Set wb = ActiveWorkbook
  path = wb.fullName
  '※1
  If MsgBox("本当に変更を取り消しますか?", vbYesNo) <> vbYes
    Exit Sub
  End If
  wb.Close(False)
  Application.Wait([Now() + "00:00:01"])
  '※2
  Workbooks.Open(path)
End Sub
このマクロ自体は動くのですが、※1のIf~EndIfを消すと※2のOpen実行直後にExcelが通知無く落ちます
また、※1※2を両方消してマクロ実行した後、手動でブックを開き直すとやっぱりExcelが落ちます
対象のブックはフォームやマクロを含んだ3MB程度のxlsmファイルです
MsgBox出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです

331:デフォルトの名無しさん
19/05/24 01:44:27.87 9kKOGm+S0.net
あ、Ifの末尾のThen忘れたので脳内で補完してください

332:デフォルトの名無しさん
19/05/24 06:40:29.33 /lvzTPqGM.net
>>331
ハイ イイエ が逆なのも利用者が自動変換するんですね

333:デフォルトの名無しさん
19/05/24 06:54:20.73 /lvzTPqGM.net
>>332
すまん、継続がキャンセルか

334:デフォルトの名無しさん
19/05/24 09:59:52.88 RAYiE+wA0.net
>>330
2019で試したけど落ちなかった
> Application.Wait([Now() + "00:00:01"])
これを抜いても同じ
カンで答えると、再計算が邪魔してるような気がする
・一度再計算や描画、イベントを切ってみてはどうかな
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
・あとはこの部分のウェイトをもう少し長くする
>Application.Wait([Now() + "00:00:01"])
・まっさらなブックで試してみる

335:デフォルトの名無しさん
19/05/25 07:54:51.56 TRopVMeK0.net
アドインって、ファイルを閉じたら、
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。

336:デフォルトの名無しさん
19/05/25 08:55:38.15 nkVbmNSl0.net
vba実行中というかずっと残るっぽい

337:デフォルトの名無しさん
19/05/25 09:55:42.63 wPp02VNQ0.net
エクセルの機能に追加してるからな
アドイン使ったファイルをアドインがないエクセルで編集すると壊れるよね

338:デフォルトの名無しさん
19/05/25 10:07:50.37 wPp02VNQ0.net
>>330
経験上納得できない動作をするときは何か見落としているところがある
step実行で場所特定して、各変数の値が壊れてないか確認
イミディエイト画面で入力してみるなど

339:デフォルトの名無しさん
19/05/25 10:14:01.11 D2XIJyZK0.net
Excelに限って言えば、Excel自体に変な仕様が多い
これが男を惑わせる

340:デフォルトの名無しさん
19/05/26 04:10:46.96 xQGdFtWrM.net
>>334
元に戻さないアホがいると大迷惑になるな
>>335
アドインはExcelに組み込むよね
>>339
配列数式なんか使うとブーイングになるよな

341:デフォルトの名無しさん
19/05/26 15:23:19.13 /taseRUt0.net
以下の状態だとB1~B3は全て1:1048576と表示されてしまいます
Cells.SpecialCellsをRange("A1").SpecialCellsに変更した場合はB1~B3は全てA1と表示されます
Ctrl + Endで選択されるセルの番地を文字列として取得するにはどうすればいいですか?
  A    B
1 Sheet1 =fn(A1)
2 Sheet2 =fn(A2)
3 Sheet3 =fn(A3)
Public Function fn(sSheetName As String) As String
fn = ActiveWorkbook.Worksheets(sSheetName).Cells.SpecialCells(xlCellTypeLastCell).Address(False, False)
End Function

342:デフォルトの名無しさん
19/05/26 15:41:58.63 /taseRUt0.net
関数呼び出しではなくマクロやボタンクリックでなら問題なかったので
そっちの方法に切り替えますすみません

343:デフォルトの名無しさん
19/05/27 06:52:50.90 lha2yOvQp.net
入力項目を複数用意したinputboxって作れますか?

344:デフォルトの名無しさん
19/05/27 07:55:59.33 6csejWaN0.net
>>343
どんなものを考えているんだ

345:デフォルトの名無しさん
19/05/27 08:12:50.88 lha2yOvQp.net
>>343
ごめん入力フォームじゃなくていいかも
最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました)
・AUTO openで開く
・押すと特定セルに文字が入力されるボタンを複数設置する
・カレンダーを設置する
・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する

346:デフォルトの名無しさん
19/05/27 08:30:52.72 jh6nOFVKM.net
>>345
こんな特殊なものAUTO openでやるって非常識だな
シートのマクロで十分だろてかマクロは印刷して保存だけでいいだろ
それも自動記録でも十分

347:デフォルトの名無しさん
19/05/27 08:37:02.21 jh6nOFVKM.net
Excelの勉強不足だろ

348:デフォルトの名無しさん
19/05/27 08:47:00.50 6csejWaN0.net
>>345
それユーザーフォームにする必要がないような
ユーザーフォーム超めんどいから止めたほうがいいよ
あと、カレンダーはデイトピッカーと言う

349:デフォルトの名無しさん
19/05/27 09:45:56.73 W0zr6KdF0.net
この程度の理解力だとカレンダーが必要かもわからない
カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから
最適な解もわからない
入力をシートに反映するなんて普通にセルを参照すればいいだけ
ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき
これでも少しおだててるが

350:デフォルトの名無しさん
19/05/27 10:37:56.08 6csejWaN0.net
おだてるの意味間違えてるよ。

351:デフォルトの名無しさん
19/05/27 10:41:41.92 W0zr6KdF0.net
>>350
いや~そうでもないよ
理解力は両方とも0.1%~0.01%程度と思ってたから

352:デフォルトの名無しさん
19/05/27 11:25:38.71 bVlhmZqp0.net
てか、みんなが
>>345←この説明で全容を理解できてるのがすごいとおもったけど
いろんな意味に解釈できそうで、おれにはそのうちの一つには絞りきれないんだけど

353:デフォルトの名無しさん
19/05/27 11:44:36.09 dknccbkiM.net
>>352
教えたい人種の大半は問題の表層を自分の得意分野に転換して持論を得意気に展開してるだけ。
質問者の問題の背景に寄り添って解決を計ろうとする者は僅か。

354:デフォルトの名無しさん
19/05/27 13:50:33.03 6csejWaN0.net
>>352
どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能

355:デフォルトの名無しさん
19/05/27 14:00:43.29 zUYqf9yC0.net
>>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。
あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。
疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。
技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。

356:デフォルトの名無しさん
19/05/27 14:36:42.16 dknccbkiM.net
>>355
この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。

357:デフォルトの名無しさん
19/05/27 14:38:46.48 YnNlAtYud.net
>>356
そうくると思ったw

358:デフォルトの名無しさん
19/05/27 14:55:28.65 W0zr6KdF0.net
>>355
具体的に簡単にできる方法を説明してやれよ

359:デフォルトの名無しさん
19/05/27 14:59:26.84 6csejWaN0.net
>>358
まだ出せない
要件定義ができていないので、そもそもどういう設計が最適かも分からない
現状のまま作るのはめんどくさすぎる
具体的に言うとデイトピッカー、お前だ

360:デフォルトの名無しさん
19/05/27 15:11:18.55 W0zr6KdF0.net
>>359
要件定義・・?この理解力だと
当然仕事に対する理解力もないってことだよ

361:デフォルトの名無しさん
19/05/27 15:14:09.75 6csejWaN0.net
>>360
そこを何とかするのが面白いんじゃないの
マウント取りたいならハエやカエル相手にしてればいいだけだしね

362:デフォルトの名無しさん
19/05/27 15:29:12.90 W0zr6KdF0.net
>>361
だったら適当にすれば(笑)
出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな

363:デフォルトの名無しさん
19/05/27 15:39:29.96 W0zr6KdF0.net
>>361
きみはハエやカエル相手にして面白がってる
引きこもりさんってことね

364:デフォルトの名無しさん
19/05/27 15:42:22.97 6csejWaN0.net
>>362>>363
韓国人?

365:デフォルトの名無しさん
19/05/27 15:42:59.47 6csejWaN0.net
おだてるの意味もわかってないみたいだし、韓国の方でしたか
そりゃ話も合わないな

366:デフォルトの名無しさん
19/05/27 15:44:13.29 W0zr6KdF0.net
>>364
きみはハエかカエル?

367:デフォルトの名無しさん
19/05/27 15:45:54.11 W0zr6KdF0.net
>>365
ハエかカエル?
しかたないな

368:デフォルトの名無しさん
19/05/27 15:53:54.48 6csejWaN0.net
おだてる・・・w

369:デフォルトの名無しさん
19/05/27 16:04:29.34 6csejWaN0.net
これ以外の高速化ってありますか?
URLリンク(15g.jp)

370:デフォルトの名無しさん
19/05/27 16:27:23.36 aE9KPqY2M.net
>>369
これで問題ある場合はループしてるロジックが悪いか
ネットアクセスではありませんか?

371:デフォルトの名無しさん
19/05/27 16:42:48.59 6csejWaN0.net
>>370
運用方法が急に変わりまして・・
毎日 100ループ→毎時間 20000ループ
他の高速化が無いものかな、と
特になければ諦めてロジック組み直します

372:デフォルトの名無しさん
19/05/27 16:43:14.09 2J++TcAHM.net
再描画を止めるのは好かんな

373:デフォルトの名無しさん
19/05/27 17:19:36.20 aE9KPqY2M.net
>>371
セルへのアクセスを減らし
変数テーブルで処理をするぐらいかな簡単なのは

374:デフォルトの名無しさん
19/05/27 17:53:10.57 aE9KPqY2M.net
変更のないセルはかきかえない
変数の型をこていするかな

375:デフォルトの名無しさん
19/05/27 20:18:12.39 28fQIolrF.net
>>369
完全に嘘。
そもそも、それなりに書ける奴ならこの手法では速くならない。

376:デフォルトの名無しさん
19/05/27 20:19:14.57 28fQIolrF.net
逆に、これで格段に速くなったら恥ずかしいと思うべきだ。

377:デフォルトの名無しさん
19/05/27 20:29:10.36 eWpgS1rnF.net
高速化については下記が参考になる。
URLリンク(excel-ubara.com)

378:デフォルトの名無しさん
19/05/27 21:03:48.67 TIEuQB3m0.net
>>345
できるけど、一番最後の処理が事故を起こしそうだから1クッション置いた方がいいかも

379:デフォルトの名無しさん
19/05/27 21:13:42.01 Soi68xiZ0.net
セルというかシートは使わない
データ保存には外部バイナリファイルを読み書きする

380:デフォルトの名無しさん
19/05/27 21:16:23.22 TIEuQB3m0.net
>>369
これは描画を抑制するからその分の時間がかからなくなるというだけなので、表示に因らない処理の速度アップはまた別だよ

381:デフォルトの名無しさん
19/05/27 22:07:18.66 9GzIJnKt0.net
何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww
いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。

382:デフォルトの名無しさん
19/05/28 01:04:45.98 Rr62XR8Vx.net
ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある

383:デフォルトの名無しさん
19/05/28 08:43:02.61 8P1bQTIM0.net
入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。
Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。

384:デフォルトの名無しさん
19/05/28 09:44:28.89 CE2aKfrCH.net
初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない
どんな時に便利なの?

385:デフォルトの名無しさん
19/05/28 09:47:42.25 rhAlx8Ij0.net
>>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ
vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね

386:デフォルトの名無しさん
19/05/28 09:55:56.33 JWvhlEsx0.net
Findを利用したコードについて教えて下さい。
書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A~C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1~G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。

ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
  A  B   C   D  E    F  G
1 日付 売上 担当者    000  AAA たろう
2 000 AAA たろう     333  DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ

387:デフォルトの名無しさん
19/05/28 09:56:25.54 JWvhlEsx0.net
386のつづき

Sub Find()
Dim temp As Range, tempAddress As String, i As Long
With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row
Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub
Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub

388:デフォルトの名無しさん
19/05/28 10:10:54.71 CE2aKfrCH.net
>>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?
コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?
そういやfunctionを関数みたいに使う場合もあると聞いたな

389:デフォルトの名無しさん
19/05/28 10:32:00.95 P/fMeUQp0.net
>>384
>>385意見に賛成だが少し付け加えます。
基本的にsubにしろfunctionにしろ長くだらだら作らない
出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする
その時に値を返せるfunctionの方が圧倒的に有利
初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る
それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ

390:デフォルトの名無しさん
19/05/28 11:24:47.87 aRCJr/ZnM.net
>>384
ネタでしょ?
モドリッチがない方が便利だなんて、そんな訳ないじゃん

391:デフォルトの名無しさん
19/05/28 11:26:30.05 CE2aKfrCH.net
>>389
あーその説明で分かった ありがとう
たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ

392:デフォルトの名無しさん
19/05/28 12:23:13.41 1q3vxt7ga.net
OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします
上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです
しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です
私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?

393:デフォルトの名無しさん
19/05/28 12:47:38.41 i1bbppKtM.net
>>392
ウィルスメールの作成方法きいてる様なもんだなw

394:デフォルトの名無しさん
19/05/28 12:51:48.37 Z4r31YmpM.net
>>392
まずは社内でOLのセキュリティ設定がどうなのか。
ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない

395:デフォルトの名無しさん
19/05/28 13:44:15.47 P/fMeUQp0.net
>>392
まあ、バカ上司をサポートするのと
バカ上司の影響をサポートするのと
どちっがしたいんだ?

396:デフォルトの名無しさん
19/05/28 13:45:21.90 8P1bQTIM0.net
>>388
VBA初心者にありがちな意見だね。
プログラムを組む時の考え方が全く違う。
組める奴なら最初から構造的に考える。
動きゃ良いなどと考える奴はいない。

397:デフォルトの名無しさん
19/05/28 13:48:09.91 8P1bQTIM0.net
>>392
マクロでやらなくても承認ボタンを追加する機能があった筈だが。

398:デフォルトの名無しさん
19/05/28 13:50:35.37 i1bbppKtM.net
> VBA初心者にありがちな意見だね。
はい、きょうもマウント取りたい人が来ましたよ

399:デフォルトの名無しさん
19/05/28 14:01:27.19 8P1bQTIM0.net
>>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。
あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。

400:デフォルトの名無しさん
19/05/28 14:03:33.28 8P1bQTIM0.net
>>398
マウントも何も、明らかに初心者なんだから仕方ないだろ

401:デフォルトの名無しさん
19/05/28 14:18:44.11 rhAlx8Ij0.net
> VBA初心者にありがちな意見だね。
この部分は必要なかったんだよなぁ

402:デフォルトの名無しさん
19/05/28 14:34:43.00 8P1bQTIM0.net
>>401
必要なんだが。

403:デフォルトの名無しさん
19/05/28 15:27:43.49 m2eXkVaQM.net
初心者お断りな質問スレが存在した…?

404:デフォルトの名無しさん
19/05/28 15:33:18.00 rhAlx8Ij0.net
>>402
君はそう書かないと回答できないのか、なるほど
興味深い

405:デフォルトの名無しさん
19/05/28 15:57:40.29 JWvhlEsx0.net
>>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。
VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m

406:デフォルトの名無しさん
19/05/28 15:58:05.43 8ZgSX7bEF.net
>>404
構造的に考えるべきという意味付けの為に必要。
初心者にありがちだということで、初心者からレベルアップした方が良いということになる。

407:デフォルトの名無しさん
19/05/28 16:01:17.83 8ZgSX7bEF.net
>>405
別に迷惑でも何でも無い。
元々、初心者の質問に難癖を付けた奴が悪いと思ったから>>355を書いたんだが、内容を見ずに変に絡んでくる奴が出てきただけのこと。

408:デフォルトの名無しさん
19/05/28 18:23:49.73 PIv3udRAr.net
i=の行をloopの中に入れる

409:デフォルトの名無しさん
19/05/28 18:25:13.81 PIv3udRAr.net
その上のtempaddressも

410:デフォルトの名無しさん
19/05/28 18:29:24.54 Bg5LHkgbH.net
マウントしてると誤解を招くような
会話しかできない奴は能力低い奴多い
他人の意見も聞かないしね。
傲慢が後に返り討ちにあう

411:デフォルトの名無しさん
19/05/28 18:33:26.76 C7Ijh9EKa.net
>>397
こんなんあったんですね!
自分で作るなら他にも機能足してたかもしれないけど、これなら簡単で皆で使えるからこれでいきます

ウイルスメールの作成方法……確かに……

412:デフォルトの名無しさん
19/05/28 19:06:09.82 +01nmcZGF.net
>>410
誤解を招く前に、プライドに触ったのか碌に内容読まずに絡む奴の方がよっぽど問題だと思うが。

413:デフォルトの名無しさん
19/05/28 19:42:52.66 ID0apHa80.net
ところでここは「Exce VBA」の質問スレ

414:デフォルトの名無しさん
19/05/28 19:55:29.19 P/fMeUQp0.net
>>410
マウントしたい奴と思ったら絡むなよ
意味もなく伸びrだけ

415:デフォルトの名無しさん
19/05/28 22:28:38.54 6NK7Ep/b0.net
>>384
functionなら1行で書ける!
と思ったけど、よく見たらどっちも2行かかるな。
Dim A
A = function()
Dim A
sub(ByRef A)
functionのメリットって何だろ?
1個しか返せないし。

416:デフォルトの名無しさん
19/05/28 22:45:21.26 g3Ue34fJ0.net
>>415
馬鹿はいい加減黙れよ

417:デフォルトの名無しさん
19/05/28 22:46:58.82 exe6lUi60.net
>>415
教えてほしいなら教えてくれと言えば良い
君以外全員わかってるぞ

418:デフォルトの名無しさん
19/05/28 23:03:25.05 sz8y6/Um0.net
>>416
容赦なくてワロタw
>>415
If func(x) Then
とか
func1(func2(a), func3(b))
とか

419:デフォルトの名無しさん
19/05/28 23:15:31.12 MN8nEIAEd.net
>>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。
何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。
>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。

420:デフォルトの名無しさん
19/05/28 23:18:36.46 MN8nEIAEd.net
>>418
むしろ
Function Hoge(Arg() As String) As String()
の方が適切かな。
或いは
Function Hoge(Arg() As String) As Collection
とか。

421:デフォルトの名無しさん
19/05/28 23:45:10.83 sz8y6/Um0.net
>>419
AddressOf で関数を返すことすら出来るのだ

422:デフォルトの名無しさん
19/05/28 23:58:45.95 0rD99vo/0.net
IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)
むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう

423:デフォルトの名無しさん
19/05/29 00:02:34.60 S0wmSPvZ0.net
2年ぐらい前にもSubとFunctionに違いなんかないと言い張る粘着がいたのを思い出した

424:デフォルトの名無しさん
19/05/29 00:03:33.14 6UUzdaAE0.net
BASICなんだからGOTOだけで十分

425:デフォルトの名無しさん
19/05/29 00:47:16.25 aQ2xiGWFd.net
>>421
おう、ここで初めて高度な話を見た。

426:デフォルトの名無しさん
19/05/29 03:04:42.46 1woLKBVkM.net
・Sub
・返り値のないFunction
この違いは何ですか?

427:デフォルトの名無しさん
19/05/29 04:29:34.43 WducifPVa.net
subじゃ1個も値返せないじゃん

428:デフォルトの名無しさん
19/05/29 05:02:37.42 E4T3mNp50.net
戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた
subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。
ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。

429:デフォルトの名無しさん
19/05/29 08:46:31.68 WZbm0MMEM.net
>>428
単体で実行できるかどうかはSub/Function の差じゃなくて、引数を取る/取らないの差じゃなかったっけ?

430:デフォルトの名無しさん
19/05/29 08:57:09.71 dT9QfEjx0.net
>>429
正解
Sub foo() '単体実行可能
End Sub
Sub bar(baz) '単体実行は出来ない
End Sub

431:デフォルトの名無しさん
19/05/29 08:58:24.42 dT9QfEjx0.net
あと、実行可能かどうかはpublic/privateで切り分けるべきだろう

432:デフォルトの名無しさん
19/05/29 09:10:25.71 QQeifizk0.net
セルに式として関数を入力して呼べるFunctionと呼べないSub

433:デフォルトの名無しさん
19/05/29 09:17:16.17 dT9QfEjx0.net
>>432
あれ、じゃあ何のためにsubって存在するんだ
return 0しなくていいってだけ?

434:デフォルトの名無しさん
19/05/29 09:30:42.49 dT9QfEjx0.net
基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない
と考えると自然と思うんだけど、どうだろう
この考えだと、private subは使うべきじゃないって事になる

435:デフォルトの名無しさん
19/05/29 10:59:47.52 bJuQUiqr0.net
別に良いんだよ何を使おうと、まあ好きにすればって程度
まあ、ただ論理的に考えずごみを量産するやつはいるな

436:デフォルトの名無しさん
19/05/29 11:30:55.13 zbMbGE8SM.net
>>426
戻り値のないFunctionは存在しない
戻ってきた値を無視することができるだけ
つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる

437:デフォルトの名無しさん
19/05/29 11:31:54.96 WZbm0MMEM.net
Excel長老の話って知ってる?

438:デフォルトの名無しさん
19/05/29 11:32:51.36 WZbm0MMEM.net
>>436
メモリ効率ってネタだよね?

439:デフォルトの名無しさん
19/05/29 11:39:17.00 zbMbGE8SM.net
>>433
今から40年以上前、それまでのシーケンシャルなプログラムでは能率が悪いから構造化しようという話しが出て、その時に提唱されたのが「手続き(Sub)」と「関数(Function)」という概念
しかし、教育用として作られたPascalという言語では忠実に実装されたけど、C言語には関数しか用意されなかったし、その後に登場したJavaも関数しかない
結局は言語を設計した人のリテラシーというか、単なる好みで決まったようなもん
今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない

440:デフォルトの名無しさん
19/05/29 11:41:11.71 zbMbGE8SM.net
>>438
ネタじゃないよ
リカーシブなプログラムを書いてみればすぐわかる
VBAでもFunctionは呼び出すたびにヒープを最低4バイトずつ消費するから、再帰の最大回数が少ないのは簡単な実験ですぐに確認できる

441:デフォルトの名無しさん
19/05/29 11:48:47.33 WZbm0MMEM.net
>>440
「ヒープ」ってネタだよね?

442:デフォルトの名無しさん
19/05/29 11:53:59.73 dT9QfEjx0.net
>>439
ありがとう!そういう事か
sub便利だけど、便利過ぎてかなり変な事になってるね
subから呼び出すのはfunctionと決めていれば良いんだろうけど、
でもsubからsub呼び出す事もあるから・・・
結局subって意味なくね?
C言語のsub無しが正解のような気がする。
>>441
なんでネタと思うんだ?

443:デフォルトの名無しさん
19/05/29 11:58:48.77 zbMbGE8SM.net
簡単な実験
Funcの方がメモリをたくさん消費するから繰り返せる回数が少ない
データキャッシュも有限なリソースだから、どちらでもいい時はFuncの方が不利
Sub sub_test()
  test_sub (1)
End Sub
Sub func_test()
  test_func (1)
End Sub
Sub test_sub(n)
  n = n + 1
  Debug.Print n;
  test_sub (n)
End Sub
Function test_func(n)
  n = n + 1
  Debug.Print n;
  test_func (n)
End Function

444:デフォルトの名無しさん
19/05/29 13:23:20.90 AfH1iVf/M.net
Selenium+vbaを使って
ChromeでWebページをPDF保存することは可能でしょうか?

445:デフォルトの名無しさん
19/05/29 13:29:26.76 dT9QfEjx0.net
>>444
vbaは不要っぽい
URLリンク(takuya-1st.hatenablog.jp)
記事が古いから一度試したほうが良いと思う

446:デフォルトの名無しさん
19/05/29 13:43:28.26 aQ2xiGWFd.net
>>442
だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。
意味的にというのは人間の感覚にとって合った方を採用すべきということ。
Cだってvoidがあるじゃねーの。
無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。
なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。

447:デフォルトの名無しさん
19/05/29 15:03:19.55 eVQzoh+sa.net
処理結果をpublicで判断するよりは
値を返すほうが使いやすい

448:デフォルトの名無しさん
19/05/29 17:40:58.36 S0wmSPvZ0.net
プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい
大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、
経験上、カプセル化した方が結果的に安全で能率がいいということになっている
そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな
だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ
複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える

449:デフォルトの名無しさん
19/05/29 18:50:10.49 b/xKBA/BM.net
>>445
SeleniumではなくSeleniumBasic
の間違えでした。
ごめんなさい。

450:デフォルトの名無しさん
19/05/29 18:57:16.16 dT9QfEjx0.net
グローバル汚染はマジでエグいからな
「name」「mail」この変使われてたら超めんどい
>>449
Selenium使えばいいんじゃない

451:デフォルトの名無しさん
19/05/29 19:33:05.85 gbtQDfh8M.net
seleniumってもう使い物にならなくなってなかったっけ

452:デフォルトの名無しさん
19/05/30 00:50:17.75 oM5Ks3kV0.net
>>440
ヒープとスタックの違い理解してる?

453:デフォルトの名無しさん
19/05/30 03:19:10.04 1qsenVBka.net
byref もあるしな

454:デフォルトの名無しさん
19/05/30 08:21:00.17 oyMl0bcF0.net
>>452
それって日本昔話に載ってる?
今も気にすること?

455:デフォルトの名無しさん
19/05/30 12:02:16.59 fCKFoHR/M.net
使うスタック量によって再帰での有利不利って理屈の上ではあるだろうけど
現実的な意味ってあるの?
条件によってスタックオーバーフローする「かもしれない」プログラムに対して
引数や返り値を考慮とか再帰深度に気を使うとか、ちょっとVBAで考えられないんですけど

456:デフォルトの名無しさん
19/05/30 12:25:00.74 0nKLhIYFr.net
>>454
SubとFunctionでメモリ効率の違い考慮するレベルなら

457:デフォルトの名無しさん
19/05/30 12:31:21.82 NTWA4E5yM.net
>>454
別に気にしなくてもいいけど>>440みたいなツッコミ入れるならちゃんと理解してないと恥をかく

458:デフォルトの名無しさん
19/05/30 15:33:21.51 oyMl0bcF0.net
>>457
おれも、昔話書きたくなったレベル
z80とか8080とかな8086なんて凄いよな

459:デフォルトの名無しさん
19/05/30 18:56:24.47 86kk1xI3a.net
ここできいていいのか分かりませんがマクロの組み方で教えてください
「=5月シートA1」
「=5月シートA2」
みたいに引っ張っているセルを
「=6月シートA1」
「=6月シートA2」
みたいに変えるマクロを組みたいんですが
それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?
理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
説明が下手ですみません。

460:デフォルトの名無しさん
19/05/30 19:04:11.68 1nLCMVmfr.net
今月=month(date)
activesheet.range("a1").resize(5).formula="="&今月&"!a1"

461:デフォルトの名無しさん
19/05/30 19:12:37.62 3bWSKYGBM.net
>>459
5月シートをコピーして6月シートにする。
5月を6月に文字列全置換え
処理日によって月を自動判定でもいいが、フォームで値を確認、修正後に実行の方がいいんじゃないかな

462:デフォルトの名無しさん
19/05/30 19:18:06.10 86kk1xI3a.net
>>460
すみません初心者なので詳しくは分かりませんが、今の月を参照するセルを作り、それをコピペするように組めばいい感じでしょうか。
間違ってたらすみません。
>>461
今まではそうやっていたのですが、それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。

463:デフォルトの名無しさん
19/05/30 19:37:14.94 /EJeltR2r.net
>>462
今月の月を取得して、a1からa5までの数式を置き換えるイメージです。
携帯からなので試せていませんが・・・

464:デフォルトの名無しさん
19/05/30 19:38:13.64 86kk1xI3a.net
>>463
ありがとうございます。
試してみます

465:デフォルトの名無しさん
19/05/30 19:41:48.72 S1ohEoHj0.net
>>464
文字列の検索や置換は数式にも有効
5月を6月に置換すればいい
VBAは必要ない

466:デフォルトの名無しさん
19/05/30 19:49:45.60 vA8HeCKe0.net
>>459
他の処理はともかく数式に関してはマクロいらない
=INDIRECT(MONTH(NOW())&"月!A1")

467:デフォルトの名無しさん
19/05/30 19:55:45.24 vA8HeCKe0.net
間違えたわ、こうだわ
=INDIRECT(MONTH(NOW())&"月!A"&ROW(A1))

468:デフォルトの名無しさん
19/05/31 10:21:23.92 iXFRocgY0.net
なんか、今月にこだわる人多いが説明だと選んだ月のシートからデーターを
持ってきたいだけだろ、勿論INDIRECTを使うことでマクロを使う必要はない
例えば、値を参照するシートとのA1セルに入力規制で1月~12月を選択して
=INDIRECT($A$1 & "!A" & ROW(A1))
でいいだろ

469:デフォルトの名無しさん
19/05/31 10:48:51.98 xVkqny4q0.net
>>468
> それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?

470:デフォルトの名無しさん
19/05/31 11:09:05.87 iXFRocgY0.net
>>469
自動だったらA1セルをNow()にして表示形式を
月だけにすればいいだけだろ
各セルに設定する関数は簡素に共通化する

471:デフォルトの名無しさん
19/05/31 11:20:16.63 xVkqny4q0.net
>>470
> なんか、今月にこだわる人多いが

472:デフォルトの名無しさん
19/05/31 11:34:43.20 iXFRocgY0.net
>>471
今月か選択なんてExcelをちょろって知ってればどっちでもいいんだよ
1っか所変えただけで要は1っか所を変えただけでその月に対応すればよいだけ
こんなのマクロなんか書いたら笑えるレベル

473:デフォルトの名無しさん
19/05/31 11:36:26.16 iXFRocgY0.net
あら~ダブって入ったわ すまぬの

474:デフォルトの名無しさん
19/05/31 11:48:24.92 fWZN/ECyM.net
なんかVBA使わずにワークシート関数使えっていうコンセンサスでもあるの?
思い込みと違う?

475:デフォルトの名無しさん
19/05/31 11:53:29.26 iXFRocgY0.net
>>459
お題は
>理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
だけどな、マクロを使わないと気が済まないやつっているのかな

476:デフォルトの名無しさん
19/05/31 11:57:27.72 iXFRocgY0.net
>>474
これでマクロを作るやつのマクロを参考にしたいな
ぜひ作ってね

477:デフォルトの名無しさん
19/05/31 12:02:31.59 kMeHCJPt0.net
>>474
数式だけならファイル形式をxlsxのままにできて安全
同じ機能なら数式で済ませた方が良いだろう
家計簿ならどっちでも良いのは間違いない

478:デフォルトの名無しさん
19/05/31 12:17:34.40 iXFRocgY0.net
まあなんだな、$A$1この書き方って絶対参照だが良くないんだよな
普通はそのセルに名前を付けてその名前で参照する
例えば「設定月」みたいな名前ね

479:デフォルトの名無しさん
19/05/31 12:21:40.48 UKwhkiwBr.net
VBAのスレでマクロつかうなとか(笑)

480:デフォルトの名無しさん
19/05/31 12:23:22.93 xVkqny4q0.net
>>472
>>462 > それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。

481:デフォルトの名無しさん
19/05/31 12:27:21.46 wdWzuIo7p.net
シートを左のものからきっちり順に印刷する(印刷指示を出す)vbaありませんか?
スプール云々はプリンターの詳細設定弄れなくなってるのでvbaでどうにかなればしたいのですが・・

482:デフォルトの名無しさん
19/05/31 12:27:47.02 iXFRocgY0.net
Excelの関数や機能も知らん奴がVBAでマクロを作るか
少しは勉強しろよ、ってか
運転できないやつが、自動運転を作るみたいなもんか?
ってか参照で十分なものを何でマクロ(笑)

483:デフォルトの名無しさん
19/05/31 12:31:43.08 xVkqny4q0.net
>>482
>>459 > 毎月自動で7月、8月、と月に合わせて変える
 >>468 > 今月にこだわる人多いが
>>462 > その置き換えも合わせてマクロにしたい
 >>472 > こんなのマクロなんか書いたら笑えるレベル
一部読み飛ばして回答してしまうのはなんなのネタなの

484:デフォルトの名無しさん
19/05/31 12:32:47.94 iXFRocgY0.net
>>480
すまないが、そんなのどうして関数でできないと思うんだ?
ちゃんと説明すれば?、今まで書いているのはあまりにも簡単な質問で
関数で十分なんだが

485:デフォルトの名無しさん
19/05/31 12:37:34.60 iXFRocgY0.net
>>483
別に、マクロで提案してみたら

486:デフォルトの名無しさん
19/05/31 12:54:17.71 jiw85AG60.net
自動車つくれなくても、つくってもらって乗ればいいじゃん

487:デフォルトの名無しさん
19/05/31 13:01:15.44 iXFRocgY0.net
>>486
でも、企画があってな わけなわからん奴の作った自転車に
乗れるか?
責任は運転者だよ、関数は規格通りだな
その自転車がすごきゃいいよ、単に危ないだけじゃな

488:デフォルトの名無しさん
19/05/31 13:10:48.90 iXFRocgY0.net
>>483
で、お前は何ができるんだ?
何が気に障った?(笑)

489:デフォルトの名無しさん
19/05/31 13:26:58.37 iXFRocgY0.net
>>483
VBAで提案できないやつが・・・・
ネタだよな・・関数なら即座なのに

490:デフォルトの名無しさん
19/05/31 13:43:20.27 xVkqny4q0.net
>>489
今月にこだわっててもおかしくないし
一連の流れをマクロにしてその一部の質問してるわけでしょ
だから>>468>>472も的外れって話
訂正するわけでもないのに再アンカをしかも連投するってせっかちすぎない?

491:デフォルトの名無しさん
19/05/31 13:55:19.86 iXFRocgY0.net
>>490
今月とかどうでもいいんだよ
単に参照すればいいだけ、それで質問者の意図に対応できないか?
自分の主張じゃなく、何が正しいかで提案するんだよ
VBAで作れば何でもできるさ、でも単に絶対参照でいいものをこねくり回すなよ

492:デフォルトの名無しさん
19/05/31 14:07:14.86 xVkqny4q0.net
>>491
次は話ループさせんの?
「毎月自動、VBA」という質問の前提をこねくり回してるのはそっちでは?

493:デフォルトの名無しさん
19/05/31 14:14:55.01 kMeHCJPt0.net
普通のExcelスレはあんなに紳士的なのに・・・

494:デフォルトの名無しさん
19/05/31 14:31:03.11 iXFRocgY0.net
何だろうな、普通に絶対参照すればいいものをVBA・VBAって叫ぶの
怖いは

495:デフォルトの名無しさん
19/05/31 14:48:52.06 2f7ZWXQQ0.net
>>494
>>459>>462でマクロでやりたいと言ってるし、
マクロ以外の回答に対してノーリアクション
数式での回答を求めてないのだろう。結果を求めるだけじゃなく、マクロ自体を書きたいという質問者もいるわけだしな
あまり押し付けるのもどうかと思う
もちろん一般的な場合は君のやり方が正しいのは明らか
さすがにそれが分かってない人はいないだろう

496:デフォルトの名無しさん
19/05/31 15:04:15.42 jiw85AG60.net
>>462
削除等はマクロで、他シート参照は数式でいいんでないの

497:デフォルトの名無しさん
19/05/31 15:50:07.97 xVkqny4q0.net
元の前提無視して絶対参照・絶対参照って叫ぶの
怖いは
って言えばいいのかな

498:デフォルトの名無しさん
19/05/31 16:21:11.81 iXFRocgY0.net
>>496
削除が必要って単なる思い込みではないのかな
Excelの使い方もわからないのってVBAって魔法の玉手箱じゃないの
でなければ、質問者に対する最適の解をさっさとVBAで示せばいいんだよ

499:デフォルトの名無しさん
19/05/31 16:31:39.12 Q8fJ9KqCF.net
元々の質問を見る限り、詳細が無いのでVBAで解決すべきか数式で解決すべきか判断できん。
逆に言えばこれだけの情報でVBAを必要無いとか言ってしまえる人って初心者とまでは言わないけど大したスキルは無いんだろうなと思ってしまう。

500:デフォルトの名無しさん
19/05/31 16:43:05.14 agbDawORM.net
>>499
そうか 君はプロなんだね(笑)

501:デフォルトの名無しさん
19/05/31 17:06:59.36 Q8fJ9KqCF.net
>>500
初心者は自分の状況を上手く説明出来ないし、それはしようが無い。
一方回答する方も、初心者は自分の狭い土俵で回答しようとするんだよね。

502:デフォルトの名無しさん
19/05/31 17:12:13.76 agbDawORM.net
>>501
いまだにVBAでの回答すらないけどね

503:デフォルトの名無しさん
19/05/31 17:17:59.31 Q8fJ9KqCF.net
>>502
俺はこんな質問に回答しないよ。
何処の掲示板でもそうだけと面白いテーマじゃなきゃ回答しない。
俺が回答する必要も無いだろう。
>>460とかを見てどうにか頑張れば良いんじゃね?と思ってる。

504:デフォルトの名無しさん
19/05/31 17:21:09.14 Q8fJ9KqCF.net
技術レベルは大したことない問題だけど最近回答したのは>>284だな。
テーマとしては面白いから。

505:デフォルトの名無しさん
19/05/31 17:33:03.28 NquLpIx1r.net
てか>>464で終わっとるやろ…

506:デフォルトの名無しさん
19/05/31 17:36:44.72 xVkqny4q0.net
>>498
むしろ思い込み(というか自分の都合のいいように解釈)してるのはそっちなんだよなぁ

507:デフォルトの名無しさん
19/05/31 17:42:42.79 agbDawORM.net
>>503
君に、回答を求めてないよ
俺も、VBA の回答は基本的に出さない
まあヒントだけだな
いや~これのマクロを作る奴見てみたい(笑)

508:デフォルトの名無しさん
19/05/31 17:43:17.34 2P/bRCUed.net
というか>>499に書いた通り、状況を判断する材料が少ない。
例えば月のシートが沢山あって、それぞれのシートの集計結果を集計シートで閲覧したいという状況なら数式の方が良さそうだ。(それでも情報が足りないから「良さそう」としか言えん。)

509:デフォルトの名無しさん
19/05/31 17:44:39.75 2P/bRCUed.net
>>507
じゃあ、俺に>>502のレスするんじゃね―よw

510:デフォルトの名無しさん
19/05/31 17:46:18.67 a67Z5WHaM.net
>>499
ほんそれ
ど真っ赤で力説してるのが滑稽やなw

511:デフォルトの名無しさん
19/05/31 18:08:13.80 agbDawORM.net
>>509
意識過剰だろ(笑)事実を書いただけ

512:デフォルトの名無しさん
19/05/31 19:20:39.09 frxzLdPfr.net
VBAでやるか数式でやるかの判断はこのスレでやる話じゃないだろ
ここはVBAのスレだぜ

513:デフォルトの名無しさん
19/05/31 19:22:19.42 2P/bRCUed.net
>>511
???
">>501"を付けるなと言ってる。

514:デフォルトの名無しさん
19/05/31 20:32:30.11 XAbM3vU30.net
>>481
dim ws as worksheet
for each ws as thisworkbook.worksheets
 ws.printout ~
next

515:デフォルトの名無しさん
19/05/31 20:58:10.12 wdWzuIo7p.net
>>514
大荒れの中レスありがとう
来週試してみます

516:デフォルトの名無しさん
19/05/31 22:18:19.39 XAbM3vU30.net
>>515
ごめん for each ws in の書き間違い

517:デフォルトの名無しさん
19/05/31 22:31:58.82 aMsRRK9D0.net
ん?
全シート印刷じゃダメだったの?

518:デフォルトの名無しさん
19/05/31 22:40:38.73 agbDawORM.net
>>513
ふん、おれ500 お前が笑えるレスつけただけだろ

519:デフォルトの名無しさん
19/06/01 00:10:30.70 Re37ayj0p.net
>>517
もちろん全シート一括で印刷かけてるんですけど、スプール設定?の関係で重いシートの印刷が後回しになるので10ページ1ページ2ページの3シートのファイル印刷すると10ページのシートが一番最後に印刷されちゃって不便なんです

520:デフォルトの名無しさん
19/06/01 02:54:17.07 48zxZgqm0.net
ListBox使ってるんですけど、たまに表示がバグります
薄い横線がListBox内の全ての行間に表示されちゃうんです
行のフォーカスを動かすと、動かした範囲ではこの変な横線は一旦消えるんだけど、
何かをするとまた横線があらわれる
こういうのって何が原因かわかりますか?
再現性がそう高くないので、対策しづらいです
表示がおかしいだけでプログラム自体は問題なく動きます

521:デフォルトの名無しさん
19/06/01 03:41:24.97 48zxZgqm0.net
>>520ですけどもしかしたら直ったかもしれないです
multiSelectをfmMultiSelectExtendedに設定してるんですけど、
UserForm Initialize内で設定するのではなく
プロパティウィンドウで選択して設定するようにしたら今の所出ないです
再現性があれなんで確実とは言えないんですけど

522:デフォルトの名無しさん
19/06/01 07:48:48.81 FEI28S1s0.net
>>520
ListBoxに限らず、Excelのオブジェクトは変だよ。
そんなもんだと思う。
俺もこんな現象に遭遇した。
・印刷プレビュー直後に、リストボックスを操作できなくなる。(シートを切り替えると直る。)
・MSクエリやADOを使うと、ボタンやテキストボックスの位置が、見た目と合わなくなる。
 [コマンドボタン]          何もない部分
     ↑                 ↑
ここにボタンがあるのに  ここを押さないと反応しない

523:デフォルトの名無しさん
19/06/01 07:53:01.65 FEI28S1s0.net
あと、なんじゃそりゃ!???? と思ったのが、
 [コマンドボタン]
    ↑
  押すと・・
             →→→ [コマンドボタン]
    ↑
 ボタンが逃げる
多分、押す前のボタン画像が左にあって、
押した後の(凹んだ状態の)画像が右にあるんだと思う。

524:デフォルトの名無しさん
19/06/01 08:43:23.59 48zxZgqm0.net
>>523
論理的に解決できる方法がないから山勘に頼っていじってみて
運良く解決できたらもうけもんってことですかね
表示がぶれると、使ってる人が、このプログラム大丈夫かと心配し始めちゃうんで
できるだけ避けたいところです

525:デフォルトの名無しさん
19/06/01 10:54:28.04 /THuLu8v0.net
>>518
???
バカなの?
お前が500なのもお前に俺がレスしたのも誰でも分かるわ。
>>502のレスにおいて">>501"を付けるから俺に回答を求めてると判断されても仕方ないだろが。

526:デフォルトの名無しさん
19/06/01 15:58:14.75 Vz6e2VkK0.net
>>525
笑えるな、答えられないやつに答えを求めないって(笑)

527:デフォルトの名無しさん
19/06/01 16:00:03.94 Vz6e2VkK0.net
まあ、プロさんのようだから答えられないの恥ずかしいのか(笑)
あげとくは

528:デフォルトの名無しさん
19/06/01 17:24:08.45 /THuLu8v0.net
>>527
煽ってもお前のレベルが低いのは変わらんぞw
相手のレベルを推しはかれないのは相手よりスキルがかなり低いからなんだが。

529:デフォルトの名無しさん
19/06/01 17:41:52.05 FFwlyzcq0.net
まだやってんの
最近多い無関係の人が巻き込まれるような事件起こしそう

530:デフォルトの名無しさん
19/06/01 17:42:25.49 ZZxkmLZAM.net
>>528
あら、単に引きこもりのカスでろくなの作れんて思ってるよ(笑)

531:デフォルトの名無しさん
19/06/01 17:47:36.35 /THuLu8v0.net
>>530
そりゃスキルの無い奴は人を評価出来ないからなw

532:デフォルトの名無しさん
19/06/01 20:32:00.88 XF0/4x+50.net
データベースでエクセルのフィールド(3)を下に読み取っていって、入ってる型が文字列以外の物が入っているかチェックしたいんですけど何かないですか?

533:デフォルトの名無しさん
19/06/01 20:51:09.32 fYRCWk9w0.net
>>532
vartypeがvbStringかどうか
typenameが"String"かどうか
など

534:デフォルトの名無しさん
19/06/01 22:43:59.23 g0N7gK6Z0.net
>>532
わざとやってみてどうなるか確認してみよう
先頭何レコードで判断するんだっけ?

535:デフォルトの名無しさん
19/06/01 22:55:52.58 g0N7gK6Z0.net
>>532
早速やってみたけど、逆のパターンである
「先頭に数値が入っていて途中から文字列に変化した」場合は判定できた。
具体的には数値部分だけ読み込んで文字列の部分はNULLになった。
「先頭に文字列が入っていて途中から数値に変化した」場合は全部文字列扱いになったので厳密には判定不能。

536:デフォルトの名無しさん
19/06/02 18:41:53.51 3MovPWtK0.net
初心者なので意味がわかりづらかったらすみません
まず、やりたいことは
1.ユーザーにB2~E2あたりに文字を入力してもらう
2.それを5行前後繰り返す
3.この後にボタンを押してもらう
(以降マクロ処理)
4.入力して貰った行の各左セル(A列)に営業日(月初)を入力する
入力内容を下の行にコピペして、A列日付だけ翌営業日にする
それを月末日まで繰り返す
これを実現したい場合、営業日付をどう表示し、どう繰り返せばよいか検討がつきません
アドバイス頂けませんでしょうか
日付に関してyyyymmのみユーザーに手入力して貰う予定で、それを利用できるかなと思っています

537:デフォルトの名無しさん
19/06/02 19:17:16.23 wosufaXU0.net
>>536
Sub foo()
コピー元_行数 = Cells(Rows.Count, 2).End(xlUp).Row - 1
Range(Cells(2, 2), Cells(コピー元_行数 + 1, 5)).Copy
処理年 = InputBox("処理する年を四桁で入力してください", "", Format(Date, "yyyy"))
処理月 = InputBox("処理する月を1桁で入力してください", "", Format(Date, "m"))
'ここに上記が数値以外なら終了させる分岐をかます。めんどいのでしてない
For i = 1 To Day(DateSerial(処理年, 処理月 + 1, 0))
Cells(コピー元_行数 * (i - 1) + 2, 2).PasteSpecial
Range(Cells(コピー元_行数 * (i - 1) + 2, 1), Cells(コピー元_行数 * i + 1, 1)).Value = _
DateSerial(処理年, 処理月, i)
Next
End Sub

538:デフォルトの名無しさん
19/06/03 23:29:52.65 +V4WoVbB0.net
>>535
上にあるようにvartypeだとだめかね?

539:デフォルトの名無しさん
19/06/04 00:44:40.62 Vr0YkSWUa.net
教えてください。
ActiveCell.EntireRow.Copy Destination
これで「任意のセル選択中で1行コピー」になりますが、
改造して「任意の複数セル選択中の複数行をコピー」に変えたいんですがわかりますか?

540:デフォルトの名無しさん
19/06/04 01:01:51.67 sjSsEz0E0.net
仮面ライダー本郷猛は改造人間である。彼を改造したショッカーは世界制覇を企む悪の秘密結社である。仮面ライダーは人間の自由のためにショッカーと戦うのだ!

541:デフォルトの名無しさん
19/06/04 07:28:25.36 CwYFwdXYa.net
>>539
Selection で自己解決したんですが、

ThisWorkbook.Worksheets("sheetA").Activate
Selection.EntireRow.Copy Destination:=ThisWorkbook.Worksheets("SheetB").Range("A57:A62")
ThisWorkbook.Worksheets("SheetB").Activate
Range("A3:I4").Select
End Sub
で所定の6行のスペースにペーストするんですが、選択セルが5以下だと重複して貼り付けられます。
重複しない方法を教えてください。

542:デフォルトの名無しさん
19/06/04 07:51:19.62 kIR0GcUMx.net
コピー先のセルのアドレスをシンプルに"A57"に変えるだけでいいと思う

543:デフォルトの名無しさん
19/06/04 08:26:51.88 0SaUhvTtM.net
>>538
それだと対象のブックを開かなきゃダメじゃん

544:デフォルトの名無しさん
19/06/04 11:03:51.11 ABA6WeJwH.net
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる 
URLリンク(pbs.twimg.com)   
   
① スマホでたいむばんくを入手    
② 会員登録を済ませる
③ マイページへ移動する   
④ 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
 
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。     
       
数分の作業でできますのでご利用下さい。   

545:デフォルトの名無しさん
19/06/04 11:40:41.30 ClB/ngZb0.net
ここにも来たかフィッシング詐欺

546:デフォルトの名無しさん
19/06/04 13:24:40.51 g1r7g3uN0.net
>>544
TVCM見た後に入れた

547:デフォルトの名無しさん
19/06/04 18:55:29.74 w6NTuaQma.net
>>542
できました。ありがとうございます。

548:デフォルトの名無しさん
19/06/04 22:55:20.87 JKzLDG9lp.net
直前に開いたファイルのキャッシュ的なものを参照して情報を取得することってできますか?
例えば直前に開いて印刷して閉じて消去したファイルのA1セルに記載の値を別ファイルのB1セルに転記する、みたいな

549:デフォルトの名無しさん
19/06/04 23:07:17.09 e2Nk6zam0.net
>>548
そんなの知るか

550:デフォルトの名無しさん
19/06/04 23:20:09.51 GvHzI0140.net
>>548
必ずバックアップしてから開くようにバッチファイル作ればいいだけじゃね

551:デフォルトの名無しさん
19/06/05 00:02:17.80 b19uQdIQp.net
>>549
知らないならわざわざ書き込まなくていいよw

552:デフォルトの名無しさん
19/06/05 09:28:21.10 d6kiH4sy0.net
印刷時には転記先のファイルが必ず開いてる状態なの?
それならWorkbook_BeforeCloseで閉じる直前に転記は?

553:デフォルトの名無しさん
19/06/05 14:54:24.90 1kcRpkSq0.net
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。
そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。

554:デフォルトの名無しさん
19/06/05 15:52:32.95 bp5RZsKU0.net
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる
他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない

555:デフォルトの名無しさん
19/06/05 17:22:15.93 b19uQdIQp.net
>>

556:デフォルトの名無しさん
19/06/05 19:30:41.08 5zNRcsxz8
日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。
どのようにすればよいでしょうか?出来れば、マクロでお願いします。

よろしくお願いします。

例)
--
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00

557:デフォルトの名無しさん
19/06/05 19:31:41.43 5zNRcsxz8
ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入れて下さい。
式を入れたセルの書式はユーザ書式で [h]:mm としてください。

Function fTimestamp(sData As String) As Date
  For i = 1 To Len(sData)
    sOne = Mid(sData, i, 1)
    If IsNumeric(sOne) Then
      sNum = sNum & sOne

    ElseIf sOne = "日" Then
      fTimestamp = fTimestamp + Int(sNum)
      sNum = ""

    ElseIf sOne = "時" Then
      fTimestamp = fTimestamp + Int(sNum) / 24
      sNum = ""

    ElseIf sOne = "分" Then
      fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
      sNum = ""
    End If
  Next i
End Function

558:デフォルトの名無しさん
19/06/05 19:38:17.24 5zNRcsxz8
>>556です。
>>557を試したところ、

2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00

は上手くいきましたが、秒変換がうまくいきません。
例)
5分4秒

>>557
に単純に、
    ElseIf sOne = "分" Then
      fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
      sNum = ""

を追加しての結果です(^^;)
何がいけないのでしょう?

559:デフォルトの名無しさん
19/06/05 19:41:46.35 5zNRcsxz8
>>558
間違えました。追加したのは


    ElseIf sOne = "秒" Then
      fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
      sNum = ""

です。お手数をおかけしますが何方かご助力いただけると助かります(^^:

560:デフォルトの名無しさん
19/06/05 19:45:36.22 UgnFbYyua.net
ファイルの履歴とか拾うのかな?

561:デフォルトの名無しさん
19/06/05 20:56:36.68 5zNRcsxz8
>>560
よくわかりませんが、単純にエクセルのセルに文字列で
◯時間〇分●秒単位で入力されていて
その列の合計と平均を求める感じです。

562:デフォルトの名無しさん
19/06/05 20:58:28.96 5zNRcsxz8
文字列形式で入力されているので先ずは数値に変換しないとどうにもなりません。

563:デフォルトの名無しさん
19/06/05 21:22:31.39 5zNRcsxz8
>>556
~
>>559
です。わかりにくいので、再度まとめ直させていただきますと(_ _)
以下の通りです。

日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。

どのようにすればよいでしょうか?

例)

2日8時間 → 56:00

2時間30分 → 2:30

5分 → 0:05

4時間 → 4:00

以下のマクロを参考にしたところし分までは成功しました。

564:デフォルトの名無しさん
19/06/05 21:29:26.90 5zNRcsxz8
>>563 の続きです。

ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入力。
式を入れたセルの書式は [h]:mm

565:デフォルトの名無しさん
19/06/05 21:34:37.94 5zNRcsxz8
>>564の続きです。
Function fTimestamp(sData As String) As Date
For i = 1 To Len(sData)
sOne = Mid(sData, i, 1)
If IsNumeric(sOne) Then
sNum = sNum & sOne

ElseIf sOne = "日" Then
fTimestamp = fTimestamp + Int(sNum)
sNum = ""

ElseIf sOne = "時" Then
fTimestamp = fTimestamp + Int(sNum) / 24
sNum = ""

ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
sNum = ""
End If
Next i
End Function

566:デフォルトの名無しさん
19/06/05 21:35:38.04 5zNRcsxz8
>>565の続きです。
次に分まで(例 5分2秒)実現するために
以下を感で追加してみたところ失敗しました。
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""

無理を言って申し訳ありませんが、何が悪いのかアドバイス
いただけると幸いです。何卒よろしくお願いします。

567:デフォルトの名無しさん
19/06/05 21:41:19.12 5zNRcsxz8
>>566
次に秒までの間違いでした(_ _)

568:デフォルトの名無しさん
19/06/05 22:34:22.55 5zNRcsxz8
>>566
なぜか
(24 * 60 * 60)
の代わりに
86400
にするとうまくいく感じです。。。
なぜ???

569:デフォルトの名無しさん
19/06/05 20:51:53.11 zo8mZEUL0.net
>>560
> 消去したファイルのA1セルに記載の値
なので履歴じゃダメだろうな
マジでなんのためにそんなことをしたいのがさっぱりわからん…

570:デフォルトの名無しさん
19/06/05 22:41:29.46 4nGxoieG0.net
>>537
遅くなりましたがありがとうございました!とても参考になりました
おかげさまでメイン処理はひとまず形になりました
ツール完成させられるよう頑張ります

571:デフォルトの名無しさん
19/06/05 23:22:07.87 Uovi79l30.net
>>570
こんなこともわからんような馬鹿が作ったものを使わされるとか

572:デフォルトの名無しさん
19/06/05 23:37:24.78 PwgeLPYz0.net
>>571
人間性に問題のある君と同じ職場よりは大分マシだろう

573:デフォルトの名無しさん
19/06/05 23:48:39.29 70FqVZZPd.net
いやいや
ここは御大層に「ツール」とか書かれて吹き出す場面だろ

574:デフォルトの名無しさん
19/06/06 00:27:01.25 vR0zkRe5M.net
ここは、あれだ。プークスクス、マジ受けるんですけど!というやつだ。

575:デフォルトの名無しさん
19/06/06 06:36:27.46 ME671i1fx.net
Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ

576:デフォルトの名無しさん
19/06/06 12:05:19.65 vG+mGYiZ0.net
まあな、Excelの標準機能で出来ることも知らん奴が、作りたいものを考えて質問するんだよな
だけど、ちょっと知ったかぶってどんなプログラムを作りたいとか書くけど
普通にExcelの機能で出来ることも、質問してるんだよな
動作仕様をかける奴は普通VBAのマクロも作れる
作れないやつの動作仕様ってごみなんだよな、何がしたいかだけ書けよと思う

577:デフォルトの名無しさん
19/06/06 12:22:02.47 GuX8oFrp0.net
>>576
日本語でおk

578:デフォルトの名無しさん
19/06/06 12:59:11.37 vG+mGYiZ0.net
>>577
すみません、日本語難しいどこですか?

579:デフォルトの名無しさん
19/06/06 15:41:00.01 GuX8oFrp0.net
>>578
天丼やめろw

580:デフォルトの名無しさん
19/06/06 20:23:11.53 ulk3mDRi0.net
日本人の俺でもわからんw

581:デフォルトの名無しさん
19/06/06 22:44:54.22 17p7tBKQ0.net
標準機能が嫌いなんだろう。
あとは、VLOOKUPでも出来るけど、
遅いし面倒くさいからADO+SQLでやるとかさ。

582:デフォルトの名無しさん
19/06/07 01:08:10.00 RApS/5ei0.net
ファイルの保存先の権限がなくて、別のユーザーのアカウントとパスワードで保存できる??

583:デフォルトの名無しさん
19/06/07 07:52:48.12 ONMYVTJLM.net
VBA関係ある?

584:デフォルトの名無しさん
19/06/07 12:45:57.13 6q38d7bCM.net
あるよ

585:中国人
19/06/07 15:55:31.64 DiCkvzGr0.net
ないあるよ

586:デフォルトの名無しさん
19/06/07 20:52:52.69 Xpa0BB/Y0.net
どうやるんだそれ・・。
OS上でOSでも動かすのか?

587:デフォルトの名無しさん
19/06/07 20:58:22.20 hQ9V7YAV0.net
そういや、Windows 3.1はMS-DOSの上で動いていたっけ…

588:デフォルトの名無しさん
19/06/07 21:14:02.26 WJdNdQhR0.net
Win3.1はミドルウェア

589:デフォルトの名無しさん
19/06/07 21:30:42.69 4L9BxcJD0.net
c:¥> win
だっけ?

590:デフォルトの名無しさん
19/06/07 21:36:57.74 fqhLtcXL0.net
フロッピー12枚だか14枚だか組みだったな

591:デフォルトの名無しさん
19/06/07 23:29:54.75 5cD0N+lz0.net
>>582
それってネットワーク先の話?
共有フォルダでの読み書きとか?
結構難しい。

592:デフォルトの名無しさん
19/06/09 05:37:42.55 fRZrFeuoa.net
excelのセルに記載された文字を、
PDFに位置指定して、テキスト挿入できますか?

593:デフォルトの名無しさん
19/06/09 07:51:19.35 6FBaXgmQM.net
できます

594:580
19/06/09 07:52:18.86 6FBaXgmQM.net
>>593
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。

595:デフォルトの名無しさん
19/06/09 08:13:30.81 y15MKF+M0.net
※わざとです

596:デフォルトの名無しさん
19/06/09 08:14:03.36 fRZrFeuoa.net
>>593
a=cells(1,1).value
b=cells(2,1).value
①abc.pdfをオープン
②3p目の左上を起点に左から100、上から50の位置に、8ptで幅20の黒色で、aの内容のテキスト挿入
if b=1 then
③3p目の左上起点の左から200上から300の位置に、黒色の縦10幅10の円を挿入
else if b=2 then
④上記③の位置違いパターン
endif
この①②③を教えていただきたいです。

597:デフォルトの名無しさん
19/06/09 09:04:09.38 LJTYegK80.net
PDF直接作るの超めんどいぞ
Excelで位置確認ずらしていきながら合わせるって方法取ったほうが良い

598:デフォルトの名無しさん
19/06/09 09:27:58.90 fRZrFeuoa.net
>>597
マジかぁ
pdfは書式が既にあって、それをまずエクセル化するところからしなくてはならない
excelのセルから抽出し、wordに入力するのも大変?

599:デフォルトの名無しさん
19/06/09 09:32:56.69 LJTYegK80.net
>>598
Excel VBAでワードを開く方法がある
URLリンク(tonari-it.com)
wordの細かい所をどこまで触るかによると思う
単純作業なら全然難しくないよ

600:デフォルトの名無しさん
19/06/09 09:45:03.10 fRZrFeuoa.net
>>599
ありがとう、ちょっと読み込んでみる
やりたいことは要は、エクセルにずらーっとリストがあって、その内容を、
雇用契約書の穴埋め書式みたいな他のファイル(エクセル、ワード、pdfあり)に展開したい
展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある

601:デフォルトの名無しさん
19/06/09 09:52:34.55 Apn2tV9M0.net
○で囲むのは止めたほうが良い。ずれる
以下のような形に変えれるなら買えたほうが良い。
□男  ?女

602:デフォルトの名無しさん
19/06/09 09:53:01.65 Apn2tV9M0.net
文字化けした。
女の左にあるのはチェックマークね

603:デフォルトの名無しさん
19/06/09 10:05:38.50 fRZrFeuoa.net
>>601
いや、書式はもう決まってんのよ
変えれるものじゃないんだ
□の方が楽だけどなぁ

604:デフォルトの名無しさん
19/06/09 10:07:50.02 qEIP4aE00.net
>>599
参照設定してるのに、CreateObject(“Word.Application”)って何?

605:デフォルトの名無しさん
19/06/09 10:11:05.04 Apn2tV9M0.net
>>603
そうか、じゃぁ・・・
頑張って!!

606:デフォルトの名無しさん
19/06/09 10:13:10.62 47rhBQpmx.net
>>604
参照設定はあくまで参照先ライブラリの型をインテリセンスや型指定でネイティブに使えるようにするための設定
ワードのアプリケーションのインスタンスを生成しないとエクセルからワードの操作はできない

607:デフォルトの名無しさん
19/06/09 10:15:31.89 qEIP4aE00.net
>>606
そういうことじゃなくて、参照設定でその書き方? っていう。
それやると、レイトバインドとアーリーバインド、どっちになるの?

608:デフォルトの名無しさん
19/06/09 10:17:10.52 qQGT2b0kM.net
>>605
最終手段はワードとpdfは画像化してエクセルに貼り付けて、そこでマクロるかな…

609:デフォルトの名無しさん
19/06/09 10:19:23.94 qEIP4aE00.net
>>606
何か変だと思って試したけど、
こうか
Dim w As Word.Application
Set w = New Word.Application
こうじゃない?
Dim w As New Word.Application

610:デフォルトの名無しさん
19/06/09 10:29:49.90 47rhBQpmx.net
>>607
>>609
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない
参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ

611:デフォルトの名無しさん
19/06/09 10:36:03.49 47rhBQpmx.net
というか、参照設定時のインスタンス生成にNew使わないと駄目なんて決まりがあったら、GetObjectで他アプリのインスタンス取得して操作したいときはどうなるのって話になるよな


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch