X



Excel VBA 質問スレ Part60

■ このスレッドは過去ログ倉庫に格納されています
0652デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:19:08.13ID:D8o23bai
>>649
それ、単に考えが雑なだけだろなんにしても
計画性もなく適当に増殖させるから自分でも制御できなくなる
0653デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:37:11.36ID:R4ZFT5Jg
セルロックは色々面倒くさくなるのは同意。ほぼ変更なしまで完成されてれば別だが。
なので、自分用とか、可能であれば、式セルに薄い色つけてる。
0654デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:40:20.37ID:D8o23bai
まあ、ある程度データが大きくなったら、データーはテーブル&数式で処理して
表示、印刷はピボットを使うかフォーマットを定義したシートでまとめろよ
目的も、機能も行き当たりばったりってExcelのシートもVBAも負担なだけ
0655デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:50:25.55ID:D8o23bai
>>653
コメント入れればいいんだよ、印刷しなければ問題ない
面倒くさいって、管理できればそんな必要はないけどな
0656デフォルトの名無しさん
垢版 |
2019/04/13(土) 12:09:21.02ID:6byp94bf
その管理が面倒くさいって話

修正でシート変更したとして、
今度から新しいシート使ってくださいとか言っても
間違えて古いシート使ってきて、でも見た上違いわかんねとかさ

エクセルファイルをコピーした分だけ
プログラム(セルに入れる関数のこと)が複製されるから管理不能。
一つのエクセルファイルを共有して使うとか

何人も人がいればやらんだろ?
それぞれ個別のエクセルファイル修正して提出とかだろ?
0657デフォルトの名無しさん
垢版 |
2019/04/13(土) 12:41:36.98ID:DFBgdaK8
削除や挿入でセルがずれない設定があればねぇ
今のところindirectしかない。indirect使うと数式が読みづらくて死ぬ
0661デフォルトの名無しさん
垢版 |
2019/04/14(日) 09:40:00.62ID:C6oAesku
VBAの一番の欠点は情報が圧倒的に少ない
多言語の1億分の一くらいの情報量
質問してもアンサーが遅い
0662デフォルトの名無しさん
垢版 |
2019/04/14(日) 09:47:43.05ID:Q3MA08tK
Webで有用な情報を発信できるレベルの人間ならそもそもVBAなんて使いたがらないからね
0665デフォルトの名無しさん
垢版 |
2019/04/14(日) 11:25:05.41ID:C6oAesku
少しはみ出した使い方とかも出ないし想定内の情報のみ
0666デフォルトの名無しさん
垢版 |
2019/04/14(日) 11:29:14.13ID:CXJ+kocl
まあね、最近のスマホの使い方みたいに
「見ればわかるよ」ってのが長々と書いてあるね
0668デフォルトの名無しさん
垢版 |
2019/04/14(日) 12:23:51.23ID:TZDtV4Z3
Excel VBAは玉石混淆だけどまぁまぁ情報はネット上に転がってる
Access、OutlookのVBAも最低限の情報ならば探せる
これがPowerPoint、Word、Publisherとかになると途端に情報量が減る
0670デフォルトの名無しさん
垢版 |
2019/04/14(日) 15:06:27.05ID:v38VY+Mw
検索力の問題とかじゃなくて情報量が圧倒的に少ないのは事実
VBAプレイヤーの絶対人数が違うんだから当然だけど天才的な人もいない
0672デフォルトの名無しさん
垢版 |
2019/04/14(日) 15:11:39.40ID:XgRuwrtZ
VBAの情報量と言われても、EXCEL操作できればそれでいいんだからそれ以上何かいるんけ?
0673デフォルトの名無しさん
垢版 |
2019/04/14(日) 20:42:13.83ID:ta3d6Ir8
単純なExcel操作の範疇ならそこそこ有能そうな人の記事もあるよね
能力の低い人ほどそれ以上のことをVBAでやろうとするからな
0674デフォルトの名無しさん
垢版 |
2019/04/15(月) 08:13:02.92ID:ZEg6Csuk
VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。
0675デフォルトの名無しさん
垢版 |
2019/04/15(月) 08:13:28.72ID:ZEg6Csuk
VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。
0676デフォルトの名無しさん
垢版 |
2019/04/15(月) 09:47:45.91ID:HgdD6hHz
パワーポイントとワードは同じVBAでしょはよ作ってね
たかがvbaだし期間なんて要らないよねよろしくー
みたいなん多くてうげーてなる
0679デフォルトの名無しさん
垢版 |
2019/04/15(月) 12:40:48.29ID:Es8LFln/
>>677
こういうことだろ

