Excel VBA 質問スレ Part70

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/03/18(木) 22:08:43.71ID:jtngtgXU0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/05/11(火) 07:53:09.78ID:FeyzCVkSd
>>815
そんなん知ってるが、結局VBAかよw
2021/05/11(火) 09:04:47.57ID:/SA0DWk40
>>816
適材適所だろ
全部VBAで組むより全然楽だし分かりやすいよ
818デフォルトの名無しさん (ワッチョイ 6aad-C7Xb)
垢版 |
2021/05/11(火) 11:31:41.06ID:OkNnulfr0
無償のSQL Serverがあるのに、わざわざ有償で低性能のAccessを使う理由は、初級者であること以外にないですよ
でもExcelはいろんな点で他では追い付けない性能があるので、初級者でなくても使う理由がある

AccessのグリッドもVS等の普通のグリッドとは違い、非同期のリピーターコントロールでできていて、
大量件数でも先頭から順次描画し、全行をメモリに持たないため、高速になるとのこと
その点では、VSより性能がいい(あと子要素の帳票フォームの簡潔さ)
そのかわり常に大量のイベントが走るため、不安定になりやすい
(DBとしてはなんちゃってなので、業者はADP等でSQL Serverと連携して使う)

その速度をさらに超えるのがExcel(特定の使い方で)
イベントが少ないので、不安定になりにくい(Delphiもその点が良かった)
イベントはブック単位で代表できるため、ソースも統合管理しやすい
2021/05/11(火) 11:39:24.42ID:UIB0JMdPa
ユーザーフォームのマルチページ、タブ自体のBackColorプロパティってありますか?
なければ代替手段を教えてください
820デフォルトの名無しさん (ラクッペペ MMe6-YEtS)
垢版 |
2021/05/11(火) 14:43:21.70ID:0OaQcACpM
Excelフォームが中途半端な出来損ないだから
ここを最新のユーザーエクスペリエンス()で作り直せばAccessなんかすぐに駆逐できる
2021/05/11(火) 18:04:28.65ID:ZT0Qqj13a
そうだね
大規模なのはSQL
小回りをきかせたいときはエクセル
事務屋ならこれで8割できてしまうだろうね
822デフォルトの名無しさん (ラクッペペ MMe6-YEtS)
垢版 |
2021/05/11(火) 19:06:43.69ID:YSh4nGIkM
ただ、VBAはヤメテ
2021/05/12(水) 12:57:12.16ID:mV8qcvY8a
フォームがもう少し何とかなればとは思うよ
>>819然り、痒いところまであとちょっとって感じることがしばしば
2021/05/12(水) 15:18:28.53ID:BdPBmasF0
>>822
アホか
ここは何のスレだと思ってるんだ?
VBA書くのがイヤなら
SQLSERVERのスレ立てて
そこでSQLでもストアドプロシージャでも
関数でも好きな話題してれば良かろう
2021/05/12(水) 15:47:57.27ID:MQbyKY6x0
なんだ?喧嘩勃発か?
2021/05/12(水) 15:55:47.07ID:bNkKHmITM
ちょこちょこ書く分には十分なものだと思うよ
2021/05/13(木) 12:11:34.16ID:RAFicIoxa
そうかな
2021/05/13(木) 16:10:32.92ID:yc7BZe0Ia
ビジネスやってる人じゃないとわからないと思うよ
2021/05/13(木) 17:14:21.80ID:4K+rsr0c0
確かに。趣味レベルの自分じゃ縁のない話すぎるわ
2021/05/13(木) 20:39:49.87ID:BPKFCkYp0
なんのビジネスだよ・・・
2021/05/13(木) 20:43:26.98ID:nlP9UXqMd
普通の仕事で書くコードってことじゃないの
2021/05/13(木) 20:48:35.69ID:a3vkA3q7a
ビジネスってよりワークで使うかな
ワークマンってよりはビジネスマンか…
2021/05/13(木) 20:50:41.60ID:a3vkA3q7a
使いどころはビジネスってよりワークかな
でもワークマンってよりはビジネスマンか…
2021/05/13(木) 21:12:55.35ID:HJ1eRgpP0
ワークってよりビジネスな場合もあるかな
でもワークマンってよりはビジネスマンか…
2021/05/13(木) 21:19:10.07ID:BPKFCkYp0
なんでvbs採用したんだろう
jscriptならもっと未来あっただろうに
tsへの移行も自然だっと思う
2021/05/13(木) 21:27:44.43ID:HJ1eRgpP0
>>835
そらもうvbaの登場時期が早かったからとしか言いようがない
vba開発チームが頑張ったんだろう
30年ぐらい前はBかCが当たり前で、インターネットもロクにないのに謎のjscriptなんて言語が勝つのは無理がある
2021/05/14(金) 08:17:06.17ID:NU+NRHZVd
>>818
www
初級者まる出しの文章で笑えるw
2021/05/14(金) 08:20:10.01ID:NU+NRHZVd
>>819
普通じゃ無理。
無理矢理タブもどきをつくるか、頑張ってWin32APIでやるか。
Win32APIでやるのは、まあ辞めとけ。
2021/05/14(金) 08:39:26.02ID:q7wj393Za
タブを切り替えた瞬間にバックカラーも切り替えれば良いだけ
2021/05/14(金) 09:49:10.63ID:rbrSxZ/Wa
勝手に見出しの色のことだと思ってた
エクセルのシートにやるみたいなやつ
2021/05/14(金) 10:40:26.20ID:f8pG7pdca
681です
皆さんのおかげで無事目的のコードが作れました

