Excel VBA 質問スレ Part64

■ このスレッドは過去ログ倉庫に格納されています
2019/12/02(月) 23:43:54.18ID:ngrqyTy20
!extend:checked:vvvvv:1000:512

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

※前スレ
Excel VBA 質問スレ Part63
https://mevius.5ch.net/test/read.cgi/tech/1568630099/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/02/28(金) 22:10:29.04ID:KGz3N4NDa
2G越えるファイルexcelで読むの?
2020/02/28(金) 22:12:17.34ID:KGz3N4NDa
あ、一覧か
とりあえず負の数なら強引に変換するとか
2020/02/28(金) 22:50:10.05ID:aE85awzW0
それでも4Gまでしか扱えないから困るんじゃない?やっぱり根本的に解決するにはFSOが必要だよ
2020/02/29(土) 01:59:32.20ID:nzXCWKfq0
LongLongってVBAで使える?
2020/02/29(土) 06:46:07.87ID:PnWd0bax0
>>784
Officeが64bit版なら使える
2020/02/29(土) 08:45:02.05ID:yVx3ckV70
>>773
無理にVBA使わなくてもBATでいいんじゃ・・。
2020/02/29(土) 10:00:21.23ID:8kABrwU4d
>>772
Sendkeysなんて絶対使わないというぐらいの考え方であるべき。
Sendkeys使うぐらいならWM_KEYUP使う。
普通はWM_COMMAND使う。
2020/02/29(土) 17:24:40.65ID:pn9TVa1rd
でもWindowsの設定とかストアアプリ系に入力したい時そういう考えだと詰む
2020/02/29(土) 19:33:22.04ID:8kABrwU4d
>>788
つまねえよ。
方法なんていくらでもある。
2020/02/29(土) 19:49:03.27ID:aTMkJ8LJ0
>>789
Windowsの設定はいいとして、ストアアプリ系で他に使えるいくらでもある方法教えて下さい
2020/02/29(土) 19:55:39.58ID:yVx3ckV70
>いくらでもある

何か前にも聞いたことあるな。
いくらでもある → 具体的にはどうするの → 絶対答えられない のパターン。
前とは別の人だといいね。
792デフォルトの名無しさん (スプッッ Sd8a-ctjd)
垢版 |
2020/03/01(日) 01:31:17.39ID:08o/9f1Pd
WindowsPhoneとかストアアプリとかアッというまに消えたよね
2020/03/01(日) 14:55:22.38ID:HFjntDoM0
消えたのか、どうでもいいけど
2020/03/01(日) 20:39:03.78ID:pGVc13rd0
作る側の負担が大きい上にメリットがない
2020/03/01(日) 20:39:37.46ID:0p2p+SL30
>>790
その詰むというアプリは具体的に、何てアプリで、どこで詰むんだよ?
アクセシビリティやUIAutomationもダメなのか?
2020/03/01(日) 21:13:10.43ID:e3qx9Rp60
>>795
アクセシビリティって何すか?
2020/03/01(日) 21:20:05.52ID:l9YkKU150
その人じゃないが、UIAutomationのinvokePattern.Invokeでフリーズして詰んだことはある。
2020/03/01(日) 21:23:39.21ID:l9YkKU150
>>796
多分IAccessible。
2020/03/02(月) 00:30:19.58ID:lG3i9xSc0
>>798
多分も何も、それ以外有るまい。
UIAutomationの前身だろ。

>>797
それは何かが足りないとか、他の方法も駄目なのかとか、いろいろ回避策有りそうだが。
2020/03/03(火) 15:10:58.72ID:7/oOWVG0M
プログラミング言語人気ランキング2020
https://active.nikkeibp.co.jp/atcl/act/19/00124/