上司A 「パワーポイントとワードは同じVBAでしょ、はよ作ってね」
同僚B 「たかがvbaだし期間なんて要らないよね、よろしくー」
俺 「うげー」
0680デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:13:58.76ID:IzRYxIuW
恥を忍んできくが

WordのVBAって、なんか使い道あんの?

オレは全角半角統一とか
余白ほかレイアウト調整とか
定型文挿入とか
そんな簡単なのは自作して使ってるけど
「高度な使い方」ってのが思いつかない

文章中心のデータに
定型処理って需要があんのかね
0681デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:23:54.84ID:Es8LFln/
>>680
そんだけ活用できてれば十分じゃん
言語仕様を制限する方が余計な手間がかかるから、そのままなんでも使えるようにしてあるだけだろ

高度かどうかは置いといて、Word VBAの使いみちとしては、印刷物の寸法をちゃんと合わせたいとき
Word文書にVBAで罫線なりシェイプを書き込めばいいんじゃない?
0682デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:36:56.85ID:OAOOS1Vr
>>679
すごいな、読む気がなかったかもしれん
>>680
俺は、使ってっるリストボックスで選択した文字で
文書を変更して印刷している
高度である必要あるの?便利であればいいんでないの
0683デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:41:14.99ID:UiI6zhV3
>>681
>>682
ああなんか救われた気がする
スレチ気味の質問だったが
ありがとう

素朴でも便利な小道具つくって行くわ
0684デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:41:23.11ID:Es8LFln/
【1 OSの種類         .】 Windows10 Pro 64bit
【2 Excelのバージョン   】 Excel 2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
Visual Studio Community 2019を入れたら、Excelの設定があちこち勝手に書き換わってしまいました
そのうちの一つとしてVBEでスニペットが表示されなくなったのですが、直し方を教えてください
0686デフォルトの名無しさん
垢版 |
2019/04/15(月) 19:14:26.59ID:32DOVlq8
>>680
昔作って、超低頻度だが役に立ってるのが、Windows乗り換えたときに全フォントのサンプル表示と印刷。

各種プログラムソースに色付け、A3縦二段組印刷。(最近はイチから解析しなくなったな〜…)
0689デフォルトの名無しさん
垢版 |
2019/04/15(月) 19:39:30.60ID:ZEg6Csuk
>>686
VBAのキ−ワードの色付けは誰かがやってたからそれを貰って、コメントの色付けを追加して使ってる。
0695デフォルトの名無しさん
垢版 |
2019/04/16(火) 18:45:28.10ID:e8yfqTUa
フォルダ内に存在するファイルが以下のように構成されています

2019-1-1
2019-1-2
2019-1-2修正1
2019-1-3
2019-1-4修正1
2019-1-4修正2

この時、それぞれの日のファイルのうち最も新しい物から値を吸い上げたいです
そこでまずはdir(ファイル1*)とdir()で更新日を比較、大きなものと次を比較...とやろうとしたのですがその場合日付が1桁表記であるため1-1と1-11の比較となり1-11が採用されてしまいます
この問題を解決するにはどのようなアプローチで行えばよろしいでしょうか?
なお、日付の次は必ずしも「修正」ではなく別のコメントの場合もあります

ヒントなど頂けますと幸いです
0696デフォルトの名無しさん
垢版 |
2019/04/16(火) 18:48:04.20ID:e8yfqTUa
すみません訂正です

