[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 06/09 23:34 / Filesize : 181 KB / Number-of Response : 617
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part61



1 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:41:03.61 ID:rni/4bMj0.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part60
https://mevius.5ch.net/test/read.cgi/tech/1552736349/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

192 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 20:16:01.36 ID:/nmPTcfU0.net]
>>188
最強はこのページの

<S6> 書式付きセルを除外する (UsedRange)
www.niji.or.jp/home/toru/notes/8.html

ケツから検索して見つかった奴が最後

193 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 21:34:51.98 ID:ZL9lN1sfd.net]
>>191
レスありがとうございます
誘導もありがとう!
じっくり読んでみます。
わからない所があったらまた聞くかもです。
中途半端な理解は嫌だし。さっかりと理解したいし。

194 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 22:33:38.03 ID:Mw5h8bh90.net]
プログラミングを理解するには、読むだけでなくとにかく実際に動かしてみることが大事

195 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 03:15:11.68 ID:04x+b6lna.net]
さっかりなw

196 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 08:20:45.16 ID:0TYDlcnk0.net]
>>194
そうですよね
やらないとわからないがほとんどです(T-T)

>>195
脳内変換ヨロシクです

197 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 19:56:32.57 ID:C94O1bx/0.net]
ADO使うと突然落ちるようになった。
何が原因J?

198 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 20:45:20.04 ID:Y1ZlGg0p0.net]
>>197
プロバイダはなに?

199 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 21:32:42.45 ID:C94O1bx/0.net]
>>198
Microsoft.ACE.OLEDB.12.0
PCによっては普通に実行できるので、原因がわからん。

200 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 21:36:03.53 ID:pbKNvvnGa.net]
質問です。
NumberFormatLocal = “yyyy””年””m””月””d””日””(aaa)”で書式の定義を変更しています。
NumberFormatLocal = ●“yyyy””年””m””月””d””日””(aaa)”

●の箇所に文字列を入れたいのですが”●”を入れるとエラーになります。解決方法はありますでしょうか?



201 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 21:40:16.93 ID:C94O1bx/0.net]
>>200
わからんけど、自動記録でやったものをコピペするとか。

202 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 21:46:39.70 ID:VQwnSTgG0.net]
マクロの記録取ってみたわ
ダブルコーテーションで括った中で、更にダブルコーテーションがいるっぽい
具体てt機にはこう

Selection.NumberFormatLocal = """あ""yyyy""年""m""月"""

203 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 21:46:58.83 ID:pbKNvvnGa.net]
>>201
解決しました。ありがとうございました。

204 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 02:13:17.21 ID:anQ1bE+S0.net]
もしかして、Access2016が入ってると、
Excel2013ではADO接続使えない?

Excel2013からAccess2016の参照で落ちるケースはググって見つけたけど、
ウチのはExcel2013からExcel2013で落ちる。

205 名前:デフォルトの名無しさん [2019/05/12(日) 02:35:46.96 ID:0u/cIV/f0.net]
>>190
データとしてExcelを使う場合と、ドキュメントとしてExcelを使う場合とで、考え方がかわる。

206 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 08:45:07.80 ID:OK9Y1i2P0.net]
>>204
win下をdll検索して、複数見つかったらそれぞれ直接参照設定してみるとか
(単体で動いてるわけじゃない気もするから、期待薄かもしれんけど)

207 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 12:05:15.73 ID:anQ1bE+S0.net]
>>206
それもダメだったから、諦めてExcel2019買ったわ。
それだと普通に動いたから、
やっぱりExcel2013とAccess2016の組み合わせがダメだったみたい。

ありがとう。

208 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 16:17:36.32 ID:UM6bazI+0.net]
32ビット版だったとか?

209 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:19:48.24 ID:anQ1bE+S0.net]
>>208
Excel2013 ・・・ ADO接続OK
   ↓
Excel2013 + Access2016 ・・・ ここで突然落ちるようになる
   ↓
Excel2019 + Access2016 ・・・ 直った!

全部32bit。
本当は64bitにしたかったけど、ListViewとか、
一部使えなくなる機能があるので諦めた。

210 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:21:42.38 ID:anQ1bE+S0.net]
あ、Excel2013 + Access2016って、インストールの組み合わせ。
別に、Excel2013からAccess2016に接続しに行ったわけじゃない。
落ちたのは、Excel2013からExcel2013へのADO接続。



211 名前:デフォルトの名無しさん [2019/05/12(日) 17:23:44.21 ID:0u/cIV/f0.net]
なんの話をしているのか他人にはさっぱりわからないw

212 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:10:56.69 ID:w16fcO4J0.net]
時刻がマイナスの場合

とは、if文でどうやってつくりますか?

213 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:20:18.19 ID:O1RPDIWFM.net]
>>212
マイナスの時刻など存在しない
If 1 = 2

214 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:23:52.94 ID:w16fcO4J0.net]
A−B=C

時刻の差のCがマイナス表示されるセルを

if文で
00:00:00
に直したいです

215 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:30:53.16 ID:O1RPDIWFM.net]
>>214
=TEXT(MAX(0, C), "hh:mm:ss")
VBAは要らん

216 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:33:52.80 ID:w16fcO4J0.net]
セルの設定ですね。
ありがとうございます。

217 名前:デフォルトの名無しさん [2019/05/12(日) 20:06:16.73 ID:0u/cIV/f0.net]
プログラミングの初歩は大事なんだと思ったよ。

ある値のときは00時00分00秒にするという分岐を思いつかないんだから。

218 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 20:51:34.11 ID:JDMVXB4ua.net]
まあMIN/MAXを使って値をキャップするのは正統なプログラミングでは非常によく使われる方法だけど、
事務屋さんには意外と思いつかないかもね

219 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 21:54:23.80 ID:UM6bazI+0.net]
普通に時刻どうしで比較できるから、3分前とかそういうことかと思ってた

220 名前:デフォルトの名無しさん [2019/05/12(日) 22:49:25.28 ID:0u/cIV/f0.net]
>>210
Office製品は基本的にバージョン違いを混在させられるようにはできていない。



221 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 07:47:02.77 ID:J0xiSM4lM.net]
>>220
そんなことはなくて条件満たせば使えるよ
https://www.microsoft.com/ja-jp/office/homeuse/attention4.aspx

222 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 09:04:58.38 ID:bJahx30bM.net]
>>219
時間と時刻

223 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 09:19:29.85 ID:OGTR1ISy0.net]
その前にいきなり時刻とか言い出した辺りでダメダメ。
人間が時刻と思ってるだけの可能性がある。

