- 1 名前:デフォルトの名無しさん [2017/05/16(火) 08:24:45.78 ID:iIGA/64l0.net]
- !extend:checked:vvvvv:1000:512
スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1489557874/ ※関連スレ VBAなんでも質問スレ Part2 echo.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 echo.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 125 echo.2ch.net/test/read.cgi/bsoft/1481369538/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 152 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:21:30.49 ID:yUPIrMPGd.net]
- >>142
金融でもいわゆるOA環境は与えられててネットは見れるだろ
- 153 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 23:25:21.82 ID:KgZfg/yx0.net]
- >>139
どっちの試行錯誤も意味があるんじゃね 試行錯誤が無駄といったのはそっち
- 154 名前:デフォルトの名無しさん [2017/05/22(月) 23:36:28.18 ID:fGR6ky/u0.net]
- 空白と重複をなくしたドロップダウンリストを作成したいんだけど、作業列つくらないと厳しいですか?
A列に重複がたくさんあるものから、重複を削除したリストをB2に追加したいですが、VBAでは厳しいですか?
- 155 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 23:39:29.41 ID:W5+S3ypfM.net]
- >>148
繰り返しとifでいける
- 156 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 23:41:44.53 ID:EzxM7okx0.net]
- vba使い始めた頃はヘルプに結構お世話になったけどなあ
最近のバージョンだとオフラインのヘルプが入ってないからきついよね >>128のバージョンもダメなやつなのかな
- 157 名前:デフォルトの名無しさん [2017/05/22(月) 23:43:11.76 ID:fGR6ky/u0.net]
- >>149
ループでリストってできるんですか!!知りませんでした。 例えば1〜"A1に入力された数字"までのリストとかも可能ですか?? A1に20とあった場合、1・2・3・4・5・6・・・・20といった感じで。
- 158 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 23:49:46.04 ID:g3oHLvAy0.net]
- >>151
Sub Macro1() arr = "" For tmp = 1 To Cells(1, 1).Value arr = arr & "," & tmp Next Cells(1, 1).Validation.Delete Cells(1, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=arr End Sub >>148 vbaでもできるけど作業列作ったほうが早いと思う 俺なら作業列を使う
- 159 名前:デフォルトの名無しさん [2017/05/22(月) 23:57:33.95 ID:fGR6ky/u0.net]
- >>152
完璧すぎて鼻水でました ありがとうございます
- 160 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 23:58:56.03 ID:EzxM7okx0.net]
- 俺も作業列勧めるな
直値で入れると文字数の制限があるだろ
- 161 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 00:12:52.19 ID:fMtQNmiV0.net]
- >>149
If 俺 = "イケメン" Then 俺 = 俺 & 彼女 End If
- 162 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 00:30:37.63 ID:bLVWAbWWM.net]
- >>155
イケメンだったらおまえが消えて新しい命に書き換えられてしまうな
- 163 名前:デフォルトの名無しさん [2017/05/23(火) 01:06:28.10 ID:G9caL/WXp.net]
- >>155
実行時エラー 型が一致しません。
- 164 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 01:16:03.77 ID:aBKdrymv0.net]
- >>157
酷過ぎワロタwww
- 165 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 02:03:21.06 ID:3SYK1IcP0.net]
- >>139
省略する人は試行錯誤を大してやらないよ。 答えを求める奴は結局身にならない。 昔、高校受験用に行ってた塾にいた天才共は英語の辞書を丸暗記してたが俺は天才じゃ無いので英語の使い方(しくみ)を勉強した。 プログラミングもしくみが重要で個々の単語は都度調べれば良い。 本は必要無いと思うけど有っても良いとは思うし、自分もかなり買う方だ。 でも自分が本を買うのは興味からだな。 あ、自分は今はVBAの本を買うことはありません。 初心者なら読んでおもしろそうだったら買ってみれば良いんじゃない?
- 166 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 06:24:30.98 ID:2tE3UxZ+0.net]
- 多分その天才どもは英語の仕組みは既に把握したうえで、
上積みとして単語を丸暗記してるんじゃないか? 仕組みがエンジン、単語がガソリンと考えたら、 エンジンだけでもガソリンだけでも走れない。 効率の良いエンジンは少しのガソリンでも遠くまで走れるし、 沢山ガソリン積めれば少々お粗末なエンジンでもやっぱり遠くまで走れる。 どっちが大事じゃなくて両方大事。
- 167 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 06:30:19.51 ID:DZlqaxyP0.net]
- 試行錯誤する事で答えが判らない事を解決するスキルが身につく
このスキルはVBAにとどまらない 他のことにも応用できる
- 168 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 06:50:44.94 ID:3FTCY8r/r.net]
- 本は嘘が書かれてたりするから厄介
想定読者の知識レベルに合わせる理由でいろんな説明を端折ってミスリーディングな表現になってしまってたりするし、著者の知識が根本から間違ってるときもある
- 169 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 07:27:49.86 ID:pxpR
]
- [ここ壊れてます]
- 170 名前:UDcgM.net mailto: 結局身に付かないから自分で調べろとかw
ここで聞くってことは理解したいんじゃなくて答えが知りたいだけなんだよ 教える気がないなら黙ってろ [] - [ここ壊れてます]
- 171 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 07:34:02.08 ID:Y2XmHkKh0.net]
- >>163
勉強の仕方の話だよ 回答はする
- 172 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 10:12:46.48 ID:3SYK1IcP0.net]
- >>163
ほら、これが弊害だ。 きちんとアンカー追っていけば初心者がどうやって勉強すれば良いかの話から来てるのがわかる筈。 直近のレスだけ見るような手っ取り早さを求めるような奴には教えても無駄になるだけだ。
- 173 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 10:34:38.44 ID:BzWPCBXiH.net]
- >>159
一生、 > Range("A1").Select > Selection.Value=1 > Range("A1").Value=1 みたいなレベルを手探りで探し出すようなことやってろよ。誰にも迷惑かからないし。 だが、人には勧めるな。
- 174 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 11:06:55.30 ID:3CTg7HpXa.net]
- >>166
それが分からないようじゃレベルがうかがいしれるねw というか、あれを書いた俺がそんなレベルに無いことなんて想像も出来ないのか? 多少出来る奴なら誰でもマクロ記録のままのゴミコードを否定するだろうよ。
- 175 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 11:58:25.09 ID:IihgumLkM.net]
- >>167
時間が無駄だってことだと思う お前の技術レベルの話じゃない 物事には期日があるんだからそんなどうでもいいことに時間使うんなら本買った方がいい
- 176 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:01:49.66 ID:ZBpIQRDpM.net]
- >>167
コミュ障技術者にありがちなバランス感覚の無さだな VBAを理解する事が目的じゃないんだよ
- 177 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:06:29.03 ID:TeKp5Ts0d.net]
- Validationて何だ?
と思うくらいExcelのオブジェクトのことを知らない。 VBAばっかりだからなあ
- 178 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:08:14.56 ID:BzWPCBXiH.net]
- >>167
> というか、あれを書いた俺がそんなレベルに無いことなんて想像も出来ないのか? お前のレベルなんか知ったこっちゃない。 > 多少出来る奴なら誰でもマクロ記録のままのゴミコードを否定するだろうよ。 ケースバイケースだし、議論する価値ない話題だね。
- 179 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:09:17.49 ID:TeKp5Ts0d.net]
- 友達じゃあるまいしな
- 180 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:19:37.53 ID:DZlqaxyP0.net]
- >>168
それは答えが判ってる事にしか使えない 仕事では誰にも答えが判らない事を解決する事も多い 答え合わせができる問題で訓練した方が良い
- 181 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:26:08.31 ID:DZlqaxyP0.net]
- 答えが判ってることを効率的に片付けるには
答えを聞いたり調べれば良いけど 答えが判っていない新しいことを実現するには その方法は使えない 自分で考えずに答えを求める事が 日本でイノベーションとかが比較的少ない原因かもな
- 182 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:29:05.48 ID:BzWPCBXiH.net]
- 新しい何かを始めるにあたって、入門書を読むとこから始めるのが「答えを求めること」なのか
- 183 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:36:08.12 ID:S9zv8N7Q0.net]
- そして、答えはひとつだけでは無い
- 184 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:40:08.67 ID:DZlqaxyP0.net]
- >>176
答えは一つじゃないから 入門書にこだわる必要はないな 入門書は何のために読むの? 小説か何か? 自分が判らないことの答えを知るためじゃないのか?
- 185 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:47:15.75 ID:OJ3bnrAra.net]
- >>168
>>169 >>171 >一生、...みたいなレベルを手探りで探し出すようなことやってろよ。 に対してのレスだからコミュ障はオマエラだよ。 そもそもの話のはじまりは>>128だから具体的な案件で期日が既にあるという話じゃない。 コミュニケーションの取れない奴はこれだから困る。
- 186 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:56:20.46 ID:BzWPCBXiH.net]
- >>178
この流れのそもそもの始まりは、>>128に対して>>132みたいなレスをしたからだ。 そもそも>>128は、おすすめの入門書を聞いてるんだよ。 それを本なんか不要とするからこうなった。
- 187 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 14:43:29.82 ID:YXklfP5tx.net]
- お勧めの本は知りません
をやたら回りくどくやるのなw
- 188 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 15:12:36.24 ID:zqdwD1uL0.net]
- >>180
マは性格捻くれたクソ野郎が多いからw
- 189 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 16:36:03.71 ID:ZjKWQBEz0.net]
- たしかに>>132はクソレスだな
質問スレなんだから、素直におすす目入門書を挙げれば済む事
- 190 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:13:36.59 ID:PCM7pP9za.net]
- 横レスだけど128の質問も少し違和感がある。
"詳しい入門書"というのはなかなかないんじゃないか。 128は少なくとも全然vbaが分からないわけでわなくプロパティやメソッドの使い方が難しいと言ってるわけだから求めてるのはもはや入門レベルとは思えない。 感覚としては優しく丁寧に書いてある、という意味かもしれないが。
- 191 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:22:11.37 ID:IihgumLkM.net]
- >>173
それは設計の話だな 実装からスタートする案件だとしたら話は変わってくるけど、、、
- 192 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:45:32.25 ID:YXklfP5tx.net]
- 早く教えて挙げて
- 193 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:53:06.25 ID:IihgumLkM.net]
- >>131
- 194 名前:デフォルトの名無しさん [2017/05/23(火) 20:04:53.74 ID:vE+85AhN0.net]
- 逆引き系の本てやりたい事がズバリ書いてある事ってどんだけあるの?
本当に使えるのかいまいち信用できん
- 195 名前:デフォルトの名無しさん [2017/05/23(火) 20:24:44.89 ID:4WGZqsHw0.net]
- 星君の業務改善でいいじゃん
- 196 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:25:40.01 ID:Y2XmHkKh0.net]
- 逆引きは、逆引きがいらない事に気づかせてくれるありがたい本だよ
- 197 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:59:03.89 ID:mDga4JbQ0.net]
- そう、誰も、
本を 読んでいないのである・・・
- 198 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 21:24:06.93 ID:PaLG7AjU0.net]
- 勤務表を作りたいと考えています
A1からの各セルにA1勤務開始時間、A2勤務終了時間、A3休憩時間と入れたら A4からの各セルにA4割増無の勤務時間、A58時間以上の勤務時間、A6休日労働時間、A7深夜労働時間 とVBAを使用して入れたいのですがA7に入れる深夜労働時間の求め方が思い浮かびません 深夜勤務は22:00〜5:00の間なのですが21:00〜4:00、18:00〜6:00みたいな勤務の場合どうやって深夜労働時間を求めればいいのでしょうか?
- 199 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 21:35:35.13 ID:z+zsvOR8p.net]
- >>191
就業規則をよめ
- 200 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 21:41:04.89 ID:Y2XmHkKh0.net]
- 昔作ったなぁ
まず概念として、 0-5,5-22,22-29,29-46 と4つの区分に分ける。0-5と22-29を分けるのが味噌。一緒にするとややこしくなる 俺は甲時間 乙時間 丙時間 丁時間と名付けていた 入力は3項目じゃなく6項目。 出勤、退勤、甲乙丙丁それぞれいつ休み時間を取ったかわかるようにする 残業代は労働時間の合計-8時間になり、 休日は休日フラグを作り、勤務時間*割増分を別枠で付ける。 で、 21:00〜4:00の場合の考え方は 開始時間が5:00以前なら5:00△開始時間が甲時間(仮)。終了時間が5:00以前なら更に5:00△終了時間を甲時間(仮)から引く。これが甲時間。今回は0 乙時間も似たような感じで、開始時間が5:00~22:00なら22:00△開始時間が乙時間(仮)。終了時間が22:00以前なら更に22:00△終了時間を乙時間(仮)から引く。これが乙時間。今回は1:00 あとは丙時間、丁時間も同じように求める 個人的には関数の方が修正しやすい、見通しも良いで作りやすいと思う >>192 無能の自己紹介はいらないよぉ
- 201 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 21:41:20.14 ID:Y2XmHkKh0.net]
- >>193は>>191へのレスね
- 202 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 22:01:45.26 ID:ADqqpGm90.net]
- 以前、ここでシフト表を作りたいって人がいて、んで別スレまで出来てあれこれ皆が頑張っていたけど、途中で多分本人がやる気なくしてw
アボンだったな
- 203 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 22:07:18.85 ID:z+zsvOR8p.net]
- >>193
残業代(金額)が、労働時間-8時間(時間) とかw 好意的に解釈して残業代じゃなくて残業時間だとしても -8時間かどうかは就業規則を読まないと判らないだろ
- 204 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 22:34:24.97 ID:D2f+EUmlM.net]
- >>191
timevalue関数はご存知かな? 日時の時間部分だけをDate型に変換してくれるけど、Date型の値は24時間(=1日)を1とした数値として扱える。 以下、日付を跨ぐ値は1(=24時間)を足してます。 深夜開始 = TimeValue("22:00:00") 深夜終了1 = TimeValue("5:00:00") 深夜終了2 = TimeValue("5:00:00") + 1 出勤 = TimeValue(Range("A1").Value) 退勤 = TimeValue(Range("A2").Value) If 出勤 > 退勤 Then 退勤 = 退勤 + 1 休憩 = TimeValue(Range("A3").Value) 労働時間 = 退勤 - 出勤 - 休憩 深夜労働時間 = IIf(出勤 < 深夜終了1, 深夜終了1 - 出勤, 0) If 出勤 < 深夜終了2 And 退勤 > 深夜開始 Then 深夜労働時間 = 深夜労働時間 + IIf(退勤 < 深夜終了2, 退勤, 深夜終了2) - IIf(出勤 > 深夜開始, 出勤, 深夜開始) End If たぶんこんな感じ。 出勤表なんて作ったことないからテキトーですw おかしかったら誰か直して〜
- 205 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 22:55:16.52 ID:Y2XmHkKh0.net]
- ?cells(1,1).Address
で絶対参照の$A$1は取得できますが、 行のみ相対参照の$A1を取得する方法はありますか?
- 206 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 22:59:09.40 ID:p/2ZNHs9p.net]
- それくらいヘルプ見れ
https://msdn.microsoft.com/ja-jp/library/office/ff837625.aspx
- 207 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:08:02.98 ID:Y2XmHkKh0.net]
- >199
ありがとうございます、解決しました
- 208 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:10:34.50 ID:Y2XmHkKh0.net]
- Range.Address プロパティ (Excel)について質問です
AddressはRangeオブジェクト内の関数ですが、vbaだと、値を取得する場合はプロパティと呼ぶのでしょうか? 引数があってもプロパティと呼ぶのですか? 他言語ではオブジェクトのメンバを直接取得したり値を設定するのがプロパティ、式がメソッドと思っていたのですが、 vbaが特別なのでしょうか。それとも他にこういう区分けの言語はあるのでしょうか piyo-js.com/01/keyword.html
- 209 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:39:33.41 ID:kSdgf1uK0.net]
- プログレスバー使ったら値更新するたびにフォーカス奪うようになって別ウィンドウで文字入力とかスクロールしてると邪魔される
せっかくの長い処理中に別作業できるメリットが損なわれるようになってしまって困ってるんだけど何か解決策ないでしょか…? プログレスバーないと処理中不安になって長く感じるのでできれば使いたいです ちなみにWindows7上で使ってるExcel 2010です
- 210 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:44:33.10 ID:CFQVOeJer.net]
- >>201
Addressは要はgetterですよね Rangeクラス内部から見ればメソッドのように見え、クラス利用側から見るとメンバ変数のように振る舞いますが、 実態はString型の変数を返すメソッドでふ メソッドがパラメーターを持つのは普通のことじゃないですかね
- 211 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:47:22.57 ID:CFQVOeJer.net]
- でふって何だよ馬鹿かよ俺
- 212 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:52:40.77 ID:Y2XmHkKh0.net]
- >>191
暇だから作った www.dotup.org/uploda/www.dotup.org1258917.xlsx.html >>203 そうそう、そうなんです で、vbaではそれをプロパティと呼ぶの?という質問なんです このリンク先ではaddressをプロパティと言っています https://msdn.microsoft.com/ja-jp/library/office/ff837625.aspx
- 213 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:55:26.87 ID:CFQVOeJer.net]
- >>201
引数つきのgetter/setter(プロパティへのアクセサ)を作れるかどうかは言語仕様によります。 VBでは作れる、というだけの話
- 214 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 00:16:59.54 ID:jVvBcvpG0.net]
- 今日飲んだビール.TopValue
- 215 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 01:48:09.41 ID:nPuq94IW0.net]
- >>205
自作クラスで言うと、 property get/set/let で定義するのがプロパティ、 sub/function で定義するのがメソッド。 range.addressみたく、getだけ定義されているプロパティとfunctionは外から見たら同じようなものだし、気にする意味がないと思う。
- 216 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 07:02:03.86 ID:NmLbt9VS0.net]
- >>206>>208
なるほど、ありがとうございました 色々な考え方があるのですね >>207 韓国産でしたっけ?危険ですのでやめたほうが良いと思います お金のために健康を捨てるのはもったいないです
- 217 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 10:47:49.12 ID:ktSIKEk8H.net]
- >>202
ステータスバーに進捗状況を表示するようにしたら?
- 218 名前:デフォルトの名無しさん [2017/05/24(水) 14:14:59.56 ID:9bsixbB10.net]
- VBA勉強中の初心者です。
最終的にやりたいのはテキストエディタから一部データを抜き出すのをしたいんですが抜き出し方がわかりません。 メモ帳にログが取り込まれてそこから必要なデータを取り除きたいです。 コンビニのレシートがデータしてるものと考えてください。 それでそのレジの最後の一台当たりの発売金額がわかるんですけど発売金額を抜き出したいのですが何をどうしたらいいのでしょうか? まだ変数と制御構文くらいしか理解していません。
- 219 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 14:38:10.49 ID:ktSIKEk8H.net]
- >>211
正規表現(RegExp)を使うと、指定したパターンに適合する文字列を抜き出せる。 以下は、"発売金額 \1,000"という文字列から"1,000"を抜き出すコード。 Sub foo() Set regex = CreateObject("VBScript.RegExp") regex.Pattern = "発売金額 \\([\d,]+)" Set res = regex.Execute("aaa発売金額 \1,000 bbb") If res.Count > 0 Then Set res2 = res(0).SubMatches Debug.Print res2(0) End If End Sub
- 220 名前:デフォルトの名無しさん [2017/05/24(水) 14:44:53.85 ID:9bsixbB10.net]
- おお!ありがとうございます。
これを元に一つ一つググりながら理解していこうと思います。
- 221 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 14:53:05.51 ID:9OGm2Cju0.net]
- >>211
VBAからADO使ってログファイル読み込みその際にSQL使って絞り込み >>212 fooを使うんじゃねえhg
- 222 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 18:37:48.65 ID:NmLbt9VS0.net]
- なんでfoo使うのダメなの?
- 223 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 18:45:27.67 ID:BVqzNkwop.net]
- >>214
何でテキストファイルを読み込むのにSQLとかADO使うの?
- 224 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 18:52:32.09 ID:qKRKK3Glx.net]
- >>216
適材適所
- 225 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 19:02:38.69 ID:LTICL+DVa.net]
- HYPERLINK関数(mailto:)を使って、メールを送信するシートを作成しました。
B2からB30セルまで、ハイパーリンクが設定されている状態です。 この、B列に並んだハイパーリンクを全てクリックして自動で実行したいのですが、どのようなコードを使えばよいのか分かりません。 Hyperlink.Followメソッドでは、関数によるハイパーリンクを開けないことは分かったのですが、何か代替手段はあるでしょうか?
- 226 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 19:18:29.39 ID:NmLbt9VS0.net]
- >>218
マクロ4.0でいけるっぽい https://oshiete.goo.ne.jp/qa/7192323.html
- 227 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 20:09:08.13 ID:YRGsLxEEr.net]
- >>218
なぜハイパーリンクしてるの? VBAでセルの文字列データを取得して、それを使ってふつうにメールアイテムを作成して送信すれば良さそうだが
- 228 名前:デフォルトの名無しさん [2017/05/24(水) 20:17:47.99 ID:WW1YGaoR0.net]
- >>220
それはあらゆる場面において最低の解法 なぜかは自分で考えてね
- 229 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 20:48:39.32 ID:42FTyawn0.net]
- だから、ちゃんと教える気がないなら黙ってろと
- 230 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 20:49:24.31 ID:NmLbt9VS0.net]
- >>221
横からだけどさっぱり分からない 教えてください
- 231 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 21:12:42.89 ID:9OGm2Cju0.net]
- >>216
>>211見てなんで使わないと思ったの?
- 232 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 21:23:52.71 ID:YRGsLxEEr.net]
- >>221
あらゆる場面で、というのは随分と強い主張だな シートのUI上でハイパーリンクを設定すべきかどうか、コード側でメールアイテム作成を制御すべきかどうかは設計次第だろ
- 233 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 23:00:58.40 ID:LLuwxDnS0.net]
- >>193
>>205 ありがとうございます。入力フォーマットが既に決まっていて変更できず休憩時間を手入力させるのは難しいです 21:00〜6:00の場合、22:00〜5:00の時間が何時間含まれているかわかればいいんですがいいロジックが思い浮かびません 今思い浮かんだのは1ヶ月間を0〜744時と考えて、24(n-1)を足せば求められるんではと考えてしまいます あと今日VBAでSQLのクエリ文を作っていたのですがString型って文字数制限があるんですか? それにに引っかかったみたいで途中クエリが消えてしまい原因がわからずかなり苦戦しました
- 234 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 23:03:01.52 ID:BVqzNkwop.net]
- >>224
何でテキストをsqlで読もうとするの?
- 235 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 23:06:50.11 ID:NmLbt9VS0.net]
- >>226
数式読みなよ、全部書いてる www.dotup.org/uploda/www.dotup.org1258917.xlsx.html あとstringに制限は事実上ない 一旦varchar(255)辺りに入れてない?テーブルの制限に引っかかってる気がする
- 236 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 00:02:05.58 ID:rwwycwh80.net]
- >>227
>>211見てなんで使わないと思ったの?
- 237 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 00:54:27.96 ID:UDUA6Pg7p.net]
- >>229
sqlって何する為のものか知ってる?
- 238 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 01:14:28.72 ID:+tui60Va0.net]
- SQLはOracleに代表されるようなDBMSを制御するための言語 ExcelでもDMMSを相手にして使えるがそれはDBMSあってのこと
- 239 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 01:15:33.62 ID:+tui60Va0.net]
- ×DMMSを相手に ○DBMSを相手に
- 240 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 04:05:21.88 ID:VTDAVdX70.net]
- 別にADOは便利なツールとしても使えるだろ。
けど、俺もテキストエディタだったらもっと単純にゴリゴリしたの考えるな。 LeftとかMidとかRightとかInstrとかInstrRevとかを使ったようなの。
- 241 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 04:15:26.23 ID:VTDAVdX70.net]
- あっ、テキストエディタ作りたいんじゃ無くて、テキストからデータ取り出したいだけ?
だったら、やっぱりMidとかInstrとか基本的な関数で十分な気がするね。 >>211 発売金額はテキストの中でどんな風に位置してるの? 例えば10行目の20文字目から10桁みたいな感じ?
- 242 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 04:18:03.03 ID:VTDAVdX70.net]
- >>211
あと、何でメモ帳使いたいのかな? 別にメモ帳上でいろいろ操作することも出来るけど、少しだけ高度になるんだよね。
- 243 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 08:42:10.69 ID:QSuakdFza.net]
- >>219
ありがとうございます! リンク先に記載のコードを試してみたのですが、残念ながら「指定されたファイルを開くことができません」のエラーが出てしまいました。 普通にセルをクリックするとメールが立ち上がるのですが、vbaを使うと、このようになってしまいます… >>220 大変レベルが低い話なのですが、 滅多に触ることのない超初心者のため、作る労力とメンテナンスのことを考えて、できることは関数ですませ、vbaは最低限にしている次第です。
- 244 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 08:53:36.25 ID:MawhMErZ0.net]
- >>236
「ハイパーリンクをクリック」 逆に難易度が上がってるぞ
- 245 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 12:02:32.06 ID:KGZHRfFH0.net]
- >>236
>>219の方法でやるなら HYPERLINK関数の 第二引数を省略した形で Evaluate しないとだめよん よって ・元々の HYPERLINK関数で 第二引数を省略してしまう ・VBAで HYPERLINK関数の第二引数をカットしてからの Evaluate のどっちかにするしかない がんばってね
- 246 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 12:10:08.17 ID:slr5zzcza.net]
- >>238
第二引数を省略したら、無事にメール作成できました! 今の自分のレベルでは、仕組みが理解できていませんが、本当に助かりました。 ありがとうございます! >>237 こちらの方がレベルが高かったのですか… そういったことの判断すらできず、vbaでノーツメールを直接作るコードを調べてみて、複雑そうなので、諦めてしまっていました。 もう少し勉強しようと思います。
- 247 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 12:33:52.09 ID:6krMH9aUr.net]
- >>239
クリック等のイベントをトラップしようとすると、既定オブジェクトのモジュールやクラスモジュール等にコードを書いてハードコーディングしなきゃならなくやる イベントの発生タイミングを考えてエラー回避の制御なども追加しなきゃならない イベントはコードディングと保守の難易度を上げる、と認識すると良いよ メーラーアプリのオブジェクトインスタンスを作成して操作するやり方は一見複雑そうだけど、やってることはエクセルの既定オブジェクトの操作と一緒 基本的には標準モジュール一個でコードが収まるから楽だよ
- 248 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 16:27:17.14 ID:BhGEKkNfa.net]
- >>240
別にそんなにハードル上がってるわけじゃないでしょ。 こういう場合、自分はまずメールを作るプロシージャを作る。 それはメールに必要な宛先、タイトル、本文等の引数を元にしたプロシージャとなるだろう。 そして当然汎用的なものだから標準モジュールに書くことになるだろう。 後はそれをどのようによび出すかを考えれば良い。 B2からB30までのアドレスを元にメールを作るのだからメニュー(コマンドバー)から呼び出すとかシートに貼り付けたボタンから呼び出すとかが考えられる。 呼び出す処理ではB2からB30までのループ処理の中で標準モジュールに作ったメール作成プロシージャを呼び出すようにすれば良い。 尚、この場合ハイパーリンクはプログラムと関係が無い。 個別に開くために設定しても良いし、設定しなくても良い。 単純に空のメールを一度に複数開きたいだけならハイパーリンク使う方が簡単な気もするけど、そんな需要で完結するとは思えない。 だから自分だったら両方作って片方をコメントアウトしとくだろうな。
- 249 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 16:42:30.82 ID:yXnULsJhH.net]
- 俺語りうぜぇ
- 250 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 16:44:23.96 ID:9Akggys5x.net]
- >>242
お前の感想は もっと要らない
- 251 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 16:58:40.94 ID:yXnULsJhH.net]
- >>229
> >>211見てなんで使わないと思ったの? なんでって普通使わないから。
- 252 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 17:43:48.64 ID:6krMH9aUr.net]
- >>241
メールアイテム作成が複雑そうと言ってるのは質問者なので、そこは間違えないでね
|

|