19/04/29 14:55:19.39 atpu4K080.net
>>111
既に結論出してるからね
>> 説得力無くて良いんだろw
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
> 常識が通じない相手とはやり取りが困難って言うだけのこと
113:デフォルトの名無しさん
19/04/29 15:21:29.32 KquSHPZdd.net
お前が自ら反論出来ませんと宣言した結論がなwww
114:デフォルトの名無しさん
19/04/29 15:22:16.26 KquSHPZdd.net
>>112
自分がアホなことを言った責任を取れw
115:デフォルトの名無しさん
19/04/29 15:23:08.17 KquSHPZdd.net
常識が通じないことを言い出したのは自分じゃねーかw
116:デフォルトの名無しさん
19/04/29 16:08:31.29 atpu4K080.net
バカが何か喚いてるなw
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
117:デフォルトの名無しさん
19/04/29 17:26:09.94 KquSHPZdd.net
>>116
反論出来なくなって議論を放棄したバカはお前だろw
118:デフォルトの名無しさん
19/04/29 17:33:18.07 wwUmbZI/M.net
>>117
バカが何を喚いても
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
という事実は変わらない
119:デフォルトの名無しさん
19/04/29 17:45:24.31 5oVU+kiox.net
ここの人達を見てるとVBAがなぜオワコンなのか分かるね
120:デフォルトの名無しさん
19/04/29 17:55:06.77 TTZW3SJd0.net
>>119
逆だろ
敷居が低すぎて誰でも使えるから荒れる
121:デフォルトの名無しさん
19/04/29 18:58:21.22 leSwRXLe0.net
何で最新版の2019でも使えるのにオワコンなの?
122:デフォルトの名無しさん
19/04/29 19:23:57.77 tJZYnaZY0.net
当時はすぐにVBA.NETがでると思ったんだけどなぁ
123:デフォルトの名無しさん
19/04/29 19:41:52.72 lSCWRZH10.net
>>89
取り出し方を間違ってるかTextfileの中身が実際に足りてないかのどっちか
124:デフォルトの名無しさん
19/04/29 20:01:58.83 b0/Q+dtd0.net
>>92
エラーになったTextfileは確認しました。
もちろん配列格納時に足りなくまります。
>>106
print #fileNo,txtA.Text &vbTab;
print #fileNo,txtB.Text &vbTab;
・
・
print #fileNo,txtG.Text;
今コードないからあれですけど、こんな感じだったと思うんですけど何か起きそうですかね?
125:デフォルトの名無しさん
19/04/29 20:17:29.34 atpu4K080.net
>>124
> エラーになったTextfileは確認しました。
> もちろん配列格納時に足りなくまります。
だ・か・ら、Textfileの中身はどうなってるんだよ…
126:デフォルトの名無しさん
19/04/29 20:37:36.75 8I96H2WZF.net
>>118
お前は既に敗北宣言してるんだから今さら何言っても無駄だw
説得力が無くて良いと言うのは敗北宣言に等しい。
俺がお前に対して何も説得力が無くても良いと言ってしまったんだからなw
127:デフォルトの名無しさん
19/04/29 20:53:34.07 atpu4K080.net
また痴呆症の再発かよw
>>95
説得力が無い?
> 説得力の有無なんて関係ないだろ
> お前が根拠を示せてないと言う「事実」があるだけ
って書いてあるんだが、ひょっとして違いがわかってないのか?w
128:デフォルトの名無しさん
19/04/29 21:29:45.18 KquSHPZdd.net
>>127
今さら、ひっくり返そうとしても無駄w
お前の言によれば俺の主張に説得力は必要無いということだからな。
お前は無条件に俺の主張に同意すると言ったに等しいw
129:デフォルトの名無しさん
19/04/29 21:31:38.71 KquSHPZdd.net
>>127
お前の言う「事実」なんて無いのも確定だw
「事実」なんて無いという俺の主張に説得力は必要無いとお前が言ったんだからなw
130:デフォルトの名無しさん
19/04/29 21:34:44.44 5oVU+kiox.net
アスペ vs アスペ
ファイッ!
131:デフォルトの名無しさん
19/04/29 21:43:17.66 mVsN4is2F.net
なぜ、こんなアホなことになったのかは容易に想像できる。
このバカは自分と相手の主張の整合性や論理というものを考えずにその場で反論出来れば良いと不用意な発言をしたんだろう。
全くどうしようもないバカ者だ。
発言を続けていれば論理が無くても勝てると思ってるのだろうw
132:デフォルトの名無しさん
19/04/29 22:03:44.78 atpu4K080.net
痴呆症のうえに妄想まで出てきたか
末期症状だなw
1つだけお前のレスで正しいところがあるよ
> それどころか全ての議論は意味が無い。
「基地外との」って言う言葉を前置すればねw
133:デフォルトの名無しさん
19/04/29 22:35:55.60 KquSHPZdd.net
>>132
勝手に省略するなバカw
説得力が必要ないというならという前提がつくんだよ。
お前の主張によればという前提でも良い。
全ての議論は意味が無いというのはお前の主張が正しければだ。
バカ者がw
134:デフォルトの名無しさん
19/04/29 22:50:43.48 atpu4K080.net
意味のない議論(と本人は思ってる独り言)を延々と続ける痴呆老人w
135:デフォルトの名無しさん
19/04/29 23:07:30.74 KquSHPZdd.net
>>134
本来、何かを主張するということは、自らの説得力を持って相手に納得させる行為なんだよ。
ぐうの音も出ないというのは、相手の説得力に対して抗しきれずに納得させられたという状態だ。
お前は説得力が無くてもかまれないんだから、相手がどんなアホなことを言ってもぐうの音も出ないと表明してしまったわけだw
136:デフォルトの名無しさん
19/04/29 23:17:56.44 atpu4K080.net
あと念の為に言っとくけど、普段はこんなアホなことは言わんよ
「MSに確認」を執拗に要求するアホがいるから、人に要求するなら自分も根拠を示せというだけのこと
できない時点で単なるつぶやきでしかない
137:デフォルトの名無しさん
19/04/30 10:29:21.50 B8o2e8qC0.net
あると断定するよりないと断定するのは難しいよね
単に自分が見つけられなかっただけでは断言なんてできないし
>>136
確認しなくても、ない根拠を示せば相手も黙るのでは
138:デフォルトの名無しさん
19/04/30 11:58:35.51 Cm5pFeJF0.net
まだやるの?
それとも別人?
139:デフォルトの名無しさん
19/04/30 15:31:13.13 GJKpnzP30.net
まだやるも何も完全に論理破綻してるけど自ら白旗挙げたことに気付いて無くて悔しいから、最後まで何か言ってれば負けたことにならないと信じてるアホがいるだけ。
MSに確認しなくても説得力ある話をすれば良かったのに、今となってはそれも手遅れ。
説得力が必要無いなんて、じゃお前は何でここに居るんだよwというくらいのアホ。
140:デフォルトの名無しさん
19/04/30 15:32:27.45 GJKpnzP30.net
>>138
前から、怪しい奴が横から沸いてたw
アホらしいから取り合わんけどね。
141:デフォルトの名無しさん
19/04/30 15:34:04.83 Op13jVvhx.net
別スレ立ててやれ
142:デフォルトの名無しさん
19/04/30 15:42:55.36 Cm5pFeJF0.net
>>139-140
>>134
>>141
前スレから粘着するぐらいだからもう無理でしょw
143:デフォルトの名無しさん
19/04/30 15:48:48.77 GJKpnzP30.net
>>142
論理無しでも最後まで口を出せば負けないと思ってるアホw
144:デフォルトの名無しさん
19/04/30 16:55:50.87 eh3I/jd8M.net
言いたいことは>>136に書いてある
145:デフォルトの名無しさん
19/04/30 19:10:51.36 S6hYz9760.net
よし、わかった。
ここをExcel VBAスレにするのは平成までにして、
令和からは、ドキッ!丸ごと水着女だらけの水泳大会スレにすれば、
すべて解決する。
146:デフォルトの名無しさん
19/04/30 19:18:15.59 R0S1ON6+M.net
ネーミングの昭和感
147:デフォルトの名無しさん
19/05/01 01:54:30.18 MPaYicsf0.net
なあもういい加減やめようぜ
148:デフォルトの名無しさん
19/05/01 08:45:56.07 R08QdVRL0.net
止めつつ上げるとかネタやん
149:デフォルトの名無しさん
19/05/01 13:34:20.87 XHmxZYyQ0.net
最初の質問者は問題解決したのかな?
150:デフォルトの名無しさん
19/05/01 19:19:03.05 xlz/SFXed.net
戯れ事を指摘したことの根拠は戯れ事を否定する根拠が無かったことなのにな。
何にも根拠が無かったら発言しなければ良かったのに。
151:デフォルトの名無しさん
19/05/03 19:41:21.80 o4X+Dt2l0.net
1 安倍晋三 アベシンゾウ
2 麻生太郎
3 小泉純一郎
4 白石麻衣
・
・
・
全員にフリガナをふりたい
今手動で名前をカット→貼り付けでフリガナをだしてます
それを自動でやる方法
または違うやり方があれば教えてください
ち、ちなみにjkです!
152:デフォルトの名無しさん
19/05/03 19:52:09.99 7e1y8fXo0.net
「あべ しんぞう」じゃなくて「あべ しん さん」で変換されてたら
ふりがなもそうなるし並べ替えでも読みで並べ替えされるし
153:デフォルトの名無しさん
19/05/03 19:54:51.80 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:デフォルトの名無しさん
19/05/03 19:56:40.51 gB5i9xO70.net
書き忘れた
関数とvbaで挙動が変わる
関数は入力した時のふりがなデータを引っ張ってくる。漢字をコピペした場合、ふりがなデータが無い事がある
vbaはIMEのデータを引っ張ってくる。
どちらが良いかは無いが、基本的にはvbaの方が良い
155:デフォルトの名無しさん
19/05/03 20:52:09.59 o4X+Dt2l0.net
神様ありがとう!!
やっぱりここのおじさんたち凄い
>>152
それはあきらめてるw
156:デフォルトの名無しさん
19/05/04 06:46:34.61 TSubnBAw0.net
おばさんもいるよ!
157:デフォルトの名無しさん
19/05/04 10:24:42.71 4Z9Ig80ax.net
すげー加齢臭するなこのスレ
158:デフォルトの名無しさん
19/05/04 10:33:10.59 qNitGapX0.net
平均30-40ぐらいじゃないか。余裕で50代もいると思う
159:デフォルトの名無しさん
19/05/04 13:15:20.53 mcZWq4mnM.net
5chとしては普通でしょ
160:デフォルトの名無しさん
19/05/04 14:27:39.19 eVIwB2YR0.net
むしろ50代とかの方が多いんじゃね?
161:デフォルトの名無しさん
19/05/05 01:42:39.48 PgstIp0W0.net
windows3.1時代には既に有ったからね
dos版にもvbaって有ったの?
流石にそこまでは知らないんだけど
162:デフォルトの名無しさん
19/05/05 07:29:37.96 25zG6vKA0.net
>>161
> dos版にもvbaって有ったの?
ないでしょ
VBAはExcel 5.0からでそのバージョンにDOSはなかったはず
163:デフォルトの名無しさん
19/05/05 20:27:43.58 BF8MV8/50.net
指定する番号の行に
行を新規に追加するには
どう記載すれば、良いですか?
164:デフォルトの名無しさん
19/05/05 20:41:12.12 XON7SXZQr.net
row(n).insert
nは数値
165:デフォルトの名無しさん
19/05/05 20:42:27.10 AcwGW1cm0.net
>>163
Rows(123).Insert
166:デフォルトの名無しさん
19/05/05 20:45:05.57 XON7SXZQr.net
sが抜けてましたね
すまんかった
167:デフォルトの名無しさん
19/05/05 20:45:39.14 IK0uVtFC0.net
Dim i As Integer
i = InputBox("数字を入力してください")
Rows(i).Insert Shift:=xlDown
168:デフォルトの名無しさん
19/05/05 21:40:51.68 BF8MV8/50.net
皆さん、ありがとう
試して報告させていただきます。
169:デフォルトの名無しさん
19/05/05 21:45:41.48 BF8MV8/50.net
>>164
nをfor next
で指定しても、動きますか?
エラーとなり、理由がわからず2日ここで止まってます。
170:デフォルトの名無しさん
19/05/05 22:22:12.93 jSkSyCW+d.net
コードも無いしエラーメッセ-ジも無いからエラーはよく分からんが、気になる点を1つ。
n行目に挿入されると、その行は何行目になるのかな?
171:デフォルトの名無しさん
19/05/05 22:29:34.83 pOOjaEue0.net
>>169
具体的に何行目に追加したいか書いたほうが良いと思う
一行だけじゃないのか
172:デフォルトの名無しさん
19/05/05 22:52:12.35 AcwGW1cm0.net
>>169
たぶん For に Step - が必要な案件と見た
173:デフォルトの名無しさん
19/05/05 22:56:04.02 AcwGW1cm0.net
>>169
いっぺんに何行も挿入したいときは
Rows("6:15").Insert
この例では5行と6行の間に10行いっぺんに入れて、元の6行が16行に移動してる
174:デフォルトの名無しさん
19/05/05 22:59:30.01 oCrXkNbC0.net
>>172
初めて挿入やった時に上から順に挿入してってぐっちゃぐちゃになったわw
175:デフォルトの名無しさん
19/05/05 23:12:10.31 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:デフォルトの名無しさん
19/05/05 23:52:28.10 pOOjaEue0.net
>>175
構文はあってるけど、存在しないセルを参照している
多分jに0か、kに-2が入ってるとかそんな感じ
177:デフォルトの名無しさん
19/05/05 23:53:17.22 pOOjaEue0.net
変数の中身を確認して
確認方法はウォッチ式、イミディエイトウィンドウなどいろいろあるけど
msgbox j
msgbox k
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
でも良い
178:デフォルトの名無しさん
19/05/06 00:20:05.87 50ISOOVP0.net
>>176
遅くにありがとうございました。
ご指摘のとおり、iに0が入るため、エラーになっていることがわかりました。
後は、空白セルを0と読み取らせない方法を調べてみます。
丸二日、エラーの理由がわからずに悩んでいました。
見ず知らずの方に助けてもらえて感謝です。ありがとうございました。
179:デフォルトの名無しさん
19/05/06 00:33:06.01 50ISOOVP0.net
>>178
j
でした。訂正します。
180:デフォルトの名無しさん
19/05/06 00:51:29.40 50ISOOVP0.net
>>176
IF j=0 then GoTo L1
を追加して、
エラーになるところを飛ばして解決しました。
ありがとうございました。
181:デフォルトの名無しさん
19/05/06 10:29:14.43 ZwYgATzZd.net
>>178
初心者は、問題がどこにあるのかに勘所が無いからこういう悩んで時間を使う経験をたくさんすると良い。
慣れれば5秒で気付く。
あと、Do~Loopはいらない気がする。
hの代わりにiを使ってどうにかできると思うね。
182:デフォルトの名無しさん
19/05/06 10:30:20.40 ZwYgATzZd.net
>>178
間違えた。
hは列方向か。
183:デフォルトの名無しさん
19/05/10 16:54:45.46 SsAAf7AE0.net
VBA勉強中の者です。
Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。
どんなときに使うのか、教えてもらえるとありがたいです。
184:デフォルトの名無しさん
19/05/10 16:57:57.46 /nmPTcfU0.net
>>183
数値と文字列以外は全部オブジェクト
185:デフォルトの名無しさん
19/05/10 17:04:22.66 /nmPTcfU0.net
どんなときに使うのか、は一言で言うのは難しいが、基本的には保守のため
・何の変数か分からない時に名前をつける
range("a1:b2")だと何の範囲かはワークシート見ないと分からない
set 転記元 = range("a1:b2")
とすることで、そのrangeが何か一発で分かるようになる
ちなみに「何をするか」ではなく「何が入ってるか」を基準に命名すると後で分かりやすい
「何をするか」はfunctionの名前がそうなっているはずだ
・ある変数が2回以上登場する場合、最初に変数に入れておけばそのコードを変更する時に一回で済む
まぁこれは説明せんでもええわな
・保守しないならめんどくさいだけじゃん
そう、合っている
ちゃんと保守できるように書いて置いた方が、長い目で見ると楽なんだ。プラマイプラス
186:デフォルトの名無しさん
19/05/10 19:25:57.30 ZL9lN1sfd.net
>>184、185
レスありがとうございます。
185さん
感覚ですが、すごく単純な感じがします。そんな認識でよいです?
ただ184さんのいう
数値と文字列以外は全部オブジェクト
これがひっかかるんです。
range("a1:b2")がオブジェクトという認識でよい?
そのなかに文字があった場合は?
文字列じゃない?と思ってしまうが、それは違うんですよね。
仮に
range("b2").valueだった場合は値で、range("a1:b2")はオブジェクトという事?
はなしがまとまってなくて、すみません。
187:デフォルトの名無しさん
19/05/10 19:27:02.31 ZL9lN1sfd.net
↑183が書き込みしました。
188:デフォルトの名無しさん
19/05/10 19:40:34.80 tGc5sWC60.net
Excelのシート内部の表位置とかカラム位置とかデータ末尾とか特定するベストプラクティスってどんなんですか!
何十年前からある言語でこんだけ普及してるのにいまだに決まった答えがないとか
189:デフォルトの名無しさん
19/05/10 19:44:21.41 tfYAY6pzM.net
>>188
あのね、A1から使うのがExcelの正しい使い方なの
枠やらタイトルやら付けるのはバカジャップの間違った使い方なの
190:デフォルトの名無しさん
19/05/10 19:52:43.30 tGc5sWC60.net
一瞬で理解した
191:デフォルトの名無しさん
19/05/10 20:14:31.04 /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じっくり読んだほうがいいかもな
URLリンク(docs.microsoft.com)(object)
192:デフォルトの名無しさん
19/05/10 20:16:01.36 /nmPTcfU0.net
>>188
最強はこのページの
<S6> 書式付きセルを除外する (UsedRange)
URLリンク(www.niji.or.jp)
ケツから検索して見つかった奴が最後
193:デフォルトの名無しさん
19/05/10 21:34:51.98 ZL9lN1sfd.net
>>191
レスありがとうございます
誘導もありがとう!
じっくり読んでみます。
わからない所があったらまた聞くかもです。
中途半端な理解は嫌だし。さっかりと理解したいし。
194:デフォルトの名無しさん
19/05/10 22:33:38.03 Mw5h8bh90.net
プログラミングを理解するには、読むだけでなくとにかく実際に動かしてみることが大事
195:デフォルトの名無しさん
19/05/11 03:15:11.68 04x+b6lna.net
さっかりなw
196:デフォルトの名無しさん
19/05/11 08:20:45.16 0TYDlcnk0.net
>>194
そうですよね
やらないとわからないがほとんどです(T-T)
>>195
脳内変換ヨロシクです
197:デフォルトの名無しさん
19/05/11 19:56:32.57 C94O1bx/0.net
ADO使うと突然落ちるようになった。
何が原因J?
198:デフォルトの名無しさん
19/05/11 20:45:20.04 Y1ZlGg0p0.net
>>197
プロバイダはなに?
199:デフォルトの名無しさん
19/05/11 21:32:42.45 C94O1bx/0.net
>>198
Microsoft.ACE.OLEDB.12.0
PCによっては普通に実行できるので、原因がわからん。
200:デフォルトの名無しさん
19/05/11 21:36:03.53 pbKNvvnGa.net
質問です。
NumberFormatLocal = “yyyy””年””m””月””d””日””(aaa)”で書式の定義を変更しています。
NumberFormatLocal = ●“yyyy””年””m””月””d””日””(aaa)”
●の箇所に文字列を入れたいのですが”●”を入れるとエラーになります。解決方法はありますでしょうか?
201:デフォルトの名無しさん
19/05/11 21:40:16.93 C94O1bx/0.net
>>200
わからんけど、自動記録でやったものをコピペするとか。
202:デフォルトの名無しさん
19/05/11 21:46:39.70 VQwnSTgG0.net
マクロの記録取ってみたわ
ダブルコーテーションで括った中で、更にダブルコーテーションがいるっぽい
具体てt機にはこう
Selection.NumberFormatLocal = """あ""yyyy""年""m""月"""
203:デフォルトの名無しさん
19/05/11 21:46:58.83 pbKNvvnGa.net
>>201
解決しました。ありがとうございました。
204:デフォルトの名無しさん
19/05/12 02:13:17.21 anQ1bE+S0.net
もしかして、Access2016が入ってると、
Excel2013ではADO接続使えない?
Excel2013からAccess2016の参照で落ちるケースはググって見つけたけど、
ウチのはExcel2013からExcel2013で落ちる。
205:デフォルトの名無しさん
19/05/12 02:35:46.96 0u/cIV/f0.net
>>190
データとしてExcelを使う場合と、ドキュメントとしてExcelを使う場合とで、考え方がかわる。
206:デフォルトの名無しさん
19/05/12 08:45:07.80 OK9Y1i2P0.net
>>204
win下をdll検索して、複数見つかったらそれぞれ直接参照設定してみるとか
(単体で動いてるわけじゃない気もするから、期待薄かもしれんけど)
207:デフォルトの名無しさん
19/05/12 12:05:15.73 anQ1bE+S0.net
>>206
それもダメだったから、諦めてExcel2019買ったわ。
それだと普通に動いたから、
やっぱりExcel2013とAccess2016の組み合わせがダメだったみたい。
ありがとう。
208:デフォルトの名無しさん
19/05/12 16:17:36.32 UM6bazI+0.net
32ビット版だったとか?
209:デフォルトの名無しさん
19/05/12 17:19:48.24 anQ1bE+S0.net
>>208
Excel2013 ・・・ ADO接続OK
↓
Excel2013 + Access2016 ・・・ ここで突然落ちるようになる
↓
Excel2019 + Access2016 ・・・ 直った!
全部32bit。
本当は64bitにしたかったけど、ListViewとか、
一部使えなくなる機能があるので諦めた。
210:デフォルトの名無しさん
19/05/12 17:21:42.38 anQ1bE+S0.net
あ、Excel2013 + Access2016って、インストールの組み合わせ。
別に、Excel2013からAccess2016に接続しに行ったわけじゃない。
落ちたのは、Excel2013からExcel2013へのADO接続。
211:デフォルトの名無しさん
19/05/12 17:23:44.21 0u/cIV/f0.net
なんの話をしているのか他人にはさっぱりわからないw
212:デフォルトの名無しさん
19/05/12 18:10:56.69 w16fcO4J0.net
時刻がマイナスの場合
とは、if文でどうやってつくりますか?
213:デフォルトの名無しさん
19/05/12 18:20:18.19 O1RPDIWFM.net
>>212
マイナスの時刻など存在しない
If 1 = 2
214:デフォルトの名無しさん
19/05/12 18:23:52.94 w16fcO4J0.net
A-B=C
時刻の差のCがマイナス表示されるセルを
if文で
00:00:00
に直したいです
215:デフォルトの名無しさん
19/05/12 18:30:53.16 O1RPDIWFM.net
>>214
=TEXT(MAX(0, C), "hh:mm:ss")
VBAは要らん
216:デフォルトの名無しさん
19/05/12 18:33:52.80 w16fcO4J0.net
セルの設定ですね。
ありがとうございます。
217:デフォルトの名無しさん
19/05/12 20:06:16.73 0u/cIV/f0.net
プログラミングの初歩は大事なんだと思ったよ。
ある値のときは00時00分00秒にするという分岐を思いつかないんだから。
218:デフォルトの名無しさん
19/05/12 20:51:34.11 JDMVXB4ua.net
まあMIN/MAXを使って値をキャップするのは正統なプログラミングでは非常によく使われる方法だけど、
事務屋さんには意外と思いつかないかもね
219:デフォルトの名無しさん
19/05/12 21:54:23.80 UM6bazI+0.net
普通に時刻どうしで比較できるから、3分前とかそういうことかと思ってた
220:デフォルトの名無しさん
19/05/12 22:49:25.28 0u/cIV/f0.net
>>210
Office製品は基本的にバージョン違いを混在させられるようにはできていない。
221:デフォルトの名無しさん
19/05/13 07:47:02.77 J0xiSM4lM.net
>>220
そんなことはなくて条件満たせば使えるよ
URLリンク(www.microsoft.com)
222:デフォルトの名無しさん
19/05/13 09:04:58.38 bJahx30bM.net
>>219
時間と時刻
223:デフォルトの名無しさん
19/05/13 09:19:29.85 OGTR1ISy0.net
その前にいきなり時刻とか言い出した辺りでダメダメ。
人間が時刻と思ってるだけの可能性がある。
セルの書式や変数の型を元に説明しないのは、人間の目線で時刻と言ってる証拠。
224:デフォルトの名無しさん
19/05/13 13:56:52.37 p6Zrf1zY0.net
シャープで囲んでる人はちょっと
225:デフォルトの名無しさん
19/05/13 14:34:08.69 /2MppI/1M.net
VBAでは時刻と時間を Timeでずっとやり繰りしてたのに、c#で TimeSpan発見したときは叫んだわ
226:デフォルトの名無しさん
19/05/13 16:36:40.35 N0Eopnbu0.net
え?エクセルをADOでデータベースみたいに扱うこともできるの?
227:デフォルトの名無しさん
19/05/13 17:03:08.67 P7TvqqIDM.net
>>226
ちゃんと形式を整えておけば単純なSELECTなら使える
WHEREが機能するだけでOKってことならまあまあかな
JOINとかは当てにならないような気がする
DELETE, INSERT, UPDATE はもっと当てにならない
228:デフォルトの名無しさん
19/05/13 19:21:33.24 t89inGVt0.net
あてにならないってなんやねん
229:デフォルトの名無しさん
19/05/13 20:44:43.21 /95lNMvTM.net
>>228
他人だけど、ExcelのSQL操作はおまけ機能だから、標準SQLに対応してないから、やってみないとわからない。
230:デフォルトの名無しさん
19/05/13 21:00:39.75 N0Eopnbu0.net
まぁできちゃったらアクセスの立場ないわな
231:デフォルトの名無しさん
19/05/13 21:02:14.05 icbU5YOt0.net
SQL自体もう色々派閥が分かれすぎて
232:デフォルトの名無しさん
19/05/13 21:06:25.95 adbFFiEz0.net
>>229
馬鹿は死ねや
Accessのエンジンと同じだろ
233:デフォルトの名無しさん
19/05/13 21:10:27.82 /95lNMvTM.net
>>232
バージョンを気にしてくださいw
234:デフォルトの名無しさん
19/05/13 22:16:41.75 ErXZ/V3c0.net
>>226
出来るよ。
普通はやらないだろうけど、会社のPCにAccessが入ってないとか、
Accessは入ってるけど、事務のおばちゃんがExcelにしがみついて、
意地でも離さないとか、そういう状況で使える。
>>227
JOINは普通に使える。
235:デフォルトの名無しさん
19/05/13 22:42:40.28 ATfYCMP60.net
>>234
そうか、JOINも普通にできるのか...
「Excelもデータベースとして有効に使えるよね」なんて方向に行って欲しくない、という願望が
俺の心の中にバイアスを生んだようだ
236:デフォルトの名無しさん
19/05/13 23:05:59.93 RqskJpspx.net
というかPowerQueryやDAXでデータベース的な使い方が出来てしまうからな今のExcelは
237:デフォルトの名無しさん
19/05/13 23:39:26.70 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" ←②
adoRs.Open strSQL, adoCn
*何か処理
adoRs.Close
adoCn.Close 'コネクションのクローズ
Set adoRs = Nothing 'オブジェクトの破棄
Set adoCn = Nothing
①について
プロバイダーとファイル指定の記述の仕方はあってますか?
②について
列の指定とfromの方法は?
教えてください<(_ _)>
238:デフォルトの名無しさん
19/05/13 23:43:46.08 4/CDP/BQ0.net
秀和システムでいいから、古本を買って読めよw
ちゃんとサンプルが書いてある。アマゾンの古本は激安だぞ。
239:デフォルトの名無しさん
19/05/13 23:45:48.17 N0Eopnbu0.net
エクセルをデータベースとして使う記述があるのがどの本なのかさっぱり・・・
できれば本教えてもらえませんか?
240:デフォルトの名無しさん
19/05/13 23:47:08.95 adbFFiEz0.net
>>233
馬鹿は死ね
241:デフォルトの名無しさん
19/05/13 23:49:20.76 4/CDP/BQ0.net
>>239
Google検索でもサンプルは山のようにあるぞ。
242:デフォルトの名無しさん
19/05/14 00:09:21.56 XEzOoRRL0.net
ちょっとググって見ます
243:デフォルトの名無しさん
19/05/14 00:15:14.20 a29jNOd40.net
>>237
何通りかあったと思うけど、
その書き方だと[Sheet1$]かな。
プロバイダーも、adoCn.Providerにも、adoCn.Openにも書ける。
ブック名をFromの後に書く方法もある。
組み合わせは忘れたけど、どこかで指定していれば、
別の部分では省略できる感じ。
244:デフォルトの名無しさん
19/05/14 05:07:41.34 XEzOoRRL0.net
>>243
なるほど、勉強になります
245:デフォルトの名無しさん
19/05/14 19:07:26.92 wEGsmpoqp.net
URLリンク(dotup.org)
東京・大阪・北海道の各出発時間・到着時間を黄色い部分に「sendkeysで」、「それぞれ東京・大阪・北海道の順序を守って」入力したいです
実際にsendkeysでキーを送るのはブラウザ上のフォームであり、東京の時刻入力→tabとenterをsendkeyしつつ次のページに移動→大阪を入力、という風に処理するため、順序等が変更できません
また入力するのが東京・大阪・北海道だけでないかもしれないので、記載がある行すべてというイメージでお願いします
excelスレでも質問してみてますが、vba専門スレがあることに気付かされたのでこちらでお世話になります
246:デフォルトの名無しさん
19/05/14 20:14:46.00 Bsz/IupB0.net
だから、Sendkeysはやめろって。
これはお手軽にその場だけデータを取りたい時なんかに使うけど、制御出来ないから普通は使うべきじゃない。
247:デフォルトの名無しさん
19/05/14 20:18:43.38 wEGsmpoqp.net
もちろんそうなんですが自分には IE操作は敷居が高くて、愚直も愚直にsendkeysしか手段が思いつかないもので・・何か代替案ございますか?
248:デフォルトの名無しさん
19/05/14 20:22:02.95 9TMbmfYm0.net
どう考えてもIE操作の方が敷居が低いんだが
249:デフォルトの名無しさん
19/05/14 20:23:00.65 9TMbmfYm0.net
inputに文字列入れるだけだろ?
ソース見てidだかclassだか取得してポイって入れるだけじゃん
250:デフォルトの名無しさん
19/05/14 20:25:50.88 wEGsmpoqp.net
それがよーわからんのです・・
とりあえずググってすぐ見つかるサイトで特に初心者にわかりやすい解説してるサイトでも教えていただけませんか?
251:デフォルトの名無しさん
19/05/14 21:33:16.75 wEGsmpoqp.net
IE操作で頑張ってみてるんですが、リンクオープンして開いた別窓を操作するにはまたhtmldocにobjIE.documentを代入して・・ってしないといけないんですか?
252:デフォルトの名無しさん
19/05/14 21:59:36.21 IyB4HHSk0.net
>>251
別窓にしちゃう(なっちゃう)とそのウィンドウを探して、html取ってくることが必要になるので、できるなら避ける。
IE VBA
でググれば、参考サイト出てくる。あとは応用しだい
IEでは F12で開くやつも有用
がんばれ
253:デフォルトの名無しさん
19/05/14 22:06:13.16 wEGsmpoqp.net
>>252
社内システムなので必ず別窓になっちゃう仕様です
htmlの取り方教えてもらえませんか?
254:デフォルトの名無しさん
19/05/14 22:31:09.98 a29jNOd40.net
>社内システムなので
多分、このスレ見てる全員ズコーだわ、そのオチ。
システム部門の人に聞いちゃダメなんかい。
255:デフォルトの名無しさん
19/05/14 22:36:33.89 s0Vi/y5R0.net
CreateObject("Shell.Application").Windows() から探す
256:デフォルトの名無しさん
19/05/16 11:39:56.68 a1IyAHl+r.net
excelマクロでのバージョン管理てどうすればいいん
言われるがままに集計マクロ作ったら担当者毎に持ってるマクロのバージョン違ってあの機能が無いとか特殊な状況でエラー出る→それ先月直しましたよ
が頻発してる
257:デフォルトの名無しさん
19/05/16 12:20:32.52 5BGNguvP0.net
>>256
サーバー上にマクロ専用のエクセルファイルを置いて、
個々に配っているファイルからはそのマクロを参照させる
258:デフォルトの名無しさん
19/05/16 12:51:40.47 YRbGgWK/M.net
>>257
基本それだが、ずっと掴んでるやつがいるとバグ修正や機能追加のときに困る
259:デフォルトの名無しさん
19/05/16 14:16:39.46 5BGNguvP0.net
>>258
読み取り専用にしてもダメか?
260:デフォルトの名無しさん
19/05/16 14:16:55.41 5BGNguvP0.net
もちろん自分が編集する時は読み取り専用解除ね
261:デフォルトの名無しさん
19/05/16 14:43:29.72 wWtnEH3A0.net
コード書く画面を
背景は黒に、文字は白に、する方法を教えれ
262:デフォルトの名無しさん
19/05/16 15:42:20.38 Z2BhGmok0.net
ツール -> オプション -> エディターの設定
263:デフォルトの名無しさん
19/05/16 16:12:18.52 BYfNVo3YM.net
>>256
OS起動したら、サーバからコピーしてくるバッチ等を走らせる
小さいならいちいちバージョン確認しなくてもよい
264:デフォルトの名無しさん
19/05/16 18:04:23.53 rNkkKl6PM.net
みんな一々シャットダウンするのか?
スケジュールでコピーだろ
265:デフォルトの名無しさん
19/05/16 18:58:39.63 5BGNguvP0.net
>>>261
これ
URLリンク(tonari-it.com)
ちなみに書くとこはVBEって言うから覚えておくと検索できて便利
266:デフォルトの名無しさん
19/05/16 19:18:23.52 UtWIeHx/p.net
マクロ終了時にマクロ開始から終了までにかかった時間が秒までメッセージボックスに表示するってできる?
267:デフォルトの名無しさん
19/05/16 19:18:36.52 rD+4K505M.net
>>264
個々人のローカルフォルダにxlam があってそれが定期的に書き換えられるって事?
他のブックがxlamを掴んでる最中でもできる?
268:デフォルトの名無しさん
19/05/16 19:23:31.84 UPwRXvuL0.net
>>266
できる
269:デフォルトの名無しさん
19/05/16 19:26:21.47 5BGNguvP0.net
>>266
楽勝
Sub foo()
開始 = Now
'処理
終了 = Now
MsgBox Format(終了 - 開始, "hh:mm:ss")
End Sub
270:デフォルトの名無しさん
19/05/16 19:26:44.10 5BGNguvP0.net
>>268
URL春だけでもいいから教えてあげたらw
271:デフォルトの名無しさん
19/05/16 19:31:25.53 UtWIeHx/p.net
>>268はなんとかookスレで最近流行りの流れだよw
>>269ありがとう!
272:デフォルトの名無しさん
19/05/16 20:10:17.30 rNkkKl6PM.net
>>267
掴んでたらスルー
273:デフォルトの名無しさん
19/05/16 22:17:19.76 aE3zz80C0.net
>>256
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。
で、更新させたい時は、わざと参照用ファイルを消しておく。
274:デフォルトの名無しさん
19/05/16 22:24:00.58 yzKWQsxd0.net
>>273
xlamを共有するならそこのWorkbook_Open にそういう処理を入れておけばいいでしょうね
275:デフォルトの名無しさん
19/05/16 23:04:51.54 kfbhC4dW0.net
>>256
最新バージョン書いたテキストかなんかを共有に置いといて、起動時に見に行ってそれより古かったら更新促す警告出すとか
276:デフォルトの名無しさん
19/05/17 02:52:09.97 gYF5enuVM.net
Excelの起動時、マクロを実行させる:Excel(エクセル)マクロ
URLリンク(www.excel.usefulhp.com)
で良いだろ
277:デフォルトの名無しさん
19/05/17 09:22:35.60 YDbG3YPmr.net
共有パス見て実行とか大変そう面倒そうて主観があったけども
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう
278:デフォルトの名無しさん
19/05/17 09:26:03.52 PC2o5teB0.net
>>277
そっちは使わないかな
俺はボタンにマクロの場所を登録する
279:デフォルトの名無しさん
19/05/17 09:26:30.66 PC2o5teB0.net
なんか日本語変だ
まぁいいか
280:デフォルトの名無しさん
19/05/17 12:25:15.46 cM5KCNydp.net
ちょっと筋外れるかもしれないけどvbeに行間なく詰めて書いたコードの選択範囲に1行ずつ改行入れるいい方法ない?
281:デフォルトの名無しさん
19/05/17 12:28:45.29 gxvYGXpT0.net
そんなのできない。サクラエディタで置換して貼り付けろ
282:デフォルトの名無しさん
19/05/17 22:00:27.88 BHkVW2uG0.net
>>280
VBEを操作すればできると思う。面倒だけど
まあ>>281の方法が合理的だろうな
283:デフォルトの名無しさん
19/05/18 00:21:37.50 qrQ2t1Xp0.net
>>280
改行コードを改行コード+改行コードで置換
284:デフォルトの名無しさん
19/05/18 00:55:20.52 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:デフォルトの名無しさん
19/05/18 19:27:39.15 4RzeW/b40.net
専用のメソッドがあるのが凄いわ。
何を想定して用意してあるんだろう?
プログラムがプログラムを書き直すAIにでも使うのか?
286:デフォルトの名無しさん
19/05/18 20:16:07.59 8gQadrhx0.net
Application.VBE.ActiveCodePane
こんなの合ったのか
PaneはPanelかと思ったら、ペインの事なのね
287:デフォルトの名無しさん
19/05/18 20:29:02.38 P5JmHxRDM.net
VBEを拡張するためのオブジェクト群が用意されてるんだよね
288:デフォルトの名無しさん
19/05/19 09:22:38.02 MCPGuHEx0.net
Excel4マクロは自己書き換え自由だったから
機能的に負けるわけにはいかなかったんじゃね?
289:デフォルトの名無しさん
19/05/19 11:43:42.11 1xMNIuy/x.net
配布済マクロの修正パッチとかで大量のファイルや行を一括修正したいときは便利
290:デフォルトの名無しさん
19/05/19 12:03:05.34 igxNvdy7a.net
単価の低そうな涙ぐましい仕事だな
291:デフォルトの名無しさん
19/05/19 12:39:30.70 gILK5dpZ0.net
マクロ4はできる人がいない+やりたくないから単価超高いぞ
で、単価高くしても足が出る・・・
292:デフォルトの名無しさん
19/05/21 19:13:05.44 7gg6L6p3p.net
実行から終了まで数分かかるマクロを途中で止める方法ないですか?f4押したら「処理を止めました」のメッセージボックスとともに停止するとか。
293:デフォルトの名無しさん
19/05/21 19:31:11.94 OX+uPiO40.net
Break
ESC
294:デフォルトの名無しさん
19/05/21 19:37:07.71 K+4dE9j10.net
ループが長いならDoEvent入れておいて
msgbox "終了します"とendだけ書いたのを起動できるボタンどっかに置いとけばいい
295:284
19/05/21 20:04:23.19 MD1oUmkY0.net
ESCやBreakで止まるなら良いけど、それで止まらない処理ならウィンドウESC押しながらタスクバー上でマウスでウィンドウの切り替えをすると止まる。
どっかのブログで見て知ったけど役に立ってる。
296:デフォルトの名無しさん
19/05/21 21:15:28.57 QvaiZxJv0.net
こうする
URLリンク(youtu.be)
297:デフォルトの名無しさん
19/05/21 21:30:20.69 7gg6L6p3p.net
ほー
明日試してみます
298:デフォルトの名無しさん
19/05/21 22:08:13.75 R92gi7e40.net
2009/12/16に公開って何だよ。
20年くらい前に見たぞそれ。
299:デフォルトの名無しさん
19/05/22 06:58:44.20 SD95iW5CM.net
>>298
映像はどうみても20年以上前だな
的確な対応で現在も使える
300:デフォルトの名無しさん
19/05/22 09:27:28.15 ztZYN21m0.net
セルの値を数式に代入って無理でしょうか?
たとえばA1セルに乱数が入ってた場合に
どっかのセルに =A2-乱数 という数式を代入したい感じです
301:デフォルトの名無しさん
19/05/22 09:41:17.90 5+y7OppMM.net
=A2-A1
302:デフォルトの名無しさん
19/05/22 09:43:43.65 ogyeLG/uM.net
演算あり値コピーの話?
303:デフォルトの名無しさん
19/05/22 09:52:11.18 AHnUJ8Jk0.net
いやセル番地じゃなくて値を数式に代入したい感じです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入
A1セルが387だとしたら
=A2-387
説明下手糞で申し訳ないです
304:デフォルトの名無しさん
19/05/22 09:54:20.78 hC9fKDDe0.net
>>300
書いている意味がよくわからんど
セルに式でも値でも代入できる
ただ、乱数は曲者で常に変わるから
もう少しやりたいことを具体的に書き込もう
305:デフォルトの名無しさん
19/05/22 10:00:56.85 hC9fKDDe0.net
>>303
乱数は曲者で
A1セルが387だとしたら
=A2-387
ほかのセルに「=A2-387」を入れた時点でA1セルは変わるから
もう少し何をしたいのか書くように
306:デフォルトの名無しさん
19/05/22 11:59:27.46 zi+TqRd2r.net
そもそも数式はスレ違いだろ
VBA関係ないならどっかエクセルの使い方の板かスレかさがせ
307:デフォルトの名無しさん
19/05/22 13:17:58.06 /GezpU1zp.net
>>305
A1セルの乱数結果が現時点で387だとしたら
変数(仮にrとする)に、387を格納して
ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事?
それなら確かに関数じゃできないよね
308:284
19/05/22 13:58:22.19 WDej9GuM0.net
>>303
Range("C3").Value="=A2-" & Range("A1").Value
じゃ駄目?
309:デフォルトの名無しさん
19/05/22 16:05:46.41 hC9fKDDe0.net
>>307
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな
310:デフォルトの名無しさん
19/05/22 18:12:45.70 j7jZt3jJM.net
説明下手糞ってレベルじゃねぇぞ…
311:デフォルトの名無しさん
19/05/22 18:48:51.39 RRuRLAJCM.net
>>309
ちょっとしたシミュレーションで使うかもしれない。(Excelでやるとは言ってない)
>>302じゃダメなの?
312:デフォルトの名無しさん
19/05/22 19:16:53.47 CZzIGWUTM.net
>>311
ちょっとしたシミュレーション・・無いだろ
この文書力だとセルに入れたい式って
計算式の文字列かもしれん
313:デフォルトの名無しさん
19/05/22 22:59:24.50 bxcYYOqD0.net
もうあれだ。
ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。
314:デフォルトの名無しさん
19/05/22 23:13:17.16 K7mhmRd90.net
完全乱数を使って円周率の計算をする
315:デフォルトの名無しさん
19/05/23 07:43:57.81 mLR+BkfhM.net
別に用途は何でもいいさ
興味ゼロってわけじゃないけど
316:デフォルトの名無しさん
19/05/23 10:22:05.81 WDXUv9KM0.net
こっちで作って欲しいと言われたものをつくってると
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう
っていうことないっすか
もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって
317:デフォルトの名無しさん
19/05/23 10:56:07.55 cSCM+dO10.net
厚労省で配布されている
URLリンク(www.mhlw.go.jp)
にある
URLリンク(www.mhlw.go.jp)
なんだけど、内容は単純で
1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの
1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る
VBAで各シートを集計して総括表に転写する
なんだけど、VBAみて
変数が多すぎてコーディング中に間違えても気づかんだろってのと
引っ張ってくるセルをConstで決め打ちしてるけど
これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。
というか、エラーメッセージの所で間違えて
行を表示すべきところを列表示しているけど
これこそ変数多すぎて分かりにくくした事が原因だと思います。
じゃあどうする、と言われたらみなさんならどうしますか?
同じ形の複数の2次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが
後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね
318:デフォルトの名無しさん
19/05/23 11:43:15.47 mLR+BkfhM.net
>>316
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。
こういう話もあるし
URLリンク(lite.blogos.com)
319:デフォルトの名無しさん
19/05/23 16:11:36.77 hFcQqqxb0.net
>>316
ただ単純に業務全体を見ずに作るから役に立たないんだよ
業務に対して目的と効果を文書ではっきり示せば古参の意見を聞かなくていい
320:デフォルトの名無しさん
19/05/23 16:13:59.49 X/3FpVKz0.net
>>316
その古参の上司に報告しろ
321:デフォルトの名無しさん
19/05/23 16:14:38.98 hFcQqqxb0.net
>>317
すまん、リンク先を読む気もしない
322:デフォルトの名無しさん
19/05/23 17:56:30.55 pyUsEGpsM.net
>>317
べき論の先には「VBAを使うのをやめるべき」という結論しかないから不毛よ
俺ならどうするか?下請けに丸投げして終わりだよ
323:
19/05/23 19:35:05.76 QGT5qlDg0.net
>>318
>義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ
脅かすことでプログラミングができるようになるとはおもいませんが…
プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません
324:デフォルトの名無しさん
19/05/23 20:39:50.63 X/3FpVKz0.net
機械学習やweb系ならともかく、
VBAレベルなら極めて事務的な仕事だろう。どこにも創造性なんて無いよ
ルーチンワークを自動化させてるだけ
325:
19/05/23 20:58:31.34 QGT5qlDg0.net
>>324
でもそのルーチンワークを実際に記述するとなると一本道というわけにはいかないでしょう?
論理的な一貫性を維持しながらしたいことを記述するのは、いわれているほどやさしい仕事ではない
326:デフォルトの名無しさん
19/05/23 21:06:10.14 X/3FpVKz0.net
>>325
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度
面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい
327:デフォルトの名無しさん
19/05/23 22:12:48.96 0Fgm70+GM.net
まあ、自己満足で終わるなら簡単だな
おばはんにも満足いくように作るんだよ
328:デフォルトの名無しさん
19/05/23 22:27:50.56 49rcJhkB0.net
>>317
コンスト過ぎてワロタ。
329:デフォルトの名無しさん
19/05/23 22:55:08.55 EGX4zlJj0.net
>>323
それもそうだが、その老害を大人しく
させることができれば上出来と考えた
330:デフォルトの名無しさん
19/05/24 01:42:55.95 9kKOGm+S0.net
Excel2016にてpersonal.xlsbに「保存せず閉じて開き直すマクロ」を作ったところ挙動が変です
Sub ReOpen()
Dim wb As Workbook
Dim path As String
Set wb = ActiveWorkbook
path = wb.fullName
'※1
If MsgBox("本当に変更を取り消しますか?", vbYesNo) <> vbYes
Exit Sub
End If
wb.Close(False)
Application.Wait([Now() + "00:00:01"])
'※2
Workbooks.Open(path)
End Sub
このマクロ自体は動くのですが、※1のIf~EndIfを消すと※2のOpen実行直後にExcelが通知無く落ちます
また、※1※2を両方消してマクロ実行した後、手動でブックを開き直すとやっぱりExcelが落ちます
対象のブックはフォームやマクロを含んだ3MB程度のxlsmファイルです
MsgBox出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです
331:デフォルトの名無しさん
19/05/24 01:44:27.87 9kKOGm+S0.net
あ、Ifの末尾のThen忘れたので脳内で補完してください
332:デフォルトの名無しさん
19/05/24 06:40:29.33 /lvzTPqGM.net
>>331
ハイ イイエ が逆なのも利用者が自動変換するんですね
333:デフォルトの名無しさん
19/05/24 06:54:20.73 /lvzTPqGM.net
>>332
すまん、継続がキャンセルか
334:デフォルトの名無しさん
19/05/24 09:59:52.88 RAYiE+wA0.net
>>330
2019で試したけど落ちなかった
> Application.Wait([Now() + "00:00:01"])
これを抜いても同じ
カンで答えると、再計算が邪魔してるような気がする
・一度再計算や描画、イベントを切ってみてはどうかな
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
・あとはこの部分のウェイトをもう少し長くする
>Application.Wait([Now() + "00:00:01"])
・まっさらなブックで試してみる
335:デフォルトの名無しさん
19/05/25 07:54:51.56 TRopVMeK0.net
アドインって、ファイルを閉じたら、
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。
336:デフォルトの名無しさん
19/05/25 08:55:38.15 nkVbmNSl0.net
vba実行中というかずっと残るっぽい
337:デフォルトの名無しさん
19/05/25 09:55:42.63 wPp02VNQ0.net
エクセルの機能に追加してるからな
アドイン使ったファイルをアドインがないエクセルで編集すると壊れるよね
338:デフォルトの名無しさん
19/05/25 10:07:50.37 wPp02VNQ0.net
>>330
経験上納得できない動作をするときは何か見落としているところがある
step実行で場所特定して、各変数の値が壊れてないか確認
イミディエイト画面で入力してみるなど
339:デフォルトの名無しさん
19/05/25 10:14:01.11 D2XIJyZK0.net
Excelに限って言えば、Excel自体に変な仕様が多い
これが男を惑わせる
340:デフォルトの名無しさん
19/05/26 04:10:46.96 xQGdFtWrM.net
>>334
元に戻さないアホがいると大迷惑になるな
>>335
アドインはExcelに組み込むよね
>>339
配列数式なんか使うとブーイングになるよな
341:デフォルトの名無しさん
19/05/26 15:23:19.13 /taseRUt0.net
以下の状態だとB1~B3は全て1:1048576と表示されてしまいます
Cells.SpecialCellsをRange("A1").SpecialCellsに変更した場合はB1~B3は全てA1と表示されます
Ctrl + Endで選択されるセルの番地を文字列として取得するにはどうすればいいですか?
A B
1 Sheet1 =fn(A1)
2 Sheet2 =fn(A2)
3 Sheet3 =fn(A3)
Public Function fn(sSheetName As String) As String
fn = ActiveWorkbook.Worksheets(sSheetName).Cells.SpecialCells(xlCellTypeLastCell).Address(False, False)
End Function
342:デフォルトの名無しさん
19/05/26 15:41:58.63 /taseRUt0.net
関数呼び出しではなくマクロやボタンクリックでなら問題なかったので
そっちの方法に切り替えますすみません
343:デフォルトの名無しさん
19/05/27 06:52:50.90 lha2yOvQp.net
入力項目を複数用意したinputboxって作れますか?
344:デフォルトの名無しさん
19/05/27 07:55:59.33 6csejWaN0.net
>>343
どんなものを考えているんだ
345:デフォルトの名無しさん
19/05/27 08:12:50.88 lha2yOvQp.net
>>343
ごめん入力フォームじゃなくていいかも
最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました)
・AUTO openで開く
・押すと特定セルに文字が入力されるボタンを複数設置する
・カレンダーを設置する
・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する
346:デフォルトの名無しさん
19/05/27 08:30:52.72 jh6nOFVKM.net
>>345
こんな特殊なものAUTO openでやるって非常識だな
シートのマクロで十分だろてかマクロは印刷して保存だけでいいだろ
それも自動記録でも十分
347:デフォルトの名無しさん
19/05/27 08:37:02.21 jh6nOFVKM.net
Excelの勉強不足だろ
348:デフォルトの名無しさん
19/05/27 08:47:00.50 6csejWaN0.net
>>345
それユーザーフォームにする必要がないような
ユーザーフォーム超めんどいから止めたほうがいいよ
あと、カレンダーはデイトピッカーと言う
349:デフォルトの名無しさん
19/05/27 09:45:56.73 W0zr6KdF0.net
この程度の理解力だとカレンダーが必要かもわからない
カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから
最適な解もわからない
入力をシートに反映するなんて普通にセルを参照すればいいだけ
ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき
これでも少しおだててるが
350:デフォルトの名無しさん
19/05/27 10:37:56.08 6csejWaN0.net
おだてるの意味間違えてるよ。
351:デフォルトの名無しさん
19/05/27 10:41:41.92 W0zr6KdF0.net
>>350
いや~そうでもないよ
理解力は両方とも0.1%~0.01%程度と思ってたから
352:デフォルトの名無しさん
19/05/27 11:25:38.71 bVlhmZqp0.net
てか、みんなが
>>345←この説明で全容を理解できてるのがすごいとおもったけど
いろんな意味に解釈できそうで、おれにはそのうちの一つには絞りきれないんだけど
353:デフォルトの名無しさん
19/05/27 11:44:36.09 dknccbkiM.net
>>352
教えたい人種の大半は問題の表層を自分の得意分野に転換して持論を得意気に展開してるだけ。
質問者の問題の背景に寄り添って解決を計ろうとする者は僅か。
354:デフォルトの名無しさん
19/05/27 13:50:33.03 6csejWaN0.net
>>352
どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能
355:デフォルトの名無しさん
19/05/27 14:00:43.29 zUYqf9yC0.net
>>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。
あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。
疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。
技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
356:デフォルトの名無しさん
19/05/27 14:36:42.16 dknccbkiM.net
>>355
この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。
357:デフォルトの名無しさん
19/05/27 14:38:46.48 YnNlAtYud.net
>>356
そうくると思ったw
358:デフォルトの名無しさん
19/05/27 14:55:28.65 W0zr6KdF0.net
>>355
具体的に簡単にできる方法を説明してやれよ
359:デフォルトの名無しさん
19/05/27 14:59:26.84 6csejWaN0.net
>>358
まだ出せない
要件定義ができていないので、そもそもどういう設計が最適かも分からない
現状のまま作るのはめんどくさすぎる
具体的に言うとデイトピッカー、お前だ
360:デフォルトの名無しさん
19/05/27 15:11:18.55 W0zr6KdF0.net
>>359
要件定義・・?この理解力だと
当然仕事に対する理解力もないってことだよ
361:デフォルトの名無しさん
19/05/27 15:14:09.75 6csejWaN0.net
>>360
そこを何とかするのが面白いんじゃないの
マウント取りたいならハエやカエル相手にしてればいいだけだしね
362:デフォルトの名無しさん
19/05/27 15:29:12.90 W0zr6KdF0.net
>>361
だったら適当にすれば(笑)
出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな
363:デフォルトの名無しさん
19/05/27 15:39:29.96 W0zr6KdF0.net
>>361
きみはハエやカエル相手にして面白がってる
引きこもりさんってことね
364:デフォルトの名無しさん
19/05/27 15:42:22.97 6csejWaN0.net
>>362>>363
韓国人?
365:デフォルトの名無しさん
19/05/27 15:42:59.47 6csejWaN0.net
おだてるの意味もわかってないみたいだし、韓国の方でしたか
そりゃ話も合わないな
366:デフォルトの名無しさん
19/05/27 15:44:13.29 W0zr6KdF0.net
>>364
きみはハエかカエル?
367:デフォルトの名無しさん
19/05/27 15:45:54.11 W0zr6KdF0.net
>>365
ハエかカエル?
しかたないな
368:デフォルトの名無しさん
19/05/27 15:53:54.48 6csejWaN0.net
おだてる・・・w
369:デフォルトの名無しさん
19/05/27 16:04:29.34 6csejWaN0.net
これ以外の高速化ってありますか?
URLリンク(15g.jp)
370:デフォルトの名無しさん
19/05/27 16:27:23.36 aE9KPqY2M.net
>>369
これで問題ある場合はループしてるロジックが悪いか
ネットアクセスではありませんか?
371:デフォルトの名無しさん
19/05/27 16:42:48.59 6csejWaN0.net
>>370
運用方法が急に変わりまして・・
毎日 100ループ→毎時間 20000ループ
他の高速化が無いものかな、と
特になければ諦めてロジック組み直します
372:デフォルトの名無しさん
19/05/27 16:43:14.09 2J++TcAHM.net
再描画を止めるのは好かんな
373:デフォルトの名無しさん
19/05/27 17:19:36.20 aE9KPqY2M.net
>>371
セルへのアクセスを減らし
変数テーブルで処理をするぐらいかな簡単なのは
374:デフォルトの名無しさん
19/05/27 17:53:10.57 aE9KPqY2M.net
変更のないセルはかきかえない
変数の型をこていするかな
375:デフォルトの名無しさん
19/05/27 20:18:12.39 28fQIolrF.net
>>369
完全に嘘。
そもそも、それなりに書ける奴ならこの手法では速くならない。
376:デフォルトの名無しさん
19/05/27 20:19:14.57 28fQIolrF.net
逆に、これで格段に速くなったら恥ずかしいと思うべきだ。
377:デフォルトの名無しさん
19/05/27 20:29:10.36 eWpgS1rnF.net
高速化については下記が参考になる。
URLリンク(excel-ubara.com)
378:デフォルトの名無しさん
19/05/27 21:03:48.67 TIEuQB3m0.net
>>345
できるけど、一番最後の処理が事故を起こしそうだから1クッション置いた方がいいかも
379:デフォルトの名無しさん
19/05/27 21:13:42.01 Soi68xiZ0.net
セルというかシートは使わない
データ保存には外部バイナリファイルを読み書きする
380:デフォルトの名無しさん
19/05/27 21:16:23.22 TIEuQB3m0.net
>>369
これは描画を抑制するからその分の時間がかからなくなるというだけなので、表示に因らない処理の速度アップはまた別だよ
381:デフォルトの名無しさん
19/05/27 22:07:18.66 9GzIJnKt0.net
何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww
いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。
382:デフォルトの名無しさん
19/05/28 01:04:45.98 Rr62XR8Vx.net
ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある
383:デフォルトの名無しさん
19/05/28 08:43:02.61 8P1bQTIM0.net
入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。
Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
384:デフォルトの名無しさん
19/05/28 09:44:28.89 CE2aKfrCH.net
初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない
どんな時に便利なの?
385:デフォルトの名無しさん
19/05/28 09:47:42.25 rhAlx8Ij0.net
>>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ
vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
386:デフォルトの名無しさん
19/05/28 09:55:56.33 JWvhlEsx0.net
Findを利用したコードについて教えて下さい。
書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A~C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1~G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。
ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
A B C D E F G
1 日付 売上 担当者 000 AAA たろう
2 000 AAA たろう 333 DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ
387:デフォルトの名無しさん
19/05/28 09:56:25.54 JWvhlEsx0.net
386のつづき
Sub Find()
Dim temp As Range, tempAddress As String, i As Long
With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row
Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub
Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
388:デフォルトの名無しさん
19/05/28 10:10:54.71 CE2aKfrCH.net
>>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?
コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?
そういやfunctionを関数みたいに使う場合もあると聞いたな
389:デフォルトの名無しさん
19/05/28 10:32:00.95 P/fMeUQp0.net
>>384
>>385意見に賛成だが少し付け加えます。
基本的にsubにしろfunctionにしろ長くだらだら作らない
出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする
その時に値を返せるfunctionの方が圧倒的に有利
初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る
それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
390:デフォルトの名無しさん
19/05/28 11:24:47.87 aRCJr/ZnM.net
>>384
ネタでしょ?
モドリッチがない方が便利だなんて、そんな訳ないじゃん
391:デフォルトの名無しさん
19/05/28 11:26:30.05 CE2aKfrCH.net
>>389
あーその説明で分かった ありがとう
たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ
392:デフォルトの名無しさん
19/05/28 12:23:13.41 1q3vxt7ga.net
OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします
上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです
しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です
私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
393:デフォルトの名無しさん
19/05/28 12:47:38.41 i1bbppKtM.net
>>392
ウィルスメールの作成方法きいてる様なもんだなw
394:デフォルトの名無しさん
19/05/28 12:51:48.37 Z4r31YmpM.net
>>392
まずは社内でOLのセキュリティ設定がどうなのか。
ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない
395:デフォルトの名無しさん
19/05/28 13:44:15.47 P/fMeUQp0.net
>>392
まあ、バカ上司をサポートするのと
バカ上司の影響をサポートするのと
どちっがしたいんだ?
396:デフォルトの名無しさん
19/05/28 13:45:21.90 8P1bQTIM0.net
>>388
VBA初心者にありがちな意見だね。
プログラムを組む時の考え方が全く違う。
組める奴なら最初から構造的に考える。
動きゃ良いなどと考える奴はいない。
397:デフォルトの名無しさん
19/05/28 13:48:09.91 8P1bQTIM0.net
>>392
マクロでやらなくても承認ボタンを追加する機能があった筈だが。
398:デフォルトの名無しさん
19/05/28 13:50:35.37 i1bbppKtM.net
> VBA初心者にありがちな意見だね。
はい、きょうもマウント取りたい人が来ましたよ
399:デフォルトの名無しさん
19/05/28 14:01:27.19 8P1bQTIM0.net
>>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。
あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。
400:デフォルトの名無しさん
19/05/28 14:03:33.28 8P1bQTIM0.net
>>398
マウントも何も、明らかに初心者なんだから仕方ないだろ
401:デフォルトの名無しさん
19/05/28 14:18:44.11 rhAlx8Ij0.net
> VBA初心者にありがちな意見だね。
この部分は必要なかったんだよなぁ
402:デフォルトの名無しさん
19/05/28 14:34:43.00 8P1bQTIM0.net
>>401
必要なんだが。
403:デフォルトの名無しさん
19/05/28 15:27:43.49 m2eXkVaQM.net
初心者お断りな質問スレが存在した…?
404:デフォルトの名無しさん
19/05/28 15:33:18.00 rhAlx8Ij0.net
>>402
君はそう書かないと回答できないのか、なるほど
興味深い
405:デフォルトの名無しさん
19/05/28 15:57:40.29 JWvhlEsx0.net
>>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。
VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m
406:デフォルトの名無しさん
19/05/28 15:58:05.43 8ZgSX7bEF.net
>>404
構造的に考えるべきという意味付けの為に必要。
初心者にありがちだということで、初心者からレベルアップした方が良いということになる。
407:デフォルトの名無しさん
19/05/28 16:01:17.83 8ZgSX7bEF.net
>>405
別に迷惑でも何でも無い。
元々、初心者の質問に難癖を付けた奴が悪いと思ったから>>355を書いたんだが、内容を見ずに変に絡んでくる奴が出てきただけのこと。
408:デフォルトの名無しさん
19/05/28 18:23:49.73 PIv3udRAr.net
i=の行をloopの中に入れる
409:デフォルトの名無しさん
19/05/28 18:25:13.81 PIv3udRAr.net
その上のtempaddressも
410:デフォルトの名無しさん
19/05/28 18:29:24.54 Bg5LHkgbH.net
マウントしてると誤解を招くような
会話しかできない奴は能力低い奴多い
他人の意見も聞かないしね。
傲慢が後に返り討ちにあう
411:デフォルトの名無しさん
19/05/28 18:33:26.76 C7Ijh9EKa.net
>>397
こんなんあったんですね!
自分で作るなら他にも機能足してたかもしれないけど、これなら簡単で皆で使えるからこれでいきます
ウイルスメールの作成方法……確かに……
412:デフォルトの名無しさん
19/05/28 19:06:09.82 +01nmcZGF.net
>>410
誤解を招く前に、プライドに触ったのか碌に内容読まずに絡む奴の方がよっぽど問題だと思うが。
413:デフォルトの名無しさん
19/05/28 19:42:52.66 ID0apHa80.net
ところでここは「Exce VBA」の質問スレ
414:デフォルトの名無しさん
19/05/28 19:55:29.19 P/fMeUQp0.net
>>410
マウントしたい奴と思ったら絡むなよ
意味もなく伸びrだけ
415:デフォルトの名無しさん
19/05/28 22:28:38.54 6NK7Ep/b0.net
>>384
functionなら1行で書ける!
と思ったけど、よく見たらどっちも2行かかるな。
Dim A
A = function()
Dim A
sub(ByRef A)
functionのメリットって何だろ?
1個しか返せないし。
416:デフォルトの名無しさん
19/05/28 22:45:21.26 g3Ue34fJ0.net
>>415
馬鹿はいい加減黙れよ
417:デフォルトの名無しさん
19/05/28 22:46:58.82 exe6lUi60.net
>>415
教えてほしいなら教えてくれと言えば良い
君以外全員わかってるぞ
418:デフォルトの名無しさん
19/05/28 23:03:25.05 sz8y6/Um0.net
>>416
容赦なくてワロタw
>>415
If func(x) Then
とか
func1(func2(a), func3(b))
とか
419:デフォルトの名無しさん
19/05/28 23:15:31.12 MN8nEIAEd.net
>>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。
何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。
>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。
420:デフォルトの名無しさん
19/05/28 23:18:36.46 MN8nEIAEd.net
>>418
むしろ
Function Hoge(Arg() As String) As String()
の方が適切かな。
或いは
Function Hoge(Arg() As String) As Collection
とか。
421:デフォルトの名無しさん
19/05/28 23:45:10.83 sz8y6/Um0.net
>>419
AddressOf で関数を返すことすら出来るのだ
422:デフォルトの名無しさん
19/05/28 23:58:45.95 0rD99vo/0.net
IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)
むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう
423:デフォルトの名無しさん
19/05/29 00:02:34.60 S0wmSPvZ0.net
2年ぐらい前にもSubとFunctionに違いなんかないと言い張る粘着がいたのを思い出した
424:デフォルトの名無しさん
19/05/29 00:03:33.14 6UUzdaAE0.net
BASICなんだからGOTOだけで十分
425:デフォルトの名無しさん
19/05/29 00:47:16.25 aQ2xiGWFd.net
>>421
おう、ここで初めて高度な話を見た。
426:デフォルトの名無しさん
19/05/29 03:04:42.46 1woLKBVkM.net
・Sub
・返り値のないFunction
この違いは何ですか?
427:デフォルトの名無しさん
19/05/29 04:29:34.43 WducifPVa.net
subじゃ1個も値返せないじゃん
428:デフォルトの名無しさん
19/05/29 05:02:37.42 E4T3mNp50.net
戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた
subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。
ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。
429:デフォルトの名無しさん
19/05/29 08:46:31.68 WZbm0MMEM.net
>>428
単体で実行できるかどうかはSub/Function の差じゃなくて、引数を取る/取らないの差じゃなかったっけ?
430:デフォルトの名無しさん
19/05/29 08:57:09.71 dT9QfEjx0.net
>>429
正解
Sub foo() '単体実行可能
End Sub
Sub bar(baz) '単体実行は出来ない
End Sub
431:デフォルトの名無しさん
19/05/29 08:58:24.42 dT9QfEjx0.net
あと、実行可能かどうかはpublic/privateで切り分けるべきだろう
432:デフォルトの名無しさん
19/05/29 09:10:25.71 QQeifizk0.net
セルに式として関数を入力して呼べるFunctionと呼べないSub
433:デフォルトの名無しさん
19/05/29 09:17:16.17 dT9QfEjx0.net
>>432
あれ、じゃあ何のためにsubって存在するんだ
return 0しなくていいってだけ?
434:デフォルトの名無しさん
19/05/29 09:30:42.49 dT9QfEjx0.net
基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない
と考えると自然と思うんだけど、どうだろう
この考えだと、private subは使うべきじゃないって事になる