Excel VBA 質問スレ Part73

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 4668-xJJl)
垢版 |
2021/09/13(月) 07:29:59.47ID:GNx0xRRz0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ

※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/11/21(日) 08:36:08.55ID:4M98L2BP0
勝手にやってやると調子に乗るだろ
665デフォルトの名無しさん (アウアウウー Sa3b-Z5oZ)
垢版 |
2021/11/21(日) 10:03:03.00ID:zwWMSsz4a
仕様変更っていっも動作確認あわせて1時間もかからんだろ
ここで愚痴る前にさっさと直せよ
666デフォルトの名無しさん (ワッチョイ ef8e-1fs8)
垢版 |
2021/11/21(日) 12:48:58.97ID:VeOo+GZo0
馬鹿だから修正に手間が掛かるようなプログラムしか作れないのだろ
2021/11/21(日) 14:30:08.25ID:CsAuHtPC0
仕様確認を反故にする ユーザーに怒っている人をディスってる奴らが数人いるけど、こいつらは他人をディスってストレスを発散する病んだ人たちなんだろうな。
2021/11/21(日) 15:03:48.31ID:j1X7Mg5t0
プログラム的なものをやってると後出し仕様変更おしさんにはほぼ100%遭遇するからな
2021/11/21(日) 17:22:27.75ID:lG7wwdbAd
>>665
テストやリリースまでのドキュメント作成で実際はその何倍もかかるよね
2021/11/21(日) 17:48:21.28ID:RHabNs0q0
列挙型使ってればデータ収集くらいなら大体は対応できる
2021/11/21(日) 17:56:13.83ID:Cim/yDW60
後出して仕様変更されても、その分の納期と金額を保証してくれるならまあ許せる
そういうやつらは大概は、元の金額のままで同じ納期でやれっていうからな
672デフォルトの名無しさん (ワッチョイ c6da-Z5oZ)
垢版 |
2021/11/21(日) 18:04:49.83ID:rJQke0fG0
>>669
それでもここで愚痴るほど暇な訳だが
2021/11/21(日) 19:36:02.92ID:rJQke0fG0
>>671
個人契約で請け負っているならそういう交渉もあるだろうね
自社開発とかだと上司にそれ言うか?
674デフォルトの名無しさん (ワッチョイ ef8e-1fs8)
垢版 |
2021/11/21(日) 19:50:30.82ID:VeOo+GZo0
エンドユーザーに仕様なんて伝えても理解できないことも織り込めない素人に毛が生えただけのVBAプログラマーがこぼしているだけだからな
2021/11/21(日) 22:53:28.70ID:CsAuHtPC0
>>674
こいつはきっと趣味のプログラマーだな。
676デフォルトの名無しさん (ワッチョイ ef8e-1fs8)
垢版 |
2021/11/21(日) 23:12:50.46ID:VeOo+GZo0
悔しかったか?
どんな仕事でも言われたこと(それも自分が理解できる範囲だけ)しかできない無能に限って、少しプログラムできると天狗になって自分が偉いと思い込む
2021/11/21(日) 23:17:45.36ID:CsAuHtPC0
>>676
俺は100%通りすがりのモンだけど。
お前思いっきり読解力ないな(笑)
2021/11/22(月) 02:02:52.47ID:C2iFLgVU0
人を下に見られる程精通してる人って正直羨ましいわ
知れば知るほどまだまだ知らない事が沢山あるなぁと勉強不足を実感してしまう
2021/11/22(月) 07:01:15.65ID:slGF1Oi+d
知らないから人をバカに出来るんだよなー
2021/11/22(月) 08:46:35.28ID:Pvc6brgHd
>>675
いや、エンドユーザーだよ
2021/11/22(月) 09:28:02.25ID:GKja75Bt0
むしろ人を下にみないと精神状態が不安定なんでしょ
682デフォルトの名無しさん (アウアウウー Sa3b-Z5oZ)
垢版 |
2021/11/22(月) 11:55:26.38ID:L9slPYHUa
15年もやればそうなるんじゃね
2021/11/22(月) 23:06:20.51ID:08E8qmHLd
顔が見えない相手にしか愚痴れないんだろ
我慢してやろうぜ
2021/11/23(火) 00:04:23.39ID:HyKB94hG0
>>663
クラス作ってインターフェース作って多態性持たせてというのは確かに大事だけど
それを使いこなすレベルであればもう能力的にはVBA卒業だよ。
2021/11/23(火) 06:17:53.07ID:Xen9jxSh0
生徒が先生に対して自分は下に見られているとかいうのは違うんだけどね
2021/11/23(火) 10:30:00.53ID:Uhpscs260
その例えがそもそも違うんだけどね
2021/11/23(火) 11:28:47.36ID:Kq5e1ZWqp
天は
人の上に人を作らず
人の下に人を作らず
2021/11/23(火) 11:46:02.03ID:glM4yG/J0
古い話になるがエクセル2003くらいのことにはブック固有のツールバーとそのツールバーにマクロボタンを登録できた.
そのブックをオープンすると固有のツールバーが表示されてブック固有のマクロを簡単に実行できた.

