[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/09 14:54 / Filesize : 339 KB / Number-of Response : 1038
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part51



1 名前:デフォルトの名無しさん [2017/11/08(水) 11:26:30.13 ID:+KUB1/9hd.net]

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※関連スレ
VBAなんでも質問スレ Part2
mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/

※前スレ
Excel VBA 質問スレ Part50
mevius.2ch.net/test/read.cgi/tech/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


816 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 13:31:04.61 ID:fsRyV04Q0.net]
>>790
専用のソフトがなければ1sheetをマクロ関数管理用にして各関数内にver x.y.z(x変更で互換性無し、y変更で互換性あり、z変更は互換性ありバグ修正みたいにして)
モジュールをインポートしたファイルをオープン時に、イベント検知で所定の管理ファイルを検索、新しいバージョンがあれば自動で今までのモジュールを解放、y,zバージョンが最新のファイルをインポート
みたいにすれば実現可能そうですが結構手間がかかりそうで…

817 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 13:56:42.14 ID:hllNi94Va.net]
マクロで書けよ。
バージョン管理。

セキュリティが低下するけどな。

818 名前:デフォルトの名無しさん [2017/12/31(日) 18:06:59.07 ID:nOUozIFo0.net]
そもそも論として、たかがマクロでバージョン管理が必要になるような力作()作るなよw
キミたちは一体エクセルマクロで何を築こうとしておるのかねw

819 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 18:13:51.04 ID:2b4EaTgg0.net]
仕事でVBA扱ってると色々な理由から小さいマクロでもバージョン管理が必要になってくる。

820 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 19:27:51.32 ID:rNrttlhS0.net]
>>794
内容がぐちゃぐちゃになったら困るものにはバージョン管理が必要さ
力作()でなくても再構築はかったるいからな

821 名前:デフォルトの名無しさん [2017/12/31(日) 19:58:25.49 ID:nOUozIFo0.net]
>>796
力作()じゃないのにぐちゃぐちゃになるってどんだけ当てずっぽうにマクロ書いてんだよw

822 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 20:00:31.71 ID:pVPyHW7p0.net]
社内に展開するとかでサポートが必要ならバージョン管理ぐらいは必須だろ
>>794は無知すぎ

823 名前:デフォルトの名無しさん [2017/12/31(日) 20:24:53.68 ID:nOUozIFo0.net]
>>798
確かにおまえらの考える事は見当もつかんけどなw
別にいいや無能思考に明るくならなくてもw

824 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 20:28:42.31 ID:1PdKj8Yj0.net]
またメゾット君か。



825 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 20:42:44.41 ID:rRjJbr8wx.net]
メゾット君って雰囲気ですぐ分かるよね

826 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 20:54:32.08 ID:KnonKKai0.net]
OLDフォルダにファイル名の後に日付つけたファイルをコピーしてる

827 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 21:20:00.26 ID:A+5By6dM0.net]
ていうかバイナリファイルをバージョン管理システムに登録したところで
単なる時系列バックアップにしかならんうえに
シートを更新しただけでバージョンが変わるから意味ないのでは

828 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 22:37:10.58 ID:rNrttlhS0.net]
力作2.0

829 名前:デフォルトの名無しさん [2017/12/31(日) 22:50:02.43 ID:InzisC8s0.net]
悩みはみんな一緒なんだね。俺はバージョンアップに悩んでアドイン化したが
これはこれで悩ましいところがあるんだな。シートを初期化(つまりClearとかClearContents)する
のにもよーく考えないと結構危ない。アドインはどのブックでも実行出来てしまうからPCに疎いヤツが使うのも考えると
別の方法を考えた方が良いんだろうかとか考えてる。

830 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 22:55:00.56 ID:rNrttlhS0.net]
>>805
アドインてxlamのこと?
だったらそのシートは一切使っちゃダメだよ
プログラムモジュールだけの存在にするべき

831 名前:デフォルトの名無しさん [2017/12/31(日) 23:12:43.15 ID:InzisC8s0.net]
>>806
そりゃ分かってるての。ブックを指定する時は「ActiveWorkBook」とするしかない(決めつけはよくないが)
からよーく考えてコードを書かないと危ない場合もあるって話。使う連中の9割はマクロどころかシート関数も
知らないような連中なんだから。

832 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 23:41:30.90 ID:rNrttlhS0.net]
>>807

・処理をスタートするFunction や Subはアドイン側にはない。当該Book側にある
・そのFunction や Subがアドイン側の機能を使う

だとするとアドイン側に「ActiveworkBook」なんて書く必要はなくて、処理対象のSheetやRangeを
引数で受け取るだけになると思うんだがね

833 名前:デフォルトの名無しさん [2017/12/31(日) 23:52:05.59 ID:InzisC8s0.net]
>>808
作業するBookはxlsxなんだよ。マクロはxlms側に書いてある。

なんでこうしたかというと、仕事柄、ブックは地方自治体に提出する場合があるから。

何の事かわからないだろうからもうちょっと書くと、測量データの野帳なんだよ。

834 名前:806 [2017/12/31(日) 23:53:24.81 ID:InzisC8s0.net]
xlmsじゃねえや、xlamだな。



835 名前:デフォルトの名無しさん [2018/01/01(月) 04:27:25.57 ID:WDGj6QXoH.net]
>>809
マクロ有効ブックから
マクロ無効ブックを開いて処理して保存して閉じる
という方法も有ると思う

836 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 09:37:05.14 ID:hnfikatx0.net]
自動処理したいなら>>811だろうし、操作者が開いて何かしたいならメニューに追加しとけばいいだけだと思う
>>809は無知なのかちょっと頭固いんだろうな

837 名前:デフォルトの名無しさん [2018/01/01(月) 13:40:19.53 ID:iV2QIiO7H.net]
>>812
作業ブック側にコード書けないんだよ。知ったかすんなよボケ

838 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 13:55:03.62 ID:7v1CUCWaM.net]
>>813
作業ブックにコードなんか要らんだろ w
知らないなら黙ってろ
てか、アドインでメニュー追加なんて基本中の基本だと思うが
toshimana.hatenablog.com/entry/2014/01/26/204938

839 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 14:25:45.74 ID:7yffOGmB0.net]
知らないことを素直に知らないと言いなさい

840 名前: mailto:sage [2018/01/01(月) 14:27:07.60 ID:tZ/lpIQo0.net]
今年はいい年になるかなw

841 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 14:29:26.10 ID:UomJiKNZ0.net]
>>814
Workbook_AddinUninstall てのは知らなかったな。
Workbook_Open するのと効果は違うんだろうか?

842 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 14:54:13.21 ID:ixsE+qrMx.net]
またメゾット君が暴れてるな
あの馬鹿が出入りするようになってから荒れすぎ

843 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 15:45:18.49 ID:bzNinO0Ma.net]
>>817
よく考えろよ

844 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 16:11:19.12 ID:PLRWaMeF0.net]
>>819
おっと、 Workbook_AddinInstallを Workbook_AddinUninstallと書き間違えた



845 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 09:36:26.90 ID:nA397GZea.net]
>>820
だとしてもだ
イベントの言葉の意味そのままだよ
よく考えろよ

846 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 12:29:02.41 ID:MKa2S+Tjd.net]
>>821
「対象のアドインを参照設定しているブックを開いた」というイベントを想定してた
そうじゃないのね

847 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 10:57:08.56 ID:rhTFyGx/0.net]
>>806
そんなことはない。
設定値を保存するためのiniファイルの代わりにするとか、テンプレートの代わりにするとか、使い道は沢山ある。

848 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 11:46:24.84 ID:ZpYRfYyG0.net]
アドインにするにしてもなんにしても運用がしっかりされてないと意味がない
ファイル名やシート名程度が保証されてないならマクロ化なんて諦めろ

849 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 11:59:35.70 ID:Uz65NhYa0.net]
>>823
設定値を保存するのはやめたほうが良いと思うな。
バージョンアップしたときに設定値がリセットされてしまうとか、エクセルバグの巻き添えでブック破損の危険性がある。
できるだけアドインは読み取り専用で運用するべきだと思う。
過去に内部シートに保存するように作って問題が起きたので、バージョンアップ時にxmlにコンバートさせた事があるわ