セルの書式や変数の型を元に説明しないのは、人間の目線で時刻と言ってる証拠。

224 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 13:56:52.37 ID:p6Zrf1zY0.net]
シャープで囲んでる人はちょっと

225 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 14:34:08.69 ID:/2MppI/1M.net]
VBAでは時刻と時間を Timeでずっとやり繰りしてたのに、c#で TimeSpan発見したときは叫んだわ

226 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 16:36:40.35 ID:N0Eopnbu0.net]
え?エクセルをADOでデータベースみたいに扱うこともできるの?

227 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 17:03:08.67 ID:P7TvqqIDM.net]
>>226
ちゃんと形式を整えておけば単純なSELECTなら使える
WHEREが機能するだけでOKってことならまあまあかな
JOINとかは当てにならないような気がする
DELETE, INSERT, UPDATE はもっと当てにならない

228 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 19:21:33.24 ID:t89inGVt0.net]
あてにならないってなんやねん

229 名前:デフォルトの名無しさん [2019/05/13(月) 20:44:43.21 ID:/95lNMvTM.net]
>>228
他人だけど、ExcelのSQL操作はおまけ機能だから、標準SQLに対応してないから、やってみないとわからない。

230 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 21:00:39.75 ID:N0Eopnbu0.net]
まぁできちゃったらアクセスの立場ないわな



231 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 21:02:14.05 ID:icbU5YOt0.net]
SQL自体もう色々派閥が分かれすぎて

232 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 21:06:25.95 ID:adbFFiEz0.net]
>>229
馬鹿は死ねや
Accessのエンジンと同じだろ

233 名前:デフォルトの名無しさん [2019/05/13(月) 21:10:27.82 ID:/95lNMvTM.net]
>>232
バージョンを気にしてくださいw

234 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:16:41.75 ID:ErXZ/V3c0.net]
>>226
出来るよ。
普通はやらないだろうけど、会社のPCにAccessが入ってないとか、
Accessは入ってるけど、事務のおばちゃんがExcelにしがみついて、
意地でも離さないとか、そういう状況で使える。

>>227
JOINは普通に使える。

235 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:42:40.28 ID:ATfYCMP60.net]
>>234
そうか、JOINも普通にできるのか...

「Excelもデータベースとして有効に使えるよね」なんて方向に行って欲しくない、という願望が
俺の心の中にバイアスを生んだようだ

236 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 23:05:59.93 ID:RqskJpspx.net]
というかPowerQueryやDAXでデータベース的な使い方が出来てしまうからな今のExcelは

237 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 23:39:26.70 ID:N0Eopnbu0.net]
エクセルでできるってすごい!
そこで疑問に思ったんですが以下のVBA書いてみましたが

Dim adoCn As Object
Dim adoRs As Object
Dim strSQL As String
Dim DBpath As String

DBpath = ThisWorkbook.Path

Set adoCn = CreateObject("ADODB.Connection")
Set adoRs = CreateObject("ADODB.Recordset")
adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DBpath & "\SampleData.xlsx;"←@

strSQL = "select A,B,C from シート名 order by A desc" ←A
adoRs.Open strSQL, adoCn

*何か処理

adoRs.Close
adoCn.Close 'コネクションのクローズ
Set adoRs = Nothing 'オブジェクトの破棄
Set adoCn = Nothing

@について
プロバイダーとファイル指定の記述の仕方はあってますか?
Aについて
列の指定とfromの方法は?

教えてください<(_ _)>

238 名前:デフォルトの名無しさん [2019/05/13(月) 23:43:46.08 ID:4/CDP/BQ0.net]
秀和システムでいいから、古本を買って読めよw

ちゃんとサンプルが書いてある。アマゾンの古本は激安だぞ。

239 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 23:45:48.17 ID:N0Eopnbu0.net]
エクセルをデータベースとして使う記述があるのがどの本なのかさっぱり・・・
できれば本教えてもらえませんか?

240 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 23:47:08.95 ID:adbFFiEz0.net]
>>233
馬鹿は死ね



241 名前:デフォルトの名無しさん [2019/05/13(月) 23:49:20.76 ID:4/CDP/BQ0.net]
>>239
Google検索でもサンプルは山のようにあるぞ。

242 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 00:09:21.56 ID:XEzOoRRL0.net]
ちょっとググって見ます

243 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 00:15:14.20 ID:a29jNOd40.net]
>>237
何通りかあったと思うけど、
その書き方だと[Sheet1$]かな。

プロバイダーも、adoCn.Providerにも、adoCn.Openにも書ける。
ブック名をFromの後に書く方法もある。

組み合わせは忘れたけど、どこかで指定していれば、
別の部分では省略できる感じ。

244 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 05:07:41.34 ID:XEzOoRRL0.net]
>>243
なるほど、勉強になります

245 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 19:07:26.92 ID:wEGsmpoqp.net]
https://dotup.org/uploda/dotup.org1847293.xlsx.html
東京・大阪・北海道の各出発時間・到着時間を黄色い部分に「sendkeysで」、「それぞれ東京・大阪・北海道の順序を守って」入力したいです
実際にsendkeysでキーを送るのはブラウザ上のフォームであり、東京の時刻入力→tabとenterをsendkeyしつつ次のページに移動→大阪を入力、という風に処理するため、順序等が変更できません
また入力するのが東京・大阪・北海道だけでないかもしれないので、記載がある行すべてというイメージでお願いします

excelスレでも質問してみてますが、vba専門スレがあることに気付かされたのでこちらでお世話になります

246 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 20:14:46.00 ID:Bsz/IupB0.net]
だから、Sendkeysはやめろって。

これはお手軽にその場だけデータを取りたい時なんかに使うけど、制御出来ないから普通は使うべきじゃない。

247 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 20:18:43.38 ID:wEGsmpoqp.net]
もちろんそうなんですが自分には IE操作は敷居が高くて、愚直も愚直にsendkeysしか手段が思いつかないもので・・何か代替案ございますか?

248 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 20:22:02.95 ID:9TMbmfYm0.net]
どう考えてもIE操作の方が敷居が低いんだが

249 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 20:23:00.65 ID:9TMbmfYm0.net]
inputに文字列入れるだけだろ?
ソース見てidだかclassだか取得してポイって入れるだけじゃん

250 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 20:25:50.88 ID:wEGsmpoqp.net]
それがよーわからんのです・・
とりあえずググってすぐ見つかるサイトで特に初心者にわかりやすい解説してるサイトでも教えていただけませんか?