エクセル2013を使っているけどこういう機能はなくなったのかな.
VBAでもツールバーを作れるけど,commandbarオブジェクトにaddしてボタンをaddしてなど面倒すぎるし,なにより全てのブックで表示されるとか,特定のブックだけで表示させたかったらそれ用のマクロをイベントと関連付けて切り替えるなど面倒.
昔のような機能を復活させる方法はないでしょうか?
689デフォルトの名無しさん (アウアウキー Sac7-Z5oZ)
垢版 |
2021/11/23(火) 12:15:05.23ID:2bUUy2X7a
2003インストールしたらできるんじゃないかな
2021/11/23(火) 12:19:08.48ID:glM4yG/J0
>>689
お前はお笑い芸人か
2021/11/23(火) 12:58:36.46ID:CIHUE1VX0
>>688
クイックアクセスツールバーに表示できる
そのブックだけに適用とかの設定もあったはず
2021/11/23(火) 13:55:58.62ID:A++o7U7T0
>>687
人の中に人を作れり
2021/11/23(火) 15:21:24.36ID:/4Q7KTnxa
職場にVBAバカにする人が多くて辛いです。
どうしたら見返せますか?
2021/11/23(火) 15:31:34.69ID:RPYITf6Hd
>>693
他の言語やればいい
695デフォルトの名無しさん (アウアウキー Sac7-Z5oZ)
垢版 |
2021/11/23(火) 15:46:47.44ID:vnr7FnzGa
>>693
VBAのソースを頭から読み返せばいい
2021/11/23(火) 16:56:40.89ID:glM4yG/J0
>>693
VBA と言わなきゃいいんじゃない。どうせ VBA と C の違いもそいつはわかんないだろう。
2021/11/23(火) 16:58:43.07ID:azQICWGX0
>>696
2021/11/23(火) 17:07:40.89ID:pTXgLOiP0
プロシージャモジュールを作ってます
2021/11/23(火) 19:22:11.55ID:Xen9jxSh0
マジレスすると、VBAだから馬鹿にされているんじゃなくて内容がチープだからじゃね
とりあえずセンスのあるグラフとか作ればそれなりに見えると思う
2021/11/23(火) 21:29:31.50ID:h2kETaBe0
Excelでセンスのあるグラフって描けるの?
701デフォルトの名無しさん (ワッチョイ 5f01-iUmB)
垢版 |
2021/11/23(火) 21:42:34.64ID:VKZug2mU0
その件はペンディングでお願いします。
2021/11/23(火) 22:13:21.88ID:d9zk2oza0
高度な処理をするより見た目派手なことするほうが関心されるってのはあるわな
2021/11/23(火) 22:18:57.11ID:Uhpscs260
そら見た目の印象で判断してるからな
実際どんな事やってるのか踏み込む人には効果無し
2021/11/24(水) 17:35:27.48ID:l0nIbD9FM
動いてる感じを演出して見た目を楽しませるの結構大事だよ
書き込んだところをselectするようにしたら、嬉しそうにセルに書き込まれてる様子眺めてた
2021/11/24(水) 18:46:24.44ID:M33cGNY60
リアルタイムの進捗状況見れるしな
そういうの好きな人は懐かしのデフラグも好きそう
2021/11/24(水) 21:02:30.81ID:zoTAHfV40
>>684
VBAがインターフェースだのクラスイニシャライザだのポリモーフィズムだの
実装してくれればいいだけじゃないのかな。