850 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 12:49:50.09 ID:lLEkaf6s0.net]
お前のバグを根拠にされてもなぁ

851 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 14:45:49.49 ID:hfgsKA7ma.net]
まあ、設定は外出しにするのが普通に安全策じゃね?
xlamのシートは明らかに利用してほしくないっていう思いが伝わる作りな訳だから

852 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 15:32:51.77 ID:00k1dN96d.net]
利用者が不用意にセルデータをクリアしてそのままセーブしても自覚すらしないかも

853 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 05:46:13.89 ID:UuI+tM4Q0.net]
質問よろしくお願いします。

A列,B列,C列,D列
Aa,111,bbb,20
Bb,111,aaa,30
Aa,222,bbb,10
Bb,111,aaa,10
Aa,111,bbb,15

上記の様な表を下記の様にしたいです。

A列,B列,C列,D列
Aa,111,bbb,35
Aa,222,bbb,10
Bb,111,aaa,40

A,B,C列の値が一致したらD列を加算して行を削除するという処理です。データは約1000行程です。

854 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 06:37:20.49 ID:MFccPkO20.net]
1000行程度ならSUMIFSとかでできるんじゃないの



855 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 06:55:39.59 ID:IcyEu6L/M.net]
>>829
要件によるけどそういうビューを作ればいいんじゃね?
create view V as (
select A列,B列,C列,sum(D列) as D列
from 表
group by A列,B列,C列
)

856 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 06:57:20.78 ID:IcyEu6L/M.net]
すまん、寝ぼけててSQLスレと勘違いしてた...
>>831はなしで

857 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 07:39:39.14 ID:IGCyfMcU0.net]
>>829
見るからにデータベース向けの案件
集計するキーとなる列が左端一列、その右に合計対象の数値列という2列形式なら
データタブにある統合でできるんだが

858 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 08:01:11.56 ID:5mprgbRzp.net]
>>830
すみません説明不足でした。
キー項目が1000種類以上あり、毎回CSVから読み込んでから処理をする為、事前にWorkSheet関数を作っておくのが難しい状況です。

何か手はありますか?

859 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 10:15:47.38 ID:fF+rBx/60.net]
データベース系のデータは素直にデータベースソフトで管理しようよ・・・。
アクセスでやればマウス

860 名前:操作だけで終わる様な問題だよ。 []
[ここ壊れてます]

861 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 10:22:48.62 ID:d1LyNdol0.net]
>>834
ADOでcsvファイルをデータベースとして接続して >>831 に挙げられた
SELECT文を実行する、という手段がとれる

862 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 10:31:44.20 ID:no6Ylxj0a.net]
sqlならselectとorder byだけですむ案件だな
愚直にプログラム組むと厄介だけどね

863 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 10:38:07.48 ID:7zx5w2nrd.net]
ピボットでいいんじゃね

864 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 11:56:10.93 ID:iFN99ve4d.net]
LINQって使えないんだっけ?



865 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 13:22:48.32 ID:Gj6t78kg0.net]
>>829
嘔吐フィルターかけてソートしてから
一致を

866 名前:上からみて加算と消去
フィルター解除忘れずに(多分ソート直後にすぐ)
[]
[ここ壊れてます]

867 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 13:42:37.28 ID:hO93+Igl0.net]
>>829

上級者じゃない俺なんかこういうのみると
全部2次元配列にぶちこんでif多用して無理矢理やっちゃうんだけど
そういうのはだめなの?

868 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 13:47:48.60 ID:cJgHrV+ta.net]
>>841
だめじゃないし、初心者なら無理やりVBAで組むのも勉強になるよ
重複の無いリスト作るのがやや面倒というか、煩雑になりがちなところだな
エクセルの機能使えばいいっちゃいいけど、好みじゃないな

869 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 13:55:27.88 ID:hO93+Igl0.net]
>>842
おれこういうの無理矢理やっちゃうの大好きで完成すると充実感半端ない
俺が組むマクロってそんなのばかりだ
基本初心者レベルの知識しか使わないでやっちゃうんで、
こういう質問をする人は、無理矢理やると遅くなるとか別の理由があって聞いてるのかな?
とか思っちゃう

870 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 15:19:59.75 ID:kPmYITG+0.net]
ファーム1の中に、オプションボタンが18個あり、オブジェクト名を『OP_1』〜『OP_18』としてボタン1を押してフォーム2に切り替える時に選択されてるオプションボタンのキャプションを取得して変数TUR1に入れたいんですけどどうしたらいいですか?

871 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 16:20:08.23 ID:pGh8JphK0.net]
>>844
For i = 1 To 18
With Me.Controls("OP_" & CStr(i))
If .Value = True Then
TUR1 = .Caption
Exit For
End If
End With
Next

872 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 17:41:48.62 ID:uhyB+DSmd.net]
初心者なんだけど以下のような表から特定のセルに入力された場合だけ、特定のセルをカウントする方法ってありますか?
Aは全て
Bは選ばれたものだけ、みたいな

Aの全てをカウントするのはわけないんだけど、Bの選ばれたものだけをカウントする方法がわからない
IF使うにしても何を指定すればいいのでしょう?

わかりにくかてすいません
o.8ch.net/11r7r.png

873 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 17:54:54.38 ID:IwnGnNnba.net]
>>843
普通にやり方がわからないんじゃないの
>>846
cがキーになるなら重複しないcの一覧をつくって二次元配列でも構造体でもいいけどbがtrueならカウントするっていう風にすればいいと思う
件数多いならDBの領分だと思うけどね、この手の集計は

874 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:02:17.19 ID:HiTEnEcXd.net]
>>845
ありがとうございます!



875 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:13:43.61 ID:uhyB+DSmd.net]
>>847
Bがtrueなら、というのはどうやって指定すればいいですか?
範囲指定で

876 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:23:20.07 ID:uhyB+DSmd.net]
すいません、間違えて書き込んでしまいました

>>847
Bがtrueなら、というのはどうやって指定すればいいですか?
範囲指定でがっつりやると、指定した範囲に一つでもtrueがあるとカウントしてしまって結局全部をカウントしてしまうんです

877 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:27:59.94 ID:iMxAIJokM.net]
>>829
何も難しく考えなくても、E列に=A&B&Cを入れて、E列を行ラベルにしてピボットテーブルで集計するだけで出来るよ。
ABC列をもどしたいならINDEX,MATCHで引っ張って来ないといけないけども、日々エクセル使ってる人なら手慣れたものだと思う。と言うか慣れておくと色々便利。
詳しい解説いるならする

878 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:58:58.92 ID:IwnGnNnba.net]
>>850
一行ずつループしてるんだよね?
フラグ用に変数用意してるなら一ループごとに初期化し直さないとだめよ
ってか、今どんなコードで動かしてるか書いてくれるとやり易いんだけど

879 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 02:37:52.28 ID:Uixpo ]
[ここ壊れてます]

880 名前:pG00.net mailto: フィルタとCOUNTIFで良い気がするが
どうしてもVBAでやりたいのか?
[]
[ここ壊れてます]

881 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 17:45:28.92 ID:Kfn/8I4m0.net]
HTMLソースで
<a href = URL1</a>
<br />**** ← 4桁の特定の数字が入る
<a href = URL2>予約中</a>
<a href = URL3>[取消]</a><br /><a href = URL4>[訂正]</a>

上記の4桁の数字とURL以外同様のソースが全部で10個あるページがあり、C5セルに4桁の数字を入れ、それに対応したURL3のリンクをクリックしたいのですが、どうすれば可能でしょうか?
IEでそのページまで飛ぶのは問題ないのですが、aタグのインナーテキストが4桁の数字以外共通なためForとGetElementsByTagNameとの組み合わせでクリックできないので何か手段があれば教えて頂きたいです。

882 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 21:06:25.46 ID:UyFZaUswa.net]
>>829
そういう処理だったらソートしても問題無さそうだからソートしてループで良いんじゃね?

>>854
4桁の数字以外共通だとどうしてForとGetElementsByTagnameとの組み合わせでクリック出来ないのかが分からん。