あと1つ質問なのですが…
画像のように重複した数値を除く総計を算出したいと思っています
会社名毎の数値を合計すればいいだけだと思ったのですが、
どうしても重複のものも一緒に合算してしまいお手上げ状態です
因みに元データは都合によりいじれないため、合算前に重複部分を削除等はできません
恐れ入りますが、宜しくお願いします
2021/05/14(金) 10:41:19.08ID:f8pG7pdca
画像を貼り忘れておりました
https://i.imgur.com/HLZYwhr.png
2021/05/14(金) 11:33:58.88ID:+U8xhPuO0
会社ごとの重複を除く合計が出たんだからそれを足すだけだろ
逆に何をやったらまた重複したものも合算するのか理解できない
2021/05/14(金) 11:38:54.22ID:usYNgZ690
いつものあいつだぞ
2021/05/14(金) 12:11:07.63ID:mu0LH/UJa
>>841
もとデータをいじらないでも、もとデータを別のシートにコピーすればいじれるんじゃね
2021/05/14(金) 12:24:14.75ID:Vktv5FHm0
>>841
重複除けてるのなら、結果をSUM関数で合算するだけじゃん。

>>686
で上げたように、そもそもVBAすら使う必要ない。
847デフォルトの名無しさん (アウアウウー Saaf-/TFo)
垢版 |
2021/05/14(金) 13:02:54.78ID:kX62fe1ba
君らも構うねー
>>681への数多の回答を経て「皆さんのおかげで」としか言及しない礼儀知らずなんぞ俺なら2度と助けようと思えないけどな
2021/05/14(金) 14:11:01.00ID:C4z8VNUC0
>>841
SQLでやってるの?
VBAでやってるの?