「卒業しなきゃいけない」ものでもないだろ、今の普及度見てると。
2021/11/24(水) 21:45:28.54ID:KGMrLahJ0
>>706
いらんいらん
vbaはあくまで今ぐらいの不便さでちょうどいい
下手にそんなもん実装されたら読みづらくなってかなわん
2021/11/25(木) 19:13:08.61ID:pDjO55r30
>>706
VBAにはインターフェースあるよ
2021/11/25(木) 23:19:56.43ID:WSSTsN1M0
>>708
あったっけ。俺の記憶違いならごめん。

あと、致命傷なのが実質グローバル変数化するエクセルのセルだと思う。
あれ、とてもやっかい。
2021/11/25(木) 23:31:25.24ID:OcubR2wD0
>>691
ありがとうございました。
できました。
711デフォルトの名無しさん (ワッチョイ e263-C1KD)
垢版 |
2021/11/25(木) 23:41:58.44ID:1AcsgpK30
Open/Nameで開く/リネームするファイルの名前に
全角括弧や中黒、半角ピリオドが入っていると
実行時に「エラー53 ファイルが見つかりません」
が出ます。
ファイル名が長すぎるのかと思い短くしたが変わらず、
実行前に上記のような文字を削除しておくとと無事処理が終了します。
しかし手作業で削除するのが面倒なのでそれ以外の対処を知りたいです。
先生方ご教示ください。
2021/11/26(金) 00:05:14.55ID:fWkXgzm/0
うろ覚えだから動かなかったらごめんね
こんな感じにやるといけたかもしれない
Replace(対象のファイル名, "・", Chr(Code("・")))
2021/11/26(金) 17:57:21.05ID:e3tyzrS40
質問です
所定の形式のシートAからデータを取り出し、数値の操作を行ったあと別の形式のシートBに記入すると言うマクロと逆にシートBからシートAに記入するマクロを作りたい場合に楽をする方法はないでしょうか?
今まではA→BとB→Aで2つマクロを作ってたのですが見るところが同じなのでまとめれるように感じたのです
プログラムについて詳しくないので無茶なことを言っているかもしれませんがよろしくおねがいします
714デフォルトの名無しさん (ワッチョイ ff8e-/YRy)
垢版 |
2021/11/26(金) 18:18:33.57ID:6S+lbrca0
またRuby馬鹿か
2021/11/26(金) 19:32:54.64ID:y13IYOoN0
>>713
自分で考えないで他人に作らせるのが一番楽じゃないかな
2021/11/26(金) 20:39:32.12ID:Jy5iToKI0
>>713
Cを作ってそれで操作
2021/11/26(金) 20:40:23.50ID:90E5eyRt0
>>715
まさに今やってるのがそれだな
2021/11/26(金) 21:24:20.33ID:wVBXN9pL0
>>713
その気づきが大事だよな
プロシージャを分けてCallで呼び出して引数はシートにする
2021/11/26(金) 21:29:44.76ID:l5KPHXyn0
もうRubyは飽きたから
VBAで書かないならせめて
今流行りのPythonとか
新たに注目されてるRustとか
いずれWebのExcelで必要になるJavascriptとか
VBAやってる人が次に進みやすい
VB.NetとかC#とかその辺で書けばいいのに
Rubyとかで書いて来るセンスないバカは
死ねばいいと思う
2021/11/26(金) 21:57:57.19ID:sYQtOY9h0
…落ち着けよ
2021/11/26(金) 23:05:04.12ID:Jy5iToKI0
>719
一応マジレスする
rubyにはとんでもないキチガイがいて、そいつが嵐回っている
そのおかげでrubyは総スカン、言語に影響するレベルで貶めされるようになった