883 名前:851 mailto:sage [2018/01/05(金) 21:25:01.57 ID:Kfn/8I4m0.net]
>>855
あ、確かに。書き間違えました。下記のコードだと10個のリンクのうち、一番上にあるやつをクリックすると思うのですが、
C5セルに入力した特定の4桁の数字の下にあるリンクをクリックしたいのです。
For Each obj In objIE.Document.getElementsByTagName("a")
If InStr(obj.innertext, "取消") > 0 Then
obj.Click
Exit For
End If
Next

884 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 22:16:41.06 ID:vO88ak3C0.net]
DOMに親要素とか隣の要素を見ていくのあったよね
あれで必要なだけ移動させればいいんじゃね



885 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 22:20:08.87 ID:vO88ak3C0.net]
>>829
>>836の方法で頑張ってコードにしたのを書き込みたいんだけど
403になっちゃうのよね
禁断のコードが含まれているのかしら

886 名前:デフォルトの名無しさん [2018/01/07(日) 08:20:46.08 .net]
>>846
VBAを使わずにExcelの計算式で書くとこうだよね。
・C列が「10」、B列が「○」の行を数えるなら
=COUNTIFS($C$2:$C$6,10,$B$2:$B$6,"○")
・C列が「10」、B列が空以外の行を数えるなら
=COUNTIF($C$2:$C$6,10)-COUNTIFS($A$2:$A$6,10,$B$2:$B$6,"")

これをVBAで書きたいなら、そのままワークシート関数を呼び出せばいい。
・C列が「10」、B列が「○」の行を数えるなら
With Worksheets("Sheet1")
dblCnt = WorksheetFunction.CountIfs(.Range("C2:C6"), 10, .Range("B2:B6"), "○")
End With
・C列が「10」、B列が空以外の行を数えるなら
With Worksheets("Sheet1")
dblCnt = WorksheetFunction.CountIf(.Range("C2:C6"), 10) - WorksheetFunction.CountIfs(.Range("C2:C6"), 10, .Range("B2:B6"), "")
End With

注:COUNTIFS関数はOffice 2007で追加されたので、2003とかでも動くようにするには
 計算式なら配列数式を使うかダミーの結合列 (例: F列に =B2&”:”&C2)を使う必要があるし、
 VBAなら自前で1行ずつループするFor文を書く必要がある。

887 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 01:12:41.23 ID:bgHHDE53D]
>>856
すごい お馬鹿な返信で申し訳ないけど
イメージとしてまず、

<a href = URL1</a>
<br />**** ← 4桁の特定の数字が入る
<a href = URL2>予約中</a>
<a href = URL3>[取消]</a><br /><a href = URL4>[訂正]</a>

の部分がページ内で繰り返して複数あるなら、この部分だけを取り出す処理を繰り返して splitなりで個数を数えて 処理するとか。(取り出す位置は、InStrで取って、終わり位置を 次の開始位置にして)

その上で、この部分にC5と同じ値があるならクリックするとか。
C5の値を変数aにして、InStr(取り出した部分, a) > 0で良いような。


すいません。曖昧な返信で。

888 名前:sage [2018/01/11(木) 23:28:08.34 ID:kwmxLljDv]
教えていただきたいです。

あるセルの数字に関して
o以下と12以上はA
6以上12未満はB
それ以外はなしという式を作るとしたら

=if(or(セル<0,セル>=12),"A",if(6<セル=<12,"B"," "))
という式ではちゃんと返ってきません。

正しい式をご教授願います。

889 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 12:40:04.91 ID:eKl5cJvJd.net]
コンボboxを使ってサジェスト機能みたいなことをしたくて作ってみたんだけど、1文字目はうまくいくんだけど2文字目以降打つとリストの一番上が乗ってきて使い心地が良くないんだけど、どうしたらいいですか?
コンボboxのリストのみをクリアするやり方もいまいちわかりません。


j=2
Tname.rist=array()

set MstSht=worksheets(″マスター″)
str_word=controls(″Tname″&j).value

for i=2toMstSht.cells(rows.count,6).end(xlup).row

if instr(ucase(MstSht.cells(i,6).value),ucase(str_word))=1 then

controls(″Tname″&j).additem MstSht.cells(i,6).value

end if

next

890 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 19:23:41.06 ID:WJjCr32Q0.net]
エクセルの2003ですが、
並べて比較を使用した際にペアになっているブックと、
そのブックで表示されているシートを取得するには
どのように記述すればいいでしょうか。

891 名前:デフォルトの名無しさん [2018/01/11(木) 21:16:23.66 ID:JbTpKTF6M.net]
>>863
何を言っているのでしょうか?

892 名前:デフォルトの名無しさん [2018/01/11(木) 21:25:37.65 ID:a2sLbYI50.net]
世界教師マイトLーヤ「大暴落は日本からスタート」
rio2016.5ch.net/test/read.cgi/2chse/1512813686/l50
【マイトLーヤ】 米国債を売れ 【1200兆円】
https://medaka.5ch.net/test/read.cgi/eco/1515587891/l50

893 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 01:30:55.27 ID:GWvM9lig0.net]
>>863
Excel2003はサポート切れてますので
Excel2007にのりかえましょう

