TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
△△もっとStruts2の良さを教えてくださいSsssion6
小学生プログラマだけど質問ある
構造化プログラミングはまだ必要ではないのか?
C言語なら俺に聞け 155
くだらないアルゴリズムを考えるスレ
monazilla Part 6
C言語なら俺に聞け 147
Java入門・初心者質問スレ Part.8
Java/C++ VS C# どっちが好きか教えて
Excel VBA 質問スレ Part54

Excel VBA 質問スレ Part55


1 :2018/07/22 〜 最終レス :
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part54
https://mevius.2ch.sc/test/read.cgi/tech/1527334657/

2 :
>>1
すれ立て乙

そして前スレ976のリストビューがずれる現象は
splitしてる結果を比較してみろとエスパー

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下、知ったかぶりがVBAにマウントをとる長文と
VBA老害が見当外れのレスをする長文をお楽しみください

3 :
>>2
それな!
アハハハ、腹いて

4 :
>>2
その解説はマクラーにやらせるわ

5 :
クラスモジュールの正しい使い方わからん
コレクションとかディクショナリとかそれらにぶっこむ変数定義して関数かましてMEをぶっこんで行くのって使い方として正しいん?
コレクションは標準側にもったり別のクラスに持つべき?

6 :
>>5
そんな事が知りたい?
オッケー
じゃあそれもマクラーに解説させるわ

7 :
別に使わなくても良いよ。
コンストラクタ引数が使えないし、オーバーロードないしで読みづらくなるだけ。

8 :
oopになりきれてないんだよね
正しいかどうかは状況によるけど俺は何度も繰り返す処理を自作クラスにしておく程度かな
vbaの文字列操作は遅いから自前でjavaのstringbuilderみたいなのつくったりとか

9 :
マクラーがPSスレで大暴れしたけど反応薄くてワロタwww

10 :
たしかにYahoo知恵遅れのPGカテ見てると
なぜそれをVBAでやろうとする?て質問だらけでウンザリするな

11 :
VisualStudioとか他の開発環境はダウンロードもインスコも面倒だで
慣れてる人から見れば簡単だろうけど、未経験者には敷居がかなり高い

12 :
テキストファイルのコピー/マージ/分割、Webスクレイピングもどき
に貧弱で重いコーディングしかできないVBAですか?という…
せめてPowerShellもバッチも使えよという

13 :
>>12
Rや

14 :
意識してスクレイピングという言葉を使っていないんだろうけど、Web操作なら分かるがスクレイピングにPowerShellは向かない。

取ってきたデータをどうするんだよ。
取ってきて終わりで、それをExcelの絡まない他のシステムに渡すだけというなら分かるけどな。
でもそれだったらそもそもExcel関係ないから俺でもそうするかも。
でもその場合でもPowerShellじゃなくて別の言語にするかも知れない。
多分VB.NetかC#とかの方が有力だな。

PowerShellからExcel起動してデータを表示するようなの作ってきたらセンスが無いの一言で終わりだね。
それにユーザーの使い勝手より自分のコードの書きやすさを優先するような奴は使えない。

15 :
一緒に働いてたら、同じ動作するVBAのコードを提示して俺のが採用されるだろうな。
何でPS1とxlsxの2つのファイルを扱わなきゃならんと言われて。

16 :
もうおまえら好きなの使えよwwwNGワード登録めんどくせーんだよ
ただここはExcel VBAスレだ

17 :
ろくなパーサーもない、正規表現すら覚束ないVBAでスクレイピングとかマゾかよ
PowerShell以上に向いないのに

データ取り込んでVBA有利な作業したいって条件でも、
Excelからスクレイピングツール(psでもrbでもcsでもなんでもいい)呼び出すのが正解だろ
使い分けというの言葉を知らんのか

ほんとマクラーは何でもかんでもVBAだけでやろうとするのが好きだな
もしかしてそれしか出来ないのか?

18 :
標準入力すら素直に受け取れないVBAじゃ他のツール呼び出すの難しかったね

ごめんね俺が間違ってた
全部VBAでやるのが正解だよ
それしかできないもん

19 :
俺マクリスト

20 :
お先マックラー

21 :
再び降臨 パワーシェルキチガイ

22 :
>>17
>>18
それでもお前のコードは採用されない。
2ファイルになった時点で埋めようが無い差だ。
VBAで出来ないことなら別だがな。

VBAで標準入出力使うことはあまり無いなあ。
それで困ったことも無い。
そういう環境だと思うが。

23 :
powershellは起動するためにもう一工程要る

24 :
PSなんて使う必要ないだろ
PSこそ中途半端な機能だわ
こんなの使うくらいならVSとかのIDEで良いよね

25 :
一般的な環境ならVSぐらい入ってるしな

26 :
vbaだと云々かんぬんはまぁ分からんでもないけどあーするといいこうしろよとか無くps勧めてくるのはありえんわ
知識そこで止まってる化石かなんかかよ

27 :
使いにくい言語を使い本来不要な問題を作り出す
その問題を工夫して回避することが大事なんだ
便利なツールを手軽に作りたいだけの軟弱者は別の言語を使えばいい

28 :
VBAを否定するつもりはないが固執する理由もない
どの言語も向き不向きはあるしExcel周りはやっぱVBAが一番手軽で楽なんだよ

ただ行番号くらいはデフォルトで設定設けろ

29 :
VBAはWindow10になってさらにクソ化した

30 :
VBA質問スレなんだからVBAに固執してくれよ
逆に固執したくないならこのスレに固執するなよ

てかなんでVBA質問スレで最適言語談義が延々続いてるのかさっぱりわからない

31 :
それがマウンター

32 :
Colloctionに入ってる要素をランダムに並べ替えたいんですが
どういうコード書けばよいですか?

33 :
>>32
やりたいのはこういうこと?

Key1 → Value1
Key2 → Value2
Key3 → Value3

Key1 → Value3
Key2 → Value1
Key3 → Value2

34 :
>>28
これってVBAの言語的な優位性というかランタイムがエクセルに乗っかってるからってだけだよね
Pythonが乗っかったら急速に消え去りそう
VBAでおまんま食ってる人達は怯えてるだろうね

35 :
>>33
いえこういうことです
>>32
やりたいのはこういうこと?

Key1 → Value1
Key2 → Value2
Key3 → Value3

Key3→ Value3
Key1 → Value1
Key2 → Value2

36 :
collectionは順番って概念がないからあまり意味ないけど。。
目的次第だけど一度配列にぶっ込んで
インデックス乱数で作ってその順でcollection作り直したら?

37 :
inputboxにdefaultを設定すると選択状態になりますが、
これを選択しない状態にすることは可能でしょうか?

38 :
>>37
VBAにはinputboxは無いし、text boxにはdefaultプロパティもないんだが、一体なんの話だ?

39 :
>>34
いや、あのね...
与えられた環境でどうするかって話で、そんなの当たり前だろ。
VBAも同時に使えるなら消えないだろうし、pythonに置き換わってVBAが使えないならpython覚えるだけだろ。

40 :
>>35
もう1個Collection作ってランダムに入れれば良いんじゃね?

41 :
VBAを.net対応にすれば良いのに

42 :
>>34
VBAでおまんま食ってるPython未経験だけど
Python移行を熱烈に希望します

43 :
>>41
せめてそれくらいはしてほしいよな
理想はC#AだがVB.netAでもいいわ

44 :
>>40
なるほど。
テストでこういうコードを「アホレ スイスイスーダララッタ スラスラスイスイスイ」と一瞬で作ったら一発で成功した。
あらためてオレは頭がいいな。

------------------------------
Sub test()
Dim i As Integer
Dim r As Integer
Dim c1 As Collection
Dim c2 As Collection
Dim c As Class1
Set c1 = New Collection
Set c2 = New Collection
For i = 1 To 100
Set c = New Class1
c.i = i
c1.Add c
Next i
For i = 1 To 100
r = Int(Rnd * (100 - i + 1)) + 1
c2.Add c1(r)
c1.Remove r
Next i
For i = 1 To 100
Debug.Print c2(i).i
Next i
End Sub
------------------------------
Class1
Public i As Integer
------------------------------

45 :
Vbaってコレクションのランダムソートごときにすごい行数を使うんだなあ驚いた

46 :
1、2、3、たくさん、すごい、って数える部族の人コンニチワ

47 :
VBAのIDEには行数が書いてないから致し方ない

48 :
VBAもBASICの一種だから行番号は付けられるんだけどね

Sub Foo()
10 Dim i As Integer
20 Debug.Print i
30 i = i + 1: GoTo 20
40 End Sub

49 :
>>37
inputbox関数のことです
引数defaultに文字を入力した時、選択されないようにしたいのです

Sub foo()
bar = InputBox("", "", "選択されてしまう")
baz = Application.InputBox("", "", "選択されてしまう")
End Sub

50 :
選択されてしまうって、文字が?
inputboxの仕様だから難しいね

vbsだけど
https://stackoverflow.com/questions/28989351/vbscript-inputbox-unselect-the-text

51 :
>>50
そうです、文字が選択されてしまいます
フォームでも作るしかないみたいですね
ただ、右キーで選択解除できるのは大きな収穫でした(endキー使っていました)
ありがとうございました

52 :
おれはテキストボックスにフォーカスが当たったらテキストが選択されてない方が嫌だけどな
ダイアログボックスのUIに対するガイドラインみたいなのなかったかな

53 :
おまえがどうかなんて聞いてない

54 :
また偏った知識で変なUIがVBによって作られてしまうのかと思うと忍びなくてな

55 :
>>48
Integerオーバーフローまで無限ループw

56 :
16bitだからすぐにオーバーフローするけどね

57 :
クラスインスタンスをJSONにシリアライズしたいのですがどうすればいいでしょうか
クラスの種類が1000種類ぐらいあるので個別に作ると工数が足りません

58 :
それVBAでやるの??

59 :
>>58
そうです
エクセルVBAの使用以外の開発は全て禁止されています

60 :
VBAでクラスを1,000種類?
バカなのかネタなのかはっきりしてくれ w

61 :
>>60
要件を満たすには必要なのです

62 :
ならバカ決定

63 :
ならお前の工数見積もりのミスだな
おとなしく謝って人員投入してもらえ

64 :
そこをなんとか
バカは承知なのですが他の選択肢は禁止されているんです
工夫でどうにかなりませんかね?

65 :
出来ませんって言えば?
実際出来ないんだし
正直に言えば済むだろ

66 :
こんな簡単なことがVBAではできないのでしょうか?

67 :
出来る出来ないじゃなく
出来るけど工数がかかるだけだろ…馬鹿か?

68 :
>>67
もしできるなら工数はほとんどかかりませんよ
できないから工数がかかって大変なのでなんとか工夫してできませんか?という話をしてます
人にバカという前に自分の理解力の程度を自覚したほうが良いのでは?

69 :
apiでメッセ送れば未選択状態に出来なかったかな?

70 :
クラス定義はテキストだし、JSONもテキストだし、変換しようと思えばできるじゃない
まさかそこの手法レベルで悩んでたの?
クラス定義が1000種類もあり、変換定義を書く工数が足りないって話だとばかり思っていたよ…

71 :
何の禅問答だよ

72 :
クラスのソースからコンバータ自動生成するプログラム作れば解決
つかクラス1000個とか、VBAに向いてないのを差し引いても、どう考えても設計間違ってるわ

