!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part49©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ bb2e-8SzA)
2017/06/26(月) 02:15:14.60ID:T3ylemnb02デフォルトの名無しさん (アウアウエー Sadf-hzVx)
2017/06/26(月) 05:44:32.43ID:SxRL95TLa うんこ
3デフォルトの名無しさん (ワッチョイ bf6d-ZLad)
2017/06/26(月) 06:30:06.46ID:K3TbTzv304デフォルトの名無しさん (アウアウエー Sadf-AGoN)
2017/06/26(月) 13:46:58.30ID:2dV2LE9Ka おちるな!
5デフォルトの名無しさん (スッップ Sdbf-iOY8)
2017/06/26(月) 17:31:56.55ID:mUlZZrNcd 埋め
6デフォルトの名無しさん (スッップ Sdbf-iOY8)
2017/06/26(月) 19:50:29.41ID:mUlZZrNcd Everything breaks.
7デフォルトの名無しさん (ワッチョイ d76d-ZLad)
2017/06/26(月) 22:30:10.16ID:9LdZXFFA0 地獄の社内SE
https://anond.hatelabo.jp/20170626005657
> 社内SEはなんとなく楽そうなイメージがあったので、就職した。
> 言語はエクセルVBAとVB.NET 1.0。
> 中身を見るとどちらもかなりやばい。
>
> VBA編
> ・ウォッチウインドウを知らないのか、変数はすべてセルに入れてる。変数名はすべてRANGE("A1").valueみたいな感じで全く意味が分からない。
> ・処理遷移がおかしい。
> セルに1を入れる。そのセルのchangeイベントで処理が動くとか。SHIFT+F2が無力化されてる。
> ・なるべくワークシート関数で処理してる
> データベースからとってきたデータを丸ごとワークシートにコピーしてif,vlookup,match関数を駆使して帳票にしたり、CSVにしてる。
> データ100件制限があったり、1関数を直すときは100行コピーしないといけない。画面中に埋め尽くされたワークシート関数をみて途方に暮れる。
> ・format関数を知らない。
> 8桁の日付をとりたいときyear、month、day関数がワークシートにあり、
> その下の行で月の二けた判定、日の二けた判定のif関数で頭の0をつけ3行目でconcatenateしている
> ・タイマー起動
> 毎朝100本ぐらいのマクロが動いてる。タイマー起動なので、毎日セットしないといけない。(タスクスケジューラーを知らない)
> がんがんエラーが発生するので、マクロ設定をエラー処理対象外のエラーで中断にしないと動かない。
> ・遅い
> textboxのchangeイベントでDBからのデータ取得処理を入れているので、データが多くなると1文字打つごとに数分待つ状態。exitイベントを知らないらしい
> DBの更新処理でもテーブル全件とってきて、ループしながらキーが一致するのを探して更新。
> ・変数や関数のスコープの管理
> ない。基本グローバル。
> ・クラス
> ない。
> ・ネスト
> ない。
> そんなつっこみどころしかないEXCELマクロが200本以上ある。
> おじいさんが20年にわたって深夜残業や休日出勤を厭わず作ってきた、地獄の社内システムの担当になったらしい。
https://anond.hatelabo.jp/20170626005657
> 社内SEはなんとなく楽そうなイメージがあったので、就職した。
> 言語はエクセルVBAとVB.NET 1.0。
> 中身を見るとどちらもかなりやばい。
>
> VBA編
> ・ウォッチウインドウを知らないのか、変数はすべてセルに入れてる。変数名はすべてRANGE("A1").valueみたいな感じで全く意味が分からない。
> ・処理遷移がおかしい。
> セルに1を入れる。そのセルのchangeイベントで処理が動くとか。SHIFT+F2が無力化されてる。
> ・なるべくワークシート関数で処理してる
> データベースからとってきたデータを丸ごとワークシートにコピーしてif,vlookup,match関数を駆使して帳票にしたり、CSVにしてる。
> データ100件制限があったり、1関数を直すときは100行コピーしないといけない。画面中に埋め尽くされたワークシート関数をみて途方に暮れる。
> ・format関数を知らない。
> 8桁の日付をとりたいときyear、month、day関数がワークシートにあり、
> その下の行で月の二けた判定、日の二けた判定のif関数で頭の0をつけ3行目でconcatenateしている
> ・タイマー起動
> 毎朝100本ぐらいのマクロが動いてる。タイマー起動なので、毎日セットしないといけない。(タスクスケジューラーを知らない)
> がんがんエラーが発生するので、マクロ設定をエラー処理対象外のエラーで中断にしないと動かない。
> ・遅い
> textboxのchangeイベントでDBからのデータ取得処理を入れているので、データが多くなると1文字打つごとに数分待つ状態。exitイベントを知らないらしい
> DBの更新処理でもテーブル全件とってきて、ループしながらキーが一致するのを探して更新。
> ・変数や関数のスコープの管理
> ない。基本グローバル。
> ・クラス
> ない。
> ・ネスト
> ない。
> そんなつっこみどころしかないEXCELマクロが200本以上ある。
> おじいさんが20年にわたって深夜残業や休日出勤を厭わず作ってきた、地獄の社内システムの担当になったらしい。
8デフォルトの名無しさん (ワッチョイ 9f06-NIhq)
2017/06/26(月) 22:46:39.40ID:sK3t30Mo09デフォルトの名無しさん (ワッチョイ 9f6f-LvKX)
2017/06/26(月) 22:56:04.38ID:TlqSsAWd0 地獄とか書いてるけど、
全然地獄じゃないんだろうな。
強敵と戦う悟空みたいな感じで。
全然地獄じゃないんだろうな。
強敵と戦う悟空みたいな感じで。
10デフォルトの名無しさん (ワッチョイ 970d-q+YL)
2017/06/26(月) 23:06:06.76ID:Wf2yMC4X0 VBAが仕事っていいじゃねーか
業務の合間にマクロ作ってるけエクセルが得意な人扱いしかされない
カラオケが上手いとか酒が強いとかと同じ扱いだよ俺もVBAだけやってたいな
業務の合間にマクロ作ってるけエクセルが得意な人扱いしかされない
カラオケが上手いとか酒が強いとかと同じ扱いだよ俺もVBAだけやってたいな
11デフォルトの名無しさん (ワッチョイ 9faa-ZLad)
2017/06/26(月) 23:18:33.41ID:NfcBoQUW0 何か公開するとか解説記事を続けて書くとかしないと残るものがないよな
12デフォルトの名無しさん (ワッチョイ 9711-AGoN)
2017/06/27(火) 00:31:50.14ID:Ou4JxjyB0 >>7
ヤバすぎでしょ
ヤバすぎでしょ
13デフォルトの名無しさん (ワッチョイ bf23-+Ny0)
2017/06/27(火) 01:25:43.69ID:mSdvPxdC0 >>9
おれ、ああいうののメンテナンスする仕事したこと有るけど地獄だよ。
おれ、ああいうののメンテナンスする仕事したこと有るけど地獄だよ。
14デフォルトの名無しさん (ワッチョイ d723-vKbm)
2017/06/27(火) 05:39:28.87ID:RyWS1Zia0 そこまでわかってるなら直すだけじゃん
15デフォルトの名無しさん (ワッチョイ 178f-ZLad)
2017/06/27(火) 12:11:28.10ID:VIhV6lAx0 inputとoutputがわかってんなら作り直したほうが…
16デフォルトの名無しさん (アウアウエー Sadf-AGoN)
2017/06/27(火) 13:08:41.86ID:NeDeRylha どう考えてもイチから作り直すべきだが、それを現場がどう理解してるかだわ
セルに値が入ってないと管理できない!とかありそう
セルに値が入ってないと管理できない!とかありそう
17デフォルトの名無しさん (ワッチョイ 9711-H8Dq)
2017/06/27(火) 20:49:18.00ID:s+Xomzrw0 質問失礼します。
ある一つのセルに、氏名コメント改行文字が5人分入っていて、選択するとformにテキストボックスが5人分用意されている所に、それぞれの氏名に合わせて入る様になっています。
やりたい事は、formのテキストボックスに作業者が入力したのの更新履歴を付けたいのです。
作業者は自分の氏名のテキストボックスに入力することになっています。
コマンドボタンをクリックしたタイミングで、どのテキストボックスが最後に変更されたのか取得できる方法が有りましたら教えてください。
ある一つのセルに、氏名コメント改行文字が5人分入っていて、選択するとformにテキストボックスが5人分用意されている所に、それぞれの氏名に合わせて入る様になっています。
やりたい事は、formのテキストボックスに作業者が入力したのの更新履歴を付けたいのです。
作業者は自分の氏名のテキストボックスに入力することになっています。
コマンドボタンをクリックしたタイミングで、どのテキストボックスが最後に変更されたのか取得できる方法が有りましたら教えてください。
18デフォルトの名無しさん (ワッチョイ 9f11-NIhq)
2017/06/28(水) 01:46:45.72ID:YSCBV96g0 >>17
AfterUpdateイベントやChangeイベントで最後に更新されたテキストボックスを記録して、ボタンを押したときにその内容を読み取る、みたいな感じになる。
↓こんな感じ
Private LastUpdated
Private Sub TextBox1_AfterUpdate()
LastUpdated = "TextBox1"
End Sub
Private Sub TextBox2_AfterUpdate()
LastUpdated = "TextBox2"
End Sub
Private Sub CommandButton1_Click()
Dim str
If Not IsEmpty(LastUpdated) Then str = Me.Controls(LastUpdated).Text
'処理
End Sub
AfterUpdateイベントやChangeイベントで最後に更新されたテキストボックスを記録して、ボタンを押したときにその内容を読み取る、みたいな感じになる。
↓こんな感じ
Private LastUpdated
Private Sub TextBox1_AfterUpdate()
LastUpdated = "TextBox1"
End Sub
Private Sub TextBox2_AfterUpdate()
LastUpdated = "TextBox2"
End Sub
Private Sub CommandButton1_Click()
Dim str
If Not IsEmpty(LastUpdated) Then str = Me.Controls(LastUpdated).Text
'処理
End Sub
19デフォルトの名無しさん (ワッチョイ 9f11-NIhq)
2017/06/28(水) 01:49:22.55ID:YSCBV96g020デフォルトの名無しさん (ワッチョイ 37e4-nLBY)
2017/06/28(水) 03:46:14.99ID:2pXrvXuM0 しばらく前に騒ぎになったランサムウェアってVBAマクロなのか
マクロウイルスって今でもあるんだな
マクロウイルスって今でもあるんだな
21デフォルトの名無しさん (ワッチョイ 9711-H8Dq)
2017/06/28(水) 06:18:19.57ID:tYXWZB4k0 >>19
ご回答ありがとうございます。
今回の件はAfterUpdateで対応出来ました。
今後の為にお聞きしたいのですが、例えばテキストボックスが100個とかあった場合、VBのコントロール配列の様に一つのプロシージャで100個のテキストボックスのAfterUpdateに対応することは出来ませんか?
よろしくお願いします。
ご回答ありがとうございます。
今回の件はAfterUpdateで対応出来ました。
今後の為にお聞きしたいのですが、例えばテキストボックスが100個とかあった場合、VBのコントロール配列の様に一つのプロシージャで100個のテキストボックスのAfterUpdateに対応することは出来ませんか?
よろしくお願いします。
22デフォルトの名無しさん (ブーイモ MMcf-xRMs)
2017/06/28(水) 12:49:44.66ID:zWYciN7lM >>21
「vba フォーム イベント withevents」とかでググれば、クラスモジュールを使ってイベント付きコントロールを配列またはコレクション化する方法が出てくる。
フォームの履歴管理には、クラス変数にフォームへの参照と、配列のインデックスまたはコレクションのキーなんかを渡して処理すればたぶんOK。
「vba フォーム イベント withevents」とかでググれば、クラスモジュールを使ってイベント付きコントロールを配列またはコレクション化する方法が出てくる。
フォームの履歴管理には、クラス変数にフォームへの参照と、配列のインデックスまたはコレクションのキーなんかを渡して処理すればたぶんOK。
23デフォルトの名無しさん (ワッチョイ 9711-H8Dq)
2017/06/28(水) 22:25:33.70ID:tYXWZB4k0 >>22
ありがとうございます。
witheventsを使用してテキストボックスのチェンジイベントをひとまとめに出来ました。
afterupdateをまとめれるともっと良かったのですが、それは無理そうなのでこれで満足です。
本当にありがとうございます!
ありがとうございます。
witheventsを使用してテキストボックスのチェンジイベントをひとまとめに出来ました。
afterupdateをまとめれるともっと良かったのですが、それは無理そうなのでこれで満足です。
本当にありがとうございます!
24デフォルトの名無しさん (ワッチョイ f7e4-d3en)
2017/06/28(水) 23:11:40.00ID:E86Fbm8W0 100という10進数をDo loop を使って2進数に変換させるにはどのようにすればよいのでしょうか?
イメージとしては、100を2ずつ割っていってそこで出たそれぞれの余りの数をセルA1に表示させたいです。
よろしくお願い致します。
イメージとしては、100を2ずつ割っていってそこで出たそれぞれの余りの数をセルA1に表示させたいです。
よろしくお願い致します。
25デフォルトの名無しさん (ワキゲー MMdf-Jbg4)
2017/06/28(水) 23:24:22.72ID:DPzzKFKPM >>24
それでいいと思います
それでいいと思います
26デフォルトの名無しさん (スプッッ Sd62-qZPv)
2017/06/29(木) 00:00:46.01ID:xnkaqZb4d >>25
それが出来ないです…
それが出来ないです…
27デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/06/29(木) 00:02:23.49ID:+TVRrlUj028デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/06/29(木) 00:03:15.79ID:+TVRrlUj0 間違えた。DEC2BINでした。
29デフォルトの名無しさん (ワッチョイ c98f-wjSU)
2017/06/29(木) 02:18:27.81ID:m+1z5FeZ0 セルA1を毎回上書きしてるとか
まぁこの手の奴はぐぐれば腐るほどでてくるけどな
まぁこの手の奴はぐぐれば腐るほどでてくるけどな
30デフォルトの名無しさん (ワッチョイ c206-nP2k)
2017/06/29(木) 10:46:30.06ID:eyQ8k34N0 セルA1を瞬時に上書きしていって、それで何をしたいんだか?
最終的な目標は何なのかワカンネ w
最終的な目標は何なのかワカンネ w
31デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/06/29(木) 12:17:53.07ID:JWTkSooHM 1100100を出力したいんだろ
32デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/06/29(木) 12:28:02.00ID:JWTkSooHM 曖昧だけど設計まであるのにできてないのなら今どんなコードを書いてるのか提示して質問してほしいなぁ
いっそのこと「この仕様を満たすコードをください!」と言ってくれてもいいけど
いっそのこと「この仕様を満たすコードをください!」と言ってくれてもいいけど
33デフォルトの名無しさん (JP 0H92-9Mth)
2017/06/29(木) 16:10:07.03ID:YLVns9yBH はい、作ったよ
仕様満たしてるかどうかはあんたたちで
みっちり見てね
バグ見つけたら教えてね
で仕様齟齬をあぶり出してもらわないと
仕様を具体的に言わないクライアント(身内だけど)とは付き合えない
仕様満たしてるかどうかはあんたたちで
みっちり見てね
バグ見つけたら教えてね
で仕様齟齬をあぶり出してもらわないと
仕様を具体的に言わないクライアント(身内だけど)とは付き合えない
34デフォルトの名無しさん (JP 0H16-CicO)
2017/06/29(木) 16:13:40.02ID:ye6KcLeHH >>33
作る前に要件定義すればいいのに
作る前に要件定義すればいいのに
35デフォルトの名無しさん (JP 0H92-9Mth)
2017/06/29(木) 17:05:28.77ID:YLVns9yBH36デフォルトの名無しさん (JP 0H16-CicO)
2017/06/29(木) 17:16:17.14ID:ye6KcLeHH >>35
面倒でも文書化して読んでもらうのがいいよ
読んで始めて、自分が何を欲しているか気づく場合もあるし
後は、プロトタイプかな
全部できて「これ、全然違うし」とか言われるリスクあるなら、そういうことやってみたらいいと思う
面倒でも文書化して読んでもらうのがいいよ
読んで始めて、自分が何を欲しているか気づく場合もあるし
後は、プロトタイプかな
全部できて「これ、全然違うし」とか言われるリスクあるなら、そういうことやってみたらいいと思う
37デフォルトの名無しさん (ドコグロ MMe1-zH8r)
2017/06/29(木) 19:36:46.27ID:tZRd6cgNM >>36
そう言う連中は要件定義書なんて読まんよ
そう言う連中は要件定義書なんて読まんよ
38デフォルトの名無しさん (ワッチョイ c206-nP2k)
2017/06/29(木) 20:02:23.80ID:eyQ8k34N0 このスレの人間って質問者置いてけぼりであーだこーだ言うのが多いけど、一番ムカつくのは、
肝心の質問者が自分のやりたい事はこういうことだって言わないこと。
少しは自分の質問に責任くらい持ちやがれ
肝心の質問者が自分のやりたい事はこういうことだって言わないこと。
少しは自分の質問に責任くらい持ちやがれ
39デフォルトの名無しさん (ワッチョイ c66f-WwN4)
2017/06/29(木) 20:20:17.81ID:XN0IVm4b0 こういった輩が多いから双方の軋轢が絶えないんだろな
先方はまったくの門外漢だ て前提で仕事を引き受けられない
相手も自分と同レベルだと信じて疑わない もしくは少し下ぐらい
初めて住宅を新築する顧客が、いきなり詳細設計図渡されて理解できるか?
ソッチで仕様書と図面引いてください って言ってるのと同様だぞ?
引き受けるからにはその仕事を請け負う責任も勿論だが
これから実施する作業の概要・概略を相手に理解してもらうテクニックだって
必要だろ それを持ち合わせないならサンプル品なり試作品なり作ってでも
相手と同じレベルで進捗を図るのが普通じゃ無いのか?
こっちはざっくり動きや結果を見越せるけれど、相手にもそれを要求するのは
傲慢でしかないんだが
いわんや、相手の業種・業態に依ってはコチラ側が思いもしないような入力・
操作が要求されるケースだってままある
仕様も要件も書き出せますよ なんてぇ企業相手ならおまえら不要だろ
社内で事足りるわ
も少し謙虚に成れんのか 会議だ仕様だ要件だなんてぇことに無駄な時間を
費やすぐらいなら、とっとと試作して「こうですか?」で何歩も進むだろ
いやすまん なんでもない
先方はまったくの門外漢だ て前提で仕事を引き受けられない
相手も自分と同レベルだと信じて疑わない もしくは少し下ぐらい
初めて住宅を新築する顧客が、いきなり詳細設計図渡されて理解できるか?
ソッチで仕様書と図面引いてください って言ってるのと同様だぞ?
引き受けるからにはその仕事を請け負う責任も勿論だが
これから実施する作業の概要・概略を相手に理解してもらうテクニックだって
必要だろ それを持ち合わせないならサンプル品なり試作品なり作ってでも
相手と同じレベルで進捗を図るのが普通じゃ無いのか?
こっちはざっくり動きや結果を見越せるけれど、相手にもそれを要求するのは
傲慢でしかないんだが
いわんや、相手の業種・業態に依ってはコチラ側が思いもしないような入力・
操作が要求されるケースだってままある
仕様も要件も書き出せますよ なんてぇ企業相手ならおまえら不要だろ
社内で事足りるわ
も少し謙虚に成れんのか 会議だ仕様だ要件だなんてぇことに無駄な時間を
費やすぐらいなら、とっとと試作して「こうですか?」で何歩も進むだろ
いやすまん なんでもない
40デフォルトの名無しさん (ワッチョイ c206-nP2k)
2017/06/29(木) 21:03:34.33ID:eyQ8k34N0 ここの人間は質問者から金貰ってるわけでもなんでもねーわ
41デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/06/29(木) 21:07:43.56ID:JWTkSooHM42デフォルトの名無しさん (オイコラミネオ MMd6-BlaP)
2017/06/29(木) 21:21:50.99ID:pDUcXkTQM コミュ障同志でケンカすんな
43デフォルトの名無しさん (ワッチョイ 6d2e-mQuD)
2017/06/29(木) 22:02:03.85ID:irMBslcI0 最近、趣味でVBAのプログラムを始めた初心者です
区切り記号を含むテキストデータを Split() を使って二次元配列に入れようと思っています。
テキストデータは、vbLf で改行、行内のデータは、vbTab で区切り です
<例: String 型の TextData の内容>
あああああ アアアアアアアアア
いい イイイイイ
ううううう ウウウ
(以下、同様の形式で全500行ある)
いろいろ宣言の仕方などを試した結果、次の方法でエラーなく実行できたのですが…
Dim tmpDim As Variant
Dim sqrDim(500) As Variant
tmpDim = Split( TextData, vbLf )
For i = 0 to UBound( tmpDim ) - 1
For j = 0 to 1
sqrDim( i ) = Split( sqrDim( i ), vbTab )
Next j
Next i
これでは、途中の38行目を読み込んだところ(i=37,j=1)で、
実行時エラー '9':
インデックスが有効範囲にありません
とのエラーが出て止まってしまいます。
(一次方向(行)には500個確保できていると思うので、なぜインデックスエラーなのか不思議です)
2回目のSplitの受けも、別の一次元配列で行い、後で二次元配列に格納すればいいとは思いますが
上手く二次元配列でSplitのデータを受けるやり方はあるのでしょうか? お手数ですが教えてください
区切り記号を含むテキストデータを Split() を使って二次元配列に入れようと思っています。
テキストデータは、vbLf で改行、行内のデータは、vbTab で区切り です
<例: String 型の TextData の内容>
あああああ アアアアアアアアア
いい イイイイイ
ううううう ウウウ
(以下、同様の形式で全500行ある)
いろいろ宣言の仕方などを試した結果、次の方法でエラーなく実行できたのですが…
Dim tmpDim As Variant
Dim sqrDim(500) As Variant
tmpDim = Split( TextData, vbLf )
For i = 0 to UBound( tmpDim ) - 1
For j = 0 to 1
sqrDim( i ) = Split( sqrDim( i ), vbTab )
Next j
Next i
これでは、途中の38行目を読み込んだところ(i=37,j=1)で、
実行時エラー '9':
インデックスが有効範囲にありません
とのエラーが出て止まってしまいます。
(一次方向(行)には500個確保できていると思うので、なぜインデックスエラーなのか不思議です)
2回目のSplitの受けも、別の一次元配列で行い、後で二次元配列に格納すればいいとは思いますが
上手く二次元配列でSplitのデータを受けるやり方はあるのでしょうか? お手数ですが教えてください
44デフォルトの名無しさん (ワッチョイ 066d-B6M/)
2017/06/29(木) 22:23:02.61ID:InemyE5a045デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/06/29(木) 22:33:09.86ID:+TVRrlUj0 >>43
これ通るの?
For j = 0 to 1
sqrDim( i ) = Split( sqrDim( i ), vbTab )
Next j
で sqrDim( i ) を2回splitしてる。
1回めは文字列のsplitだからいいけど、2回めは配列のsplitになってエラーになりそうだけど。
For j のループは不要。
あとついでに
For i = 0 to UBound( tmpDim ) - 1
だとTextDataの最終行のデータが配列に格納されないけど問題ないか?
これ通るの?
For j = 0 to 1
sqrDim( i ) = Split( sqrDim( i ), vbTab )
Next j
で sqrDim( i ) を2回splitしてる。
1回めは文字列のsplitだからいいけど、2回めは配列のsplitになってエラーになりそうだけど。
For j のループは不要。
あとついでに
For i = 0 to UBound( tmpDim ) - 1
だとTextDataの最終行のデータが配列に格納されないけど問題ないか?
46デフォルトの名無しさん (ワッチョイ 42aa-wjSU)
2017/06/29(木) 22:47:04.00ID:CQo0iGok0 >>43
こうでしょ
Dim tmpDim As Variant
Dim sqrDim As Variant
tmpDim = Split( TextData, vbLf )
ReDim sqrDim(LBound(tmpDim), UBound(tmpDim))
For i = LBound(tmpDim) to UBound( tmpDim )
sqrDim( i ) = Split( tmpDim( i ), vbTab )
Next i
sqrDimは2次元配列じゃなくて配列の配列になるけど、むしろこっちの方があとで楽だと思う。
こうでしょ
Dim tmpDim As Variant
Dim sqrDim As Variant
tmpDim = Split( TextData, vbLf )
ReDim sqrDim(LBound(tmpDim), UBound(tmpDim))
For i = LBound(tmpDim) to UBound( tmpDim )
sqrDim( i ) = Split( tmpDim( i ), vbTab )
Next i
sqrDimは2次元配列じゃなくて配列の配列になるけど、むしろこっちの方があとで楽だと思う。
4743 (ワッチョイ 6d2e-mQuD)
2017/06/29(木) 23:32:28.05ID:irMBslcI0 >>44-46
早々に回答ください、どうもありがとうございます。
いろいろ回答を頂いておきながら、大変申し訳ないのですが、
38行目のデータをよく見たところ、TAB区切りではなく、ここだけスペースが入っていました
(他は、各行に2個の要素があったのですが、ここだけ要素が1個でした)
そして、これを修正したら、エラーなく実行できました。
お手数をおかけし、申し訳ありませんでした。
おっしゃる通り、j のループは不要ですね。(いろいろ修正していて、j を使わなくなったようです)
> だとTextDataの最終行のデータが配列に格納されないけど問題ないか?
いえ、ちゃんと最終行まで格納出来てました
(UBound()は要素数を表しているように思います)
> ReDim sqrDim(LBound(tmpDim), UBound(tmpDim))
ReDim は使ったことがないので、また調べてみます
以上、ありがとうございました。
早々に回答ください、どうもありがとうございます。
いろいろ回答を頂いておきながら、大変申し訳ないのですが、
38行目のデータをよく見たところ、TAB区切りではなく、ここだけスペースが入っていました
(他は、各行に2個の要素があったのですが、ここだけ要素が1個でした)
そして、これを修正したら、エラーなく実行できました。
お手数をおかけし、申し訳ありませんでした。
おっしゃる通り、j のループは不要ですね。(いろいろ修正していて、j を使わなくなったようです)
> だとTextDataの最終行のデータが配列に格納されないけど問題ないか?
いえ、ちゃんと最終行まで格納出来てました
(UBound()は要素数を表しているように思います)
> ReDim sqrDim(LBound(tmpDim), UBound(tmpDim))
ReDim は使ったことがないので、また調べてみます
以上、ありがとうございました。
4843 (ワッチョイ 6d2e-mQuD)
2017/06/29(木) 23:41:18.00ID:irMBslcI0 >>45
> これ通るの?
> For j = 0 to 1
> sqrDim( i ) = Split( sqrDim( i ), vbTab )
> Next j
これ、写し間違いでした。 2回目に Split するのは tmpDim でした
×: sqrDim( i ) = Split( sqrDim( i ), vbTab )
○: sqrDim( i ) = Split( tmpDim( i ), vbTab )
申し訳ありませんでした
> これ通るの?
> For j = 0 to 1
> sqrDim( i ) = Split( sqrDim( i ), vbTab )
> Next j
これ、写し間違いでした。 2回目に Split するのは tmpDim でした
×: sqrDim( i ) = Split( sqrDim( i ), vbTab )
○: sqrDim( i ) = Split( tmpDim( i ), vbTab )
申し訳ありませんでした
49デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/06/30(金) 00:06:21.55ID:pQmgso2J0 >>47
> (UBound()は要素数を表しているように思います)
一応言っておくと、これは間違い。
UBound(tmpDim) は配列tmpDimのインデックスの最大値を返す。
TextDataが500行(vbLfが499個)だとしたら、tmpDimのインデックスは(0 to 499)になるから、UBound(tmpDim) は499を返す。
このコードのsqrDim(500)が全部埋まってるのであれば、TextDataは501行あるはず。
まあ結果がOKならいいんだけどね。
> (UBound()は要素数を表しているように思います)
一応言っておくと、これは間違い。
UBound(tmpDim) は配列tmpDimのインデックスの最大値を返す。
TextDataが500行(vbLfが499個)だとしたら、tmpDimのインデックスは(0 to 499)になるから、UBound(tmpDim) は499を返す。
このコードのsqrDim(500)が全部埋まってるのであれば、TextDataは501行あるはず。
まあ結果がOKならいいんだけどね。
50デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/06/30(金) 00:09:11.22ID:pQmgso2J0 失礼、>>49に間違い。
sqrDim(500) だとsqrDimの要素数は501だから、全部埋まってるの場合のTextDataの行数は502行になるはず。
sqrDim(500) だとsqrDimの要素数は501だから、全部埋まってるの場合のTextDataの行数は502行になるはず。
5143 (ワッチョイ 6d2e-mQuD)
2017/06/30(金) 00:48:26.80ID:K3G7Sb4z0 >>49-50
> 一応言っておくと、これは間違い。
> UBound(tmpDim) は配列tmpDimのインデックスの最大値を返す。
申し訳ないです。
おっしゃる通り、ググってみるとそのように書いてました。
なお、TextDataは実際には400行前後のため、偶然上手く動いているように見えてたのですね
(実際は、400〜499までループが回っており、タチの悪いバグになるところでした、感謝です)
前にC言語を少しやっていたので、同じ扱いだと思っていましたが違ってたんですね
わざわざありがとうございます。
> 一応言っておくと、これは間違い。
> UBound(tmpDim) は配列tmpDimのインデックスの最大値を返す。
申し訳ないです。
おっしゃる通り、ググってみるとそのように書いてました。
なお、TextDataは実際には400行前後のため、偶然上手く動いているように見えてたのですね
(実際は、400〜499までループが回っており、タチの悪いバグになるところでした、感謝です)
前にC言語を少しやっていたので、同じ扱いだと思っていましたが違ってたんですね
わざわざありがとうございます。
52デフォルトの名無しさん (ワッチョイ 42aa-wjSU)
2017/06/30(金) 00:56:40.46ID:6tFD7y9X053デフォルトの名無しさん (JP 0H92-9Mth)
2017/06/30(金) 10:48:30.68ID:cwrb3MSvH ここの強者はExcelVBAエキスパートの資格持ってるの?
簡単そうだから取ろうかなと思ってる
簡単そうだから取ろうかなと思ってる
54デフォルトの名無しさん (JP 0H16-CicO)
2017/06/30(金) 10:58:10.76ID:vRopsyNtH >>53
取ればいいんじゃないの?
取ればいいんじゃないの?
55デフォルトの名無しさん (ワッチョイ 5d73-BlaP)
2017/06/30(金) 11:59:14.93ID:p88B6ZFT0 そんなもんMOS以下の価値しかないと思うが…
56デフォルトの名無しさん (ワッチョイ 6d3d-nP2k)
2017/06/30(金) 17:12:37.88ID:cZqMSATW0 コンピュータ関連も色んな資格あるけど、ああいう資格を基準にして採用している所ってどれだけあるんだろ。
57デフォルトの名無しさん (ワッチョイ 066d-wjSU)
2017/06/30(金) 20:10:03.92ID:UW7c2V+i0 基準にはしないかな
あーできるんですねって程度。どちらにしても実地試験は受けてもらう
あーできるんですねって程度。どちらにしても実地試験は受けてもらう
58デフォルトの名無しさん (ワッチョイ c26f-CicO)
2017/06/30(金) 23:09:21.97ID:+ePBm/Xa0 俺、プログラムは作れるけど、試験は落ちそうだな。
DimとかRowとか、短い文字は打てるんだけど、
長いのは、普段コピペしてるから、打てない。
最近、やっとColumnsを間違えずに打てるようになったわ。
それまでは、Corums? ん? Colmns? え? Culomus? 違う?
Colums? わかんね。 もう諦めてコピペしよう、みたいな感じ。
DimとかRowとか、短い文字は打てるんだけど、
長いのは、普段コピペしてるから、打てない。
最近、やっとColumnsを間違えずに打てるようになったわ。
それまでは、Corums? ん? Colmns? え? Culomus? 違う?
Colums? わかんね。 もう諦めてコピペしよう、みたいな感じ。
59デフォルトの名無しさん (ワッチョイ 066d-dnIi)
2017/06/30(金) 23:13:28.48ID:UW7c2V+i0 プログラムの実技試験で暗記力が必要なのはそろそろどうかとは思う
60デフォルトの名無しさん (ワッチョイ 2e8f-wjSU)
2017/07/01(土) 00:25:54.92ID:ozDMgMeF0 10年選手だけど
フィボナッチとかハノイの塔とかソラで出できないぞ俺
フィボナッチとかハノイの塔とかソラで出できないぞ俺
61デフォルトの名無しさん (ワッチョイ 066d-B6M/)
2017/07/01(土) 00:29:13.54ID:QYfDEdV/0 それは数学の知識の問題だと思うので、別にできなくてもいいと思う。多分一生役に立たない
でも最小二乗法とか漸近線、偏差値など、統計学的な知識はあったほうが良いと思う
でも最小二乗法とか漸近線、偏差値など、統計学的な知識はあったほうが良いと思う
62デフォルトの名無しさん (ワッチョイ 4623-hx6n)
2017/07/01(土) 04:46:24.33ID:PtoY4rVn0 >>53
昔、某掲示板で質問した人に話の内容から初心者として扱ったらその資格持ってるとのことでびっくりしたことがある。
どんな資格でもそうだけど、そういうもんなんでしょう。
そうしないと受かる奴いなくなっちゃう。
昔、某掲示板で質問した人に話の内容から初心者として扱ったらその資格持ってるとのことでびっくりしたことがある。
どんな資格でもそうだけど、そういうもんなんでしょう。
そうしないと受かる奴いなくなっちゃう。
63デフォルトの名無しさん (ワッチョイ 4623-hx6n)
2017/07/01(土) 04:52:54.03ID:PtoY4rVn0 >>60
そんな問題が実際の案件に出てきた時に最適なコードが書ければ良いでしょ。
それにその程度の話ってググレば出てくるでしょ。
そんなのは何かあったよなと思うことが出来てググレればOK。
それよりも上手いやり方に気付かずにクソコード書く奴は多い。
そんな問題が実際の案件に出てきた時に最適なコードが書ければ良いでしょ。
それにその程度の話ってググレば出てくるでしょ。
そんなのは何かあったよなと思うことが出来てググレればOK。
それよりも上手いやり方に気付かずにクソコード書く奴は多い。
64デフォルトの名無しさん (オッペケ Sr71-UM0m)
2017/07/01(土) 08:01:59.81ID:JGSuKZu6r >>63
自分のクソは棚上げかクソw
自分のクソは棚上げかクソw
65デフォルトの名無しさん (ワッチョイ c123-BlaP)
2017/07/01(土) 08:05:36.28ID:3teBbQmJ0 >>64
お前は試験も仕事も両方苦手みたいだな
お前は試験も仕事も両方苦手みたいだな
66デフォルトの名無しさん (ワッチョイ 4211-zH8r)
2017/07/01(土) 08:23:17.10ID:qXTa/p8N0 >>57
実地試験ってどんなことやるの?
実地試験ってどんなことやるの?
67デフォルトの名無しさん (ワッチョイ 066d-wjSU)
2017/07/01(土) 08:38:38.91ID:QYfDEdV/0 >>66
支店名 状態 月 売上
A支店 3 200
B支店 3 10
C支店 3 500
A支店 4 300
B支店 閉店 4 0
C支店 4 600
4月の売上平均を求めよ(制限時間5分)
って感じ。
D1=(300+0+600)/3
にはたまげた。もちろん関数を使わない人はアウト
B支店を入れるかどうか疑問に思えば合格
支店名 状態 月 売上
A支店 3 200
B支店 3 10
C支店 3 500
A支店 4 300
B支店 閉店 4 0
C支店 4 600
4月の売上平均を求めよ(制限時間5分)
って感じ。
D1=(300+0+600)/3
にはたまげた。もちろん関数を使わない人はアウト
B支店を入れるかどうか疑問に思えば合格
68デフォルトの名無しさん (ワッチョイ 4211-zH8r)
2017/07/01(土) 08:58:05.68ID:qXTa/p8N069デフォルトの名無しさん (ワッチョイ 066d-wjSU)
2017/07/01(土) 08:59:25.55ID:QYfDEdV/0 >>68
あぁすまん、ここvbaスレか。Excelスレと思ってた。忘れてくれ
あぁすまん、ここvbaスレか。Excelスレと思ってた。忘れてくれ
70デフォルトの名無しさん (ワッチョイ b169-nP2k)
2017/07/01(土) 10:42:47.44ID:r7UjQGgF0 エクセルのある部分をリストボックスにしたいのですが、rowsourceで設定すると、間に空白が多くなった時に使いにくいです。
そこで下記のように空白だったら、リストに加えないとしたら、リストに何も出てきません。
どこがおかしいでしょうか? RowPN(i)には既にエクセルの1セルの値が167個入ってます。
i = 1
i1 = 1
Do Until i > 168
On Error Resume Next
If RowPN(i) <> "" Then
UF6ComboBox1.AddItem RowPN(i), i1
i1 = i1 + 1
End If
i = i + 1
Loop
そこで下記のように空白だったら、リストに加えないとしたら、リストに何も出てきません。
どこがおかしいでしょうか? RowPN(i)には既にエクセルの1セルの値が167個入ってます。
i = 1
i1 = 1
Do Until i > 168
On Error Resume Next
If RowPN(i) <> "" Then
UF6ComboBox1.AddItem RowPN(i), i1
i1 = i1 + 1
End If
i = i + 1
Loop
71デフォルトの名無しさん (ワッチョイ c26f-CicO)
2017/07/01(土) 11:20:29.10ID:PX/A+v/i0 VBAの試験って、やっぱ何らかの制限付きなんだろうか。
制限しないと、ソートにSQLとか、Worksheetfunctionとか、
Cells(1,1).Value="計算式"とか、正解だけど、試験の趣旨としてどうなの?
という答えが沢山出来てしまう。
制限しないと、ソートにSQLとか、Worksheetfunctionとか、
Cells(1,1).Value="計算式"とか、正解だけど、試験の趣旨としてどうなの?
という答えが沢山出来てしまう。
72デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/07/01(土) 11:27:20.68ID:+dYABl5A0 >>70
・RowPNの中身が全て""またはEmptyになっていないか。
Dubug.Printまたはローカルウィンドウでの確認を推奨する。
・リストボックスと言っているが変数はUF6ComboBox1で合っているか。
・RowPNの要素が(0 To 166)ないし(1 To 167)だとDoループがi=168までカウントするのでインデックスエラーになる。
For文の方が無難そうに思えるのと、ここでOn Error Resume Nextはどうかと感じる。
・RowPNの中身が全て""またはEmptyになっていないか。
Dubug.Printまたはローカルウィンドウでの確認を推奨する。
・リストボックスと言っているが変数はUF6ComboBox1で合っているか。
・RowPNの要素が(0 To 166)ないし(1 To 167)だとDoループがi=168までカウントするのでインデックスエラーになる。
For文の方が無難そうに思えるのと、ここでOn Error Resume Nextはどうかと感じる。
73デフォルトの名無しさん (ワッチョイ 0623-wjSU)
2017/07/01(土) 11:30:18.64ID:5ubPuGy00 >>70
セルから値をとってるならこれでいいと思われ
Dim i As Long
For i = 1 To 168
If Cells(i, 1) <> "" Then
ComboBox1.AddItem Cells(i, 1)
End If
Next
セルから値をとってるならこれでいいと思われ
Dim i As Long
For i = 1 To 168
If Cells(i, 1) <> "" Then
ComboBox1.AddItem Cells(i, 1)
End If
Next
74デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/07/01(土) 11:30:59.20ID:+dYABl5A0 >>72 3行目間違い。。
? Dubug.Print ○ Debug.Print
? Dubug.Print ○ Debug.Print
75デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/07/01(土) 11:45:10.97ID:+dYABl5A076デフォルトの名無しさん (ワッチョイ b169-nP2k)
2017/07/01(土) 11:48:18.71ID:r7UjQGgF077デフォルトの名無しさん (ワッチョイ c26f-CicO)
2017/07/01(土) 12:12:06.78ID:PX/A+v/i078デフォルトの名無しさん (ワッチョイ 0623-wjSU)
2017/07/01(土) 12:14:29.98ID:5ubPuGy0079デフォルトの名無しさん (ワッチョイ b169-nP2k)
2017/07/01(土) 12:28:18.39ID:r7UjQGgF0 >>78 オブジェクト名は間違うと動かなくなるので、いつもコピペしてるんですよ。
とりあえずシート使って逃げて、rowsourceでうまいこと動きました。
とりあえずシート使って逃げて、rowsourceでうまいこと動きました。
80デフォルトの名無しさん (ササクッテロラ Sp71-THY3)
2017/07/01(土) 14:17:52.99ID:zDfIbROqp >>61
数学の知識というより再帰関数とかのプログラム技術の問題
数学の知識というより再帰関数とかのプログラム技術の問題
81デフォルトの名無しさん (ワッチョイ c179-9Mth)
2017/07/01(土) 23:37:04.61ID:AhlbWWig0 こんばんわ、
シティーボーイズやってました、再帰しげるです
シティーボーイズやってました、再帰しげるです
82デフォルトの名無しさん (ワッチョイ bd8b-UM0m)
2017/07/02(日) 02:18:34.32ID:mbMXyeDF0 こんばんわ、
膣に挿入したら動きません、きたろうです
膣に挿入したら動きません、きたろうです
83デフォルトの名無しさん (ワッチョイ b169-nP2k)
2017/07/02(日) 05:10:18.40ID:7bfaC3yX0 突然 なんだ!
84デフォルトの名無しさん (アウアウウー Sa25-k1q/)
2017/07/03(月) 17:11:55.95ID:3aAVlqxCa 以下のプログラムで「該当するセルが見つかりません」となってしまいます。
該当するセル範囲のセルはすべて空白です。
期待する動作は、「B4:B6の範囲の空白セルにコメントを入れる」です。
Sub commentAddToBlankCells()
____On Error GoTo ERROR_ALL
____Range("B4:B6").SpecialCells(xlCellTypeBlanks).AddComment "目視確認"
____Exit Sub
ERROR_ALL:
____MsgBox Err.Description
End Sub
※Excel2010です。
該当するセル範囲のセルはすべて空白です。
期待する動作は、「B4:B6の範囲の空白セルにコメントを入れる」です。
Sub commentAddToBlankCells()
____On Error GoTo ERROR_ALL
____Range("B4:B6").SpecialCells(xlCellTypeBlanks).AddComment "目視確認"
____Exit Sub
ERROR_ALL:
____MsgBox Err.Description
End Sub
※Excel2010です。
8584 (アウアウウー Sa25-k1q/)
2017/07/03(月) 17:42:48.19ID:3aAVlqxCa Excelのバグのような気がしてきました。
86デフォルトの名無しさん (ブーイモ MMed-tH5o)
2017/07/03(月) 18:37:30.90ID:C0KljlGTM >>84
2007だけど、ActiveSheet.UsedRangeの範囲外のセルだとエラーになるっぽい。
2007だけど、ActiveSheet.UsedRangeの範囲外のセルだとエラーになるっぽい。
87デフォルトの名無しさん (ワッチョイ c206-nP2k)
2017/07/03(月) 20:07:31.53ID:Gbz1GVYR0 ここの板で質問するレベルでExcelになすりつけるのは100000年ほど早い
まぁそう言いたくなるときもあるんだがw
まぁそう言いたくなるときもあるんだがw
88デフォルトの名無しさん (ワッチョイ c123-BlaP)
2017/07/03(月) 20:26:22.35ID:NJa6/A120 それ範囲指定できるんだっけ?
89デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/03(月) 20:33:45.35ID:S8hpBEzs0 例えば、
そのセルの値が0より大きければセルA1をコピーし、そのセルに書式を貼り付け、
そのセルの値が0より小さければセルA2のコピーし、そのセルに書式を貼り付ける。
この程度の処理を数百のセルに行うのに結構な時間がかかる。
短時間で完了させるにはどうしたらいいんでしょうか?
ある程度のセル範囲ごとにまとめて書式貼り付けすればいいんでしょうか?
そのセルの値が0より大きければセルA1をコピーし、そのセルに書式を貼り付け、
そのセルの値が0より小さければセルA2のコピーし、そのセルに書式を貼り付ける。
この程度の処理を数百のセルに行うのに結構な時間がかかる。
短時間で完了させるにはどうしたらいいんでしょうか?
ある程度のセル範囲ごとにまとめて書式貼り付けすればいいんでしょうか?
90デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/07/03(月) 20:38:08.97ID:MkRtof65M >>89
正確な日本語でよろしく
正確な日本語でよろしく
91デフォルトの名無しさん (ワッチョイ 65c1-ZBdv)
2017/07/03(月) 20:39:25.48ID:u6VhpuAl0 Sub nisinsu()
Dim Z As Single, S As Long, N As String, A As String
Z = 100
S = 1
Do Until Z <= 0
N = Z Mod 2
Cells(S, 1) = Z
Cells(S, 2) = N
Z = Z \ 2
S = S + 1
A = N + A
Loop
Cells(1, 3) = A
End Sub
上の方で2進数について質問したものです
このコードである程度無事に解決しましたが、一つ分らないことがあります
Loop を抜けた後の Cells(1, 3) = A の所は Loopの一つ上の A = N + A によって 1100100 と正しい数字が表示されます
しかしこの A = の中を A = A + N というように A と N を逆にすると 10011 と全く別の数字になってしまいます
この理由がどうしてなのかを教えてください
Dim Z As Single, S As Long, N As String, A As String
Z = 100
S = 1
Do Until Z <= 0
N = Z Mod 2
Cells(S, 1) = Z
Cells(S, 2) = N
Z = Z \ 2
S = S + 1
A = N + A
Loop
Cells(1, 3) = A
End Sub
上の方で2進数について質問したものです
このコードである程度無事に解決しましたが、一つ分らないことがあります
Loop を抜けた後の Cells(1, 3) = A の所は Loopの一つ上の A = N + A によって 1100100 と正しい数字が表示されます
しかしこの A = の中を A = A + N というように A と N を逆にすると 10011 と全く別の数字になってしまいます
この理由がどうしてなのかを教えてください
92デフォルトの名無しさん (ワッチョイ bd8b-UM0m)
2017/07/03(月) 20:39:42.65ID:c364q6zP0 >>89
性格悪い日本語でよろしく
性格悪い日本語でよろしく
93デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/07/03(月) 20:45:47.19ID:MkRtof65M94デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/07/03(月) 20:54:20.38ID:MkRtof65M95デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/07/03(月) 21:15:28.35ID:TQ7WGTgT096デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/03(月) 21:15:43.91ID:S8hpBEzs097デフォルトの名無しさん (ワッチョイ 1911-Znx3)
2017/07/03(月) 21:28:10.61ID:3g7k10jb098デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/07/03(月) 21:40:24.58ID:MkRtof65M99デフォルトの名無しさん (ワッチョイ 066d-5V5Y)
2017/07/03(月) 21:49:40.34ID:wrAlhZZL0 >>96
条件付き書式が断片化してない?断片化ってのは勝手に作った言葉だけど・・・
例えば、A:Aに条件付き書式(=a1=1)を設定して、10行目を切り取って11行目に挿入したりすると
条件=A1=1
=$A$1:$A$10,$A$12:$A$1048576
条件=A11=1
=$A$11
のように分割される
一度条件付き書式の書式ルールの管理、「このワークシート」を見てみたほうがいいかも
条件付き書式が断片化してない?断片化ってのは勝手に作った言葉だけど・・・
例えば、A:Aに条件付き書式(=a1=1)を設定して、10行目を切り取って11行目に挿入したりすると
条件=A1=1
=$A$1:$A$10,$A$12:$A$1048576
条件=A11=1
=$A$11
のように分割される
一度条件付き書式の書式ルールの管理、「このワークシート」を見てみたほうがいいかも
100デフォルトの名無しさん (ブーイモ MMed-DhWx)
2017/07/03(月) 21:55:55.71ID:We00lT8WM そのセルにちゃんとワークシート名付けてる?
101デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/03(月) 22:20:14.51ID:S8hpBEzs0102デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/03(月) 22:23:39.09ID:S8hpBEzs0 今のコードはこんな感じです。
Public Sub シートの書式を設定する()
Dim iRow As Long, iCol As Long, LastRow As Long, ws As Worksheet, r As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Set ws = ThisWorkbook.Worksheets("対象シート")
startRow = 4
LastRow = ws.Cells(Rows.Count, "B").End(xlUp).Row
For iRow = startRow To LastRow
For iCol = 4 To 100
Set r = ws.Cells(iRow, iCol)
If IsNumeric(r.Value) Then
If r.Value > 0 Then
r.Select
ws.Cells(1, "C").Copy
r.PasteSpecial Paste:=xlPasteFormats
DoEvents
ElseIf r.Value < 0 Then
r.Select
ws.Cells(2, "C").Copy
r.PasteSpecial Paste:=xlPasteFormats
DoEvents
End If
End If
Next iCol
Next iRow
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Public Sub シートの書式を設定する()
Dim iRow As Long, iCol As Long, LastRow As Long, ws As Worksheet, r As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Set ws = ThisWorkbook.Worksheets("対象シート")
startRow = 4
LastRow = ws.Cells(Rows.Count, "B").End(xlUp).Row
For iRow = startRow To LastRow
For iCol = 4 To 100
Set r = ws.Cells(iRow, iCol)
If IsNumeric(r.Value) Then
If r.Value > 0 Then
r.Select
ws.Cells(1, "C").Copy
r.PasteSpecial Paste:=xlPasteFormats
DoEvents
ElseIf r.Value < 0 Then
r.Select
ws.Cells(2, "C").Copy
r.PasteSpecial Paste:=xlPasteFormats
DoEvents
End If
End If
Next iCol
Next iRow
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
103デフォルトの名無しさん (ワッチョイ c26f-CicO)
2017/07/03(月) 22:28:05.66ID:9w7qW4Z10104デフォルトの名無しさん (ワッチョイ c123-BlaP)
2017/07/03(月) 22:41:18.92ID:NJa6/A120 なんでいちいちdoeventsしてんの?
105デフォルトの名無しさん (ワッチョイ bd8b-UM0m)
2017/07/03(月) 22:43:07.60ID:c364q6zP0 あ〜万個増殖ね〜ありがちだわ〜
106デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/03(月) 22:46:45.91ID:S8hpBEzs0107デフォルトの名無しさん (ワッチョイ 65c1-ZBdv)
2017/07/03(月) 23:22:39.55ID:u6VhpuAl0108デフォルトの名無しさん (ワッチョイ c123-BlaP)
2017/07/03(月) 23:23:15.28ID:NJa6/A120 ん〜
まずはループが最終的に何回転してるのか見てみた方が良さそう
自分ならまず新しいファイルにコードをコピペしてゴミ掃除するが
まずはループが最終的に何回転してるのか見てみた方が良さそう
自分ならまず新しいファイルにコードをコピペしてゴミ掃除するが
109デフォルトの名無しさん (ワキゲー MM8a-I/sj)
2017/07/03(月) 23:58:29.09ID:MkRtof65M >>107
コレを動かしてみたらわかるよ
Sub nisinsu()
Dim Z As Single, S As Long, N As String, A As String
Dim AA As Single
Z = 100
S = 1
Do Until Z <= 0
N = Z Mod 2
Cells(S, 1) = Z
Cells(S, 2) = N
Z = Z \ 2
A = N + A
Cells(S, 4) = A
AA = AA + N
Cells(S, 5) = AA
S = S + 1
Loop
Cells(1, 3) = A
End Sub
コレを動かしてみたらわかるよ
Sub nisinsu()
Dim Z As Single, S As Long, N As String, A As String
Dim AA As Single
Z = 100
S = 1
Do Until Z <= 0
N = Z Mod 2
Cells(S, 1) = Z
Cells(S, 2) = N
Z = Z \ 2
A = N + A
Cells(S, 4) = A
AA = AA + N
Cells(S, 5) = AA
S = S + 1
Loop
Cells(1, 3) = A
End Sub
110デフォルトの名無しさん (ワッチョイ 4211-nP2k)
2017/07/04(火) 00:10:14.68ID:pX4cRUUJ0111デフォルトの名無しさん (ドコグロ MMa9-y/Rq)
2017/07/04(火) 05:36:03.11ID:JPw87neNM これって今何行あるの?
何万行もあって列数50あれば大分重くなると思うけど
何万行もあって列数50あれば大分重くなると思うけど
112デフォルトの名無しさん (ワッチョイ 0111-0bL8)
2017/07/04(火) 06:53:55.04ID:SZEZ7cdP0 6000回もselectとcopyしてりゃ遅くなるの当たり前
113デフォルトの名無しさん (オッペケ Sr71-nSMp)
2017/07/04(火) 08:12:48.47ID:n1qpisHfr 田のクラッカー
114デフォルトの名無しさん (アウアウエー Sa4a-Znx3)
2017/07/04(火) 10:15:18.62ID:hKxheJiwa セレクトなくしたら2/3ぐらいにはなりそうだな
まあどう考えてもコピペはロスがでかい
指定する書式はマクロの記録か大抵ググりゃ出てくるから調べんさい
まあどう考えてもコピペはロスがでかい
指定する書式はマクロの記録か大抵ググりゃ出てくるから調べんさい
115デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/04(火) 20:20:52.61ID:aFK9C0z90116デフォルトの名無しさん (ワッチョイ 62ec-nP2k)
2017/07/04(火) 20:21:31.96ID:aFK9C0z90117デフォルトの名無しさん (ワッチョイ 1911-Znx3)
2017/07/04(火) 23:04:48.45ID:n6RB6fUl0 >>116
頑張ってベターな方法探してね!
頑張ってベターな方法探してね!
118デフォルトの名無しさん (ワッチョイ c179-9Mth)
2017/07/05(水) 00:29:10.07ID:VBidwpfq0 ベタな方法を探す?
119デフォルトの名無しさん (アウアウウー Sa25-k1q/)
2017/07/05(水) 10:23:55.19ID:jMcI5nQfa ダブルクリックとシングルクリックを区別する処理を考えましたがあまり
美しくないです。もっとスマートな方法はありますか?
VDim isDoubleClick As Boolean
Dim cancelClick As Boolean
Private Sub CommandButton1_Click()
____Dim i As Long
____For i = 0 To 2048
________DoEvents
________If isDoubleClick = True Then
____________Exit Sub
________End If
____Next i
____If (cancelClick = False) Then
________' シングルクリック時の処理はここ
________Worksheets(1).Range("a1").Value = "シングルクリック"
____End If
____cancelClick = False
End Sub
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
____isDoubleClick = True
____' ダブルクリック時の処理はここ
____Worksheets(1).Range("a1").Value = "ダブルクリック"
____isDoubleClick = False
____cancelClick = True
End Sub
Private Sub UserForm_Initialize()
____isDoubleClick = False
____cancelClick = False
End Sub
美しくないです。もっとスマートな方法はありますか?
VDim isDoubleClick As Boolean
Dim cancelClick As Boolean
Private Sub CommandButton1_Click()
____Dim i As Long
____For i = 0 To 2048
________DoEvents
________If isDoubleClick = True Then
____________Exit Sub
________End If
____Next i
____If (cancelClick = False) Then
________' シングルクリック時の処理はここ
________Worksheets(1).Range("a1").Value = "シングルクリック"
____End If
____cancelClick = False
End Sub
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
____isDoubleClick = True
____' ダブルクリック時の処理はここ
____Worksheets(1).Range("a1").Value = "ダブルクリック"
____isDoubleClick = False
____cancelClick = True
End Sub
Private Sub UserForm_Initialize()
____isDoubleClick = False
____cancelClick = False
End Sub
120デフォルトの名無しさん (アウアウエー Sa4a-Znx3)
2017/07/05(水) 11:03:35.66ID:bK7Vkfgva121デフォルトの名無しさん (JP 0H16-CicO)
2017/07/05(水) 13:18:10.58ID:r0cXYB/2H >>119
内容と全然関係ないけど、全角スペースでインデントすれば削除されないよ
内容と全然関係ないけど、全角スペースでインデントすれば削除されないよ
122デフォルトの名無しさん (アウアウウー Sa25-k1q/)
2017/07/05(水) 16:49:43.67ID:F7dOY4NYa123デフォルトの名無しさん (ワッチョイ c26f-CicO)
2017/07/05(水) 22:43:43.51ID:kJzSrAyN0 セルの値を配列に入れる時、
セルが1つだけだと、一次元配列になっちゃうってひどくね。
セルが1つだけだと、一次元配列になっちゃうってひどくね。
124デフォルトの名無しさん (ワッチョイ 066d-Opov)
2017/07/05(水) 22:47:37.84ID:VdD8AIen0 次元数が変化するとめんどくさい時は、常に同じ次元数になるようにfunctionを噛ませる
125デフォルトの名無しさん (ワッチョイ bd8b-UM0m)
2017/07/05(水) 22:49:15.43ID:odMt6Ynp0 セルが2つだと二次元配列になっちゃうよ
126デフォルトの名無しさん (アウアウウー Sa25-k1q/)
2017/07/05(水) 23:46:14.85ID:F7dOY4NYa DAOとADOの使い分けを教えて!
127デフォルトの名無しさん (ワッチョイ f73d-1B52)
2017/07/06(木) 00:36:18.68ID:in8T4yu80 使い分けというかADOはDAOに比べて何かと便利だからADOだけ使えばいいんじゃないかな。
AccessだとデフォがDAOなんで使う事も多いけどエクセルで使うときのメリットは特に思い浮かばない。
AccessだとデフォがDAOなんで使う事も多いけどエクセルで使うときのメリットは特に思い浮かばない。
128デフォルトの名無しさん (アウアウウー Sa5b-pw7F)
2017/07/06(木) 00:50:14.75ID:J3gAfYSVa129デフォルトの名無しさん (ブーイモ MMfb-MhHl)
2017/07/06(木) 02:37:48.69ID:2ggUG7GkM >>123
Resizeで1行追加して、配列を1行減らせばいいんじゃないかと思った。
Resizeで1行追加して、配列を1行減らせばいいんじゃないかと思った。
130デフォルトの名無しさん (ワッチョイ d72b-KuRC)
2017/07/07(金) 06:50:33.44ID:k9X/9vlT0 すいません
パソコンのエクセル2016で作ったVBAをスマホで動かすことはできますか?
スマホでVBAの作成編集は無理のようなので
パソコンのエクセル2016で作ったVBAをスマホで動かすことはできますか?
スマホでVBAの作成編集は無理のようなので
131デフォルトの名無しさん (スプッッ Sd3f-nGAm)
2017/07/07(金) 07:44:52.11ID:6QLBDLc9d >>130
むしろ教えてもらいたい
むしろ教えてもらいたい
132デフォルトの名無しさん (ワッチョイ 7773-zf8i)
2017/07/07(金) 08:54:05.14ID:KQxBqvcO0 関数でがんばれ
133デフォルトの名無しさん (ワッチョイ bf23-M/n7)
2017/07/07(金) 21:24:02.96ID:IxSbuhab0134デフォルトの名無しさん (スプッッ Sdbf-kebf)
2017/07/07(金) 21:25:43.56ID:t0FXhP6Gd ノートでも画面狭く感じるのにスマホでなんてストイック過ぎる
135デフォルトの名無しさん (ワッチョイ ff8f-KuRC)
2017/07/07(金) 22:19:46.83ID:02peKi+J0 アリエッティだから…
136デフォルトの名無しさん (ワッチョイ 778b-QU0D)
2017/07/07(金) 23:07:11.35ID:tdv0VtnU0 ネゴシックスだから…
137デフォルトの名無しさん (ワッチョイ 97ea-okny)
2017/07/07(金) 23:13:49.66ID:q3zfwuJv0 vbaってエクセル用の言語?
他にも使えるの?
他にも使えるの?
138デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/07(金) 23:24:32.16ID:IHJ5BTGs0 アクセスやワードでも使えるよ
アクセスvbaはたまによく使う。SQL覚えたほうがいいけど
ワードはワード自体使わん
アクセスvbaはたまによく使う。SQL覚えたほうがいいけど
ワードはワード自体使わん
139デフォルトの名無しさん (ワッチョイ d701-LW04)
2017/07/07(金) 23:41:29.01ID:cLxiai6C0 初歩的な質問で、すみません。
vbaの公式本で独学で勉強中なのですが、
なぜこうなるのかわかりません。
よければ教えてほしいです。
不明点:
@なぜnumがセルa1〜a3だと認識されるのか。
b1〜b3も記述しているので、b1〜b3と認識されないのはなぜか。
Aこういうもんだと言われればそれまでなのですが、
ほかにもnum以外に自動認識されるような用語はあるのでしょうか。
Sub sampel()
Range("b1") = percent(Range("a1"))
Range("b2") = percent(Range("a2"))
Range("b3") = percent(Range("a3"))
End Sub
Function percent(num) As String
percent = num / 100 & "%"
End Function
vbaの公式本で独学で勉強中なのですが、
なぜこうなるのかわかりません。
よければ教えてほしいです。
不明点:
@なぜnumがセルa1〜a3だと認識されるのか。
b1〜b3も記述しているので、b1〜b3と認識されないのはなぜか。
Aこういうもんだと言われればそれまでなのですが、
ほかにもnum以外に自動認識されるような用語はあるのでしょうか。
Sub sampel()
Range("b1") = percent(Range("a1"))
Range("b2") = percent(Range("a2"))
Range("b3") = percent(Range("a3"))
End Sub
Function percent(num) As String
percent = num / 100 & "%"
End Function
140デフォルトの名無しさん (ワッチョイ ff8f-KuRC)
2017/07/07(金) 23:52:29.75ID:02peKi+J0 関数 percent(num) で呼び出しもとで
引数 numに Range("a1") をセット(厳密には違うか)してるから
って釣りだよな
引数 numに Range("a1") をセット(厳密には違うか)してるから
って釣りだよな
141デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/07(金) 23:55:59.29ID:IHJ5BTGs0 >>139
残念ながらかなり根本的な事がわかっていない
function〜はユーザー定義関数っつって、処理をひとまとめにしたもの
numってのは変数名。これは自分で決めるもので、
「num」でも「namu」でも「ナンバー」でもなんでもいい。
「sub」「if」みたいな単語は予約語と言ってそれらは使えないんだけど、まぁ何となく分かるだろう
毎回'こう書くのがめんどくさいから
Range("b1") = Range("a1") / 100 & "%"
'functionを定義して、使い回しできるようにしているだけの話
Range("b1") = percent(Range("a1"))
function作るのめんどくさくね?
と思ったかもしれないけど、それは何もわかっていないだけ
素直にこういうもんだと覚えてくれ
残念ながらかなり根本的な事がわかっていない
function〜はユーザー定義関数っつって、処理をひとまとめにしたもの
numってのは変数名。これは自分で決めるもので、
「num」でも「namu」でも「ナンバー」でもなんでもいい。
「sub」「if」みたいな単語は予約語と言ってそれらは使えないんだけど、まぁ何となく分かるだろう
毎回'こう書くのがめんどくさいから
Range("b1") = Range("a1") / 100 & "%"
'functionを定義して、使い回しできるようにしているだけの話
Range("b1") = percent(Range("a1"))
function作るのめんどくさくね?
と思ったかもしれないけど、それは何もわかっていないだけ
素直にこういうもんだと覚えてくれ
142デフォルトの名無しさん (ワッチョイ d701-LW04)
2017/07/07(金) 23:57:08.34ID:cLxiai6C0 すみません。意味が分かりました。
143デフォルトの名無しさん (ワッチョイ 9f06-1B52)
2017/07/07(金) 23:58:31.41ID:J/by2x1N0 >num以外に自動認識されるような用語
自動認識されるような用語って何?初めて聞いた
自動認識されるような用語って何?初めて聞いた
144デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/08(土) 00:00:19.52ID:lNWyFXj50 >>142
良かった、頑張ってねぇ〜
良かった、頑張ってねぇ〜
145デフォルトの名無しさん (ワッチョイ ff8f-KuRC)
2017/07/08(土) 00:06:47.50ID:13H3LMpq0146デフォルトの名無しさん (ワッチョイ f791-nB+A)
2017/07/08(土) 00:07:48.82ID:ieaMtMqy0 >>143
多分だが、引数を理解できてなくて
numに勝手にマッピングされてる、みたいに思ったんじゃないか
なんか勉強の順番おかしいんじゃない?
もっと前のフェーズでの学習が抜け落ちたまま次進んでる気がする
多分だが、引数を理解できてなくて
numに勝手にマッピングされてる、みたいに思ったんじゃないか
なんか勉強の順番おかしいんじゃない?
もっと前のフェーズでの学習が抜け落ちたまま次進んでる気がする
147デフォルトの名無しさん (ワッチョイ 9f06-1B52)
2017/07/08(土) 00:09:10.26ID:pa5RQPEd0 >>145
いやいや、いきなりアセンブラは無いだろとw
いやいや、いきなりアセンブラは無いだろとw
148デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/08(土) 00:11:00.51ID:lNWyFXj50149デフォルトの名無しさん (スプッッ Sdbf-kebf)
2017/07/08(土) 01:17:01.28ID:5hrqvRHFd 俺何年もVBAつかってるけどオプションイクスプリシットとか読めないわ書けるけど
ただのおまじないだしないいよな別に
ただのおまじないだしないいよな別に
150デフォルトの名無しさん (ワッチョイ 97ea-okny)
2017/07/08(土) 04:13:51.39ID:4CWa99QQ0 Private Sub Worksheet_Calculate()
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
End If
end sub
インサートがめっちゃ繰り返される。どうして?
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
End If
end sub
インサートがめっちゃ繰り返される。どうして?
151デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/08(土) 08:57:15.58ID:YOB7IyKs0 >>150
ifが永遠にtrueになるからではないか
セル挿入→再計算→ifがtrue→セル挿入→再計算→ifが(略
Worksheets("sheet1").Cells(3, 20) がいつ4000以上になるのか
本当になるのかチェック
ifが永遠にtrueになるからではないか
セル挿入→再計算→ifがtrue→セル挿入→再計算→ifが(略
Worksheets("sheet1").Cells(3, 20) がいつ4000以上になるのか
本当になるのかチェック
152デフォルトの名無しさん (ワッチョイ bf6d-KuRC)
2017/07/08(土) 09:26:58.00ID:lNWyFXj50 >>150
Application.EnableEvents = False
で、eventを止める
そうしないと
>セル挿入→再計算→Worksheet_Calculate→ifがtrue→セル挿入→再計算→Worksheet_Calculate→ifが(略
が起こる
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
endif
Application.EnableEvents = True
End Sub
Application.EnableEvents = False
で、eventを止める
そうしないと
>セル挿入→再計算→Worksheet_Calculate→ifがtrue→セル挿入→再計算→Worksheet_Calculate→ifが(略
が起こる
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
endif
Application.EnableEvents = True
End Sub
153デフォルトの名無しさん (ワッチョイ 97ea-okny)
2017/07/08(土) 13:34:02.80ID:4CWa99QQ0154デフォルトの名無しさん (ワッチョイ b7e3-jTKI)
2017/07/08(土) 16:53:25.86ID:Z/1cPHhj0 >>149
別にいいよ、モジュールの一番上にそれを書くのを忘れなければ
別にいいよ、モジュールの一番上にそれを書くのを忘れなければ
155デフォルトの名無しさん (スプッッ Sd3f-kebf)
2017/07/08(土) 17:53:16.70ID:lfjWBFMWd モジュールの一番上に書くのは153でしょ
'2ちゃんねるの神様に教えてもらったコードです
'神様ありがとうございます
Option Explicit
Sub foo()
〜
'2ちゃんねるの神様に教えてもらったコードです
'神様ありがとうございます
Option Explicit
Sub foo()
〜
156デフォルトの名無しさん (ワッチョイ ffb9-wcci)
2017/07/09(日) 00:06:53.03ID:8a4WwF270 こんばんは。
困ってます。
先日作成したマクロが動かなくなりました。
作成した日は動きました。
(特定のフォルダをコピーしてリネームするだけの動きです。)
プログラムを手動で実行したときは問題なく動くので、
プログラムの問題ではなさそうなのですが。
エクセルのセキュリティは、「警告を表示してすべてのマクロを無効にする」
にしています。
エクセルの再起動・PC再起動は試しましたが、だめでした。
C:\...Local\Temp\Excel8.0のMSForms.exdも消してみたりしましたがダメでした。
原因は何でしょうか・・・?
困ってます。
先日作成したマクロが動かなくなりました。
作成した日は動きました。
(特定のフォルダをコピーしてリネームするだけの動きです。)
プログラムを手動で実行したときは問題なく動くので、
プログラムの問題ではなさそうなのですが。
エクセルのセキュリティは、「警告を表示してすべてのマクロを無効にする」
にしています。
エクセルの再起動・PC再起動は試しましたが、だめでした。
C:\...Local\Temp\Excel8.0のMSForms.exdも消してみたりしましたがダメでした。
原因は何でしょうか・・・?
157デフォルトの名無しさん (ワッチョイ ffb9-wcci)
2017/07/09(日) 00:08:43.90ID:8a4WwF270 スペック全然書いてなかった。
Windows8.1
Excel2013 です。
Windows8.1
Excel2013 です。
158デフォルトの名無しさん (ワッチョイ ffb9-wcci)
2017/07/09(日) 00:14:34.37ID:8a4WwF270 すみません。
書き込んですぐに自己解決しました。
コマンドボタンのオブジェクト名が違ってた・・・。
書き込んですぐに自己解決しました。
コマンドボタンのオブジェクト名が違ってた・・・。
159デフォルトの名無しさん (ワッチョイ bf23-SyLM)
2017/07/09(日) 03:04:28.53ID:EKrowZUC0 >>158
良いんだけどさ、最低限デバッグ出来るようになってくれ。
良いんだけどさ、最低限デバッグ出来るようになってくれ。
160デフォルトの名無しさん (ドコグロ MMbf-d65a)
2017/07/09(日) 10:34:39.10ID:ouwdb2hLM まあ、解決したことを書いてくれたのはよかった
161デフォルトの名無しさん (ワッチョイ 9f4e-cnUH)
2017/07/09(日) 12:02:55.24ID:P74F/v7B0 デバッグ始めにtypoを疑って問題ないと確認して、
さんざん調べてやっぱりtypoの時の脱力感
さんざん調べてやっぱりtypoの時の脱力感
162デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 12:34:26.09ID:XJb9KLmK0 optionexplititをつけよう(typo)
163デフォルトの名無しさん (ドコグロ MMdf-d65a)
2017/07/09(日) 13:33:12.66ID:Uu/MlKNRM >>161
他人のtypoはすぐにわかるのになぜかわからない自分のtypo
他人のtypoはすぐにわかるのになぜかわからない自分のtypo
164デフォルトの名無しさん (アウアウカー Sa2b-nSBM)
2017/07/09(日) 19:05:53.04ID:WoCQL3Mea 初心者的な内容ですいません。
よければ教えてください。
1はなぜactivesheetでなくshが回答となるのでしょうか。
shがworksheetsとして定義されていないのになぜ、worksheetsとして考えられるのかわかりません。
---------
次のイベントプロシージャはブックに新しいシートを挿入したときに実行される。
挿入されたシートのシート名を、ユーザーがダイアログボックスから入力した名前に変更させたい。
このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
ただし、シート名の重複などのエラー処理は省略しているものとする。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim strSheetName As String
strSheetName = InputBox("新しいシートの名前を入力してください")
If strSheetName <> "" Then
【 1 】.Name = strSheetName
End If
End Sub
よければ教えてください。
1はなぜactivesheetでなくshが回答となるのでしょうか。
shがworksheetsとして定義されていないのになぜ、worksheetsとして考えられるのかわかりません。
---------
次のイベントプロシージャはブックに新しいシートを挿入したときに実行される。
挿入されたシートのシート名を、ユーザーがダイアログボックスから入力した名前に変更させたい。
このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
ただし、シート名の重複などのエラー処理は省略しているものとする。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim strSheetName As String
strSheetName = InputBox("新しいシートの名前を入力してください")
If strSheetName <> "" Then
【 1 】.Name = strSheetName
End If
End Sub
165デフォルトの名無しさん (ワッチョイ 9f6f-rvkC)
2017/07/09(日) 19:17:48.71ID:IxMSo5tD0 Sh As Objectって何だよ。
Sh As Worksheetじゃないのか。
問題に突っ込んでもしょうがないけど。
Sh As Worksheetじゃないのか。
問題に突っ込んでもしょうがないけど。
166デフォルトの名無しさん (アウアウカー Sa2b-nSBM)
2017/07/09(日) 19:25:01.06ID:WoCQL3Mea スタンダード公式ページの模擬問題3に書いてありました。
問題がおかしいのでしょうか?
問題がおかしいのでしょうか?
167デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 19:29:29.32ID:e2g8wwYr0 >>164
新しくできたシートが引数Shで渡されている。
(ByVal Sh As Object)の部分。
Workbook_NewSheetのイベントプロシージャの仕様。
たいてい、どのイベントプロシージャも自分自身の参照を引数で渡されている。
ので、この場合、新しくできたシート自身を操作したければ
引数で渡ってきているShを操作すればよい。
新しくできたシートが引数Shで渡されている。
(ByVal Sh As Object)の部分。
Workbook_NewSheetのイベントプロシージャの仕様。
たいてい、どのイベントプロシージャも自分自身の参照を引数で渡されている。
ので、この場合、新しくできたシート自身を操作したければ
引数で渡ってきているShを操作すればよい。
168デフォルトの名無しさん (ワッチョイ 9743-ClOc)
2017/07/09(日) 19:33:19.71ID:aVb+3v1/0 挿入された新規シートが必ずActiveSheetだとは限らないんじゃない?
イベントプロシージャに新規シートが引数として渡されるのだから、それを使うのが確実
ちなみに問題が As Object なのは間違ってない
https://msdn.microsoft.com/ja-jp/library/office/ff821246.aspx?f=255&MSPPError=-2147217396
イベントプロシージャに新規シートが引数として渡されるのだから、それを使うのが確実
ちなみに問題が As Object なのは間違ってない
https://msdn.microsoft.com/ja-jp/library/office/ff821246.aspx?f=255&MSPPError=-2147217396
169デフォルトの名無しさん (アウアウカー Sa2b-nSBM)
2017/07/09(日) 19:35:24.63ID:WoCQL3Mea こういう仕様があったんですね‼
ありがとうございます。
スタンダード合格出来るよう頑張ります。
ありがとうございます。
スタンダード合格出来るよう頑張ります。
170デフォルトの名無しさん (ワッチョイ bf6d-gkD3)
2017/07/09(日) 19:42:48.30ID:XJb9KLmK0 worksheetでもいいだろ、と思ったらエラーになった
確かにobjectであって、worksheetではない
http://stamp-uploda.com/src/file7295.jpg
ってかこれ、一体なんなんだ?参照だろうけど、中身が全くないobjectが渡されてる。意味がわからない
確かにobjectであって、worksheetではない
http://stamp-uploda.com/src/file7295.jpg
ってかこれ、一体なんなんだ?参照だろうけど、中身が全くないobjectが渡されてる。意味がわからない
171デフォルトの名無しさん (ワッチョイ bf6d-gkD3)
2017/07/09(日) 19:44:44.18ID:XJb9KLmK0 ウォッチ式では
sh.name
はウォッチ式が不正です
イミディエイトウィンドウでは
?sh.name
Sheet4
とシート名が返ってくる
なんだこりゃ??
sh.name
はウォッチ式が不正です
イミディエイトウィンドウでは
?sh.name
Sheet4
とシート名が返ってくる
なんだこりゃ??
172デフォルトの名無しさん (アウアウカー Sa2b-M/n7)
2017/07/09(日) 19:56:26.06ID:B1MJdm2Aa173デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 20:10:27.05ID:e2g8wwYr0 ためしに別の変数にShを突っ込んでみたら
中身が見られるようになった。
どっかで、オブジェクト変数は利用されるまで中身が入らないよ
みたいな話を聞いたような・・・。
中身が見られるようになった。
どっかで、オブジェクト変数は利用されるまで中身が入らないよ
みたいな話を聞いたような・・・。
174デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/09(日) 20:17:33.00ID:XJb9KLmK0 >>172
試してみたら、ウォッチ式でもイミディエイトウィンドウでもsh.nameはうまく取れた。
ウォッチ式のshは取れない。
なんかバグの温床になりそうで、このshあんまり使いたくないなぁ…
環境はwindows7 エクセル2010
vbaコード
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox 1 'ブレークポイントを設定している
End Sub
ウォッチ式に
sh
sh.name
を追加
shは図のとおり、変な状態になる。プロパティなどが表示されない
sh.nameはシート名が表示される
イミディエイトウィンドウは正常
?sh.name
Sheet5
http://stamp-uploda.com/src/file7296.jpg
>>173
プロパティ(sh.name)を呼び出してみた後の状態
(メッセージボックスにはsheeet6と正常に表示された)
やっぱりダメだった。
http://stamp-uploda.com/src/file7297.jpg
なんらかの理由でウォッチ式が正常に機能してないだけならいいけど、正常な状態でこれだとどういう状況なんだろう
試してみたら、ウォッチ式でもイミディエイトウィンドウでもsh.nameはうまく取れた。
ウォッチ式のshは取れない。
なんかバグの温床になりそうで、このshあんまり使いたくないなぁ…
環境はwindows7 エクセル2010
vbaコード
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox 1 'ブレークポイントを設定している
End Sub
ウォッチ式に
sh
sh.name
を追加
shは図のとおり、変な状態になる。プロパティなどが表示されない
sh.nameはシート名が表示される
イミディエイトウィンドウは正常
?sh.name
Sheet5
http://stamp-uploda.com/src/file7296.jpg
>>173
プロパティ(sh.name)を呼び出してみた後の状態
(メッセージボックスにはsheeet6と正常に表示された)
やっぱりダメだった。
http://stamp-uploda.com/src/file7297.jpg
なんらかの理由でウォッチ式が正常に機能してないだけならいいけど、正常な状態でこれだとどういう状況なんだろう
175デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 20:42:05.40ID:e2g8wwYr0 >>174
Dim sheet as Worksheet
Set sheet = Sh
これをmsgboxの前に追加すると全部の変数がウォッチで見られると思う。
ググってみたらNewで作ったオブジェクトは初めて利用するまで空ですよ
らしいので、新シートのオブジェクトは内部的にNewで作成している?
Sh.nameが引けるのは何ででしょう?
Dim sheet as Worksheet
Set sheet = Sh
これをmsgboxの前に追加すると全部の変数がウォッチで見られると思う。
ググってみたらNewで作ったオブジェクトは初めて利用するまで空ですよ
らしいので、新シートのオブジェクトは内部的にNewで作成している?
Sh.nameが引けるのは何ででしょう?
176デフォルトの名無しさん (スップ Sdbf-Yl52)
2017/07/09(日) 20:43:00.97ID:vBmV/XSmd それよりも改行しないコードかく人は何を考えてコード書いてるのか気になる
177デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 20:43:34.76ID:BT4+59vh0 >>174
objectで受け取ってるからshのままでは何のクラスなのかわからないからどんなプロパティがあるかわからない
Nameプロパティを指定したら
Nameプロパティを持っているクラスとして解釈して
Nameプロパティの位置を文字列として表示しただけ
worksheetクラスのデフォルトプロパティがNameだからかな
countプロパティとかとして解釈させたら想定外の値になると予想
objectで受け取ってるからshのままでは何のクラスなのかわからないからどんなプロパティがあるかわからない
Nameプロパティを指定したら
Nameプロパティを持っているクラスとして解釈して
Nameプロパティの位置を文字列として表示しただけ
worksheetクラスのデフォルトプロパティがNameだからかな
countプロパティとかとして解釈させたら想定外の値になると予想
178デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 20:46:50.81ID:e2g8wwYr0179デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 20:49:10.77ID:BT4+59vh0180デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 20:54:20.52ID:BT4+59vh0181デフォルトの名無しさん (ワッチョイ 778b-utq/)
2017/07/09(日) 20:55:59.71ID:oI2zN/et0 てかお前らそんなに一か八かでactivesheet使ってんのかよw
182デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/09(日) 21:19:51.98ID:XJb9KLmK0 これが通るけど、ウォッチ式には現れない
多分ウォッチ式の不具合だと思う
そう考えないと気持ち悪くて仕方ないし疲れてきた・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Calculate
MsgBox Sh.Index
End Sub
http://stamp-uploda.com/src/file7299.jpg
>>175
sheetでもShでも見れるようになりました
Shの参照をコピーしたのでインスタンスが生成されたのかな
>>177
indexプロパティでも通りましたし
Sh.Calculateメソッドでも通りました
>>181
使ってないよ。sheetの指定はsetした変数を使ってる
昔はactive〜やselect〜を使ってたけどね
多分ウォッチ式の不具合だと思う
そう考えないと気持ち悪くて仕方ないし疲れてきた・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Calculate
MsgBox Sh.Index
End Sub
http://stamp-uploda.com/src/file7299.jpg
>>175
sheetでもShでも見れるようになりました
Shの参照をコピーしたのでインスタンスが生成されたのかな
>>177
indexプロパティでも通りましたし
Sh.Calculateメソッドでも通りました
>>181
使ってないよ。sheetの指定はsetした変数を使ってる
昔はactive〜やselect〜を使ってたけどね
183デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 21:38:18.71ID:BT4+59vh0 >>182
worksheetクラスではないクラスのプロパティを指定したらどうなると予想する?
例えばRangeクラスのプロパティとか
もしかしたらサイズとかを見ていてサイズが異なる場合はキャスト出来ないかもしれないど
メモリ領域には値が格納されているけどそれをどう解釈するかはクラスが決まらないと特定できない
worksheetクラスではないクラスのプロパティを指定したらどうなると予想する?
例えばRangeクラスのプロパティとか
もしかしたらサイズとかを見ていてサイズが異なる場合はキャスト出来ないかもしれないど
メモリ領域には値が格納されているけどそれをどう解釈するかはクラスが決まらないと特定できない
184デフォルトの名無しさん (ワッチョイ bf6d-U373)
2017/07/09(日) 21:45:51.77ID:XJb9KLmK0 >>183
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Debug.Print Sh.Range("a1").Address
End Sub
で
$A$1
が返ってきたわ
http://stamp-uploda.com/src/file7301.jpg
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Debug.Print Sh.Range("a1").Address
End Sub
で
$A$1
が返ってきたわ
http://stamp-uploda.com/src/file7301.jpg
185デフォルトの名無しさん (ワッチョイ bf6d-U373)
2017/07/09(日) 21:47:17.93ID:XJb9KLmK0 写ってないけどウォッチ式のshのプロパティは不明なままね
ウォッチ式がおかしい以外考えにくい
ウォッチ式がおかしい以外考えにくい
186デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 22:03:56.91ID:e2g8wwYr0 Private Sub Workbook_NewSheet(ByVal sh As Object)
Dim obj As Object
Set obj = sh
MsgBox obj.Name
End Sub
これだと中身が見られないけど通る。
やっぱり>>183の型キャスト説じゃないかなぁ。
ローカルウィンドウでも見られないし。
obj.Value = "aaa" で実行時エラーになる。
「ん〜何か知らないけどValueに入れるよ?あっねえわw」 ってことでは?
.Nameや.Range().Addressはあったんで通る。
Dim obj As Object
Set obj = sh
MsgBox obj.Name
End Sub
これだと中身が見られないけど通る。
やっぱり>>183の型キャスト説じゃないかなぁ。
ローカルウィンドウでも見られないし。
obj.Value = "aaa" で実行時エラーになる。
「ん〜何か知らないけどValueに入れるよ?あっねえわw」 ってことでは?
.Nameや.Range().Addressはあったんで通る。
187デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 22:23:32.11ID:XJb9KLmK0 >>186
それはrange指定してないっす・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Cells(1, 1).Value = "aaa"
End Sub
で通ったよ
それはrange指定してないっす・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Cells(1, 1).Value = "aaa"
End Sub
で通ったよ
188デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 22:31:30.92ID:BT4+59vh0 >>184
Debug.Print Sh.Range("a1").Address
ではなくて
Debug.print sh.address
だったらどうなるかって意図だったけど
ためしたら実行時エラーになる
これはtypename(Sh)を表示したらわかるけど
Shという変数自体にクラス(型)に関する情報を持っているから
無理矢理Rangeクラスのプロパティを表示させようとするとエラーになる
dim rng as Range
set rng = Sh
とかやっても実行時エラーになる
文法的にはエラーじゃないからコンパイルは通る
VBAが型チェックしてバグにならないようにしていると思う
他の言語だとこれができるものもある
Debug.Print Sh.Range("a1").Address
ではなくて
Debug.print sh.address
だったらどうなるかって意図だったけど
ためしたら実行時エラーになる
これはtypename(Sh)を表示したらわかるけど
Shという変数自体にクラス(型)に関する情報を持っているから
無理矢理Rangeクラスのプロパティを表示させようとするとエラーになる
dim rng as Range
set rng = Sh
とかやっても実行時エラーになる
文法的にはエラーじゃないからコンパイルは通る
VBAが型チェックしてバグにならないようにしていると思う
他の言語だとこれができるものもある
189デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 22:35:23.27ID:BT4+59vh0 >>187
ShがWorksheetクラスだっていうのが判ってるからRangeを指定するってわかるけど
Objectクラスだったら何のプロパティを持っているかわからなくない?
Objectクラスはすべてのクラスのスーパークラスだから何でも参照できる
Sh as Objectと宣言されているShが実態はRangeクラスである場合もある
その場合は、Sh.Value = "a"でも実行時エラーにはならない
ShがWorksheetクラスだっていうのが判ってるからRangeを指定するってわかるけど
Objectクラスだったら何のプロパティを持っているかわからなくない?
Objectクラスはすべてのクラスのスーパークラスだから何でも参照できる
Sh as Objectと宣言されているShが実態はRangeクラスである場合もある
その場合は、Sh.Value = "a"でも実行時エラーにはならない
190デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 22:50:14.83ID:XJb9KLmK0 >>188-189
なるほど、意図が分かりました。コンパイルエラーになる意味もわかりました、ありがとうございます
以下の状態だと、shの型はobject/Sheet5としてウォッチ式に認識されます
この「Sheet5」というのは何でしょうか?
デフォルトプロパティでしょうか?
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim sheet As Worksheet
Set sheet = Sh
Debug.Print 1 'ここでブレークポイント
End Sub
なるほど、意図が分かりました。コンパイルエラーになる意味もわかりました、ありがとうございます
以下の状態だと、shの型はobject/Sheet5としてウォッチ式に認識されます
この「Sheet5」というのは何でしょうか?
デフォルトプロパティでしょうか?
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim sheet As Worksheet
Set sheet = Sh
Debug.Print 1 'ここでブレークポイント
End Sub
191デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 22:58:28.17ID:XJb9KLmK0 しかし>>175がどうしてもわかりません
object型をobject型に渡してもプロパティは分からない、それは分かります
http://stamp-uploda.com/src/file7303.jpg
object型をworksheet型に渡すと、ウォッチ式で見れるようになる、それがわからない
http://stamp-uploda.com/src/file7302.jpg
全部のプロパティ・メソッド見たら全部一致してたからworksheetとしてコピーしますね〜ということ?
object型をobject型に渡してもプロパティは分からない、それは分かります
http://stamp-uploda.com/src/file7303.jpg
object型をworksheet型に渡すと、ウォッチ式で見れるようになる、それがわからない
http://stamp-uploda.com/src/file7302.jpg
全部のプロパティ・メソッド見たら全部一致してたからworksheetとしてコピーしますね〜ということ?
192デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 23:03:28.23ID:BT4+59vh0 >>190
Set sheet = Sh
を実行した時点で、Sh = sheet = Worksheetクラスのオブジェクトと特定可能
なのでworksheetクラスのデフォルトプロパティを表示しているのではないか
ウォッチ式にsheet変数も追加すると、そのタイミングで
Shの他のプロパティも見えるようになった
Set sheet = Sh
を実行した時点で、Sh = sheet = Worksheetクラスのオブジェクトと特定可能
なのでworksheetクラスのデフォルトプロパティを表示しているのではないか
ウォッチ式にsheet変数も追加すると、そのタイミングで
Shの他のプロパティも見えるようになった
193デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 23:06:31.26ID:e2g8wwYr0 >>191
型キャストで
Shがワークシートだと判明したので
Shとsheetは同じ物なので
両方のプロパティが同じで表示されるのではと思うが。
詳しくはマスターにまかせる。
と思ったらもう回答されていた。
すごい勉強になった。
型キャストで
Shがワークシートだと判明したので
Shとsheetは同じ物なので
両方のプロパティが同じで表示されるのではと思うが。
詳しくはマスターにまかせる。
と思ったらもう回答されていた。
すごい勉強になった。
194デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 23:09:27.92ID:BT4+59vh0195デフォルトの名無しさん (アウアウエー Sadf-thUc)
2017/07/10(月) 09:22:58.03ID:HOfsyLJOa activesheet使うのはworksheets.copy使うときぐらいだな
真面目に作るときは書式とか直で指定するように頑張るけど
真面目に作るときは書式とか直で指定するように頑張るけど
196デフォルトの名無しさん (ワッチョイ 7773-zf8i)
2017/07/10(月) 12:08:47.45ID:G+8qCprO0 レコードセットをそのままシートに張り付けると、元の型を継承して数字のみのカラムも文字列として貼られるんだけど、さすがにどうしようもない?
197デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 12:39:11.04ID:okOc14zTd >>196
あとで一括して和0すりゃいいじゃん
あとで一括して和0すりゃいいじゃん
198デフォルトの名無しさん (ササクッテロロ Spcb-9DAm)
2017/07/10(月) 12:47:22.77ID:8dcdQUy6p >>197
和は加算の結果を表す言葉
0を加算とか足す0じゃないと意味が違ってくる
因みにレコードセットの型はcolumnの最初の7行分のデータから推測されるとかだったと思うから
目的の型になるようにソートすればいいかも
和は加算の結果を表す言葉
0を加算とか足す0じゃないと意味が違ってくる
因みにレコードセットの型はcolumnの最初の7行分のデータから推測されるとかだったと思うから
目的の型になるようにソートすればいいかも
199デフォルトの名無しさん (ドコグロ MM2b-jxDt)
2017/07/10(月) 13:37:23.50ID:WkincIndM 関数の引数にbyval ws as Worksheetってやるとどうなるの?
worksheetに対しては、byrefしか使ったことない
worksheetに対しては、byrefしか使ったことない
200デフォルトの名無しさん (ワンミングク MM7f-jTKI)
2017/07/10(月) 14:25:22.38ID:/gGZBLtxM オブジェクト型はbyval渡し出来ないんじゃなかったっけ?
201デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 14:36:15.11ID:okOc14zTd202デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 14:38:53.50ID:okOc14zTd203デフォルトの名無しさん (ブーイモ MMbf-MhHl)
2017/07/10(月) 15:15:06.40ID:UwxUnls6M >>199
たぶんプロシージャ内の set ws=hoge が引数に反映されるかされないかが変わってくる
たぶんプロシージャ内の set ws=hoge が引数に反映されるかされないかが変わってくる
204デフォルトの名無しさん (ドコグロ MMdf-jxDt)
2017/07/10(月) 16:10:50.58ID:1UBLPYX0M205デフォルトの名無しさん (スッップ Sdbf-Yl52)
2017/07/10(月) 17:19:20.24ID:1LvSwn3ad thisworkbookをoptionalな引数のデフォルト値にしたいんだけどできない
何かいい方法知りませんか
何かいい方法知りませんか
206デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 18:34:12.31ID:okOc14zTd >>205
確認せずに答えるけど、できないならOptionalのデフォルト値をNothingにして、
モジュール内で判断・分岐する
If a Is Nothing Then Set a = ActiveWorkBook
とか
確認せずに答えるけど、できないならOptionalのデフォルト値をNothingにして、
モジュール内で判断・分岐する
If a Is Nothing Then Set a = ActiveWorkBook
とか
207デフォルトの名無しさん (ワッチョイ bf6d-KuRC)
2017/07/10(月) 18:40:40.88ID:9dSXLq4x0 デフォルト値は定数式で、って言われるな
デフォルト値を文字列にして"thisworkbook"、evalで…とか考えたけど2013持ってないから試せない
そこまでしても読みにくくなるだけなので、素直に>>206みたいに条件分岐させたほうが良いと思う
デフォルト値を文字列にして"thisworkbook"、evalで…とか考えたけど2013持ってないから試せない
そこまでしても読みにくくなるだけなので、素直に>>206みたいに条件分岐させたほうが良いと思う
208デフォルトの名無しさん (ブーイモ MMdb-MhHl)
2017/07/10(月) 19:04:18.69ID:fjsjDBbbM 質問です。
ユーザーフォームをShowModal=Falseで表示しており、フォームを表示したまま、フォーカスをフォームからセルに移動することは可能でしょうか?
cells(1,1).select や application.goto cells(1,1) ではフォーカスがフォームから動きませんでした。
ユーザーフォームをShowModal=Falseで表示しており、フォームを表示したまま、フォーカスをフォームからセルに移動することは可能でしょうか?
cells(1,1).select や application.goto cells(1,1) ではフォーカスがフォームから動きませんでした。
209デフォルトの名無しさん (ワッチョイ bf6d-gkD3)
2017/07/10(月) 19:17:57.83ID:9dSXLq4x0 >>208
昔やったことあるなぁ
と思って試したら、仕様変更でできなくなってるっぽい
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44929;id=excel
2010は無理だった
昔やったことあるなぁ
と思って試したら、仕様変更でできなくなってるっぽい
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44929;id=excel
2010は無理だった
210208 (ブーイモ MMdb-MhHl)
2017/07/10(月) 19:26:18.02ID:fjsjDBbbM211デフォルトの名無しさん (スッップ Sdbf-Yl52)
2017/07/10(月) 20:52:31.16ID:93pFc0tnd212デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/10(月) 21:00:26.90ID:N/fNiVFC0 >>211
コンパイル時点で決まってないからかな〜
コンパイル時点で決まってないからかな〜
213208 (ブーイモ MMdb-MhHl)
2017/07/11(火) 12:39:40.24ID:fzHCV1ljM >>209
AppActivateもApplication.Visible=Trueでもいけました!
ちなみに以下のも試しましたが全部ダメでした。
ActiveWindow.Activate
ActiveWorkBook.Activate
ActivateSheet.Activate
2010以降だとWIN32APIとかでシートのマウスクリックを挟まないとダメかもですね。
AppActivateもApplication.Visible=Trueでもいけました!
ちなみに以下のも試しましたが全部ダメでした。
ActiveWindow.Activate
ActiveWorkBook.Activate
ActivateSheet.Activate
2010以降だとWIN32APIとかでシートのマウスクリックを挟まないとダメかもですね。
214デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/11(火) 19:59:21.82ID:L+/Hncu30215デフォルトの名無しさん (ワッチョイ 9f6f-rvkC)
2017/07/12(水) 19:38:42.24ID:qkF1IqO80 Sh As Object
Sh
Sh
216デフォルトの名無しさん (ワッチョイ 9f6f-rvkC)
2017/07/12(水) 19:41:14.38ID:qkF1IqO80 ↑誤送信すまん。
Sh As Object
Sh As Worksheet
どちらでも動くのは分かる。
Objectにするのって、
どんな値が入るかわからないから、
Variantでいいやって考えるのと同じ?
Sh As Object
Sh As Worksheet
どちらでも動くのは分かる。
Objectにするのって、
どんな値が入るかわからないから、
Variantでいいやって考えるのと同じ?
217デフォルトの名無しさん (ワッチョイ bf6d-KuRC)
2017/07/12(水) 19:46:47.71ID:xxYqMu/90 どんな値が入るかわからないコードってどんなコード?
デバッグ用にエラーで分岐させた先とか?
デバッグ用にエラーで分岐させた先とか?
218デフォルトの名無しさん (ワッチョイ 778b-utq/)
2017/07/12(水) 19:50:58.17ID:vG3FHDEt0 つっこむならせめて値と型の違いぐらい分かっていて欲しかったなあ
219デフォルトの名無しさん (ワッチョイ 9723-zf8i)
2017/07/12(水) 19:53:10.98ID:+y58Cois0 >>217
variantさんディスってるの?
variantさんディスってるの?
220デフォルトの名無しさん (ワッチョイ bf6d-pHDl)
2017/07/12(水) 20:00:38.68ID:xxYqMu/90221デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/12(水) 20:10:18.44ID:agdmn3RR0 NewSheetイベントの引数の場合、Shには
「Worksheet オブジェクトまたは Chart オブジェクトが渡されます」
と書いてあるので
どっちが渡されてもいいようにObjectなのでしょう
「Worksheet オブジェクトまたは Chart オブジェクトが渡されます」
と書いてあるので
どっちが渡されてもいいようにObjectなのでしょう
222デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:14:58.86ID:IZp09kNA0 俺の書くVBAはVariantばっかりだけど問題ないよね?
223デフォルトの名無しさん (ワキゲー MMdf-R1hf)
2017/07/12(水) 21:19:09.13ID:Nu9oIAfCM 個人利用である限りはね
224デフォルトの名無しさん (ワッチョイ 976f-KuRC)
2017/07/12(水) 21:27:49.15ID:M2bsHFCW0 書籍にさえ糞みたいなコードが平然と書かれてるVBA
どんなコードだってヘーキヘーキ
どんなコードだってヘーキヘーキ
225デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/12(水) 21:28:35.71ID:xxYqMu/90 そもそも宣言しなくても特に問題はない
vbaの型なんてやわらかすぎてあってないようなもん、死にはせん
vbaの型なんてやわらかすぎてあってないようなもん、死にはせん
226デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:34:45.69ID:IZp09kNA0227デフォルトの名無しさん (ワキゲー MMdf-R1hf)
2017/07/12(水) 21:40:21.42ID:Nu9oIAfCM ただこーゆー所でVariantプログラムって言うとなんやかんやめんどくさいので胸の内に秘めとくことをオススメする
228デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:47:21.99ID:IZp09kNA0 俺がそのVariantを全部なくしてやるよ!
↓
↓
229デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/12(水) 21:48:46.29ID:xxYqMu/90 NULLじゃなくてnothingでは
230デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:54:45.14ID:IZp09kNA0 >>229
まあNothingが来れば気を付けなきゃいけないだろうけど、NULLはDBから読んだデータソースに含まれている場合が多いから。
まあNothingが来れば気を付けなきゃいけないだろうけど、NULLはDBから読んだデータソースに含まれている場合が多いから。
231デフォルトの名無しさん (ワッチョイ 778b-utq/)
2017/07/12(水) 21:55:54.59ID:vG3FHDEt0 She As Object
Set She = New LoveDoll
She.DressUp(MaidCostume)
She.Attach(SilliconVagina)
I.Fuck(She)
I.FinishAlone()
She.Detach(SilliconVagina)
I.Wash(SilliconVagina)
Set She = New LoveDoll
She.DressUp(MaidCostume)
She.Attach(SilliconVagina)
I.Fuck(She)
I.FinishAlone()
She.Detach(SilliconVagina)
I.Wash(SilliconVagina)
232デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 22:01:13.24ID:IZp09kNA0 5行目にSet her = She があればよかった
233デフォルトの名無しさん (アウアウウー Sa5b-pw7F)
2017/07/12(水) 22:40:32.03ID:ybKMfalIa VBEのインテリセンスを止める方法教えてください
234デフォルトの名無しさん (アークセー Sx39-y19a)
2017/07/13(木) 06:37:01.82ID:zrnYEEn3x NewSheetイベントの引数ShがObject型なのは、WorkSheetクラスとChartObjectクラスの両方でNewSheetイベントの呼び出しが定義されていて、実行時にしかShの型が決まらないからだと思うが
Workbook.Sheets(Index)の戻り値がObject型なのと一緒
Workbook.Sheets(Index)の戻り値がObject型なのと一緒
235デフォルトの名無しさん (アウアウエー Sa66-PUpa)
2017/07/13(木) 12:57:05.14ID:vRW6wkrFa variantとかobject形はコンパイルエラーで止めてくれないからめんどい
今ちょうど使いたい場面出てきてるんだが二の足踏んでる
今ちょうど使いたい場面出てきてるんだが二の足踏んでる
236デフォルトの名無しさん (ワッチョイ 6e1b-MRQN)
2017/07/13(木) 13:12:36.23ID:9SrccZi40 指定日(A)から現時点(B)までの経過時間をミリ秒で取得したい場合、
どのようにしたら上手く取れるでしょうか?
VB.NETの時はGetTimeMillisecondsがあったので、(B-A).GetTimeMillisecondsで取得出来たんですが。
どのようにしたら上手く取れるでしょうか?
VB.NETの時はGetTimeMillisecondsがあったので、(B-A).GetTimeMillisecondsで取得出来たんですが。
237デフォルトの名無しさん (ワッチョイ 1d54-pdrj)
2017/07/13(木) 13:25:10.65ID:T6Wx4mwg0 APIのGetTickCountを使う
238デフォルトの名無しさん (ワッチョイ 6e1b-MRQN)
2017/07/13(木) 13:36:43.69ID:9SrccZi40 >>237
ありがとうございます。
GetTickCountも試してはみたんですが、システム稼働してからの時間だからか
自分では上手く取得できませんでした。
「指定日」(今回やりたいのは1970/1/1)からの経過時間をミリ秒取得するには
どのようにしたら良いでしょうか?
ありがとうございます。
GetTickCountも試してはみたんですが、システム稼働してからの時間だからか
自分では上手く取得できませんでした。
「指定日」(今回やりたいのは1970/1/1)からの経過時間をミリ秒取得するには
どのようにしたら良いでしょうか?
239デフォルトの名無しさん (アウアウエー Sa66-PUpa)
2017/07/13(木) 14:33:52.00ID:hn5wvxLda >>236
doubleに変換して計算してまた変換するとか
doubleに変換して計算してまた変換するとか
240デフォルトの名無しさん (アークセー Sx5f-I8+U)
2017/07/13(木) 17:11:00.53ID:mgpP2Dmux >>238
ミリ秒に換算しろ
ミリ秒に換算しろ
241デフォルトの名無しさん (ワッチョイ 006f-z+eH)
2017/07/13(木) 18:03:16.52ID:etRke/LM0 >>238
どうせそんな長いスパンならミリ秒はなんちゃってでいいんでしょ
Application.WorksheetFunction.RoundDown((Date - CDate("1970/1/1")) * 86400000 + Timer * 1000, 0)
どうせそんな長いスパンならミリ秒はなんちゃってでいいんでしょ
Application.WorksheetFunction.RoundDown((Date - CDate("1970/1/1")) * 86400000 + Timer * 1000, 0)
242デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/13(木) 20:31:54.44ID:kGwztgTZ0 >>236
timediff()関数だかdifftime()があったはず
timediff()関数だかdifftime()があったはず
243デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/13(木) 20:34:22.33ID:kGwztgTZ0 datediff()だった
ただ秒単位が最小だった
ただ秒単位が最小だった
244デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/13(木) 21:05:07.35ID:WT5N9OT5M Win32API の GetSystemTime( ) を呼び出して後は頑張って差を計算するなりすればいいだけでしょ
245デフォルトの名無しさん (ワッチョイ 0a23-z+eH)
2017/07/13(木) 21:30:25.15ID:kQSmD3CQ0 そもそもソースがクソ精度のシステム時刻だからmsecなんてあてにならない気がする
直前にNTPで同期をとるとか?
直前にNTPで同期をとるとか?
246デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/13(木) 21:37:03.54ID:kGwztgTZ0 指定日から当日までをdatediffの秒単位で取得して
当日からその時刻までをmsで取得して
足し合わせればいいんじゃね
当日からその時刻までをmsで取得して
足し合わせればいいんじゃね
247デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/13(木) 21:47:59.63ID:OJpyM90P0 ミリ秒の精度が求められる操作をVBAでって嫌だなぁw
248デフォルトの名無しさん (ワッチョイ 006f-z+eH)
2017/07/13(木) 22:44:18.16ID:etRke/LM0 作成するファイルやデータの一意な命名、識別とかに使うんじゃないの
だいたいでいいと思うわ
だいたいでいいと思うわ
249デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/14(金) 06:02:22.03ID:bYrN3J/p0 要件推理大会は終わった?
250デフォルトの名無しさん (JP 0H32-v2r+)
2017/07/14(金) 10:03:16.31ID:ak+4FQ9QH 要件って喪前らは横浜のシューマイ屋さんか!!!!
(´・ω・`)b
(´・ω・`)b
251デフォルトの名無しさん (ワッチョイ 0a23-z+eH)
2017/07/14(金) 10:25:11.37ID:P3iXCzVv0 Range("250").ClearContents
252デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/14(金) 22:15:23.51ID:ont4yiQP0 !!!?
その手があったか!!
今まで、真面目に名前を付けることしか考えなかったわ。
Dim Sh As Worksheet
Set Sh = Thisworkbook.Worksheets("(´・ω・`)b")
こんなのもありだな。
その手があったか!!
今まで、真面目に名前を付けることしか考えなかったわ。
Dim Sh As Worksheet
Set Sh = Thisworkbook.Worksheets("(´・ω・`)b")
こんなのもありだな。
253デフォルトの名無しさん (ワッチョイ c491-BaGs)
2017/07/14(金) 22:29:36.70ID:Ry5eHGcV0 そういやみなさん
その場限りの適当マクロじゃなくて
ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
自分はまずセルに名前をつけて
Const hoge = "セルにつけた名前"
Range(hoge).value = "うんこ"
みたいなことやってます
ちなみに、シート名でもこれやってるんですが‥
シート名やセル名が変わる可能性を前提にしたら
こういうアプローチになるとは思うんですけど
結局凄く無駄なことをやってる気がして…(結局変えることあんまないし)
特にセルの名前に関しては、どうせその文字列をConstのところにハードコードするなら
名前つけずに
Const hoge ="A1:B5"
でもええやんけとか思ってるんですが
行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
その場限りの適当マクロじゃなくて
ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
自分はまずセルに名前をつけて
Const hoge = "セルにつけた名前"
Range(hoge).value = "うんこ"
みたいなことやってます
ちなみに、シート名でもこれやってるんですが‥
シート名やセル名が変わる可能性を前提にしたら
こういうアプローチになるとは思うんですけど
結局凄く無駄なことをやってる気がして…(結局変えることあんまないし)
特にセルの名前に関しては、どうせその文字列をConstのところにハードコードするなら
名前つけずに
Const hoge ="A1:B5"
でもええやんけとか思ってるんですが
行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
254デフォルトの名無しさん (ワッチョイ e66d-TdFn)
2017/07/14(金) 22:44:26.51ID:YONW9HHx0255デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/14(金) 23:03:04.97ID:QoWI5XEA0256デフォルトの名無しさん (ワッチョイ 0a23-z+eH)
2017/07/14(金) 23:10:22.98ID:P3iXCzVv0 >>253
よくある表の列の増減対応する場合は
列挙体で列名を定義しておいて
Cellsで列名を参照させてる。
途中にぶっこんでも列挙体のほうをちょろっと書き換えればいい。
行にも対応させると、面倒かも。
よくある表の列の増減対応する場合は
列挙体で列名を定義しておいて
Cellsで列名を参照させてる。
途中にぶっこんでも列挙体のほうをちょろっと書き換えればいい。
行にも対応させると、面倒かも。
257デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/14(金) 23:41:07.46ID:ont4yiQP0 >列の増減
会社のやつ、一切弄れないようにしたわwwwww
セルを保護するとかじゃなくて、
データの更新時に、全消しして再描画するのwwwwwwwwww
列挿入とかしても無駄ですよってwwwwwww
会社のやつ、一切弄れないようにしたわwwwww
セルを保護するとかじゃなくて、
データの更新時に、全消しして再描画するのwwwwwwwwww
列挿入とかしても無駄ですよってwwwwwww
258デフォルトの名無しさん (ワッチョイ e66d-qA4N)
2017/07/15(土) 00:03:43.14ID:fdp++JjU0 そういうの、このスレだと基本だと思う
・正規化したデータを引っ張ってくる
・ボタン押したらvbaで構築。シートすら削除して再作成
こんなんばっかだろ。誰もさわれなくて非難轟々だけど、どうかんがえてもこっちのほうが安全なんだよな
・正規化したデータを引っ張ってくる
・ボタン押したらvbaで構築。シートすら削除して再作成
こんなんばっかだろ。誰もさわれなくて非難轟々だけど、どうかんがえてもこっちのほうが安全なんだよな
259デフォルトの名無しさん (ワッチョイ e251-X5vM)
2017/07/15(土) 00:11:34.38ID:CxBosAMp0260デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/15(土) 00:12:14.92ID:kt01pjYOM 学ぶ気のない人からとても怒られるやつ
261デフォルトの名無しさん (スッップ Sd70-QKFr)
2017/07/15(土) 00:49:22.52ID:K6V0aa5ld262デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 04:37:45.96ID:7LAckzVN0 >>256
コードをいじらないといけないじゃないか
コードをいじらないといけないじゃないか
263デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 04:53:42.10ID:7LAckzVN0264デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/15(土) 08:42:06.63ID:tWt2y1Te0 >参照しか出来ないならwebシステムにすればいいんじゃね
ヒント:権限
ヒント:権限
265デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/15(土) 09:43:36.21ID:jhhap/jh0 >>253
> ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
状況次第だけどよくアクセスするとか重要なセルは適当なところでまとめて変数に代入してる
Dim hoge As Range
Set hoge = Range("A1")
...
hoge.value = "うんこ"
> 行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
行とか列の挿入を想定するなら名前をつけてそれで参照する
ユーザーが作成するようなシートなら特定の文字列を検索して場所を特定するとかもやる
> ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
状況次第だけどよくアクセスするとか重要なセルは適当なところでまとめて変数に代入してる
Dim hoge As Range
Set hoge = Range("A1")
...
hoge.value = "うんこ"
> 行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
行とか列の挿入を想定するなら名前をつけてそれで参照する
ユーザーが作成するようなシートなら特定の文字列を検索して場所を特定するとかもやる
266デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 09:44:21.75ID:7LAckzVN0267デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 10:08:30.41ID:7LAckzVN0268デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/15(土) 11:40:57.26ID:aW477mPhM269デフォルトの名無しさん (ササクッテロラ Sp72-+gV6)
2017/07/15(土) 11:48:46.46ID:CRqbHh/Cp270デフォルトの名無しさん (ササクッテロラ Sp72-+gV6)
2017/07/15(土) 11:50:44.37ID:CRqbHh/Cp271デフォルトの名無しさん (ドコグロ MM2e-OTuW)
2017/07/15(土) 12:33:52.46ID:hu77KrcYM >>269-270
レスを分けて書く奴はもれなくバカの法則 w
レスを分けて書く奴はもれなくバカの法則 w
272デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/15(土) 16:36:10.60ID:fdp++JjU0273デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/15(土) 17:34:03.53ID:0urlci1o0 VBAのマクロって
・マクロ制作者本人の操作を補助する為のものであり、他人に使わせる事は想定されていない
・オフィス製品の操作を補助する為のものであり、アプリケーションの本来の振る舞いを超えた動作は想定されていない
・ユーザーフォームはマクロの操作を容易にする為のものであり、別のアプリケーションであるかの様に振る舞う事は想定されていない
なので想定されていないものを作ろうとしたら不便さを感じるのは当然
どんな言語もそうだけど、想定された使い方なら便利だし、そうでないなら不便だよ
・マクロ制作者本人の操作を補助する為のものであり、他人に使わせる事は想定されていない
・オフィス製品の操作を補助する為のものであり、アプリケーションの本来の振る舞いを超えた動作は想定されていない
・ユーザーフォームはマクロの操作を容易にする為のものであり、別のアプリケーションであるかの様に振る舞う事は想定されていない
なので想定されていないものを作ろうとしたら不便さを感じるのは当然
どんな言語もそうだけど、想定された使い方なら便利だし、そうでないなら不便だよ
274デフォルトの名無しさん (ワッチョイ c491-BaGs)
2017/07/15(土) 17:40:17.34ID:Id32lc0P0 >>255
なるほど
例えば
○年○月 の○のセルを指定する際に
「年」のセルを探してOffset(0,-1)する、みたいな感じですかね
自分はこれも名前つけて管理してましたが
セルが1つの場合はそれで良さそうですね
ただ、全く同じ内容のセルが検索範囲にないことが保証された運用にしないとバグりそうなのでちょっと怖いかも
>>256
表に対してレコードセットみたいなアクセスをしたい場合に
つい最近その方法を知って目からウロコでした
とにかくインテリセンスを効かせたい派なので・・
http://thom.hateblo.jp/entry/2015/12/17/000132
こういうことですよね
行方向に関しては、列のように各行に別々の意味を持たせるような使い方はしたことないので
問題ありませんね
>>261
自分は簡単なSQLを作る(ANDとかORで結合するだけ)に特化したStringBuilderみたいなのだけ使ってますね
>>265
やっぱ可変範囲のこと考えると名前つけるのは意味ありますよね
なるほど
例えば
○年○月 の○のセルを指定する際に
「年」のセルを探してOffset(0,-1)する、みたいな感じですかね
自分はこれも名前つけて管理してましたが
セルが1つの場合はそれで良さそうですね
ただ、全く同じ内容のセルが検索範囲にないことが保証された運用にしないとバグりそうなのでちょっと怖いかも
>>256
表に対してレコードセットみたいなアクセスをしたい場合に
つい最近その方法を知って目からウロコでした
とにかくインテリセンスを効かせたい派なので・・
http://thom.hateblo.jp/entry/2015/12/17/000132
こういうことですよね
行方向に関しては、列のように各行に別々の意味を持たせるような使い方はしたことないので
問題ありませんね
>>261
自分は簡単なSQLを作る(ANDとかORで結合するだけ)に特化したStringBuilderみたいなのだけ使ってますね
>>265
やっぱ可変範囲のこと考えると名前つけるのは意味ありますよね
275デフォルトの名無しさん (ワッチョイ c491-BaGs)
2017/07/15(土) 17:47:17.89ID:Id32lc0P0 >>273
>他人に使わせる事は想定されていない
これは本当に思いますね
Accessなんかはフォームでの入出力が基本だし
各データの型も指定するから
出来ること出来ないことを設計者が細かく指定しやすいですが
Excelは書式や入力データを限定させようとすると
そのノウハウの習得のことも考えたら相当な時間がかかる気が…
以前「値のみの切り取り・コピーしかできない」ようにしようとして
えらい苦労しました
>他人に使わせる事は想定されていない
これは本当に思いますね
Accessなんかはフォームでの入出力が基本だし
各データの型も指定するから
出来ること出来ないことを設計者が細かく指定しやすいですが
Excelは書式や入力データを限定させようとすると
そのノウハウの習得のことも考えたら相当な時間がかかる気が…
以前「値のみの切り取り・コピーしかできない」ようにしようとして
えらい苦労しました
276デフォルトの名無しさん (ワッチョイ 926f-MRQN)
2017/07/15(土) 20:37:21.43ID:VxLYhzBT0 所詮道具 しかし便利な道具 それをよりによってなんで使い辛くするのか 神経を疑うわ
改変、改ざん、変更がダメならそっちに注力すべきだろ
バックアップなりPDF出力なり変更者・変更ヶ所の記録なりなんなり
余計な仕事して会社の利益を浪費すんなよ
改変、改ざん、変更がダメならそっちに注力すべきだろ
バックアップなりPDF出力なり変更者・変更ヶ所の記録なりなんなり
余計な仕事して会社の利益を浪費すんなよ
277デフォルトの名無しさん (アウアウウー Sa08-6eVw)
2017/07/15(土) 20:57:08.80ID:4AnbxIb9a Excel VBA一本で家族養って食っていけてる人いる?
278デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/15(土) 21:01:14.05ID:+h55DWxyM ねーよ
279デフォルトの名無しさん (アウアウエー Sa66-PUpa)
2017/07/15(土) 21:06:42.25ID:DU1ghimfa280デフォルトの名無しさん (ワッチョイ 2623-KaH7)
2017/07/16(日) 05:14:50.82ID:QwczUPDI0 >>279
プログラマー志望でvbaの仕事しかやったことないんだが。
プログラマー志望でvbaの仕事しかやったことないんだが。
281デフォルトの名無しさん (ワッチョイ d071-1CH6)
2017/07/16(日) 05:59:58.39ID:K064oJPl0282デフォルトの名無しさん (ワッチョイ 2623-KaH7)
2017/07/16(日) 06:33:45.85ID:QwczUPDI0283デフォルトの名無しさん (ドコグロ MM40-OTuW)
2017/07/16(日) 07:32:23.57ID:xeCnao79M284デフォルトの名無しさん (アウアウウー Sa08-6eVw)
2017/07/16(日) 16:35:01.30ID:u74giIrqa 自分は業界デビューがAccessVBAで、そのうちC/C++もやるようになった。
で、今PHPとかJavaとか知らなくて仕事減ってきてる。
で、今PHPとかJavaとか知らなくて仕事減ってきてる。
285デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/16(日) 16:40:12.30ID:/sDyct4MM ならVB.NETを経由してjavaへ向かえばよい
286デフォルトの名無しさん (ワッチョイ e66d-c7D+)
2017/07/16(日) 16:42:28.30ID:D4hbmADJ0 PHPは言語は楽ちんだけどネットワーク周りがキツイ
専サバならどうでもいいけどレンタルサーバーだと制限多くて何もできん
専サバならどうでもいいけどレンタルサーバーだと制限多くて何もできん
287デフォルトの名無しさん (ワッチョイ ce11-PUpa)
2017/07/16(日) 17:31:35.42ID:TYIh6T1E0 >>280
vbaでシステム開発してんの?
vbaでシステム開発してんの?
288デフォルトの名無しさん (バットンキン MM32-v2r+)
2017/07/16(日) 19:11:10.92ID:x6N2dGq3M VBA4とかの時代はなぜかユーザー定義型のリファレンスをクラスモジュールに渡せなくて悩んだ覚えがあるけど最近は大丈夫なのねと
289デフォルトの名無しさん (ドコグロ MM02-KaH7)
2017/07/16(日) 19:14:48.07ID:zK8m4MiwM >>287
うん。
50万ぐらいのレコードを扱う、MySqlをバックエンドとしたC/S型のシステム作ったよ。
vbaは例外ハンドラが弱すぎて、自作スタックトレースみたいな仕組みを作ったりとか、バージョン管理大変だし、vbaでシステム開発は怖すぎてやりたくないっす。
初速はいいけど、規模が大きくなってくると生産性が著しく落ちるねー。
うん。
50万ぐらいのレコードを扱う、MySqlをバックエンドとしたC/S型のシステム作ったよ。
vbaは例外ハンドラが弱すぎて、自作スタックトレースみたいな仕組みを作ったりとか、バージョン管理大変だし、vbaでシステム開発は怖すぎてやりたくないっす。
初速はいいけど、規模が大きくなってくると生産性が著しく落ちるねー。
290デフォルトの名無しさん (ワッチョイ ce11-PUpa)
2017/07/16(日) 21:17:30.80ID:TYIh6T1E0291デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/16(日) 21:52:55.66ID:ZbG5GhXO0 >>290
バックエンドがMySQLなら50万レコード程度は楽勝だろうしフロントエンドにExcel VBAはたいして珍しくないぞ
バックエンドがMySQLなら50万レコード程度は楽勝だろうしフロントエンドにExcel VBAはたいして珍しくないぞ
292デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 17:06:22.75ID:7pjXcMGRr そもそも、VBA使いってエンジニアじゃないよね。
なので、エンジニア目線での会話はしないほうがいいよ。
なので、エンジニア目線での会話はしないほうがいいよ。
293デフォルトの名無しさん (オッペケ Srd7-OYLW)
2017/07/17(月) 18:01:49.57ID:eqSf35i7r はぁ?
294デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/17(月) 18:28:51.63ID:3BLwA/g5M 方言で喋るヤツは日本人じゃないよねみたいな言い回しは嫌い
295デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 19:25:12.99ID:7pjXcMGRr エンジニア畑の出身ではないということ。
エンジニア畑を歩いてきた人はVBAなんかには染まらないよ。
エンジニア畑を歩いてきた人はVBAなんかには染まらないよ。
296デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/17(月) 19:31:25.65ID:25jot5xr0 スネオみたいなやつだな。
297デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/17(月) 19:34:15.32ID:3BLwA/g5M じゃあ東京出身以外は日本人じゃないんだね
哀れな見識の狭さだな
哀れな見識の狭さだな
298デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 19:41:09.32ID:7pjXcMGRr 東京出身で大阪に住んでる人は関西人じゃないし、大阪出身で東京に住んでる人は江戸っ子ではない。
299デフォルトの名無しさん (ドコグロ MM40-OTuW)
2017/07/17(月) 20:03:54.32ID:8yOMdWeDM 他の言語をバリバリ使うエンジニアがVBA使うなんていくらでもあるだろ
300デフォルトの名無しさん (アークセー Sx88-I8+U)
2017/07/17(月) 20:05:31.04ID:KYGC98nRx ID:7pjXcMGRr
スゲー承認します
スゲー承認します
301デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 20:12:26.22ID:7pjXcMGRr 馬鹿の一つ覚えみたいに、なんでもかんでも変数に入れちゃうし、しかもいまだにハンガリアン記法だったりする。
エラー対策もバッチリですと言わんばかりにエラー処理が延々と続くコードを晒す。
ただでさえ冗長な言語なのに輪をかけて冗長なコードを書く。
誰もお前のコードなんかコピペしねーからコアな部分だけを簡潔にかけ、と言いたくなる。
VBAが書けるぐらいでエンジニアづらするな。
エラー対策もバッチリですと言わんばかりにエラー処理が延々と続くコードを晒す。
ただでさえ冗長な言語なのに輪をかけて冗長なコードを書く。
誰もお前のコードなんかコピペしねーからコアな部分だけを簡潔にかけ、と言いたくなる。
VBAが書けるぐらいでエンジニアづらするな。
302デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 20:14:06.57ID:7pjXcMGRr >>299
VBAメインという人はいないよね。
VBAメインという人はいないよね。
303デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/17(月) 20:19:25.98ID:ZwJXO/8Y0 vbaメインは事務職だろう
304デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 20:21:12.48ID:7pjXcMGRr >>303
そうそう。エンジニアじゃないのよ。
そうそう。エンジニアじゃないのよ。
305デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/17(月) 20:22:42.87ID:3BLwA/g5M306デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 20:25:53.47ID:7pjXcMGRr >>305
つまみ食いするエンジニアはいるでしょ。
つまみ食いするエンジニアはいるでしょ。
307デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/17(月) 20:34:45.10ID:U2FIHXXv0 >>302
VBAメイン縛りなの?
VBAメイン縛りなの?
308デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/17(月) 20:37:52.24ID:3BLwA/g5M お前の中ではVBAからプログラムに入り今は別言語メインってやつは存在しないんだね
309デフォルトの名無しさん (ワッチョイ ef11-+gV6)
2017/07/17(月) 20:54:22.06ID:ZHV5JA270 エンジニアかどうかってプログラム言語に依存する概念だっけ?
実現手段なんかコロコロ変わるのに
実現手段なんかコロコロ変わるのに
310デフォルトの名無しさん (ワッチョイ e66d-rON2)
2017/07/17(月) 20:56:09.78ID:ZwJXO/8Y0 vbaからhtml・phpに行ってなんか社内SEみたいなことやってるわ
割りと楽
割りと楽
311デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 21:13:30.47ID:7pjXcMGRr312デフォルトの名無しさん (ワッチョイ 12aa-z+eH)
2017/07/17(月) 21:14:47.84ID:K9hU24AK0 エンジニアは2ちゃんねるに来ないだろう
313デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/17(月) 21:32:12.23ID:3BLwA/g5M314デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)
2017/07/17(月) 21:38:42.01ID:xDa7p7Qa0 ExcelVBAの挙動が謎すぎて困る
IF xx IS NOT NULL AND xx.value = 100
みたいので例外出たときは目を疑った
nullのときも両辺評価するって決まってるならまだしも
普段は何事もなく動いてるのに
急に気まぐれに両方評価するのやめーや…
IF xx IS NOT NULL AND xx.value = 100
みたいので例外出たときは目を疑った
nullのときも両辺評価するって決まってるならまだしも
普段は何事もなく動いてるのに
急に気まぐれに両方評価するのやめーや…
315デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/17(月) 21:39:52.50ID:7pjXcMGRr316デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/17(月) 21:45:47.60ID:3BLwA/g5M317デフォルトの名無しさん (ワッチョイ e66d-qA4N)
2017/07/17(月) 21:50:52.95ID:ZwJXO/8Y0 >>314
今更だろう
longな数値同士を文字列結合できるぐらいなんだし、何が起こっても驚かん
Sub foo()
Dim a As Long
Dim b As Long
a = 1
b = 2
Debug.Print a & "|" & b
End Sub
今更だろう
longな数値同士を文字列結合できるぐらいなんだし、何が起こっても驚かん
Sub foo()
Dim a As Long
Dim b As Long
a = 1
b = 2
Debug.Print a & "|" & b
End Sub
318デフォルトの名無しさん (ワッチョイ e66d-SAgI)
2017/07/17(月) 21:51:23.92ID:ZwJXO/8Y0 ってかvbaって実は内部的に全部variantで処理してない?と思うことがたまによくある
319デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/17(月) 22:01:54.76ID:U2FIHXXv0 >>314
短絡評価が保証されてない言語で
> IF xx IS NOT NULL AND xx.value = 100
なんて書く奴の方が謎
NothingじゃなくてNULLなのも謎
あとNULLならIsNull( )じゃないのも謎
短絡評価が保証されてない言語で
> IF xx IS NOT NULL AND xx.value = 100
なんて書く奴の方が謎
NothingじゃなくてNULLなのも謎
あとNULLならIsNull( )じゃないのも謎
320デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)
2017/07/17(月) 22:05:39.05ID:xDa7p7Qa0 知らんがな!そんな詳しくない
環境制限されて使わざるをえずに使って
ちょっとカルチャーショック受けただけ
環境制限されて使わざるをえずに使って
ちょっとカルチャーショック受けただけ
321デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)
2017/07/17(月) 22:09:42.75ID:xDa7p7Qa0 まえ2chでEXCELVBAが挙動アバウトだから使いたくないって言ったら
お前の頭がアバウトなだけでVBAはアバウトじゃないって返された
ほんとにアバウトやん
お前の頭がアバウトなだけでVBAはアバウトじゃないって返された
ほんとにアバウトやん
322デフォルトの名無しさん (ワッチョイ 9e06-1CH6)
2017/07/17(月) 22:11:29.92ID:5wPRLPZU0 いつもながらの仲間内のどうでもいい戯言が続いているだけなんで、質問者の方は気になさらずにどうぞ〜
323デフォルトの名無しさん (ワッチョイ 12aa-z+eH)
2017/07/17(月) 22:13:55.47ID:K9hU24AK0324デフォルトの名無しさん (ワッチョイ 12aa-z+eH)
2017/07/17(月) 22:16:50.48ID:K9hU24AK0 >>320
ところでちょっと興味あるんだけど「環境制限」て何がNGなの?
ところでちょっと興味あるんだけど「環境制限」て何がNGなの?
325デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)
2017/07/17(月) 22:18:26.02ID:xDa7p7Qa0 うんそれならまだわかる、たぶんそんな気がしてきた
Nullのとき正常終了してるケースがあるように見えたんだ
たぶん見間違いだ
Nullのとき正常終了してるケースがあるように見えたんだ
たぶん見間違いだ
326デフォルトの名無しさん (ワッチョイ 5ce3-z+eH)
2017/07/17(月) 22:19:24.38ID:xDa7p7Qa0 >>324
アドイン
アドイン
327デフォルトの名無しさん (ワッチョイ 968f-z+eH)
2017/07/17(月) 22:46:19.63ID:1pUgrDrQ0 >>326
だっふんだ
だっふんだ
328デフォルトの名無しさん (アウアウエー Sa66-PUpa)
2017/07/17(月) 23:33:07.69ID:2vYuRvlWa まあ、VBAが言語としてクソなのは認めざるを得ないよな
最近javascriptつまみ食いしてるけど、これはこれで魔境とは言え進化してるしさ、常に
最近javascriptつまみ食いしてるけど、これはこれで魔境とは言え進化してるしさ、常に
329デフォルトの名無しさん (ブーイモ MMed-6ouG)
2017/07/17(月) 23:33:44.68ID:PT2PKaQfM330デフォルトの名無しさん (スッップ Sd70-QKFr)
2017/07/18(火) 00:17:38.11ID:kpygt+jXd nullの話出たから聞きたいんだけどnullとかnothingの判定を完結にやるいい方法ってないの?
やりたいのはnull,vbnull,nothing,emptyなどなど値が入ってない状態を検知したい
全部if elseifでやるのは汚すぎるからあまりやりたくない
やりたいのはnull,vbnull,nothing,emptyなどなど値が入ってない状態を検知したい
全部if elseifでやるのは汚すぎるからあまりやりたくない
331デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/18(火) 00:18:33.82ID:sD2l3tVa0 >>330
全部調べる関数を作ればいいのでは?
全部調べる関数を作ればいいのでは?
332デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/18(火) 00:19:09.03ID:zLdSm0oAM 判定メソッド作って呼ぶ
333デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/18(火) 00:40:40.16ID:j/Xwl1qG0 If文を可能な限り避けるとなると
Function foo(hoge) As Boolean
Select Case VarType(hoge)
Case 0,1
...
Case 9
If hoge Is Nothing Then
End Select
End Function
みたいな書き方かな
Function foo(hoge) As Boolean
Select Case VarType(hoge)
Case 0,1
...
Case 9
If hoge Is Nothing Then
End Select
End Function
みたいな書き方かな
334デフォルトの名無しさん (アークセー Sxc1-y19a)
2017/07/18(火) 00:43:00.33ID:8EqWFNQax データの値の状態を判定するならif elseif よりも
Select Case Expressionの方が無駄なく綺麗に書ける
Select Case Expressionの方が無駄なく綺麗に書ける
335デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/18(火) 06:17:21.84ID:StSxL3ktr >>333
ていうか、このコードは何を返すの?
ていうか、このコードは何を返すの?
336デフォルトの名無しさん (ドコグロ MMa8-OTuW)
2017/07/18(火) 06:18:50.83ID:qfl2YypxM >>329
保証されてない ≒ 動作する場合があるかも知れないけど面倒だしどうでもいいから調べてない
保証されてない ≒ 動作する場合があるかも知れないけど面倒だしどうでもいいから調べてない
337デフォルトの名無しさん (ドコグロ MMa8-OTuW)
2017/07/18(火) 06:20:35.94ID:qfl2YypxM >>335
「値が入ってない状態」かどうかだろ
「値が入ってない状態」かどうかだろ
338デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/18(火) 06:30:18.74ID:StSxL3ktr339デフォルトの名無しさん (アークセー Sx72-y19a)
2017/07/18(火) 07:14:01.44ID:9/pR+lH4x >>333
コンパイルエラー出るコードでワロタ
コンパイルエラー出るコードでワロタ
340デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/18(火) 07:42:58.67ID:StSxL3ktr こんな感じかな。
Function IsNone(hoge) as Boolean
Select case True
Case IsNull(hoge)
IsNone = True
Case IsEmpty(hoge)
IsNone = True
Case hoge is Nothing
IsNone = True
Case hoge = ""
IsNone = True
Case hoge = vbnullstring
IsNone = True
Case Else
IsNone = False
End Select
End Function
Function IsNone(hoge) as Boolean
Select case True
Case IsNull(hoge)
IsNone = True
Case IsEmpty(hoge)
IsNone = True
Case hoge is Nothing
IsNone = True
Case hoge = ""
IsNone = True
Case hoge = vbnullstring
IsNone = True
Case Else
IsNone = False
End Select
End Function
341デフォルトの名無しさん (オイコラミネオ MMb6-hcOc)
2017/07/18(火) 08:48:10.34ID:XjshxdE9M なんでこんな初心者用のスレでVBAはゴミだのカスだのドヤ顔でほざいてるの?
どうせ普段は別の言語で仕事してる奴が、ちょっと頼まれたVBAが解らなくてファビョってるんだろ?w
どうせ普段は別の言語で仕事してる奴が、ちょっと頼まれたVBAが解らなくてファビョってるんだろ?w
342デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/18(火) 08:49:43.17ID:adssaMMv0 ファビョるって何?
343デフォルトの名無しさん (ワッチョイ 622e-S4qQ)
2017/07/18(火) 10:01:29.10ID:gw3uuz5O0 先ずはググればいいんでないかな
344デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/18(火) 11:27:07.20ID:LmZYlO3Ud >>341
その状況なら確かに愚痴りたくなるだろうね
その状況なら確かに愚痴りたくなるだろうね
345デフォルトの名無しさん (オッペケ Sr39-nv+z)
2017/07/18(火) 12:19:29.42ID:1XJz7Xgqr どうせ自称VBAに詳しいクズと自称メインは他言語のクズしかいないんだから仲良くしろよ
346デフォルトの名無しさん (ワッチョイ ce11-PUpa)
2017/07/18(火) 18:53:43.35ID:QCvagJCl0 >>341
他の言語出来るやつなら自分で調べられるし聞き方も賢くできると思うぞ
他の言語出来るやつなら自分で調べられるし聞き方も賢くできると思うぞ
347デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/18(火) 18:57:17.26ID:adssaMMv0348デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/18(火) 19:02:27.52ID:FECT5IdT0 >>340
横からですが、借りてってもいいですか?
横からですが、借りてってもいいですか?
349デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/18(火) 20:30:12.85ID:StSxL3ktr >>348
もちろん自由に使えばいいけど、スマホで書いてるのでPCテストしてない。自己責任でよろしく。
読み返したら、Is Nothing のところは明らかにエラーになると思うので、こんな感じのほうがいいかも。(PCテストしてないので自信はない。あしからず)
Function IsNone(hoge) as Boolean
If IsObject(hoge) Then
If hoge Is Nothing Then IsNone = True
End If
Select case True
Case IsNull(hoge)
IsNone = True
Case IsEmpty(hoge)
IsNone = True
Case hoge = ""
IsNone = True
Case hoge = vbnullstring
IsNone = True
Case Else
IsNone = False
End Select
End Function
なんか美しくないね。
ま、好きなように書き換えて。
もちろん自由に使えばいいけど、スマホで書いてるのでPCテストしてない。自己責任でよろしく。
読み返したら、Is Nothing のところは明らかにエラーになると思うので、こんな感じのほうがいいかも。(PCテストしてないので自信はない。あしからず)
Function IsNone(hoge) as Boolean
If IsObject(hoge) Then
If hoge Is Nothing Then IsNone = True
End If
Select case True
Case IsNull(hoge)
IsNone = True
Case IsEmpty(hoge)
IsNone = True
Case hoge = ""
IsNone = True
Case hoge = vbnullstring
IsNone = True
Case Else
IsNone = False
End Select
End Function
なんか美しくないね。
ま、好きなように書き換えて。
350デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/18(火) 21:03:49.93ID:FECT5IdT0351デフォルトの名無しさん (ワッチョイ e66d-lquy)
2017/07/18(火) 21:10:08.24ID:adssaMMv0 僕は唱える 魔法の言葉 on error resume next
みんなで歌おう 魔法の言葉 on error resume next
みんなで歌おう 魔法の言葉 on error resume next
352デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/18(火) 21:12:18.15ID:FECT5IdT0353デフォルトの名無しさん (ワッチョイ 6fea-N0vF)
2017/07/18(火) 21:59:56.82ID:jNcdEVA90 ExcelからOutlookを起動し、予定表から会議依頼を作成するマクロを作成しています
あらかた思っていたものは作れたのですが、自分の予定表ではなく共有の予定表に保存する場合のコードがさっぱり分かりません
共有の予定表での作成方法をご教示頂けますでしょうか
あらかた思っていたものは作れたのですが、自分の予定表ではなく共有の予定表に保存する場合のコードがさっぱり分かりません
共有の予定表での作成方法をご教示頂けますでしょうか
354デフォルトの名無しさん (アークセー Sx39-y19a)
2017/07/18(火) 23:28:16.64ID:PXBpilE0x >>349
IsObject(Expression)の判定をしてるIfブロックの終了間際にExit Function入れないとダメなんじゃね?
IsObject(Expression)の判定をしてるIfブロックの終了間際にExit Function入れないとダメなんじゃね?
355デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 00:59:23.29ID:r34rJ2pSr >>354
おっしゃるとおり。
あるいは、Select以下をElseでつなげるか。
でも美しくないので書き換えてみた。
結構いいんじゃね?(軽くテスト済み)
結局、>>333 が最適解だったわけね。
なかなかの実力者とみた。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If hoge = vbNullString Or hoge = "" Then IsNone = True
Case Else
IsNone = False
End Select
End Function
おっしゃるとおり。
あるいは、Select以下をElseでつなげるか。
でも美しくないので書き換えてみた。
結構いいんじゃね?(軽くテスト済み)
結局、>>333 が最適解だったわけね。
なかなかの実力者とみた。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If hoge = vbNullString Or hoge = "" Then IsNone = True
Case Else
IsNone = False
End Select
End Function
356デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/19(水) 02:45:10.33ID:3ENxF81t0 >>355
isNoneが未定になるパスがあるんじゃね
isNoneが未定になるパスがあるんじゃね
357デフォルトの名無しさん (ワッチョイ e211-1CH6)
2017/07/19(水) 03:16:22.21ID:QlVhZGqo0 値とかオブジェクトが普通に入っている場合がすっぽり抜けてるんですがそれは
358デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/19(水) 05:14:51.84ID:uwa7S77b0 >>355
Sub buf()
On Error Resume Next
For i = 1 to n
Set MyObj = SPAM
If Err then
If not IsNone(SPAM) then Brake
Else
Goto Continue
End if
Else
ここで処理。
Continue:
Err.clear
Set MyObj = Nothing
End if
Next
End sub
みたいな使い方を考えたんですが、全然美しくない・・・
どうすれば良いでしょうか。
Sub buf()
On Error Resume Next
For i = 1 to n
Set MyObj = SPAM
If Err then
If not IsNone(SPAM) then Brake
Else
Goto Continue
End if
Else
ここで処理。
Continue:
Err.clear
Set MyObj = Nothing
End if
Next
End sub
みたいな使い方を考えたんですが、全然美しくない・・・
どうすれば良いでしょうか。
359デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 07:05:15.04ID:n0rSSeVEd 空の配列チェックも必要だと思うな
360デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 08:00:32.56ID:r34rJ2pSr >>357
IsNoneの初期値をFalseにすればいいんじゃね?
IsNoneの初期値をFalseにすればいいんじゃね?
361デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 08:37:45.43ID:pHR1WedN0 As Booleanで指定した場合はデフォルトがFalseだからTrueになる条件だけ書いていけばいい。
362357 (ブーイモ MM5e-Xf9t)
2017/07/19(水) 09:22:45.29ID:hbRH2SWGM ああなるほど、初期化って頭が全くなかった。サンクスです。
363デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 11:14:00.22ID:r34rJ2pSr364デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 12:01:18.52ID:pHR1WedN0 どういうものを実装するかにもよるけど経験から言うと配列の判定は別の方がいい。
アプローチの仕方が違うから、変数単体で認識させていたものを配列突っ込める様にした時なんかにバグの温床になる。
アプローチの仕方が違うから、変数単体で認識させていたものを配列突っ込める様にした時なんかにバグの温床になる。
365デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 12:23:01.26ID:n0rSSeVEd366デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 12:24:14.19ID:n0rSSeVEd あと空の配列チェックはIsMissingと同等
367デフォルトの名無しさん (オッペケ Sr5f-nv+z)
2017/07/19(水) 12:28:40.18ID:oLf4rjVBr variant型は脊髄反射で否定するくせにvariantみたいなヤリマン関数が大好きなお前らってw
368デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/19(水) 12:36:53.61ID:kmkgyzX6M variantのみを使うor絶対variantは使わない
みたいな論争は見たこと無いな
みたいな論争は見たこと無いな
369デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 14:51:31.77ID:pHR1WedN0 前スレかその前かの最後の方でVariant型絶対使わないマン出てきていた様な気がするけど。
そういう信条自体は別に良いんだけど、Variant型使えば解決出来る事を信条のせいで解決出来ず、
その結果として「VBAは欠陥」って言い出す変な人はこのスレでよく見かける。
そういう信条自体は別に良いんだけど、Variant型使えば解決出来る事を信条のせいで解決出来ず、
その結果として「VBAは欠陥」って言い出す変な人はこのスレでよく見かける。
370デフォルトの名無しさん (ワッチョイ ad73-hcOc)
2017/07/19(水) 15:28:03.09ID:GaPiK1nh0 便利な道具を使いこなせないドンくさい奴ってことだよ
371デフォルトの名無しさん (スッップ Sd70-N0vF)
2017/07/19(水) 18:00:12.50ID:3A2F1Rqpd すいません、353ですが自決しましたのでスルーで結構です
コピペだけでなく内容も理解できるようもっと勉強します
コピペだけでなく内容も理解できるようもっと勉強します
372デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 18:04:33.44ID:n0rSSeVEd 自決
373デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 18:31:39.20ID:r34rJ2pSr >>364-365
配列は要素数の空判定でお茶を濁そう。
これ以上のブラッシュアップは断念。
コードとしてはそこそこ美しいと思う。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty
IsNone = True
Case vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If hoge = vbNullString Or hoge = "" Then IsNone = True
Case vbArray + vbVariant
If Ubound(hoge) = -1 Then IsNone = False
End Select
End Function
配列は要素数の空判定でお茶を濁そう。
これ以上のブラッシュアップは断念。
コードとしてはそこそこ美しいと思う。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty
IsNone = True
Case vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If hoge = vbNullString Or hoge = "" Then IsNone = True
Case vbArray + vbVariant
If Ubound(hoge) = -1 Then IsNone = False
End Select
End Function
374デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 18:35:56.55ID:r34rJ2pSr 訂正。最後、Trueだった。。(^_^;)
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty
IsNone = True
Case vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If hoge = vbNullString Or hoge = "" Then IsNone = True
Case vbArray + vbVariant
If Ubound(hoge) = -1 Then IsNone = True
End Select
End Function
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty
IsNone = True
Case vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If hoge = vbNullString Or hoge = "" Then IsNone = True
Case vbArray + vbVariant
If Ubound(hoge) = -1 Then IsNone = True
End Select
End Function
375デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 18:47:58.49ID:pHR1WedN0 >>373
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty,vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If Len(Trim(hoge)) = 0 Then IsNone = True
Case Is >= vbArray
IsNone = True
End Select
End Function
ArrayはVariant型以外の場合もあるから、この方がいい。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty,vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If Len(Trim(hoge)) = 0 Then IsNone = True
Case Is >= vbArray
IsNone = True
End Select
End Function
ArrayはVariant型以外の場合もあるから、この方がいい。
376デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 19:22:16.26ID:r34rJ2pSr377デフォルトの名無しさん (ワッチョイ 974b-+vhE)
2017/07/19(水) 19:26:12.74ID:uwa7S77b0 素晴らしい。
378デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/19(水) 19:29:01.56ID:+D5BELFr0 配列と型のチェックを同時にする時はとりあえず一次元配列に直せば楽ってばっちゃが言ってた
379デフォルトの名無しさん (スップ Sd02-QKFr)
2017/07/19(水) 20:01:06.21ID:bbPNdV8fd 書いてから気づいたけどvbnullは型ではなくてただの列挙体なので判定しなくてもいいよな
あと““はなんかダサいからvbnullstring使うのがいいかも
あと““はなんかダサいからvbnullstring使うのがいいかも
380デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/19(水) 20:04:24.02ID:n0rSSeVEd 判定としては UBound < LBound にしなくちゃね
381デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 20:16:48.04ID:r34rJ2pSr >>379
たとえば、InputBoxでキャンセルを押すとvbnullstringが返る。
何も入力せずにOKを押すと "" が返る。
つまり、vbnullstringと "" は別物なのでそれぞれに判定する必要がある。
たとえば、InputBoxでキャンセルを押すとvbnullstringが返る。
何も入力せずにOKを押すと "" が返る。
つまり、vbnullstringと "" は別物なのでそれぞれに判定する必要がある。
382デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 20:20:16.17ID:r34rJ2pSr383デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 20:20:56.04ID:pHR1WedN0 >>379
vbNullStringと""は判定としては別なので、片方だけにすると抜けが起きる。
vbNullStringと""は判定としては別なので、片方だけにすると抜けが起きる。
384デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 20:28:12.28ID:pHR1WedN0 >>382
うろ覚えだけどVarTypeでvbArrayとして返ってきた場合でもUboundするとエラーになるケースがあったはずなので、
Uboundを使う場合は別関数でOn Error Gotoで飛ばせるようにしておきたい。
Function SafeUBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeUBound = -1
SafeUBound = UBound(hoge, div)
fin:
End Function
Function SafeLBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeLBound = 0
SafeLBound = LBound(hoge, div)
fin:
End Function
と置いてSafeUbound < SafeLBoundで判定したい。
うろ覚えだけどVarTypeでvbArrayとして返ってきた場合でもUboundするとエラーになるケースがあったはずなので、
Uboundを使う場合は別関数でOn Error Gotoで飛ばせるようにしておきたい。
Function SafeUBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeUBound = -1
SafeUBound = UBound(hoge, div)
fin:
End Function
Function SafeLBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeLBound = 0
SafeLBound = LBound(hoge, div)
fin:
End Function
と置いてSafeUbound < SafeLBoundで判定したい。
385デフォルトの名無しさん (オッペケ Srd7-Ucbr)
2017/07/19(水) 20:38:22.51ID:r34rJ2pSr 一応簡単なテストコード的な…
hoge = Range("A1").Value: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = InputBox("値を入力してください。"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Sheets(1): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = CreateObject("InternetExplorer.Application"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge.Quit
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = Array(): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = Range("A1").Value: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = InputBox("値を入力してください。"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Sheets(1): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
Set hoge = CreateObject("InternetExplorer.Application"): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge.Quit
Set hoge = Nothing: Debug.Print IsNone(hoge) & ":" & VarType(hoge)
hoge = Array(): Debug.Print IsNone(hoge) & ":" & VarType(hoge)
386デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/19(水) 21:08:04.97ID:WMMf4PqS0 エクセルでLISTAGGに相当するものは何ですか?
ソートしてForで上下比較して足してけとか言わないでください。
ソートしてForで上下比較して足してけとか言わないでください。
387デフォルトの名無しさん (アークセー Sx88-I8+U)
2017/07/19(水) 21:53:52.63ID:UJWjDrSmx >>371
成仏しなされ
成仏しなされ
388デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/19(水) 22:03:31.20ID:54vs2xq7M389デフォルトの名無しさん (イモイモ Se3a-S4qQ)
2017/07/19(水) 22:03:54.68ID:uC8D1QH+e vbNullString を厳密に判定する場合、StrPtr()使わないと判定できないと思ふ
If StrPtr(vbNullString) = 0 Then ’〜 Null Pointer
If StrPtr(vbNullString) = 0 Then ’〜 Null Pointer
390デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 22:36:12.42ID:pHR1WedN0 >>388
Select文だとAnd vbArrayって使えないと思うんだけど、例文出してくれる?
Select文だとAnd vbArrayって使えないと思うんだけど、例文出してくれる?
391デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/19(水) 23:08:15.46ID:3ENxF81t0392デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/19(水) 23:33:45.07ID:54vs2xq7M >>390
ひょっとして応用力ないとか?
Selectにこだわる必要ないし
どうしてもやりたきゃ
Select Case True
Case (VarType(hoge) And VbArray) <> 0
...
でいいだろ
ひょっとして応用力ないとか?
Selectにこだわる必要ないし
どうしてもやりたきゃ
Select Case True
Case (VarType(hoge) And VbArray) <> 0
...
でいいだろ
393デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/19(水) 23:39:04.83ID:pHR1WedN0 >>392
ああ、やっぱりそういう方法しかないのね。
元々がIf文を可能な限り使わないというところから出発しているし、
それだとIf Else使った方が処理も速いしSelect文で読みやすくするっていう利点も潰してるんだよな。
ああ、やっぱりそういう方法しかないのね。
元々がIf文を可能な限り使わないというところから出発しているし、
それだとIf Else使った方が処理も速いしSelect文で読みやすくするっていう利点も潰してるんだよな。
394デフォルトの名無しさん (ワッチョイ 47e4-trcG)
2017/07/20(木) 01:20:53.05ID:CiXoybJd0395デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 01:36:37.21ID:IzREkzShr やはり、配列の空判定は別関数にしたほうが良さそうだね。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If Len(Trim(hoge)) = 0 Then IsNone = True
Case Is >= vbArray
If ArrayEmpty(hoge) Then IsNone = True
End Select
End Function
Function ArrayEmpty(hoge) As Boolean
美しいコード
End Function
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
If hoge Is Nothing Then IsNone = True
Case vbString
If Len(Trim(hoge)) = 0 Then IsNone = True
Case Is >= vbArray
If ArrayEmpty(hoge) Then IsNone = True
End Select
End Function
Function ArrayEmpty(hoge) As Boolean
美しいコード
End Function
396デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 01:50:57.43ID:IzREkzShr >>384を使って、
Function ArrayEmpty(hoge) As Boolean
If SafeUbound < SafeLBound Then ArrayEmpty = True
End Function
Function SafeUBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeUBound = -1
SafeUBound = UBound(hoge, div)
fin:
End Function
Function SafeLBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeLBound = 0
SafeLBound = LBound(hoge, div)
fin:
End Function
う〜〜ん、、、いまいち美しくない…orz
Function ArrayEmpty(hoge) As Boolean
If SafeUbound < SafeLBound Then ArrayEmpty = True
End Function
Function SafeUBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeUBound = -1
SafeUBound = UBound(hoge, div)
fin:
End Function
Function SafeLBound(hoge, Optional div As Long) As Long
On Error GoTo fin
If div = 0 Then div = 1
SafeLBound = 0
SafeLBound = LBound(hoge, div)
fin:
End Function
う〜〜ん、、、いまいち美しくない…orz
397デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 02:11:18.92ID:IzREkzShr >>394
> 単に空チェックだけなら
Len(Trim(hoge)) = 0
で事足りてるような気はする。
イミディエイトウィンドウでテストしてみて。
? Len(Trim(InputBox("値を入力してね"))) = 0
[OK][キャンセル]どちらでも True が返る。
> 単に空チェックだけなら
Len(Trim(hoge)) = 0
で事足りてるような気はする。
イミディエイトウィンドウでテストしてみて。
? Len(Trim(InputBox("値を入力してね"))) = 0
[OK][キャンセル]どちらでも True が返る。
398デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/20(木) 02:46:26.38ID:2lo8GEfG0 >>396
Function RBound(hoge, Optional div As Long) As Long
On Error Resume Next
If div = 0 Then div = 1
RBound = UBound(hoge, div) - LBound(hoge, div) + 1
End Function
あくまで配列要素数があるかどうかだけ判断したいなら、こういう関数でもいいと思うけど。
Function RBound(hoge, Optional div As Long) As Long
On Error Resume Next
If div = 0 Then div = 1
RBound = UBound(hoge, div) - LBound(hoge, div) + 1
End Function
あくまで配列要素数があるかどうかだけ判断したいなら、こういう関数でもいいと思うけど。
399デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 07:38:01.83ID:IzREkzShr400デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 08:01:18.50ID:fTGUueKRd 関係ないけど配列の次元を求めるWin32APIがあるのに、いつまでたってもVBAから使えないのは何なの?
401デフォルトの名無しさん (ブーイモ MM8b-yxn4)
2017/07/20(木) 08:08:10.03ID:izganQUxM >>399
Optionalをわかってないのは美しい美しくないとか言う以前の問題。
Optionalをわかってないのは美しい美しくないとか言う以前の問題。
402デフォルトの名無しさん (ワッチョイ c773-XR5Y)
2017/07/20(木) 08:34:30.46ID:fh0pKX4k0 その理屈だと、大抵の事はC++で出来るから他の言語は不要ということになるな
403デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 09:48:29.70ID:fTGUueKRd >>402
VBAから使えるようになればC++の必要性が減る、と解釈するのが自然だと思うけどな?
VBAから使えるようになればC++の必要性が減る、と解釈するのが自然だと思うけどな?
404デフォルトの名無しさん (ドコグロ MMfb-efHF)
2017/07/20(木) 12:39:43.62ID:qV+ymKYWM405デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 12:51:59.09ID:IzREkzShr406デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 12:55:10.23ID:IzREkzShr >>404
つか、正しくないコードは動かないでしょ。
つか、正しくないコードは動かないでしょ。
407デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 13:34:31.13ID:fTGUueKRd408デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/20(木) 13:40:13.76ID:fTGUueKRd それとも手持ちの関数をまんまコピペしたのかな?
409デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 18:17:53.32ID:IzREkzShr ま、配列の空判定関数は各自で書くということでこの話題は完結かな。
ちなみに俺は、
Function ArrayEmpty(hoge) As Boolean
On Error Resume Next
If UBound(hoge) - LBound(hoge) < 0 Then ArrayEmpty = True
End Function
って感じ。
空判定関数を書くというだけの話題だったけど、いろいろ勉強になったね。
おつかれさまー。ノシ
ちなみに俺は、
Function ArrayEmpty(hoge) As Boolean
On Error Resume Next
If UBound(hoge) - LBound(hoge) < 0 Then ArrayEmpty = True
End Function
って感じ。
空判定関数を書くというだけの話題だったけど、いろいろ勉強になったね。
おつかれさまー。ノシ
410デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 18:32:35.34ID:IzREkzShr 3行目は
If UBound(hoge) < LBound(hoge) Then ArrayEmpty = True
のほうが美しいな。
If UBound(hoge) < LBound(hoge) Then ArrayEmpty = True
のほうが美しいな。
411デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/20(木) 18:53:02.67ID:2lo8GEfG0 そしたら
ArrayEmpty = UBound(hoge) < LBound(hoge)
でもいける。
ArrayEmpty = UBound(hoge) < LBound(hoge)
でもいける。
412デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 18:56:56.64ID:IzREkzShr413デフォルトの名無しさん (スップ Sd7f-dGk5)
2017/07/20(木) 19:42:53.19ID:0IwNCiVxd 完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だし
vbaの良質なコードはすごく希少だし
414デフォルトの名無しさん (ドコグロ MMfb-efHF)
2017/07/20(木) 19:58:58.45ID:qV+ymKYWM >>406
たまたま動いてるだけのコードも正しいと言い張るの?
たまたま動いてるだけのコードも正しいと言い張るの?
415デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 20:06:31.90ID:IzREkzShr416デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/20(木) 20:27:30.52ID:IzREkzShr >>413
どこに残せばいいの?
完成品はこれでいいかな。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
IsNone = hoge Is Nothing
Case vbString
IsNone = Len(Trim(hoge)) = 0
Case Is >= vbArray
On Error Resume Next
IsNone = UBound(hoge) < LBound(hoge)
End Select
End Function
簡潔で美しいね。みんなの力の結晶だ。
どこに残せばいいの?
完成品はこれでいいかな。
Function IsNone(hoge) As Boolean
Select Case VarType(hoge)
Case vbEmpty, vbNull
IsNone = True
Case vbObject
IsNone = hoge Is Nothing
Case vbString
IsNone = Len(Trim(hoge)) = 0
Case Is >= vbArray
On Error Resume Next
IsNone = UBound(hoge) < LBound(hoge)
End Select
End Function
簡潔で美しいね。みんなの力の結晶だ。
417デフォルトの名無しさん (ワッチョイ df06-pqVL)
2017/07/20(木) 22:00:04.12ID:4n7T5v3d0 >関数テンプレにのこしておいてよ
どこにあんだよ、そんなの
ここで知った人間で保存しておきたいって奴が保存しておけば良いだろ
どこにあんだよ、そんなの
ここで知った人間で保存しておきたいって奴が保存しておけば良いだろ
418デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/20(木) 23:07:38.62ID:2lo8GEfG0 スレッドのテンプレに残しておいてほしいって事なんじゃないの。
でも残し始めたら際限無くなるし、コピペで済ませずに理論と意図を理解して同じものを一から書けるようになってほしいなぁ。
でも残し始めたら際限無くなるし、コピペで済ませずに理論と意図を理解して同じものを一から書けるようになってほしいなぁ。
419デフォルトの名無しさん (ワッチョイ df11-efHF)
2017/07/21(金) 05:39:07.68ID:qElIELIq0420デフォルトの名無しさん (オッペケ Sr1b-8ndb)
2017/07/21(金) 12:22:10.00ID:vdvVccQ6r こんなコードテンプレに残したらますます初心者が初心者を惑わすスレに拍車がかかるなw
本当に仕事でエクセルマクロを必要としてる人には迷惑かけんなよw
本当に仕事でエクセルマクロを必要としてる人には迷惑かけんなよw
421デフォルトの名無しさん (アウーイモ MM6b-Z4r9)
2017/07/21(金) 12:42:41.45ID:omOOvC2LM 残せというやつがwikiでも立てて残していきなよ
422デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 14:22:43.43ID:WPcJx8Myr > 初心者が初心者を惑わすスレ
言い得て妙だww
いいんだよ、それで。
VBA使いはエンジニアじゃないから。
言い得て妙だww
いいんだよ、それで。
VBA使いはエンジニアじゃないから。
423デフォルトの名無しさん (アークセー Sx1b-fDNv)
2017/07/21(金) 14:37:29.87ID:Rk0p0Likx424デフォルトの名無しさん (ワキゲー MM9f-rceg)
2017/07/21(金) 14:46:06.01ID:+UMDimrcM425デフォルトの名無しさん (オイコラミネオ MM4f-XR5Y)
2017/07/21(金) 15:00:26.78ID:rDxvAnQTM 低スキルにありがちな下らないレッテル張り
426デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/21(金) 15:28:32.09ID:4zV211iR0 どの言語の質問スレも初心者が初心者を惑わすスレ化してるのが悲しい。
「よくある質問と回答」レベルなら問題ないんだけど、ちょっと突っ込んだ質問になるととたんに雲行きが怪しくなる。
ある程度の実力を身につけたら2chじゃなくてちゃんとしたコミュニティか何かに参加するべきなんだろうけど、
だいたい見つからないし、見つけても2chほど気軽に質問投げられるような場所じゃなかったりするんだよな。
「よくある質問と回答」レベルなら問題ないんだけど、ちょっと突っ込んだ質問になるととたんに雲行きが怪しくなる。
ある程度の実力を身につけたら2chじゃなくてちゃんとしたコミュニティか何かに参加するべきなんだろうけど、
だいたい見つからないし、見つけても2chほど気軽に質問投げられるような場所じゃなかったりするんだよな。
427デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 17:53:53.00ID:WPcJx8Myr >>426
知恵袋とか、もっと酷いよ。
知恵袋とか、もっと酷いよ。
428デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/21(金) 19:35:15.46ID:tSBq1lkVM429デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 19:48:27.62ID:xN3mSVPqr430デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/21(金) 19:55:14.10ID:BM2lcFDS0431デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 19:56:51.84ID:xN3mSVPqr >>430
JavaScriptのほうが楽しい理由は?
JavaScriptのほうが楽しい理由は?
432デフォルトの名無しさん (ワッチョイ bf6d-Brs8)
2017/07/21(金) 19:57:13.96ID:/kK1+YO60 >javascript
お、おう
お、おう
433デフォルトの名無しさん (ワッチョイ bf23-FdGq)
2017/07/21(金) 20:01:12.83ID:cakM1ik60 javascriptってvbaの次に底辺やんwww
434デフォルトの名無しさん (ワッチョイ a779-ijYd)
2017/07/21(金) 20:05:21.15ID:ZXE38ZHX0 そりゃていへん(大変)だ
(´・ω・`)b
(´・ω・`)b
435デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/21(金) 20:10:04.71ID:xN3mSVPqr >>433
使ったことある人が多い言語って底辺扱いされやすいよね。
おそらく、C や Java の比じゃないと思うよ。>VBA
でも、Java は使う人が多くなりつつあるから、底辺扱いされるのは時間の問題かもね。
使ったことある人が多い言語って底辺扱いされやすいよね。
おそらく、C や Java の比じゃないと思うよ。>VBA
でも、Java は使う人が多くなりつつあるから、底辺扱いされるのは時間の問題かもね。
436デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/21(金) 20:58:10.67ID:4zV211iR0 新興の言語って利用者全員が似たような習熟度だから意思疎通が図りやすいし、
どんなにクソみたいなコード書いても判断材料が無くて効率的なコードって言ってもらえるからな。
どんなにクソみたいなコード書いても判断材料が無くて効率的なコードって言ってもらえるからな。
437デフォルトの名無しさん (ワッチョイ 674f-ygJY)
2017/07/21(金) 21:00:52.93ID:Byrlump20 >>369
欠陥なんじゃなくて、馬鹿ほどvariantを使う法則なだけ
欠陥なんじゃなくて、馬鹿ほどvariantを使う法則なだけ
438デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/21(金) 21:04:33.39ID:mLcSl7GWd 何の話だっけ?
439デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
2017/07/21(金) 21:21:32.57ID:/kK1+YO60 西中島南方北口の話
440デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/21(金) 21:54:13.22ID:xestLY0Q0 長い間SQL触ってたので、
SelectがVBAにもあったのを完全に忘れていた、という話。
SelectがVBAにもあったのを完全に忘れていた、という話。
441デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
2017/07/21(金) 21:57:47.01ID:/kK1+YO60 複数の言語を使うとselectとswitchは妙に間違える
俺だけかねー?
俺だけかねー?
442デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/21(金) 22:03:49.06ID:mLcSl7GWd >>441
わかる
わかる
443デフォルトの名無しさん (ワッチョイ bf23-E/h9)
2017/07/21(金) 22:16:02.62ID:gUUF92OH0 JavascriptにおけるjQuery的な
VBAのクラスってどっかにないのかな
Set class = New class
class.lastRowAdd(Range("a1"),array)
ってやったら最終行に配列の内容をぶっ込んでくれる
とか
よくある操作をパラメーター渡せばやってくれるような
VBAのクラスってどっかにないのかな
Set class = New class
class.lastRowAdd(Range("a1"),array)
ってやったら最終行に配列の内容をぶっ込んでくれる
とか
よくある操作をパラメーター渡せばやってくれるような
444デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/21(金) 22:20:47.57ID:zOHs/jgU0 >>443
それって結果は何になるの?
それって結果は何になるの?
445デフォルトの名無しさん (ワッチョイ bf23-E/h9)
2017/07/21(金) 22:30:00.89ID:gUUF92OH0446デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/21(金) 23:32:25.33ID:zOHs/jgU0447デフォルトの名無しさん (ワッチョイ bf6d-p/Ft)
2017/07/21(金) 23:36:11.83ID:/kK1+YO60 そこまで引っ張る話題でもなくね?と思うけど確かにどうしたいのかわからんのもあってちょっと聞きたくもあり
448デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/21(金) 23:41:52.51ID:4zV211iR0 見た目からするとSQLで解決しそうな感じがする。
449デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/22(土) 00:08:10.36ID:AfU+LLGPr 科学計算が爆速でできるVBAのフレームワークができれば、VBAの価値は一気に上がる。
450デフォルトの名無しさん (ワッチョイ bf23-E/h9)
2017/07/22(土) 00:08:20.61ID:6zQAY8zL0 データベースな表で
第一引数のセルから下に見ていって一番下に
第二引数の配列をズドンと書き込む
という想定
たしかにそこまで引っ張るネタでもないです
第一引数のセルから下に見ていって一番下に
第二引数の配列をズドンと書き込む
という想定
たしかにそこまで引っ張るネタでもないです
451デフォルトの名無しさん (ワッチョイ c78b-8ndb)
2017/07/22(土) 00:10:10.03ID:uAFmR2/H0 そんな事言わずにもう少しひっぱろうぜ
452デフォルトの名無しさん (ワッチョイ a723-XR5Y)
2017/07/22(土) 07:42:45.82ID:SunxEu+00 >>450
ネタで言ってるなら申し訳ないが、それその通りに書くだけで良くね?
ネタで言ってるなら申し訳ないが、それその通りに書くだけで良くね?
453デフォルトの名無しさん (ワッチョイ df11-pqVL)
2017/07/22(土) 10:25:51.44ID:8D42j0aL0 >>452
そういう話ではない。
まあでもVBA用の色んな処理の検索はしてきたけど、アドイン化されてるものは全然見かけないなあ。
汎用的な機能を詰め込んだアドインってこれくらい?
http://software.opensquare.net/relaxtools/
>>443の求めるものとは違うんだろうけど。
結局は自作クラスってことになりそう。
そういう話ではない。
まあでもVBA用の色んな処理の検索はしてきたけど、アドイン化されてるものは全然見かけないなあ。
汎用的な機能を詰め込んだアドインってこれくらい?
http://software.opensquare.net/relaxtools/
>>443の求めるものとは違うんだろうけど。
結局は自作クラスってことになりそう。
454デフォルトの名無しさん (ワッチョイ df06-pqVL)
2017/07/22(土) 10:32:33.05ID://x1WvHm0 >>451
お前の下らん雑談ネタのためにこのスレが有るわけじゃないんだyo
お前の下らん雑談ネタのためにこのスレが有るわけじゃないんだyo
455デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
2017/07/22(土) 10:39:13.62ID:kiQvn5e/0 あぁarrayは横向きの配列ってことか、なるほど
VBAで汎用ライブラリ作るとしたらどんな名前になるだろう
tyっと作ってみたくもあるな
VBAで汎用ライブラリ作るとしたらどんな名前になるだろう
tyっと作ってみたくもあるな
456デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/22(土) 10:51:06.27ID:c13VlgOtd ブログ検索すれば色々出てくるから好きなのを使う。
製品的なやつが欲しいなら知らん
製品的なやつが欲しいなら知らん
457デフォルトの名無しさん (スップ Sdff-dGk5)
2017/07/22(土) 12:11:05.98ID:I23HDuqEd 完成した関数テンプレにのこしておいてよ
vbaの良質なコードはすごく希少だしアドインってメンテナンス大変じゃないか?
用途としてはいろんな人に使わせる用だと思うんだけど誰かが使ってる最中に変更できないじゃん
やたらにバージョン上げると某ライブラリみたいな顛末になるし
vbaの良質なコードはすごく希少だしアドインってメンテナンス大変じゃないか?
用途としてはいろんな人に使わせる用だと思うんだけど誰かが使ってる最中に変更できないじゃん
やたらにバージョン上げると某ライブラリみたいな顛末になるし
458デフォルトの名無しさん (ワッチョイ 4754-ZLoG)
2017/07/22(土) 12:15:52.49ID:1BwCflG80 じゃあコピーしたもん編集して誰もいないときに上書きすればいいじゃん
459デフォルトの名無しさん (ワッチョイ bf6d-rftu)
2017/07/22(土) 12:17:43.62ID:kiQvn5e/0 テンプレなんかに残すと肥大化して仕方ない
460デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/22(土) 12:26:21.19ID:DjK3yBdG0461デフォルトの名無しさん (ワッチョイ bf6d-/bFE)
2017/07/22(土) 12:38:20.99ID:kiQvn5e/0 新しい昨日って言葉が心に刺さった
462デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/22(土) 13:17:27.76ID:c13VlgOtd 某ライブラリの悪口はやめろ
463デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/22(土) 17:08:46.19ID:AfU+LLGPr >>460
> vbaは一切進歩せんからなあ
エンジニアのための言語じゃないからね。
Dim だの Set だの If Then だの、
うんざりするのはしょうがないとしても、
objFSO
なんていう変数を見た日にゃ、
ぶっ殺したくなるね。
> vbaは一切進歩せんからなあ
エンジニアのための言語じゃないからね。
Dim だの Set だの If Then だの、
うんざりするのはしょうがないとしても、
objFSO
なんていう変数を見た日にゃ、
ぶっ殺したくなるね。
464デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/22(土) 18:29:44.93ID:DjK3yBdG0465デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/22(土) 18:50:19.82ID:WdXeAKAr0 そもそも継承が必要になるほどの大規模な開発をVBAでやる事自体が間違い定期。
466デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/22(土) 19:09:15.96ID:mlphh3ze0 いまさら継承はいらないよ
467デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/22(土) 19:22:53.47ID:DjK3yBdG0 まあ継承より配列周りの強化してほしいかな
わざわざ自分でコレクションもどき作ってるけどめんどいわ
わざわざ自分でコレクションもどき作ってるけどめんどいわ
468デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/22(土) 21:16:12.56ID:yBUCBb6t0 初めてADOっての使ったけど、なんだこりゃ。
MSQueryと違って、列名が出ないじゃん。
いや、ヘッダのON・OFFで無理矢理出せるけど、
そうするとUnionした時に、レコードの途中に列名が出やがる。(列名扱いされないから?)
列名は、出力位置の上に、予め書いとかなきゃいけないの?
MSQueryと違って、列名が出ないじゃん。
いや、ヘッダのON・OFFで無理矢理出せるけど、
そうするとUnionした時に、レコードの途中に列名が出やがる。(列名扱いされないから?)
列名は、出力位置の上に、予め書いとかなきゃいけないの?
469デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/22(土) 21:48:53.95ID:juX4uYOOx470デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/22(土) 21:51:30.60ID:juX4uYOOx フォームを作ってるとき、同種のパーツのオブジェクト配列が簡単に作れたら良いのにって思うわ
471デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/22(土) 22:39:49.33ID:WdXeAKAr0 >>470
For Each x In Userform.Controls
Select Case Typename(x)
Case "Label"
...
End Select
Next
みたいなのじゃなくて?
For Each x In Userform.Controls
Select Case Typename(x)
Case "Label"
...
End Select
Next
みたいなのじゃなくて?
472デフォルトの名無しさん (ワッチョイ a791-8s/R)
2017/07/22(土) 23:56:17.15ID:IXNocUxm0 >>468
列名も取れる
列名も取れる
473デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/23(日) 01:19:51.07ID:Lr396bh+x474デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/23(日) 07:50:57.33ID:Ecz0kxoE0 >>470みたいな需要は確かにありそうだ。
さっそくオレ様ライブラリに取り入れよう。
さっそくオレ様ライブラリに取り入れよう。
475デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/23(日) 11:44:10.83ID:MDDS7K/i0 >>469
コレクションて値の出し入れできなかったりするじゃん?
値の追加、挿入、削除、入れ替え、ソートあたりメソッドにしたクラスだね
型は安全に出来ないけどなかなか便利
objectにも対応させたいけどやや面倒だから手を付けてない
コレクションて値の出し入れできなかったりするじゃん?
値の追加、挿入、削除、入れ替え、ソートあたりメソッドにしたクラスだね
型は安全に出来ないけどなかなか便利
objectにも対応させたいけどやや面倒だから手を付けてない
476デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/23(日) 22:46:54.50ID:EbUz/UVB0477デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/23(日) 23:32:34.17ID:O7lPo0j+x478デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/24(月) 02:14:49.51ID:mhaeOVx/0479デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/24(月) 06:50:21.77ID:t6cPW3USx480デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/24(月) 08:13:01.75ID:2edahxxPa >>479
継承できればコレクションからゴニョゴニョした方がいいんだろうけど
どうでも良いけど値の入れ替えのメソッド名をRepracementにしてるんだけどなんかしっくりこないんだよね
なんかいいのないかな
継承できればコレクションからゴニョゴニョした方がいいんだろうけど
どうでも良いけど値の入れ替えのメソッド名をRepracementにしてるんだけどなんかしっくりこないんだよね
なんかいいのないかな
481デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/24(月) 08:16:32.78ID:6zzYsskzd そりゃ違和感あるだろな
482デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/24(月) 08:53:04.80ID:2edahxxPa >>481
入れ替えで辞書ツール突っ込んだらそれでてきたからしゃーない
入れ替えで辞書ツール突っ込んだらそれでてきたからしゃーない
483デフォルトの名無しさん (ワッチョイ bf23-E/h9)
2017/07/24(月) 09:00:24.88ID:vx6bYcmg0 配列の話題になってから調べて初めて知ったけど
ArrayListをVBAで使えるんだね
一通りメソッドもそろってるみたいだし、どうかな
実際に使ってみたわけではないけど
ArrayListをVBAで使えるんだね
一通りメソッドもそろってるみたいだし、どうかな
実際に使ってみたわけではないけど
484デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/24(月) 09:18:31.28ID:2edahxxPa485デフォルトの名無しさん (アウアウアー Sa4f-Z4r9)
2017/07/24(月) 13:58:09.64ID:n0AZ+pfTa 使い勝手はArrayListのほうが便利そうだね
まぁ確かに自分も使ったことないけど
まぁ確かに自分も使ったことないけど
486デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/24(月) 21:11:53.14ID:nIPnkEuj0 ちゃんとしたやつがあるのかよwww
自作配列にArrayListって変数名付けたわwwww
自作配列にArrayListって変数名付けたわwwww
487デフォルトの名無しさん (ワッチョイ 7faa-A43S)
2017/07/25(火) 15:00:10.14ID:1af6ROG50 VBAのArrayListって何よ?
488デフォルトの名無しさん (アウーイモ MM6b-Z4r9)
2017/07/25(火) 15:01:06.45ID:WO88e3uDM .NETのライブラリが使えるて話なんじゃないの?
489デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/25(火) 16:38:16.45ID:k4b2Lxa9a .netライブラリの話で思い出したけどコンストラクタに引数渡せないのクソ不便だよな
渡せるようになれば使えるライブラリも増えそうだが
渡せるようになれば使えるライブラリも増えそうだが
490デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
2017/07/25(火) 19:00:27.87ID:cmKKN7nU0 >コンストラクタに引数渡す場面ってある?
シートの名前ぐらいなら返り値の.nameを変えるけど、何とも思わん
シートの名前ぐらいなら返り値の.nameを変えるけど、何とも思わん
491デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/25(火) 19:39:14.04ID:RB4NOmYpd コンストラクタでしか初期化できない(他の初期化用メソッドを持たない)クラスがあれば困るけど、
そういうものって.Netにあるの?
そういうものって.Netにあるの?
492デフォルトの名無しさん (ワッチョイ bf6d-xeeJ)
2017/07/25(火) 20:05:49.03ID:cmKKN7nU0493デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/25(火) 20:19:25.50ID:KNlosRFTM >>488
えっ、そんな機能いつ実装されたん?
えっ、そんな機能いつ実装されたん?
494デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/25(火) 20:27:13.52ID:KNlosRFTM495デフォルトの名無しさん (ワッチョイ 4791-2faK)
2017/07/25(火) 22:08:51.03ID:8cBHpzox0 >>493
.netのクラス使えないのかな?って以前ググったときに
http://officetanaka.net/excel/vba/tips/tips98.htm
が引っかかって
えらい簡単に使えるんだなぁと思ったんだけど
思っただけで使ったことないし
細かいことも知らない…
ていうか、本当にいろいろ便利に使えるなら
ググるだけでバンバン情報引っかかっていいと思うんだけど
ArrayListのことくらいしか出てこんかった
.netのクラス使えないのかな?って以前ググったときに
http://officetanaka.net/excel/vba/tips/tips98.htm
が引っかかって
えらい簡単に使えるんだなぁと思ったんだけど
思っただけで使ったことないし
細かいことも知らない…
ていうか、本当にいろいろ便利に使えるなら
ググるだけでバンバン情報引っかかっていいと思うんだけど
ArrayListのことくらいしか出てこんかった
496デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/25(火) 22:30:18.63ID:k4b2Lxa9a497デフォルトの名無しさん (ワッチョイ bf6d-fQyQ)
2017/07/25(火) 22:39:21.79ID:cmKKN7nU0498デフォルトの名無しさん (ワッチョイ 4791-2faK)
2017/07/25(火) 22:46:52.90ID:8cBHpzox0 話の流れで思い出したけど
これ使ったことある人いる?
マクロをC#で書けますよっていうやつ
http://mokumokucsharp.hateblo.jp/entry/2016/07/13/140602
Visual Studio Codeとかいうのもインストして
サンプルは動くんだけど
インテリセンスがうまく効かんくて使い方がよくわからない
これ使ったことある人いる?
マクロをC#で書けますよっていうやつ
http://mokumokucsharp.hateblo.jp/entry/2016/07/13/140602
Visual Studio Codeとかいうのもインストして
サンプルは動くんだけど
インテリセンスがうまく効かんくて使い方がよくわからない
499デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/25(火) 23:01:14.52ID:Vr2PvTdG0 それもそうだけどクラスを含むプロジェクトを参照しているモジュールからそのクラスのインスタンスを
直接Newで作れないのにも困ってる。
Create〜系の関数を書いて置き場所に迷う場合が特に。
直接Newで作れないのにも困ってる。
Create〜系の関数を書いて置き場所に迷う場合が特に。
500デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/25(火) 23:03:35.24ID:6CdgJbJQ0 仮にC#使いだったとしても、VBA覚えるわ。
VBAにある機能をどれくらいカバーしているのか。
99%以下ならイラネ。
ていうか、そもそもどういう仕様だろう。
C#で書いたのを、内部的にVBAに翻訳して標準モジュールに書き込むとかだったら笑う。
VBAにある機能をどれくらいカバーしているのか。
99%以下ならイラネ。
ていうか、そもそもどういう仕様だろう。
C#で書いたのを、内部的にVBAに翻訳して標準モジュールに書き込むとかだったら笑う。
501デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/25(火) 23:05:23.65ID:6CdgJbJQ0 よく見たら、
全てのVBAコードを生まれる前に消し去りたいとか、凄いこと書いてる。
何かに憑りつかれてはいませんか。
全てのVBAコードを生まれる前に消し去りたいとか、凄いこと書いてる。
何かに憑りつかれてはいませんか。
502デフォルトの名無しさん (ワッチョイ bf6d-fQyQ)
2017/07/25(火) 23:08:46.90ID:cmKKN7nU0 機能よりも言語仕様で
if()then
とかやっちゃう
if()then
とかやっちゃう
503デフォルトの名無しさん (ワッチョイ bf6d-fQyQ)
2017/07/25(火) 23:09:23.62ID:cmKKN7nU0 しかもうまく動くから消すか消すまいかで悩む
504デフォルトの名無しさん (ワッチョイ a711-QK4i)
2017/07/25(火) 23:34:05.22ID:K76AsuLq0 重複した行を削除したいのですが、ググってみると
重複した下の行を削除するプログラムが殆どです。
上の行を消すプログラムはないでしょうか?
重複した下の行を削除するプログラムが殆どです。
上の行を消すプログラムはないでしょうか?
505デフォルトの名無しさん (ワッチョイ a711-QK4i)
2017/07/25(火) 23:46:50.72ID:K76AsuLq0 自己解決しました。
506デフォルトの名無しさん (ワッチョイ a76f-E/h9)
2017/07/26(水) 00:01:02.57ID:/aun+12z0 >>500
なんでこんな馬鹿なのに偉そうにできるんだろう
なんでこんな馬鹿なのに偉そうにできるんだろう
507デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/26(水) 00:08:54.58ID:7P86XL9W0508デフォルトの名無しさん (ワッチョイ df11-pqVL)
2017/07/26(水) 00:11:51.48ID:U77Cst6m0 質問です。
Excel2007ですけど、複数のオートシェイプをグループ化せずに同時にカットできますか?
オートシェイプを選択してSelection.Cutメソッドを実行すると、なぜかセルがテカテカするのです。
ShapaRangeオブジェクトにはCutメソッドが無いみたいですし。
とりあえずSendKeys "^x"で対処してるけどなんだかなあ、という状況です。
Excel2007ですけど、複数のオートシェイプをグループ化せずに同時にカットできますか?
オートシェイプを選択してSelection.Cutメソッドを実行すると、なぜかセルがテカテカするのです。
ShapaRangeオブジェクトにはCutメソッドが無いみたいですし。
とりあえずSendKeys "^x"で対処してるけどなんだかなあ、という状況です。
509デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/26(水) 00:13:05.34ID:kYPrva630 RangeのUnion、初期値がNothingのときエラーになるのが残念だ
510デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/26(水) 00:13:33.72ID:kYPrva630 初期値つーか左辺
511デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/26(水) 00:21:08.24ID:o5MQIZHRr Officeが入っていればどのPCでも動く、というVBAの最大の利点を犠牲にしてまでC#で書く意味はないね。
自己満以外の何ものでもない。
幸せになるのは自分だけ。
自己満以外の何ものでもない。
幸せになるのは自分だけ。
512デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/26(水) 00:30:16.20ID:kYPrva630 自分の仕事が楽になるならいいんじゃないか
共有するやつは別
共有するやつは別
513デフォルトの名無しさん (ワッチョイ bf1b-pqVL)
2017/07/26(水) 00:50:15.20ID:Fm0oLH560 VBAって基本、かならず自動でコンパイルされた上で実行されるんですか?
[デバッグ]-[コンパイル]ってやらずに実行するとえらく遅いんですが。
[デバッグ]-[コンパイル]ってやらずに実行するとえらく遅いんですが。
514デフォルトの名無しさん (アウアウカー Safb-7zDD)
2017/07/26(水) 03:26:24.46ID:KTzuPZaba 日本語変じゃね
515デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/26(水) 06:22:23.80ID:o5MQIZHRr >>512
コード資産が共有できない(自分の中でも)、というプログラマにあるまじき行為。
コード資産が共有できない(自分の中でも)、というプログラマにあるまじき行為。
516デフォルトの名無しさん (ドコグロ MMfb-efHF)
2017/07/26(水) 07:04:52.98ID:2BL9ZNyZM >>495
> http://officetanaka.net/excel/vba/tips/tips98.htm
> が引っかかって
> えらい簡単に使えるんだなぁと思ったんだけど
これは知らなかったわ、教えてくれてありがとう
> ていうか、本当にいろいろ便利に使えるなら
> ググるだけでバンバン情報引っかかっていいと思うんだけど
> ArrayListのことくらいしか出てこんかった
ちょっとググったらCOM経由で動くみたいね(CreateObject で作成するんだから当たり前か)
http://qiita.com/mima_ita/items/efcd1a6ea86f09047984
> http://officetanaka.net/excel/vba/tips/tips98.htm
> が引っかかって
> えらい簡単に使えるんだなぁと思ったんだけど
これは知らなかったわ、教えてくれてありがとう
> ていうか、本当にいろいろ便利に使えるなら
> ググるだけでバンバン情報引っかかっていいと思うんだけど
> ArrayListのことくらいしか出てこんかった
ちょっとググったらCOM経由で動くみたいね(CreateObject で作成するんだから当たり前か)
http://qiita.com/mima_ita/items/efcd1a6ea86f09047984
517デフォルトの名無しさん (ドコグロ MMfb-efHF)
2017/07/26(水) 07:14:09.63ID:2BL9ZNyZM >>498
これ使うぐらいならPowerShell使う
これ使うぐらいならPowerShell使う
518デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/26(水) 07:36:03.65ID:o8wFJ9U0d >>515
環境の問題なら、自分のなかでは使い続けられるんじゃね?
環境の問題なら、自分のなかでは使い続けられるんじゃね?
519デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
2017/07/26(水) 07:46:37.45ID:rbCQuCda0 >>511
中間言語があるんだよなぁ
中間言語があるんだよなぁ
520デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/26(水) 07:52:21.56ID:o5MQIZHRr >>518
既存のVBAコードに、C#で書いたプロシージャを呼び出すコードを追加することはできないよね。
VBAで書いたWinのExcelマクロはMacのExcelでも使えるけど、C#で書いたらMacでは使えないよね。
既存のVBAコードに、C#で書いたプロシージャを呼び出すコードを追加することはできないよね。
VBAで書いたWinのExcelマクロはMacのExcelでも使えるけど、C#で書いたらMacでは使えないよね。
521デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/26(水) 07:53:30.08ID:o5MQIZHRr >>519
え? マジで? kwsk
え? マジで? kwsk
522デフォルトの名無しさん (ワッチョイ 4791-2faK)
2017/07/26(水) 07:58:49.22ID:PoLK+oD40 VBAはもう言語仕様をアップデートするつもりはないんだろうけど
せめてIDEくらいはもうちょっと便利にして欲しい
>>516
つまり相互運用の登録がされているライブラリは使えるってことか
でもいちいち自分でdll作ってまでは使わないかなぁ…
せめてIDEくらいはもうちょっと便利にして欲しい
>>516
つまり相互運用の登録がされているライブラリは使えるってことか
でもいちいち自分でdll作ってまでは使わないかなぁ…
523デフォルトの名無しさん (ワッチョイ c773-5QOx)
2017/07/26(水) 08:36:41.46ID:N2NJoKbw0 eclipseがVBA対応したらウケるね
524デフォルトの名無しさん (アークセー Sx1b-SP9G)
2017/07/26(水) 09:23:17.61ID:2KFV8mEox525デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 09:40:24.60ID:19gyZHTT0 >>522
dllを作るってどういう状況で必要になるのかよく分からんよな。
別途用意する必要があるって事は他人に使わせるのに難があるし、
VSTO使えるならVSで他の言語使った方が早い場面が多いだろうし、
自作のdllが必要になるような処理をVBAに求める場面というのが想像出来ない。
dllを作るってどういう状況で必要になるのかよく分からんよな。
別途用意する必要があるって事は他人に使わせるのに難があるし、
VSTO使えるならVSで他の言語使った方が早い場面が多いだろうし、
自作のdllが必要になるような処理をVBAに求める場面というのが想像出来ない。
526デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/26(水) 10:40:08.38ID:FItiZl47d 「Macだと」とか「プログラマとして」とかちょっとこのスレの想定ユーザーからはかけ離れてるんじゃないか?
527デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/26(水) 10:40:27.92ID:nObVd20Fa528デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/26(水) 11:27:30.63ID:FItiZl47d そんなにクソ言語だとは思えない
529デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 11:43:09.73ID:19gyZHTT0 VBAをクソクソ言っている人たちはどういう立場なんだろうな。
クソだと思うなら近づかなければいいのに。
なんか他の言語でもメインで使い始めた途端にクソクソ言いそう。
クソだと思うなら近づかなければいいのに。
なんか他の言語でもメインで使い始めた途端にクソクソ言いそう。
530デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/26(水) 11:49:10.59ID:FItiZl47d 作ったものを他人と共有しようとすると限界が低い。でも自分一人ツールと割り切れば相当なことができる。
Officeソフトにそれ以上求めてもしょうがないでしょ。
Officeソフトにそれ以上求めてもしょうがないでしょ。
531デフォルトの名無しさん (ワッチョイ c773-5QOx)
2017/07/26(水) 12:23:16.56ID:N2NJoKbw0 VBAは手軽さを重視してるんだから、高度な機能がないって意見は的外れなんだよ
532デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/26(水) 12:43:21.28ID:0/Y/FM4fM533デフォルトの名無しさん (ワキゲー MM9f-rceg)
2017/07/26(水) 12:47:32.19ID:aG45BvrzM >>529
理解できない自分を正当化してるだけさ
理解できない自分を正当化してるだけさ
534デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 12:57:07.83ID:19gyZHTT0535デフォルトの名無しさん (スップ Sdff-AsiQ)
2017/07/26(水) 13:05:35.40ID:ecs8OXuXd そんなことだと底辺職業だと見なされるぞ
536デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/26(水) 13:36:33.55ID:o5MQIZHRr537デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/26(水) 13:40:18.49ID:nObVd20Fa クソだけどofficeのマクロ言語はこれしかないから仕方なく使うしか無いだろ
プログラム言語としては時代遅れの化石なのはさすがに共通認識だと思ってたわ
現状くそなのもそうだし、これから先進化することも決してないこともクソ
あと、手軽さと高度な機能は別に共存できるでしょ
プログラム言語としては時代遅れの化石なのはさすがに共通認識だと思ってたわ
現状くそなのもそうだし、これから先進化することも決してないこともクソ
あと、手軽さと高度な機能は別に共存できるでしょ
538デフォルトの名無しさん (スップ Sdff-AsiQ)
2017/07/26(水) 14:23:28.25ID:ecs8OXuXd539デフォルトの名無しさん (ワッチョイ a76f-E/h9)
2017/07/26(水) 14:25:46.34ID:/aun+12z0 プログラマとしてって言いだしたのって(オッペケ Sr1b-QbI6)だな
自演までして何がやりたいんだか・・・
自演までして何がやりたいんだか・・・
540デフォルトの名無しさん (JP 0H4f-QK4i)
2017/07/26(水) 14:27:35.77ID:+1cN/gIlH >>527
> オブジェクト指向にドップリしてたら使いにくいことこの上ないと思うし
俺は逆だと思うよ
オブジェクト指向をよく知ってたほうが、VBAを使いこなせる
・クラスモジュールを使いこなす
・いわゆる「インタフェース継承」を使いこなす
・WithEventsを使いこなす
大抵の奴は「クラスモジュールっていつ使うんですか」レベルだから
> オブジェクト指向にドップリしてたら使いにくいことこの上ないと思うし
俺は逆だと思うよ
オブジェクト指向をよく知ってたほうが、VBAを使いこなせる
・クラスモジュールを使いこなす
・いわゆる「インタフェース継承」を使いこなす
・WithEventsを使いこなす
大抵の奴は「クラスモジュールっていつ使うんですか」レベルだから
541デフォルトの名無しさん (アウアウエー Sa9f-MZAo)
2017/07/26(水) 15:11:24.07ID:ZPUGQ/usa >>540
俺の言いたいことを一ミリも汲んでくれてないなw
そりゃオブジェクト指向的なプログラミングを知ってれば非オブジェクト指向言語でも構造的に自然と書くようになる
それとこれとは別の話
機能がないからわざわざ自分で作らにゃいかんから不便だって話をしてる
俺の言いたいことを一ミリも汲んでくれてないなw
そりゃオブジェクト指向的なプログラミングを知ってれば非オブジェクト指向言語でも構造的に自然と書くようになる
それとこれとは別の話
機能がないからわざわざ自分で作らにゃいかんから不便だって話をしてる
542デフォルトの名無しさん (ワッチョイ df06-pqVL)
2017/07/26(水) 16:52:15.43ID:6VvQXdi20 この手の下らんやり取りはこれまでもあったし、これからもウンザリするほど続くんだろうなぁ┐(´д`)┌ヤレヤレ
543デフォルトの名無しさん (オッペケ Sr1b-QbI6)
2017/07/26(水) 18:04:37.55ID:o5MQIZHRr544デフォルトの名無しさん (ササクッテロル Sp1b-8s/R)
2017/07/26(水) 18:16:40.16ID:VQAVDfi4p545デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 18:30:45.45ID:19gyZHTT0 オブジェクト指向は設計に対する概念
546デフォルトの名無しさん (JP 0H4f-QK4i)
2017/07/26(水) 18:33:38.33ID:+1cN/gIlH >>541
オブジェクト指向の一切を封じられてるから使いづらいというのなら、それはそうでもないってことさ
機能が足りないというんなら、先人が作ったライブラリでも探せば?
https://github.com/rubberduck203/VBEX とか
オブジェクト指向の一切を封じられてるから使いづらいというのなら、それはそうでもないってことさ
機能が足りないというんなら、先人が作ったライブラリでも探せば?
https://github.com/rubberduck203/VBEX とか
547デフォルトの名無しさん (ササクッテロル Sp1b-8s/R)
2017/07/26(水) 18:41:04.50ID:VQAVDfi4p >>545
設計と言語両方じゃね?
設計と言語両方じゃね?
548デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
2017/07/26(水) 19:21:44.23ID:rbCQuCda0549デフォルトの名無しさん (スップ Sdff-AsiQ)
2017/07/26(水) 19:28:41.05ID:ecs8OXuXd550デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/26(水) 19:39:55.05ID:pjdGyN9QM >>534
言語で仕事選べるとか無職の発送は素晴らしいな w
言語で仕事選べるとか無職の発送は素晴らしいな w
551デフォルトの名無しさん (ワッチョイ a791-8s/R)
2017/07/26(水) 19:42:18.93ID:W1HWCg900552デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/26(水) 19:45:32.31ID:pjdGyN9QM >>548
ログクラスとか作ってたな
書き込むシートと書き込む行を別々に管理するのは嫌だったから
でも継承もできないしコンストラクタの引数も持てない状況ではあまり使いやすくならないし結局クラスはほとんど使わない
そもそも俺がずっと保守するわけにもいかんから
ログクラスとか作ってたな
書き込むシートと書き込む行を別々に管理するのは嫌だったから
でも継承もできないしコンストラクタの引数も持てない状況ではあまり使いやすくならないし結局クラスはほとんど使わない
そもそも俺がずっと保守するわけにもいかんから
553デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 19:45:44.80ID:19gyZHTT0554デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/26(水) 19:46:32.77ID:+NZ2Dbuu0555デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
2017/07/26(水) 19:52:11.21ID:rbCQuCda0556デフォルトの名無しさん (スップ Sdff-AsiQ)
2017/07/26(水) 19:53:00.06ID:ecs8OXuXd557デフォルトの名無しさん (ワッチョイ bf6d-E/h9)
2017/07/26(水) 19:53:37.44ID:rbCQuCda0558デフォルトの名無しさん (ワッチョイ a791-8s/R)
2017/07/26(水) 19:56:29.43ID:W1HWCg900 >>553
オブジェクト指向言語は
オブジェクト指向設計したものを
そのまま実装し易い言語じゃないかな
言語の概念でもあると思うけどな
オブジェクト指向言語じゃなくても実装できるのは確かだけど
それならVBAでもオブジェクト指向設計を実装できるんじゃないかな
オブジェクト指向言語は
オブジェクト指向設計したものを
そのまま実装し易い言語じゃないかな
言語の概念でもあると思うけどな
オブジェクト指向言語じゃなくても実装できるのは確かだけど
それならVBAでもオブジェクト指向設計を実装できるんじゃないかな
559デフォルトの名無しさん (スップ Sdff-AsiQ)
2017/07/26(水) 19:57:08.36ID:ecs8OXuXd560デフォルトの名無しさん (ワッチョイ bf6d-1kH5)
2017/07/26(水) 20:08:20.48ID:rbCQuCda0561デフォルトの名無しさん (ワッチョイ a791-8s/R)
2017/07/26(水) 20:09:21.78ID:W1HWCg900562デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/26(水) 20:11:22.90ID:pjdGyN9QM563デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/26(水) 20:12:48.62ID:pjdGyN9QM564デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/26(水) 20:15:20.68ID:pjdGyN9QM565デフォルトの名無しさん (ワッチョイ a791-8s/R)
2017/07/26(水) 20:15:48.34ID:W1HWCg900 状態を持つ必要がある入出力関係が
独立に多数ある場合は
クラスを使うと比較的実装が簡単になるのかな?
独立に多数ある場合は
クラスを使うと比較的実装が簡単になるのかな?
566デフォルトの名無しさん (ワッチョイ bf6d-1kH5)
2017/07/26(水) 20:17:56.75ID:rbCQuCda0 >>563
ログはlogシート一つ、3列
時間 / タイプ / 内容
7/26 20:00 log 作業開始
7/26 20:05 success 作業成功
7/26 20:07 error err.discriptionの内容
7/26 20:10 log 作業終了
で、書き込む時に毎回A列の最終行を取得し、そこに記録してる
覚える必要はないと思う
ログはlogシート一つ、3列
時間 / タイプ / 内容
7/26 20:00 log 作業開始
7/26 20:05 success 作業成功
7/26 20:07 error err.discriptionの内容
7/26 20:10 log 作業終了
で、書き込む時に毎回A列の最終行を取得し、そこに記録してる
覚える必要はないと思う
567デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/26(水) 20:24:18.05ID:+NZ2Dbuu0 表の検索とかsqlでやる人もいるんだろうけど自分としてはクラスにしちゃうのがしっくりくるわ
配列の操作もクラスにしてると楽
あと、似たような処理で操作する対象が違うメソッドなんかは同じ名前にしても問題ないところとかも地味に便利だよ
関数だと命名に困ることがよくある
配列の操作もクラスにしてると楽
あと、似たような処理で操作する対象が違うメソッドなんかは同じ名前にしても問題ないところとかも地味に便利だよ
関数だと命名に困ることがよくある
568デフォルトの名無しさん (スップ Sdff-AsiQ)
2017/07/26(水) 20:30:27.76ID:ecs8OXuXd >>560
さあ?いろいろあるでしょ
数値を放り込むとその度に回数をカウントアップし、最大値・最小値、合計、時刻を記録する、とか。
これくらいだったらワークシートでもできるけど、そういう対象が数多くなるとオブジェクト配列でやりたくなる。
どのワークシートのどこに?とか考える必要なくなるしエクセル以外のOfficeでも使えるし。
さあ?いろいろあるでしょ
数値を放り込むとその度に回数をカウントアップし、最大値・最小値、合計、時刻を記録する、とか。
これくらいだったらワークシートでもできるけど、そういう対象が数多くなるとオブジェクト配列でやりたくなる。
どのワークシートのどこに?とか考える必要なくなるしエクセル以外のOfficeでも使えるし。
569デフォルトの名無しさん (ワッチョイ a791-8s/R)
2017/07/26(水) 20:51:20.79ID:W1HWCg900 >>564
一般的な形では難しいかもしれないけど
サブクラスに相当する関数から
スーパークラスに相当する関数を呼べばいいんじゃね?
逆にスーパークラスに相当する関数に
スイッチみたいな引数を付けて
サブクラスに相当する関数に分岐するとか
一般的な形では難しいかもしれないけど
サブクラスに相当する関数から
スーパークラスに相当する関数を呼べばいいんじゃね?
逆にスーパークラスに相当する関数に
スイッチみたいな引数を付けて
サブクラスに相当する関数に分岐するとか
570デフォルトの名無しさん (ワッチョイ df6f-QK4i)
2017/07/26(水) 21:00:52.52ID:7P86XL9W0571デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 21:20:54.79ID:19gyZHTT0 >>558
VBAで出来ないと思っているならオブジェクト指向を何か勘違いしているからオブジェクト指向設計の本を読むといいよ。
他の言語みたいな書き方が出来ないだけで、VBAでもオブジェクト指向プログラミングは普通に出来るから。
VBAで出来ないと思っているならオブジェクト指向を何か勘違いしているからオブジェクト指向設計の本を読むといいよ。
他の言語みたいな書き方が出来ないだけで、VBAでもオブジェクト指向プログラミングは普通に出来るから。
572デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/26(水) 21:34:48.38ID:+NZ2Dbuu0 >>570
まあ、あんまり大きなデータは扱わんからな
別に検索する形式が決まってるなら内部的にsqlで値抜き出してもいいわけだし
データの塊をオブジェクトとして扱っちゃったほうが何かまとまり感あってしっくり来るって感じかな
まあ、あんまり大きなデータは扱わんからな
別に検索する形式が決まってるなら内部的にsqlで値抜き出してもいいわけだし
データの塊をオブジェクトとして扱っちゃったほうが何かまとまり感あってしっくり来るって感じかな
573デフォルトの名無しさん (ワッチョイ e711-MZAo)
2017/07/26(水) 21:36:24.28ID:+NZ2Dbuu0574デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/26(水) 21:54:31.59ID:kYPrva630 >>564
AddressOf あるし使おうと思えば使える
AddressOf あるし使おうと思えば使える
575デフォルトの名無しさん (ワッチョイ 473d-pqVL)
2017/07/26(水) 22:02:04.56ID:19gyZHTT0576デフォルトの名無しさん (ワッチョイ df11-efHF)
2017/07/26(水) 22:05:43.16ID:gz+R3HSW0 >>569
さすがにそれはないわ...
さすがにそれはないわ...
577デフォルトの名無しさん (ワッチョイ df11-efHF)
2017/07/26(水) 22:09:54.70ID:gz+R3HSW0 >>574
アドレス取るのはいいけどどうやって使うつもり?
アドレス取るのはいいけどどうやって使うつもり?
578デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/26(水) 22:32:43.94ID:kYPrva630 >>577
ごめんVBAから直接には使えなかった
ごめんVBAから直接には使えなかった
579デフォルトの名無しさん (ワッチョイ bf23-FdGq)
2017/07/26(水) 23:08:50.27ID:+wB1yzpw0580デフォルトの名無しさん (ワッチョイ bf23-FdGq)
2017/07/26(水) 23:11:34.30ID:+wB1yzpw0 vbaでオブジェクト指向とか中級者がやることだな。
初心者よりタチ悪いこともある。
初心者よりタチ悪いこともある。
581デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/26(水) 23:58:17.75ID:kYPrva630 上級者はなにするんだ?
582デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 00:50:19.96ID:Gu8HEug70583デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 01:05:44.74ID:Gu8HEug70 >>571
VBAと言う言語にクラスとかオブジェクト指向の概念が入っている
つまりオブジェクト指向の概念は言語にもつながる
と言う主張
一方でオブジェクト指向は設計にのみ関わる概念と言う主張もある
オブジェクト指向の概念を取り入れた言語でオブジェクト指向設計したものを実現するのと
オブジェクト指向の概念がない言語で実現するのでは
生産性とかに差が生じるだろう
VBAと言う言語にクラスとかオブジェクト指向の概念が入っている
つまりオブジェクト指向の概念は言語にもつながる
と言う主張
一方でオブジェクト指向は設計にのみ関わる概念と言う主張もある
オブジェクト指向の概念を取り入れた言語でオブジェクト指向設計したものを実現するのと
オブジェクト指向の概念がない言語で実現するのでは
生産性とかに差が生じるだろう
584デフォルトの名無しさん (ワッチョイ 2623-toSE)
2017/07/27(木) 01:36:25.07ID:Ddw23w1u0585デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 01:54:44.40ID:Gu8HEug70586l (ワッチョイ 0fcf-GNib)
2017/07/27(木) 02:24:19.55ID:lqCZB24a0 Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
https://www.youtube.com/watch?v=RLZGrqQnnZc
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ
https://www.youtube.com/watch?v=RLZGrqQnnZc
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ
587デフォルトの名無しさん (ワッチョイ 2623-toSE)
2017/07/27(木) 04:56:34.97ID:Ddw23w1u0 >>585
クラスやらユーザ定義型を作るね。
クラスやらユーザ定義型を作るね。
588デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/07/27(木) 05:41:33.30ID:8/6stQ5Xr >>584
つ 上級者の定義
つ 上級者の定義
589デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 06:25:09.17ID:Gu8HEug70590デフォルトの名無しさん (ドコグロ MM8a-gqKx)
2017/07/27(木) 06:47:24.74ID:P1js1uXhM >>582
> なぜ?
> 逆にスーパークラスに相当する関数に
> スイッチみたいな引数を付けて
> サブクラスに相当する関数に分岐するとか
サブクラスを増やす度にスーパークラスに手を入れるつもりなの?
真顔で言ってるなら単なるアホだろ w
> で、どうするの?
無理じゃね?
って書いてあるんだが...
> なぜ?
> 逆にスーパークラスに相当する関数に
> スイッチみたいな引数を付けて
> サブクラスに相当する関数に分岐するとか
サブクラスを増やす度にスーパークラスに手を入れるつもりなの?
真顔で言ってるなら単なるアホだろ w
> で、どうするの?
無理じゃね?
って書いてあるんだが...
591デフォルトの名無しさん (ドコグロ MM8a-gqKx)
2017/07/27(木) 07:00:09.74ID:P1js1uXhM >>585
> 各シートの統計情報を取りたい時はどうする?
要件次第
> 例えば、セルを更新した回数、最大値、最小値、平均値
> を各シート毎に知りたい時
更新回数以外は全セルなめて計算することもあるしイベント毎に合計、最大、最小を更新していくのもあるだろうな
> 後から分散とか標準偏差とかも知りたくなったらどうする?
そういう機能を実装するだけ
イベント以外はオブジェクト指向関係ないと思うぞ
> 各シートの統計情報を取りたい時はどうする?
要件次第
> 例えば、セルを更新した回数、最大値、最小値、平均値
> を各シート毎に知りたい時
更新回数以外は全セルなめて計算することもあるしイベント毎に合計、最大、最小を更新していくのもあるだろうな
> 後から分散とか標準偏差とかも知りたくなったらどうする?
そういう機能を実装するだけ
イベント以外はオブジェクト指向関係ないと思うぞ
592デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 07:12:45.05ID:Gu8HEug70 >>590
でいちいち同じ処理をコピペするの?
でいちいち同じ処理をコピペするの?
593デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 07:13:37.01ID:Gu8HEug70 >>591
生産性が違うんじゃね?
生産性が違うんじゃね?
594デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 07:15:00.43ID:Gu8HEug70 >>591
全セルなめるとか性能要件を満たせなくなる可能性が高いだろ
全セルなめるとか性能要件を満たせなくなる可能性が高いだろ
595デフォルトの名無しさん (ワッチョイ 666d-V1Wy)
2017/07/27(木) 07:17:39.18ID:mlaDFoVL0596デフォルトの名無しさん (ワッチョイ db91-ntdb)
2017/07/27(木) 07:17:56.55ID:Gu8HEug70 >>590
サブクラスからスーパークラスを呼ぶ方は?
サブクラスからスーパークラスを呼ぶ方は?
597デフォルトの名無しさん (ドコグロ MM8a-gqKx)
2017/07/27(木) 07:37:59.47ID:P1js1uXhM598デフォルトの名無しさん (ワッチョイ 2623-toSE)
2017/07/27(木) 07:40:20.87ID:Ddw23w1u0599デフォルトの名無しさん (アウアウエー Sae2-kGGk)
2017/07/27(木) 08:16:42.60ID:LMuXn2N9a >>575
結局それだと要らんもんまで呼び出したり不便なんだよ
やれんことはないけど不便
オーバーロードもやれんことはないけど実装がめんどくさい
使いたい場面は結構出てくると思うけどね
インターフェースもなんかスマートじゃないし
結局それだと要らんもんまで呼び出したり不便なんだよ
やれんことはないけど不便
オーバーロードもやれんことはないけど実装がめんどくさい
使いたい場面は結構出てくると思うけどね
インターフェースもなんかスマートじゃないし
600デフォルトの名無しさん (ワッチョイ 1f73-cdfR)
2017/07/27(木) 08:50:43.35ID:f8l+azOG0 お前らスレタイ読んで他所へ行け
601デフォルトの名無しさん (ワッチョイ db5a-PZKh)
2017/07/27(木) 09:44:44.74ID:cQuO+1bD0 【IT】10代のネット環境「スマホのみ」が7割、「PCのみ」は25%にとどまる [無断転載禁止]©2ch.net
http://egg.2ch.net/test/read.cgi/bizplus/1500900491/
http://egg.2ch.net/test/read.cgi/bizplus/1500900491/
602デフォルトの名無しさん (スップ Sd8a-y7IM)
2017/07/27(木) 09:49:36.92ID:yI2DKD3yd >>600
クラスモジュールがある以上、このスレの話題として守備範囲内
クラスモジュールがある以上、このスレの話題として守備範囲内
603デフォルトの名無しさん (JP 0H76-ZO1u)
2017/07/27(木) 10:22:34.31ID:ZNB0F0Q0H >>554
> ライター、チャッカマン、バーナーが他所であるのにマッチでも火をおこせるしこれはこれで良いもんだぞって言ってるようなもん
マッチだけでも十分OOできる
それにWithEventsもあるしね
https://github.com/rubberduck203/VBEX のソース読んだか?以外といろいろできるぞ
> ライター、チャッカマン、バーナーが他所であるのにマッチでも火をおこせるしこれはこれで良いもんだぞって言ってるようなもん
マッチだけでも十分OOできる
それにWithEventsもあるしね
https://github.com/rubberduck203/VBEX のソース読んだか?以外といろいろできるぞ
604デフォルトの名無しさん (スップ Sd8a-y7IM)
2017/07/27(木) 10:40:17.72ID:yI2DKD3yd605デフォルトの名無しさん (JP 0H76-ZO1u)
2017/07/27(木) 10:55:11.44ID:ZNB0F0Q0H >>604
> これはあなたが作者さんなの?
いや、俺じゃないよ
コードサンプルとして読んでみたらってこと
あとこれとか
https://github.com/jpimbert/VBAToolKit/tree/master/Source/VbaUnit
OOの知識があって、いわゆる「インターフェース継承」を視野に入れれば、かなりのことができる
さらに、WithEventsを使えば双方向データバインディングなんかも実装できる
> これはあなたが作者さんなの?
いや、俺じゃないよ
コードサンプルとして読んでみたらってこと
あとこれとか
https://github.com/jpimbert/VBAToolKit/tree/master/Source/VbaUnit
OOの知識があって、いわゆる「インターフェース継承」を視野に入れれば、かなりのことができる
さらに、WithEventsを使えば双方向データバインディングなんかも実装できる
606デフォルトの名無しさん (ドコグロ MM22-toSE)
2017/07/27(木) 11:24:49.36ID:698/A489M インタフェースなんかvbaで使うなボケ
607デフォルトの名無しさん (スップ Sd8a-y7IM)
2017/07/27(木) 11:56:09.26ID:yI2DKD3yd608デフォルトの名無しさん (アークセー Sxb3-PRKf)
2017/07/27(木) 12:01:06.07ID:SAqwCo2Mx >>606
ほーわーいー
ほーわーいー
609デフォルトの名無しさん (スップ Sd8a-y7IM)
2017/07/27(木) 12:17:23.37ID:yI2DKD3yd チンリン山脈
610デフォルトの名無しさん (アウアウエー Sae2-kGGk)
2017/07/27(木) 13:24:05.39ID:LMuXn2N9a >>603
いやだからさ
俺の言いたいこと伝わらないし理解する気無いよね
こっちはマッチしか無いから仕方なくマッチ使ってんの
不満だからって努力を放棄してるわけじゃないからな?
ただどう考えても手間だろ
そんだけの話
いやだからさ
俺の言いたいこと伝わらないし理解する気無いよね
こっちはマッチしか無いから仕方なくマッチ使ってんの
不満だからって努力を放棄してるわけじゃないからな?
ただどう考えても手間だろ
そんだけの話
611デフォルトの名無しさん (JP 0H76-ZO1u)
2017/07/27(木) 14:02:53.37ID:ZNB0F0Q0H >>610
君も俺の言いたいこと1ミリも理解しようとしてないから、お互い様だね
君も俺の言いたいこと1ミリも理解しようとしてないから、お互い様だね
612デフォルトの名無しさん (ササクッテロル Spb3-ntdb)
2017/07/27(木) 14:43:39.94ID:DPiXNUUHp613デフォルトの名無しさん (ドコグロ MM8a-gqKx)
2017/07/27(木) 16:09:11.81ID:P1js1uXhM614デフォルトの名無しさん (ワッチョイ ea06-HJpE)
2017/07/27(木) 16:44:21.21ID:7xCZa4oD0 だからさぁお前らは雑談したいだけだろ?スレ立ててそこでやれっつーの
クソうぜぇ
クソうぜぇ
615デフォルトの名無しさん (アウアウエー Sae2-kGGk)
2017/07/27(木) 16:44:34.77ID:uf/My/5wa >>611
使い方によってはvbaだってoopできるよ!って言いたいんでしょ?
使い方によってはvbaだってoopできるよ!って言いたいんでしょ?
616デフォルトの名無しさん (JP 0H76-ZO1u)
2017/07/27(木) 17:00:44.58ID:ZNB0F0Q0H617デフォルトの名無しさん (スップ Sd8a-y7IM)
2017/07/27(木) 17:11:23.71ID:yI2DKD3yd 使いたいときに便利な機能を自由につまみ食いできるのがいいライブラリだと思っているんだが、
オブジェクト指向のライブラリって少しおせっかいというか世界観を押し付けてくるところがある。
会員にならないと利用できないサービスみたいな感じ。
自分で作ったものを自分で利用する分には当然問題ないんだけどね。
VBAの言語機能の弱さを考えると、クラス間の関連のある体系的な使い方を実現するのは厳しいだろう。
オブジェクト指向のライブラリって少しおせっかいというか世界観を押し付けてくるところがある。
会員にならないと利用できないサービスみたいな感じ。
自分で作ったものを自分で利用する分には当然問題ないんだけどね。
VBAの言語機能の弱さを考えると、クラス間の関連のある体系的な使い方を実現するのは厳しいだろう。
618デフォルトの名無しさん (アウアウエー Sae2-kGGk)
2017/07/27(木) 17:44:10.44ID:uf/My/5wa619デフォルトの名無しさん (JP 0H76-ZO1u)
2017/07/27(木) 17:59:09.25ID:ZNB0F0Q0H 経験不足だね
言語10個くらいマスターしてこい
言語10個くらいマスターしてこい
620デフォルトの名無しさん (アウーイモ MM9f-k5Qo)
2017/07/27(木) 19:42:01.40ID:xCwJ4jCdM 某サイトを参考にメールを一括作成するVBAを書いています。
createitemfromtemplateの行で「実行時エラー13 型が一致しません」というエラーが出ます。
どうやらcreateitemfromtemplateがうまく機能していないようなのですが、解決方法を教えていただけませんでしょうか。
よろしくお願いいたします。
※「Microsoft Outlook 14.0 Object Library」の参照設定はONになっています。
-----------------------------------
Sub main()
Dim OL As New Outlook.Application
Dim M As MailItem
Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row
For i = 2 To MaxRow
Set M = OL.createitemfromtemplate("D:\本文.msg")
M.To = Cells(i, 列.件名).Value
M.Subject = Cells(i, 列.件名).Value
M.Attachments.Add "D:\" & Cells(i, 列.添付ファイル).Value
M.HTMLBody = Replace(M.HTMLBody, "●●", Cells(i, 列.氏名).Value)
M.SaveAs "D:\" & Cells(i, 列.企業名).Value & "_" & Cells(i, 列.氏名).Value & ".msg"
Next
End Sub
-----------------------------------
createitemfromtemplateの行で「実行時エラー13 型が一致しません」というエラーが出ます。
どうやらcreateitemfromtemplateがうまく機能していないようなのですが、解決方法を教えていただけませんでしょうか。
よろしくお願いいたします。
※「Microsoft Outlook 14.0 Object Library」の参照設定はONになっています。
-----------------------------------
Sub main()
Dim OL As New Outlook.Application
Dim M As MailItem
Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row
For i = 2 To MaxRow
Set M = OL.createitemfromtemplate("D:\本文.msg")
M.To = Cells(i, 列.件名).Value
M.Subject = Cells(i, 列.件名).Value
M.Attachments.Add "D:\" & Cells(i, 列.添付ファイル).Value
M.HTMLBody = Replace(M.HTMLBody, "●●", Cells(i, 列.氏名).Value)
M.SaveAs "D:\" & Cells(i, 列.企業名).Value & "_" & Cells(i, 列.氏名).Value & ".msg"
Next
End Sub
-----------------------------------
621デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
2017/07/27(木) 20:32:44.20ID:60P4ZjAM0 >>620
msdnのリファレンスをみると
Outlookテンプレート(.oft)を指定しろって書いてあるので
怒られているとおり、型がちがうのでしょう。
CreateItemメソッドを使えばいいんじゃないでしょうか。
msdnのリファレンスをみると
Outlookテンプレート(.oft)を指定しろって書いてあるので
怒られているとおり、型がちがうのでしょう。
CreateItemメソッドを使えばいいんじゃないでしょうか。
622デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
2017/07/27(木) 21:59:25.00ID:aAe8+IMH0 オブジェクト指向がどうこうって語りたいなら
オブジェクト指向
って言葉と
オブジェクト指向言語
って言葉をちゃんと区別して発言して下さい
オブジェクト指向
って言葉と
オブジェクト指向言語
って言葉をちゃんと区別して発言して下さい
623620 (アウーイモ MM9f-k5Qo)
2017/07/27(木) 22:07:28.99ID:xCwJ4jCdM >>621
返信ありがとうございます!!
すみません、CreateItemでも変わらずエラーでした・・。
ちなみに下記のように.oftを指定しても同じでした。
これは本当に不思議です・・・。
---------------------------------------
Sub test03()
Dim OL As New Outlook.Application
Dim M As MailItem
Set M = OL.CreateItemFromTemplate("D:\本文.oft")
M.To = "aaaa@bbb.co.jp"
M.SaveAs "D:\test03.msg"
End Sub
---------------------------------------
返信ありがとうございます!!
すみません、CreateItemでも変わらずエラーでした・・。
ちなみに下記のように.oftを指定しても同じでした。
これは本当に不思議です・・・。
---------------------------------------
Sub test03()
Dim OL As New Outlook.Application
Dim M As MailItem
Set M = OL.CreateItemFromTemplate("D:\本文.oft")
M.To = "aaaa@bbb.co.jp"
M.SaveAs "D:\test03.msg"
End Sub
---------------------------------------
624デフォルトの名無しさん (ワッチョイ 6aaa-V1Wy)
2017/07/27(木) 22:19:54.50ID:eHKEweRs0 関西のお笑いと関西のお笑い芸人も区別して語るべきなのか?
625デフォルトの名無しさん (アークセー Sxb3-PRKf)
2017/07/27(木) 22:40:28.48ID:SAqwCo2Mx >>624
そうよ
そうよ
626デフォルトの名無しさん (ワッチョイ ea6f-ZO1u)
2017/07/27(木) 22:46:54.67ID:e65zqkX+0 俺予想だと、2023年くらいに.NETと統合されるので、大丈夫じゃないの。
627デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
2017/07/27(木) 23:04:48.75ID:60P4ZjAM0 >>623
Sub test()
Dim ol As New Outlook.Application
Dim mi As MailItem
Set mi = ol.CreateItem(olMailItem)
mi.Display
End Sub
この最小構成でメール編集画面がでるかお試しを。
出なかったら参照設定が変なのかも。
Excelのバージョンが変わると勝手に参照設定のバージョンも
変わるという罠に引っかかったことがあるので。
実行時バインディングでやってみると言う手もあり。
Sub test()
Dim ol As New Outlook.Application
Dim mi As MailItem
Set mi = ol.CreateItem(olMailItem)
mi.Display
End Sub
この最小構成でメール編集画面がでるかお試しを。
出なかったら参照設定が変なのかも。
Excelのバージョンが変わると勝手に参照設定のバージョンも
変わるという罠に引っかかったことがあるので。
実行時バインディングでやってみると言う手もあり。
628620 (アウーイモ MM9f-6wLz)
2017/07/27(木) 23:18:55.37ID:xCwJ4jCdM629デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/07/27(木) 23:25:30.12ID:8/6stQ5Xr '// 1行目の項目名が、A列から順に
'//[アドレス][件名][添付ファイルパス][本文]
'// のとき、
Dim dataSet
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value
With CreateObject("Outlook.Application")
.GetNamespace("MAPI").GetDefaultFolder(16).Display
For i = 1 To lastRow - 1
With .CreateItem(olMailItem)
.To = dataSet(i, 1)
.Subject = dataSet(i, 2)
.Attachments.Add dataSet(i, 3)
.Body = dataSet(i, 4)
.Save
End With
Next i
End With
'//[アドレス][件名][添付ファイルパス][本文]
'// のとき、
Dim dataSet
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value
With CreateObject("Outlook.Application")
.GetNamespace("MAPI").GetDefaultFolder(16).Display
For i = 1 To lastRow - 1
With .CreateItem(olMailItem)
.To = dataSet(i, 1)
.Subject = dataSet(i, 2)
.Attachments.Add dataSet(i, 3)
.Body = dataSet(i, 4)
.Save
End With
Next i
End With
630デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
2017/07/27(木) 23:27:06.45ID:60P4ZjAM0 >>628
よく考えたら、参照ならその前にエラーを吐きそう。
ためしに
Sub test()
Dim ol As Object
Set ol = CreateObject("Outlook.Application")
Dim mi As Object
Set mi = ol.CreateItem(olMailItem)
mi.Display
End Sub
これをOption Explicitを無効にして実行したら
どうなるでしょうか?
だめならOS再起動してみる。
どうにも理解不能なエラーがこれで直ったことがあるw。
よく考えたら、参照ならその前にエラーを吐きそう。
ためしに
Sub test()
Dim ol As Object
Set ol = CreateObject("Outlook.Application")
Dim mi As Object
Set mi = ol.CreateItem(olMailItem)
mi.Display
End Sub
これをOption Explicitを無効にして実行したら
どうなるでしょうか?
だめならOS再起動してみる。
どうにも理解不能なエラーがこれで直ったことがあるw。
631デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
2017/07/27(木) 23:56:32.00ID:aAe8+IMH0 >>628
まず、そのユーザーでOutlookはちゃんと動いてメールの送受信できるのか?
まず、そのユーザーでOutlookはちゃんと動いてメールの送受信できるのか?
632620 (アウーイモ MM9f-6wLz)
2017/07/28(金) 00:24:24.58ID:EJW5hZGgM633620 (アウアウアー Sab6-6wLz)
2017/07/28(金) 04:23:09.57ID:Kx1QSHwna 皆様ありがとうございました!
理由はわかりませんが突然できるようになりました!
本当にご迷惑おかけしました!
理由はわかりませんが突然できるようになりました!
本当にご迷惑おかけしました!
634デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/07/28(金) 04:32:44.73ID:ccATQH/dr >>632
ごめん。コード間違ってた。orz
参照設定をoffにし、↓のコードで試してみて。
'// olMailItemを直値(0)に変えた
Dim dataSet
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value
With CreateObject("Outlook.Application")
.GetNamespace("MAPI").GetDefaultFolder(16).Display
For i = 1 To lastRow - 1
With .CreateItem(0)
.To = dataSet(i, 1)
.Subject = dataSet(i, 2)
.Attachments.Add dataSet(i, 3)
.Body = dataSet(i, 4)
.Save
End With
Next i
End With
ごめん。コード間違ってた。orz
参照設定をoffにし、↓のコードで試してみて。
'// olMailItemを直値(0)に変えた
Dim dataSet
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value
With CreateObject("Outlook.Application")
.GetNamespace("MAPI").GetDefaultFolder(16).Display
For i = 1 To lastRow - 1
With .CreateItem(0)
.To = dataSet(i, 1)
.Subject = dataSet(i, 2)
.Attachments.Add dataSet(i, 3)
.Body = dataSet(i, 4)
.Save
End With
Next i
End With
635デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/07/28(金) 04:34:16.17ID:ccATQH/dr 一歩遅かったか…orz
637デフォルトの名無しさん (ワッチョイ db11-AITk)
2017/07/28(金) 23:02:57.85ID:+oxMyCi10 win10
excel2016で
MSXML2.XMLHTTPを使って
responseTextでgoogle検索結果のページを取得しようとすると、
responseTextで返ってきたものが、今までwin7 excel2007などで返ってきたものと全然違うんですが、win7の時のように受け取る方法ってありませんか?
win7の時はhtmlそのものが返ってきてましたがwin10では最初の方が判読困難です。
やろうとしていることは、vbaでgoogle画像検索の結果の画像をセルに表示しようと思ってます。
excel2016で
MSXML2.XMLHTTPを使って
responseTextでgoogle検索結果のページを取得しようとすると、
responseTextで返ってきたものが、今までwin7 excel2007などで返ってきたものと全然違うんですが、win7の時のように受け取る方法ってありませんか?
win7の時はhtmlそのものが返ってきてましたがwin10では最初の方が判読困難です。
やろうとしていることは、vbaでgoogle画像検索の結果の画像をセルに表示しようと思ってます。
638デフォルトの名無しさん (ワッチョイ 6aaa-V1Wy)
2017/07/30(日) 10:16:32.82ID:WZc9I6Vq0 そういえば responseBody しか使ったことないなあ
(adTypeBinary な ADODB オブジェクトに Write するために)
(adTypeBinary な ADODB オブジェクトに Write するために)
639デフォルトの名無しさん (ワッチョイ db11-AITk)
2017/07/30(日) 12:41:33.40ID:ND/Yhbfk0 すみません、いろいろ試してたんですが、google以外ではちゃんと同じようなものを受け取れてました。
googleでは環境によって返すものが違うのかもしれません。
その先はスレ違いになるので自分でいろいろやってみます。ありがとうございました。
googleでは環境によって返すものが違うのかもしれません。
その先はスレ違いになるので自分でいろいろやってみます。ありがとうございました。
640デフォルトの名無しさん (ワッチョイ 666d-fl5W)
2017/07/30(日) 15:24:50.24ID:LIjBkUDz0 api以外でgoogleの検索結果を取得しないほうがいい
すぐにアクセス禁止になる
すぐにアクセス禁止になる
641デフォルトの名無しさん (アウーイモ MM9f-GszO)
2017/08/02(水) 00:57:39.97ID:O3oN8G+MM Function Name2Adr(str As String)
Dim Cts As Folder, Ct As ContactItem
Set Cts = CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set Ct = Cts.Items.Find("[Email1DisplayName] = '" & str & "'")
If Ct Is Nothing Then Name2Adr = "不明" Else Name2Adr = Ct.Email1Address
Set Cts = Nothing: Set Ct = Nothing
End Function
↑ローカルのアドレス帳から表示名を検索しメアドを返す関数です。これはうまくいくのですが、
↓下のグローバルアドレス帳を検索するものがうまくいきません。エラーメッセージは「オブジェクトはこのプロパティまたはメソッドをサポートしていません」です。
どなたか解決法をご教示ください。よろしくお願いします。
Function gName2Adr(str As String)
Dim olApplication As Outlook.Application
Dim olNameSpace As Outlook.Namespace
Dim olAddressLists As Outlook.AddressLists
Dim olAddressList As Outlook.AddressList
Dim olAddressEntries As Outlook.AddressEntries
Set olApplication = New Outlook.Application
Set olNameSpace = olApplication.Session
Set olAddressLists = olNameSpace.AddressLists
Set olAddressList = olAddressLists.Item(2)
Set olAddressEntries = olAddressList.AddressEntries
Dim olAddressEntry As Outlook.AddressEntry
Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
If olAddressEntry Is Nothing Then gName2Adr = "不明" Else gName2Adr = olAddressEntry.Email1Address
End Function
Dim Cts As Folder, Ct As ContactItem
Set Cts = CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set Ct = Cts.Items.Find("[Email1DisplayName] = '" & str & "'")
If Ct Is Nothing Then Name2Adr = "不明" Else Name2Adr = Ct.Email1Address
Set Cts = Nothing: Set Ct = Nothing
End Function
↑ローカルのアドレス帳から表示名を検索しメアドを返す関数です。これはうまくいくのですが、
↓下のグローバルアドレス帳を検索するものがうまくいきません。エラーメッセージは「オブジェクトはこのプロパティまたはメソッドをサポートしていません」です。
どなたか解決法をご教示ください。よろしくお願いします。
Function gName2Adr(str As String)
Dim olApplication As Outlook.Application
Dim olNameSpace As Outlook.Namespace
Dim olAddressLists As Outlook.AddressLists
Dim olAddressList As Outlook.AddressList
Dim olAddressEntries As Outlook.AddressEntries
Set olApplication = New Outlook.Application
Set olNameSpace = olApplication.Session
Set olAddressLists = olNameSpace.AddressLists
Set olAddressList = olAddressLists.Item(2)
Set olAddressEntries = olAddressList.AddressEntries
Dim olAddressEntry As Outlook.AddressEntry
Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
If olAddressEntry Is Nothing Then gName2Adr = "不明" Else gName2Adr = olAddressEntry.Email1Address
End Function
642デフォルトの名無しさん (アウアウカー Safb-IFL0)
2017/08/02(水) 02:57:39.31ID:9fnjiac4a >>641
名前長いな
名前長いな
643デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 06:22:21.40ID:Yub86NHXr 少々長くてもわかりやすい名前をつけるのが基本だからね。
ハンガリアンよりは全然いい。
ハンガリアンよりは全然いい。
644デフォルトの名無しさん (ワッチョイ 0f3d-HJpE)
2017/08/02(水) 06:31:28.66ID:SLRN4nNP0 少々長くても分かりやすい名前を付ける、それがハンガリアン記法
想像してるのはたぶんシステムハンガリアン記法
想像してるのはたぶんシステムハンガリアン記法
645デフォルトの名無しさん (ワキゲー MMa2-lmxC)
2017/08/02(水) 07:20:47.27ID:Mrcj6vwlM 変数はAddressなのにメソッド名はAdrで統一してないのは理由あるの?
646デフォルトの名無しさん (アークセー Sxb3-h9ZP)
2017/08/02(水) 07:40:08.64ID:ed9o3kBwx 変数名長いなぁ
olAppとかAdrListとかにすれば良いやん
olAppとかAdrListとかにすれば良いやん
647デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 07:40:35.97ID:Yub86NHXr648デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 07:44:09.62ID:Yub86NHXr649デフォルトの名無しさん (ワッチョイ 666d-V1Wy)
2017/08/02(水) 07:44:43.49ID:boOv7Sns0650デフォルトの名無しさん (ドコグロ MM22-gqKx)
2017/08/02(水) 08:11:17.19ID:i5+f8wczM >>649
参照設定してないだけじゃね?
参照設定してないだけじゃね?
651デフォルトの名無しさん (ワッチョイ 666d-F3YI)
2017/08/02(水) 08:56:23.68ID:boOv7Sns0652デフォルトの名無しさん (ワッチョイ ea2e-ZO1u)
2017/08/02(水) 09:10:48.85ID:Y/LidHA/0 >>650
649は店に来たお客さんのつもりのようだから、まともに相手する必要はないよ
649は店に来たお客さんのつもりのようだから、まともに相手する必要はないよ
653デフォルトの名無しさん (オイコラミネオ MMb6-cdfR)
2017/08/02(水) 11:50:02.54ID:a22879YUM 単なる自己満足なんだからそこまで突っ込むなよ
どうせ永遠に平行線なんだろ?
どうせ永遠に平行線なんだろ?
654デフォルトの名無しさん (ワキゲー MMa2-lmxC)
2017/08/02(水) 12:08:29.03ID:pZ2w6jYsM655デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 12:26:23.95ID:Yub86NHXr656デフォルトの名無しさん (ワキゲー MMa2-lmxC)
2017/08/02(水) 12:33:57.68ID:x+1N4OhAM >>655
言語関係なくただのキャメルケースだよ
言語関係なくただのキャメルケースだよ
657641 (オイコラミネオ MMb6-Cs75)
2017/08/02(水) 13:14:55.44ID:1uis+HfsM658デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 15:50:17.32ID:Yub86NHXr >>656
いや、だからメソッドをキャメルケースにするのは何流なのかなと。
いや、だからメソッドをキャメルケースにするのは何流なのかなと。
659デフォルトの名無しさん (アウアウエー Sae2-kGGk)
2017/08/02(水) 16:45:06.13ID:pmz5Ebvba >>658
javascriptはキャメルだと思う
javascriptはキャメルだと思う
660641 (オイコラミネオ MMb6-Cs75)
2017/08/02(水) 16:56:06.29ID:uQ5PKG3iM661デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 18:07:23.96ID:Yub86NHXr662デフォルトの名無しさん (ドコグロ MM22-gqKx)
2017/08/02(水) 18:28:23.95ID:i5+f8wczM >>660
Outlook VBA スレないからまあここでもいいと思うが仕事中に軽くググった範疇だといい方法が見つからん
> Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
Items.Find( ) は Folder オブジェクトしか持ってないからここでエラーになるのは当然
グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが取得したリストの GetContactsFolder( ) を呼び出しても Nothing しか返ってこない
何か設定が要るのか根本的に頓珍漢なのかさっぱりわからん
Outlook VBA スレないからまあここでもいいと思うが仕事中に軽くググった範疇だといい方法が見つからん
> Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
Items.Find( ) は Folder オブジェクトしか持ってないからここでエラーになるのは当然
グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが取得したリストの GetContactsFolder( ) を呼び出しても Nothing しか返ってこない
何か設定が要るのか根本的に頓珍漢なのかさっぱりわからん
663デフォルトの名無しさん (オッペケ Srb3-ZCwv)
2017/08/02(水) 19:58:09.08ID:Yub86NHXr664620 (アウアウアー Sa83-zhMW)
2017/08/03(木) 06:23:52.11ID:y8hiM9O7a >>662
ありがとうございます!勉強になります。
> グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが
↑その内容というのは、debug.printで見ることはできますでしょうか??
ありがとうございます!勉強になります。
> グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが
↑その内容というのは、debug.printで見ることはできますでしょうか??
665デフォルトの名無しさん (ワッチョイ 3b6d-dE0h)
2017/08/03(木) 07:51:33.57ID:T58VKPgl0666デフォルトの名無しさん (ドコグロ MM4b-/F0N)
2017/08/03(木) 08:16:18.57ID:8PSWLe0hM >>664
Set GlobalAddressList = Namespace.GlobalAddressList( )
Debug.Print GlobalAddressList.AddressEntries.Item(1).Name
とかすれば見れるよ
全件エクスポートするサンプルとかあるので見てみて
https://www.slipstick.com/developer/code-samples/export-exchange-gal-excel/
Set GlobalAddressList = Namespace.GlobalAddressList( )
Debug.Print GlobalAddressList.AddressEntries.Item(1).Name
とかすれば見れるよ
全件エクスポートするサンプルとかあるので見てみて
https://www.slipstick.com/developer/code-samples/export-exchange-gal-excel/
667デフォルトの名無しさん (オイコラミネオ MM4b-1llH)
2017/08/04(金) 13:47:28.51ID:2SBD/wKoM バージョンが上がって日付時刻型の除算ができなくなりました。バリアント型にしても空になります。
対応方法はありませんでしょうか?
また、こういう仕様変更はどこで確認できますか?
対応方法はありませんでしょうか?
また、こういう仕様変更はどこで確認できますか?
668デフォルトの名無しさん (スプッッ Sdaf-pRZg)
2017/08/04(金) 19:09:28.11ID:HbiPV4wFd669デフォルトの名無しさん (ワッチョイ 3b6d-dE0h)
2017/08/04(金) 19:49:21.85ID:EaU+sIDF0 日付じゃなくて時刻(時間)で除算したいのでは?
1950/1/1を2で割って1925/1/1…なんてことはしないだろう
>>667
office 更新プログラム等で検索
https://support.office.com/ja-jp/article/Office-%E6%9B%B4%E6%96%B0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0-a118ec61-f007-492f-bfa5-5a6f764d5471
1950/1/1を2で割って1925/1/1…なんてことはしないだろう
>>667
office 更新プログラム等で検索
https://support.office.com/ja-jp/article/Office-%E6%9B%B4%E6%96%B0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0-a118ec61-f007-492f-bfa5-5a6f764d5471
670デフォルトの名無しさん (ワッチョイ cf11-1llH)
2017/08/04(金) 20:11:22.22ID:CfFJ59fY0 時刻ですね
671デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/05(土) 08:53:42.25ID:3n3qQbM6r672デフォルトの名無しさん (ワッチョイ a16f-/FH4)
2017/08/05(土) 09:48:36.05ID:7J5Re5fS0 2010でも時刻の割り算できたけど?
673デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/05(土) 10:09:48.61ID:3n3qQbM6r じゃあ、この話題はこれで終わりだな。
674デフォルトの名無しさん (ワッチョイ cf11-4x8g)
2017/08/05(土) 11:28:42.39ID:J2w+rLAY0 エラーコードは51
データ型が日付時刻の除算はエラーでる
データ型が日付時刻の除算はエラーでる
675デフォルトの名無しさん (ワッチョイ 3b6d-rm2g)
2017/08/05(土) 12:58:50.71ID:kXEyZiX90 Sub foo()
bar = Date / 2
Debug.Print bar
End Sub
2010、win7だけどエラーでない
bar = Date / 2
Debug.Print bar
End Sub
2010、win7だけどエラーでない
676デフォルトの名無しさん (ワッチョイ cf11-4x8g)
2017/08/05(土) 13:00:51.75ID:J2w+rLAY0 >>675
時刻同士で割って見て
時刻同士で割って見て
677デフォルトの名無しさん (ワッチョイ 2b11-ysrI)
2017/08/05(土) 13:07:29.37ID:j7okUzoP0 ダブルにキャストしてから計算したら
ずれるのかな?
ずれるのかな?
678デフォルトの名無しさん (ワッチョイ 3b6d-iBdB)
2017/08/05(土) 13:08:47.84ID:kXEyZiX90679デフォルトの名無しさん (ワッチョイ 8351-FJki)
2017/08/05(土) 13:35:11.02ID:1ncAb1Zc0680デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/05(土) 16:53:51.52ID:3n3qQbM6r 質問者からのエラーコードの提示がないので無駄な回答だな。
681デフォルトの名無しさん (ワッチョイ 036f-/FH4)
2017/08/05(土) 18:06:14.68ID:fC/MwjWZ0 時刻を時刻で割る意義は? どんな分野で必要と成るんだ? それは知りたい
682デフォルトの名無しさん (アウーイモ MMb3-7CC5)
2017/08/05(土) 18:54:05.96ID:UH683s5QM バージョンが上がって…
とか言いながらバージョンを書かない馬鹿
指摘されても書かないという
とか言いながらバージョンを書かない馬鹿
指摘されても書かないという
683デフォルトの名無しさん (ワッチョイ ad91-j7Kr)
2017/08/05(土) 18:58:41.09ID:NpEI7ikB0 >>681
8時間の就業時間の間に25分掛かる作業を何回できるか見積るとか
8時間の就業時間の間に25分掛かる作業を何回できるか見積るとか
684デフォルトの名無しさん (ワッチョイ 83ed-qC7T)
2017/08/05(土) 19:00:17.07ID:90gBDUFU0 しょうもない質問はほっとけばいいんじゃ?
それとも答えたくてウズウズしてる感じ?
それとも答えたくてウズウズしてる感じ?
685デフォルトの名無しさん (ワッチョイ 0b23-WlLB)
2017/08/05(土) 19:45:20.37ID:ze59kfDf0 >>683
無理くり理由をこじつけてもその程度だよな…ほんと何がしたいんだろうな
無理くり理由をこじつけてもその程度だよな…ほんと何がしたいんだろうな
686デフォルトの名無しさん (アウーイモ MMb3-7CC5)
2017/08/05(土) 20:31:20.41ID:2UigV3EYM 質問するのにバージョンも書かない
ID変わってるのに名無しのまま
環境書けと言ってるのに無視
こんな処理する理由は?と聞かれても無視
こんな人間の生産物を現場で使う恐怖
ID変わってるのに名無しのまま
環境書けと言ってるのに無視
こんな処理する理由は?と聞かれても無視
こんな人間の生産物を現場で使う恐怖
687デフォルトの名無しさん (ワッチョイ 036f-/FH4)
2017/08/05(土) 20:47:12.34ID:fC/MwjWZ0 それは時刻で無くて時間だろ と
688デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/05(土) 23:20:40.34ID:3n3qQbM6r689デフォルトの名無しさん (ワッチョイ 0b06-gAma)
2017/08/05(土) 23:56:01.89ID:dqSa99my0 質問者が軌道修正のために必要な情報を提供しないってのはここではザラにあることだろ。
そんなのによく付き合ってられんなー
そんなのによく付き合ってられんなー
690デフォルトの名無しさん (ワッチョイ 03aa-dE0h)
2017/08/06(日) 00:12:38.56ID:7dbJmn2Z0 質問室じゃねえんだよ
691デフォルトの名無しさん (オッペケ Srd9-31he)
2017/08/06(日) 12:22:25.32ID:hXGNAkd3r また教えたがりの無能が暴れとるのかw
692デフォルトの名無しさん (アウアウカー Sac9-6G5k)
2017/08/06(日) 16:09:44.69ID:wM27hiyIa 暴れているのはただの煽り
693デフォルトの名無しさん (オイコラミネオ MM4b-4x8g)
2017/08/07(月) 16:41:33.18ID:/LwpuoG3M694デフォルトの名無しさん (ワッチョイ 49ad-mf2b)
2017/08/07(月) 16:59:56.15ID:PHW4jpUx0 >>693
地域オプションで先頭が数字以外になるような書式だったとか?
地域オプションで先頭が数字以外になるような書式だったとか?
695デフォルトの名無しさん (ワッチョイ 9be4-jyli)
2017/08/07(月) 19:35:32.88ID:9LTblBy60 >>693
環境書けよ
なんでエラー出たとか言うやつは環境書かないの
VBAの日付型は原則数値として扱えるはずので
日付型である事が原因でエラーが出るとは考えにくいけどなぁ
ちなみにエラー51のヘルプ(2007)には
>このエラーが Error ステートメントまたは Raise メソッドで生成されたものでなければ、Microsoft 製品テクニカル サポートに連絡して、メッセージが表示されたときの状況を知らせてください
ってあるから、ホントにエラー51出たならEXCELのバグの可能性もないではないな
環境書けよ
なんでエラー出たとか言うやつは環境書かないの
VBAの日付型は原則数値として扱えるはずので
日付型である事が原因でエラーが出るとは考えにくいけどなぁ
ちなみにエラー51のヘルプ(2007)には
>このエラーが Error ステートメントまたは Raise メソッドで生成されたものでなければ、Microsoft 製品テクニカル サポートに連絡して、メッセージが表示されたときの状況を知らせてください
ってあるから、ホントにエラー51出たならEXCELのバグの可能性もないではないな
696デフォルトの名無しさん (ワッチョイ 3b6d-VAa7)
2017/08/07(月) 20:09:27.70ID:PGc1T+jA0 excel2010 win7
エラーが起こるのは除算の分母側がdateだった時
longにキャストするか、variantで宣言していれば問題ない(もちろん宣言してない場合も問題ない)
バグくさい挙動だなぁ
Sub foo2()
Dim a As Time
Dim b As Time
Dim test As Date
a = Time
b = Time
test_long = (a * 1) / (b * 1) 'ok
test = a / (b * 1) 'ok
test = 1 / b 'error
test = (a * 1) / b 'error
test = a / b 'error
End Sub
Sub foo()
Dim a As Variant
Dim b As Variant
Dim test As Date
a = Time
b = Time
test = a / b 'ok
End Sub
エラーが起こるのは除算の分母側がdateだった時
longにキャストするか、variantで宣言していれば問題ない(もちろん宣言してない場合も問題ない)
バグくさい挙動だなぁ
Sub foo2()
Dim a As Time
Dim b As Time
Dim test As Date
a = Time
b = Time
test_long = (a * 1) / (b * 1) 'ok
test = a / (b * 1) 'ok
test = 1 / b 'error
test = (a * 1) / b 'error
test = a / b 'error
End Sub
Sub foo()
Dim a As Variant
Dim b As Variant
Dim test As Date
a = Time
b = Time
test = a / b 'ok
End Sub
697デフォルトの名無しさん (ワッチョイ ad91-3aaz)
2017/08/07(月) 20:36:42.78ID:5JtEoMJq0 Cdbl()で分母をDoubleにキャストすればいいだけじゃね?
698デフォルトの名無しさん (ワッチョイ 3b6d-VAa7)
2017/08/07(月) 20:39:22.17ID:PGc1T+jA0699デフォルトの名無しさん (ワッチョイ ad91-3aaz)
2017/08/07(月) 20:54:07.86ID:5JtEoMJq0 Time って
DateTime.Time プロパティのことだよな
Property Time As Variant
だからもともとVariant型
dim a As Time がエラーになるんだが
DateTime.Time プロパティのことだよな
Property Time As Variant
だからもともとVariant型
dim a As Time がエラーになるんだが
700デフォルトの名無しさん (ワッチョイ ad91-3aaz)
2017/08/07(月) 21:05:47.61ID:5JtEoMJq0 Date型はVBAのデータ型で"21:02:32"みたいな文字列なんじゃね?
だから計算するとエラーになる
分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想
だから計算するとエラーになる
分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想
701デフォルトの名無しさん (ワッチョイ 3b6d-9fgs)
2017/08/07(月) 21:13:12.34ID:PGc1T+jA0702デフォルトの名無しさん (ワッチョイ cf11-4x8g)
2017/08/07(月) 23:25:10.55ID:kmFs6vPH0 >>695
2007じゃエラーでないよ
2007じゃエラーでないよ
703デフォルトの名無しさん (ワッチョイ 03aa-dE0h)
2017/08/07(月) 23:33:20.74ID:elxVZ6u90 データベースのDATETIME型の値がそのままVBAのDate型変数にマップできれば楽なのに、
1900年以前だとうまくいかないのが残念だ。
1900年以前だとうまくいかないのが残念だ。
704デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
2017/08/07(月) 23:39:54.26ID:5JtEoMJq0 >>702
2010とかだとエラーになる
分母にDate型を持ってくるときは
明示的にCdblでキャストすればエラーにならなくできる
MS側にバグレポートしたところで修正するかどうかはMS側次第
仕様変更したと言うかもしれない
2010とかだとエラーになる
分母にDate型を持ってくるときは
明示的にCdblでキャストすればエラーにならなくできる
MS側にバグレポートしたところで修正するかどうかはMS側次第
仕様変更したと言うかもしれない
705デフォルトの名無しさん (ワッチョイ 0b06-gAma)
2017/08/07(月) 23:59:58.12ID:HViBOnBI0 そろそろ日付時刻での除算の意味を教えて
706デフォルトの名無しさん (ワッチョイ 3b6d-EhRY)
2017/08/08(火) 00:39:23.26ID:sJaKEDtc0707デフォルトの名無しさん (ワッチョイ 2b11-ysrI)
2017/08/08(火) 00:57:18.12ID:ZuuTozCK0 キャストしてできるんならなんの問題もないだろう
キャストできない理由があるんじゃないのか?
まさか発想になかったわけじゃないだろうし
キャストできない理由があるんじゃないのか?
まさか発想になかったわけじゃないだろうし
708デフォルトの名無しさん (ワッチョイ 4f91-7CC5)
2017/08/08(火) 05:17:42.76ID:ttZKdV6P0 つーか質問者本人どこいったんじゃ
709デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/08(火) 07:26:59.16ID:qEy0EStIr710デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
2017/08/08(火) 07:52:46.37ID:4vV+Ffiu0711デフォルトの名無しさん (ワッチョイ 3b6d-dE0h)
2017/08/08(火) 07:57:39.53ID:sJaKEDtc0 これエラーにならん
Debug.Print 1 / Time
これはエラー
foo = time
Debug.Print 1 / foo
意味わかんねぇmsに聞くか
Debug.Print 1 / Time
これはエラー
foo = time
Debug.Print 1 / foo
意味わかんねぇmsに聞くか
712デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/08(火) 08:15:13.81ID:qEy0EStIr >>711
型が関係してるとしか思えないんだけど…
型が関係してるとしか思えないんだけど…
713デフォルトの名無しさん (ドコグロ MMcf-/F0N)
2017/08/08(火) 08:17:59.56ID:7r69+AsTM714デフォルトの名無しさん (ササクッテロロ Spa9-Mpnj)
2017/08/08(火) 08:18:45.83ID:T3VkQlydp715デフォルトの名無しさん (ササクッテロロ Spa9-Mpnj)
2017/08/08(火) 08:21:04.55ID:T3VkQlydp >>713
時刻を基準日時刻からの時間以外で定義できるんだっけ?
時刻を基準日時刻からの時間以外で定義できるんだっけ?
716デフォルトの名無しさん (ワッチョイ 3b6d-9Afs)
2017/08/08(火) 08:24:56.85ID:sJaKEDtc0717デフォルトの名無しさん (ワッチョイ 57aa-/L7g)
2017/08/08(火) 08:24:58.32ID:Czpew14v0 今のとこ試した範囲では、2010で割る方の方がDate型だとエラー51だすな
バリアントだとVarType 7(vbDate)でも平気
どうにもバグくさい。だれかインシデント余ってるやつMSに聞いてくれ
>>711
だからエラーになるやつは環境かけよ
Win7 2010ではそれだけではエラーにならんぞ
どっかでfooをDateで宣言してんじゃねえのか
バリアントだとVarType 7(vbDate)でも平気
どうにもバグくさい。だれかインシデント余ってるやつMSに聞いてくれ
>>711
だからエラーになるやつは環境かけよ
Win7 2010ではそれだけではエラーにならんぞ
どっかでfooをDateで宣言してんじゃねえのか
718デフォルトの名無しさん (ワッチョイ 57aa-/L7g)
2017/08/08(火) 08:31:46.30ID:Czpew14v0719デフォルトの名無しさん (ブーイモ MMc1-wxFU)
2017/08/08(火) 12:35:05.88ID:l31z4HMeM 除算は1900/1/1からの経過日数の比
って認識で良いのかな
って認識で良いのかな
720デフォルトの名無しさん (ワッチョイ 0b06-gAma)
2017/08/08(火) 17:34:44.63ID:o2sPvDRf0 >時間の就業時間の間に25分掛かる作業を何回できるか見積るとか
(終了時間ー開始時間)を分単位に直して25で割るってことじゃないですか。
これは10000円を100円単位に分けたらいくつになる?ってのと同じ数量の問題だよね?
時刻の除算ってのは例えば
A = "2017/04/11 16:54:00"
B = "2017/08/15 10:45:48"
で A / B (Aは日付型でなくてもいいんだろうけど)ということでしょ?
これにどんな意味があるのよ
(終了時間ー開始時間)を分単位に直して25で割るってことじゃないですか。
これは10000円を100円単位に分けたらいくつになる?ってのと同じ数量の問題だよね?
時刻の除算ってのは例えば
A = "2017/04/11 16:54:00"
B = "2017/08/15 10:45:48"
で A / B (Aは日付型でなくてもいいんだろうけど)ということでしょ?
これにどんな意味があるのよ
721デフォルトの名無しさん (スプッッ Sddb-6kmL)
2017/08/08(火) 18:14:01.43ID:Plhneb/rd 単純な操作のはずなのによくわからん
0. .xlmxファイルを(パス:\A)に作成しておく
1. フォルダ(パス:\B)内のすべてのCSVファイル(データは1列のみ)を、先ほど作成したファイルのSheet1の2列目から順次マージする
データを繋げるところで詰まるので助けてください
0. .xlmxファイルを(パス:\A)に作成しておく
1. フォルダ(パス:\B)内のすべてのCSVファイル(データは1列のみ)を、先ほど作成したファイルのSheet1の2列目から順次マージする
データを繋げるところで詰まるので助けてください
722デフォルトの名無しさん (ドコグロ MMcf-/F0N)
2017/08/08(火) 18:15:20.46ID:7r69+AsTM723デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
2017/08/08(火) 19:18:53.44ID:4vV+Ffiu0724デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
2017/08/08(火) 19:20:53.27ID:4vV+Ffiu0725デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/08(火) 19:33:26.34ID:qEy0EStIr726デフォルトの名無しさん (ワッチョイ 5323-/FH4)
2017/08/08(火) 19:36:48.60ID:bHuYQqMY0 Excel総合に間違って投下してしまったので、こちらに再投稿します。
以下のマクロをボタンに登録し、印刷範囲をhtmで保存しようとしています。
しかし、このブックを一度上書き保存等しないと正常に動作しません。
見よう見まねでこうなったコードなのですが、どうすれば良いでしょうか?
アドバイスお願いします。
Sub SAVE()
'
' SAVE Macro
'
'
With ActiveWorkbook.PublishObjects.Add(xlSourcePrintArea, _
Range("AT1").Value & ".htm", "Sheet1", "", xlHtmlStatic _
, "", "")
.Publish (True)
.AutoRepublish = False
End With
ChDir "C:\Users\admin\Desktop"
End Sub
以下のマクロをボタンに登録し、印刷範囲をhtmで保存しようとしています。
しかし、このブックを一度上書き保存等しないと正常に動作しません。
見よう見まねでこうなったコードなのですが、どうすれば良いでしょうか?
アドバイスお願いします。
Sub SAVE()
'
' SAVE Macro
'
'
With ActiveWorkbook.PublishObjects.Add(xlSourcePrintArea, _
Range("AT1").Value & ".htm", "Sheet1", "", xlHtmlStatic _
, "", "")
.Publish (True)
.AutoRepublish = False
End With
ChDir "C:\Users\admin\Desktop"
End Sub
727デフォルトの名無しさん (ワッチョイ 1f6f-/FH4)
2017/08/08(火) 21:36:34.68ID:JRNVbyEr0 複数ステップのOLE DBの操作でエラーが発生しましたとか言われて、
adOpenKeyset, adLockOptimisticで対策したら、
今度はUpdateで怒られるんですが、どうにかなりまんせん?
adOpenKeyset, adLockOptimisticで対策したら、
今度はUpdateで怒られるんですが、どうにかなりまんせん?
728デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
2017/08/08(火) 21:50:18.55ID:4vV+Ffiu0 >>727
エラーとカーソルタイプやロックタイプは関係あるの?
エラーとカーソルタイプやロックタイプは関係あるの?
729デフォルトの名無しさん (ワッチョイ 1f6f-/FH4)
2017/08/08(火) 22:02:37.25ID:JRNVbyEr0730デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
2017/08/08(火) 22:06:10.50ID:4vV+Ffiu0 sqlのエラーならそこらへんは関係ないんじゃないの?
なんのエラーか知らんけど
なんのエラーか知らんけど
731デフォルトの名無しさん (ワッチョイ 693d-gAma)
2017/08/08(火) 22:12:27.27ID:wQlpajLt0 DB操作はClose通らない処理を挟んでしまって二重にOpenするとかで苦労した事があるなぁ。
それが原因ならクラス作ってデストラクタにClose書いておけば忘れなくて便利。
それが原因ならクラス作ってデストラクタにClose書いておけば忘れなくて便利。
732デフォルトの名無しさん (ワッチョイ 1311-/F0N)
2017/08/08(火) 23:58:40.83ID:cql1o/lA0 >>723
> Date型で割るとエラーになると言う点と
俺はそんなことは問題にしてない
意味のない演算ができてしまう言語なんて珍しくないし
> あとどうでもいいんだが時刻で割ると言う点の
どうでもいいなら放置しておけば?
> Date型で割るとエラーになると言う点と
俺はそんなことは問題にしてない
意味のない演算ができてしまう言語なんて珍しくないし
> あとどうでもいいんだが時刻で割ると言う点の
どうでもいいなら放置しておけば?
733デフォルトの名無しさん (ワッチョイ a16f-/FH4)
2017/08/09(水) 09:22:17.50ID:Qcpwsibl0734デフォルトの名無しさん (ワッチョイ 0b06-gAma)
2017/08/09(水) 10:44:54.73ID:F6AoeH710735デフォルトの名無しさん (バットンキン MMe3-crsy)
2017/08/09(水) 13:14:09.12ID:b9k/R7FPM Sexel-VBA
736デフォルトの名無しさん (オッペケ Sr1f-bQt4)
2017/08/09(水) 13:28:47.67ID:MinGKowar737デフォルトの名無しさん (ワッチョイ 5323-/FH4)
2017/08/09(水) 13:56:39.55ID:LTZc9U500 >>733
ありがとうございます。帰宅後、やってみます。
ありがとうございます。帰宅後、やってみます。
738デフォルトの名無しさん (バットンキン MMe3-crsy)
2017/08/09(水) 18:28:18.83ID:b9k/R7FPM >>737
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
739デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/10(木) 22:43:19.50ID:JdKfuZ5y0740デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/10(木) 23:14:30.24ID:JdKfuZ5y0 ちなみに、EOFがtrueじゃありませんとか、
IZAMが有効じゃありませんとか、
そんなやつです。
IZAMが有効じゃありませんとか、
そんなやつです。
741デフォルトの名無しさん (ワッチョイ 1a06-KsLg)
2017/08/10(木) 23:22:56.42ID:VgLhJXRi0 >EOFがtrueじゃありません
俺もmysqlにアクセスするのを作ってる段階でそういうのを出すことはあるよ。けど、そういうのここで
チンタラチンタラ言っててもソースがない以上こちら側ではどうしようもないわけで。
俺もmysqlにアクセスするのを作ってる段階でそういうのを出すことはあるよ。けど、そういうのここで
チンタラチンタラ言っててもソースがない以上こちら側ではどうしようもないわけで。
742デフォルトの名無しさん (ワッチョイ 973d-KsLg)
2017/08/10(木) 23:45:49.59ID:SqJ4/4zg0743デフォルトの名無しさん (ワッチョイ 97e4-kh1+)
2017/08/11(金) 04:12:54.28ID:+mgolt3u0 そもそも何のDB(ドライバ)かすら書いてないし
どうやってレコードセット開いてupdateしたのか書いてないし
レスするだけ無駄な気がするぜ
>EOFがtrueじゃありません
そんなエラー見たことないな。EOFがFalseなら普通にデータ取れてるってことじゃねえの?
EOFがTrue前提の操作が浮かばんが、何しようとしたらそんなエラーになるんだよ
>IZAMが有効じゃありません
IZAMって何さ?ビジュアル系バンドメンバーかよ
どうやってレコードセット開いてupdateしたのか書いてないし
レスするだけ無駄な気がするぜ
>EOFがtrueじゃありません
そんなエラー見たことないな。EOFがFalseなら普通にデータ取れてるってことじゃねえの?
EOFがTrue前提の操作が浮かばんが、何しようとしたらそんなエラーになるんだよ
>IZAMが有効じゃありません
IZAMって何さ?ビジュアル系バンドメンバーかよ
744デフォルトの名無しさん (オッペケ Srbb-CFLX)
2017/08/11(金) 07:44:16.53ID:xHfWhpghr >>743
> レスするだけ無駄な気がするぜ
いいんだよ、それで。雑談が目的なんだから。
答えを出す必要はない。
>> EOFがtrueじゃありません
> そんなエラー見たことないな。
ADOでレコードセットを操作していると、ときたま現れるエラー。
クエリ結果にレコードが1件もない場合とかに出たりする。
> レスするだけ無駄な気がするぜ
いいんだよ、それで。雑談が目的なんだから。
答えを出す必要はない。
>> EOFがtrueじゃありません
> そんなエラー見たことないな。
ADOでレコードセットを操作していると、ときたま現れるエラー。
クエリ結果にレコードが1件もない場合とかに出たりする。
745デフォルトの名無しさん (ワッチョイ 0e4b-K+Tw)
2017/08/11(金) 11:24:22.86ID:dnJD889I0 初心者ですがご教授下さい
クラス内にTRが9ありそのうちの1〜4を取得したいと思っています。
現在は1しか取得できません。どう書き換えればいいでしょうか?
Sub shisaku()
Dim objIE As InternetExplorer
Set objIE = CreateObject("Internetexplorer.Application") '
objIE.Visible = True '
objIE.navigate "http://www.aaa/aaa"
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim colTR, colTH, colTD, colImg As IHTMLElementCollection
Set colTR = htmlDoc.getElementsByClassName("first")
Dim el As IHTMLElement
For Each el In colTR
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
Debug.Print colTR(0).innerText
Next el
End Sub
クラス内にTRが9ありそのうちの1〜4を取得したいと思っています。
現在は1しか取得できません。どう書き換えればいいでしょうか?
Sub shisaku()
Dim objIE As InternetExplorer
Set objIE = CreateObject("Internetexplorer.Application") '
objIE.Visible = True '
objIE.navigate "http://www.aaa/aaa"
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim colTR, colTH, colTD, colImg As IHTMLElementCollection
Set colTR = htmlDoc.getElementsByClassName("first")
Dim el As IHTMLElement
For Each el In colTR
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
Debug.Print colTR(0).innerText
Next el
End Sub
746デフォルトの名無しさん (アウアウエー Sa52-nTDo)
2017/08/11(金) 11:47:54.41ID:H2cGDcz1a >>745
なんでcolTRをclassnameで取得してんの?
なんでcolTRをclassnameで取得してんの?
747デフォルトの名無しさん (アウアウエー Sa52-nTDo)
2017/08/11(金) 11:50:59.38ID:H2cGDcz1a あと並べて書いた場合でも変数一つずつ型指定してかないとvariantになるよ、vbaの場合
748デフォルトの名無しさん (ワッチョイ a379-AZXx)
2017/08/11(金) 13:07:34.65ID:11Y29+uU0 吉岡美穂のカキタレ
749デフォルトの名無しさん (ワッチョイ 0e4b-J8zh)
2017/08/11(金) 13:38:42.84ID:dnJD889I0 >>747
vbaでieを操作を読んでもググってもあり理解出来なくてとりあえず作りながら覚えようと
コピペしたものを一部変えました
tr、tdは特定出来ずclassが特定出来るのですがどのように書き換えればよろしいのでしょうか?
vbaでieを操作を読んでもググってもあり理解出来なくてとりあえず作りながら覚えようと
コピペしたものを一部変えました
tr、tdは特定出来ずclassが特定出来るのですがどのように書き換えればよろしいのでしょうか?
750デフォルトの名無しさん (ワッチョイ 0391-8lAF)
2017/08/11(金) 13:56:55.44ID:kj6/PAcR0751デフォルトの名無しさん (アウアウエー Sa52-nTDo)
2017/08/11(金) 14:32:36.47ID:yOhrxWpUa752デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)
2017/08/11(金) 14:42:02.39ID:hvV/hgBn0 例えば下のように文字と数字が並んでいて、文字を数字の横に持って行くにはどうしたらいいですか?
12
q
15
b
10
c
↓
12 q
15 b
10 c
12
q
15
b
10
c
↓
12 q
15 b
10 c
753デフォルトの名無しさん (ワッチョイ b66d-Var+)
2017/08/11(金) 14:45:37.73ID:fD8DkUIg0 >>745
生のjsそのまま使うのはめっちゃめんどくさいから、ラッパーを探したほうが良い
で、探した。以下のサイトのラッパー使えば多分すぐに出来ると思う
http://language-and-engineering.hatenablog.jp/entry/20090710/p1
生のjsそのまま使うのはめっちゃめんどくさいから、ラッパーを探したほうが良い
で、探した。以下のサイトのラッパー使えば多分すぐに出来ると思う
http://language-and-engineering.hatenablog.jp/entry/20090710/p1
754デフォルトの名無しさん (ワッチョイ b66d-Var+)
2017/08/11(金) 14:51:25.70ID:fD8DkUIg0 >>752
必ず数字と英語が入れ替わりで来るなら以下のマクロ
Sub foo()
For i = 1 To 100
行 = Int(i / 2)
If i Mod 2 = 1 Then
Cells(行 + 1, 2) = Cells(i, 1)
Else
Cells(行, 3) = Cells(i, 1)
End If
Next
End Sub
必ず数字と英語が入れ替わりで来るなら以下のマクロ
Sub foo()
For i = 1 To 100
行 = Int(i / 2)
If i Mod 2 = 1 Then
Cells(行 + 1, 2) = Cells(i, 1)
Else
Cells(行, 3) = Cells(i, 1)
End If
Next
End Sub
755デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)
2017/08/11(金) 15:01:16.16ID:hvV/hgBn0756デフォルトの名無しさん (ワッチョイ 0391-8lAF)
2017/08/11(金) 15:12:27.50ID:kj6/PAcR0757デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)
2017/08/11(金) 15:23:36.72ID:hvV/hgBn0 >>756
今考えてるのは以下の感じです
VBAもプログラミングも初心者のため全然コードがわかってなくてすみません
loop (i)
if instr(cell(i,1),"○")<>0
sw=1
if sw=1
sw =1の時それより下のセルの情報を切り取り
loop(n)
n=i+1
if instr(cell(n,1),"○")<>0
sw=0
else n=n+1
loop end
else i=i+1
loop end
今考えてるのは以下の感じです
VBAもプログラミングも初心者のため全然コードがわかってなくてすみません
loop (i)
if instr(cell(i,1),"○")<>0
sw=1
if sw=1
sw =1の時それより下のセルの情報を切り取り
loop(n)
n=i+1
if instr(cell(n,1),"○")<>0
sw=0
else n=n+1
loop end
else i=i+1
loop end
758デフォルトの名無しさん (ワッチョイ b66d-YQfT)
2017/08/11(金) 15:32:45.42ID:fD8DkUIg0 >>755
こう
Sub foo()
行 = 1
'一行目は数字
Cells(行, 2) = Cells(1, 1)
tmp = Cells(1, 1)
For i = 2 To 100
If IsNumeric(Cells(i, 1)) Then
'数字
Cells(行, 2) = tmp
Cells(行, 3) = 文字
行 = 行 + 1
tmp = Cells(i, 1)
文字 = ""
Else
'文字
文字 = 文字 & vbCrLf & Cells(i, 1)
End If
Next
End Sub
こう
Sub foo()
行 = 1
'一行目は数字
Cells(行, 2) = Cells(1, 1)
tmp = Cells(1, 1)
For i = 2 To 100
If IsNumeric(Cells(i, 1)) Then
'数字
Cells(行, 2) = tmp
Cells(行, 3) = 文字
行 = 行 + 1
tmp = Cells(i, 1)
文字 = ""
Else
'文字
文字 = 文字 & vbCrLf & Cells(i, 1)
End If
Next
End Sub
759デフォルトの名無しさん (ワッチョイ b66d-YQfT)
2017/08/11(金) 15:33:16.05ID:fD8DkUIg0760デフォルトの名無しさん (ワッチョイ 0391-8lAF)
2017/08/11(金) 15:48:56.25ID:kj6/PAcR0 >>759
数字を含む文字列をどっちに判別するかによるんじゃね
数字を含む文字列をどっちに判別するかによるんじゃね
761デフォルトの名無しさん (アウアウエー Sa52-nTDo)
2017/08/11(金) 16:02:01.36ID:yOhrxWpUa762デフォルトの名無しさん (ワッチョイ 4eaa-Kd4M)
2017/08/11(金) 16:32:57.50ID:FWZL6nYt0 Ruby で書いた
https://paiza.io/projects/HhNVuMxF20bU1t4-GMp0VQ
ary = []
File.open("File1") do |file|
# 1行ずつ処理する
file.each_line do |line|
# 0〜9
if /^\d+$/ =~ line.chomp!
ary << line + ' '
else
ary[-1] = ary[-1] + line
end
end
end
puts ary
入力
01
a
b
12
c
23
出力
01 ab
12 c
23
ただし、23 の後ろに、半角空白が入っているけど
https://paiza.io/projects/HhNVuMxF20bU1t4-GMp0VQ
ary = []
File.open("File1") do |file|
# 1行ずつ処理する
file.each_line do |line|
# 0〜9
if /^\d+$/ =~ line.chomp!
ary << line + ' '
else
ary[-1] = ary[-1] + line
end
end
end
puts ary
入力
01
a
b
12
c
23
出力
01 ab
12 c
23
ただし、23 の後ろに、半角空白が入っているけど
763デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/11(金) 20:25:45.30ID:Nl+bIgs10764デフォルトの名無しさん (ワッチョイ 1a06-KsLg)
2017/08/11(金) 20:45:51.85ID:2aci5jkj0765デフォルトの名無しさん (ワッチョイ 97e4-GDrG)
2017/08/11(金) 20:48:59.91ID:+mgolt3u0 >>744
>クエリ結果にレコードが1件もない場合とかに出たりする。
それ普通はEOFがTrueになるはずだけど
MySQLのドライバでそうならなかったりするのか?ドライバのバグじゃねえの?
それどうやってゼロ件かどうか判定するんだ?
>クエリ結果にレコードが1件もない場合とかに出たりする。
それ普通はEOFがTrueになるはずだけど
MySQLのドライバでそうならなかったりするのか?ドライバのバグじゃねえの?
それどうやってゼロ件かどうか判定するんだ?
766デフォルトの名無しさん (ワッチョイ 97e4-GDrG)
2017/08/11(金) 21:03:31.05ID:+mgolt3u0767デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/11(金) 21:18:12.65ID:Nl+bIgs10768デフォルトの名無しさん (ワッチョイ 1a06-KsLg)
2017/08/11(金) 21:29:48.64ID:2aci5jkj0769デフォルトの名無しさん (ワッチョイ 0391-8lAF)
2017/08/11(金) 22:03:13.38ID:kj6/PAcR0770デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/11(金) 22:06:37.63ID:mfxycmdp0 Excel(VBA)でデータベース接続ってどういうのが一般的なんでしょうか?
自分は専ら生ODBCを叩いているので他人のことが気になってる。
自分は専ら生ODBCを叩いているので他人のことが気になってる。
771デフォルトの名無しさん (ワッチョイ 0391-8lAF)
2017/08/11(金) 22:11:37.85ID:kj6/PAcR0772デフォルトの名無しさん (ワッチョイ b66d-hH8V)
2017/08/11(金) 22:15:41.96ID:fD8DkUIg0 そもそもexcelでデータベースに接続しないな
全部accessで済ませてしまう
全部accessで済ませてしまう
773デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/11(金) 22:36:29.71ID:mfxycmdp0 >>772
VBAとODBCドライバしか使わないのでExcel, Outlook, Word, Access その他 Officeなら何でもOKにはしてる。
ExcelとOutlookくらいしか使わないけどね。
Outlookはメールで「このテーブルをこう読んだときに〜」とか連絡を受けたときにそのままVBEを開いて使ったりとか。
VBAとODBCドライバしか使わないのでExcel, Outlook, Word, Access その他 Officeなら何でもOKにはしてる。
ExcelとOutlookくらいしか使わないけどね。
Outlookはメールで「このテーブルをこう読んだときに〜」とか連絡を受けたときにそのままVBEを開いて使ったりとか。
774デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/11(金) 23:12:57.71ID:Nl+bIgs10775デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/11(金) 23:35:39.96ID:mfxycmdp0 >>774
乗り換えた、って何から?
乗り換えた、って何から?
776デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/12(土) 00:49:01.81ID:RTe2mUwF0 >>775
外部データ取り込み(Microsoft Query)からです。
シートの指定が、なぜか[シート名$]じゃなくて`シート名$`とか、
データの出力開始列にコマンドボタンを配置すると、ボタンを押した瞬間、
ボタンが横に逃げるとか(離すと元の位置に戻ってくる)、
意味不明な軽い嫌がらせがありますけど。
外部データ取り込み(Microsoft Query)からです。
シートの指定が、なぜか[シート名$]じゃなくて`シート名$`とか、
データの出力開始列にコマンドボタンを配置すると、ボタンを押した瞬間、
ボタンが横に逃げるとか(離すと元の位置に戻ってくる)、
意味不明な軽い嫌がらせがありますけど。
777デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/12(土) 10:58:36.59ID:AoA5DjYT0 ヘルプ見ると日付型の説明として以下のように書いてあるじゃん。
日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。
西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 〜 23:59:59 の
範囲の時刻を表すことができます。
でも1900年以前のDate型変数をワークシートに貼ろうと思ってもできなくて、
実行時エラー'1004':
アプリケーション定義またはオブジェクト定義のエラーです。
ってエラーが出てくるじゃん。これ控えめにいtt
日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。
西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 〜 23:59:59 の
範囲の時刻を表すことができます。
でも1900年以前のDate型変数をワークシートに貼ろうと思ってもできなくて、
実行時エラー'1004':
アプリケーション定義またはオブジェクト定義のエラーです。
ってエラーが出てくるじゃん。これ控えめにいtt
778デフォルトの名無しさん (ワッチョイ 1a06-KsLg)
2017/08/12(土) 11:02:43.67ID:q63a26xE0 mysqlとodbc経由で接続している。以前はSQLServerとでもやってた。他にもポスグレやoracleとやってる人間も沢山居るだろ。
んでそんな文句言ってるのはお前だけ。
お前のソースがバグだらけなんだよ。けどソースは示さないんだろ?一人勝手にやってろ
んでそんな文句言ってるのはお前だけ。
お前のソースがバグだらけなんだよ。けどソースは示さないんだろ?一人勝手にやってろ
779デフォルトの名無しさん (ワッチョイ 5a6c-9RpY)
2017/08/12(土) 11:56:57.58ID:TCrjrl3y0780デフォルトの名無しさん (オッペケ Srbb-paLu)
2017/08/12(土) 12:46:19.08ID:IpuKNNKZr >>755
Dim lastRow As Long
Dim i As Long
Dim arry
Dim str
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
arry = Range("A1:A" & lastRow).Value
i = 1
Do Until i = UBound(arry)
If IsNumeric(arry(i, 1)) And arry(i, 1) <> "" Then
str = str & arry(i, 1)
Do Until IsNumeric(arry(i + 1, 1))
str = str & arry(i + 1, 1)
i = i + 1
If i = UBound(arry) Then Exit Do
Loop
str = str & vbCrLf
Else
i = i + 1
End If
Loop
Range("B1").Value = str
Dim lastRow As Long
Dim i As Long
Dim arry
Dim str
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
arry = Range("A1:A" & lastRow).Value
i = 1
Do Until i = UBound(arry)
If IsNumeric(arry(i, 1)) And arry(i, 1) <> "" Then
str = str & arry(i, 1)
Do Until IsNumeric(arry(i + 1, 1))
str = str & arry(i + 1, 1)
i = i + 1
If i = UBound(arry) Then Exit Do
Loop
str = str & vbCrLf
Else
i = i + 1
End If
Loop
Range("B1").Value = str
781デフォルトの名無しさん (オッペケ Srbb-CFLX)
2017/08/12(土) 13:38:05.91ID:IpuKNNKZr >>779
満足してもらえたようで良かったです。
満足してもらえたようで良かったです。
782デフォルトの名無しさん (ワッチョイ 4eaa-j2BT)
2017/08/12(土) 15:49:33.01ID:s2RcRfJ50 >>.777.
それはVBAの問題じゃない
EXCELで扱える日付範囲がVBAより狭いだけ
それはVBAの問題じゃない
EXCELで扱える日付範囲がVBAより狭いだけ
783デフォルトの名無しさん (ワッチョイ ab09-KsLg)
2017/08/13(日) 10:20:51.63ID:YIp/txnN0 VABでIEを開いて、
情報を取ってるんですが、
ie.Visible = False
で、
画面でないようにしてるけど、
これは、どこか裏で開いてる?
それとも、消えてくれるのかな、
Falseで画面出さない時は、
IE閉じる処理はしなくてもいいでしょうか?
情報を取ってるんですが、
ie.Visible = False
で、
画面でないようにしてるけど、
これは、どこか裏で開いてる?
それとも、消えてくれるのかな、
Falseで画面出さない時は、
IE閉じる処理はしなくてもいいでしょうか?
784デフォルトの名無しさん (ワッチョイ 0e6f-aEKd)
2017/08/13(日) 10:33:34.50ID:ua4YvzFl0 よくわからんけど、WBEクエリってので、
画面出さずに取れませんか。
画面出さずに取れませんか。
785デフォルトの名無しさん (ワッチョイ ab09-KsLg)
2017/08/13(日) 10:35:11.41ID:YIp/txnN0786デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/13(日) 10:45:28.39ID:B6edc+jF0787デフォルトの名無しさん (オッペケ Srbb-CFLX)
2017/08/13(日) 11:53:36.55ID:TIsdzDXzr788デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/13(日) 12:24:29.35ID:B6edc+jF0789デフォルトの名無しさん (ワッチョイ ab09-KsLg)
2017/08/13(日) 12:33:27.11ID:YIp/txnN0790デフォルトの名無しさん (ワッチョイ f34b-qwy0)
2017/08/16(水) 19:34:35.81ID:jf8MYepF0 >>745です
childrenで情報は取得できそうです(イミディエイト上確認できています)
エクセルのA列に入力のURL100をA2から順に自動で情報取得、B列、C列、D列に取得した情報を出力したいのですがどのようにすればいいでしょうか?
おそらくは下記部分の書き換えかと思われますがご教授下さい
objIE.navigate "http://www.aaa.jp/1234/123456789"
Debug.Print colTD(2).innerText & "|" & colTD(3).innerText & "|" & colTD(4).innerText
childrenで情報は取得できそうです(イミディエイト上確認できています)
エクセルのA列に入力のURL100をA2から順に自動で情報取得、B列、C列、D列に取得した情報を出力したいのですがどのようにすればいいでしょうか?
おそらくは下記部分の書き換えかと思われますがご教授下さい
objIE.navigate "http://www.aaa.jp/1234/123456789"
Debug.Print colTD(2).innerText & "|" & colTD(3).innerText & "|" & colTD(4).innerText
791デフォルトの名無しさん (アウアウカー Sac3-K37d)
2017/08/16(水) 21:36:07.94ID:DoB/Yq6sa >>790
昔作った簡易ツールなんだけどさ、これで指定のURLのページのDOM情報を全部ごっそり取れるから試して見たら。
標準モジュールに張り付けて保存して閉じた後で再度開くとアドインリボンにボタンが2つ出来る。
https://pastebin.com/KkNL9u4G
昔作った簡易ツールなんだけどさ、これで指定のURLのページのDOM情報を全部ごっそり取れるから試して見たら。
標準モジュールに張り付けて保存して閉じた後で再度開くとアドインリボンにボタンが2つ出来る。
https://pastebin.com/KkNL9u4G
792デフォルトの名無しさん (アウアウカー Sac3-K37d)
2017/08/16(水) 22:17:10.08ID:DoB/Yq6sa 一点忘れてた。
このツール、取ってくるページが重いと時間がかかる。
あんまり遅いときはBreakしてくれ。
このツール、取ってくるページが重いと時間がかかる。
あんまり遅いときはBreakしてくれ。
793デフォルトの名無しさん (ワッチョイ 9aaa-W16a)
2017/08/16(水) 22:19:22.62ID:6PDnHTyR0 CreateObject("InternetExplorer.Application")
なんてしたくないからMSXML2.XMLHTTPとか使うんじゃないのか?
なんてしたくないからMSXML2.XMLHTTPとか使うんじゃないのか?
794デフォルトの名無しさん (アウアウカー Sac3-K37d)
2017/08/16(水) 22:53:28.23ID:DoB/Yq6sa795デフォルトの名無しさん (オッペケ Sr4d-o0Er)
2017/08/17(木) 06:21:37.08ID:5/l7qEpXr796デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/17(木) 08:34:41.30ID:CrDCSFke0 お前の過去とか知らんし、判ってる事なら修正版を出してはくれまいか
797デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/17(木) 17:22:04.13ID:im50xVqsa798デフォルトの名無しさん (ワッチョイ e14b-XaGt)
2017/08/17(木) 18:27:33.83ID:IrM4WgJo0 >>797
ありがとうございます。でもごっそりは重そうなので出来れば自作できればと。
ググるとこれが良さそうですが
Range("A1").Hyperlinks(1).Follow NewWindow:=True
例えばexcelシートにB2〜B101までurlの記載があり選択してctrl+sみたいな感じで自動実行
これを書き換えるにはどうすればいいでしょうか?
Set DataSheer = ActiveSheet
Dim i As Long, cnt As Long
For i = 1 To 100
cnt = cnt + 1
Cells(cnt, 1) = i
適当に拾ってきた物を書いてみましたアドバイスをお願いします
>>793
MSXML2.XMLHTTP の利用について教えて下さい。
1日500URLを寝る前に取得したいので出来れば動作は早い方がいいです。
ieを開かずにデータを取得できるんですよね
>>745
Set objIE = CreateObject("Internetexplorer.Application")
objIE.Visible = True
を変更でいけますか?
Set objIE = CreateObject("MSXML2.XMLHTTP")
objIE.Visible = False
ありがとうございます。でもごっそりは重そうなので出来れば自作できればと。
ググるとこれが良さそうですが
Range("A1").Hyperlinks(1).Follow NewWindow:=True
例えばexcelシートにB2〜B101までurlの記載があり選択してctrl+sみたいな感じで自動実行
これを書き換えるにはどうすればいいでしょうか?
Set DataSheer = ActiveSheet
Dim i As Long, cnt As Long
For i = 1 To 100
cnt = cnt + 1
Cells(cnt, 1) = i
適当に拾ってきた物を書いてみましたアドバイスをお願いします
>>793
MSXML2.XMLHTTP の利用について教えて下さい。
1日500URLを寝る前に取得したいので出来れば動作は早い方がいいです。
ieを開かずにデータを取得できるんですよね
>>745
Set objIE = CreateObject("Internetexplorer.Application")
objIE.Visible = True
を変更でいけますか?
Set objIE = CreateObject("MSXML2.XMLHTTP")
objIE.Visible = False
799デフォルトの名無しさん (ワッチョイ 93aa-jLVh)
2017/08/17(木) 21:06:10.14ID:wc7ZtjOc0800デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/17(木) 23:13:12.34ID:yWP51BMra >>798
そうじゃなくて、そのツールでとってこれるのは指定のURLのページがどういう構造になっているかという情報。
それが分かれば自分で組めるでしょという話。
500個のURLのページがみんな同じ構造なら取りあえず1つだけ構造を調べれば他は同じように組めるでしょ。
例えば君は9個のTRの内、1〜4を取りたいけど1だけしか成功して無いんだろ。
なぜ2〜4が取れないかを調べるのに使う。
取りたいデータに名前やクラス名がついてたらそれで取ってきた配列を使うし、無ければタグ名で取って来る。
タグ名ならその右にある番号から何個飛ばしで取れば良いとかを類推する。
MSXML2.XMLHTTPやMSHTML.HTMLDocumentは単純にInternetExplorer.Applicationを置き換えて使えるわけじゃない。
ソースを取ってきてそれをDOMDocumentに当て嵌めれば似たように使えるけど。
ところで、1日に500個のURLから情報取ってきて問題無いんだろうね。
岡崎図書館の例にもある通り、不正アクセスとして捕まるのを避けるために先方には確認してる?
そうじゃなくて、そのツールでとってこれるのは指定のURLのページがどういう構造になっているかという情報。
それが分かれば自分で組めるでしょという話。
500個のURLのページがみんな同じ構造なら取りあえず1つだけ構造を調べれば他は同じように組めるでしょ。
例えば君は9個のTRの内、1〜4を取りたいけど1だけしか成功して無いんだろ。
なぜ2〜4が取れないかを調べるのに使う。
取りたいデータに名前やクラス名がついてたらそれで取ってきた配列を使うし、無ければタグ名で取って来る。
タグ名ならその右にある番号から何個飛ばしで取れば良いとかを類推する。
MSXML2.XMLHTTPやMSHTML.HTMLDocumentは単純にInternetExplorer.Applicationを置き換えて使えるわけじゃない。
ソースを取ってきてそれをDOMDocumentに当て嵌めれば似たように使えるけど。
ところで、1日に500個のURLから情報取ってきて問題無いんだろうね。
岡崎図書館の例にもある通り、不正アクセスとして捕まるのを避けるために先方には確認してる?
801デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/17(木) 23:29:45.34ID:Fn2cTqwk0 ふだんプログラミングはExcelのVBAがほとんどでこれならかなり本格的なこともできるスキルがあります。
ところでJavascriptに興味を持ちメモ帳でJavascriptをはじめました。
これでExcelVBAのようにコード書くときにインテリセンスで入力補助ができるツールってないんですか?
メモ帳だから当然そんなのできません。
Javascriptの入門書はいつくか読んでますがExcelVBAのようなインテリセンスが使える開発環境のことには全くふれていません。
ところでJavascriptに興味を持ちメモ帳でJavascriptをはじめました。
これでExcelVBAのようにコード書くときにインテリセンスで入力補助ができるツールってないんですか?
メモ帳だから当然そんなのできません。
Javascriptの入門書はいつくか読んでますがExcelVBAのようなインテリセンスが使える開発環境のことには全くふれていません。
802デフォルトの名無しさん (ワッチョイ 196f-jLVh)
2017/08/18(金) 00:33:09.65ID:SqU1frnT0 JavaScriptスレでどうぞ
803デフォルトの名無しさん (オッペケ Sr4d-uth0)
2017/08/18(金) 00:52:10.12ID:fGYkVGPpr ふつーにVSでいいんじゃね?
804デフォルトの名無しさん (ワッチョイ dbaa-jLVh)
2017/08/18(金) 02:47:26.07ID:2Rkfa1Rx0 うむ
805デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/18(金) 06:08:15.32ID:Pl3jF8BM0 フリーのテキストエディタなんて腐るほど調べりゃ出てくるだろ
806デフォルトの名無しさん (オッペケ Sr4d-uth0)
2017/08/18(金) 06:32:04.53ID:fGYkVGPpr >>805
インテリセンスはどうすんの?
インテリセンスはどうすんの?
807801 (ワッチョイ 9352-jLVh)
2017/08/18(金) 06:47:56.97ID:r9Ad8ntQ0808デフォルトの名無しさん (ワッチョイ 5b6d-/TKy)
2017/08/18(金) 06:56:08.49ID:uergmdKS0 回答率が低い方で聞くのは時間の無駄では?
NGにするから何でもいいけど
NGにするから何でもいいけど
809デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/18(金) 07:07:24.51ID:k8zOSHbua810デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 07:14:13.91ID:r9Ad8ntQ0 なんだよ、ここじゃ教えてくれないのです?
811デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 07:15:23.14ID:r9Ad8ntQ0 / ̄ ̄ ̄ ̄ ̄\
/ \
/ ヽ
/ ̄\ l \,, ,,/ | そりゃないよ
,┤ ト | (●) (●) | かあちゃん!
| \_/ ヽ \___/ |
| __( ̄ | \/ ノ
ヽ___) ノ
/ \
/ ヽ
/ ̄\ l \,, ,,/ | そりゃないよ
,┤ ト | (●) (●) | かあちゃん!
| \_/ ヽ \___/ |
| __( ̄ | \/ ノ
ヽ___) ノ
812デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 07:17:18.70ID:r9Ad8ntQ0 >>809
VSは会社で気軽にインストールできないじゃん
VSは会社で気軽にインストールできないじゃん
813デフォルトの名無しさん (ワッチョイ 2ba2-jLVh)
2017/08/18(金) 07:28:46.83ID:sIEj8B6D0 必要なら出来るだろ
814デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/18(金) 07:30:00.10ID:k8zOSHbua TR取れないくんはgetElementByTagName("TR")は試したのかよ
815デフォルトの名無しさん (オッペケ Sr4d-uth0)
2017/08/18(金) 07:36:13.08ID:fGYkVGPpr >>812
そこなんだよ、問題は。
じゃ、テキストエディタは気軽にインスコできるのかっつーと、インテリセンス実現するためには、やれプラグインだなんだって追加する必要が出てくる。
ソフトのインストール申請は1回で済ませたいよね。
となると、なんだかんだでVSが最良の選択肢になる。
配布元がMSなのも安心だし。
HTMLやCSSも入力補完できるからね。
入れておくとめちゃ便利でっせ、旦那。
そこなんだよ、問題は。
じゃ、テキストエディタは気軽にインスコできるのかっつーと、インテリセンス実現するためには、やれプラグインだなんだって追加する必要が出てくる。
ソフトのインストール申請は1回で済ませたいよね。
となると、なんだかんだでVSが最良の選択肢になる。
配布元がMSなのも安心だし。
HTMLやCSSも入力補完できるからね。
入れておくとめちゃ便利でっせ、旦那。
816デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/18(金) 08:07:29.86ID:k8zOSHbua TeraPadは便利そうだけどvbscriptが標準でサポートされてないのがつらい
817デフォルトの名無しさん (アークセー Sx4d-2DR6)
2017/08/18(金) 08:21:16.51ID:6b7crCYjx Notepad++とか軽くていいぞ
申請通りやすいかどうかは分からんが
申請通りやすいかどうかは分からんが
818デフォルトの名無しさん (ワッチョイ 2baa-PF2c)
2017/08/18(金) 08:32:10.11ID:MkY1nhvU0 TeraPad は、サロゲートペア(4バイト文字)のような、
ユニコードに新しく採用された漢字は、? に変換されてしまう
中国の「深圳」みたいな漢字
ユニコードに新しく採用された漢字は、? に変換されてしまう
中国の「深圳」みたいな漢字
819デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/18(金) 08:34:34.23ID:Jk1oT0GC0 スレタイも読めない馬鹿はスルーで
820デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 09:27:19.77ID:r9Ad8ntQ0 >>819
こんな掲示板のルールは守る必要がない。
そもそも20年くらい前のインターネット創始期にリアル世界からバーチャル世界への人々の続々の初参加で
みんなが気軽に参加さえできればどこでもいい掲示板がたまたまここだっただけで
まるで自分のアイデアで発明して作り上げた掲示板と勘違いした管理人が有名になったことも利用して年収数億円にもなった
そんなずるいアホの作ったルールを守る必要あるか?
こんな掲示板のルールは守る必要がない。
そもそも20年くらい前のインターネット創始期にリアル世界からバーチャル世界への人々の続々の初参加で
みんなが気軽に参加さえできればどこでもいい掲示板がたまたまここだっただけで
まるで自分のアイデアで発明して作り上げた掲示板と勘違いした管理人が有名になったことも利用して年収数億円にもなった
そんなずるいアホの作ったルールを守る必要あるか?
821デフォルトの名無しさん (ワッチョイ 712d-jLVh)
2017/08/18(金) 09:32:23.59ID:vyx+pdak0 IDEがダメならVSCにすりゃ良いだろ
デバッグ機能使えるし、エディタ扱いだから軽い
デバッグ機能使えるし、エディタ扱いだから軽い
822デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 09:37:07.95ID:r9Ad8ntQ0823デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 09:39:00.89ID:r9Ad8ntQ0 あと最重要なことを忘れていた。
Excel VBAのF2で呼び出せるオブジェクトブラウザは上級者ならこの便利さは涙ものだと思うけど
これに相当するものはJavascriptでも使えるんですよね?
たいていのツールならJavascriptでのオブジェクトブラウザは見れる仕様になってるの?
Excel VBAのF2で呼び出せるオブジェクトブラウザは上級者ならこの便利さは涙ものだと思うけど
これに相当するものはJavascriptでも使えるんですよね?
たいていのツールならJavascriptでのオブジェクトブラウザは見れる仕様になってるの?
824デフォルトの名無しさん (ササクッテロロ Sp4d-wXqg)
2017/08/18(金) 09:39:54.13ID:AHP5pPkPp visual studio codeはフリーで商用利用も可能だったはず
825デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/18(金) 11:46:40.85ID:Jk1oT0GC0 >>820
ルール無用な俺格好いい!w
ルール無用な俺格好いい!w
826デフォルトの名無しさん (スッップ Sdb3-6IIt)
2017/08/18(金) 11:49:00.60ID:4NPjN4uFd VSCかー、使ってみようかな
今までVSとVBEでしかプログラム書いたことないや
今までVSとVBEでしかプログラム書いたことないや
827デフォルトの名無しさん (ワッチョイ ab6f-oL0b)
2017/08/18(金) 11:56:09.72ID:WOYUy8950828デフォルトの名無しさん (アークセー Sx4d-gUFl)
2017/08/18(金) 11:58:21.04ID:pqZlgJQex829デフォルトの名無しさん (オッペケ Sr4d-uth0)
2017/08/18(金) 12:26:45.40ID:fGYkVGPpr830デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 12:44:31.00ID:r9Ad8ntQ0 しかもそいつはYoutube動画のすべてのサムネイルで
自分のカバみたいなデカい顔を恥ずかしげもなくデカデカとのせてる。
https://www.youtube.com/channel/UCWlenAgH6lBO36CKiAQR6gQ/videos
これが許させるのはイケメンだけではないか?
勘違いもはなはだしい。
自分のカバみたいなデカい顔を恥ずかしげもなくデカデカとのせてる。
https://www.youtube.com/channel/UCWlenAgH6lBO36CKiAQR6gQ/videos
これが許させるのはイケメンだけではないか?
勘違いもはなはだしい。
831デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/18(金) 12:57:32.20ID:r9Ad8ntQ0 動画の内容も幼稚。
こんな低レベルのことしか考えれないのにしゃべるな!というレベル。
例えばプログラミングついての動画見てよ。
https://www.youtube.com/watch?v=N9Xl2m-GZwc
コピペが最良とか言ってて、こんなんやってたら共同作業でプログラングやってたらめちゃめちゃになる。
このレベルじゃデザインパターンとかリファクタリングのことを全く知らないしろうとだとわかる。
この人さっぱりプログラミングできないのは明らか。
言語の見解としてCOBOLはやる人がいないからチャンスかも、というのもそれは違うだろ。
こんな低レベルのことしか考えれないのにしゃべるな!というレベル。
例えばプログラミングついての動画見てよ。
https://www.youtube.com/watch?v=N9Xl2m-GZwc
コピペが最良とか言ってて、こんなんやってたら共同作業でプログラングやってたらめちゃめちゃになる。
このレベルじゃデザインパターンとかリファクタリングのことを全く知らないしろうとだとわかる。
この人さっぱりプログラミングできないのは明らか。
言語の見解としてCOBOLはやる人がいないからチャンスかも、というのもそれは違うだろ。
832デフォルトの名無しさん (ワッチョイ 196f-jLVh)
2017/08/18(金) 13:20:37.36ID:SqU1frnT0 はいはいかっこいい
833デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/18(金) 13:55:05.43ID:HoFsfG3Ua >>831
まあ、どうでも良いんだがjavascriptは詳しくないからなあ。
有用な回答が得られるかっていうと知らんということでjavascriptのスレよりは難しいんじゃないか?
ところでググることぐらいはしてるんだろうね。
OmniSharpが使えるエディタならなんでもいけるかも。
あと、マイナーかもしれんがScite4がいけるかも。
AutoItで使ってるからjavascriptはどの程度使えるかは分からんが。
まあ、どうでも良いんだがjavascriptは詳しくないからなあ。
有用な回答が得られるかっていうと知らんということでjavascriptのスレよりは難しいんじゃないか?
ところでググることぐらいはしてるんだろうね。
OmniSharpが使えるエディタならなんでもいけるかも。
あと、マイナーかもしれんがScite4がいけるかも。
AutoItで使ってるからjavascriptはどの程度使えるかは分からんが。
834デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/18(金) 14:04:26.04ID:HoFsfG3Ua >>814
うん、DOMの構造を調べて求めるデータがgetElementsByTagname("TR")の何番目なのかや、実際にはその子どもや孫の可能性もあるからその何番目かっていうのを簡易ツールで調べて欲しいんだがね。
テーブルの場合、連続した番号にならないことも多いから何個飛ばしかが分かれば取ってこれると思うんだけど。
うん、DOMの構造を調べて求めるデータがgetElementsByTagname("TR")の何番目なのかや、実際にはその子どもや孫の可能性もあるからその何番目かっていうのを簡易ツールで調べて欲しいんだがね。
テーブルの場合、連続した番号にならないことも多いから何個飛ばしかが分かれば取ってこれると思うんだけど。
835デフォルトの名無しさん (アークセー Sx4d-gUFl)
2017/08/18(金) 15:07:33.11ID:pqZlgJQex >>831
スゲー承認します
スゲー承認します
836デフォルトの名無しさん (ワッチョイ e14b-XaGt)
2017/08/18(金) 17:40:24.80ID:AdXlT0dS0 TR取れない君です
>>790に書いてますが取得は出来てます
3サイト程試したので理解は出来ているかと思います
昨日はcellに出力まで出来ました。
Set colTable = htmlDoc.getElementsByName("oppai")
Dim el As IHTMLElement
For Each el In colTable
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
i = 2
Cells(i, "B") = colTD(2).innerText
Cells(i, "C") = colTD(3).innerText
Cells(i, "D") = colTD(4).innerText
Next el
後はA列に記載のURLから順に情報を取得して上のcellに格納していくのと
MSXML2.XMLHTTPやMSHTML.HTMLDocument化です
A列に記載のURL(B2からB101)から順に情報を取得して上のcellに格納の
具体的なコードを教えて頂けないでしょうか
>>790に書いてますが取得は出来てます
3サイト程試したので理解は出来ているかと思います
昨日はcellに出力まで出来ました。
Set colTable = htmlDoc.getElementsByName("oppai")
Dim el As IHTMLElement
For Each el In colTable
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
i = 2
Cells(i, "B") = colTD(2).innerText
Cells(i, "C") = colTD(3).innerText
Cells(i, "D") = colTD(4).innerText
Next el
後はA列に記載のURLから順に情報を取得して上のcellに格納していくのと
MSXML2.XMLHTTPやMSHTML.HTMLDocument化です
A列に記載のURL(B2からB101)から順に情報を取得して上のcellに格納の
具体的なコードを教えて頂けないでしょうか
837デフォルトの名無しさん (ワッチョイ e14b-XaGt)
2017/08/18(金) 17:41:43.48ID:AdXlT0dS0 A2からA101の間違いです
838デフォルトの名無しさん (ワッチョイ 2baa-PF2c)
2017/08/18(金) 17:55:29.64ID:MkY1nhvU0 >>798
1つのドメインにつき、1日1回までにしておかないと、業務妨害で逮捕されるぞ。
同じサイトへ、しつこくアクセスするなよ
普通のサイトは、ツールでのアクセスは認めていないから
robots.txt に、検索エンジンのクローラー(ロボット)に対する、命令が書いてあって、
それに従わないアクセスは、業務妨害で逮捕される
1つのドメインにつき、1日1回までにしておかないと、業務妨害で逮捕されるぞ。
同じサイトへ、しつこくアクセスするなよ
普通のサイトは、ツールでのアクセスは認めていないから
robots.txt に、検索エンジンのクローラー(ロボット)に対する、命令が書いてあって、
それに従わないアクセスは、業務妨害で逮捕される
839デフォルトの名無しさん (ワッチョイ e14b-bEti)
2017/08/18(金) 20:31:07.04ID:AdXlT0dS0 >>838
えっ1日に2回サイトにアクセスすると逮捕って日本の法律?
じゃあスクリプト組んで商品買ってるやつみんな逮捕されてんの
コードの書き方書いてるやつやソフト屋も幇助で逮捕されてるんだ
ちなみに取りに行くの海外サイトなんだけど同じなの?
国際指名手配とかになると困るんだけど
えっ1日に2回サイトにアクセスすると逮捕って日本の法律?
じゃあスクリプト組んで商品買ってるやつみんな逮捕されてんの
コードの書き方書いてるやつやソフト屋も幇助で逮捕されてるんだ
ちなみに取りに行くの海外サイトなんだけど同じなの?
国際指名手配とかになると困るんだけど
840デフォルトの名無しさん (ワッチョイ 2b8f-jLVh)
2017/08/18(金) 20:35:27.71ID:50s8GsCc0 岡崎図書館アクセス事件か
841デフォルトの名無しさん (ワッチョイ 5b6d-9Vea)
2017/08/18(金) 20:42:49.44ID:uergmdKS0842デフォルトの名無しさん (ワッチョイ 932e-oL0b)
2017/08/18(金) 23:15:13.61ID:b4AgNHol0 >>840
> 岡崎図書館アクセス事件か
wikiを見てみると、1秒に1アクセスは「常識的で礼儀正しい」って世間の認識のようだね
男性の作成したクローラの動作
このクローラは、同時には一回しかリクエストを送らず、受信後に間隔をおいてから次のリクエストを送信していた
(1秒に1アクセス程度に調整)。これはクローラの動作としては「常識的」「礼儀正しい」程度のものであり、
応答を待たずに過大なアクセスを行うことで高負荷にさせる攻撃用のプログラムと異なる動作であった。
男性の業務妨害の強い意図が認められないとして起訴猶予処分となった
> 岡崎図書館アクセス事件か
wikiを見てみると、1秒に1アクセスは「常識的で礼儀正しい」って世間の認識のようだね
男性の作成したクローラの動作
このクローラは、同時には一回しかリクエストを送らず、受信後に間隔をおいてから次のリクエストを送信していた
(1秒に1アクセス程度に調整)。これはクローラの動作としては「常識的」「礼儀正しい」程度のものであり、
応答を待たずに過大なアクセスを行うことで高負荷にさせる攻撃用のプログラムと異なる動作であった。
男性の業務妨害の強い意図が認められないとして起訴猶予処分となった
843デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/18(金) 23:45:49.18ID:tsIqQuRu0844デフォルトの名無しさん (ワッチョイ ab4b-bEti)
2017/08/19(土) 00:40:39.77ID:vs90uVQG0845デフォルトの名無しさん (アウアウカー Sa1d-Xpxm)
2017/08/19(土) 04:41:34.88ID:lWDfsp6Na サーバーの性能、サイトやデータの構成、取得の目的とか書かないの?
846デフォルトの名無しさん (ワッチョイ 09cc-Ovym)
2017/08/19(土) 08:16:52.16ID:y9n8lCwp0 転売ヤーかなんかか?こいつ
847デフォルトの名無しさん (ワッチョイ 9306-JJVS)
2017/08/19(土) 09:53:56.58ID:OPyAj3On0 必要な情報は提供せず、こちらが知りたいことだけ教えろ!
これがこのスレの質問者のデフォ
これがこのスレの質問者のデフォ
848デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/19(土) 10:50:30.19ID:4AkL572wa849デフォルトの名無しさん (ワッチョイ 2baa-PF2c)
2017/08/19(土) 12:32:35.39ID:9KU7ntuJ0 岡崎図書館事件では、逮捕されている。
第三者機関である裁判所から、逮捕状も取れている
裁判所だから、警察などの行政執行機関じゃなくて、司法の判断で、ほぼ有罪になる。
単に、起訴猶予処分にしたというだけ
1秒に1回なら、アクセスしても無罪というのは、
無罪になるために、こういうのが常識ですよって広めただけで、
実際には、逮捕状も取れている
robots.txt に従っていないと、相手のサイトが訴えるのは自由だから、
各社の検索エンジンは、1日1回しかアクセスしない
第三者機関である裁判所から、逮捕状も取れている
裁判所だから、警察などの行政執行機関じゃなくて、司法の判断で、ほぼ有罪になる。
単に、起訴猶予処分にしたというだけ
1秒に1回なら、アクセスしても無罪というのは、
無罪になるために、こういうのが常識ですよって広めただけで、
実際には、逮捕状も取れている
robots.txt に従っていないと、相手のサイトが訴えるのは自由だから、
各社の検索エンジンは、1日1回しかアクセスしない
850デフォルトの名無しさん (ワッチョイ 5b6d-5Iur)
2017/08/19(土) 12:34:28.91ID:qVAbDdKi0 >>849
オンラインゲームでチート反対って言ってる人?
オンラインゲームでチート反対って言ってる人?
851デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 13:55:26.61ID:8yrvVjZy0852デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/19(土) 13:55:32.82ID:stRE+6ELa >>836
そこまで分かってて何で組めんの?
基本的な問題で躓いてるみたい。
君はどういう方針で組んでるの?
普通はそういうサンプル組めたらURLを変数に置き換えて、指定のURLを引数にして4つのデータを取得するプロシージャ作ると思うんだが。
Function Get4Data(strURL As String) As String()
Dim strData() String
.
.
.
Get4Data=strData
End Function
Sub MainProc()
Dim strData() As String
Dim i As Long
Dim j As Long
For i=2 To 102
strData=Get4Data(Cells(i,1).Value)
For j=0 To 2
Cells(i,j+2).Value=strData(j)
Next j
Next i
End Sub
4つのデータに意味を意識するならユーザー定義型を返すプロシージャにしてメインでは配列の利点を使わない。(jを使わない)
この辺は趣味の問題だと思うけど。
なお、スマホから打ってるからコードには間違いが有るかも。
そこまで分かってて何で組めんの?
基本的な問題で躓いてるみたい。
君はどういう方針で組んでるの?
普通はそういうサンプル組めたらURLを変数に置き換えて、指定のURLを引数にして4つのデータを取得するプロシージャ作ると思うんだが。
Function Get4Data(strURL As String) As String()
Dim strData() String
.
.
.
Get4Data=strData
End Function
Sub MainProc()
Dim strData() As String
Dim i As Long
Dim j As Long
For i=2 To 102
strData=Get4Data(Cells(i,1).Value)
For j=0 To 2
Cells(i,j+2).Value=strData(j)
Next j
Next i
End Sub
4つのデータに意味を意識するならユーザー定義型を返すプロシージャにしてメインでは配列の利点を使わない。(jを使わない)
この辺は趣味の問題だと思うけど。
なお、スマホから打ってるからコードには間違いが有るかも。
853デフォルトの名無しさん (ワッチョイ 2baa-PF2c)
2017/08/19(土) 13:57:02.56ID:9KU7ntuJ0 別に反対とは言わないけど、
相手のサイトが、業務妨害で訴えるのは自由だから、逮捕されるよってだけ
コンビニのアイスクリームのケースに入って、写真を撮っただけで逮捕されてる
被害額は、0円なのにw
気持ち悪くて、客に出せないから、アイスクリームを全部捨てましたって
相手は、何とでもできる。
無傷でも、被害額を請求できる
相手のサイトが、業務妨害で訴えるのは自由だから、逮捕されるよってだけ
コンビニのアイスクリームのケースに入って、写真を撮っただけで逮捕されてる
被害額は、0円なのにw
気持ち悪くて、客に出せないから、アイスクリームを全部捨てましたって
相手は、何とでもできる。
無傷でも、被害額を請求できる
854デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 14:07:36.79ID:8yrvVjZy0855デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/19(土) 14:16:21.11ID:stRE+6ELa 岡崎図書館の場合は図書館側に問題があって、プログラムでアクセスした時にそれが顕在化したということだったと思うが。
ただし、プログラムでのアクセスはサーバーをダウンさせることもあり得るわけでそれはアクセスの程度問題であるということ、過度なアクセスはサーバー側にとっては迷惑であるということ、不正アクセス防止法は意図しなくても問えるということは、留意する必要があるだろう。
要は無断でのアクセスは迷惑になるから気をつけてってこと。
そういう意識があって、でもそれほどアクセスが有るわけじゃ無いから連絡はしなくても良いだろうという判断ならそれもありじゃないかとも思う。
これが全く気にもせず、人のことはどうでも良いと考える人ならもう教えないし、プログラム組むのも辞めた方が良いと思う。
そういう人のプログラムって動けばOKの独りよがりプログラムになって周りが迷惑になりがちだから。
ただし、プログラムでのアクセスはサーバーをダウンさせることもあり得るわけでそれはアクセスの程度問題であるということ、過度なアクセスはサーバー側にとっては迷惑であるということ、不正アクセス防止法は意図しなくても問えるということは、留意する必要があるだろう。
要は無断でのアクセスは迷惑になるから気をつけてってこと。
そういう意識があって、でもそれほどアクセスが有るわけじゃ無いから連絡はしなくても良いだろうという判断ならそれもありじゃないかとも思う。
これが全く気にもせず、人のことはどうでも良いと考える人ならもう教えないし、プログラム組むのも辞めた方が良いと思う。
そういう人のプログラムって動けばOKの独りよがりプログラムになって周りが迷惑になりがちだから。
856デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 14:25:11.26ID:8yrvVjZy0 そのためのrobot.txtだし
857デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 14:25:27.42ID:8yrvVjZy0 s
858デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/19(土) 14:33:28.32ID:stRE+6ELa 仕事でWebから情報取って来るプログラムを作ったときは客にその旨を説明し、先方には実際のプログラムのソースコードと一緒にどういう手順でアクセスするかの説明を提示して貰った。
先方と言っても会社は違うけど客の会社の関連会社で情報取って来るプログラムもその会社関連の仕事の中の一部だったわけだけど。
先方が承諾することは分かってたけど一応報告すべきってことで。
>>839
そういうわけで手順を踏んで許可を取れば問題ないから幇助には当たらない。
先方と言っても会社は違うけど客の会社の関連会社で情報取って来るプログラムもその会社関連の仕事の中の一部だったわけだけど。
先方が承諾することは分かってたけど一応報告すべきってことで。
>>839
そういうわけで手順を踏んで許可を取れば問題ないから幇助には当たらない。
859デフォルトの名無しさん (ワッチョイ 93aa-jLVh)
2017/08/19(土) 15:26:44.64ID:s/7RraD70 無断でのアクセスって何のことだろう?
860デフォルトの名無しさん (JP 0Heb-oL0b)
2017/08/19(土) 15:56:14.31ID:qGabhzqpH 全部MDISのせい
Librahack氏はMDISに慰謝料を請求してもいいレベルだと思うね
Librahack氏はMDISに慰謝料を請求してもいいレベルだと思うね
861デフォルトの名無しさん (ワッチョイ 136c-/CPR)
2017/08/19(土) 16:13:25.46ID:YttHcr520 同じコードで実行してもできる時と反応がない時とあるんだけどなんで?
862デフォルトの名無しさん (オッペケ Sr4d-uth0)
2017/08/19(土) 16:51:19.94ID:8l5l37FKr863デフォルトの名無しさん (ワッチョイ 93aa-jLVh)
2017/08/19(土) 18:01:00.40ID:s/7RraD70 もうすぐ停電が起こる
864デフォルトの名無しさん (ワッチョイ 932e-oL0b)
2017/08/19(土) 18:37:05.55ID:lbryh9n10 >>849
> 1秒に1回なら、アクセスしても無罪というのは、
> 無罪になるために、こういうのが常識ですよって広めただけで、
> 実際には、逮捕状も取れている
不起訴になってるじゃん
前例ができたから、今後は逮捕されることもないでしょ
> 1秒に1回なら、アクセスしても無罪というのは、
> 無罪になるために、こういうのが常識ですよって広めただけで、
> 実際には、逮捕状も取れている
不起訴になってるじゃん
前例ができたから、今後は逮捕されることもないでしょ
865デフォルトの名無しさん (ワッチョイ 5b6d-bEg4)
2017/08/19(土) 18:47:22.47ID:qVAbDdKi0 岡崎図書館不起訴になったのか
じゃあ問題無しだな。一時間に一回ぐらいのクロールなら余裕だろう
じゃあ問題無しだな。一時間に一回ぐらいのクロールなら余裕だろう
866デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/19(土) 22:27:39.50ID:vZgN9gzSa867デフォルトの名無しさん (ワッチョイ 5991-7WL/)
2017/08/19(土) 22:32:40.39ID:+zJz2sC40868デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 23:39:23.73ID:8yrvVjZy0 >>861
ネット関係ではよくあると思うが
ネット関係ではよくあると思うが
869デフォルトの名無しさん (ワッチョイ 0971-JJVS)
2017/08/20(日) 05:28:39.28ID:C1zPHqEG0870デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/20(日) 08:32:07.00ID:1pFA1rOB0 被害額0円でも女子トイレに入っただけでも逮捕されることあるけどな
871デフォルトの名無しさん (ワッチョイ 710d-Jcyw)
2017/08/20(日) 09:23:54.53ID:B8YXLqYv0 >>861
コードが間違ってるから
コードが間違ってるから
872デフォルトの名無しさん (オイコラミネオ MM6b-DQO+)
2017/08/20(日) 10:22:38.45ID:fQYf1WJRM >>853
それが被害額ゼロ円だと思ってる時点でお察しだよ
それが被害額ゼロ円だと思ってる時点でお察しだよ
873デフォルトの名無しさん (ワッチョイ 1101-bEti)
2017/08/20(日) 11:34:29.55ID:xnxdM6Sy0 初心者ですいません。教えてほしいです。
シートが2枚あり、1枚目のシートの特定セルに「デリ」と入力後、
2枚目シートの特定セルにデリと入力されるのを作ってるのですが1枚目のC13のは反映されるのですが、C14以降が反映されません
ご教授お願いします
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
'デリがもし記載されていれば
If Cells(i, 3).Value = "デリ" Then
'デリが記載の名前をnameに代入
name = Cells(i, 3).Offset(0, 1).Value
'ワークシート(シフト)で、nameに代入されている名前の行数を取得
linenm = Application.Match(name, Worksheets("シフト").Range("A1:A60"), 0)
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
End If
End If
Next i
End Sub
シートが2枚あり、1枚目のシートの特定セルに「デリ」と入力後、
2枚目シートの特定セルにデリと入力されるのを作ってるのですが1枚目のC13のは反映されるのですが、C14以降が反映されません
ご教授お願いします
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
'デリがもし記載されていれば
If Cells(i, 3).Value = "デリ" Then
'デリが記載の名前をnameに代入
name = Cells(i, 3).Offset(0, 1).Value
'ワークシート(シフト)で、nameに代入されている名前の行数を取得
linenm = Application.Match(name, Worksheets("シフト").Range("A1:A60"), 0)
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
End If
End If
Next i
End Sub
874デフォルトの名無しさん (ワッチョイ 5b6d-5Iur)
2017/08/20(日) 13:16:25.67ID:hXI6dDhp0 >>873
ここがおかしい
targetがcells(14,3)だとループから即抜けて終わる
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
以下のように書き換える
…
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
こうすれば何をしているかわかりやすいと思う
ここがおかしい
targetがcells(14,3)だとループから即抜けて終わる
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
以下のように書き換える
…
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
こうすれば何をしているかわかりやすいと思う
875デフォルトの名無しさん (ワッチョイ 5b6d-5Iur)
2017/08/20(日) 13:17:04.87ID:hXI6dDhp0 で、更に言うと、スコープの関係でWorksheet_Changeから別シートは触れ無くないか?
以下はエラーになる気がする
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
以下のようにすると動くと思う
'worksheet1
Private Sub Worksheet_Change(ByVal target As Range)
'無限ループを抑制する
Application.EnableEvents = False
'この時点で選別する
If Intersect(target, Cells(i, 3)) Is Nothing Then
Exit Function
Else
'標準モジュールに投げる
foo (target)
End If
Application.EnableEvents = True
End Sub
'標準モジュールの内容
Function foo(ByVal target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
以下はエラーになる気がする
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
以下のようにすると動くと思う
'worksheet1
Private Sub Worksheet_Change(ByVal target As Range)
'無限ループを抑制する
Application.EnableEvents = False
'この時点で選別する
If Intersect(target, Cells(i, 3)) Is Nothing Then
Exit Function
Else
'標準モジュールに投げる
foo (target)
End If
Application.EnableEvents = True
End Sub
'標準モジュールの内容
Function foo(ByVal target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
876デフォルトの名無しさん (アウアウカー Sa1d-Enn5)
2017/08/20(日) 14:44:51.18ID:Qs6CySsIa >>875
874理解しました。
なるほどです。
外出中なので検証できませんが、
changeイベントはシート1の値を対象で
イベントが発生すればifを実行
ifでシート1にデリが記載されていれば
シート2にデリを入力
というのは不可能なんでしょうか、、
帰ったらやってみます。
874理解しました。
なるほどです。
外出中なので検証できませんが、
changeイベントはシート1の値を対象で
イベントが発生すればifを実行
ifでシート1にデリが記載されていれば
シート2にデリを入力
というのは不可能なんでしょうか、、
帰ったらやってみます。
877デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/20(日) 18:50:52.94ID:1pFA1rOB0 できるよね
Worksheets("シート2").Cells(linenm,2).Value = "デリ"
Worksheets("シート2").Cells(linenm,2).Value = "デリ"
878デフォルトの名無しさん (ワッチョイ 5b6d-SlN8)
2017/08/20(日) 18:56:54.50ID:hXI6dDhp0 すまんかった、普通に間違えてたわ
879デフォルトの名無しさん (ワッチョイ 1101-8l/3)
2017/08/20(日) 22:03:48.69ID:xnxdM6Sy0 >>878
今戻って書き直したら正常に動作しました。
ありがとうございます。
別件の質問なんですが、
worksheet_changeは
セルの値を削除した際には対応していないのでしょうか。
うまくいかない・・。
今戻って書き直したら正常に動作しました。
ありがとうございます。
別件の質問なんですが、
worksheet_changeは
セルの値を削除した際には対応していないのでしょうか。
うまくいかない・・。
880デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/20(日) 22:23:57.13ID:4PP/aROC0881デフォルトの名無しさん (ワッチョイ 5b6d-bEg4)
2017/08/20(日) 22:27:23.10ID:hXI6dDhp0 >>879
削除ってDELETEキーの事?
それとも行削除?
どっちにしても取得できたけど
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Row
End Sub
削除ってDELETEキーの事?
それとも行削除?
どっちにしても取得できたけど
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Row
End Sub
882デフォルトの名無しさん (ワッチョイ ab4b-ClLO)
2017/08/20(日) 22:32:57.93ID:ikiDo2Le0 >>846
余った金で買ってるですら時間かけれなくて基本放置メインの優待株なのにちまちま転売なんて時間ないですよ
休みは家族サービスしなきゃなんないし
暑いなかヨドバシ並んだり労力に合わないこと無理
>>845
いや初心者なんでほんと申し訳ないが相手のサーバーの性能とか構成とかどうやって調べるの?
知りたいしやり方具体的に教えてほしい
自分で貼ったコードは今は理解出来てるけど
初心者からすると3日前ならポカーン
正直debug→sellsなんて簡単な事すらわからないレベルが初心者ですw
>>852
ありがとうございます
変数の置き換え等がまさに知りたかった事です
改変出来るサイトが見つけられず完全にお手上げでした
お酒入ってるんで明日試してみます
質問ですが456行目の...はなにか入るかのでしょうか?それともこのままでしょうか?
tb3のみの取得の場合でもこれでいけるのでしょうか?
余った金で買ってるですら時間かけれなくて基本放置メインの優待株なのにちまちま転売なんて時間ないですよ
休みは家族サービスしなきゃなんないし
暑いなかヨドバシ並んだり労力に合わないこと無理
>>845
いや初心者なんでほんと申し訳ないが相手のサーバーの性能とか構成とかどうやって調べるの?
知りたいしやり方具体的に教えてほしい
自分で貼ったコードは今は理解出来てるけど
初心者からすると3日前ならポカーン
正直debug→sellsなんて簡単な事すらわからないレベルが初心者ですw
>>852
ありがとうございます
変数の置き換え等がまさに知りたかった事です
改変出来るサイトが見つけられず完全にお手上げでした
お酒入ってるんで明日試してみます
質問ですが456行目の...はなにか入るかのでしょうか?それともこのままでしょうか?
tb3のみの取得の場合でもこれでいけるのでしょうか?
883デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/21(月) 00:12:17.86ID:yLjCptZM0 >>879
おそらくその削除行為で↓のNothing が成り立って終わっている
>If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
おそらくその削除行為で↓のNothing が成り立って終わっている
>If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
884デフォルトの名無しさん (アウアウカー Sa1d-Enn5)
2017/08/21(月) 02:11:48.51ID:7jIbvv4Ra885デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 10:14:11.43ID:WASZaGRQ0 >>884
どう解決したか書けよハゲ
どう解決したか書けよハゲ
886デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 12:19:06.20ID:EyA7fO9yr すまぬ。助けてほしい。
シート上にActiveコントロールのボタン配置します。
なぜか、勝手に大きくなったりちいさくなったりして堪らん。
解決策ありますか?
別件でもうひとつ。
シート右クリックメニューにコマンド追加してます。(マクロで追加)
端末によって、改ページシート表示時なら、コマンド表示されるけど、標準表示時は標準されない。
何が原因ですかな。標準表示でだしたいの。
シート上にActiveコントロールのボタン配置します。
なぜか、勝手に大きくなったりちいさくなったりして堪らん。
解決策ありますか?
別件でもうひとつ。
シート右クリックメニューにコマンド追加してます。(マクロで追加)
端末によって、改ページシート表示時なら、コマンド表示されるけど、標準表示時は標準されない。
何が原因ですかな。標準表示でだしたいの。
887デフォルトの名無しさん (アウーイモ MM85-vD8I)
2017/08/21(月) 12:42:03.35ID:a8XpI6K5M >>886
後者に関しては
Cellって名前のCommandBarを取得して変更してると思うけど
改ページと標準で名前はどちらもCellだけど実体は別々のCommandBarだから
改ページの方だけしかメニュー追加できてないんだろう
ついこないだ自分も全く同じ現象にハマった
そのことも加味して作ってるサンプルググれば出てくるよ
出先だから細かいことは書けん
後者に関しては
Cellって名前のCommandBarを取得して変更してると思うけど
改ページと標準で名前はどちらもCellだけど実体は別々のCommandBarだから
改ページの方だけしかメニュー追加できてないんだろう
ついこないだ自分も全く同じ現象にハマった
そのことも加味して作ってるサンプルググれば出てくるよ
出先だから細かいことは書けん
888デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/21(月) 12:44:17.85ID:yLjCptZM0889デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 13:44:10.34ID:EyA7fO9yr >>887
たすかる。あとは、さがしてみるよ!
たすかる。あとは、さがしてみるよ!
890デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 13:46:53.82ID:EyA7fO9yr891デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/21(月) 14:35:20.65ID:yLjCptZM0892デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 14:42:45.59ID:EyA7fO9yr >>891
おう!。たすかります。
おう!。たすかります。
893デフォルトの名無しさん (ワッチョイ 5b6d-DBYK)
2017/08/21(月) 20:36:29.86ID:F/qAyFl80 変数のウォッチ式を見ていると、変数の中身が勝手に変わるという現象に遭遇しました
以下のコードのどこかに問題があると思います。問題を絞り込み切れませんでした
直前にIEで「メモリを使い切りました」というエラーが出た場合に起こる頻度が高い気がしています
(このマクロは、IEから落とした巨大なデータに対して処理をかけるものです)
PCをしばらく動かしてからマクロを走らせると、何度やっても
特売コード名 = ""
のところで勝手に変数が書き換わります
再起動直後には変わる事はありません
IEのエラーに原因があるのでしょうか?
また、他に見るべきところなどはあるのでしょうか
マクロの内容は
・マクロファイル自体はマクロだけです
・データファイルをopenし、フィルターを掛けて新ブックにコピー、保存
これを繰り返しています
コードは以下です
Set 特売コードリスト = ThisWorkbook.Worksheets("list")
リスト最終行 = 特売コードリスト.Cells(Rows.Count, 1).End(xlUp).Row 'この時点で変数「リスト最終行」にはdoubleの140が格納されている
'特売コードのタイトル設定
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
以下のコードのどこかに問題があると思います。問題を絞り込み切れませんでした
直前にIEで「メモリを使い切りました」というエラーが出た場合に起こる頻度が高い気がしています
(このマクロは、IEから落とした巨大なデータに対して処理をかけるものです)
PCをしばらく動かしてからマクロを走らせると、何度やっても
特売コード名 = ""
のところで勝手に変数が書き換わります
再起動直後には変わる事はありません
IEのエラーに原因があるのでしょうか?
また、他に見るべきところなどはあるのでしょうか
マクロの内容は
・マクロファイル自体はマクロだけです
・データファイルをopenし、フィルターを掛けて新ブックにコピー、保存
これを繰り返しています
コードは以下です
Set 特売コードリスト = ThisWorkbook.Worksheets("list")
リスト最終行 = 特売コードリスト.Cells(Rows.Count, 1).End(xlUp).Row 'この時点で変数「リスト最終行」にはdoubleの140が格納されている
'特売コードのタイトル設定
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
894デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 20:44:14.03ID:WASZaGRQ0895デフォルトの名無しさん (ワッチョイ 5b6d-DBYK)
2017/08/21(月) 20:48:40.29ID:F/qAyFl80 >>894
宣言は型も指定して、最初にまとめてしてます。
しかし宣言を削除しても変わりませんでした
代入は、していません。
ステップインで以下の行を実行すると、「リスト最終行」という全く関係ない変数の値が変わっています
可変変数かと思いましたが、一体何なんでしょうか
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
また、コードの最初に以下の高速化を入れていますが、関係あるでしょうか(もちろん最期に解除しています)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
宣言は型も指定して、最初にまとめてしてます。
しかし宣言を削除しても変わりませんでした
代入は、していません。
ステップインで以下の行を実行すると、「リスト最終行」という全く関係ない変数の値が変わっています
可変変数かと思いましたが、一体何なんでしょうか
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
また、コードの最初に以下の高速化を入れていますが、関係あるでしょうか(もちろん最期に解除しています)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
896デフォルトの名無しさん (ワッチョイ c191-wXqg)
2017/08/21(月) 21:01:33.61ID:UpqFzRYS0897デフォルトの名無しさん (ワッチョイ 5b6d-DBYK)
2017/08/21(月) 21:04:30.96ID:F/qAyFl80898デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 21:21:28.12ID:WASZaGRQ0899デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 21:23:33.08ID:WASZaGRQ0 個人的には最終列の取得方法が怪しいと見ているが
900デフォルトの名無しさん (ワッチョイ 5b6d-SlN8)
2017/08/21(月) 21:41:38.22ID:F/qAyFl80 >>898
参照みたいというのは、私も感じました
しかし本当にこの行だったのです
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります
何度やっても結果が参照だか可変変数だかコード内の改行「 _」にしか見えなかったのですが、絶対に違うのです
メモリが書き換えられているのか、ポインタがぶっ飛んでいるのが、そこまで調査する能力はありません
同僚に「顔青白いけど大丈夫か!?」と言われました。
明日もう一度試してみます
参照みたいというのは、私も感じました
しかし本当にこの行だったのです
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります
何度やっても結果が参照だか可変変数だかコード内の改行「 _」にしか見えなかったのですが、絶対に違うのです
メモリが書き換えられているのか、ポインタがぶっ飛んでいるのが、そこまで調査する能力はありません
同僚に「顔青白いけど大丈夫か!?」と言われました。
明日もう一度試してみます
901デフォルトの名無しさん (ワッチョイ 5b6d-SlN8)
2017/08/21(月) 21:43:58.48ID:F/qAyFl80902デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 22:46:20.73ID:WASZaGRQ0903デフォルトの名無しさん (ワッチョイ 5b6d-bEg4)
2017/08/21(月) 22:55:53.80ID:F/qAyFl80 >>902
プロンプトでデータファイルを指定し、開いた直後に最終行列を取得しています
もちろんこの際にキャンセルなどの処理は行っておらず、普通に選択しています
若干うろ覚えですが、以下のはずです
'dataファイルを指定
Set data = Workbooks.Open(Application.GetOpenFilename("Microsoft Excelブック,*.xls?"))
'最終行列
最終行 = data.sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
最終列 = data.sheets(1).Cells(ヘッダ行数, Columns.Count).End(xlToLeft).Column
プロンプトでデータファイルを指定し、開いた直後に最終行列を取得しています
もちろんこの際にキャンセルなどの処理は行っておらず、普通に選択しています
若干うろ覚えですが、以下のはずです
'dataファイルを指定
Set data = Workbooks.Open(Application.GetOpenFilename("Microsoft Excelブック,*.xls?"))
'最終行列
最終行 = data.sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
最終列 = data.sheets(1).Cells(ヘッダ行数, Columns.Count).End(xlToLeft).Column
904デフォルトの名無しさん (ワッチョイ 2ba2-jLVh)
2017/08/21(月) 23:16:57.21ID:AMZKW1PT0 わざと宣言をIntegerに変えてエラーが出ないかどうか
905デフォルトの名無しさん (ワッチョイ 2ba2-jLVh)
2017/08/21(月) 23:24:15.17ID:AMZKW1PT0 宣言を削除しても、ってことは Option Explicit はなし?
Dim 最終行, 最終列 As Long
のように最後だけに As ○○ ってしてないか?
Dim 最終行, 最終列 As Long
のように最後だけに As ○○ ってしてないか?
906デフォルトの名無しさん (ワッチョイ 5b6d-13hs)
2017/08/21(月) 23:38:13.41ID:F/qAyFl80 >>905
>宣言を削除しても、ってことは Option Explicit はなし?
そのあたり纏めてです
>Dim 最終行, 最終列 As Long
それもないです、というか宣言あてもなくても変わりません
>宣言を削除しても、ってことは Option Explicit はなし?
そのあたり纏めてです
>Dim 最終行, 最終列 As Long
それもないです、というか宣言あてもなくても変わりません
907デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/22(火) 02:30:22.28ID:UcqKMUBs0 日本語の変数名ってどうなのかな
仮に全角の空白がコード中にあると見つけるのは厄介なんだよね
仮に全角の空白がコード中にあると見つけるのは厄介なんだよね
908デフォルトの名無しさん (ワッチョイ c191-wXqg)
2017/08/22(火) 07:30:25.87ID:IrcFtIiG0909デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/22(火) 08:46:12.95ID:efKhXBAh0 変数名が日本語なのがバグの原因、に100ペリカ
910デフォルトの名無しさん (スップ Sdb3-6IIt)
2017/08/22(火) 11:48:53.83ID:EWbmYfD4d たまにしか日本語使わないがそんなことでトラブったことはないな
911デフォルトの名無しさん (ワントンキン MMd3-yDuE)
2017/08/22(火) 13:57:55.46ID:bO04JkUdM ie制御系の本てあんまりないよね。ネットでちまちま調べながらやってるけどエラーがおこってその原因を調べるのも一苦労。数百回のループの中で99%成功一度だけエラーとか読み込み関係だと思うんだけど、こうすれば絶対防げるとかあるんかね。
912デフォルトの名無しさん (JP 0Heb-oL0b)
2017/08/22(火) 14:17:54.96ID:BcNwm5wtH913デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/22(火) 14:32:57.14ID:3oFcm+Eea 変数が日本語で不具合でたことはないな
怪しいのは、変数の方をちゃんと指定してないんじゃないかなってとこ
最初の方でdoubleが入ってるって言ってたよね
〜.Columnの参照持ってきちゃってるとかね
longで型指定してみたら
怪しいのは、変数の方をちゃんと指定してないんじゃないかなってとこ
最初の方でdoubleが入ってるって言ってたよね
〜.Columnの参照持ってきちゃってるとかね
longで型指定してみたら
914デフォルトの名無しさん (ワントンキン MMd3-yDuE)
2017/08/22(火) 14:52:26.20ID:bO04JkUdM >>912
エクセルから値をコピー→会社のシステム(ie)のテキストボックスにペースト→サーチボタン押す→チェックボックス押す→リストボックスから選ぶ→決定ボタン押す
てのを毎日数百件。
こんなのはスクリプトでも手作業でもなく、エクセルアップロードして終わりとかにして欲しいんだけど。
エクセルから値をコピー→会社のシステム(ie)のテキストボックスにペースト→サーチボタン押す→チェックボックス押す→リストボックスから選ぶ→決定ボタン押す
てのを毎日数百件。
こんなのはスクリプトでも手作業でもなく、エクセルアップロードして終わりとかにして欲しいんだけど。
915デフォルトの名無しさん (ワッチョイ 993d-JJVS)
2017/08/22(火) 15:03:25.63ID:X7Tz7Bl60 >>914
ブラウザ側で、jsとか使ってcsv読み込めるようにした方が早そう
ブラウザ側で、jsとか使ってcsv読み込めるようにした方が早そう
916デフォルトの名無しさん (JP 0Heb-oL0b)
2017/08/22(火) 15:31:32.03ID:BcNwm5wtH917デフォルトの名無しさん (ワッチョイ 5b6d-jLVh)
2017/08/22(火) 19:14:59.94ID:mRcKPRVe0 ブラウザのコンソール使えばサイト変更せずに何でもできるよな
あれすげー好き
あれすげー好き
918デフォルトの名無しさん (アウアウウー Sa85-c2A1)
2017/08/22(火) 19:32:43.17ID:j7l9pWc0a919デフォルトの名無しさん (アウアウウー Sa85-c2A1)
2017/08/22(火) 19:53:03.47ID:j7l9pWc0a >>836
とりあえず、>>745と合わせてプログラムを類推して、ツッコミどころを順々に修正しながら8つのパターンで組んでみた。
たぶん、5つ目のサンプルでB2からB101まで取得データを書き込めると思う。
ただし、実際にはTHタグが何個あるかわからないのでIE上でF12キーを押して問題のテーブルを表示させてTHが何個あるかを確認して修正すること。
現在のプログラムはTHが3個、TDの2番目からデータを取得する前提で組んでいる。
(0始まりでTHは0、1、2なのでTDの2番目は全体で4番目)
https://pastebin.com/3sBqwsN9
とりあえず、>>745と合わせてプログラムを類推して、ツッコミどころを順々に修正しながら8つのパターンで組んでみた。
たぶん、5つ目のサンプルでB2からB101まで取得データを書き込めると思う。
ただし、実際にはTHタグが何個あるかわからないのでIE上でF12キーを押して問題のテーブルを表示させてTHが何個あるかを確認して修正すること。
現在のプログラムはTHが3個、TDの2番目からデータを取得する前提で組んでいる。
(0始まりでTHは0、1、2なのでTDの2番目は全体で4番目)
https://pastebin.com/3sBqwsN9
920デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/22(火) 19:59:15.08ID:Gbnbr+eX0921デフォルトの名無しさん (アウアウウー Sa85-c2A1)
2017/08/22(火) 20:14:43.78ID:j7l9pWc0a >>893
コード示してあるけど、変数宣言部分が無く、また変数名から変数の型も類推できない。
これでは変数がどうなっているのかわからない。
変数に日本語使うのは自分ならしないけど、それよりも変数名から型が分からないのはほかの人も困らないか?
特売コード名=""のところと書いてあるが、デバッグ時に黄色になっているのはその次の行?
この行が黄色になっているならその前の行の実行でリスト最終行が変化したことになる。
下に変更してDebug.Print Typename(特売コード名)のところにプレークポイント置いて実行してみるとか。
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード=123
Debug.Print リスト最終行
特売コード名="ABC"
Debug.Print リスト最終行
Debug.Print Typename(リスト最終行)
Debug.Print Typename(特売コード)
Debug.Print Typename(特売コード名)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
コード示してあるけど、変数宣言部分が無く、また変数名から変数の型も類推できない。
これでは変数がどうなっているのかわからない。
変数に日本語使うのは自分ならしないけど、それよりも変数名から型が分からないのはほかの人も困らないか?
特売コード名=""のところと書いてあるが、デバッグ時に黄色になっているのはその次の行?
この行が黄色になっているならその前の行の実行でリスト最終行が変化したことになる。
下に変更してDebug.Print Typename(特売コード名)のところにプレークポイント置いて実行してみるとか。
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード=123
Debug.Print リスト最終行
特売コード名="ABC"
Debug.Print リスト最終行
Debug.Print Typename(リスト最終行)
Debug.Print Typename(特売コード)
Debug.Print Typename(特売コード名)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
922デフォルトの名無しさん (ワッチョイ 130f-yDuE)
2017/08/22(火) 20:24:31.59ID:fju/pSre0923デフォルトの名無しさん (ワッチョイ 130f-yDuE)
2017/08/22(火) 20:35:39.11ID:fju/pSre0924デフォルトの名無しさん (ワッチョイ 1311-slju)
2017/08/22(火) 20:57:35.78ID:1JK3C2LQ0 ExcelからIEを操作せずにバッチスクリプトでcURLやWgetみたいなHTTPクライアントを使ったらいいと思うけど
外部ネットワークにアクセスできなくて追加インストールもできないとなるといろいろ詰んでるね
Powershellが使えるならそれほど苦労せずスクリプト化できるよ
https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest
外部ネットワークにアクセスできなくて追加インストールもできないとなるといろいろ詰んでるね
Powershellが使えるならそれほど苦労せずスクリプト化できるよ
https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest
925デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/22(火) 20:59:25.09ID:yhGjK5+g0 >>923
なるほど。
うちの職場も無駄な作業が多いけどみんな疑問をいだかないことに対してなんてアホの集団なんだろうと思ってたけど
「プログラミング的な知識が無いとやり方に疑問を持てない」のが原因だったか。
これで疑問が氷解した。
あと1つこの職場で学んだことだが
せっかく自分が自動化するVBAのツールをつくって何人かにそのツールをあげても「使ってくれない」。
これは便利なのが嫌い」なのではなくて「自分が作ったツールじゃないからなにをしているかがさっぱりわからないから怖くて使えない」からだということだ。
なるほど。
うちの職場も無駄な作業が多いけどみんな疑問をいだかないことに対してなんてアホの集団なんだろうと思ってたけど
「プログラミング的な知識が無いとやり方に疑問を持てない」のが原因だったか。
これで疑問が氷解した。
あと1つこの職場で学んだことだが
せっかく自分が自動化するVBAのツールをつくって何人かにそのツールをあげても「使ってくれない」。
これは便利なのが嫌い」なのではなくて「自分が作ったツールじゃないからなにをしているかがさっぱりわからないから怖くて使えない」からだということだ。
926デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/22(火) 21:01:25.05ID:yhGjK5+g0 だから完全なるアホの集団ではないのかもしれないが、やっぱりアホの集団にはかわらない。
そんな周りの人たちの心理がわかる自分は天才だということだ。
そんな周りの人たちの心理がわかる自分は天才だということだ。
927デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/22(火) 21:39:28.52ID:RSpbi9dUa >>922
クリップボードとかSendkeysとか使って無いだろうな?
特にSendkeysは危険。
絶対使うべきじゃない。
分かって使うなら良いけど。
あと、Domを使ってるならクリック時にsubmitでなくClick使ってる場合は注意。
submitは送受信前提だから直後はIEがBusyになるけど、Clickは送受信前提じゃないから(と俺は思ってるけど別の理由かも)いっぱく置いてBusyになることがある。
つまり、Busyチェック時にはかからず、チェック抜けてからBusyになることがある。
俺の場合はClickの時だけチェック前に300msくらいSleepしておく。
クリップボードとかSendkeysとか使って無いだろうな?
特にSendkeysは危険。
絶対使うべきじゃない。
分かって使うなら良いけど。
あと、Domを使ってるならクリック時にsubmitでなくClick使ってる場合は注意。
submitは送受信前提だから直後はIEがBusyになるけど、Clickは送受信前提じゃないから(と俺は思ってるけど別の理由かも)いっぱく置いてBusyになることがある。
つまり、Busyチェック時にはかからず、チェック抜けてからBusyになることがある。
俺の場合はClickの時だけチェック前に300msくらいSleepしておく。
928デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/22(火) 22:07:32.73ID:Gbnbr+eX0929デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/22(火) 22:56:13.57ID:3iMCLjz4a >>928
そのページの作りによる部分は有るからね。
submitでさえSleep入れる必要があるかもしれない。
遷移した後で少し待ってからさらに遷移する場合とかもあるし、どうしてもそのページに合わせる部分は有るでしょう。
そのページの作りによる部分は有るからね。
submitでさえSleep入れる必要があるかもしれない。
遷移した後で少し待ってからさらに遷移する場合とかもあるし、どうしてもそのページに合わせる部分は有るでしょう。
930デフォルトの名無しさん (ワッチョイ ab4b-bEti)
2017/08/22(火) 22:57:24.09ID:vl5o4wqs0 >>919
凄く作り方の参考になるし完璧な説明です
ありがとうございます。
<TABLE>
<TR>
<TH>Title1</TH>
<TD>DATA1</TD>
</TR>
<TR>
<TH>Title2</TH>
<TD>DATA2</TD> 取得すべき最初のデータ
</TR>
<TR>
<TH>Title3</TH>
<TD>DATA3</TD> 取得すべき2番目のデータ
</TR>
.
.
.
<TR>
<TH>Title9</TH>
<TD>DATA9</TD>
</TR>
</TABLE>
-------------------------------------------
この構造の場合、下記はどのようになるのでしょうか?
TABLE群 -> colTable(0)
TR群 -> colTable(0).childNodes
TH群 -> colTable(0).childNodes.Item(0).childNodes(0番目〜2番目)
TD群 -> colTable(0).childNodes.Item(0).childNodes(3番目〜11番目)
凄く作り方の参考になるし完璧な説明です
ありがとうございます。
<TABLE>
<TR>
<TH>Title1</TH>
<TD>DATA1</TD>
</TR>
<TR>
<TH>Title2</TH>
<TD>DATA2</TD> 取得すべき最初のデータ
</TR>
<TR>
<TH>Title3</TH>
<TD>DATA3</TD> 取得すべき2番目のデータ
</TR>
.
.
.
<TR>
<TH>Title9</TH>
<TD>DATA9</TD>
</TR>
</TABLE>
-------------------------------------------
この構造の場合、下記はどのようになるのでしょうか?
TABLE群 -> colTable(0)
TR群 -> colTable(0).childNodes
TH群 -> colTable(0).childNodes.Item(0).childNodes(0番目〜2番目)
TD群 -> colTable(0).childNodes.Item(0).childNodes(3番目〜11番目)
931デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/23(水) 00:05:41.99ID:FdVTMyW1a >>930
その場合は複数のTRがTABLEから見て子どもでしょ。
だからTRは最初のchildNodes.Item()の括弧の中が2番目からカウントアップ。
で、TDはそれぞれのTR内で常に2番目なのでchildNodes.Item(カウントアップ).childNodes.Item()の括弧の中は2番目。
各番目は0始まりだから2番目ってことは1ってことね。
この場合はcolTRも使わない。(Set colTR =で始まる文がいらない。)
Cells(i, 2).Value = colTable(0).childNodes.Item(1).childNodes.Item(1).innerText
Cells(i, 3).Value = colTable(0).childNodes.Item(2).childNodes.Item(1).InnerText
Cells(i, 4).Value = colTable(0).childNodes.Item(3).childNodes.Item(1).innerText
多分、こんな感じ。
その場合は複数のTRがTABLEから見て子どもでしょ。
だからTRは最初のchildNodes.Item()の括弧の中が2番目からカウントアップ。
で、TDはそれぞれのTR内で常に2番目なのでchildNodes.Item(カウントアップ).childNodes.Item()の括弧の中は2番目。
各番目は0始まりだから2番目ってことは1ってことね。
この場合はcolTRも使わない。(Set colTR =で始まる文がいらない。)
Cells(i, 2).Value = colTable(0).childNodes.Item(1).childNodes.Item(1).innerText
Cells(i, 3).Value = colTable(0).childNodes.Item(2).childNodes.Item(1).InnerText
Cells(i, 4).Value = colTable(0).childNodes.Item(3).childNodes.Item(1).innerText
多分、こんな感じ。
932デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 08:10:00.16ID:EgpJbwY2a 全くの素人です
質問させてください
A1=1の場合タブの色を赤
A1=2の場合タブの色を青
としたくて
A1にはsum関数で数式を組んでるんだが1や2になっても反映されない
手入力で数値を入れるかセルをダブルクリックしてエンターを押すと反映される
何故でしょうか。
質問させてください
A1=1の場合タブの色を赤
A1=2の場合タブの色を青
としたくて
A1にはsum関数で数式を組んでるんだが1や2になっても反映されない
手入力で数値を入れるかセルをダブルクリックしてエンターを押すと反映される
何故でしょうか。
933デフォルトの名無しさん (ワッチョイ 5b6d-jLVh)
2017/08/23(水) 08:11:08.70ID:OKqU/Ui90 >>932
実際に何をやったの?
実際に何をやったの?
934デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/23(水) 08:15:41.26ID:RC4smTF3a935デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 08:18:48.53ID:EgpJbwY2a コードは
private sub worksheet_change(ByVal
target as range)
If target.address〈〉"A1" then exit sub
If Target = "1" then Activesheet.Tab.ColorIndex = 9
If Target = "2" then Activesheet.Tab.ColorIndex = 3
End Sub
初心者ですのでここはこうした方がいいなどアドバイスいただけると幸いです
private sub worksheet_change(ByVal
target as range)
If target.address〈〉"A1" then exit sub
If Target = "1" then Activesheet.Tab.ColorIndex = 9
If Target = "2" then Activesheet.Tab.ColorIndex = 3
End Sub
初心者ですのでここはこうした方がいいなどアドバイスいただけると幸いです
936デフォルトの名無しさん (ワッチョイ 5b6d-9Vea)
2017/08/23(水) 08:29:58.52ID:OKqU/Ui90 >>935
エラーになる
エラーになる
937デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 08:33:36.33ID:EgpJbwY2a >>934
シートのタブ色変更なんですが条件付き書式でできますか?
シートのタブ色変更なんですが条件付き書式でできますか?
938デフォルトの名無しさん (ワッチョイ 5b6d-9Vea)
2017/08/23(水) 08:36:18.74ID:OKqU/Ui90939デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/23(水) 08:47:09.36ID:13NrMZgc0 >>925
それはお前が信用されてないからでわw
それはお前が信用されてないからでわw
940デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/23(水) 08:49:04.48ID:13NrMZgc0 >>937
条件付き「書式」なんだから、そういう事をするための物だよ
条件付き「書式」なんだから、そういう事をするための物だよ
941デフォルトの名無しさん (ワッチョイ e1f2-bPth)
2017/08/23(水) 09:21:19.41ID:+0TvjQ0a0 >>935
"1"と"2"の両脇の"外したら動かないか?
"1"と"2"の両脇の"外したら動かないか?
942デフォルトの名無しさん (アウアウカー Sa1d-Xpxm)
2017/08/23(水) 10:06:33.42ID:zci6CT9Ca >>935
色が変わったあとに1,2以外が入っても戻らない
色が変わったあとに1,2以外が入っても戻らない
943デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 10:15:50.03ID:EgpJbwY2a >>940
ご教示下さい
ご教示下さい
944デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 10:23:11.79ID:EgpJbwY2a >>941
動きませんでした
動きませんでした
945デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 10:24:44.20ID:EgpJbwY2a >>942
A1の数字は一定期間ごとに変化するんですがそれには対応できないということになりますか?
A1の数字は一定期間ごとに変化するんですがそれには対応できないということになりますか?
946デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/23(水) 10:47:29.53ID:N2QxNW8Oa >>937
ごめんタブか
ごめんタブか
947デフォルトの名無しさん (ワッチョイ 5991-7WL/)
2017/08/23(水) 11:13:45.38ID:yxvWLKA00 >>935
そもそも
Target.addressって絶対参照が返ってくるんじゃなかったっけ?
でもそれなら手入力でも反映されない気がするなぁ
あと、たとえばB1のセルを変更してA1の計算結果が変わったとしても
A1の数式を変更したわけじゃないから
targetにはB1が渡されるだけじゃない?
全部予想ですまん
そもそも
Target.addressって絶対参照が返ってくるんじゃなかったっけ?
でもそれなら手入力でも反映されない気がするなぁ
あと、たとえばB1のセルを変更してA1の計算結果が変わったとしても
A1の数式を変更したわけじゃないから
targetにはB1が渡されるだけじゃない?
全部予想ですまん
948デフォルトの名無しさん (ワッチョイ 93b6-jLVh)
2017/08/23(水) 12:01:09.88ID:QSg8qhxn0 >>935
Worksheet.Change イベント (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff839775.aspx
>セルが再計算時に変更されると、このイベントは発生しません。シートの再計算をトラップするには、Calculate イベントを使用します。
Worksheet.Change イベント (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff839775.aspx
>セルが再計算時に変更されると、このイベントは発生しません。シートの再計算をトラップするには、Calculate イベントを使用します。
949デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 13:56:51.41ID:EgpJbwY2a950デフォルトの名無しさん (ドコグロ MMb3-x4Vn)
2017/08/23(水) 18:51:26.23ID:Rd2CDMDCM A1セルの数式を変えていいならユーザー定義関数でできる
例えばA1に=Sum(B1:B2)と定義してるなら標準モジュールに
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case R
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = R
End Function
を定義してA1セルを=XXX(B1:B2)に書き換えればいい
例えばA1に=Sum(B1:B2)と定義してるなら標準モジュールに
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case R
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = R
End Function
を定義してA1セルを=XXX(B1:B2)に書き換えればいい
951950 (ドコグロ MMb3-x4Vn)
2017/08/23(水) 18:54:14.54ID:Rd2CDMDCM すまんちょっと間違えてたわ
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case Result
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = Result
End Function
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case Result
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = Result
End Function
952デフォルトの名無しさん (ワッチョイ ed6f-2x4P)
2017/08/24(木) 01:43:32.58ID:gFPKAoW/0 >>935
ちなみに<> を半角にして、"A1" を "$A$1" にしたら変わったぞ
ちなみに<> を半角にして、"A1" を "$A$1" にしたら変わったぞ
953952 (ワッチョイ ed6f-2x4P)
2017/08/24(木) 02:23:07.38ID:gFPKAoW/0 >>935
もしA1に=SUM(B1:B2) ってなっているなら
If Cells(1, 1) = "1" Then ActiveSheet.Tab.ColorIndex = 9
If Cells(1, 1) = "2" Then ActiveSheet.Tab.ColorIndex = 3
これだけでいけた Target は変更(入力)した場所が入っているから
もしA1に=SUM(B1:B2) ってなっているなら
If Cells(1, 1) = "1" Then ActiveSheet.Tab.ColorIndex = 9
If Cells(1, 1) = "2" Then ActiveSheet.Tab.ColorIndex = 3
これだけでいけた Target は変更(入力)した場所が入っているから
954デフォルトの名無しさん (ワッチョイ 86a2-vgeI)
2017/08/24(木) 05:57:45.02ID:H9WPuZGK0 SUMとしか言ってないので後だしっぽいが
=SUM(Sheet2!B1:B2)は考えなくていいかな
=SUM(Sheet2!B1:B2)は考えなくていいかな
955デフォルトの名無しさん (ワッチョイ c66f-2x4P)
2017/08/24(木) 21:45:58.84ID:fiG1XOAx0956デフォルトの名無しさん (ワッチョイ 86a2-vgeI)
2017/08/24(木) 22:13:24.34ID:H9WPuZGK0 そのツールでやってるのは上司も知ってる?
それでも使わない?
何かあれば責任の所在は明らかなのに
それでも使わない?
何かあれば責任の所在は明らかなのに
957デフォルトの名無しさん (ワッチョイ 29aa-vgeI)
2017/08/24(木) 23:00:01.92ID:q91vBAgZ0 ADOでエクセル上にあるテーブルに接続していますが、
テキストデータを追加したり、更新したりすると先頭にシングルクォテーションが付いてしまいます。
これは仕様だと思いますが、付かないようにする方法ないでしょうか?
後から消すって方法は無しでお願いします。
テキストデータを追加したり、更新したりすると先頭にシングルクォテーションが付いてしまいます。
これは仕様だと思いますが、付かないようにする方法ないでしょうか?
後から消すって方法は無しでお願いします。
958デフォルトの名無しさん (オッペケ Sr6d-d2qD)
2017/08/25(金) 01:43:07.95ID:KTLmtMM0r >>914
> エクセルアップロードして終わりとかにして欲しいんだけど。
システムへの大量レコードのアップロードって、ミスした時が大変なのよ。
アップロードするファイルを間違えたりするやつが必ずいるから。
場合によっては、システムを停めて修正しなければならなくなる。
なので、コピペによる数百件の手入力は言わば安全策。
派遣スタッフが多い職場でありがちだよね。
というわけで、手入力作業をIE制御で自動で行うツールはどうしても必要になるんだけど、エラートラップ(例外処理)をきちんと作り込まないと逆に使いづらくなるので要注意。
> エクセルアップロードして終わりとかにして欲しいんだけど。
システムへの大量レコードのアップロードって、ミスした時が大変なのよ。
アップロードするファイルを間違えたりするやつが必ずいるから。
場合によっては、システムを停めて修正しなければならなくなる。
なので、コピペによる数百件の手入力は言わば安全策。
派遣スタッフが多い職場でありがちだよね。
というわけで、手入力作業をIE制御で自動で行うツールはどうしても必要になるんだけど、エラートラップ(例外処理)をきちんと作り込まないと逆に使いづらくなるので要注意。
959デフォルトの名無しさん (ワッチョイ ed6f-2x4P)
2017/08/25(金) 02:02:02.49ID:jgB7N/LP0 >>957
コードは?
コードは?
960デフォルトの名無しさん (ワッチョイ ad23-FM7+)
2017/08/25(金) 06:46:28.19ID:eH4j8CdN0 >>957
元データに入ってる、というオチではない?
元データに入ってる、というオチではない?
961デフォルトの名無しさん (ドコグロ MM72-+ULf)
2017/08/25(金) 07:59:18.90ID:s9vD7wq8M962デフォルトの名無しさん (アウアウカー Sa85-1rYb)
2017/08/25(金) 08:16:24.76ID:fNT5yRt6a 大量のデータをエクセルでやるのに無理がある
963デフォルトの名無しさん (ワッチョイ 5973-wCej)
2017/08/25(金) 08:39:54.31ID:ZY8b+JLd0964デフォルトの名無しさん (スップ Sdea-U5o/)
2017/08/25(金) 11:34:23.91ID:9EHfqskZd965デフォルトの名無しさん (アウアウカー Sa85-HXRX)
2017/08/25(金) 12:46:59.96ID:4kzNGnM2a966デフォルトの名無しさん (アウアウカー Sa85-HXRX)
2017/08/25(金) 12:55:04.81ID:4kzNGnM2a >>958
それはそういうシステム作った奴が悪い。
いくらでも規定のフォーマットじゃなければ受け付けないシステムは作れるだろ。
CSVなんかでもカンマ区切りじゃなくて普通ならどうやってもキーボード入力出来ない文字で区切るなんてやるし。
それで区切ってなければ1行のデータ数不正で受け取らないなんて簡単。
それ以外にもチェック項目入れてEXCEL上で出力編集できるプログラム組めば良いし。
それはそういうシステム作った奴が悪い。
いくらでも規定のフォーマットじゃなければ受け付けないシステムは作れるだろ。
CSVなんかでもカンマ区切りじゃなくて普通ならどうやってもキーボード入力出来ない文字で区切るなんてやるし。
それで区切ってなければ1行のデータ数不正で受け取らないなんて簡単。
それ以外にもチェック項目入れてEXCEL上で出力編集できるプログラム組めば良いし。
967デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/25(金) 13:18:40.53ID:11RxMW0L0 >>966
データの中身が間違っているものをアップロードしてしまうことを言ってるんじゃないだろうか
データの中身が間違っているものをアップロードしてしまうことを言ってるんじゃないだろうか
968デフォルトの名無しさん (ワッチョイ ed6f-2x4P)
2017/08/25(金) 14:22:18.70ID:jgB7N/LP0 正しいデータを入れなおして直るならいいんだけど
取り返しのつかないミスで業務に支障がでたら知らん
取り返しのつかないミスで業務に支障がでたら知らん
969デフォルトの名無しさん (JP 0H0e-2x4P)
2017/08/25(金) 15:30:41.90ID:7eimf3NdH >>958
データのバリデーションが足りてないだけでしょ
データのバリデーションが足りてないだけでしょ
970デフォルトの名無しさん (ササクッテロ Sp6d-Hgyh)
2017/08/25(金) 16:19:40.23ID:YOvDFOChp バックアップを取ってリカバリしないの?
971デフォルトの名無しさん (ササクッテロレ Sp6d-tWDQ)
2017/08/25(金) 18:19:08.43ID:ljcbkcPnp972デフォルトの名無しさん (オッペケ Sr6d-d2qD)
2017/08/25(金) 18:24:10.85ID:KTLmtMM0r >>966
フォーマットの問題じゃないんだよね。
アップ済みのファイルを再度アップしてしまったり、修正前のファイルをアップしたりとか、フォーマットに問題はないのでシステムは受け付けてしまう。
その辺をリカバリできるシステムにしようとするとまた莫大な金がかかるので、上はなかなか動かない。
それによってどのくらいのコスト削減あるいは利益が見込めるのか、まずは数字出さないと話も聞いてもらえないよ。
フォーマットの問題じゃないんだよね。
アップ済みのファイルを再度アップしてしまったり、修正前のファイルをアップしたりとか、フォーマットに問題はないのでシステムは受け付けてしまう。
その辺をリカバリできるシステムにしようとするとまた莫大な金がかかるので、上はなかなか動かない。
それによってどのくらいのコスト削減あるいは利益が見込めるのか、まずは数字出さないと話も聞いてもらえないよ。
973デフォルトの名無しさん (アウアウカー Sa85-HXRX)
2017/08/25(金) 22:45:26.71ID:jbJbRr/0a974デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/25(金) 23:17:31.65ID:11RxMW0L0 >>973
たぶんキーが無いんじゃない?
たぶんキーが無いんじゃない?
975デフォルトの名無しさん (オッペケ Sr6d-d2qD)
2017/08/26(土) 07:13:30.51ID:vvYv5Hier >>973
働いたことないの?
働いたことないの?
976デフォルトの名無しさん (オッペケ Sr6d-d2qD)
2017/08/26(土) 07:22:16.86ID:vvYv5Hier977デフォルトの名無しさん (ワッチョイ 1d4b-rG16)
2017/08/26(土) 09:32:33.78ID:5dccF0/k0 >>931
ありがとうございます。
あれから色々試しましたがいくつか問題点があります。
問題1
Dim el As IHTMLElement を削除するとTDが取得出来ず、table丸ごとの取得となります。
問題2
Dim htmlDoc As HTMLDocument を削除するとエラーが出ます。
問題3
7番目のサンプルを実行するとこの部分がエラーをおこします。
objDOM.body.innerHTML = objXML.responseText
問題1についてtableデータ丸ごとでも取得後必要箇所を抜き出せばいいので用は足せます。
変わらなければそのままいこうと思っていますが相手サーバーへの負担は増えるのでしょうか?
問題2について削除しなければ問題ありませんがxml化時に下記3箇所をどのように記載を変更すればいいでしょうか?
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Set colTable = htmlDoc.getElementsByName("oppai")
問題3について下記の("htmlfile")が原因かと思ったのですがこのままでいいでしょうか?
それとも何かのシート名を入れるのでしょうか?
Set objDOM = CreateObject("htmlfile")
毎度すいませんがよろしくお願い致します。
ありがとうございます。
あれから色々試しましたがいくつか問題点があります。
問題1
Dim el As IHTMLElement を削除するとTDが取得出来ず、table丸ごとの取得となります。
問題2
Dim htmlDoc As HTMLDocument を削除するとエラーが出ます。
問題3
7番目のサンプルを実行するとこの部分がエラーをおこします。
objDOM.body.innerHTML = objXML.responseText
問題1についてtableデータ丸ごとでも取得後必要箇所を抜き出せばいいので用は足せます。
変わらなければそのままいこうと思っていますが相手サーバーへの負担は増えるのでしょうか?
問題2について削除しなければ問題ありませんがxml化時に下記3箇所をどのように記載を変更すればいいでしょうか?
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Set colTable = htmlDoc.getElementsByName("oppai")
問題3について下記の("htmlfile")が原因かと思ったのですがこのままでいいでしょうか?
それとも何かのシート名を入れるのでしょうか?
Set objDOM = CreateObject("htmlfile")
毎度すいませんがよろしくお願い致します。
978デフォルトの名無しさん (ワッチョイ 86aa-oTLP)
2017/08/26(土) 13:59:12.95ID:1Xp/S2sl0 >>958
>システムへの大量レコードのアップロードって、ミスした時が大変なのよ。
>アップロードするファイルを間違えたりするやつが必ずいるから
人間は、必ず間違うから、絶対に回復機能が必要。
普通は、バックアップ・スナップショット機能で、前の状態へ戻れる
銀行では、アルバイト3人が、同じデータを入力する。
3人とも同じ金額の時だけ、合格
バリデ、validation
>システムへの大量レコードのアップロードって、ミスした時が大変なのよ。
>アップロードするファイルを間違えたりするやつが必ずいるから
人間は、必ず間違うから、絶対に回復機能が必要。
普通は、バックアップ・スナップショット機能で、前の状態へ戻れる
銀行では、アルバイト3人が、同じデータを入力する。
3人とも同じ金額の時だけ、合格
バリデ、validation
979デフォルトの名無しさん (ワッチョイ 86aa-oTLP)
2017/08/26(土) 14:10:14.30ID:1Xp/S2sl0 >>977
JavaScript の、jQuery でやれば?
Groovy, Ruby でも良いし
何で、VBA でやる?
VBAには、クロージャがあるのか?
最初から、ライブラリが揃っている言語を、使えば良いだけ
JavaScript の、jQuery でやれば?
Groovy, Ruby でも良いし
何で、VBA でやる?
VBAには、クロージャがあるのか?
最初から、ライブラリが揃っている言語を、使えば良いだけ
980デフォルトの名無しさん (ワッチョイ fe6d-brQu)
2017/08/26(土) 14:14:47.08ID:svByvDEZ0981デフォルトの名無しさん (ワッチョイ ca11-+ULf)
2017/08/26(土) 15:49:08.64ID:O53zOlu10982デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
2017/08/26(土) 16:55:31.30ID:azDqTcfP0 >>972
>アップ済みのファイルを再度アップしてしまったり、修正前のファイルをアップしたりとか、
間違ったと気づいた時点でオペレータ自身が元に戻せるような仕組みを作るのはそれほど難しくないよ
手動でExcelを修正するステップやその前のステップを含めてシステム化するのが理想ではあるだろうけどね
ただ100~300万くらいのお金を莫大な金と言ってるんであれば自力で頑張るしかない
担当が変われば元の木阿弥だし、本来機械にやらせるべき仕事を人間がやってることによる逸失利益を加味したら安い買い物
>アップ済みのファイルを再度アップしてしまったり、修正前のファイルをアップしたりとか、
間違ったと気づいた時点でオペレータ自身が元に戻せるような仕組みを作るのはそれほど難しくないよ
手動でExcelを修正するステップやその前のステップを含めてシステム化するのが理想ではあるだろうけどね
ただ100~300万くらいのお金を莫大な金と言ってるんであれば自力で頑張るしかない
担当が変われば元の木阿弥だし、本来機械にやらせるべき仕事を人間がやってることによる逸失利益を加味したら安い買い物
983デフォルトの名無しさん (ワッチョイ ca11-+ULf)
2017/08/26(土) 17:26:45.76ID:O53zOlu10984デフォルトの名無しさん (ワッチョイ 293d-oKtA)
2017/08/26(土) 17:45:46.64ID:6HYM9FnY0 在庫と直結するようなシステムだと現物が関わるからタイミングによっては取り戻すの大変だしね。
985デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
2017/08/26(土) 17:49:54.05ID:azDqTcfP0 >>983
ははは、言いたいことはわかるけどそれは客が要件をすべて決めると思ってるやつの発想
費用に応じて提供出来る内容を変えてあげればいいだけ
そういう調整が出来ない人ばっかりだと苦労するよね
まあそこは論点じゃなく莫大な費用がかかると思ってるのは解決方法の選択肢が見えてないだけで
思ってるほどの費用がかからない方法も有るよってことよ
VBAのかわりにスクリプト書くだけなら100万もいらんし
ははは、言いたいことはわかるけどそれは客が要件をすべて決めると思ってるやつの発想
費用に応じて提供出来る内容を変えてあげればいいだけ
そういう調整が出来ない人ばっかりだと苦労するよね
まあそこは論点じゃなく莫大な費用がかかると思ってるのは解決方法の選択肢が見えてないだけで
思ってるほどの費用がかからない方法も有るよってことよ
VBAのかわりにスクリプト書くだけなら100万もいらんし
986デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
2017/08/26(土) 17:55:27.18ID:azDqTcfP0 >>984
それは今でも発生しうる業務フローの問題でしょ?
誰かが確認するっていうステップが必要なだけで1件1件コピペ入力しなきゃいけないのとは別問題
確認が必要ならそのフローをシステムに取り込んであげればいい
機械で自動確認できるほうが楽だけどそれは必須じゃないじゃん
それは今でも発生しうる業務フローの問題でしょ?
誰かが確認するっていうステップが必要なだけで1件1件コピペ入力しなきゃいけないのとは別問題
確認が必要ならそのフローをシステムに取り込んであげればいい
機械で自動確認できるほうが楽だけどそれは必須じゃないじゃん
987デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
2017/08/26(土) 17:56:27.22ID:azDqTcfP0 Excel関係ない気がするからこの辺にしとくわ
988デフォルトの名無しさん (ワッチョイ ca11-+ULf)
2017/08/26(土) 18:39:24.64ID:O53zOlu10989デフォルトの名無しさん (アウアウカー Sa85-1rYb)
2017/08/26(土) 19:30:25.78ID:qX5fc/S5a 株かなにかで金額間違えてニュースになったな
990デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/26(土) 19:42:35.36ID:eHXsO5oX0 あれはトレーダーによる入力だからそれ自体が一次情報
複数人による入力対象ではない
複数人による入力対象ではない
991デフォルトの名無しさん (ワッチョイ 29e4-fJzc)
2017/08/26(土) 21:03:15.65ID:F72uLJPi0 いつから問題の対象が
複数人による入力
に限定されるようになったんだ
複数人による入力
に限定されるようになったんだ
992デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/26(土) 22:10:58.71ID:eHXsO5oX0 さあ
993デフォルトの名無しさん (ワッチョイ 3e1e-CSD/)
2017/08/27(日) 02:42:06.83ID:L7AzHdYH0994デフォルトの名無しさん (ワッチョイ c66f-2x4P)
2017/08/27(日) 09:42:07.86ID:M71tiO6/0 ほ
995デフォルトの名無しさん (アウアウカー Sa85-HXRX)
2017/08/27(日) 10:41:40.78ID:hneRKt3Sa996デフォルトの名無しさん (アウアウカー Sa85-1rYb)
2017/08/27(日) 12:36:10.64ID:9rRkVsmFa 銀行でバイトに入力させるとかないだろ
997デフォルトの名無しさん (ワッチョイ fe6d-YxLc)
2017/08/27(日) 12:40:26.06ID:LjjEWylk0998デフォルトの名無しさん (ワッチョイ fe6d-YxLc)
2017/08/27(日) 12:40:42.78ID:LjjEWylk0999デフォルトの名無しさん (ワッチョイ 293d-oKtA)
2017/08/27(日) 13:14:20.45ID:EGaKBA6h0 >>998
乙
乙
1000デフォルトの名無しさん (ワッチョイ 0a0f-cmDg)
2017/08/27(日) 13:34:20.02ID:rBvqwKY30 ぬるぽ
10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 62日 11時間 19分 6秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 62日 11時間 19分 6秒
10021002
Over 1000Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★4 [BFU★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 高市早苗さんとデートで行きたいスポット [377482965]
- 【速報】テレビ朝日本社から20代〜30代の男性が飛び降り自殺して死亡 東京・六本木 [597533159]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ182
- お前らダウナー系だよな
- 報ステさん、今日のトップニュースが美川憲一の会見www 高市&進次郎vs中国の話は?? [597533159]
- 【すこん部🏡】白上フブキ🦊配信中❗【ホロライブ▶】