251 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 21:33:16.75 ID:wEGsmpoqp.net]
IE操作で頑張ってみてるんですが、リンクオープンして開いた別窓を操作するにはまたhtmldocにobjIE.documentを代入して・・ってしないといけないんですか?

252 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 21:59:36.21 ID:IyB4HHSk0.net]
>>251
別窓にしちゃう(なっちゃう)とそのウィンドウを探して、html取ってくることが必要になるので、できるなら避ける。

IE VBA
でググれば、参考サイト出てくる。あとは応用しだい
IEでは F12で開くやつも有用

がんばれ

253 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 22:06:13.16 ID:wEGsmpoqp.net]
>>252
社内システムなので必ず別窓になっちゃう仕様です
htmlの取り方教えてもらえませんか?

254 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 22:31:09.98 ID:a29jNOd40.net]
>社内システムなので

多分、このスレ見てる全員ズコーだわ、そのオチ。
システム部門の人に聞いちゃダメなんかい。

255 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 22:36:33.89 ID:s0Vi/y5R0.net]
CreateObject("Shell.Application").Windows() から探す

256 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 11:39:56.68 ID:a1IyAHl+r.net]
excelマクロでのバージョン管理てどうすればいいん
言われるがままに集計マクロ作ったら担当者毎に持ってるマクロのバージョン違ってあの機能が無いとか特殊な状況でエラー出る→それ先月直しましたよ
が頻発してる

257 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 12:20:32.52 ID:5BGNguvP0.net]
>>256
サーバー上にマクロ専用のエクセルファイルを置いて、
個々に配っているファイルからはそのマクロを参照させる

258 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 12:51:40.47 ID:YRbGgWK/M.net]
>>257
基本それだが、ずっと掴んでるやつがいるとバグ修正や機能追加のときに困る

259 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 14:16:39.46 ID:5BGNguvP0.net]
>>258
読み取り専用にしてもダメか?

260 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 14:16:55.41 ID:5BGNguvP0.net]
もちろん自分が編集する時は読み取り専用解除ね



261 名前:デフォルトの名無しさん [2019/05/16(木) 14:43:29.72 ID:wWtnEH3A0.net]
コード書く画面を
背景は黒に、文字は白に、する方法を教えれ

262 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 15:42:20.38 ID:Z2BhGmok0.net]
ツール -> オプション -> エディターの設定

263 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 16:12:18.52 ID:BYfNVo3YM.net]
>>256
OS起動したら、サーバからコピーしてくるバッチ等を走らせる
小さいならいちいちバージョン確認しなくてもよい

264 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 18:04:23.53 ID:rNkkKl6PM.net]
みんな一々シャットダウンするのか?
スケジュールでコピーだろ

265 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 18:58:39.63 ID:5BGNguvP0.net]
>>>261
これ
https://tonari-it.com/excel-vba-vbe-syntax-highlight/

ちなみに書くとこはVBEって言うから覚えておくと検索できて便利

266 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:18:23.52 ID:UtWIeHx/p.net]
マクロ終了時にマクロ開始から終了までにかかった時間が秒までメッセージボックスに表示するってできる?

267 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:18:36.52 ID:rD+4K505M.net]
>>264
個々人のローカルフォルダにxlam があってそれが定期的に書き換えられるって事?
他のブックがxlamを掴んでる最中でもできる?

268 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:23:31.84 ID:UPwRXvuL0.net]
>>266
できる

269 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:26:21.47 ID:5BGNguvP0.net]
>>266
楽勝

Sub foo()
開始 = Now
'処理
終了 = Now
MsgBox Format(終了 - 開始, "hh:mm:ss")
End Sub

270 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:26:44.10 ID:5BGNguvP0.net]
>>268
URL春だけでもいいから教えてあげたらw



271 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:31:25.53 ID:UtWIeHx/p.net]
>>268はなんとかookスレで最近流行りの流れだよw
>>269ありがとう!

272 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 20:10:17.30 ID:rNkkKl6PM.net]
>>267
掴んでたらスルー

273 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 22:17:19.76 ID:aE3zz80C0.net]
>>256
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。

で、更新させたい時は、わざと参照用ファイルを消しておく。

274 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 22:24:00.58 ID:yzKWQsxd0.net]
>>273
xlamを共有するならそこのWorkbook_Open にそういう処理を入れておけばいいでしょうね

275 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 23:04:51.54 ID:kfbhC4dW0.net]
>>256
最新バージョン書いたテキストかなんかを共有に置いといて、起動時に見に行ってそれより古かったら更新促す警告出すとか

276 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 02:52:09.97 ID:gYF5enuVM.net]
Excelの起動時、マクロを実行させる:Excel(エクセル)マクロ
https://www.excel.usefulhp.com/excel-macro/excel-macro50.html
で良いだろ

277 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 09:22:35.60 ID:YDbG3YPmr.net]
共有パス見て実行とか大変そう面倒そうて主観があったけども
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう

278 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 09:26:03.52 ID:PC2o5teB0.net]
>>277
そっちは使わないかな
俺はボタンにマクロの場所を登録する

279 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 09:26:30.66 ID:PC2o5teB0.net]
なんか日本語変だ
まぁいいか

280 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 12:25:15.46 ID:cM5KCNydp.net]
ちょっと筋外れるかもしれないけどvbeに行間なく詰めて書いたコードの選択範囲に1行ずつ改行入れるいい方法ない?



281 名前:デフォルトの名無しさん [2019/05/17(金) 12:28:45.29 ID:gxvYGXpT0.net]
そんなのできない。サクラエディタで置換して貼り付けろ

282 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 22:00:27.88 ID:BHkVW2uG0.net]
>>280
VBEを操作すればできると思う。面倒だけど
まあ>>281の方法が合理的だろうな

283 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 00:21:37.50 ID:qrQ2t1Xp0.net]
>>280
改行コードを改行コード+改行コードで置換

284 名前:デフォルトの名無しさん [2019/05/18(土) 00:55:20.52 ID:pDLl57eM0.net]
コードウィンドウ内の改行はCRLFじゃなくてLFだった筈。
そんなに難しくない。
でもこれが動く設定はマクロウィルスも動くから危険だよ。

Sub test()

Dim strCode As String
Dim stRW As Long
Dim stCL As Long
Dim edRW As Long
Dim edCL As Long

With Application.VBE.ActiveCodePane
.GetSelection stRW, stCL, edRW, edCL
strCode = .CodeModule.Lines(stRW, edRW - stRW + 1)
.CodeModule.DeleteLines stRW, edRW - stRW + 1
.CodeModule.InsertLines stRW, Replace(strCode, vbLf, vbLf & vbLf)
End With