1-1と1-1*で比較をしようとすると、狙いとしては”1-1修正”がある場合その比較だったのですが1-1と1-11の比較、1-11と1-12の比較...1-19(あるいはその修正版)が選ばれてしまいます
0697デフォルトの名無しさん
垢版 |
2019/04/16(火) 19:02:23.87ID:g+D3y3HH
>>695
"修正"の文字列が凶悪過ぎて無理だな
"修正"がなければsplit()で分けて、日付データにしてしまうのが一番手っ取り早いんだけど
2019-1-2-修正1
なんてあったらお手上げ
0698デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:00:26.84ID:dymnkria
>>695
ファイル名ではなくファイル自体の更新日で比較は?
可能ならファイル名の付け方を考え直した方がいいと思うが
0699デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:24:24.92ID:dymnkria
すまん>>696読んでなかった
Dir("1-1*")で"1-1修正"も読み込まれるはず
ファイル名が"1-1 修正"になってるってことはないか?
それとDirはファイル名昇順で返すから比較せず最後に読み込んだファイル名を使えばいいと思う
0700デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:48:56.77ID:akR/dKKk
>>699
1-1修正
1-1最新
なんてのがあると、タイムスタンプ無視して修正が最後になるぞ
コメントが不定なら、数字とそれ以外の文字を判定して切り分けるしかない
0701デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:53:51.23ID:g+D3y3HH
1-1修正
1-12回めの修正(「1-1 2回めの修正」のつもり)
ってパターンもあってもうこれ絶対にヤバイ処理
0702デフォルトの名無しさん
垢版 |
2019/04/16(火) 21:09:05.64ID:dymnkria
>>696
すまん更に勘違いしてた
"1-1修正"が出て来ず他のが出てくると言ってるのかと勘違いしてた
>>698が無理ならファイル名をsplitで"-"で切って、3つ目の文字列から左2文字のうち数字だけ取得する
ただし>>701の言うようにコメントの最初に数字が来ることがあるならどうしようもない
0703デフォルトの名無しさん
垢版 |
2019/04/16(火) 21:16:48.22ID:nc1CJru4
postfix扱いの「コメント」に規則性がないのならそもそも最新版を特定する術がない
運用の方を変えるべきだろう
0704デフォルトの名無しさん
垢版 |
2019/04/16(火) 21:43:33.41ID:g+D3y3HH
最新版以外はoldフォルダ作ってそこにほおりこんでおく
そうすれば超簡単に出来る
0705デフォルトの名無しさん
垢版 |
2019/04/16(火) 22:27:43.62ID:XA2NKST4
>>それぞれの日のファイルのうち最も新しい物
新しいとする基準は何?
ファイル名で修正1修正2ってあったら修正2が最も新しい?
日付部分のyyyy-mm-dd(ただしmmとddは一桁もあり得る)が固定なら
毎回癖のあるdirとワイルドカードなんて使わないでファイルリストすべて取得してから処理したら?
0706デフォルトの名無しさん
垢版 |
2019/04/17(水) 05:30:44.38ID:pTGno1t2
新たにVBAライブラリを作ったりする人が全く出ないのが取り残された言語の欠点
他の言語は次から次へとライブラリが追加されてより便利に快適にそして簡単になるのに
終わってるVBAには将来性も可能性もないから仕方ないけどね
0707デフォルトの名無しさん
垢版 |
2019/04/17(水) 05:35:40.84ID:JxFBTN19
Sub macro1()
  ChDir "指定フォルダ"
  指定日 = "2019-1-1"

  f = Dir(指定日 & "*.*")
  Do While f <> ""
    t = timestamp(指定日, f)
    If t > 最新t Then
      最新f = f
      最新t = t
    End If
    f = Dir()
  Loop

  MsgBox "日付が" & 指定日 & "のうち最新の物は" & vbCrLf & _
      "ファイル名 " & 最新f & vbCrLf & _
      "日時 " & Format(最新t, "yyyy/mm/dd hh:mm")
End Sub

'ファイル名の日の桁数をチェックして、一致したらタイムスタンプを返す
'一致しなかったら0を返す
Function timestamp(s, f)
  w = Mid(f, Len(s) + 1, 1)
  If "0" <= w And w <= "9" Then
    timestamp = 0
  Else
    timestamp = FileDateTime(f)
  End If
End Function
0709デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:09:13.25ID:pTGno1t2
フォームにしてももう少しグラフィカルだったりアニメーションだったりするだけでイメージが全然違うんだけど
頭の良い誰がライブラリを作ってくれんかね
0710デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:31:50.49ID:WtvpNXmt
多くの人にとって有用なライブラリを作れるほどの能力のある人なら、
VBAを便利にすることはVBAの延命や利用人口の増加を招き、それは即ち社会正義に反する行為であると理解しているからね
0711デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:45:03.90ID:H1v/4DiF
>>706
vbaにライブラリって何か必要?
中途半端なの出てきてもそれ覚えるの面倒なんだよね
jQueryぐら便利で誰もが使ってるようなのならいいんだけど
0713デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:50:05.84ID:W5uIlXM9
VBAのライブラリ作るよりCOMにしちまうんじゃないの?
VBA以外にも使えるし。