キチガイ一人で言語一個潰せたのは割とマジですごいと思う
722デフォルトの名無しさん (ワッチョイ 5701-+aRL)
垢版 |
2021/11/26(金) 23:29:32.65ID:YCQQxNQi0
あわしろ氏が言ってたけど、ベンダーロックインされるから、特定企業の言語は使わないほうが良いよ。
2021/11/27(土) 07:12:17.07ID:/aLCz2Bk0
>>713
値を取得したいセルの範囲をどっかのセルに書いといてその位置を引数で渡せばいいじゃん
複数範囲があるならその複数セルの位置を書いた範囲を引数で渡せばいい。
2021/11/27(土) 07:20:09.69ID:/aLCz2Bk0
あのあわしろ氏とかいうのはアホだから
今はLinuxでさえExcelと似たようなソフトがあってそれでもVBAが動くことか考慮していないのだろう
Cなんか組込系はハードによってすらコードが左右されるのに、必要なときに必要な勉強をすればいいだけなのに変な固定概念を持っててそれを人に押し付けてる
2021/11/27(土) 08:52:39.21ID:OaX0N5DnM
>>713
取り出すシートと書き込むシートを引数で渡せばいいだけかと

Sub Hoge(取り出すシート As Worksheet, 書き込むシート As Worksheet)
Dim 値 As Variant
値 = 取り出すシート.Range(取り出す場所).Value
' なんかの処理
書き込むシート.Range(書き込む場所).Value = 値
End Sub

Dim SheetA As Worksheet, SheetB As Worksheet
Set SheetA = ActiveWorkbook.Worksheets("A")
Set SheetB = ActiveWorkbook.Worksheets("B")
' A ⇒ B
Hoge SheetA, SheetB
' B ⇒ A
Hoge SheetB, SheetA
2021/11/29(月) 11:44:05.96ID:7iqP84qYM
やっと多態性の概要が分かってきた
2021/11/29(月) 11:52:31.66ID:mgylUf/ZM
範囲を別のところに書いたり引数指定でやればいいんですね
遅くなってしまいましたが色々なご意見ありがとうございます
2021/11/30(火) 12:14:18.10ID:i6pa9Q1E0
>>726

VBの多態性?
2021/11/30(火) 12:24:36.07ID:i6pa9Q1E0
ああ。CallByNameとかを使えば擬似的にできるんだ。へえ。

しかし、クラスイニシャライザと継承を普通に実装してくれれば
…くれないんだろうな、もう。
2021/11/30(火) 13:25:55.62ID:xmFPZymv0
すいません質問させてください。
特定のエラーウィンドウが出たら実行するマクロを作りたいのですが
実行条件の指定の仕方がわかりません。
具体的には「データの入力規制」のエラーメッセージタブで指定した
ウィンドウの「はい(Y)」を自動で押したのちにマクロを実行させたいです。
ご教授お願いいたします。
2021/11/30(火) 16:33:24.70ID:yU0uPSMf0
え、そんなことできるの!?
2021/11/30(火) 17:17:34.47ID:EuUrWRYz0
>>731
エラーハンドラーでできないの?
2021/11/30(火) 18:33:56.15ID:Nxhl39nB0
できないから質問したんじゃないの?
2021/11/30(火) 18:53:53.22ID:gFsrJhmJ0
730です。
vba内?で出たエラーを条件にした処理は探せたんですが、エクセルが出したエラーをトリガーにしたものが探せなくて質問させていただきました。もしあるならば知りたいなと思った次第です。
2021/11/30(火) 19:41:38.94ID:C0MmFQGd0
その入力規制をVBAにしたほうが手っ取り早い
2021/12/01(水) 04:06:37.80ID:RALKNP3F0
なるほど、確かにそうかもしれません。
ありがとうございました。
2021/12/01(水) 09:01:08.50ID:k/wjCDWPa
Excelスレに書き込んだ後にVBAスレがあることに気付きました。

VBAでA1セルに入っている文字列を使ってA2セルに文字列を入れたいと考えています。
↓のように作ったときA1が数字だけかアルファベットだけならうまく入るんですが数字とアルファベットを組み合わせた文字列(例えば4A02とか)だと1004エラーとしてアプリケーション定義かオブジェクト定義のエラーがあると怒られてしまいます。
解決方法あるものでしょうか?