End Sub

285 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 19:27:39.15 ID:4RzeW/b40.net]
専用のメソッドがあるのが凄いわ。
何を想定して用意してあるんだろう?
プログラムがプログラムを書き直すAIにでも使うのか?

286 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 20:16:07.59 ID:8gQadrhx0.net]
Application.VBE.ActiveCodePane
こんなの合ったのか
PaneはPanelかと思ったら、ペインの事なのね

287 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 20:29:02.38 ID:P5JmHxRDM.net]
VBEを拡張するためのオブジェクト群が用意されてるんだよね

288 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 09:22:38.02 ID:MCPGuHEx0.net]
Excel4マクロは自己書き換え自由だったから
機能的に負けるわけにはいかなかったんじゃね?

289 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 11:43:42.11 ID:1xMNIuy/x.net]
配布済マクロの修正パッチとかで大量のファイルや行を一括修正したいときは便利

290 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 12:03:05.34 ID:igxNvdy7a.net]
単価の低そうな涙ぐましい仕事だな



291 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 12:39:30.70 ID:gILK5dpZ0.net]
マクロ4はできる人がいない+やりたくないから単価超高いぞ
で、単価高くしても足が出る・・・

292 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:13:05.44 ID:7gg6L6p3p.net]
実行から終了まで数分かかるマクロを途中で止める方法ないですか?f4押したら「処理を止めました」のメッセージボックスとともに停止するとか。

293 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:31:11.94 ID:OX+uPiO40.net]
Break
ESC

294 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:37:07.71 ID:K+4dE9j10.net]
ループが長いならDoEvent入れておいて
msgbox "終了します"とendだけ書いたのを起動できるボタンどっかに置いとけばいい

295 名前:284 mailto:sage [2019/05/21(火) 20:04:23.19 ID:MD1oUmkY0.net]
ESCやBreakで止まるなら良いけど、それで止まらない処理ならウィンドウESC押しながらタスクバー上でマウスでウィンドウの切り替えをすると止まる。

どっかのブログで見て知ったけど役に立ってる。

296 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 21:15:28.57 ID:QvaiZxJv0.net]
こうする
https://youtu.be/h-xo-5krq2Y

297 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 21:30:20.69 ID:7gg6L6p3p.net]
ほー
明日試してみます

298 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 22:08:13.75 ID:R92gi7e40.net]
2009/12/16に公開って何だよ。
20年くらい前に見たぞそれ。

299 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 06:58:44.20 ID:SD95iW5CM.net]
>>298
映像はどうみても20年以上前だな
的確な対応で現在も使える

300 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:27:28.15 ID:ztZYN21m0.net]
セルの値を数式に代入って無理でしょうか?
たとえばA1セルに乱数が入ってた場合に
どっかのセルに =A2-乱数 という数式を代入したい感じです



301 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:41:17.90 ID:5+y7OppMM.net]
=A2-A1

302 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:43:43.65 ID:ogyeLG/uM.net]
演算あり値コピーの話?

303 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:52:11.18 ID:AHnUJ8Jk0.net]
いやセル番地じゃなくて値を数式に代入したい感じです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入

A1セルが387だとしたら
=A2-387

説明下手糞で申し訳ないです

304 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 09:54:20.78 ID:hC9fKDDe0.net]
>>300
書いている意味がよくわからんど
セルに式でも値でも代入できる
ただ、乱数は曲者で常に変わるから
もう少しやりたいことを具体的に書き込もう

305 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 10:00:56.85 ID:hC9fKDDe0.net]
>>303
乱数は曲者で
A1セルが387だとしたら
=A2-387
ほかのセルに「=A2-387」を入れた時点でA1セルは変わるから
もう少し何をしたいのか書くように

306 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 11:59:27.46 ID:zi+TqRd2r.net]
そもそも数式はスレ違いだろ
VBA関係ないならどっかエクセルの使い方の板かスレかさがせ

307 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 13:17:58.06 ID:/GezpU1zp.net]
>>305
A1セルの乱数結果が現時点で387だとしたら
変数(仮にrとする)に、387を格納して
ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事?

それなら確かに関数じゃできないよね

308 名前:284 mailto:sage [2019/05/22(水) 13:58:22.19 ID:WDej9GuM0.net]
>>303
Range("C3").Value="=A2-" & Range("A1").Value
じゃ駄目?

309 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 16:05:46.41 ID:hC9fKDDe0.net]
>>307
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな

310 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 18:12:45.70 ID:j7jZt3jJM.net]
説明下手糞ってレベルじゃねぇぞ…



311 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 18:48:51.39 ID:RRuRLAJCM.net]
>>309
ちょっとしたシミュレーションで使うかもしれない。(Excelでやるとは言ってない)

>>302じゃダメなの?

312 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 19:16:53.47 ID:CZzIGWUTM.net]
>>311
ちょっとしたシミュレーション・・無いだろ
この文書力だとセルに入れたい式って
計算式の文字列かもしれん

313 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 22:59:24.50 ID:bxcYYOqD0.net]
もうあれだ。
ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。

314 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 23:13:17.16 ID:K7mhmRd90.net]
完全乱数を使って円周率の計算をする

315 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 07:43:57.81 ID:mLR+BkfhM.net]
別に用途は何でもいいさ
興味ゼロってわけじゃないけど

316 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 10:22:05.81 ID:WDXUv9KM0.net]
こっちで作って欲しいと言われたものをつくってると
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう

っていうことないっすか

もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって

317 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 10:56:07.55 ID:cSCM+dO10.net]
厚労省で配布されている
https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/000116890_00001.html
にある
https://www.mhlw.go.jp/content/10900000/000494621.xlsm
なんだけど、内容は単純で

1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの
1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る
VBAで各シートを集計して総括表に転写する

なんだけど、VBAみて
変数が多すぎてコーディング中に間違えても気づかんだろってのと
引っ張ってくるセルをConstで決め打ちしてるけど
これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。

というか、エラーメッセージの所で間違えて
行を表示すべきところを列表示しているけど
これこそ変数多すぎて分かりにくくした事が原因だと思います。

じゃあどうする、と言われたらみなさんならどうしますか?

同じ形の複数の2次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが

後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね

318 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 11:43:15.47 ID:mLR+BkfhM.net]
>>316
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。

こういう話もあるし
https://lite.blogos.com/article/376203/

319 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 16:11:36.77 ID:hFcQqqxb0.net]
>>316
ただ単純に業務全体を見ずに作るから役に立たないんだよ
業務に対して目的と効果を文書ではっきり示せば古参の意見を聞かなくていい