SQLなら会社、氏名、数値でグルーピングしてから合計求めりゃいいだろうし
VBAでやってるなら上からループして会社、氏名、数値をコレクションかディクショナリーに登録しておいて
同じ組み合わせのものが登録されてたら飛ばせばいいだけじゃないの?
2021/05/14(金) 16:00:12.91ID:bBl2sxC0r
ほんとに、よう構うわ
850デフォルトの名無しさん (ワッチョイ 0f5f-JrGs)
垢版 |
2021/05/14(金) 16:15:08.56ID:N2rlLeCr0
暇人しかレスしない
そりゃ高齢化する罠
2021/05/14(金) 17:11:44.35ID:C4z8VNUC0
暇と時間は自分で作るもの
2021/05/14(金) 17:53:42.33ID:usYNgZ690
この「いつものあいつ」はperlスレで釣りしてたあいつだろ
回答がないと別ID自分に回答するクズだぞ
IDをコロコロ変えていることで気付け
2021/05/14(金) 18:02:17.06ID:9jitt6PZ0
ここに若い人はいないと思われ
定年退職した60〜70のジジババ様がメインの予想
2021/05/14(金) 19:35:21.69ID:EALw/Xv8a
いちゃ悪いか?
2021/05/14(金) 19:38:49.82ID:b+Ipd3IB0
>>854
煽り体制なさ杉
ゴミは無視して自分のやりたいことをしておけば良い
2021/05/14(金) 19:53:03.83ID:FyOJKl4nM
アラサーのおっさんですわ
857デフォルトの名無しさん (ワッチョイ c7e6-JFKK)
垢版 |
2021/05/14(金) 20:06:30.42ID:M77EX5P+0
平成生まれのおっさんかよ
2021/05/14(金) 20:10:13.25ID:b+Ipd3IB0
令和生まれの赤子が常駐してたらマジでびびるしこんな言語をやるべきじゃないと諭すレベル
2021/05/14(金) 23:02:24.08ID:eHp6F4GU0
答えたい人は答えて無視したい人は無視すればいいのに
「俺が気にくわないからお前らも答えるな!」ってガキ大将かなんか?
2021/05/14(金) 23:04:28.38ID:b+Ipd3IB0
>>859
支え合ってる人たちが気に入らない
という社会に馴染めない方の怨嗟

vbaという単語を知ってるだけでも見込みはあるのに、どうしてそうなったのか
2021/05/15(土) 01:26:37.20ID:FnRhwbWQ0
定年したジジババだらけだったら異常だろ
多分30〜50代あたりのPC世代だね
2021/05/15(土) 10:20:07.29ID:sw5CYKBX0
ウィンドウズ95を25で迎えた人間は50歳行ってるよ
863デフォルトの名無しさん (ワッチョイ e9ad-/TFo)
垢版 |
2021/05/15(土) 11:32:20.38ID:ULjvOOdJ0
>>859
そんな奴おらんやろ〜
864デフォルトの名無しさん (エムゾネ FF2f-JrGs)
垢版 |
2021/05/15(土) 12:01:56.35ID:eYtIld1hF
memo
https://www.mhlw.go.jp/toukei/list/dl/maikin-teisei-20210406.pdf
https://www.hello-pc.net/howto-excel/shisyagonyu/
http://www.excel.studio-kazu.jp/kw/20131108152616.html
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12216877167
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1314241033
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_excel-mso_windows8-mso_2013_release/excel%E3%81%AE%E5%8D%98%E7%B4%94%E3%81%AA%E8%A8%88/e5421c34-8053-4132-a0a6-14729e505376
2021/05/15(土) 12:25:50.26ID:vXVB+fnY0
>>863
チッチキチー
866デフォルトの名無しさん (ワッチョイ ffbb-D5yk)
垢版 |
2021/05/15(土) 13:49:58.81ID:YDtAUn460
Lbound関数がどうもうまく出来ないのでお知恵を拝借させてください。

--------------------------------------------------------------------
【VBA標準モジュール】
Option Explicit

Function F_Test(wRange As Range) As Integer
F_Test = LBound(wRange)
End Function

--------------------------------------------------------------------
【ワークシート】
A列は別に何でも良くて,例えば以下のとおり。
A1セル 10
A2セル 11
A3セル 12
A4セル 13

--------------------------------------------------------------------
B1に =F_Test(A1:A3) の数式で「3」という答えが欲しい。
その他,A1:A4なら「4」,A2:A3なら「2」という感じ。