使用している言語のトップ10内にVBAが。まあ、実際そんなもんでしょう
C/C++がトップなのは日経がゆえなのか…
PL/Iが出てるのが懐い(ToT)
htmlが違和感。まあ言語だけど…
2020/03/03(火) 17:19:11.87ID:JZf49imxr
>>800
全部ウィンドウズでできますか?
2020/03/03(火) 18:02:04.76ID:ZNfWdjcz0
>>800
COBOLがC#の1/3もあるのか
すごいアンケートだな
2020/03/03(火) 18:59:05.76ID:tIhoJqwEa
rubyってこんなもんか
2020/03/03(火) 19:26:06.93ID:b2+NWnE80
COBOLは使いたくなくても使わざるを得ないんだよ
2020/03/03(火) 20:03:07.46ID:AJx5UoX4M
まあ業務で使ってる言語ならそれほど違和感無いな
なんだかんだ言ってC/C++はつえーわ
あといい加減HTML/CSSを入れるのをやめろと思うわ
言語と言ってもプログラム言語じゃねーし
2020/03/03(火) 22:21:40.76ID:dFpQRGVD0
Java と VBA が同じって有り得ないと思うが
2020/03/03(火) 22:32:12.13ID:ZNfWdjcz0
だから職場で強要されてる言語のランキングでしょ
能率とか好みとか無関係
808デフォルトの名無しさん (ワッチョイ ff8e-oceE)
垢版 |
2020/03/03(火) 22:33:01.86ID:dGcpOur50
これと似たような理由だろ
https://i.imgur.com/q4GXr11.jpg
2020/03/03(火) 22:33:31.58ID:1bYPNvMdx
COBOLは数十年に及ぶ後方互換性維持の実績があるから絶対にこのくらいの順位で落ち着く
COBOL不要論とか妄言だからなマジで
2020/03/03(火) 22:49:49.99ID:b2+NWnE80
VBAの依頼はとても多い
2020/03/04(水) 00:14:55.68ID:SHIP3lO60
アドインをショートカットで呼びだす方法が調べてもわからないのですがあるのでしょうか
2020/03/04(水) 00:21:59.37ID:9VsHR+eQa
業界が慢性的な人不足だから、ある程度メジャーな言語ならそりゃ絶対的にはどれでも依頼はとても多いさ
どれを選んでも仕事は十分にあるのだから、どれとは言わないがあえて単価も人材市場評価も低いものを選ぶ必要はない
2020/03/04(水) 06:19:22.68ID:Yqjto87s0
>>806
うちだけかも知れんがJava案件激減したよ
VBAは自前のツールとかちょっとしたデータ処理に使ってる人も多いし
814デフォルトの名無しさん (アウアウエー Sa3f-QWq5)
垢版 |
2020/03/04(水) 12:28:43.38ID:5h+Z4JsAa
VBAの将来性ってどうなんですかね?
これがいい、っていう代わりがあればすぐにも移行するけど、それが示されないのにただ VBAは将来が… って言われてもなぁ…
2020/03/04(水) 12:48:25.12ID:pN64i/qda
なんか何年も前からそう言われ続けている気がする
2020/03/04(水) 12:52:02.85ID:wYjs4WK40
現状維持か消えるかだろう
どう考えても発展する余地はない
2020/03/04(水) 12:53:02.66ID:wYjs4WK40
どちらにせよ今のCOBOL需要みたいなのは残るだろうね
2020/03/04(水) 12:53:45.23ID:192gnjdP0
ずっと10年以上VBAは終わりと言い続けてるやつがいるけど、ランキングを見ればわかるように現場では普通に使われてる
WindowsというOSも終わりと以下略

一度広まってしまった物は簡単には消えないんだよ
生態系を壊してるブラックバスと同じ
2020/03/04(水) 13:23:13.58ID:GaU/rHnt0
じゃあコロナも消えないな
2020/03/04(水) 13:55:31.39ID:HLZcEGPZ0
自然淘汰を待っているのと積極的に対策してるのを同列に語るのはどうかと
2020/03/04(水) 14:16:54.47ID:ryjR/JBt0
VBAが終わったらMSオフィスを使う理由がなくなる
2020/03/04(水) 16:39:27.01ID:MKyvAYdn0
何をもって終わったというのか、後続が出なくても現場で使っていたら終わってないし
2020/03/04(水) 18:32:59.89ID:O/qwuvY6M
まあ既存のVBAマクロが新しいバージョンのExcelで動かなくなる日が来るとは思えないが、
VBEが廃止されて新規に作れなくなるのは十分にありうる
終わりがくるとしたらそれだろう
実際、VisualStudioなどのMS製品の多くは昔はVBAが入ってたわけだしな
2020/03/04(水) 19:49:17.22ID:192gnjdP0
>>819
もちろん病原菌も根絶は不可能
治療法を探して対処するしかない
2020/03/04(水) 20:05:22.88ID:SHIP3lO60
>>811
これ誰か知りませんか
2020/03/04(水) 20:13:23.22ID:4N1Kq+pZ0
>>825
クイックアクセスツールバーに入れてAltで呼び出すのが手軽なんじゃね
2020/03/04(水) 20:17:28.31ID:3PnKhINo0
ショートカットってなにさ
828デフォルトの名無しさん (ワッチョイ ab01-UjD1)
垢版 |
2020/03/04(水) 20:26:14.55ID:X6jjanDB0
ctrl + A みたいなんやろ
2020/03/04(水) 20:41:44.37ID:hxmeGFhc0
調べてもわからないってなんやねん・・。
俺もわからないからググったら、検索結果の1番上に出てきたじゃんか。
830デフォルトの名無しさん (スプッッ Sdbf-kTmN)
垢版 |
2020/03/05(木) 14:00:12.70ID:rKi2A6DKd
昔は何でもかんでもエクセルだったけど今は専用アプリが増えてエクセルの出番が減ってる
今後はもっとエクセルを使う場面が減るだろう
エクセルが無くなる事はないにしても
2020/03/05(木) 15:07:31.53ID:Ug+scqfur
専用アプリ?
832デフォルトの名無しさん (ワッチョイ 0feb-Lqe9)
垢版 |
2020/03/05(木) 20:34:42.71ID:K6v7QzcZ0
質問です。よろしくお願いします。
ブックにある複数のシートをそれぞれ順に、いちばん左上が表示されている状態にしておく、という動作を作りたいです。
Do
  Name = (対象シートの名前)