320 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 16:13:59.49 ID:X/3FpVKz0.net]
>>316
その古参の上司に報告しろ



321 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 16:14:38.98 ID:hFcQqqxb0.net]
>>317
すまん、リンク先を読む気もしない

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

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

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

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

326 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 21:06:10.14 ID:X/3FpVKz0.net]
>>325
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度

面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい

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

328 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 22:27:50.56 ID:49rcJhkB0.net]
>>317
コンスト過ぎてワロタ。

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

330 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 01:42:55.95 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 01:44:27.87 ID:9kKOGm+S0.net]
あ、Ifの末尾のThen忘れたので脳内で補完してください

332 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 06:40:29.33 ID:/lvzTPqGM.net]
>>331
ハイ イイエ が逆なのも利用者が自動変換するんですね

333 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 06:54:20.73 ID:/lvzTPqGM.net]
>>332
すまん、継続がキャンセルか

334 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 09:59:52.88 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 07:54:51.56 ID:TRopVMeK0.net]
アドインって、ファイルを閉じたら、
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。

336 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 08:55:38.15 ID:nkVbmNSl0.net]
vba実行中というかずっと残るっぽい

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

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

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

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



341 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 15:23:19.13 ID:/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 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 15:41:58.63 ID:/taseRUt0.net]
関数呼び出しではなくマクロやボタンクリックでなら問題なかったので
そっちの方法に切り替えますすみません

343 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 06:52:50.90 ID:lha2yOvQp.net]
入力項目を複数用意したinputboxって作れますか?

344 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 07:55:59.33 ID:6csejWaN0.net]
>>343
どんなものを考えているんだ

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

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

347 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 08:37:02.21 ID:jh6nOFVKM.net]
Excelの勉強不足だろ

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

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

350 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 10:37:56.08 ID:6csejWaN0.net]
おだてるの意味間違えてるよ。



351 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 10:41:41.92 ID:W0zr6KdF0.net]
>>350
いや〜そうでもないよ
理解力は両方とも0.1%〜0.01%程度と思ってたから

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

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

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

355 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:00:43.29 ID:zUYqf9yC0.net]
>>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。

あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。

疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。

技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。

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

357 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:38:46.48 ID:YnNlAtYud.net]
>>356
そうくると思ったw

358 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:55:28.65 ID:W0zr6KdF0.net]
>>355
具体的に簡単にできる方法を説明してやれよ

359 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 14:59:26.84 ID:6csejWaN0.net]
>>358
まだ出せない
要件定義ができていないので、そもそもどういう設計が最適かも分からない
現状のまま作るのはめんどくさすぎる

具体的に言うとデイトピッカー、お前だ

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



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

362 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:29:12.90 ID:W0zr6KdF0.net]
>>361
だったら適当にすれば(笑)

出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな

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

364 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:42:22.97 ID:6csejWaN0.net]
>>362>>363
韓国人?

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

366 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:44:13.29 ID:W0zr6KdF0.net]
>>364
きみはハエかカエル?

367 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:45:54.11 ID:W0zr6KdF0.net]
>>365
ハエかカエル?
しかたないな

368 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 15:53:54.48 ID:6csejWaN0.net]
おだてる・・・w

369 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 16:04:29.34 ID:6csejWaN0.net]
これ以外の高速化ってありますか?
https://15g.jp/post-314/

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



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

372 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 16:43:14.09 ID:2J++TcAHM.net]
再描画を止めるのは好かんな

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

374 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 17:53:10.57 ID:aE9KPqY2M.net]
変更のないセルはかきかえない
変数の型をこていするかな

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

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

377 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 20:29:10.36 ID:eWpgS1rnF.net]
高速化については下記が参考になる。

https://excel-ubara.com/excelvba4/EXCEL228.html

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

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

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



381 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 22:07:18.66 ID:9GzIJnKt0.net]
何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww

いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。

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

383 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 08:43:02.61 ID:8P1bQTIM0.net]
入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。

Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。

384 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:44:28.89 ID:CE2aKfrCH.net]
初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない

どんな時に便利なの?

385 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:47:42.25 ID:rhAlx8Ij0.net]
>>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ

vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね

386 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:55:56.33 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:56:25.54 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 10:10:54.71 ID:CE2aKfrCH.net]
>>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?

コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?

そういやfunctionを関数みたいに使う場合もあると聞いたな

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

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



391 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 11:26:30.05 ID:CE2aKfrCH.net]
>>389
あーその説明で分かった ありがとう

たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ

392 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:23:13.41 ID:1q3vxt7ga.net]
OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします

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

393 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:47:38.41 ID:i1bbppKtM.net]
>>392
ウィルスメールの作成方法きいてる様なもんだなw

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

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

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

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

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

399 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:01:27.19 ID:8P1bQTIM0.net]
>>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。

あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。

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



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

402 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:34:43.00 ID:8P1bQTIM0.net]
>>401
必要なんだが。

403 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 15:27:43.49 ID:m2eXkVaQM.net]
初心者お断りな質問スレが存在した…?

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

405 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 15:57:40.29 ID:JWvhlEsx0.net]
>>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。

VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m

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

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

408 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:23:49.73 ID:PIv3udRAr.net]
i=の行をloopの中に入れる

409 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:25:13.81 ID:PIv3udRAr.net]
その上のtempaddressも

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



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


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

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

413 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 19:42:52.66 ID:ID0apHa80.net]
ところでここは「Exce VBA」の質問スレ

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

415 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 22:28:38.54 ID:6NK7Ep/b0.net]
>>384
functionなら1行で書ける!
と思ったけど、よく見たらどっちも2行かかるな。

Dim A
A = function()

Dim A
sub(ByRef A)

functionのメリットって何だろ?
1個しか返せないし。

416 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 22:45:21.26 ID:g3Ue34fJ0.net]
>>415
馬鹿はいい加減黙れよ

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

418 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:03:25.05 ID:sz8y6/Um0.net]
>>416
容赦なくてワロタw

>>415
If func(x) Then
とか

func1(func2(a), func3(b))
とか

419 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:15:31.12 ID:MN8nEIAEd.net]
>>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。

何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。

>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。

420 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:18:36.46 ID:MN8nEIAEd.net]
>>418
むしろ

Function Hoge(Arg() As String) As String()

の方が適切かな。

或いは
Function Hoge(Arg() As String) As Collection

とか。



421 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:45:10.83 ID:sz8y6/Um0.net]
>>419
AddressOf で関数を返すことすら出来るのだ