Range("A2").value = "=(1,2,3," & Range ("A1").value & ",5,6,7,8,9,""abc"",0)"
2021/12/01(水) 09:26:46.14ID:+HkH87nC0
ありません
2021/12/01(水) 09:26:59.16ID:D4hpf6JM0
>>737
数式を変えるか、セルの書式を文字列にする
Range("A2").Value = "'=(1,2,3," & Range ("A1").Value & ",5,6,7,8,9,""abc"",0)"
2021/12/01(水) 11:09:46.49ID:3lXUqEaB0
>>729
クラスのコンストラクタ自体はあるよ。引数が使えないだけで。
VBAの場合は一般的に言う継承は使えないけども移譲が使えるのでクラスで多態性を持たせる場合は
テンプレートメソッドパターンを使うのではなくストラテジーパターンを使う。
741デフォルトの名無しさん (ワッチョイ 9ff2-BhQk)
垢版 |
2021/12/01(水) 11:40:27.26ID:QKQZx/r30
ユーザーフォーム上でのハイパーリンクに関して教えて欲しいです。

エクセルで下記のようなデータがあり、各レコードをユーザーフォームで
表示できるようにしています。

レコード 氏名  駅   地図(URL)
1    山田  新宿  https://map.yahoo.co.jp/search?q=新宿
2    鈴木  渋谷  https://map.yahoo.co.jp/search?q=渋谷
3    木村  池袋  https://map.yahoo.co.jp/search?q=池袋



その際、「地図(URL)」のテキストボックスを使ってハイパーリンクの設定を、あるいは
「地図(URL)」のラベルを使ってリンクを開くをお教えていただけないでしょうか。
2021/12/01(水) 11:45:54.74ID:3lXUqEaB0
>>741
http://officetanaka.net/excel/vba/tips/tips01.htm
2021/12/01(水) 11:51:59.83ID:3lXUqEaB0
まぁその前にExcelのユーザーフォームは
スプレッドシートやグリッドビューや
HTMLでいうTableタグのようなものが無いので
擬似的に一覧を作る方法を考える方が
先だと思うけど。
744デフォルトの名無しさん (ワッチョイ 9ff2-BhQk)
垢版 |
2021/12/01(水) 11:57:47.33ID:QKQZx/r30
Private Sub ラベル地図_Click()
Dim a
a = 地図.Text
ユーザーフォーム.FollowHyperlinks Address:="a"
End Sub

なんとなくこんな感じなかとやってみたのですが、エラーでした。
宜しくお願いいたします。
745デフォルトの名無しさん (スプッッ Sd3f-y/uX)
垢版 |
2021/12/01(水) 11:59:07.74ID:JKRXUH4pd
VBAって初学者はどうやって勉強すればいいんですか?
2021/12/01(水) 12:03:16.45ID:G1NuLHw5M
>>744
=a
だとどう?
2021/12/01(水) 12:12:34.05ID:KAm88z78M
>>745
変数の定義、ループ文の書き方、条件分岐の書き方が分かれば大体の言語はなんとかなる
あとは自分が何をやりたいかによってこんな動作はできるか?あんな動作は可能か?って一つ一つ調べていけばいい
処理速度が遅いと感じ始めたら最適化とかに手を出したり、シークバーを表示することで体感速度を早めたりっていう事を覚えていけば最低限はなんとかなるんじゃない?知らんけど
2021/12/01(水) 12:23:56.22ID:3lXUqEaB0
>>745
「〜をやりたい」という目標を決めたら
後はGoogle先生とマクロ先生に聞けばいいんじゃないかな
2021/12/01(水) 12:31:06.77ID:3lXUqEaB0
>>744
そうだね、
まずは3行目の変数に代入している文字列を
ダブルコーテーションで囲めばいいんじゃないかな。
後、地図.txtってどこのフォルダに格納されているのかな?フルパスで書かないとダメだよね。
最後に>>746の人が言ってるとおり、それだとaという変数の中にある頭を見て飛んでるんじゃなくて、
aというリンク先に飛ぼうとしているよね。
2021/12/01(水) 12:33:40.85ID:3lXUqEaB0
ごめん誤表記
頭×
値◯
2021/12/01(水) 12:42:23.19ID:k/wjCDWPa
>>739
ありがとうございます
無事にできました!
752デフォルトの名無しさん (ワッチョイ 9ff2-BhQk)
垢版 |
2021/12/01(水) 13:31:12.78ID:QKQZx/r30
Range ってテキストボックス内の文字列(アドレス)指定できたでしょうか??