894 名前:デフォルトの名無しさん [2018/01/12(金) 01:41:04.62 .net]
>>866
Excel2007なら>>863できるん?(´・ω・`)



895 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 15:56:41.55 ID:kdQVxAch0.net]
0回目って何?

896 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 19:59:42.26 ID:8L8z7qJh0.net]
vbModelessで開いたUserForm上のTextBoxにSetFocusするようInitializeに記述しても効きません
これって無理なんですかね?
vbModelessを切るとフォーカスがちゃんとTextBoxに移るんですけどね

897 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 23:20:03.95 ID:Ln5WwMFr0.net]
初期状態でフォーカスを当てたいなら
UserForm.Show vbModeless
UserForm.TextBox.SetFocus
とフォームを呼んでいるプロシージャ側に書く

フォームのイベントならActivateでどうでしょう
毎回フォームがアクティブになるたびフォーカスしちゃうけど

Initializeがなぜはしらないのかは知らない

898 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 23:44:10.99 ID:Ln5WwMFr0.net]
実験してみたらInitializeは呼ばれてるけど
SetFocusだけがだめみたい
他のことは普通にできる
なんでしょうね

899 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 23:46:18.93 ID:WKndAwKhM.net]
いやExsel 2007もサポート切れてますが

900 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 03:26:50.74 ID:0Hr8k8ED0.net]
>>871
自分でもいろいろやってみたんですけどやっぱりダメみたいですね
ありがとうございました

901 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 09:26:06.50 ID:60QkmGs40.net]
試してないけど、プロパティのTabIndexも駄目だったの?

902 名前:デフォルトの名無しさん [2018/01/13(土) 10:05:22.76 ID:8yN0Kzpj0.net]
ThisWorkbook.Application.Hwndでブックのハンドルを取得して、
SetLayeredWindowAttributesで透過処理をする時、
LWA_ALPHAでは問題ないのに、
LWA_COLORKEYに変えると、なぜかブック全体ではなく、
シート上に最初に配置したコマンドボタンの方に誤爆します。

しかも、自分のPCでは問題ないのに、他人のPCだと誤爆するという意味不明さ。
ハンドルがずれる的なバグでもあるのでしょうか?

903 名前:デフォルトの名無しさん [2018/01/13(土) 10:12:39.30 .net]
ウィンドウ表示時にフォーカス当てたいんならTabIndex=0にすればいいんだと思うけど、
あとはフラグを使ってInitialize直後のActivateイベントでフォーカスを当てればいいんじゃね?

Private mblnInitFlag As Boolean

Private Sub UserForm_Activate()
If mblnInitFlag Then
TextBox2.SetFocus
mblnInitFlag = False
End If
End Sub

Private Sub UserForm_Initialize()
mblnInitFlag = True
End Sub

904 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 10:19:25.53 ID:WLDq+ue70.net]
一つ目の表
A,B,C,D,E
aaa,bb,cc,00,20
bbb,cc,dd,11,30

二つ目の表
G,H,I,J,K
aaa,bb,cc,00,10
bbb,cc,dd,11,10

上の様な表があり、一つ目のABC列と二つ目のGHI列の値が一致すれば、二つ目の表の横にE列からK列の数値を引いた値を表示したい。
一致するデータが無ければ、一致データ無しと表示。
上の表だと2つ目の表の右列に、それぞれ10,20と表示。

データ量は300~800程です。
出来る方、よろしくお願いします。



905 名前:デフォルトの名無しさん [2018/01/13(土) 10:29:13.82 .net]
>>875
LWA_COLORKEYは指定した色を透明にするんだから、
その他人のPCでExcelのウィンドウの色が違うんじゃね?

知らんけど

906 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 10:31:29.99 ID:uYJANG/vd.net]
既存プログラムで引数が多いやつを減らしたいんだけどどうすればいい?
ただグローバル変数使うと他のアプリケーションに影響出るから使えない。
今から構造化やクラスにするのは名前変更が大変そうだし、同じ型でも同じ動作でもないからまとめにくい。

907 名前:デフォルトの名無しさん [2018/01/13(土) 10:39:42.82 ID:8yN0Kzpj0.net]
>>878
それが、コマンドボタンとシートの色を同じにしても、
コマンドボタンの方だけ透過されるんです。

しかも最初に配置したコマンドボタンだけ。
2個目以降は変わらず。

透過の前後で、ハンドルの値をデバッグプリントしても変化ないですし。

908 名前:デフォルトの名無しさん [2018/01/13(土) 10:49:24.82 .net]
>>877
2007以降限定でよければL列に計算式埋め込んじゃうけどね

=IF(COUNTIFS($A:$A,$G1,$B:$B,$H1,$C:$C,$I1)>0,SUMIFS($E:$E,$A:$A,$G1,$B:$B,$H1,$C:$C,$I1)-$K1,"一致データ無し")

909 名前:デフォルトの名無しさん [2018/01/13(土) 11:20:55.87 ID:8yN0Kzpj0.net]
ちなみに、こんなのです。

Sub test(ByVal Flg As Boolean)

Dim Hwnd As Long: Hwnd = ThisWorkbook.Application.Hwnd

Call SetWindowLong(Hwnd, -20, &H80000)

If Flg Then
Call SetLayeredWindowAttributes(Hwnd, 0, 200, 1) '←成功
Else
Call SetLayeredWindowAttributes(Hwnd, 0, 200, 2) '←コマンドボタンに誤爆
End If

End Sub

変えているのは最後の引数だけなんですが。

910 名前:デフォルトの名無しさん [2018/01/13(土) 11:27:43.02 .net]
>>879
Sub test1()
Dim args(5) As Variant
Dim arg1 As String
Dim arg2 As Long
Dim arg3 As Variant
Dim arg4 As Workbook
Dim arg5 As Collection

arg1 = "test"
arg2 = 123
arg3 = ActiveSheet.Cells(1, 1)
Set arg4 = ActiveWorkbook
Set arg5 = New Collection
arg5.Add New DataObject
arg5.Item(1).SetText "sample"

args(1) = arg1
args(2) = arg2
args(3) = arg3
Set args(4) = arg4
Set args(5) = arg5

Call test2(args)
End Sub
‘ ――
Sub test2(ByRef args As Variant)
Dim arg1 As String
Dim arg2 As Long
Dim arg3 As Variant
Dim arg4 As Workbook
Dim arg5 As Collection

arg1 = args(1)
arg2 = args(2)
arg3 = args(3)
Set arg4 = args(4)
Set arg5 = args(5)

Debug.Print arg1
Debug.Print arg2
Debug.Print arg3
Debug.Print arg4.Name
Debug.Print arg5.Item(1).GetText
End Sub

911 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 13:04:46.60 ID:WLDq+ue70.net]
>>881
列の挿入や削除の処理があるので、数式だと参照ズレなどが起こってしまうので出来たらVBAで処理したいと考えています。

912 名前:858 mailto:sage [2018/01/13(土) 13:29:13.07 ID:eGapce6A0.net]
>>866
Excel2010を用意しました。

>>864
エクセルで「Book1」「Book2」「Book3」を開いた状態で、
「Book1」「Book2」を並べて比較している時に、
ペアになっている「Book1」「Book2」を特定する方法、
もしくは「Book1」がActiveWorkbookの時に「Book2」を特定する方法が知りたいのです。

913 名前:デフォルトの名無しさん [2018/01/13(土) 13:42:21.62 .net]
>>885
計算式でできればVBAでもそのままできるやん
>>859参照

914 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 13:47:55.56 ID:fyAvIt7m0.net]
並べて比較って
人間が何かを見比べて確認しているわけだから
その作業は人間がやる必要ないとおもうので
全部VBAでバックグランドで処理すればいいのではないかと単純に思ってしまう
最後に比較した結果だけ表示してあげる



915 名前:デフォルトの名無しさん [2018/01/13(土) 15:21:57.51 ID:eGapce6A0.net]
>>886
比較自体は計算式でできますが、
比較する対象を特定する事は計算式でできない気がします。

>>887
挿入等によって比較したい箇所がBook1と2で異なる可能性がある為、
事前に比較の起点となる箇所を選択する必要があります。

916 名前:デフォルトの名無しさん [2018/01/13(土) 16:53:07.70 .net]
>>888
> 比較する対象を特定する事は計算式でできない
意味分からん

=IF(COUNTIFS($A:$A,$G1,$B:$B,$H1,$C:$C,$I1)>0,SUMIFS($E:$E,$A:$A,$G1,$B:$B,$H1,$C:$C,$I1)-$K1,"一致データ無し")

この計算式を単純にVBAに置き換えて
With Worksheets("Sheet1")
If WorksheetFunction.CountIfs(.Range(“A:A”), .Range(“G1”), .Range(“B:B”), .Range(“H1”), .Range(“C:C”), .Range(“I1”)) Then
.Range(“L1”) = WorksheetFunction.SumIfs(.Range(“E:E”), .Range(“A:A”), .Range(“G1”), .Range(“B:B”), .Range(“H1”), .Range(“C:C”), .Range(“I1”)) - .Range(“K1”)
Else
.Range(“L1”) = “一致データ無し”
EndIf
End With

行列を変数で指定できるように.Rangeを.Columnsや.Cellsに置き換えて数値で指定できるようにして
With Worksheets("Sheet1")
If WorksheetFunction.CountIfs(.Columns(1), .Cells(1,7), .Columns(2), .Cells(1,8), .Columns(3), .Cells(1,9)) Then
.Cells(1,12) = WorksheetFunction.SumIfs(.Columns(5), .Columns(1), .Cells(1,7), .Columns(2), .Cells(1,8), .Columns(3), .Cells(1,9)) - .Cells(1,11)
Else
.Cells(1,12) = “一致データ無し”
EndIf
End With

あとは必要なところを変数化してループを回せばいいじゃん
Dim rngCell As Range
Dim lngRow As Long ‘ ループを回すため行番号を変数化
With Worksheets("Sheet1")
Set rngCell = .Cells(1, 12)
‘ 表の詳細仕様が分からないのでとりあえずK列が空じゃない限りループ続行
While rngCell.Offset(0, -1) <> “”
lngRow = rngCell.Row
If WorksheetFunction.CountIfs(.Columns(1), .Cells(lngRow,7), .Columns(2), .Cells(lngRow,8), .Columns(3), .Cells(lngRow,9)) Then
rngCell = WorksheetFunction.SumIfs(.Columns(5), .Columns(1), .Cells(lngRow,7), .Columns(2), .Cells(lngRow,8), .Columns(3), .Cells(lngRow,9)) - .Cells(lngRow,11)
Else
rngCell = “一致データ無し”
EndIf
Set rngCell = rngCell.Offset(1, 0) ‘ 次の行
Wend
End With

列の追加削除があるということだったら列番号も変数化すればいい

917 名前:デフォルトの名無しさん [2018/01/13(土) 17:00:25.96 ID:zzyV/8sb0.net]
初心者で申し訳ありません
セルに入力した選手コードを選手名に置換するような動きをさせたいのですがどうするとよいでしょうか
別のシートに選手名簿は用意してありA列に選手コードB列に選手名があります

918 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 17:42:32.57 ID:8qhapkmN0.net]
>>890
VBA要らん
VLOOKUPでググれ

919 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 17:48:09.64 ID:8qhapkmN0.net]
すまん「置換」を見落とした
VBAは要るな
WorksheetFunction.VLookup でやるなり、ループで検索するなりやればいい

920 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 17:50:29.11 ID:gLbKwyK9x.net]
>>890
普通はセルに入力された選手コードをわざわざVBA置換するなんてことはしないで、VLOOKUP等のワークシート関数を書くけどね
置換操作をVBAで書かなきゃいけない理由はあるの?

921 名前:デフォルトの名無しさん [2018/01/13(土) 17:58:56.84 .net]
>>890
>セルに入力した選手コードを選手名に置換するような動きをさせたい

セルに選手コードを入力して、Enterを押した途端に選手名に置き換わるような動きをさせたいんだな?そうなんだな?

922 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 18:00:41.47 ID:gLbKwyK9x.net]
>>892
検索置換のダイアログでシート内の選手コードを一括変換する、みたいな手作業の業務手順をそのままマクロ化しようとしているのかもしれないし、そういう場合はそもそもシートの設計や業務手順に問題がある場合が多い。
最初にVLOOKUP使えと指摘したあんたの感覚は基本的には正しいと思うぞ。

923 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 18:06:27.84 ID:fyAvIt7m0.net]
>>890
単発ならワークシート関数でやった方が簡単
VLOOKUPで変換したのを用意しといてそれをごそっと上書きする

何回もやるなら、上記をマクロにする
このくらいならマクロの記録でもいけそう

全部VBA上でやる方法もあるけどビギナーには大変でしょう
こんな感じでいいんじゃなかろうか

Dim i
i = スタートする行
Do While Not Worksheets(1).Cells(i, 1) = ""
Worksheets(1).Cells(i, 1) = WorksheetFunction.VLookup _
(Worksheets(1).Cells(i, 1), Worksheets(2).Range("名簿範囲"), 2, 0)
i = i + 1
Loop

シートのインデックスとかは書き換えてね
意味不明ならマクロ記録かさらなる修行をオススメする

924 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 18:07:34.63 ID:gLbKwyK9x.net]
>>894
VBAに慣れてる人ならセル値の置換と聞いただけでワークシート更新イベントを使いたいのかなって思いがちだよな
俺も最初はそう思ったわ
でも質問者の質問内容を推測抜きで素直に読むとそうとは限らないんだよな



925 名前:デフォルトの名無しさん [2018/01/13(土) 18:19:24.76 ID:zzyV/8sb0.net]
>>893
トーナメントの結果を入力するようになっているのですが既に報告用ワークシートはあるのですが入力件数が多くなりすぎて最終的にはバーコードによる入力を試みようとしています
また、その報告用ワークシートは書式が決まっており並べ替えエラーチェックのマクロが既にあるので行を入れたりして関数をいれる対応ができないという状態です
>>894
入力後にマクロ実行用のボタンを押して置換するような想定でした
エンターを押した瞬間変わるものでも大丈夫です

926 名前:デフォルトの名無しさん [2018/01/13(土) 18:35:21.45 ID:zzyV/8sb0.net]
>>892
>>896
ありがとうございます
家に帰り次第試してみます
>>895
今まではワークシート内から対戦選手の名前を探してきてコピーアンドペーストで対応していたのですが参加者が年々増えてきて(今年の見込みは約千人位)追い付かなくなってきたために速度向上を目的としています

927 名前:858 mailto:sage [2018/01/13(土) 18:44:45.15 ID:eGapce6A0.net]
>>889
VBAに記述のあるWorksheets("Sheet1") の箇所を、
並べて比較でペアにしているシートに特定する方法が思いつかないのです。

928 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 19:03:27.44 ID:rZTV+Qsta.net]
>>900
ファイル名とかシート名がランダムでないなら
固定値じゃないの?
どんなファイル名か分からない、シート名か分からないってなら都度入力するしかないな。
データ形式で特定することもできるけど、
無駄な作業にしか思えない。

929 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 19:18:42.64 ID:gLbKwyK9x.net]
>>898
こんな感じならどうかな
以下は、実行すると報告用シート内に含まれる選手コード全てを一気に置換する
複数の選手コードを含む場合も一発で置換できるはず

名簿にはコードの欄が空白の行がなく、名簿シートのA2セル以下に選手コードが入力されているものと仮定してる(A1は表見出し)
セル値の一部が選手コードと一致する場合も置換されてしまうので、コードのみが入力されているセルの値だけを確実に置換したい場合、Replaceメソッドの引数のLookAt:=xlPart をLookAt:=xlWholeに変更してくれ



Sub ReplaceCode

Dim sh_list As WorkSheet '選手名簿シート
Dim sh_report As WorkSheet '報告用シート
Dim i As Long

Set sh_list = WorkSheets("選手名簿シート")
Set sh_report = WorkSheets("報告用シート")
For i = 2 To sh_list.Range("A2").End("xlDown").Row
sh_report.Cells.Replace What:=sh_list.Cells(i, 1).Value, Replacement:=sh_list.Cells(i, 2).Value, LookAt:=xlPart
Next i

End Sub

930 名前:858 mailto:sage [2018/01/13(土) 19:32:04.47 ID:eGapce6A0.net]
>>901
ファイルのフォーマットが複数あるので、
事前にファイル名とシート名を規定できないのです。
なので、せめてペアにしたファイル同士が特定できれば、
ファイルとシートを選択する手間が省けると思ったのですが・・・

3つ以上開けなくなるけど、workbooksからマクロブックを除外した先頭2つを比較する方法で考えてみます。

931 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 19:36:48.93 ID:6HVsHBKb0.net]
>>903
それは運用を変えよう。機械的に処理するなら人間側が合わせる必要がある。
手動で命名規則に沿うか、命名自体を自動的にして人間が意識しないようにするか。

932 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 23:03:28.12 ID:aJN0Dby50.net]
エクセル2010でCSVファイルを開いた場合、
UTF8やshiftjisを自動で判定して表示してくれますが、
この時に判定された文字コードを取得する方法はありますか。

用途は、外部データの取り込みでCSVを開きなおすための文字コードの特定です。

933 名前:デフォルトの名無しさん [2018/01/13(土) 23:14:29.83 ID:odSwvUdp0.net]
>>905
application.nkf

934 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 23:28:32.80 ID:aJN0Dby50.net]
>>906
ありがとうございます。
試してみます。



935 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 06:58:25.18 ID:UVUQYwWb0.net]
>>907
いいってことよ(´・ω・`)b