422 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:58:45.95 ID:0rD99vo/0.net]
IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)

むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう

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

424 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:03:33.14 ID:6UUzdaAE0.net]
BASICなんだからGOTOだけで十分

425 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:47:16.25 ID:aQ2xiGWFd.net]
>>421
おう、ここで初めて高度な話を見た。

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

427 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 04:29:34.43 ID:WducifPVa.net]
subじゃ1個も値返せないじゃん

428 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 05:02:37.42 ID:E4T3mNp50.net]
戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた

subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。

ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。

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

430 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 08:57:09.71 ID:dT9QfEjx0.net]
>>429
正解

Sub foo() '単体実行可能
End Sub

Sub bar(baz) '単体実行は出来ない
End Sub



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

432 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:10:25.71 ID:QQeifizk0.net]
セルに式として関数を入力して呼べるFunctionと呼べないSub

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

434 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:30:42.49 ID:dT9QfEjx0.net]
基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない

と考えると自然と思うんだけど、どうだろう

この考えだと、private subは使うべきじゃないって事になる

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

436 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:30:55.13 ID:zbMbGE8SM.net]
>>426
戻り値のないFunctionは存在しない
戻ってきた値を無視することができるだけ

つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる

437 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:31:54.96 ID:WZbm0MMEM.net]
Excel長老の話って知ってる?

438 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:32:51.36 ID:WZbm0MMEM.net]
>>436
メモリ効率ってネタだよね?

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

今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない

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



441 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:48:47.33 ID:WZbm0MMEM.net]
>>440
「ヒープ」ってネタだよね?

442 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:53:59.73 ID:dT9QfEjx0.net]
>>439
ありがとう!そういう事か
sub便利だけど、便利過ぎてかなり変な事になってるね
subから呼び出すのはfunctionと決めていれば良いんだろうけど、
でもsubからsub呼び出す事もあるから・・・
結局subって意味なくね?

C言語のsub無しが正解のような気がする。

>>441
なんでネタと思うんだ?

443 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:58:48.77 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 13:23:20.90 ID:AfH1iVf/M.net]
Selenium+vbaを使って
ChromeでWebページをPDF保存することは可能でしょうか?

445 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 13:29:26.76 ID:dT9QfEjx0.net]
>>444
vbaは不要っぽい
takuya-1st.hatenablog.jp/entry/2017/06/21/140000

記事が古いから一度試したほうが良いと思う

446 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 13:43:28.26 ID:aQ2xiGWFd.net]
>>442
だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。
意味的にというのは人間の感覚にとって合った方を採用すべきということ。

Cだってvoidがあるじゃねーの。
無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。
なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。

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

448 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 17:40:58.36 ID:S0wmSPvZ0.net]
プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい
大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、
経験上、カプセル化した方が結果的に安全で能率がいいということになっている

そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな
だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ

複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える

449 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 18:50:10.49 ID:b/xKBA/BM.net]
>>445

SeleniumではなくSeleniumBasic
の間違えでした。
ごめんなさい。

450 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 18:57:16.16 ID:dT9QfEjx0.net]
グローバル汚染はマジでエグいからな
「name」「mail」この変使われてたら超めんどい

>>449
Selenium使えばいいんじゃない



451 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 19:33:05.85 ID:gbtQDfh8M.net]
seleniumってもう使い物にならなくなってなかったっけ

452 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 00:50:17.75 ID:oM5Ks3kV0.net]
>>440
ヒープとスタックの違い理解してる?

453 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 03:19:10.04 ID:1qsenVBka.net]
byref もあるしな

454 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 08:21:00.17 ID:oyMl0bcF0.net]
>>452
それって日本昔話に載ってる?
今も気にすること?

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

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

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

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

459 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:56:24.47 ID:86kk1xI3a.net]
ここできいていいのか分かりませんがマクロの組み方で教えてください

「=5月シートA1」
「=5月シートA2」
みたいに引っ張っているセルを
「=6月シートA1」
「=6月シートA2」
みたいに変えるマクロを組みたいんですが

それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?

理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。

説明が下手ですみません。

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



461 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:12:37.62 ID:3bWSKYGBM.net]
>>459
5月シートをコピーして6月シートにする。
5月を6月に文字列全置換え

処理日によって月を自動判定でもいいが、フォームで値を確認、修正後に実行の方がいいんじゃないかな

462 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:18:06.10 ID:86kk1xI3a.net]
>>460
すみません初心者なので詳しくは分かりませんが、今の月を参照するセルを作り、それをコピペするように組めばいい感じでしょうか。
間違ってたらすみません。

>>461
今まではそうやっていたのですが、それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。

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

464 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:38:13.64 ID:86kk1xI3a.net]
>>463
ありがとうございます。
試してみます

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

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

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

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

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

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



471 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:20:16.63 ID:xVkqny4q0.net]
>>470
> なんか、今月にこだわる人多いが

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

473 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:36:26.16 ID:iXFRocgY0.net]
あら〜ダブって入ったわ すまぬの

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

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

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

477 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:02:31.59 ID:kMeHCJPt0.net]
>>474
数式だけならファイル形式をxlsxのままにできて安全
同じ機能なら数式で済ませた方が良いだろう

家計簿ならどっちでも良いのは間違いない

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

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

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



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

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

483 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:31:43.08 ID:xVkqny4q0.net]
>>482
>>459 > 毎月自動で7月、8月、と月に合わせて変える
 >>468 > 今月にこだわる人多いが
>>462 > その置き換えも合わせてマクロにしたい
 >>472 > こんなのマクロなんか書いたら笑えるレベル

一部読み飛ばして回答してしまうのはなんなのネタなの

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

485 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:37:34.60 ID:iXFRocgY0.net]
>>483
別に、マクロで提案してみたら

486 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:54:17.71 ID:jiw85AG60.net]
自動車つくれなくても、つくってもらって乗ればいいじゃん

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

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

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

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



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

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

493 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 14:14:55.01 ID:kMeHCJPt0.net]
普通のExcelスレはあんなに紳士的なのに・・・

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

495 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 14:48:52.06 ID:2f7ZWXQQ0.net]
>>494
>>459>>462でマクロでやりたいと言ってるし、
マクロ以外の回答に対してノーリアクション
数式での回答を求めてないのだろう。結果を求めるだけじゃなく、マクロ自体を書きたいという質問者もいるわけだしな
あまり押し付けるのもどうかと思う

もちろん一般的な場合は君のやり方が正しいのは明らか
さすがにそれが分かってない人はいないだろう