テキストボックスのオブジェクト名を間違ってた・・・

Private Sub ラベル地図_Click()
Dim a
a = "txt地図" ’テキストボックス(txt地図)内表示の文字列
ユーザーフォーム.FollowHyperlinks Address:=”a"
End Sub

・・・またエラーだ・・・。
「a」「”a”」ともに・・・。
.FollowHyperlinks がダメなのかなぁ。

安易に質問してすみませんでした。
勉強しなおします。
他いろいろ試してまた分からなかったら来ます。
753デフォルトの名無しさん (ワッチョイ 9ff2-BhQk)
垢版 |
2021/12/01(水) 13:36:58.56ID:QKQZx/r30
>>745
上の>>744初心者です。
マクロの記録使って、そのコード見てイジってます。

この方法って間違ってる気もしますが・・・。
754デフォルトの名無しさん (ラクッペペ MM8f-aw+H)
垢版 |
2021/12/01(水) 13:40:49.74ID:RRRUPRTbM
フォームオブジェクトには.FollowHyperlinksというメソッドは無いね

WorkbookかApplicationのを使うとよろし
755デフォルトの名無しさん (ワッチョイ 5701-hL2Y)
垢版 |
2021/12/01(水) 14:39:09.38ID:8YNSD3Np0
Sub マクロ保存したまま拡張子変換()
Dim bk As Workbook
Dim f As Variant
Dim gf , hf
Dim fro As Object
MsgBox (“変換するフォルダを選択して下さい”)
Set fso = CreateObject(“Scripting.FilesystemObject”)
With Application.FileDialog(msoFileDialogFolderPicker)
.show
gf = .SelectedItems(1)
MsgBox (“保存するフォルダを選択してください。”)
FileDialog(msoFileDialogFolderPicker)
. Show
hf = . SelectedItems(1)
End with
Set = fso.GetFolder(gf).Files
For Each f in fso.GetFolder(gf).Files
If LCase(fso. GetExtensionName(f.name)) =“xlsm” Then
Application.DisplayAlerts = False
Set bk = Workbooks.Open(gf & “\” & f.Name)
bk.SaveAs gf & “\”fso.GetBasename(f.Name) & “.xlsx” , 51
bk.Close
set bk = Nothing
End if
Next
fso.MoveFile “gf & \ *.xlsm,_ “hf”
set gf = Nothing
set hf = Nothing
set fso = Nothing
MsgBox “ finished”
End sub
元のマクロデータ結果が消えるのと、フォルダ移管がうまくいきません。誰かたーすーけーてー。
756デフォルトの名無しさん (ワッチョイ d74e-y/uX)
垢版 |
2021/12/01(水) 14:39:40.62ID:WlcvAg5v0
>>747
>>748
ありがとうございます
757デフォルトの名無しさん (ラクッペペ MM8f-aw+H)
垢版 |
2021/12/01(水) 15:27:28.95ID:RRRUPRTbM
今日び小学生でも拡張子変更なんぞせんぞ
2021/12/01(水) 15:29:25.99ID:+HkH87nC0
へぇー
2021/12/01(水) 15:37:37.70ID:Jx6PEbk5M
拡張子なんてずっと前から非表示がデフォルト設定だもんな
表示してるのはIT技術者とマニアぐらい
2021/12/01(水) 17:45:16.35ID:j0FzcgCOM
>>745
解説本読んだら、やりたい事 vbaでググる
2021/12/01(水) 17:45:55.82ID:G1NuLHw5M
>>755
さっきの人もそうだけど、とりあえず変数を""で囲うのやーめーてー
2021/12/01(水) 18:55:24.01ID:mU2lRylq0
>>755
せめてコード載せる時は
全角ダブルクォーテーションやーめーてー
2021/12/01(水) 20:04:07.09ID:D4hpf6JM0
スマホ使いにそんなこと言ってもしゃーないで
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。