そしてCOMのライブラリなんて腐る程有るんだが何を言ってるんだ?
0715デフォルトの名無しさん
垢版 |
2019/04/17(水) 09:15:11.32ID:YsMOLNBK
>>714
二つ質問

それってCreateObject でインスタンス作って使うの?

どういうジャンル/用途のもの?
0716デフォルトの名無しさん
垢版 |
2019/04/17(水) 09:30:09.47ID:vaRlkwxk
フォームUIのライブラリを希望
0717デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:17:15.83ID:SIKwKn9k
>>711
> vbaにライブラリって何か必要?

こういう文脈のライブラリなら
アルゴリズム系のライブラリだろ?

ソートとか配列に対する処理(合計求める)とか
VBAの言語の範囲内で実装できるアルゴリズム

あと大きめのやつならCSV読み書きとか
テンプレートエンジンとか
0718デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:18:11.01ID:SIKwKn9k
>>711
> 中途半端なの出てきてもそれ覚えるの面倒なんだよね

ライブラリの関数名はどの言語にも有るような名前にするので
一般的なプログラマなら覚えるまでもない
0720デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:36:17.09ID:H1v/4DiF
CSVの読み込みほしいな
住所の番地"1-1-1"を読み込むと日付になって超めんどい
幾つか試したけどどれやっても日付型になってしまった
今思えば頭にピリオドでも付ければ良かったのかもしれん
0721デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:59:21.48ID:o6t++Kqu
>>695-707
Ruby では以下。
ただし、Date オブジェクトに変換して比較しているから、同じ日付の順序付けは、不明

require 'date'

filenames = %w(abc 2019-1-11さらに修正1 2019-1-11修正2 2019-1-11修正1 2019-1-11 2019-1-1 2019-01-01)

re = /^(\d[\d-]+)/ # 数字で始まり、数字かハイフンだけが続く

# マッチしたものだけを集めて、ソートする。md[ 1 ] は、capture 部分
p results = filenames.select { | fn | fn.match( re ) }
.sort_by { | fn | md = fn.match( re ); Date.parse( md[ 1 ] ) }

p results.first

結果
["2019-1-1", "2019-01-01", "2019-1-11", "2019-1-11修正1", "2019-1-11修正2", "2019-1-11さらに修正1"]

先頭
"2019-1-1"
0723デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:23:13.47ID:vaRlkwxk
ルビーバカシネ
0724デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:27:00.37ID:MK1B34x/
ライブラリで有効なのは作るのが面倒なUIだろ
グラフィク系にこそライブラリの有り難みがある
0725デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:39:27.60ID:epFgj98z
そもそもVBAに固執するのは他のものを覚えたくないからであって、
いくら便利なものがあろうと誰もそれを探そうとしないし覚えようともしない
それができる人ならとっくにVBAなんか卒業してるよ
0726デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:41:31.12ID:H1v/4DiF
>>725
卒業てw適材適所だよ。EXCEL関連の時はvba、webはphp+js、ゲームはC#
これぐらい使い分けときゃだいたいok
0727デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:44:56.01ID:epFgj98z
>>726
VBA使う人には他のものが使えないから使ってる人と単に選択肢の一つとして使ってる人がいて、君は後者であるというだけだ
大多数は前者なわけだし、後者の人はVBAでやりづらいことを無理にVBAでやろうとはしないからライブラリ云々は問題にならないだろう
0728デフォルトの名無しさん
垢版 |
2019/04/17(水) 13:11:34.01ID:bcLxo1zC
>他のものが使えない
は他のものを覚えたくないだけでなく
他のものを使わせてもらえないというのもある
0729デフォルトの名無しさん
垢版 |
2019/04/17(水) 13:16:11.24ID:epFgj98z
>>728
仕事を選べないor技術的裁量を持てない立場に甘んじているならその程度の能力ってことだ
本質的には大差ない
0730デフォルトの名無しさん
垢版 |
2019/04/17(水) 14:04:48.27ID:bcLxo1zC
使わせてもらえないのはごく一部の相手なんですけどね
ほかは普通にいろいろ使ってる
0732デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:24:57.64ID:nv4avm/j
自治体だと、テキストエディタすらウインドウズ標準のものしか使えない。インターネットから切り離されてる不自由な環境なので、VBAとかVBSは重宝される、らしい。
0733デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:30:47.49ID:SIKwKn9k
>>732
そういう馬鹿なところのために、
マイク・スピーカー端子経由でデータのやりとりをする
ツール作ったら便利なのだろうかね?
0734デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:35:35.55ID:nv4avm/j
>>733
頼む、作ってくれ!、とのこと
0735デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:36:55.93ID:W5uIlXM9
個人的には申請出せば色々使えるけど、それが面倒くさいというのもある。