496 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 15:04:15.42 ID:jiw85AG60.net]
>>462
削除等はマクロで、他シート参照は数式でいいんでないの

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

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

499 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 16:31:39.12 ID:Q8fJ9KqCF.net]
元々の質問を見る限り、詳細が無いのでVBAで解決すべきか数式で解決すべきか判断できん。

逆に言えばこれだけの情報でVBAを必要無いとか言ってしまえる人って初心者とまでは言わないけど大したスキルは無いんだろうなと思ってしまう。

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



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

502 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 17:12:13.76 ID:agbDawORM.net]
>>501
いまだにVBAでの回答すらないけどね

503 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 17:17:59.31 ID:Q8fJ9KqCF.net]
>>502
俺はこんな質問に回答しないよ。
何処の掲示板でもそうだけと面白いテーマじゃなきゃ回答しない。
俺が回答する必要も無いだろう。

>>460とかを見てどうにか頑張れば良いんじゃね?と思ってる。

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

505 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 17:33:03.28 ID:NquLpIx1r.net]
てか>>464で終わっとるやろ…

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

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

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

509 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 17:44:39.75 ID:2P/bRCUed.net]
>>507
じゃあ、俺に>>502のレスするんじゃね―よw

510 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 17:46:18.67 ID:a67Z5WHaM.net]
>>499
ほんそれ
ど真っ赤で力説してるのが滑稽やなw



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

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

513 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 19:22:19.42 ID:2P/bRCUed.net]
>>511
???

">>501"を付けるなと言ってる。

514 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 20:32:30.11 ID:XAbM3vU30.net]
>>481
dim ws as worksheet
for each ws as thisworkbook.worksheets
 ws.printout 〜
next

515 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 20:58:10.12 ID:wdWzuIo7p.net]
>>514
大荒れの中レスありがとう
来週試してみます

516 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 22:18:19.39 ID:XAbM3vU30.net]
>>515
ごめん for each ws in の書き間違い

517 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 22:31:58.82 ID:aMsRRK9D0.net]
ん?
全シート印刷じゃダメだったの?

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

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

520 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 02:54:17.07 ID:48zxZgqm0.net]
ListBox使ってるんですけど、たまに表示がバグります
薄い横線がListBox内の全ての行間に表示されちゃうんです
行のフォーカスを動かすと、動かした範囲ではこの変な横線は一旦消えるんだけど、
何かをするとまた横線があらわれる

こういうのって何が原因かわかりますか?
再現性がそう高くないので、対策しづらいです
表示がおかしいだけでプログラム自体は問題なく動きます



521 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 03:41:24.97 ID:48zxZgqm0.net]
>>520ですけどもしかしたら直ったかもしれないです
multiSelectをfmMultiSelectExtendedに設定してるんですけど、
UserForm Initialize内で設定するのではなく
プロパティウィンドウで選択して設定するようにしたら今の所出ないです

再現性があれなんで確実とは言えないんですけど

522 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 07:48:48.81 ID:FEI28S1s0.net]
>>520
ListBoxに限らず、Excelのオブジェクトは変だよ。
そんなもんだと思う。
俺もこんな現象に遭遇した。

・印刷プレビュー直後に、リストボックスを操作できなくなる。(シートを切り替えると直る。)
・MSクエリやADOを使うと、ボタンやテキストボックスの位置が、見た目と合わなくなる。

 [コマンドボタン]          何もない部分
     ↑                 ↑
ここにボタンがあるのに  ここを押さないと反応しない

523 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 07:53:01.65 ID:FEI28S1s0.net]
あと、なんじゃそりゃ!???? と思ったのが、

 [コマンドボタン]
    ↑
  押すと・・

             →→→ [コマンドボタン]
    ↑
 ボタンが逃げる

多分、押す前のボタン画像が左にあって、
押した後の(凹んだ状態の)画像が右にあるんだと思う。

524 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 08:43:23.59 ID:48zxZgqm0.net]
>>523
論理的に解決できる方法がないから山勘に頼っていじってみて
運良く解決できたらもうけもんってことですかね

表示がぶれると、使ってる人が、このプログラム大丈夫かと心配し始めちゃうんで
できるだけ避けたいところです

525 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 10:54:28.04 ID:/THuLu8v0.net]
>>518
???
バカなの?
お前が500なのもお前に俺がレスしたのも誰でも分かるわ。

>>502のレスにおいて">>501"を付けるから俺に回答を求めてると判断されても仕方ないだろが。

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

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

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

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

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



531 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 17:47:36.35 ID:/THuLu8v0.net]
>>530
そりゃスキルの無い奴は人を評価出来ないからなw

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

533 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 20:51:09.32 ID:fYRCWk9w0.net]
>>532
vartypeがvbStringかどうか
typenameが"String"かどうか
など

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

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

536 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 18:41:53.51 ID:3MovPWtK0.net]
初心者なので意味がわかりづらかったらすみません

まず、やりたいことは
1.ユーザーにB2〜E2あたりに文字を入力してもらう
2.それを5行前後繰り返す
3.この後にボタンを押してもらう
(以降マクロ処理)
4.入力して貰った行の各左セル(A列)に営業日(月初)を入力する
入力内容を下の行にコピペして、A列日付だけ翌営業日にする
それを月末日まで繰り返す

これを実現したい場合、営業日付をどう表示し、どう繰り返せばよいか検討がつきません
アドバイス頂けませんでしょうか
日付に関してyyyymmのみユーザーに手入力して貰う予定で、それを利用できるかなと思っています

537 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 19:17:16.23 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 23:29:52.65 ID:+V4WoVbB0.net]
>>535
上にあるようにvartypeだとだめかね?

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

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



541 名前:デフォルトの名無しさん [2019/06/04(火) 07:28:25.36 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 07:51:19.62 ID:kIR0GcUMx.net]
コピー先のセルのアドレスをシンプルに"A57"に変えるだけでいいと思う

543 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 08:26:51.88 ID:0SaUhvTtM.net]
>>538
それだと対象のブックを開かなきゃダメじゃん

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

545 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 11:40:41.30 ID:ClB/ngZb0.net]
ここにも来たかフィッシング詐欺

546 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 13:24:40.51 ID:g1r7g3uN0.net]
>>544
TVCM見た後に入れた

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

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

549 名前:デフォルトの名無しさん [2019/06/04(火) 23:07:17.09 ID:e2Nk6zam0.net]
>>548
そんなの知るか

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



551 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 00:02:17.80 ID:b19uQdIQp.net]
>>549
知らないならわざわざ書き込まなくていいよw

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

553 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 14:54:24.90 ID:1kcRpkSq0.net]
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。

そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。

554 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 15:52:32.95 ID:bp5RZsKU0.net]
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる

他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない

555 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 17:22:15.93 ID:b19uQdIQp.net]
>>

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

よろしくお願いします。

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

557 名前:デフォルトの名無しさん [2019/06/05(水) 19:31:41.43 ID: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 名前:デフォルトの名無しさん [2019/06/05(水) 19:38:17.24 ID: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 名前:デフォルトの名無しさん [2019/06/05(水) 19:41:46.35 ID:5zNRcsxz8]
>>558
間違えました。追加したのは


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

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

560 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 19:45:36.22 ID:UgnFbYyua.net]
ファイルの履歴とか拾うのかな?



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

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

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

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

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

例)

2日8時間 → 56:00

2時間30分 → 2:30

5分 → 0:05

4時間 → 4:00

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

564 名前:デフォルトの名無しさん [2019/06/05(水) 21:29:26.90 ID:5zNRcsxz8]
>>563 の続きです。

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

565 名前:デフォルトの名無しさん [2019/06/05(水) 21:34:37.94 ID: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 名前:デフォルトの名無しさん [2019/06/05(水) 21:35:38.04 ID:5zNRcsxz8]
>>565の続きです。
次に分まで(例 5分2秒)実現するために
以下を感で追加してみたところ失敗しました。
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""

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

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

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

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

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



571 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 23:22:07.87 ID:Uovi79l30.net]
>>570
こんなこともわからんような馬鹿が作ったものを使わされるとか

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

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

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

575 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 06:36:27.46 ID:ME671i1fx.net]
Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ

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

577 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 12:22:02.47 ID:GuX8oFrp0.net]
>>576
日本語でおk

578 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 12:59:11.37 ID:vG+mGYiZ0.net]
>>577
すみません、日本語難しいどこですか?

579 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 15:41:00.01 ID:GuX8oFrp0.net]
>>578
天丼やめろw

580 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 20:23:11.53 ID:ulk3mDRi0.net]
日本人の俺でもわからんw



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

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

583 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 07:52:48.12 ID:ONMYVTJLM.net]
VBA関係ある?

584 名前:デフォルトの名無しさん [2019/06/07(金) 12:45:57.13 ID:6q38d7bCM.net]
あるよ

585 名前:中国人 [2019/06/07(金) 15:55:31.64 ID:DiCkvzGr0.net]
ないあるよ

586 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 20:52:52.69 ID:Xpa0BB/Y0.net]
どうやるんだそれ・・。
OS上でOSでも動かすのか?

587 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 20:58:22.20 ID:hQ9V7YAV0.net]
そういや、Windows 3.1はMS-DOSの上で動いていたっけ…

588 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:14:02.26 ID:WJdNdQhR0.net]
Win3.1はミドルウェア

589 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:30:42.69 ID:4L9BxcJD0.net]
c:¥> win
だっけ?

590 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:36:57.74 ID:fqhLtcXL0.net]
フロッピー12枚だか14枚だか組みだったな



591 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 23:29:54.75 ID:5cD0N+lz0.net]
>>582
それってネットワーク先の話?
共有フォルダでの読み書きとか?

結構難しい。

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

593 名前:デフォルトの名無しさん [2019/06/09(日) 07:51:19.35 ID:6FBaXgmQM.net]
できます

594 名前:580 [2019/06/09(日) 07:52:18.86 ID:6FBaXgmQM.net]
>>593
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。

595 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 08:13:30.81 ID:y15MKF+M0.net]
※わざとです

596 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 08:14:03.36 ID:fRZrFeuoa.net]
>>593
a=cells(1,1).value
b=cells(2,1).value

@abc.pdfをオープン
A3p目の左上を起点に左から100、上から50の位置に、8ptで幅20の黒色で、aの内容のテキスト挿入

if b=1 then
B3p目の左上起点の左から200上から300の位置に、黒色の縦10幅10の円を挿入
else if b=2 then
C上記Bの位置違いパターン
endif

この@ABを教えていただきたいです。

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

598 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:27:58.90 ID:fRZrFeuoa.net]
>>597

マジかぁ
pdfは書式が既にあって、それをまずエクセル化するところからしなくてはならない

excelのセルから抽出し、wordに入力するのも大変?

599 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:32:56.69 ID:LJTYegK80.net]
>>598
Excel VBAでワードを開く方法がある
https://tonari-it.com/excel-vba-word-application/

wordの細かい所をどこまで触るかによると思う
単純作業なら全然難しくないよ

600 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:45:03.10 ID:fRZrFeuoa.net]
>>599
ありがとう、ちょっと読み込んでみる

やりたいことは要は、エクセルにずらーっとリストがあって、その内容を、

雇用契約書の穴埋め書式みたいな他のファイル(エクセル、ワード、pdfあり)に展開したい

展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある



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

602 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:53:01.65 ID:Apn2tV9M0.net]
文字化けした。
女の左にあるのはチェックマークね

603 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:05:38.50 ID:fRZrFeuoa.net]
>>601
いや、書式はもう決まってんのよ
変えれるものじゃないんだ

□の方が楽だけどなぁ

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

605 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:11:05.04 ID:Apn2tV9M0.net]
>>603
そうか、じゃぁ・・・
頑張って!!

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

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

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

609 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:19:23.94 ID:qEIP4aE00.net]
>>606
何か変だと思って試したけど、

こうか
Dim w As Word.Application
Set w = New Word.Application

こうじゃない?
Dim w As New Word.Application

610 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:29:49.90 ID:47rhBQpmx.net]
>>607
>>609
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない

参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ



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

612 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 11:12:20.95 ID:wmlwj4f30.net]
>>610-611
わざわざ参照設定してるのにCreateObject(…)するアホがいるとは…

613 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 11:16:29.03 ID:Apn2tV9M0.net]
CreateObjectも参照設定もimportだから、どっちか一つでいいんじゃないの?
両方やっても問題ないけど意味はないと思う

あんまリンク内容見ずに貼ってしまった俺が悪いな、すまん

614 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 13:34:23.02 ID:IXdTYEKb0.net]
山椒設定はライブラリバージョン古いPCじゃ即フリーズじゃなかったっけ

615 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 13:37:36.61 ID:WDGftzb80.net]
配布するなら、参照設定でプログラミングしてテストして、参照設定外して createobject方式にして配布
配布先で参照設定か外れることがまれによくあるので、こうしとくと無難

616 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 15:01:31.22 ID:lDRLC8Vq0.net]
>>615
そっすね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<181KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef