X



Excel VBA 質問スレ Part61

■ このスレッドは過去ログ倉庫に格納されています
0694デフォルトの名無しさん (ワッチョイ 6b2c-MqbY)
垢版 |
2019/06/12(水) 02:25:06.67ID:vWkgJgOw0
PHP7, Python3 は、互換性が低いから、全く同じものを作り直しているだけだろ。
Ruby は互換性が高いから、作り直さなくても動くから、プロジェクトの数が少ない

雑誌・web サイトの記事もそう。
PHP7, Python3 の記事は、書き直しただけで、内容は以前と同じ

テキスト処理なら、圧倒的にRuby が有利!

>>637
PowerShell, PowerShell ISE の両方は、Windows に、元から入っている

>>639
銀行でも、有料のExcel から、無料のLibre Office へ移行した所もある。
有料ソフトはインストール時に、管理部門に申請書を書いたり、代金支払いなどの手続きが面倒だから
0697デフォルトの名無しさん (スフッ Sd2f-to8s)
垢版 |
2019/06/12(水) 08:32:39.63ID:8utrJunyd
世の中けっこう非生産的だよ
著作権とかセキュリティとかリバエン禁止とかいろんな理由で他人の作ったコードは使えないから、まったく同じ結果の出る関数を1から書き直せって仕事がけっこうある
まあ、車輪の再発明を強いられるのは、どんな業界でもあるんだろうけどさ
0699デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 08:41:04.27ID:y0vSE/xP0
>>690
VBAでも高速化するテクニックは沢山あって、それをきちんと考えて組む上級者は遅いと感じることはあまり無いと思う。
けれども、どんなにテクニックを駆使しても限界はあって、本質的に遅い部分は他言語を使った方が良い場合もある。

Excel上の部品で、VBAでは作成不可能なものもある。
0701デフォルトの名無しさん (スッップ Sd2f-mek+)
垢版 |
2019/06/12(水) 08:46:17.08ID:yvAeGy9Kd
インプリンタだし並列処理が出来ないから最近の大容量データ処理にそもそも向かない
0702デフォルトの名無しさん (スプッッ Sddb-Ej7O)
垢版 |
2019/06/12(水) 08:53:01.12ID:zhdH+o61d
セルA1,B1,C1,D1に4,3,2,1と入っていて500行目まで同じようにランダムに数字が入ってる状態で、1行ずつ500行目まで全て昇順にソートするプログラムを教えてください。
マクロの記録で1行分をコピペして作ったんですがセル位置直すのに心折れてしまいました。
for nextで繰り返し処理できるようなプログラムでできませんでしょうか。よろしくお願いします。
0704デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 09:16:46.73ID:y0vSE/xP0
>>702
上級者がこういう質問に回答したいと思わないのは、あなたは何でFor Nextで出来ないのか、あなたはFor Nextで書こうとした時にどこで詰まっているのか書いて無いからなのね。

想像するに、1行分のマクロ記録の部分を例えばk行目についてkを使って表現出来ないからだと思うんだけど、違うかな?
0705デフォルトの名無しさん (アークセー Sx63-A7AD)
垢版 |
2019/06/12(水) 09:22:03.49ID:bW9dsdsdx
>>702
標準的なWindows環境でファイルを使う前提ならば、.NETのArrayListクラスのSortメソッドを使って各行の値を昇順ソートしてから代入してしまう手順にするのが楽かな
制御フローは{各行の処理{各列の処理}}というオーソドックスな二重ループで事足りると思う

ArrayListはCreateObject("System.Collections.ArrayList")でインスタンス生成できる
詳細はググってね
0706デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 09:22:37.44ID:y0vSE/xP0
>>700
そう言えば、コントロールの自作は無理でもクラスにすることはあるね。
でもクラス単体で完結させるのは難しい。
WndProcは標準モジュールに置くしか無いから。
でも変数にマシン語を入れて無理矢理クラスにWndProc置いてた人がいたな。
こういうレベルまで来てるなら明らかに自分よりレベルが上だね。
0707デフォルトの名無しさん (ワッチョイ bfce-to8s)
垢版 |
2019/06/12(水) 10:09:53.61ID:td02IJ/00
>>702
Sub Macro1()
  For r = 1 To 500 ' 1行目から500行目までソート
    Set Ra = Range("A" & r & ":D" & r)
      ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
      ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Ra _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Ra
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .Apply
      End With
  Next
End Sub
0717デフォルトの名無しさん (ワッチョイ 6101-2HP8)
垢版 |
2019/06/12(水) 13:27:23.99ID:JxmhteBD0
上の方でリッジレーサーとか書いてたけど、そういう高度(?)なこともできなくはないで
昔、excelのフォーム上にdirectxで3Dオブジェクトとか動かしてたから

ラッパー作ってやれば相当いろんなことできる
(参照設定は含まないとか狭い了見のやつは知らん)
0720デフォルトの名無しさん (ワッチョイ 5d8e-KhuK)
垢版 |
2019/06/12(水) 16:03:58.98ID:c437ERJc0
>>694
Rubyはいらない
早く消えろ
0724デフォルトの名無しさん (アウアウクー MM23-Zs14)
垢版 |
2019/06/12(水) 16:42:21.94ID:Z0CNlc5QM
会社で使ってるpcをwin10アップグレードwin7機をwin10プリインストール64bit機にしてもらったらDAO3.6の参照設定がされてる会社共有マクロファイルが動かなくなっててワロタ
参照設定をAccsess database engineに切り替えてあげて動くようにしてあげたら賞賛されてワロタ
古い技術・pc使ってんなぁ…と思った
0725デフォルトの名無しさん (ワッチョイ e101-ekgd)
垢版 |
2019/06/12(水) 17:21:01.09ID:hdFW8H+f0
>>710
クラスモジュールで
Private WithEvents Obj As MSForms.TextBox
と宣言しておいて
form.Controls.Add("Forms.TextBox.1",str)
で生成してObjにSet
Private Sub Obj_Enter()でObjへのフォーカス移動を取りたいが取れない

labelのonClickとかは同じ方法でできてるんですが…
0726デフォルトの名無しさん (スプッッ Sddb-Ej7O)
垢版 |
2019/06/12(水) 18:35:05.76ID:zhdH+o61d
702です。色々とありがとうございます。704さんの仰る通りでございます。707さんのではできませんでしたが、大いに参考にさせていただき無事できました。助かりました!
0727デフォルトの名無しさん (スッップ Sd2f-mek+)
垢版 |
2019/06/12(水) 18:41:55.19ID:yvAeGy9Kd
使用人数の多い人気の言語なんて価値が低い
使える奴が溢れてるから君の代わりは沢山いるから明日から来なくて良いよ
0729デフォルトの名無しさん (ドコグロ MM4f-1bgd)
垢版 |
2019/06/12(水) 19:04:59.78ID:LcFRFSVAM
>>714
どこが高度なのかさっぱり
変数にコード入れるとかむしろ昔の方がやってた(って言うかやらざるを得なかった)
Peek, Pokeとかあったしな
今のOSはチェックが厳しくなったからそのあたりは面倒になってるし低能がマウント取りたいだけにしか役立たんよw
0734デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 20:12:08.61ID:y0vSE/xP0
>>729
使わないとプログラムの構成が汚くなる。
で、これを知らなかった頃にクラスにWndProc置けないの何とかならんかと思ったことがある。
同じように考える人がいたからこれが実践されたわけ。

つまり、マウント取りたいだけにしか役立た無いなんて想像するようなアホなレベルの人では理解するのは力不足だよ。
0742デフォルトの名無しさん (ワッチョイ 0b90-to8s)
垢版 |
2019/06/12(水) 23:03:51.94ID:LF95RN4F0
言葉尻を捉えて揚げ足取り合ってて楽しんでるようにしか見えない
0751デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/13(木) 09:52:28.29ID:mXGAEns/0
>>747
高度だが。
Windowsがどのようにして動いてるかなど、Peek、Pokeの時代は知る必要さえ無かった。

やってる奴はいる。
自分のスキルの問題を言語のせいにする奴にとっては中途半端なんだろうな。
0753デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/13(木) 12:56:20.10ID:mXGAEns/0
>>752
結局こういうことを言う人はC#だろうがPythonだろうが自分のスキルが足らないとこの言語はダメだと言って自分のスキルを上げるとか工夫するとはならないんだろうな。

文句を垂れるだけで自分で解決しようともしない。
0755デフォルトの名無しさん (オイコラミネオ MMe3-Lxz1)
垢版 |
2019/06/13(木) 14:22:51.67ID:eEQwMBJ6M
>>752
コンストラクタに引数持てないことを問題視する意味がわからん
どんな言語も万能じゃない
他のやり方で解決できるなら、そうするんだよ
アセンブラしか使えないなら、その仕様範囲でプログラミングするんだよ

大きな口叩くならお前が万能言語作ってみろや
0758デフォルトの名無しさん (ドコグロ MM03-zlGV)
垢版 |
2019/06/13(木) 15:18:51.46ID:P5difHG2M
>>755
> コンストラクタに引数持てないことを問題視する意味がわからん
えっ、まじで言ってるの?
クラスを持つ他の言語はたいていコンストラクタに引数持てるよね?
その意味もわからないの?

> 他のやり方で解決できるなら、そうするんだよ
だからVBAでクラスなんて使いどころが限られるって話なんだが…

> 大きな口叩くならお前が万能言語作ってみろや
極論で反論したつもりになる低能乙w
0763デフォルトの名無しさん (アウアウウー Sac7-3DxT)
垢版 |
2019/06/13(木) 16:57:50.26ID:fZBdtlsYa
でも今のVBAは詳しく説明してくれて良い時代だよな
基本書と後はネット渡歩けばそこそこは作れるな
昔はベーシックは簡単だったがやれることが限られすぎてて
結局機械語に行かないと話にならなかったが、買った本が悪かったのか全く理解できなかった

代入ばかり書かれててもどうやったらゲームができるのか分からないよってよ
0776デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/13(木) 23:44:35.37ID:IEO0nY210
GetProcAddress がwindowsAPIならLoadLibrary もwindows API
API に文字列を渡して何かにattach するときに、関数単位なのかファイル単位なのかってだけの話だよ。
使う関数が多数あることを想定している。
0780デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/14(金) 01:36:46.11ID:AsK2wH5J0
>>766
解決するつもりは無いのですよw
日本語分かります?
>>753は解決できるなんて話してないんですよ。

VBAのコンストラクタ問題を否定していない。
>>753はあなたのような人はC#で解決出来ない問題が出てくるとC#をこき下ろすだろうと言ってるにすぎない。
それとも「解決しようともしない」に反応してるのかな?
そういう話なら簡単です。
動作で問題になるよりコンストラクタ問題の解決は小さなことだからですよ。

あなたはコンストラクタ問題が解決出来ないからVBAでは実現出来ないと言って手を引いた。
しかし、私にとってはコンストラクタ問題が解決出来なくてもVBAで実現出来ることの方が上です。
動作の面でVBAの方が上となればの話ですが。

そしてVBAでの開発は限定された土俵であるがゆえに動作の面で上と成りやすい。
したがって総合的に有利となるわけです。
0784デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 12:04:47.09ID:sZCV0u2+d
>>782
???
「どうやって解決するんだよw」などと発言してるのに?
論理的思考も出来ないのかね?

クラスの話はとても分かりやすい。
>>747を読めばVBAのクラスの欠点を少しでも減らそうとせずに放棄し、その上その努力をした者に対してマウントを取ろうとする愚か者の姿がよく見える。

クラスに問題があることよりも動作に問題の有ることの方が問題なのは当然だと思うんだがね。
1ファイル問題はその一部なんだが。
0786デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
垢版 |
2019/06/14(金) 13:22:06.08ID:AQvHkPsD0
>>784
> 「どうやって解決するんだよw」などと発言してるのに?
そりゃ>>753
> 文句を垂れるだけで自分で解決しようともしない。
なんて言ってるんだから当然解決策ぐらい持ってるだろうからな
まさか解決策も持たずに吹いてるだけじゃないでしょ?

> 論理的思考も出来ないのかね?
お前がなw
0788デフォルトの名無しさん (ブーイモ MMba-8GUE)
垢版 |
2019/06/14(金) 13:32:36.92ID:mJVJgN7yM
VBAのクラス(モジュール)の残念な点

・プロジェクト外から New できない
・だからcreate〜 関数を作るしかないけど当該クラスモジュールに置けない
・その他関連するちょっとしたヘルパー関数とかも中に置けない
・コンストラクタに引数がない
・End 時には Class_terminate が呼ばれない
・プロパティウィンドウに出ない隠し属性がある
・メソッドの AddressOf が取れない
■ このスレッドは過去ログ倉庫に格納されています