ThisWorkbook.Worksheets(Name).Select
ThisWorkbook.Worksheets(Name).Range("A1").Select
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1
  (対象を次のシートに切り替え)
Loop

このように書きました。
しかし、この書き方では、このプログラムを動作中にたまたま他のブックが選択されてしまったりして、
当ブックがアクティブでなくなった場合、ActiveWindow.という部分でエラーがでるんじゃないかという気になりました。
とはいえ、ThisWorkbook.Worksheets(Name).ScrollColumn = 1 というように書いてもダメみたいです。
また、A1をselectするだけでは、表示が左上になりません。
何かいい方法ないでしょうか?
2020/03/05(木) 21:15:18.39ID:/LYBmypS0
>>832
application.goto
2020/03/05(木) 21:41:08.70ID:yWFKM6iN0
>>832
Application.Goto Sheets("Sheet1").Cells(1, 1), True
2020/03/05(木) 23:02:22.56ID:WJr0+YDk0
>>832
Application.ignoreRemoteRequest = false
2020/03/06(金) 01:00:24.26ID:kNbJ3ddM0
>>832です。
>>833-834
ありがとうございました。
確認なんですが、
Application.Goto というのは、自ブックのウィンドウがアクティブではなく、別のウィンドウがアクティブになっている状態で、
むりやり自分のブックとそのウィンドウをアクティブに変更するのではなく、
ひっそりと陰で、アクティブではない状態のまま、ただ「自分のブックの範囲の中ではこのシートがもっともアクティブ」という
解釈でやってくれるという理解でいいのでしょうか?
2020/03/06(金) 01:31:44.92ID:Z17kfdKR0
>>814
>>818
VBAはオワコン、オワコン、って言われてきたが
実際はマイナー言語の方が先に終わってるからな!
2020/03/06(金) 01:33:53.22ID:Z17kfdKR0
>>823
VBAをPythonやJSに置きかえればいいのにな
今はVBAの言語仕様が古くなってしまったから

>>830
そりゃ専用アプリの方が便利だろうが
エクセル自体の代替はほとんどないな
839デフォルトの名無しさん (ワッチョイ 9b8a-FZuH)
垢版 |
2020/03/06(金) 06:07:03.55ID:3qnD0oaT0
逆に1,1をselectして左上が表示される俺のエクセルは一体どうなってるんだ。。。
2020/03/06(金) 06:46:48.61ID:fNVi1eTS0
VBAはマクロ言語としては普通に使いやすいと思うけどな
汎用的な言語としてはクソだとは思うけど
2020/03/06(金) 18:37:22.13ID:XdrWOsjB0
>>840
VBA のどのような点が汎用言語として残念なのでしょうか?
2020/03/06(金) 18:42:09.16ID:TqGCTxoCH
>>838
JSはない
あの癖がありすぎて無理だろ
2020/03/06(金) 18:44:01.50ID:Z17kfdKR0
>>842
本音を言えばオレもクセが嫌いだけど
最近JSにクラス構文できてマシになった