73 :
VBAではJSONシリアライズのようなちょっとした処理のためにVBAパーサーを書かなければならないんですか?
他の言語だと基本ライブラリを使って1行で出来る処理なのでにわかには信じられません

経験上、コード生成は資源管理や後々のメンテナンスでトラブルが発生することが多いのでできれば避けたいです
VBAは工夫しだいで何でも出来る言語だと思います
もっと工夫して実行時に解決することはできませんかね?

>>72
小さいオフィスの事務作業ではどうか知りませんが1000クラスは業務システムでは少ない方ですよ
1つのシステムでプロジェクト(機能)が100以上、それぞれのプロジェクトに画面がいくつか、クラスが10〜、なんてことは別に珍しくもないです

74 :
しゃあないやん、VBAてそうなんだもん

75 :
見積甘かったのを言語のせいにされても

76 :
VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので
他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です

77 :
使った事ないけどリフレクションぐらいあるに決まってんだろwww
それ使えば簡単に実装できるわ

78 :
上司だかお客だかにそう説明すりゃええやん

79 :
オブジェクトブラウザにクラス一覧やメソッド一覧が表示される
という事はメタデータの取得方法が存在するって事だ
詳しい方法はいつもの達人VBAerが教えてくれるだろう

80 :
>>76
>他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
>こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です

ただの無能じゃん。部下がこんなしょぼいミスしたらブチ切れるわ

81 :
> VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので

その認識からしておかしい、ネタだろ?w

82 :
>>66
実際、貴方が出来ないんだから僕には無理でした
って言えば?って事ですよ
カッコ付けて安請け合いするから変な事になる

83 :
皮肉質問にまじめに取り合うのはギャグなのか?

84 :
>>79
あれは定義が見れるだけで
実際のインスタンスから値が取れることにはならん

>>80
俺ならVBAに対する理解がこの程度の部下に
1000を超えるクラスが必要な規模のVBA案件見積させた上司にもブチ切れるわw

85 :
>>57
そpれっぽいものはあるよ
jsに投げてjsからもらう
http://outofmem.tumblr.com/post/63355773212/vbavba%E3%81%A7json%E3%82%92%E3%83%91%E3%83%BC%E3%82%B9%E3%81%99%E3%82%8B
ぱーっとよんだけどすげーめんどくさそうだった
まぁ0から作るよりかはなんぼかマシ

がんば〜

86 :
>>85
それJSONをVBAで解析するやり方で、
クラスをJSONに出力する方法じゃないから

87 :
「つづき」の方は一応シリアライズだけど

88 :
>>86-87
あぁごめん、その続きの方貼ったつもりだったけど前のページ貼ってた
検証する気も起きないけど、ちょっとでも役に立てば

89 :
バカは適材適所を知らないという見本のような質問だな。

俺の職場にバカがいなくて良かった。

90 :
>>89
でもお前無職じゃん

91 :
シートからデータを抜き出して重複しないリストを作ろうとしています。
For
If Cells(i+1,1) = .List(i) then
中略
Next
で重複の判定をさせているのですが、エラーが出ます。
InStrで判定させると期待通りに動きます。
検索しているのは数字なのですが、エラーの原因がわかりません。
挙動としては問題ないので、ひとまず満足はしているのですが、もし原因エスパーして頂けるようなら教えてください。

92 :
このスレの質問らしいw
エラーが出てるってだけでどんなエラーがどこで出てるのか言わない www

93 :
>>91
今確認し直したらエラーが出ているのではなく、重複の判定ができていませんでした。
デバッグで変数を追っていましたが、表面上は同じ数字が入っているように見えるのですがifの中身を読みに行ってくれません。
例えば100〜110の数字を重複なしでリスト化したいのですが、
100
100
101…
といった表示になってしまいます。
質問の仕方もわからないような有様で申し訳ありませんが、よろしくお願いします。