要は引数の配列の添字の数が欲しい。


Functionの引数部分をVariantに変えて
Function F_Test(wRange As Variant) As Integer にしてもうまく行きませぬ。
867デフォルトの名無しさん (ワッチョイ ffbb-D5yk)
垢版 |
2021/05/15(土) 13:54:19.11ID:YDtAUn460
すみません。 LとUを間違えました。
× LBound
○ UBound

配列がありません とか #VALUE! になってしまいます。
868デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/15(土) 13:55:24.28ID:Q8PHpDoBM
wRange.rows.Count
2021/05/15(土) 14:02:11.21ID:ur6+LZEp0
>>867
F_Test = wRange.Count

>>868
横長だとアレでソレ

そういや関数には単純にセルの数を返す方法ってないんかね
870デフォルトの名無しさん (ワッチョイ ffbb-D5yk)
垢版 |
2021/05/15(土) 14:10:21.57ID:YDtAUn460
>>868
>>869

なんと!
ありがとうございます。

配列 サイズ で検索すると Ubound関数を紹介するサイトばかりで,何のことはない count でOKとは!
2021/05/15(土) 14:13:32.27ID:zrs2Seg4H
>>869
セル数は一発では求まらないね
WorksheetFunction.COUNTA + WorksheetFunction.COUNTBLANK
とか、
UBound(1) * UBound(2)
とか工夫が必要
2021/05/15(土) 14:15:26.88ID:q5D0BLy0a
自分がわかっている事を、相手に伝えられない
、いっしゅの病気だと思っておいてね
2021/05/15(土) 14:17:09.49ID:ur6+LZEp0
>>870
ウォッチ式に「wRange」入れると中が見れる
「+」押してそれっぽい奴探せばok
めんどい事しなくても、大体は元々用意されている

>>871
ありがとう
まぁ今まで気づかなかったぐらいだし、まぁ無くてもいいっちゃいいんだけど
874デフォルトの名無しさん (ワッチョイ efba-u+PU)
垢版 |
2021/05/16(日) 15:00:47.34ID:fN3wEca+0
Sub Func()
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.Navigate "https://www.aguse.jp/";
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
objIE.Document.getElementById("url").Value = "99.9.9.9"
objIE.Document.getElementsByClassName("btn1").Click
End Sub
なぜ、クリック処理の所でエラー発生するのでしょうか?
2021/05/16(日) 15:15:41.45ID:cdV5xYRld
>>874
getElementsByClassNameは配列を返すから(同じクラスを持つ要素の配列が返る)
2021/05/16(日) 15:32:17.72ID:T2VZn2Kl0
IDがあるならgetElementByIDの方が良いぞ

classのまま一つ目をclickするなら
objIE.Document.getElementsByClassName("btn1")(0).Click
2021/05/16(日) 15:39:13.46ID:cdV5xYRld
CSSっぽく指定できて最初の要素を返してくれるquerySelectorもオヌヌメ
878デフォルトの名無しさん (ワッチョイ efba-u+PU)
垢版 |
2021/05/16(日) 16:10:27.36ID:fN3wEca+0
>>875~877

ありがとうございます。
クリックできました
2021/05/16(日) 17:21:27.26ID:ak429d4ca
クリックのことかー!
2021/05/16(日) 18:59:49.40ID:uzBgfuya0
ダブルクイック
2021/05/18(火) 02:01:26.83ID:BeO0jfUB0
>>870
だって配列じゃないからな
変に用語使わず素直に range 個数 とかでググった方がいいよ