本当はRubyで一番書きたいんだけど
Windowsに嫌われてて採用されなそうだから
2020/03/06(金) 19:21:04.42ID:9o5wzflr0
>>836
実際やってみたらどうだった?
2020/03/06(金) 21:02:36.48ID:hYOq9QPMM
>>842
俺もそれには同意したいがnodejsとかの状況見たらそんなことは言ってられないような気がする
2020/03/06(金) 21:13:00.50ID:VJTVQ6P20
↓宣言

Dim warota As String
Dim kusa As String

↓ずれてるのがしっくりこないのでこうしてみる。

Dim warota As String
Dim kusa  As String

文字間が空いているのも嫌なので、
↓もうこれでいいやwwwwってなる。

Dim warota As String, kusa As String
2020/03/06(金) 21:13:29.84ID:VJTVQ6P20
どうすればいいっすかね。
848デフォルトの名無しさん (ワッチョイ 9f01-cLLN)
垢版 |
2020/03/06(金) 21:41:31.84ID:qqIAHFEh0
>>838
何頓珍漢なこと言ってんだよ。PythonはVBAより古いぞ。

1991年 Python
1993年 VBA
1996年 JScript

Pythonなんてゴミみたいな文法で、VBAとは比べ物にならない。
VBAも古くなったのは確かなので、VBA.NETに進化させるべきだな。
2020/03/06(金) 22:08:33.10ID:zRyfvowG0
VBAはVBの長い歴史を引き継いでるんだから、VBAの登場時期だけでくらべても意味がない
2020/03/06(金) 22:19:00.08ID:8BomHpEo0
>>846
Dim warota$, kusa$
851デフォルトの名無しさん (ワッチョイ 9f01-cLLN)
垢版 |
2020/03/06(金) 22:44:21.46ID:qqIAHFEh0
>>848
VBは1991年登場だからPythonと同じ。構造化され、1964年のBASICとは別物。

VBAにはwith文(Python風のではなくPascal風の)があるので、同じオブジェクトに
対する連続した操作をすっきり記述できて、Excelに適している。
2020/03/06(金) 22:47:00.07ID:Oq5LDxMU0
>>848
古いから駄目ってか?
お前の方が頓珍漢すぎるw
C++とか1983年だぞ
登場年よりどれだけ改訂されてるかだろ
2020/03/06(金) 23:18:50.14ID:VJTVQ6P20
>>850
いいじゃん!
それにするわ。
854デフォルトの名無しさん (スププ Sdbf-rBsR)
垢版 |
2020/03/06(金) 23:36:11.80ID:x5aTnGY4d
>>853
これが原点回帰
2020/03/06(金) 23:37:21.11ID:/27OnYlma
発展の余地がないとか…
枯れてるからよいということもあるのにね
2020/03/07(土) 03:51:28.07ID:meF2wfp30
登場年の問題じゃなくて
言語の記述性の問題
2020/03/07(土) 05:49:46.99ID:wS7FLE9a0
記述性より可読性じゃね
2020/03/07(土) 08:18:03.28ID:ZT4uJUE70
なんか、頓珍漢な議論になってるな。
Excelに搭載されてるなら何でも良いだろ。
搭載されてるかどうかが全てだぞ。

汎用的な言語とか意味が無い。
汎用的に使わないから意味が有るのに。
2020/03/07(土) 08:32:32.42ID:meF2wfp30
記述性も可読性も両方
Pythonの方が高いだろ
2020/03/07(土) 13:39:18.70ID:oT61NKq30
Excelに搭載されてる必要を感じない
2020/03/07(土) 13:43:50.68ID:XL39BLbv0
>>853
2020/03/07(土) 13:47:04.80ID:XL39BLbv0
>>853
(あ、間違って書き込み押してしまった)
!#$%&
ずっとこればっか
integerやdoubleとか書いてない
863デフォルトの名無しさん (ワッチョイ 8b04-qBvo)
垢版 |
2020/03/07(土) 16:15:01.98ID:qDBeB9FV0
フィルターで絞り込まれた表の一部分を選択した後、
下記のイベントを発生させるとメッセージボックスが2回ループします。
なぜなんでしょうか?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim セル As Variant
For Each セル In Target.SpecialCells(xlCellTypeVisible)
MsgBox セル
Next