94 :
>>91
重複なしのリストは、フィルタをうまく使えば一瞬でできるぞ


あと色々とめんどくさいから
・どういうリストを
・どうしたい
を書いてくれ
コードを書くから、それとどう違うかを照らし合わせると良い

95 :
まず質問する前にちゃんとデバッグしようぜ。。

96 :
>>91
>検索しているのは数字なのですが
まずこれがあやしい
エクセルは表示されてる物と実際の値は違うぞ

そもそもそのコードで重複除去できると思えんけどな
1重ループで重複除去できるアルゴリズムあるなら教えて欲しいわ

97 :
>>94
         納入日…
納入先1 納入先1' 製品名 納入額
納入先1 製品名1'' 製品名 納入額
納入先2 納入先2' 製品名 納入額
このような元データから納入先1と2をそれぞれリスト化してUserFormのリストボックス1と2に表示、そこから納入先のデータを引き渡して別途データまとめるものを作ろうとしてました。
納入先については数字で管理されています。
納入先1にはさらに細かくいくつかの納入先2があり、リストボックス1に納入先1のリストを表示、選択された納入先1に紐付いている納入先1'を表示させるのが目標です。
ExcelVBA逆引き辞典とネット参考に関係しそうなコードを自分で打っていくと上記のようなコードが出てきたので使ってました。重複除外のコードは本から流用してます。
よろしくお願いします。

>>96
なんとなくそこが原因だとは思うのですが、具体的にどうなっているのかわかりません。
cellsでは数値を返して、listでは文字列として見ているような理解でいいのでしょうか。

>>95
一行ずつ動かしてみましたが、cellsと.listの中身は同じ表示をするのにifの中に入ってもらえなかったのでどうなっているのかもわかりませんでした。

98 :
Dim d As New Dictionary(Of String, MyClass)

なぜかエラーが出るのですがなぜでしょうか???

99 :
>>97
vba リストボックス 重複除去
辺りで検索すれば山程出てくるよ

100 :
>>98
エラーの内容は書こう

多分参照設定してない
http://itref.fc2web.com/vb/vba/dictionary.html


100〜のスレッドの続きを読む
Excel VBA 質問スレ Part61
関数型プログラミング言語Haskell Part31
【.cmd】 バッチファイルスクリプト %12 【.bat】
ふらっと C#,C♯,C#(初心者用) Part141
自然言語処理スレッド その4
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
画像処理 15枚目
【統計分析】機械学習・データマイニング19
2chの荒らし報告の書式対応のプログラム
Excel VBA 質問スレ Part54
--------------------
クーポン株主優待でしか食べないマクドナルド4冊目
B'z LIVE チケット情報 22枚目
【MLB博士】林修を語るスレ【今でしょ】
【オピニオン】フェミ団体「ゲームにおける女性主人公が男性主人公より少なすぎるのが改善されず遺憾である」【アメリカ】[06/14]
▼▼▼岡安商事(株)について▼▼▼
フィギュアスケート好きな奥様 Part.1419
iPhone 11 Pro/Pro Max Part19
モータースポーツはスポーツといえるのか?
Pubzineが強制的にフッター挿入
【仮想通貨 金品配当組織】ビットマスター|BMEX取引所 【ビジョン系マルチ】Part8
PEZ☆PEZ☆PEZ
いろいろ誇張するガンダムスレ
【バーチャルYoutube】兎田ぺこら#299 hololive/ホロライブ【ナイツオブラウンドそれはぺこらの騎士】
ベンチプレス90kgを目指すスレ3
⊂⊃ホルモン 薬 サプリメント 140錠目⊂⊃
☆★★ニダー研究所 第5棟★★★
忘れられない嬉しかった言葉 1言目
相模原・海老名・伊勢原・座間・綾瀬・三浦の施設
稲川淳二のオールナイトニッポン
【シノマス】シノビマスター 閃乱カグラ NEW LINK part133
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