上のレスにあるgetelemetsby系のメソッドも返すのは配列じゃなくてコレクション
2021/05/18(火) 06:19:11.84ID:Z0RWJbQc0
MapだのArrayだの機能入れりゃいいだけなのに入れない
どういうつもりだこいつら
2021/05/18(火) 08:15:11.48ID:8cwZKDcEM
VBAは既に終わった過去の技術
移行を促すために意図的に使いづらくされることはあっても、改善されることはない
2021/05/18(火) 08:58:47.08ID:Z0RWJbQc0
そこにある幸せを制限されてる
上から目線で苦しめられてる
悔しくて泣く
885デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/18(火) 11:12:26.25ID:9uIGZAIgM
Office365でしか動かないVBAV2作るぐらいなら他の言語使うわな
2021/05/18(火) 12:10:40.31ID:sRK+fHDU0
だったらそうすればいい
2021/05/18(火) 14:24:29.88ID:Xi/08Sqba
だったらそうすればって別に俺たちはマイクロソフトじゃねえけど
2021/05/18(火) 14:42:19.77ID:KlG9vmA0M
Office365には既にOffice Scriptsがあるからそこはとっくに解決済み
あとはVBAを弾圧していくだけや
2021/05/18(火) 14:48:17.90ID:R43akpHGM
Power FX
https://docs.microsoft.com/ja-jp/power-platform/power-fx/overview
2021/05/18(火) 16:33:00.45ID:5G0DWm0g0
VBAからJavaScript書くと
予約語は[]で括らなければいけなかったり
Callbynameで指定しなければいけなかったり
色々めんどくさい
Jqueryだって使えるか分からない

そもそもJavaScriptなんてWebで
クライアント周りで使うもんだから
わざわざEXCELの言語で使う用途が
よく分からない
まだクラッシックASP辺りで
VBSと組み合わせて使うなら納得もいくけど
そんな難しいもんじゃないから
必要に駆られたときに覚えれば十分だろう
2021/05/18(火) 18:00:53.92ID:sY2jShf/0
だから若者はVBに興味示さない
VB=高齢者のプログラミングだからでしょ?
892デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/18(火) 18:48:43.65ID:ljRiA37AM
jqueryでExcel.Applicationを操作出来るように拡張するのか
夢が広がるね
2021/05/18(火) 18:49:34.47ID:5G0DWm0g0
EXCELで簡単にプログラム組むことが出来るからな
VBと言うのをVBSのこと言ってるのかVB.Netのこと言ってるのかVBAのこと言ってるのか知らんが
EXCELで楽したくてVBAから入る若い人は多い。
VBA覚えた人がVB.NetやってC#やってそこからWeb系に入って初めてJavaScriptをHTMLやCSSと一緒に覚える人なんてザラ。
2021/05/18(火) 19:43:19.02ID:LbhgO8Sf0
>>893
完全に俺
経理だけど、vbaで楽してC#でゲーム作って、
jsでクラウドツールのサイト自体書き換えて勝手に機能追加したりphpでスクレイピングしたり
年中プログラム書いてるわ。楽しい
2021/05/18(火) 19:49:05.74ID:LbhgO8Sf0
>>890
VBAでjs使うのは、一つは動的なサイトのスクレイピングする時
htmlだけの操作でしんどい時は、jsでclick辺りさせるだけでサクサク進む事がある
ってかこれ以外でjs書くことはほぼ無いと思う。

jquery使えない時は無理やりappendかなんかしてたけど、もうやり方も忘れたな
色々試している内にchromeのコンソールにぶっこむのが一番楽って結論にたどり着いた
2021/05/18(火) 20:48:35.33ID:Y1RJXdtP0
Ruby で、Selenium Webdriver, Nokogiri で、
スクレイピング・ブラウザの自動操作する時にも、
JavaScript, jQuery を使える

埋め込みRuby・ERB を使えば、どんなファイルにも、
<%= 式 %>, <% 式 %> で、Rubyの式を埋め込める