End Sub
2020/03/07(土) 16:24:52.38ID:ccKtHpW90
>>863
セル2個選択してるんでないの
865デフォルトの名無しさん (ワッチョイ 8b04-vh9z)
垢版 |
2020/03/07(土) 16:29:20.73ID:qDBeB9FV0
>>864
863です。
書き忘れてました。セル範囲を選択します。
数に関係なく2回ループします。
2020/03/07(土) 16:30:32.47ID:XL39BLbv0
>>863
targetと セル 変数の中身は何なんだろ?
2020/03/07(土) 17:40:21.34ID:ccKtHpW90
>>865
Target.SpecialCellsでSelectionChangeが発生してる気がする
forのApplication.EnableEventsで一旦止めたらいいんじゃないか
2020/03/07(土) 17:40:43.03ID:ccKtHpW90
forの前に
869デフォルトの名無しさん (バットンキン MMcf-vh9z)
垢版 |
2020/03/07(土) 18:39:19.55ID:XtitbUGhM
>>866
レスありがとうございます。
targetの始めの中身はフィルターをかけた後に選択したセル範囲が入ってるはずです。
セルはfor each で格納するため初期値は何も入ってないはずです。
870デフォルトの名無しさん (バットンキン MMcf-vh9z)
垢版 |
2020/03/07(土) 18:48:07.81ID:XtitbUGhM
>>867

> >>865
> Target.SpecialCellsでSelectionChangeが発生してる気がする
レスありがとうございます。
そうなんですよ。
msgboxが2回ループするということは、SelectionChangeがイベント発生中にもう一度発生しているということなんだと思います。
ただ今までマクロ使ってきて初めてのことで、色々調べてみたんですがどうしても分からなかったんです。
SpecialCellsってセルの再選択が発生するんでしょうか?


> forのApplication.EnableEventsで一旦止めたらいいんじゃないか

あとで試してみます。
2020/03/07(土) 19:39:05.36ID:IvWBzVie0
Excelでメモリの使用量を知る方法ってない?
タスクマネージャーのやつじゃなくて、Excel上で。
配列にどのくらいまでなら入れられるかの目安にしたいんだけど。
2020/03/07(土) 21:31:42.74ID:XL39BLbv0
>>869
subの直後に
debug.print "Worksheet_SelectionChange start"
debug.print target.address(でいけるかな…)
forの中に
debug.print "セル" & セル.address

こうすると、どういう順で動いてるか、値も把握できて解析に役立つ
何なんだろと聞いたのはそういう事

動きがわからないときはどんどんdebug.print を埋め込んで可視化するのが解決の近道ですよ
873デフォルトの名無しさん (ワッチョイ 8b04-vh9z)
垢版 |
2020/03/07(土) 21:52:17.59ID:qDBeB9FV0
>>872
ありがとうございます。
正直、debugprintはあまり使わずブレークポイントやイミディエイトウィンドウなどでチェックしてました。
試してみます。
2020/03/07(土) 22:02:15.16ID:2DcP5AA9a
ちなみに、printの部分は?でもいけるよな
2020/03/07(土) 23:28:27.67ID:IUbg0+ba0
>>871
昔のApplication.MemoryFreeに相当する空きメモリ情報はWin32APIのGetProcessMemoryInfoを使わないと取得できない
2020/03/08(日) 00:44:09.13ID:mw19GHmw0
>>874
mjd?……
ホンマや。知らんかった…
というか、昔何かのBASICで ?書いてたような記憶が蘇ってきた…
ちなみに print #1とかにも使える〜
教えてくれてありがと〜
877デフォルトの名無しさん (ワッチョイ bb8e-jhwo)
垢版 |
2020/03/08(日) 00:57:04.90ID:eh2q8TLt0
>>876
馬鹿は死ねよ
2020/03/08(日) 01:15:51.35ID:zr0fZFNpr
>>877
ネットでしか偉そうなこと言えない真正バカニートはそう言うことでしか精神状態保てないんだね
かわいそうに
2020/03/08(日) 01:53:06.36ID:I6P98FeB0
>>841
・名前空間がない
・クラスが継承出来ない
・局所関数が作れない
みたいなコード管理や再利用に関する機能が貧弱

そのせいで関数同士の関係が分かりづらくて
作った人しか分からないソースになりがちだと思う

一応プロジェクトを名前空間として扱えば頑張れるが作業に対するコスパが悪い
2020/03/08(日) 09:30:09.90ID:d1lp2qnEa
他人に簡単に理解されて得なことなんて一つもない
理解されない方が得
理解されて何の得があるんだよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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