1 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 16:27:20.88 ID:hh8LiIgR0.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part64 https://mevius.5ch.net/test/read.cgi/tech/1575297834/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
701 名前:デフォルトの名無しさん (ワッチョイ acce-1Gce) mailto:sage [2020/04/28(火) 03:02:31 ID:OG4s1hHd0.net] >>694 これ、そこらの入門書にはなかなか書いてないんだけど、MsgBoxの結果はVbMsgBoxResultという特殊な型なので、変数msはこう宣言するのが正解 Dim ms As VbMsgBoxResult この宣言を書いてからコードを書くと、 If ms = ここまで入力すると自動的に、vbYesとかvbNoなどの選択肢が出てくる
702 名前:デフォルトの名無しさん (ワッチョイ 66e6-iUOt) mailto:sage [2020/04/28(火) 04:56:00 ID:Ok+k67Xa0.net] Select Case "CSVファイルをExcelに取り込む" Case "直接開く" MsgBox "0 padding" Case "querytables" MsgBox "inline CR" Case "POWERQuery" MsgBox "Syntax Error" Case "先輩たち" MsgBox "テレワーク" Case "2ch" MsgBox "ググレカス" Case "自分" MsgBox "勉強中" End Select
703 名前:デフォルトの名無しさん (ワッチョイ 91ad-R0M4) mailto:sage [2020/04/28(火) 05:30:30 ID:CHpsAleC0.net] >>690 VBAは年齢層高いだろ? Pythonとかより
704 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 06:23:10.14 ID:fDIatR4a0.net] 最近csvを開くのがはやってるみたいだけど、拡張子をtxtに変えて開き直すといいよ
705 名前:デフォルトの名無しさん (ワッチョイ 048f-1Gce) mailto:sage [2020/04/28(火) 08:10:33 ID:uR1kyCkX0.net] >>671 ぜ・ん・ぶ
706 名前:デフォルトの名無しさん (スッップ Sd70-bbQE) mailto:sage [2020/04/28(火) 08:27:27 ID:F6rfqhbJd.net] >>685 速度アップの為にあえて使うのはVariant配列。 配列にすることに全く違和感が無いので、"あえて"使うことが少ない。 配列にするのに自然なことがたくさんあるし、普通に使ってる。
707 名前:667 (ワッチョイ 2c7f-So6t) mailto:sage [2020/04/28(火) 13:36:09 ID:1XDByXps0.net] ありがとうございました。 できました。
708 名前:デフォルトの名無しさん (ワッチョイ 7349-xf6K) mailto:sage [2020/04/28(火) 13:57:24 ID:0tfnjkqK0.net] いえいえ
709 名前:デフォルトの名無しさん (ブーイモ MM5e-43Dx) mailto:sage [2020/04/28(火) 17:53:56 ID:YPs9lugpM.net] Sub テキスト抽出() ChDir "c:\tmp" f = Dir("*.txt") c = 1 Do While f <> "" Open f For Input As #1 Line Input As #1,s s = "s" r = 1 Do While Not EOF(1) And s <> "" Line Input #1, s If s <> "" Then Cells(r, c) = Split(s, vbTab)(5) r = r + 1 Loop Close #1 f = Dir c = c + 1 Loop End Sub
710 名前:デフォルトの名無しさん (ブーイモ MM5e-43Dx) mailto:sage [2020/04/28(火) 18:04:37 ID:YPs9lugpM.net] ここで教えて頂いた>>704の「指定Path内の全txtデータのF列2行目から下に数値が続く限りシートに全部抽出する」コードのお陰で憑き物が取れて運用してるのですが たまに画像の様な他の列に行がはみ出したデータがあると 実行時エラー'9': インデックスが有効範囲にありません で止まりますが これを「他の列がどうだろうがtxt内のF2から下に数値が続く限り抽出」 に改良するのは難易度高いですか? というかコードで可能でしょうか 入門編の本には載って無く数字変えたりwhileの位置変えたりしてますが簡単にいくはずもなく 参考になるサイトなどありましたら教えて頂けませんでしょうか ↓こんなデータが混じってるとエラーで止まります https://i.imgur.com/194ePDL.jpg
711 名前:デフォルトの名無しさん (アウアウウー Saab-/zYc) mailto:sage [2020/04/28(火) 18:19:12 ID:uYkVg/g/a.net] >>704 まんなかへんのdo while の後ろはかっこをつけたほうがいいよ 判定の対応がわかりにくいので
712 名前:デフォルトの名無しさん (ワッチョイ 7a4b-R0M4) mailto:sage [2020/04/28(火) 18:35:05 ID:yXtY+D7s0.net] >>690 元々有名な人なんだね。 投稿動画多くてあれこれクリックしてるうちにどんどん登録者数が伸びてったからビックリした。 最初見た時は5000ぐらいだったのに、さてどこまで伸びるかな。
713 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 19:06:29.99 ID:fDIatR4a0.net] >>705 >If s <> "" Then Cells(r, c) = Split(s, vbTab)(5) この行、最後に(5)ってついてるでしょ 読み込んだデータに5+1番目(0スタートだから+1)の要素が無かったら、どうなると思う? ここは、splitの結果を一旦配列変数に受けて、配列の大きさを確認する判定をいれるといいよ 実を言えば、s<>"" の判定も不要だったりもする
714 名前:デフォルトの名無しさん (ワッチョイ 048f-1Gce) mailto:sage [2020/04/28(火) 19:48:07 ID:uR1kyCkX0.net] 都道府県別の7日移動平均線を出すグラフ組めないかなあと 思って、
715 名前:「都道府県別の日々新規感染者数」を探したけど見つからん…。 なんで役人は pdf にしたがるんだろう。 [] [ここ壊れてます]
716 名前:デフォルトの名無しさん (ブーイモ MMed-43Dx) mailto:sage [2020/04/28(火) 20:13:54 ID:ZPYYxv13M.net] >>708 正直ほとんどさっぱりわからないです。 が、ありがとうございます。そこらへんをいじればなんとかしろなりそうってことですかね。 まだ変数の使い方もよくわかってないのでsplit関数で検索して集中的に勉強していじれるようにがんばります。
717 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 21:00:00.12 ID:CHpsAleC0.net] >>707 VBAはハードル低くて エクセルが実用的だから ユーザが多いんだろう
718 名前:デフォルトの名無しさん (ワッチョイ 4c2c-iUOt) mailto:sage [2020/04/28(火) 22:51:18 ID:7QVY/xgO0.net] データは、PDF じゃなくて、アプリで処理しやすいように、 同じ場所に、CSV ファイルも置いておくのが基本! 役人は、データ処理の素人w
719 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 23:02:38.82 ID:IT0hJXXxM.net] EOF関数? なんじゃこりゃ
720 名前:デフォルトの名無しさん [2020/04/28(火) 23:21:24.84 ID:7mVXavmj0.net] >>709 各都道府県毎にオープンデータでCSV配布してるのに何言ってんだ?
721 名前:デフォルトの名無しさん (ワッチョイ e709-LlFz) mailto:sage [2020/04/29(水) 01:03:36 ID:j7HdUAEO0.net] VBAから参照設定をせずにoutlookを操作しようとしていますが、 「Set mailItemObj = oApp.CreateItem(oApp.olMailItem)」のところで、 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と エラーが出てしまいます。どうすれば解決できますでしょうか。。。 Sub sendmail_sample1() Dim oApp 'As NEW Outlook.Application OutlookのApplication Dim myNameSpace 'As Outlook.NameSpace Dim myFolder Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要 Set myNameSpace = oApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(9) '---コード1|outlookを起動する Dim toaddress As String '変数設定:To宛先 Dim subject As String '変数設定:件名 Dim mailItemObj 'Outlookで使用するオブジェクト生成 '---コード2|差出人、本文、署名を取得する--- toaddress = Range("B2").Value 'To宛先 subject = Range("B5").Value '件名 '---コード3|メールを作成して、差出人、本文、署名を入れ込む--- Set mailItemObj = oApp.CreateItem(oApp.olMailItem) '★★★ここでエラー mailItemObj.BodyFormat = 3 'リッチテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.subject = subject '件名をセット '---コード7|outlookを閉じる(オブジェクトの解放)--- Set oApp = Nothing Set mailItemObj = Nothing End Sub
722 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/04/29(水) 01:10:43 ID:ICnUrfUx0.net] >>715 こうかな? Set mailItemObj = oApp.CreateItem(olMailItem)
723 名前:デフォルトの名無しさん (ブーイモ MM2b-EVni) mailto:sage [2020/04/29(水) 01:34:35 ID:L1oMckOiM.net] 配列変数難しすぎて笑える
724 名前:デフォルトの名無しさん (ワッチョイ e709-LlFz) mailto:sage [2020/04/29(水) 01:35:24 ID:j7HdUAEO0.net] >>716 レスありがとうございます。 「変数が定義されていません」エラーが出てしまいます・・・
725 名前:デフォルトの名無しさん (ワッチョイ e709-LlFz) [2020/04/29(水) 01:40:00 ID:j7HdUAEO0.net] >>715です。自己解決いたしました。 olMailItemを値指定でゼロ(0)にしたらできました。。。 謎ですが。。。ありがとうございました。。。
726 名前:デフォルトの名無しさん (ワッチョイ bff7-INiV) mailto:sage [2020/04/29(水) 09:03:38 ID:osglNTbf0.net] 定数ってoutlook.olMailItemみたいに書くんじゃなかったっけCreateObjectで別定義する必要があったはず Excel上だとリファレンス入れないと>>716は機能しない
727 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 09:13:47.90 ID:EmE7DP7rx.net] ただのパラメータ定数参照だから普通に数字を入れればいいだけ olMailItemは0だったかな
728 名前:690 (ワッチョイ a7ad-LlFz) [2020/04/29(水) 09:22:41 ID:sSCyRYOw0.net] >>691です。 みなさんありがとうございました。 もっと勉強します。 >>69
729 名前:7 ちょっと楽しい気持ちになりました。恩に着ます。 [] [ここ壊れてます]
730 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 18:51:15.87 ID:IoQm9XvmM.net] msgboxの使い方 inputboxの使い方 Do loop For next if then else 初歩だけどここらを色々繰り返し勉強してると楽しい msgboxは使い方もっと応用していきたい 楽しみながら勉強するといいですね 他にもっとお勧めの処理ありますかね。 あとさらに低レベルな疑問なんですが vbYesNo vbOkCancel ↑ これってみんな細かに使い分けます? タイトルとメッセージで誘導してあげて elseで何もしないにするとほぼ通じちゃいますよね これも使い分け必須だったりするのでしょうか
731 名前:デフォルトの名無しさん (アウアウウー Saab-NLJ6) mailto:sage [2020/04/29(水) 20:00:57 ID:ZY0E7GgZa.net] やってみればわかると思うが
732 名前:デフォルトの名無しさん (ワッチョイ a75f-rvxR) mailto:sage [2020/04/29(水) 22:30:45 ID:sZxShGZL0.net] メッセージBOXが出ている状態でESCキーを押された時の挙動が違う。
733 名前:デフォルトの名無しさん (ワッチョイ a78e-DBwA) [2020/04/29(水) 23:54:48 ID:GcIsSLnW0.net] >>723 そろそろ馬鹿は死ね
734 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/04/30(Thu) 00:04:19 ID:UCocORui0.net] vbaって必要に迫られてやることが圧倒的な気がする だからおすすめの処理とか言われてもな
735 名前:デフォルトの名無しさん (JP 0H8f-sYkk) mailto:sage [2020/04/30(Thu) 02:12:11 ID:e+nUl/nvH.net] 同意 VBAは使わなくていいなら使わない方が望ましいわけで、 おすすめと言われると「まずはVBAを使わなくてよい方法を考えること」としか言いようがない
736 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/04/30(Thu) 03:10:10 ID:mLi4d9n50.net] 道具なんて使う人次第 手作業とワークシート(数式)とVBAと別アプリと、何でやれば一番楽で間違いが起きにくいか比較検討して使い分けるのが理想
737 名前:デフォルトの名無しさん (ワッチョイ c7da-ts7H) mailto:sage [2020/04/30(Thu) 03:36:49 ID:gai1ourp0.net] >>723 きびしめの意見が続いてかわいそうになったので めげずにがんがれ
738 名前:デフォルトの名無しさん (ワッチョイ df01-lZTE) mailto:sage [2020/04/30(Thu) 03:50:06 ID:HupizHgZ0.net] 数式だとすぐぶっ壊されてその修正に手間がかかるのでVBA使うのが好き 仕方なく数式に頼ったとしても、数式を一括修正できるボタンとかVBAで作っちゃってる 数式入ってるセルに保護かければいいじゃんって思うだろ・・・・ そうするとな、なんでここには入力できないんだよ!ってクレームがな、 いや、そこはここのシートのこの値が転記されるようになってて・・・とかいう説明を聞き入れる輩じゃないんだ
739 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 04:08:29.30 ID:mLi4d9n50.net] 人に渡すブックなら、VBAは消してシートはバックアップを取っておく 何やったっていじるやつはいじるし文句を言うから、結果だけを渡すようにしとかないと
740 名前:デフォルトの名無しさん (ワッチョイ e7ad-GPK9) mailto:sage [2020/04/30(Thu) 04:41:41 ID:HvDy85U60.net] >>723 >お勧めの処理 VBAが初心者でも簡単に扱えるのは エクセルというGUIがついてるから だけど普通のCUIプログラミングも できると技術的に幅が広がるだろう たとえばPythonとかRubyとかでね
741 名前:デフォルトの名無しさん (ワッチョイ e7ad-GPK9) mailto:sage [2020/04/30(Thu) 04:48:14 ID:HvDy85U60.net] >>731 >>732 複数人利用で関数メインだと すぐぶっ壊されるのは分かる あと壊れなくても長期的には VBAの方が修正が楽だよな? 関数は処理の全体像が不透明
742 名前:デフォルトの名無しさん (ワッチョイ c763-+JA7) [2020/04/30(Thu) 06:40:13 ID:PqPYAyi70.net] まぁ関数でできる処理は関数でした方が処理自体速いんだけどな 悩ましいけどセル保護だけじゃなく列や行を隠しとかもするけど、いじる人は何しようと結局いじるからね… VBAと関数で使い分けしないとVBAはどんだけCPUのコア数あっても1コアでしか動作しないから、重たい処理になると頭打ちになる
743 名前:デフォルトの名無しさん (アークセー Sx5b-apiA) mailto:sage [2020/04/30(Thu) 07:48:59 ID:OrbFqVlKx.net] ワークシート関数が処理の全体像が不明っていってる奴はたぶん関数がセル内できるのを知らないとか、テーブル機能を知らないとか、たぶんそんな感じだろう ワークシート関数もVBAも下手くそに作ればカオスになる
744 名前:デフォルトの名無しさん (ブーイモ MMcf-EVni) mailto:sage [2020/04/30(Thu) 08:27:32 ID:/wWgOKjWM.net] なるべく関数はエクセル内で完結させてる 何かの呼び出しや処理のみにVBAにやらせてる マスター版を個人で持っておく いじられてもよほどのことが無い限り知らんふり
745 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 08:46:50.92 ID:HvDy85U60.net] 一年後に処理の内容全部忘れてから もう一回見てご覧? 関数よりVBAの方が分かりやすいから
746 名前:デフォルトの名無しさん (アークセー Sx5b-apiA) mailto:sage [2020/04/30(Thu) 09:38:23 ID:OrbFqVlKx.net] ワークシート関数の見通しが悪いのはシートの使い方や関数の書き方が悪いから テーブルで構造化参照させる 多重ネストをしないように作業列を積極的に使う 多重ネストが避けられない場合ははセル内改行する 静的変数として固定セルを参照する場合は名前付きセルにする こういう配慮をしているかどうかが大切 可読性はVBAと大差ない VBAだって下手に書くと二度とメンテナンス出来なくなる
747 名前:デフォルトの名無しさん (JP 0H8f-sYkk) mailto:sage [2020/04/30(Thu) 10:14:10 ID:dUO320lFH.net] >>738 VBAだけ見りゃ理解できるように書いてあるんならいいさ ハイスキルな君の書くVBAもきっとそうなのだろう ただ、世の中のほとんどのVBAマクロはワークシートのレイアウトに激しく依存しており、 シートと見比べないと意味不明だし簡単に壊れる
748 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 10:50:37.55 ID:KvTMWgJl0.net] >>714 そうなの?じゃあ俺の検索力不足だ。 教えてもらえるとありがたい
749 名前:デフォルトの名無しさん (ワッチョイ bff7-INiV) mailto:sage [2020/04/30(Thu) 11:52:42 ID:RI8oXcu50.net] シート連結部分はクラスにしようぜ
750 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 18:07:04.25 ID:R8msXZW7a.net] クラスターつくるのか
751 名前:デフォルトの名無しさん (ワッチョイ 2701-F4ic) mailto:sage [2020/04/30(Thu) 20:10:03 ID:6PshQwim0.net] >>738 これは分からんでもないわ
752 名前:デフォルトの名無しさん (ワッチョイ 671d-sUpK) [2020/04/30(Thu) 23:50:21 ID:b9TIw4B40.net] 実務経験1年で月収80万稼げるエンジニアになった理由 https://www.youtube.com/watch?v=DrbbyGsHQic 意識が低いエンジニアこそフリーランスになれ https://www.youtube.com/watch?v=nSEaAJlgjbQ フリーランスエンジニアの週3労働ってどんな感じ? https://www.youtube.com/watch?v=8yjoDCdbzMc ぼくがスキルのない社畜ならこうやって脱する https://www.youtube.com/watch?v=aae8xxbUlMM 初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話 https://www.youtube.com/watch?v=U0OCGRVLFsM プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説 https://www.youtube.com/watch?v=iBOeiSKBIW8 貧乏人こそ社会不適合者 https://www.youtube.com/watch?v=O3BT72BIBJI 元ド貧乏が教える】貧乏を抜け出すための2つの考え方 https://www.youtube.com/watch?v=IRrCgTy3ckc より良いオファー貰ってるのに転職しないとか何考えてるの? https://www.youtube.com/watch?v=i0J6uRhlj7o
753 名前:デフォルトの名無しさん [2020/05/01(金) 00:54:45.32 ID:+DHzH5tv0.net] >>745 この人タイでエッチするため在宅プログラマーになったって言ってるけど うらやましいな
754 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/01(金) 09:08:51 ID:GU+C/Jnt0.net] はいつぎの方
755 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 10:00:32.66 ID:6b7IUzcd0.net] Sub Sample2() Dim Date1 As Date Dim Date2 As Date Dim i As Long Date1 = "2018/1/1" Date2 = "2018/4/30" For i = 0 To DateDiff("d", Date1, Date2) Cells(i + 1, 1) = DateAdd("d", i, Date1) Exit For Next i End Sub VBA初心者です 上記を実行すると強制終了してしまいます どうしてなんでしょうか?
756 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/01(金) 10:50:57 ID:eM3SnLnx0.net] >>748 Exit Forを消す あと、自分のミスで思った通りにならない時は強制終了とは言わない
757 名前:デフォルトの名無しさん (ワッチョイ bff7-INiV) mailto:sage [2020/05/01(金) 12:14:21 ID:gUWwrcBK0.net] "4/30/2018"
758 名前:デフォルトの名無しさん (アウアウエー Sa9f-kSwD) [2020/05/01(金) 13:10:21 ID:n1w4ahs6a.net] #で括ってみては
759 名前:デフォルトの名無しさん (JP 0H9f-r+sk) [2020/05/01(金) 14:08:14 ID:Lu25V/ckH.net] 学術巨大掲示板群: アルファ・ラボ ttp://x0000.net 物理学 化学 数学 生物学 天文学 地理地学 IT 電子 工学 国語 方言 言語学 など PS 連続と離散を統一した! ttp://x0000.net/topic.aspx?id=3709-0
760 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/01(金) 14:08:57 ID:GU+C/Jnt0.net] >>748 回答としては748の通り なぜこうなるのかわからない場合 ・ブレークポイントを使ってどういうふうに処理が進んでいるか確認してみ? ・気になる行をコメントアウトをしてみる などをするがよろし
761 名前:デフォルトの名無しさん [2020/05/01(金) 15:46:49.34 ID:O26w7br10.net] どうして馬鹿ばかり来るのか
762 名前:デフォルトの名無しさん [2020/05/01(金) 15:48:19.31 ID:e9rmxAXgM.net] >>754 ようこそ!
763 名前: mailto:sage [2020/05/01(金) 16:42:17.98 ID:w4TGDP35H.net] >>754 Welcome to the real world !!
764 名前:デフォルトの名無しさん (ワッチョイ e7ad-GPK9) mailto:sage [2020/05/01(金) 17:52:33 ID:XmUvZ7vC0.net] >>748 単純にすべての単語の意味を 把握したらそれだけで分かるよ? 最初の内は意味が分からないまま コピペプログラミングだろうけど ずっとそのままだと上達しない
765 名前:デフォルトの名無しさん (ワッチョイ dff0-h83k) mailto:sage [2020/05/02(土) 03:52:34 ID:gsxD2EFS0.net] 皆さんありがとうございます。 初心者から脱出できるように勉強します
766 名前:デフォルトの名無しさん (ワッチョイ df01-lZTE) mailto:sage [2020/05/02(土) 04:16:39 ID:WlPNyw+i0.net] がんばれ
767 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/02(土) 07:47:42 ID:8I2uZvpu0.net] 会社が休みに入って書き込みが減ったな
768 名前:デフォルトの名無しさん (ワッチョイ a78f-h83k) mailto:sage [2020/05/02(土) 09:40:27 ID:7uDOF2SH0.net] IE自動操作のマクロで 今まで動いていたが動かなくなる ↓ コードに変化を加えると動く (スペースでも改行でもコメントでも、プロシージャに変化があると動くようになる) これはどういうあれなんや
769 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 10:47:09.64 ID:8Sc54whm0.net] 全角のスペースとかキーワード途中での改行とか 無意識にやらかしたんでないの
770 名前:デフォルトの名無しさん (ワッチョイ a7ad-ur4w) [2020/05/02(土) 11:30:23 ID:Z+zF8E0a0.net] PowerQueryをVBAで使いたい初心者 >>691です。 変数に入れるファイルパスを、テーブルにしておかないと PowerQueryは読んでくれないんだ。そのテーブル名とか列名も 指定するんだ、へ~、という現状からこの連休中に抜け出したいです。 テレワークからの連休突入前に先輩たちに投げた質問の答えは 「zoom飲み会やるから、入れとけよ。」でした。
771 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/02(土) 11:33:04 ID:qrZctUhv0.net] VBAむずいが努力だわ 昇級幅が大きい時代の残りカスの50代の職場のおっさん達が給料ばっかり高くて ExcelのSUM関数すらわからないレベルで 電卓で計算してテンキーで手打ち そんな信じられない存在がいる職場 「俺のやり方があるんだよ!」 とか、心の底から腹が立つ 大手で組合もあるからリストラはされないんだが そんなやつを駆逐したい エクセル関数は職場で使うものはだいたい使っておっさん共の10倍は早くやってきたが 更なる憎しみだけが俺のVBA勉強へのモチベーションになってる
772 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/02(土) 11:34:32 ID:jcfx6zQ80.net] >>761 そもそも、どう動かなくなるんだ? エラーが出るのか? Excel再起動で動くようになるか? PC再起動で動くようになるか? 昔よくあったのがデバックやStopのように勝手に途中で止まるという奴。 F5で続行出来るんだけどまた途中で止まる。 Excelの再起動では治らんがPC再起動で治る。
773 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/02(土) 11:44:58 ID:u3ozWGyy0.net] >>761 Win10ではIEの動作が変わったのでVBAからコントロールするのがかなり大変になった うまく動かない時は、ブラウザのキャッシュとかクッキーとか、WEBサーバの応答のタイミングとか調べる 変更しなくても時間を置けば動かないか、Excelを再起動したらどうか、パケットモニターとか調べた?
774 名前:デフォルトの名無しさん (アウアウカー Sa3b-QanA) [2020/05/02(土) 11:52:59 ID:be7YjfFea.net] 初めてのマクロでやりたいことはほぼ出来たのですが、新規ブックをコピー元のマクロごとコピーする方法が分かりません xlsmで保存することは出来るのですが、どうもマクロの参照先がコピー元になっているらしく、新規ブックからマクロを実行するとコピー元のファイルをわざわざ開く形になってしまっています マクロごとコピーする方法があればご教示ください
775 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/02(土) 11:53:28 ID:jcfx6zQ80.net] >>763 初心者がPowerQuery使うの? その前にやることがあると思うんだが。 まず、テキストファイルを扱えるようになりなよ。 自在にテキストファイルを扱えるようになれば、どんな形式のCSVでも関係無い。 セル内改行も、そのCSVのフォーマットが分かってないのが原因。 普通はデ−タに改行が入ってるならレコード間の改行と区別する何かがある筈。 1レコードの項目数が必ず決まっている(1レコードのカンマの数が決まっている)とか、そのテキストデ―タは必ずダブルクォーテーションで挟まれており、データ内の改行はダブルクォーテーションのInとOutの間のどこかにあるとか。 もちろんPowerQueryでも良いんだけど、それでたまたま解決出来そうだから飛び付くのは良くない。 こんなもの基本的な処理の組み合わせで出来るんだから、PowerQueryで有利な何かも無いのに無理矢理使おうとしてるように見える。
776 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 12:25:11.14 ID:E33c3GVR0.net] >>767 自分ではやったことないけどモジュールをそのままコピーするなら officetanaka.net/excel/vba/vbe/07.htm#sample04 こういう方法じゃないかな 自分でやったことがあるのは https://oshiete.goo.ne.jp/qa/756026.html こちらの方法で、コードを一行ずつ書いていくことになります ほんとにまるごとコピーでいいなら上の方法でしょうけど、thisworkbookとか activeworkbookとか場合によって挙動が変わるような内容なら下の方法 じゃないかな
777 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 12:32:45.18 ID:u3ozWGyy0.net] >>767 モジュールのエクスポートとインポートでやってみるとか https://jizilog.com/vba-modadd
778 名前:デフォルトの名無しさん (アウアウカー Sa3b-QanA) [2020/05/02(土) 13:09:24 ID:me7NM96ka.net] >>769 >>770 ありがとうございます お恥ずかしながら、今更ながらアドインと個人用マクロブックの存在を知りました マクロの数も多いので、毎回記述する方法は重くなりそうですし、インポートも考えたのですが、管理するのが大変そうだと躊躇していました とりあえず、個人用マクロブックで一括管理してやってみようと思います
779 名前:デフォルトの名無しさん (スッップ Sdff-x7Cl) mailto:sage [2020/05/02(土) 15:03:15 ID:fjHWXn6td.net] >>769 これは、セキュリティ上の危険を承知するなら良いんだけどね。 今のExcelはデフォルトで動かないように設定されてるよ。 動作原理はマクロウィルスと全く同じなんで。
780 名前:デフォルトの名無しさん (ワッチョイ dfea-9YRN) mailto:sage [2020/05/02(土) 15:03:21 ID:HkfyT0U40.net] >>771 マクロブックだと、最後の1ファイルを閉じてもアプリ画面が残っちゃう。 アドインだとこれを回避できる。
781 名前:デフォルトの名無しさん (ワッチョイ dfea-9YRN) mailto:sage [2020/05/02(土) 15:06:50 ID:HkfyT0U40.net] >>772 そそ。D&Dでパワポにノートを読み上げるマクロをぶっ込めるvbs作ったんだけど、よく考えるとちょつと怖くなった。
782 名前:デフォルトの名無しさん [2020/05/02(土) 15:24:24.68 ID:Z+zF8E0a0.net] >>768 あ、ありがとうございます。 テキストファイルから…。 連休の課題にします!
783 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 15:37:35.14 ID:lt4kIJ5o0.net] >>768 VBAのスレで言うのもなんだが PowerQueryの前にやることがVBAなのかと
784 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 15:54:13.09 ID:WuBkO5o5x.net] >>763 テーブルとしての構造化参照が不要なら別にテーブルにしなくても「空のクエリ」でリテラル定数を返す接続クエリを作るなり、パラメータを登録するなりすれば良い 詳細エディタに = "テーブル名" って一行書けば"テーブル名"を返す定数クエリが出来上がる あと、Letの前行に (path as text, table_name as text, column_name as text)=> とか追加すれば、path とtable_nameとcolumn_nameという三つのtext型の引数をダイアログ入力でクエリに渡せるようになるので、クエリ式の側をソース=Csv.Document(File.Contents(path))みたいに書けば良い。 どうしてもVBAからPower Queryをいじりたいなら Workbook.Queries(Index).Formulaでクエリの式が読み書きできるので、Replaceを使うなりして好きにいじったらいいんじゃないの
785 名前:デフォルトの名無しさん (アウアウカー Sa3b-QanA) [2020/05/02(土) 16:19:14 ID:be7YjfFea.net] >>773 なるほど、それはちょっと嫌かも この際だからアドインも試してみることにします
786 名前:デフォルトの名無しさん [2020/05/02(土) 17:01:28.47 ID:be7YjfFea.net] 何度もすみません アドインを通常のマクロのように、図形などで作ったボタンに割り当てることはできないのでしょうか?
787 名前:デフォルトの名無しさん (ワッチョイ 677f-v3HX) mailto:sage [2020/05/02(土) 19:33:07 ID:I/r+DzJx0.net] デバッグ中からリセットをかける際に特定の処理をさせるようなイベントプロシージャって無いでしょうか
788 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 21:25:13.04 ID:fjHWXn6td.net] >>780 それは俺も知りたいね。 リセットすると確実にExcelが落ちるプログラムを安全に終了したい。
789 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 21:28:27.20 ID:fjHWXn6td.net] >>779 アドインの場合、メインは別のブックになるわけだからアドインのシートとかは表示されないという基本は分かってる? それが分かっていれば図形等で作ったボタンを配置する場所もないと分かる筈。 普通はメニュー(リボン)に作る。
790 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 22:09:54.71 ID:7uDOF2SH0.net] >>765 >>766 数か月前の事なので返ってくるエラーは忘れたけど どこかの部分で止まるのではなく、開始時に起きるエラーだったと思う そのファイルを複数のPCで試したけど全てで同じ現象が起こる で、subプロシージャのコードを一部変更して実行すると動く コードの変更は何でも良くて 改行、何も書いていない行にスペース追加、コメント追加、コードを消して同じコードを書く とにかく変化があれば再起動も何も必要なく正常に動く 変更後上書き保存してからは同じエラーは起こっていない 今は問題なく動いてるから困っては無いんだけど あれは何だったのかなと思った
791 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/02(土) 22:19:21 ID:8I2uZvpu0.net] はあ、そうですか。しらんがな
792 名前:デフォルトの名無しさん (ワッチョイ 7fda-ts7H) mailto:sage [2020/05/02(土) 22:37:34 ID:zUyEitTf0.net] >>761 俺もさんざん悩まされたが、ByVal/ByRef問わず、関数にオブジェクト渡すのやめたら改善したわ。 何でもかんでもパブリックにすんなアホって言われてたから、パブリックという発想が中々でなかったが。 >>765 俺の場合は何の音沙汰もなく強制終了だな。 エラーが出ないし、PCによっては動くし、改行いれるだけで変わることもあるから、 どこがおかしいのか全然わからんかった。 互換表示とか保護モードの有無も関係ないし。
793 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 22:45:55.01 ID:zUyEitTf0.net] 多分、 Readystateコンプしてるのにエラーでるな〜 ↓こうしちゃえ On Error Resume Next Do IEにカキコ Sleep 1000 Loop While なんとか On Error Goto 0 長くて面倒くせえなぁ〜 関数化しちゃえ で、オブジェクトを関数に渡して嵌る罠なんだと思う。
794 名前:デフォルトの名無しさん (アメ MM6b-p7s+) mailto:sage [2020/05/02(土) 23:09:24 ID:FzDABaHmM.net] >>783 それ、IEと関係なく、Excelの更新が原因でvba関係にエラー起きてるやつでは? ファイル開くときに「エラーがあります、可能な範囲で修正しますか」みたいなアラートがでて、はいを押すとコードが全削除される。
795 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/02(土) 23:36:58 ID:qrZctUhv0.net] 教えてくださいまし。。 画像のように日によって参加人数も競技した数も違うものを 受付した人と競技の範囲の値のみ 隣のシートに貼り付けるようにしたいですが エクセル関数のエラーや未計算が都合上どうしても残ってしまい残ってうまく行かず… https://i.imgur.com/Sd2Afas.jpg https://i.imgur.com/MfnIQSU.jpg https://i.imgur.com/lEQTEIe.jpg 受付した人の数字が空白になるまでは空白になるまで、競技も空白になるまで その範囲のみをコピーというか可能でしょうか
796 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/02(土) 23:39:12 ID:qrZctUhv0.net] Sub 貼り付け() Dim gy As Long Dim re As Long Dim Dim Tensu As String Dim Kekka As String Sheets(Tensu) = "点数" Sheets() = "結果シート" Sheets(Tensu).Select With Range("C5") gy = .End(xlDown).Row If .Offset(1).Value = "" Then gy = .Row re = .End(xlToRight).Column If .Offset(, 1).Value = "" Then re = .Column With .Resize(gy - .Row + 1, re - .Column + 1) Sheets(Tensu).Select Range("H8").Resize(.Rows.Count, .Columns.Count).Value = .Value End With End With End Sub これで作ってみたのですがやはり関数エラーが 邪魔してエラーになります 行も列も両方を空白までループして貼り付け むずぃす
797 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:46:04.45 ID:zUyEitTf0.net] 画像から式を逆算するクイズみたいになっとる。
798 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:48:07.49 ID:TR3WF5Jt0.net] 人、それをデバッグと呼ぶ
799 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:48:58.13 ID:zUyEitTf0.net] エラーってそっちのエラーかい! If IsError(セルの値) = False Then の時だけ実行とか。
800 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:51:07.35 ID:zUyEitTf0.net] それか、ValueじゃなくてTextでエラー回避。