936 名前:デフォルトの名無しさん [2018/01/15(月) 01:08:16.65 ID:Zqan8uZj0.net]
>>902
実行時エラー13
型が一致しませんとなっていて
For~の行でエラーを出していて止まるみたいです
あと報告シートが選手の強さ別に複数に分かれているのですが今選手コードの入力したシート(つまりいま開いているマクロ実行用のボタンを押したシート)を処理したいという場合どうするとよいのか教えていただけると助かります

937 名前:897 mailto:sage [2018/01/15(月) 01:48:08.96 ID:ubg4QImpx.net]
>>909
エラーの出たコードを転載して見せてもらえませんか?こちらの環境ではうまく動いているんですが、私がコードを転載したときにミスをしたかもしれないので

それから、コードはボタンマクロ(ボタン名_Clickのような名前のプロシージャ)として各シートのシートモジュールに書いているんでしょうか?

938 名前:デフォルトの名無しさん [2018/01/15(月) 11:28:57.27 ID:thpu0oBS0.net]
>>910
Sub ReplaceCode()

Dim sh_list As Worksheet '選手名簿シート
Dim sh_report As Worksheet '報告用シート
Dim i As Long

Set sh_list = Worksheets("選手名簿")
Set sh_report = Worksheets("対戦結果表_A級")
For i = 2 To sh_list.Range("A2").End("xlDown").Row
sh_report.Cells.Replace What:=sh_list.Cells(i, 1).Value, Replacement:=sh_list.Cells(i, 2).Value, LookAt:=xlPart
Next i

End Sub

シート作成用のコードが既にあるのですがその中のコードを流用して各シートに実行用のボタンを置く計画でした
ActiveSheet.Buttons.Add(2, 1.5, 125, 18.75).Select
Selection.OnAction = "CSV_SAVE"
Selection.Characters.Text = Worksheets(2).Cells(1, 1).Text & "級のCSVファイル作成"
With Selection.Characters(Start:=1, Length:=15).Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
これのCSV_SAVEをReplaceCodeにしてボタンの名前と場所をかえるつもりでしたがあまりよくない方法なのでしょうか
必要であれば既にあるコードを出しますので教えてください

939 名前:デフォルトの名無しさん [2018/01/15(月) 11:58:16.00 ID:Vljo7f2q0.net]
>>908
application.nkf オブジェクトが見つかりませんでした。

下記のapplicationオブジェクト内にも、nkfプロパティが見つかりません。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/application-object-excel

オブジェクトの参照方法が違うのでしょうか。

940 名前:897 mailto:sage [2018/01/15(月) 23:02:33.00 ID:JvjYqsKWx.net]
>>911
申し訳ない、For

941 名前:フ行でEnd("xlDown")となってるの、自分の転記ミスでした
エラーの原因もこれでしょう
二重引用符なしでEnd(xlDown)と書き直して動かしてみてください
[]
[ここ壊れてます]

942 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 12:17:16.43 ID:SelV7zwId.net]
質問です。

ソルバーで普通は目的セルをrangeなどで指定しますが、シートのセルにアクセスせず、vba内の変数を直接ソルバーにかけてvba内だけで完結したいのですが、方法あるでしょうか?

943 名前:デフォルトの名無しさん [2018/01/17(水) 02:18:24.01 ID:x8yvrTsd0.net]
>>913
うまくいきました
ありがとうごさいます

944 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 12:24:27.92 ID:sSjH/Vu40.net]
セルのA列にある文字列をコンボboxにaddですべて入れた後に、一文字入力する度に候補が絞られてくって出来ます?
コード教えてもらえないですか?



945 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 12:31:05.83 ID:TVDu7Qf0r.net]
一文字入力する度にコンボボックスの候補を絞ればいいんとちゃうか?
知らんけど

946 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 13:28:17.12 ID:uuergXrf0.net]
社内に部品表があって、重複している名前を省いて部品種類一覧の表を作ろうと思ってます。
・ネジM5
・ネジM5
・ナットM5
・ナットM5

・ネジM5
・ナットM5
というイメージです。
自分なりに下記のマクロを組んでみました。

Dim row As Long, col As Long, D As Range

col = 1
row = 1

Do Until Cells(row, col) = ""
If Not Cells(row, col) = Cells(row + 1, col) Then

If D Is Nothing Then
Set D = Cells(row, col)
Else
Set D = Union(D, Cells(row, col))
End If

End If
row = row + 1
Loop

この後レンジDをコピペするマクロです。
部品の種類が100とか200なら動いてくれますが、本来20,000件超の部品の種類があり、こちらを処理するとフリーズします。
デバックのウィンドウはユニオンのところを指定してきてるんですが、ユニオンにはまとめられる量の限界などがあるのでしょうか?

947 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 13:33:34.73 ID:wJgnfOTG0.net]
>>918
Accessでやれ。

948 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 13:41:46.63 ID:CFAgCrzx0.net]
>>918
ソートして重複を削除じゃダメなのか?

949 名前:デフォルトの名無しさん [2018/01/20(土) 15:03:19.74 ID:Fb/tMd6M0.net]
>>918
Excel VBAでやってもいいけど、RANGEオブジェクトに溜め込むやり方よりは、素直に別シートに値をコピー、さらにそれを検索して別の値が出てきたら別シートにコピーでいいんじゃないのか?

そもそもExcelのフィルタ関連の機能でもできるからVBAを使う理由がわからない。

950 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 15:06:48.01 ID:iefRLv2cp.net]
>>918
dictionaryとかでだめかな?

951 名前:デフォルトの名無しさん [2018/01/20(土) 17:40:00.19 ID:91x3kJT10.net]
DBMSがコンソールなんかに返した結果を
Excelセルに上手く貼り付ける方法ってある?

952 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 19:41:33.47 ID:wJgnfOTG0.net]
>>923
詳細忘れたけど代入する事で、そのまま貼り付けられるメソッドがあったはず。

953 名前:デフォルトの名無しさん [2018/01/20(土) 20:44:55.78 ID:Y9eKqT4m0.net]
多くは語らんけどある意味エスパーと言っておこうw

954 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 13:18:30.88 ID:+2jqUeqC0.net]
>>918
ADOなら一瞬で終わる
いろいろ突っ込まれているように、別の方法のが簡単だと思うけど
シート名やら列名は読みかえてね

Dim adocon As Object, adors As Object
Set adocon = CreateObject("ADODB.Connection")
Set adors = CreateObject("ADODB.Recordset")

With adocon
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "Excel 12.0"
.Open ThisWorkbook.Path & "\" & ThisWorkbook.Name
End With

Set adors = adocon.Execute("SELECT DISTINCT 部品名 FROM [部品表$]")
Worksheets("部品種類一覧").Range("a1").CopyFromRecordset adors
adocon.Close



955 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 15:03:53.81 ID:pRI5Eg/X0.net]
>>862
だれかこれわかる人いません?

956 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 16:45:39.61 ID:WhYlNzfJM.net]
>>918
下手にマクロ組むよりExcelの標準機能の重複削除を使え。

VBAとは違って並列処理できるから速度が段違い

957 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 18:35:28.14 ID:7nwc0luUa.net]
重複なしリストはいろいろやり方あるけど、標準機能使うかadoでやるかがスマートだろうね
dictionaryもありだけど、fsoのやつはなんか取り回しがいまいちじゃね

958 名前:デフォルトの名無しさん [2018/01/21(日) 18:40:31.69 ID:nVuQLEta0.net]
ここ初心者スレかと思ってスレタイ見なおしてしまったわw
オレ以外初心者しかおらんやんw

959 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 18:41:57.84 ID:EcNkRoqM0.net]
メゾット君また寂しくなって来ちゃったのか

960 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 18:57:02.81 ID:7nwc0luUa.net]
.netframeworkのlistって重複削除機能なかったっけ?

961 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 20:07:47.89 ID:+2jqUeqC0.net]
>>932
リストにあるかないかはわかるみたい
これなら配列に突っ込んで総当たりしていくのと変わらなそう
読みやすくはなるけど

Dim partsList As Object
Set partsList = CreateObject("System.Collections.ArrayList")

Dim partsData
Set partsData = Range("データの列")

Dim parts
For Each parts In partsData
 If Not partsList.Contains(parts.Value) Then
  partsList.Add parts.Value
 End If
Next

出力処理省略

962 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 20:16:12.20 ID:rQmHQ7OM0.net]
>>929
> dictionaryもありだけど、fsoのやつはなんか取り回しがいまいちじゃね
意味不明
Dictionaryとfsoになんの関係があるんだ?

963 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 21:00:25.33 ID:xouI7cQH0.net]
>>918
とりま、Union関数は遅いから絶対に使うな、それだけ

セル数がちょっと増えると簡単にフリーズする
普通に配列とかに入れてった方がいい

964 名前:デフォルトの名無しさん [2018/01/21(日) 21:12:55.02 ID:nVuQLEta0.net]
>>935
とりま、なんでいきなりそれを言いだしたのかよく分からんが
遅いのはお前のプログラムが下手糞なだけ

脈絡のない下手糞自慢ごくろうさん



965 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 21:38:18.50 ID:Ycn/1JW20.net]
require 'set'
File.readlines("ファイル名").to_set.map { |item| puts item }

Ruby の集合を使うと、以下のような行区切りのファイルを、








以下のような結果にできる。
ただし、集合にはデフォルトで、順番は無いので、
順番が必要なら、お好みの基準でソートする





966 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 21:51:29.18 ID:EcNkRoqM0.net]
毎度思うんだが、Rubyって他言語のスレにまで布教しに来なきゃならないほど不人気なのか?

967 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 22:19:18.53 ID:Ycn/1JW20.net]
Ruby だと、テキスト処理が、めちゃめちゃ簡単に作れる

他の言語のように、悪戦苦闘しない

968 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 22:23:07.58 ID:+2jqUeqC0.net]
どうせなら引っ越し準備も兼ねてPythonにしようゼ

969 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 23:23:35.81 ID:ppfN03med.net]
単純に2万個のセルをUnionするだけで1時間かかる

Sub aaa()
 Debug.Print Time
 Dim u As Range
 Set u = Cells(1, 1)
 For r = 3 To 40000 Step 2
  Set u = Union(u, Cells(r, 1))
 Next
 Debug.Print Time
