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
135 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 23:07:30.74 ID:KquSHPZdd.net] >>134 本来、何かを主張するということは、自らの説得力を持って相手に納得させる行為なんだよ。 ぐうの音も出ないというのは、相手の説得力に対して抗しきれずに納得させられたという状態だ。 お前は説得力が無くてもかまれないんだから、相手がどんなアホなことを言ってもぐうの音も出ないと表明してしまったわけだw
136 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 23:17:56.44 ID:atpu4K080.net] あと念の為に言っとくけど、普段はこんなアホなことは言わんよ 「MSに確認」を執拗に要求するアホがいるから、人に要求するなら自分も根拠を示せというだけのこと できない時点で単なるつぶやきでしかない
137 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 10:29:21.50 ID:B8o2e8qC0.net] あると断定するよりないと断定するのは難しいよね 単に自分が見つけられなかっただけでは断言なんてできないし >>136 確認しなくても、ない根拠を示せば相手も黙るのでは
138 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 11:58:35.51 ID:Cm5pFeJF0.net] まだやるの? それとも別人?
139 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 15:31:13.13 ID:GJKpnzP30.net] まだやるも何も完全に論理破綻してるけど自ら白旗挙げたことに気付いて無くて悔しいから、最後まで何か言ってれば負けたことにならないと信じてるアホがいるだけ。 MSに確認しなくても説得力ある話をすれば良かったのに、今となってはそれも手遅れ。 説得力が必要無いなんて、じゃお前は何でここに居るんだよwというくらいのアホ。
140 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 15:32:27.45 ID:GJKpnzP30.net] >>138 前から、怪しい奴が横から沸いてたw アホらしいから取り合わんけどね。
141 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 15:34:04.83 ID:Op13jVvhx.net] 別スレ立ててやれ
142 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 15:42:55.36 ID:Cm5pFeJF0.net] >>139-140 >>134 >>141 前スレから粘着するぐらいだからもう無理でしょw
143 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 15:48:48.77 ID:GJKpnzP30.net] >>142 論理無しでも最後まで口を出せば負けないと思ってるアホw
144 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 16:55:50.87 ID:eh3I/jd8M.net] 言いたいことは>>136 に書いてある
145 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 19:10:51.36 ID:S6hYz9760.net] よし、わかった。 ここをExcel VBAスレにするのは平成までにして、 令和からは、ドキッ!丸ごと水着女だらけの水泳大会スレにすれば、 すべて解決する。
146 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 19:18:15.59 ID:R0S1ON6+M.net] ネーミングの昭和感
147 名前:デフォルトの名無しさん [2019/05/01(水) 01:54:30.18 ID:MPaYicsf0.net] なあもういい加減やめようぜ
148 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 08:45:56.07 ID:R08QdVRL0.net] 止めつつ上げるとかネタやん
149 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 13:34:20.87 ID:XHmxZYyQ0.net] 最初の質問者は問題解決したのかな?
150 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 19:19:03.05 ID:xlz/SFXed.net] 戯れ事を指摘したことの根拠は戯れ事を否定する根拠が無かったことなのにな。 何にも根拠が無かったら発言しなければ良かったのに。
151 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 19:41:21.80 ID:o4X+Dt2l0.net] 1 安倍晋三 アベシンゾウ 2 麻生太郎 3 小泉純一郎 4 白石麻衣 ・ ・ ・ 全員にフリガナをふりたい 今手動で名前をカット→貼り付けでフリガナをだしてます それを自動でやる方法 または違うやり方があれば教えてください ち、ちなみにjkです!
152 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 19:52:09.99 ID:7e1y8fXo0.net] 「あべ しんぞう」じゃなくて「あべ しん さん」で変換されてたら ふりがなもそうなるし並べ替えでも読みで並べ替えされるし
153 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 19:54:51.80 ID:gB5i9xO70.net] >>151 SEXしよう! ・関数 =PHONETIC(A1) ・vba Sub foo() For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row Cells(i, 2).Value = Application.GetPhonetic(Cells(i, 1)) Next End Sub ・その他 A1セルにカーソル併せてshit+alt+上でふりがなの設定が出来る
154 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 19:56:40.51 ID:gB5i9xO70.net] 書き忘れた 関数とvbaで挙動が変わる 関数は入力した時のふりがなデータを引っ張ってくる。漢字をコピペした場合、ふりがなデータが無い事がある vbaはIMEのデータを引っ張ってくる。 どちらが良いかは無いが、基本的にはvbaの方が良い
155 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 20:52:09.59 ID:o4X+Dt2l0.net] 神様ありがとう!! やっぱりここのおじさんたち凄い >>152 それはあきらめてるw
156 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 06:46:34.61 ID:TSubnBAw0.net] おばさんもいるよ!
157 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:24:42.71 ID:4Z9Ig80ax.net] すげー加齢臭するなこのスレ
158 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:33:10.59 ID:qNitGapX0.net] 平均30-40ぐらいじゃないか。余裕で50代もいると思う
159 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 13:15:20.53 ID:mcZWq4mnM.net] 5chとしては普通でしょ
160 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 14:27:39.19 ID:eVIwB2YR0.net] むしろ50代とかの方が多いんじゃね?
161 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 01:42:39.48 ID:PgstIp0W0.net] windows3.1時代には既に有ったからね dos版にもvbaって有ったの? 流石にそこまでは知らないんだけど
162 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 07:29:37.96 ID:25zG6vKA0.net] >>161 > dos版にもvbaって有ったの? ないでしょ VBAはExcel 5.0からでそのバージョンにDOSはなかったはず
163 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 20:27:43.58 ID:BF8MV8/50.net] 指定する番号の行に 行を新規に追加するには どう記載すれば、良いですか?
164 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 20:41:12.12 ID:XON7SXZQr.net] row(n).insert nは数値
165 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 20:42:27.10 ID:AcwGW1cm0.net] >>163 Rows(123).Insert
166 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 20:45:05.57 ID:XON7SXZQr.net] sが抜けてましたね すまんかった
167 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 20:45:39.14 ID:IK0uVtFC0.net] Dim i As Integer i = InputBox("数字を入力してください") Rows(i).Insert Shift:=xlDown
168 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 21:40:51.68 ID:BF8MV8/50.net] 皆さん、ありがとう 試して報告させていただきます。
169 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 21:45:41.48 ID:BF8MV8/50.net] >>164 nをfor next で指定しても、動きますか? エラーとなり、理由がわからず2日ここで止まってます。
170 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 22:22:12.93 ID:jSkSyCW+d.net] コードも無いしエラーメッセ−ジも無いからエラーはよく分からんが、気になる点を1つ。 n行目に挿入されると、その行は何行目になるのかな?
171 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 22:29:34.83 ID:pOOjaEue0.net] >>169 具体的に何行目に追加したいか書いたほうが良いと思う 一行だけじゃないのか
172 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 22:52:12.35 ID:AcwGW1cm0.net] >>169 たぶん For に Step - が必要な案件と見た
173 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 22:56:04.02 ID:AcwGW1cm0.net] >>169 いっぺんに何行も挿入したいときは Rows("6:15").Insert この例では5行と6行の間に10行いっぺんに入れて、元の6行が16行に移動してる
174 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 22:59:30.01 ID:oCrXkNbC0.net] >>172 初めて挿入やった時に上から順に挿入してってぐっちゃぐちゃになったわw
175 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 23:12:10.31 ID:BF8MV8/50.net] ありがとう、皆さん。お言葉に甘えて Sub 行の挿入() dim k As Integer dim i As Integer dim j As Integer dim h As Integer Set obj基本データ = Thisworkbook.Worksheets("基本データ") h = 7 Do while obj基本データ.Cells(4,h).Value〈〉"" For i = 1 To obj基本データ.Cells(5, h).End(xlDown).Row k = obj基本データ.Cells(4,h).Value j = obj基本データ.Cells(i+4,h).Value ThisWorkbook.Worksheets(k+2).Rows(j).Insert next i h = h + 1 Loop End Sub 回すと、 ThisWorkbook.Worksheets(k+2).Rows(j).Insert のところで、実行時エラー'1004' となります。
176 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 23:52:28.10 ID:pOOjaEue0.net] >>175 構文はあってるけど、存在しないセルを参照している 多分jに0か、kに-2が入ってるとかそんな感じ
177 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 23:53:17.22 ID:pOOjaEue0.net] 変数の中身を確認して 確認方法はウォッチ式、イミディエイトウィンドウなどいろいろあるけど msgbox j msgbox k ThisWorkbook.Worksheets(k+2).Rows(j).Insert でも良い
178 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 00:20:05.87 ID:50ISOOVP0.net] >>176 遅くにありがとうございました。 ご指摘のとおり、iに0が入るため、エラーになっていることがわかりました。 後は、空白セルを0と読み取らせない方法を調べてみます。 丸二日、エラーの理由がわからずに悩んでいました。 見ず知らずの方に助けてもらえて感謝です。ありがとうございました。
179 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 00:33:06.01 ID:50ISOOVP0.net] >>178 j でした。訂正します。
180 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 00:51:29.40 ID:50ISOOVP0.net] >>176 IF j=0 then GoTo L1 を追加して、 エラーになるところを飛ばして解決しました。 ありがとうございました。
181 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 10:29:14.43 ID:ZwYgATzZd.net] >>178 初心者は、問題がどこにあるのかに勘所が無いからこういう悩んで時間を使う経験をたくさんすると良い。 慣れれば5秒で気付く。 あと、Do〜Loopはいらない気がする。 hの代わりにiを使ってどうにかできると思うね。
182 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 10:30:20.40 ID:ZwYgATzZd.net] >>178 間違えた。 hは列方向か。
183 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 16:54:45.46 ID:SsAAf7AE0.net] VBA勉強中の者です。 Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。 どんなときに使うのか、教えてもらえるとありがたいです。
184 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 16:57:57.46 ID:/nmPTcfU0.net] >>183 数値と文字列以外は全部オブジェクト
185 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 17:04:22.66 ID:/nmPTcfU0.net] どんなときに使うのか、は一言で言うのは難しいが、基本的には保守のため ・何の変数か分からない時に名前をつける range("a1:b2")だと何の範囲かはワークシート見ないと分からない set 転記元 = range("a1:b2") とすることで、そのrangeが何か一発で分かるようになる ちなみに「何をするか」ではなく「何が入ってるか」を基準に命名すると後で分かりやすい 「何をするか」はfunctionの名前がそうなっているはずだ ・ある変数が2回以上登場する場合、最初に変数に入れておけばそのコードを変更する時に一回で済む まぁこれは説明せんでもええわな ・保守しないならめんどくさいだけじゃん そう、合っている ちゃんと保守できるように書いて置いた方が、長い目で見ると楽なんだ。プラマイプラス
186 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 19:25:57.30 ID:ZL9lN1sfd.net] >>184 、185 レスありがとうございます。 185さん 感覚ですが、すごく単純な感じがします。そんな認識でよいです? ただ184さんのいう 数値と文字列以外は全部オブジェクト これがひっかかるんです。 range("a1:b2")がオブジェクトという認識でよい? そのなかに文字があった場合は? 文字列じゃない?と思ってしまうが、それは違うんですよね。 仮に range("b2").valueだった場合は値で、range("a1:b2")はオブジェクトという事? はなしがまとまってなくて、すみません。
187 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 19:27:02.31 ID:ZL9lN1sfd.net] ↑183が書き込みしました。
188 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 19:40:34.80 ID:tGc5sWC60.net] Excelのシート内部の表位置とかカラム位置とかデータ末尾とか特定するベストプラクティスってどんなんですか! 何十年前からある言語でこんだけ普及してるのにいまだに決まった答えがないとか
189 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 19:44:21.41 ID:tfYAY6pzM.net] >>188 あのね、A1から使うのがExcelの正しい使い方なの 枠やらタイトルやら付けるのはバカジャップの間違った使い方なの
190 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 19:52:43.30 ID:tGc5sWC60.net] 一瞬で理解した
191 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 20:14:31.04 ID:/nmPTcfU0.net] >>186 range("a1:b2")はオブジェクト。この中にプロパティとしてvalueやwidth、heightなどがある もちろんrange("a1:b2").valueは文字列。 range("a1")に1が入っていて range("a1")+2が3になるのは、range("a1:b2").valueが自動的に呼び出されて range("a1").value+2になっているため MSDNじっくり読んだほうがいいかもな https://docs.microsoft.com/ja-jp/office/vba/api/excel.range(object)
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 そっすね