どうせ、VBAでどうとでもなる。
よっぽどどうにもならない場合は申請出すけど。

最近流行りのRPAとか全く必要無い。
簡単にソース作成する個人ライブラリが既にある。
0736デフォルトの名無しさん
垢版 |
2019/04/17(水) 22:16:54.35ID:JxFBTN19
PC-8001ではカセットテープにプログラムを保存したんだよな
それを最近のPCで録音して、音声ファイルからプログラムデータを復元するWindowsアプリがフリーで公開されてる
0738デフォルトの名無しさん
垢版 |
2019/04/17(水) 23:42:32.81ID:yDlOAXUg
下手なの作ってフリーズしたり過去のデータが消えたら責任とれるの?って話になるからな
0740デフォルトの名無しさん
垢版 |
2019/04/18(木) 05:33:25.25ID:nRTUz+FV
ライプラリってそんな知る人ぞ知るってマイナーな使い方じゃなく簡単に情報入手出来るようになって価値があるよね
汎用性があり改変もしやすくオープンなのが増えると良い。
そんなのVBAじゃなくともって言う人もいるけどそれでもVBAが存在して使用されてるんだから有用なライプラリはあった方が良い
0741デフォルトの名無しさん
垢版 |
2019/04/18(木) 07:22:37.37ID:hrv1qdCF
GithubでVBAっていれて検索すると3000以上のリポリトジがあるけど、
どうすれば有用なものが見つけられるか
まるでわからん
0743デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:32:20.75ID:bMzi6GVd
なんとなくvba利用しているような運用職なんですがモノは良いのでもっと横展開出来て再利用性高いものが作れたら作って欲しいと言われました

再利用性が高いとはつまりどういうことでしょうか…
モジュールをそのままコピペして全く別のものでも動くように…?
0744デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:40:51.83ID:Mwr+qk/V
>>743
決め打ちとしてない?
データ全部を処理する時にfor i = 1 tto 100000とかテキトーな数値にしたり
そうじゃなく、最終行をちゃんと取るとか
0745デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:44:43.23ID:PeuY0IP9
>>743
言ってるやつに聞け。

まあどうせ無理だろ?
どうせそいつが言ってるのは、他の部署でも使えるようにしろってことだろうから
業務内容を統一したものに "変更" しないと無理ですとか言っとけw
0746デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:47:38.84ID:PeuY0IP9
> 横展開出来て再利用性高いものが作れたら作って

↑これ無理なんだよ。

今あるものを再利用性が高いものにすることはできない。
ただし「再利用性が高いもの」を使うことはできる。

どういうことかというと「今あるもの」は再利用できるものと
再利用できないものが合体してる形。

そこから再利用できるものを分離することはできるが
どうしても再利用できないものは残る。
0747デフォルトの名無しさん
垢版 |
2019/04/18(木) 10:15:32.81ID:66UDqgKZ
そうやって責務を分離して再利用性の高いライブラリを構築することは可能。
しかし使いこなすのが難しくなる。
依存関係や凝集度をちゃんと考えた良質なライブラリは玄人受けはするだろうけど、
機能が細分化し抽象性も増すから一般人には豚に真珠状態。
0748デフォルトの名無しさん
垢版 |
2019/04/18(木) 11:53:10.58ID:sbpDgPak
まずはモジュール化
その会社の業務内容に合わせて、部署が違っても共通で使える部分をライブラリとして整備する
まあ言うのは簡単だけど、実際に作るのは死ぬほど大変なんで、理想の高さに比例した地獄が待ってるんだけどな
0749デフォルトの名無しさん
垢版 |
2019/04/18(木) 13:21:10.78ID:PeuY0IP9
> その会社の「業務内容」に合わせて、「部署が違っても共通で使える部分」

そんなものは存在しない。

業務内容から生み出されている時点で、業務にべったり依存してる。
再利用性の高いライブラリっていうのは、業務内容を切り離している。
業務内容と関係ないから、共通で使える。
■ このスレッドは過去ログ倉庫に格納されています

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