End Sub

970 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 23:45:19.36 ID:Ycn/1JW20.net]
2万個のデータは、テキストデータだけなら、1MB ぐらいだろ

>>937
のRuby でのテキスト処理なら、1秒ぐらいじゃないか?

971 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 00:04:49.43 ID:R+7srG110.net]
>>942
空気読んでね


972 名前:アこはテキスト処理の質問スレじゃなくて
Excel VBAの質問スレだから
[]
[ここ壊れてます]

973 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 01:20:01.78 ID:pYe1Cwj70.net]
そんなに時間が掛かるのなら、一旦データをエクスポートして、
データをテキスト処理してから、インポートして戻せば?

たかが、2万個のデータで、1時間は現実的ではない

そんなに時間が掛かっても、どうしても、VBA でやりたいのか?

974 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 01:43:29.00 ID:zmIcszTc0.net]
あくまでUnionを使った場合であって高速に処理する方法はいくらでもあるからなぁ。
それに仕事でVBA使う環境だと他社との協調も考えなきゃいけないからRubyインストールする方がよっぽど非現実的だし。

まぁ、たぶんおちょくってるつもりなんだろうけど、そもそもVBA以外の環境がないって前提のスレだから、
Rubyマンの煽りが煽りになっていないっていう・・・。



975 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 04:08:31.22 ID:Xp9Ai2fT0.net]
重複の削除はワークシートでやった方がてっとり早いと思う

976 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 04:38:17.99 ID:AE7SVx7N0.net]
>>945
> そもそもVBA以外の環境がないって前提のスレだから
そんな前提で質問に来る人もいるだろうけど、
「最適解」を求めている人が、とりあえずVBAだとどうなるか、と思って質問する場合もあるでしょ

だから、質問者が「全体にVBA以外はダメ」って制限をかけていない限りは、
上でも、ACCESSを進めている人もいたけど、実用面から考えた回答も質問者の利益になると思うんだけど
(質問者がそう思っていても、何も知らないからそう思ってるってパターンすらあり得るかな)

977 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 05:56:27.49 ID:zmIcszTc0.net]
>>947
Excel VBA質問スレでの「実用面」は、一般的な企業向けWindows PC(Office製品入り)で出来る事に制限されると思うけど。
それに質問者が明言した事以外は「出来ない」と考えておくのが常識だと思うね。

だいたい他の言語に興味があるなら、その言語のスレで質問すりゃいいわけだし、
どんな自己弁護をしたところで特定言語のスレで他言語の話をする理由にはならないよ。

せめて質問者に対してVBA以外の開発環境は無いか訊ね、Rubyが使えるという自発的な回答が得られた時に初めて、
Rubyスレに誘導して、そちらで話を展開すべきだね。

978 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 08:37:35.39 ID:AE7SVx7N0.net]
>>948
> それに質問者が明言した事以外は「出来ない」と考えておくのが常識だと思うね。
リアルでも、相手に聞きもせずに勝手にそんな縛りをかけて要件定義する人はいないと思うよ

> せめて質問者に対してVBA以外の開発環境は無いか訊ね、Rubyが使えるという自発的な回答が得られた時に初めて、
> Rubyスレに誘導して、そちらで話を展開すべきだね。
環境を聞くのは勿論ありだが、「○○だとより簡単にできるよ」ってこちらから言う事に何の問題があるのか?
今ある環境内で必ず実現する必要があるなら別だが、そうでない場合もよくあることでしょ

ま、いずれにせよ、何も聞かないうちに勝手に「○○に違いない」って決めつけるのは、
要件定義では一番しちゃいけないことだよ

979 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 10:06:54.55 ID:zmIcszTc0.net]
>>949
仕事している風を装いたいんだろうけど、明らかに経験が無いの丸出しなんだよな・・・。

そもそもVBAスレでRubyの話を出してくる事自体が問題なんだよ。
君が問題になっているのは要件定義の話ではなく開発環境の話だ。

明確な線引きをするなら、このスレではxlsmに記録し、特別な準備なしに実行できるものでなければ、何であれ許容範囲外だ。

980 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 10:12:50.46 ID:JFwvghX1M.net]
またそうやって明文化されてもいない自分ルールを展開していくー

981 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 10:23:32.81 ID:zmIcszTc0.net]
明文化されてはいないけど、過去から今までのスレでの反応を見る限りは、
だいたいxlsmファイル単体でマクロの実行が補完できるかどうかが拒絶反応の出る出ないを分けてるよ。

ただ個別にマクロが記録された二つ以上のファイルを連携させる場合の話もあるから「xlsmに記録し、準備なしに実行可能な」と定義しただけ。
押しつけるつもりはないけど、この定義で問題が無ければテンプレに加えてキチ避けしてほしいくらい。

982 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 11:30:49.09 ID:r0T2WJT6a.net]
>>934
ごめんscriptingRuntimeのやつ、の間違いだ

983 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 11:33:07.33 ID:y0jssaARd.net]
VBAをメインとして他言語も補助的に使う。
それなりにあると思う

984 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 15:12:56.07 ID:EwN8a0pa0.net]
同じ現象が起きるようにできるだけ簡単なコードを用意しました

まっさらなxlsmにUserForm1を挿入し、TextBox1とTextBox2を横に並べます
UserForm1モジュールに下記のようにコードを記述します

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 39 Then
With TextBox2
.SetFocus
.SelStart = 0
End With
End If
End Sub

UserForm1を呼んだ後、TextBox2にabと記入します
このとき、TextBox1からTextBox2に矢印キー右でうつろうとするとaの前ではなくaとbの間にカーソルが来てしまいます。
どうすればaの前にカーソルが来るようになりますか?もちろんabは例示にすぎずいろんな文字列が入ります
よろしくお願いします



985 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 15:25:33.05 ID:EwN8a0pa0.net]
>>955ですけど、KeyCode=40、つまり矢印キー下にセッティングして
TextBox1から2に移ると頭にカーソルきますね
ということは、入力した矢印キー右がTextBox2に移ったあとも生きててその影響が出てるってことですかね
まぁ原因分かっても解決方法が分からないのですが

986 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 16:37:43.27 ID:DgxtyBXU0.net]
試していないけれど
With TextBox2 の前に
KeyCode = 0 を入れたらどう

987 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 17:07:09.72 ID:+/nnDvsjM.net]
>>954
VBAでは書きにくい or 実行速度がめちゃ遅い
かつ
その言語なら簡単に書ける or 実行速度が速い

ならありうると思う
なのでAccessとかADOならまだわかるけどRubyはないな

988 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 22:49:33.42 ID:EwN8a0pa0.net]
>>957
しゅごい・・・できました
ありがとうございました

989 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 10:46:16.37 ID:QE61Ho6h0.net]
。と。の間に入ってる文字を全部同じ文字に置換したい場合ってどうすればいいでしょうか?

。。       →。ccc。
。akok。    →。ccc。
。3293i9ia。  →。ccc。

みたいな感じです

990 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 11:16:56.30 ID:QE61Ho6h0.net]
すいません数式の中の。と。の間の文字を置換でした

991 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 12:30:55.33 ID:4OtF4psx0.net]
数式の中のってのがよくわかんないから実際の数式を書いてくれ

992 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 13:09:34.71 ID:QE61Ho6h0.net]
こういう事がやりたいって感じです
わかりづらくてすいません

=123456789(この9桁の数字はランダム) → =123ccc789
=123456789(この9桁の数字はランダム) → =12ccc3456789

993 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 13:24:33.86 ID:96uZKYcfd.net]
>>963
。の話はどこへいったんだ?

994 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 13:52:49.81 ID:QE61Ho6h0.net]
いやこっちの方がわかりやすいかなとw



995 名前:デフォルトの名無しさん [2018/01/24(水) 14:37:17.59 ID:626EYBnb0.net]
2週間くらい前から、

フォームコントロールのボタンを配置すると

エクセルファイルの起動が

いつもの起動時間の5倍くらいかかる様になり困っています。

ちなみに、新規のファイルでも同じ現象になり、

他のパソコンでも同じ現象になっています。

どなたか、解決方法を知らないでしょうか?

今使っている環境は

Windows 10、バージョン 1709
Excel2016 バージョン 1712

です。