a.html.erb, b.js.erb みたいに、
HTML, JavaScript ファイル内に、Rubyの式を埋め込める
897デフォルトの名無しさん (ワッチョイ bb8e-dhLD)
垢版 |
2021/05/18(火) 20:57:22.08ID:dFlzu8QN0
>>896
Ruby馬鹿は>>712のような嘘を書いて逃げる馬鹿
2021/05/18(火) 23:24:28.39ID:sY2jShf/0
そんな事よりさ、おぢーさん達は加齢臭の処理ちゃんとしてくれよ
若者に失礼だと思わね?プンプンプンプンさ
2021/05/19(水) 00:19:04.29ID:GKVmaO5T0
>>896
何でEXCELの利点であるシートやフォームを使わないの?
バカなの?死ぬの?
2021/05/19(水) 00:20:19.16ID:GKVmaO5T0
>>898
ジジイであってクレクレw
2021/05/19(水) 01:20:40.10ID:ZD8mpcBW0
くっせぇーなマジで
パソコンまで加齢臭プンプンなんじゃねーのか爺さん達よ?
2021/05/19(水) 07:45:42.64ID:WworO/MIM
5chは加齢臭ジジイの巣窟ですよ。
子供は他所で遊んだ方が良いですよ。
2021/05/19(水) 14:08:44.86ID:IrWk1Moq0
>>870
それはVariantの2次元配列にRange.Valueを代入して高速化を行う場合の話で、単に行数求める場合に使うのは筋が違う。

Dim varRng As Variant
varRng=wRange.Value
F_TEST=Ubound(varRng,1)

というか、Ubound使うなら引数をRangeにするのが間違い。

Function F_Test(wRange As Variant) As Integer
F_Test = UBound(wRange,1)
End Function

として、呼び出す時に

Debug.Print F_TEST(sht.Range("A1:A3").Value)

とする。
2021/05/19(水) 18:26:06.40ID:Vg/vRgKrd
標準モジュールにcsvFile関連に関わるコードをまとめようと思ってます。
フォームABCと3つありそれぞれのTextBoxの文字列を使用するのですが、引数にフォームを渡すと後でモジュールの引数?を見た時にどのフォーム?ってなるんですが、なんか分かりやすい方法ありますか?
2021/05/19(水) 18:34:23.71ID:/q2TOFSQ0
変数名に書けばいい
2021/05/19(水) 20:30:25.56ID:GKVmaO5T0
>>904
あれ?
EXCELのFormってNameプロパティ持って無かったっけ?
907デフォルトの名無しさん (ササクッテロレ Sp63-swby)
垢版 |
2021/05/19(水) 22:00:48.31ID:+ffuEuggp
みんな、どうやってVBA覚えた?必要に迫られて?
2021/05/19(水) 22:12:24.80ID:jE/FqELl0
>>907
まだ覚えられないの?
909デフォルトの名無しさん (ワッチョイ cd01-gSvD)
垢版 |
2021/05/19(水) 23:13:26.00ID:GsBTRjrb0
あわしろ氏は、Microsoft固有の言語は覚えないほうが良いと言ってた。
910デフォルトの名無しさん (ワッチョイ bb8e-dhLD)
垢版 |
2021/05/19(水) 23:17:32.49ID:cF8YUUzA0
馬鹿の記憶キャパシティは限られるからな
2021/05/19(水) 23:22:58.20ID:mqMv5E730
覚えるとかそういうものではない
2021/05/19(水) 23:42:58.43ID:ZD8mpcBW0
>>907
必要に迫られて覚えたもなにも、中学か高校で習うだろ普通。
2021/05/20(木) 00:07:22.00ID:6elix0QCH
>>909
.netもMS固有の言語みたいなもんだが、普通に色んな職場で使われとるやん
2021/05/20(木) 01:22:13.99ID:BLOb04120
学習しなくても最初からできる天才タイプもたまにいるよマジで
2021/05/20(木) 01:56:26.37ID:6elix0QCH
そもそもマイクロソフト固有の言語ってなんやねん
みんな既成の言語や他社製品を買収して、それを手直しした物ばっかやん
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況