996 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 14:47:11.88 ID:LHEOU22dM.net]
>>965
草生やしてんじゃねえよ真面目に質問しろ

997 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 16:00:42.34 ID:eVK1iV6m0.net]


998 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 17:24:26.92 ID:QE61Ho6h0.net]
なんでwなんて打ったのか・・・反省してます

999 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 17:48:11.23 ID:cTEKAhE2M.net]
>>969
VBA 正規表現 置換
でググれ

1000 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 19:49:39.94 ID:4OtF4psx0.net]
>>963
みんなこれでわかるの?
上と下に規則性があるように見えないんだが
上は値を置き換えてて、下は挿入してるよね

1001 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 20:02:49.35 ID:XHxrtrwiM.net]
わかりません

1002 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 21:10:53.71 ID:6b5evSsja.net]
>>918
そのテキストファイルがCSVファイルみたいにカンマ区切りで
ヘッダとして項目名が付いてて項目名に重複が無ければ
そのファイルにSQLぶん投げて結果セット取ってこれるんだけどなぁ

1003 名前:デフォルトの名無しさん [2018/01/24(水) 21:14:29.60 .net]
地道にループぶん回してFomulaLocalとInStrとMidしてちょ

1004 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 21:29:25.29 ID:l13g0WQj0.net]
いや、ループするにしても
VbScriptingDictionary使うかCollection使って
値をキーとして登録して
同じキーがあれば無視、無ければ登録追加で
最後にその取っておいた内容を
展開するようにすればそこそこのレスポンスで
行けるんじゃないかな。

SQLで行けるならそれが最速だとは思うけど。



1005 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 19:41:38.87 ID:x0ph6Erf0.net]
ちゃんとしたDBMSならともかく、エクセル表にSQL投げて実行速度が速いとか考えられんけど

1006 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 21:14:11.87 ID:xVw6nJl50.net]
ADOだとそれなりに早いイメージなんだけど
実際はどうなのかね
誰か検証していてもよさそうだが

1007 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:04:13.28 ID:BYFi0PM80.net]
一項目だけの比較なんかだとVBAでやるのと変わらないけど、色々と条件が増えていくとSQLの方が速度が落ちにくい。
あと他の誰かが見ることも考慮すると、SQLで見えるようにしておいた方が分かりやすい。

ただExcelでSQLというのは絶望的に使いづらい。

1008 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:28:41.91 ID:3kW0jqmr0.net]
UPDATEはできるけどDELETEができないんだっけ?

1009 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:46:48.37 ID:2HN+h3+60.net]
できなくてもやらなきゃいけない時があるんだよ男にはな

1010 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 10:16:15.47 ID:i1V2CYFLa.net]
エクセルのテーブル機能ってどうなんよ
あんまり使わんから馴染みないんだけどsql使いやすくなったりせんの?

1011 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 14:00:22.47 ID:ewTTza6/0.net]
>>980
猫もだよ
穴に逃げた虫を懸命に取ろうとしている

1012 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 19:52:38.86 ID:uoysLyn50.net]
こういうのを見ると
早くPython導入して欲しいって思うよな
アンケート取られてたからちょっと入門見たけど結構面白いわアレ
こういった集約的なことに関してもずっと楽に作れそう
VBやC#でも後の方で覚えることになるラムダ式や
イテレーターとかごく基本的な当たり前のこととして
いきなり最初から出てくるし

1013 名前:デフォルトの名無しさん [2018/01/26(金) 20:26:28.69 ID:Vo+OzJVu0.net]
VBAですら暴走しまくりのお前らにpythonなんか与えたら社会を困らす力作マクロ()がますます増えちゃうじゃんかw

1014 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 20:36:36.35 ID:VXa7znFt0.net]
コードをまともに読み書き出来ないメゾット君が心配するような事でもないけどな



1015 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 22:00:17.36 ID:mlDN6tJ0d.net]
VBAを廃止なんてできるわけないからPythonと入り乱れたプログラムになるんだろーか?

1016 名前:デフォルトの名無しさん [2018/01/26(金) 22:15:41.07 ID:pXxYwYu40.net]
職場の環境じゃVBAくらいしか選択肢がない

1017 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 22:23:52.83 ID:Ji/nweCn0.net]
>>987
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1097447.html

1018 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 22:40:51.06 ID:VXa7znFt0.net]
影響するのは最新バージョンだけだろうし、Excel版Pythonの初期バージョンだと使い物にならなかったり参考文献が少なかったりの問題で、
本格的に使われるようになるにしても五年以上かかりそう。そしてそこからさらに数年経たないと、そのバージョン使う会社が出てこなさそう。

っていうか今までもVBAをVB.Netへ移行させようとして失敗してたらしいし、AIブームに乗じた一時的なもんで実現しないんじゃないの。

1019 名前:デフォルトの名無しさん [2018/01/27(土) 00:23:34.40 .net]
Pythonって起動にめっちゃ時間がかかるから(5秒くらい)
普段使いのちょっとしたツール作るには使い物にならないという印象

1020 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 00:36:59.48 ID:Xe+uGT7T0.net]
多分Python載ったとしてもしばらくはVBAと共存だろうとは思う。
勉強嫌いな爺さん達にはPythonが来るのは驚異以外の何物でもないかも知れないけど
導入されたら少なからず徐々に普及し始める。

なぁに、EXCELの中のコンパクトに纏まった世界の話だし
勉強するにはうってつけだと思う。
少なくとも今後のVBAよりは次に繋がるよ。

1021 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 01:00:30.81 ID:/Onm91iZa.net]
今まで言語を変えるような具体的な話は出てなかったからなぁ
まさかObject指向言語じゃなくていきなり関数型言語が来るとはなぁ

1022 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 01:49:19.54 ID:mMQhkopa0.net]
PythonはAIブームの収束と共に消えていきそうな雰囲気だから将来性っていうと疑問が・・・。

1023 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 08:00:53.71 ID:lEBNH3fnr.net]
ツッコミどころ多すぎだけどとりあえずw
オマエがギモンを感じるなw

1024 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 08:16:06.57 ID:ZgMGVzLO0.net]
>>990
> Pythonって起動にめっちゃ時間がかかるから(5秒くらい)
さすがにPC買い換えようよ...



1025 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 11:01:00.79 ID:Nudrd5lRF.net]
Excel Python 質問スレ
mevius.2ch.net/test/read.cgi/tech/1517018055/

1026 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 14:29:11.91 ID:arqbrGPuM.net]
VBAがくっそ使えない言語だから普通はpython大歓迎でしょ…

1027 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 15:20:10.85 ID:cbFXqoc10.net]
VBA嫌いじゃないけど、Phythonの方が明らかにエレガントなコーディングできそうだから歓迎しかないわ
VBAは参照設定したら使える程度のものになるんじゃないか?

1028 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 15:44:26.54 ID:+7hAxrT3a.net]
どんな言語だってできる奴はできる。
VBAが駄目だとか言う奴に限って碌なコード書けない奴ばかりなんだよなあ。

1029 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 16:05:43.43 ID:arqbrGPuM.net]
こんな書いててストレスマッハの言語はないからな
まあ全員パイソンいくでしょw

1030 名前:デフォルトの名無しさん [2018/01/27(土) 16:11:26.72 ID:3QIsbpwxM.net]
VBA→javascript→Pythonの順に覚えたけど何がそんなにストレスなのかよく分からん

1031 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 17:39:06.57 ID:Xe+uGT7T0.net]
それより次スレは?

1032 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 19:59:27.66 ID:QIG/4o8/0.net]
>>998パイソンやとスレで相談したいときに
質問スレではインデント崩れて悲惨なことになってるな

1033 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 20:30:03.5 ]
[ここ壊れてます]

1034 名前:6 ID:Xe+uGT7T0.net mailto: とりあえず次スレ立てておいた
Excel VBA 質問スレ Part52
http://mevius.2ch.net/test/read.cgi/tech/1517052305/

>>1003
Pythonはスコープがインデントで決められているからね
インデントの重みが他の言語のそれとは全く違う

代わりにEnd IfやEnd Subみたいなものがない
[]
[ここ壊れてます]



1035 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 22:07:33.55 ID:845Tmzax0.net]
>>1004

1000ゲット

1036 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 80日 10時間 41分 3秒

1037 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<339KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef