スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
※前スレ
Excel VBA 質問スレ Part51
http://mevius.2ch.net/test/read.cgi/tech/1510107990/
Excel VBA 質問スレ Part52
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2018/01/27(土) 20:25:05.67ID:Xe+uGT7T2018/01/27(土) 20:26:07.63ID:Xe+uGT7T
2018/01/27(土) 20:37:51.59ID:U6WUbfXx
ほす
4デフォルトの名無しさん
2018/01/27(土) 20:40:42.16ID:v1Vq7O9g >>1
よう無能wスレ立ても満足にできんのかw
よう無能wスレ立ても満足にできんのかw
2018/01/27(土) 20:44:44.53ID:Xe+uGT7T
2018/01/27(土) 21:18:02.81ID:U6WUbfXx
これはあれか、メゾット君か
パイソンスレでも暴れてるけど
笑えるわ
パイソンスレでも暴れてるけど
笑えるわ
7デフォルトの名無しさん
2018/01/27(土) 22:30:19.28ID:v1Vq7O9g >>6
ようメゾット君w久しぶりやなw
ようメゾット君w久しぶりやなw
2018/01/27(土) 22:56:24.41ID:845Tmzax
>>7
はよ立て直せよヘタレ
はよ立て直せよヘタレ
2018/01/27(土) 23:22:14.86ID:cbFXqoc1
>>7
うんこ擦り付けるのやめてもらえませんかね
うんこ擦り付けるのやめてもらえませんかね
2018/01/27(土) 23:32:58.75ID:mMQhkopa
メゾット君は恥じるって感情を持ち合わせている割に自分より上位の人間に勝てない喧嘩売るのは辞めないってのが不思議
11デフォルトの名無しさん
2018/01/27(土) 23:46:41.45ID:v1Vq7O9g2018/01/27(土) 23:48:38.90ID:cbFXqoc1
2018/01/27(土) 23:55:56.46ID:cbFXqoc1
>>13
いや、それに反論した君もその定義を理解してるんだろ?
いや、それに反論した君もその定義を理解してるんだろ?
15デフォルトの名無しさん
2018/01/27(土) 23:58:06.82ID:v1Vq7O9g2018/01/28(日) 00:01:24.71ID:tSF66yjC
17デフォルトの名無しさん
2018/01/28(日) 00:03:07.53ID:8+IXgyMg2018/01/28(日) 00:06:37.18ID:tSF66yjC
>>17
定義もわからんでバカにするってどう言うことなのかよくわからんわ
メゾット君本人でもなけりゃなんも気にならないと思うんだけど
とにかく、そこはわかってないということはわかったからそれ以上興味ないわ
定義もわからんでバカにするってどう言うことなのかよくわからんわ
メゾット君本人でもなけりゃなんも気にならないと思うんだけど
とにかく、そこはわかってないということはわかったからそれ以上興味ないわ
2018/01/28(日) 00:07:58.80ID:mZQyM07n
いや、メゾット君はVBAのコードを読み書き出来ないんだから、このスレでは初歩的な事を聞いてくる初心者より下位やぞ
20デフォルトの名無しさん
2018/01/28(日) 00:12:08.48ID:BSlLksGg2018/01/28(日) 00:13:56.37ID:tSF66yjC
>>20
具体的に
具体的に
22デフォルトの名無しさん
2018/01/28(日) 00:18:17.28ID:8+IXgyMg2018/01/28(日) 00:22:13.43ID:NUwCXosq
>>5
ほならね理論で草
ほならね理論で草
2018/01/28(日) 00:26:24.39ID:tSF66yjC
>>22
それはその時のレスそのままの意味だよ
それはその時のレスそのままの意味だよ
2018/01/28(日) 12:43:11.93ID:iOPSu+uz
メゾット君1とはなんぞや
26デフォルトの名無しさん
2018/01/28(日) 13:52:51.41ID:8+IXgyMg 無能の>>1のことなんじゃね?しらんけど
2018/01/28(日) 14:14:41.52ID:XZzu/jLR
ここまで何の技術も質問も無い件
2018/01/28(日) 16:29:29.49ID:mZQyM07n
>>25
メゾット君とはプログラミングについての知識が一切無いにも関わらず、このスレに三年ほど前から張り付いていて、
具体性の無い罵詈雑言をレスし続けている名無しの一人
Methodの読み方が分からず「メゾット」と呼んだ事が名称の由来
まともな社会経験が無い為なのか、実用性が極端に薄い独特な思考法で会話をしようとする為、
回線を三つほど使い回して自演している時でも本人と特定出来てしまう
偶然映り込むよう装ってロレックスの腕時計を見せびらかすように写メに撮ってみたり(映り込み方は非常に不自然)、
プログラミングの本を読んで「変数」という概念の存在を数時間で認知できたことを褒めて欲しいと再三強調したり、
どうも虚栄心が異様に強い傾向にあるらしいが、現実では満たされない為に、このスレで他人を罵倒して鬱憤を晴らしてる様だ
平日の日中は反応が無い事が多いので労働に従事しているらしい事が見受けられるが、
中古と思われる書籍しか購入していないなど、知識に対する評価が低い点から見て、社会的地位が低い仕事だと思われる
メゾット君であるかどうかに関わらず、具体的な指摘、コードの付与がないレスはスルーする事をお勧めする
メゾット君とはプログラミングについての知識が一切無いにも関わらず、このスレに三年ほど前から張り付いていて、
具体性の無い罵詈雑言をレスし続けている名無しの一人
Methodの読み方が分からず「メゾット」と呼んだ事が名称の由来
まともな社会経験が無い為なのか、実用性が極端に薄い独特な思考法で会話をしようとする為、
回線を三つほど使い回して自演している時でも本人と特定出来てしまう
偶然映り込むよう装ってロレックスの腕時計を見せびらかすように写メに撮ってみたり(映り込み方は非常に不自然)、
プログラミングの本を読んで「変数」という概念の存在を数時間で認知できたことを褒めて欲しいと再三強調したり、
どうも虚栄心が異様に強い傾向にあるらしいが、現実では満たされない為に、このスレで他人を罵倒して鬱憤を晴らしてる様だ
平日の日中は反応が無い事が多いので労働に従事しているらしい事が見受けられるが、
中古と思われる書籍しか購入していないなど、知識に対する評価が低い点から見て、社会的地位が低い仕事だと思われる
メゾット君であるかどうかに関わらず、具体的な指摘、コードの付与がないレスはスルーする事をお勧めする
29デフォルトの名無しさん
2018/01/28(日) 17:09:44.50ID:8+IXgyMg あれ?レス番飛んでるけどメゾット君何かレスしたの?
2018/01/28(日) 18:08:50.22ID:xEeIgRKG
スレ保守のついでに相手してやったのよ
以後はスルーするつもり
以後はスルーするつもり
2018/01/30(火) 03:46:22.71ID:kllVg4gx
2点質問いいでしょうか
1.下記コードのコメントアウトで挟んだ部分の実行時間を短縮したいのですが何かいい方法はありますか?
やりたいことは各セルに@区切りで3つのランダムな数字が入った状態から、その3つの数字で入力規則のドロップダウンリスト作成→1つ目選択です(実際は1万セル前後あります)
2.複数回実行した時にかかる時間が増えていくのは何故でしょうか?
Excel2016です、よろしくお願いします
Option Explicit
Dim i As Long, start As Long, num As String, area As Variant
Sub test()
start = Timer
area = Range("B3:B5003")
For i = 1 To UBound(area)
area(i, 1) = Int(Rnd * 1000) & "@" & Int(Rnd * 1000) & "@" & Int(Rnd * 1000)
Next i
Range("B3:B5003") = area
'//////////
For i = 3 To 5003
num = Replace(Range("B" & i), "@", ",")
With Range("B" & i).Validation
.Delete
.Add Type: = xlValidateList, _
Formula1: = Replace(Range("B" & i), "@", ",")
End With
Range("B" & i) = Split(num, ",")(0)
Next i
'//////////
Range("D3") = Round(Timer - start, 2) & " 秒"
End Sub
1.下記コードのコメントアウトで挟んだ部分の実行時間を短縮したいのですが何かいい方法はありますか?
やりたいことは各セルに@区切りで3つのランダムな数字が入った状態から、その3つの数字で入力規則のドロップダウンリスト作成→1つ目選択です(実際は1万セル前後あります)
2.複数回実行した時にかかる時間が増えていくのは何故でしょうか?
Excel2016です、よろしくお願いします
Option Explicit
Dim i As Long, start As Long, num As String, area As Variant
Sub test()
start = Timer
area = Range("B3:B5003")
For i = 1 To UBound(area)
area(i, 1) = Int(Rnd * 1000) & "@" & Int(Rnd * 1000) & "@" & Int(Rnd * 1000)
Next i
Range("B3:B5003") = area
'//////////
For i = 3 To 5003
num = Replace(Range("B" & i), "@", ",")
With Range("B" & i).Validation
.Delete
.Add Type: = xlValidateList, _
Formula1: = Replace(Range("B" & i), "@", ",")
End With
Range("B" & i) = Split(num, ",")(0)
Next i
'//////////
Range("D3") = Round(Timer - start, 2) & " 秒"
End Sub
2018/01/30(火) 07:48:44.61ID:gBU+LQhN
>>31
いちいちセルからデータを持ってこない
何度も同じ処理をしない
'//////////
area = Range("B3:B5003")
For i = 3 To 5003
num = Replace(area(i - 2, 1) , "@", ",")
With Range("B" & i).Validation
.Delete
.Add Type: = xlValidateList, _
Formula1: = num
End With
area(i - 2, 1) = Split(num, ",")(0)
Next i
Range("B3:B5003") = area
'//////////
いちいちセルからデータを持ってこない
何度も同じ処理をしない
'//////////
area = Range("B3:B5003")
For i = 3 To 5003
num = Replace(area(i - 2, 1) , "@", ",")
With Range("B" & i).Validation
.Delete
.Add Type: = xlValidateList, _
Formula1: = num
End With
area(i - 2, 1) = Split(num, ",")(0)
Next i
Range("B3:B5003") = area
'//////////
2018/01/30(火) 08:10:08.93ID:R3oCXQqF
どうでもいいけど、セルのインデックスを文字列で指定するのは明らかにスマートじゃない気がする
確かcellsの方が多少速度早いんじゃなかったか
確かcellsの方が多少速度早いんじゃなかったか
2018/01/30(火) 08:27:38.31ID:aDcByURH
B列固定でとりあえず動作すりゃいいってのならどっちでもいいんじゃない。
将来的に変更可能性あるなら別だけど
将来的に変更可能性あるなら別だけど
2018/01/30(火) 12:45:58.02ID:vLC2w8Bp
2018/01/30(火) 14:45:24.44ID:kllVg4gx
2018/01/30(火) 15:19:01.11ID:5GO1HuBo
2018/01/30(火) 16:11:27.88ID:kllVg4gx
>>37
最後を
Range("D3") = Round(Timer - start, 2) & " 秒"
End '←追加
End Sub
にしたら加算されなくなりました
新規の列だとならなかったので作成したドロップダウンリストの何かが残ってるのかなと思ってたのですがEndは今回初めて知りました
みなさんありがとうございました
最後を
Range("D3") = Round(Timer - start, 2) & " 秒"
End '←追加
End Sub
にしたら加算されなくなりました
新規の列だとならなかったので作成したドロップダウンリストの何かが残ってるのかなと思ってたのですがEndは今回初めて知りました
みなさんありがとうございました
2018/01/30(火) 16:16:06.37ID:kllVg4gx
すみません、こっちでした
Cells(4, 4) = Round(Timer - start, 2) & " 秒"
End
End Sub
Cells(4, 4) = Round(Timer - start, 2) & " 秒"
End
End Sub
2018/01/30(火) 17:49:35.13ID:2erBHUms
たぶん変数をモジュールレベルで宣言してるからじゃないのこれ
プロシージャ内に宣言して不都合なことある?
プロシージャ内に宣言して不都合なことある?
2018/01/31(水) 01:14:12.85ID:3K34O5TZ
42デフォルトの名無しさん
2018/01/31(水) 01:42:08.16 なるほど、マクロの最後にはおまじないとしてEndを書いといたほうがいいのか
2018/01/31(水) 07:52:17.18ID:1/FNqCDn
2018/01/31(水) 07:55:30.29ID:1/FNqCDn
訂正、スマートってよりは場当たり的って感じで嫌
2018/01/31(水) 08:12:45.84ID:bjoCXrds
>>42
普通にコーディングしてたらそんな必要はない
普通にコーディングしてたらそんな必要はない
2018/01/31(水) 08:20:37.67ID:bjoCXrds
>>41
列をループさせないかつ列名がついてないような表なら無しではないかもしれないね
列名ついてるならEnumなりユーザー定義型なりで名前つけてやるべきだろうと思うが
引数に文字列の結合式を書くことが個人的にはすごく気持ち悪いけどまあそれは人それぞれかもしれないね
列をループさせないかつ列名がついてないような表なら無しではないかもしれないね
列名ついてるならEnumなりユーザー定義型なりで名前つけてやるべきだろうと思うが
引数に文字列の結合式を書くことが個人的にはすごく気持ち悪いけどまあそれは人それぞれかもしれないね
2018/01/31(水) 08:23:10.53ID:1/FNqCDn
あとモジュールレベルの変数名はiとか他でも使うような名前にしない方がいいぞ。
他で使っちゃってたりして予期せぬエラーの原因になる。
他で使っちゃってたりして予期せぬエラーの原因になる。
48デフォルトの名無しさん
2018/01/31(水) 10:32:40.89ID:y6ZUdqMb ここで質問するか微妙ですが質問します。
エクセル起動すると
1004エラーmacrooptionsのエラーが出ます
スタートメニューのすべてのプログラムからエクセルを起動しても同様のエラーがでます
オフィスを再インストールしても同様エラーが出るのですが解決策ないでしょうか?
エクセル起動すると
1004エラーmacrooptionsのエラーが出ます
スタートメニューのすべてのプログラムからエクセルを起動しても同様のエラーがでます
オフィスを再インストールしても同様エラーが出るのですが解決策ないでしょうか?
2018/01/31(水) 11:59:35.68ID:sVXcwb3a
他のバージョンのOffice製品が混在していないか
インストールされたプログラムで「修復」を試みたか
MSの fix it も試してみるべき
インストールされたプログラムで「修復」を試みたか
MSの fix it も試してみるべき
2018/01/31(水) 12:12:55.39ID:QBWxlyAw
>>47
さらに言えば、モジュール変数はm,グローバル変数はgを先頭に付けたほうが保守しやすい(俺は)
さらに言えば、モジュール変数はm,グローバル変数はgを先頭に付けたほうが保守しやすい(俺は)
2018/01/31(水) 12:38:18.79ID:/yXosPjR
2018/01/31(水) 13:51:36.51ID:NL/gtaqq
モジュール変数なら許せてグローバル変数が許せない、ということではないよな?
2018/01/31(水) 14:08:57.02ID:4YhVePXS
2018/01/31(水) 15:23:18.93ID:1/FNqCDn
自分は他のソフトを制御するのにVBA使ってるけど、モジュールレベル変数やグローバル変数を使うとインスタンスが残って不具合出ることが多かったから使わないようにしてる。
解放させる手もあるけど、タイミングに気を使うし記述も面倒。そしてなにより不具合発生原因の特定がスコープが広すぎるときつい。
だったらプロシージャ内で終わるの前提で設計する方が楽という結論になった。
あと、公式でプロシージャレベル変数が保持されることに期待するマクロは推奨しないみたいなコメントなかったっけ。
解放させる手もあるけど、タイミングに気を使うし記述も面倒。そしてなにより不具合発生原因の特定がスコープが広すぎるときつい。
だったらプロシージャ内で終わるの前提で設計する方が楽という結論になった。
あと、公式でプロシージャレベル変数が保持されることに期待するマクロは推奨しないみたいなコメントなかったっけ。
2018/01/31(水) 17:43:55.07ID:QBWxlyAw
そうそう。
フォームもクラスも使ったプログラミングを始めるとグローバル変数を使わざる負えない場合がある。
下手にENDを使われると同時に開いてるアドインが使い物にならない可能性があるので注意したほうが良いかも
フォームもクラスも使ったプログラミングを始めるとグローバル変数を使わざる負えない場合がある。
下手にENDを使われると同時に開いてるアドインが使い物にならない可能性があるので注意したほうが良いかも
2018/01/31(水) 17:55:21.63ID:4YhVePXS
>>55
クラスにろフォームにしろそのモジュール内で完結させるのは前提だけどね
標準モジュールでもモジュールレベル変数が有効なことがないこともないがね
完全にパブリックなグローバル変数は可能な限り使わないのが基本だろう
クラスにろフォームにしろそのモジュール内で完結させるのは前提だけどね
標準モジュールでもモジュールレベル変数が有効なことがないこともないがね
完全にパブリックなグローバル変数は可能な限り使わないのが基本だろう
2018/01/31(水) 19:46:12.53ID:/yXosPjR
今までグローバル変数を使わなければ
ならなかった局面に当たったことがない
どんな時に使わなければならなくなる?
いや、いつも外部とのやり取りは
パブリックなメソッドやプロパティで
やってるんだけど
ならなかった局面に当たったことがない
どんな時に使わなければならなくなる?
いや、いつも外部とのやり取りは
パブリックなメソッドやプロパティで
やってるんだけど
2018/01/31(水) 19:50:56.33ID:wkRhZUuX
59デフォルトの名無しさん
2018/01/31(水) 20:27:34.36 Endを使われても問題が生じない堅牢なアドインの作り方としては、設定値はレジストリに保持しておいてグローバル変数はあくまでキャッシュとして使うのがいいのかな?
(グローバル変数を使う前に必ず存在チェックして、NothingやEmptyなら都度レジストリから値を読み出してインスタンス再生成)
(グローバル変数を使う前に必ず存在チェックして、NothingやEmptyなら都度レジストリから値を読み出してインスタンス再生成)
60デフォルトの名無しさん
2018/01/31(水) 20:31:58.29 ちなみにグローバル変数と書いたけど、Endでモジュールレベルの変数もクリアされるという理解
61デフォルトの名無しさん
2018/01/31(水) 20:42:31.70ID:8SvFgWa22018/01/31(水) 20:43:12.79ID:wkRhZUuX
2018/01/31(水) 20:43:32.54ID:QI8wXuam
2018/01/31(水) 20:47:16.36ID:QI8wXuam
2018/01/31(水) 21:19:51.64ID:pJssMamu
プリミティブな値を保持するコンテナが欲しいとき、ほとんどの場合はグローバル変数やモジュールレベル変数を使うまでもなくセルなどに書き込むだけで事足りる
セルへのアクセス時には組み込みのイベントがいくつも走るのでそこは要注意だし、巨大な動的配列を使用する場合は処理速度の問題が出てくるけど
セルへのアクセス時には組み込みのイベントがいくつも走るのでそこは要注意だし、巨大な動的配列を使用する場合は処理速度の問題が出てくるけど
2018/01/31(水) 21:22:46.33ID:aBe463em
サーバーの監視業務からいきなりVBAでデータ抽出したりする部署に飛ばされたんだけど、なんかいい勉強方法あります?
SQLサーバから引っ張ったりしてます。
SQLサーバから引っ張ったりしてます。
2018/01/31(水) 21:32:20.06ID:4YhVePXS
endはホントに終わらせたいときにしかつかっちゃダメだろう
PCで言えば強制終了と同じようなもんだ
仕方なしに使うもんで、グローバル変数と同じように出来るだけ使わないようにするもの
少なくともおまじない感覚はダメだな
PCで言えば強制終了と同じようなもんだ
仕方なしに使うもんで、グローバル変数と同じように出来るだけ使わないようにするもの
少なくともおまじない感覚はダメだな
2018/01/31(水) 21:39:56.78ID:JpECFIQ2
エクセルはメモリを適切に解放しない事が多々あるので、Endが有効な場面もそれだけ増えるというのが困りもの
69デフォルトの名無しさん
2018/01/31(水) 21:56:08.56ID:niw7tDFN すみません質問です。初心者です
曜日を順番に表示したいのですが、出てくる曜日がデタラメなのです。
どこか悪いんでしょうが、さっぱりわかりません。
ベテラン様、教えてくだされ。
Dim 年 As Integer, 月 As Byte, 日 As Byte
年=2018
月=1
i = 1
For 日 = 1 To 31
Cells(i + 3, 3).Value = Format(年 / 月 / 日, "aaa")
i = i + 1
Next
曜日を順番に表示したいのですが、出てくる曜日がデタラメなのです。
どこか悪いんでしょうが、さっぱりわかりません。
ベテラン様、教えてくだされ。
Dim 年 As Integer, 月 As Byte, 日 As Byte
年=2018
月=1
i = 1
For 日 = 1 To 31
Cells(i + 3, 3).Value = Format(年 / 月 / 日, "aaa")
i = i + 1
Next
2018/01/31(水) 22:02:51.06ID:QI8wXuam
71デフォルトの名無しさん
2018/01/31(水) 22:13:47.19ID:niw7tDFN >>70
日付型にしてみたけど、やはりダメみたいです。
日付型にしてみたけど、やはりダメみたいです。
72デフォルトの名無しさん
2018/01/31(水) 22:14:33.5173デフォルトの名無しさん
2018/01/31(水) 23:18:11.45ID:q0yM2zae Cells(i + 3, 3).Value = Format(DateValue(年 & "/" & 月 & "/" & 日), "aaa")
2018/02/01(木) 00:24:06.09ID:vMTE7P+w
>>53
クラスモジュールのやつはインスタンスごとに別の実体だからモジュール変数じゃない。
クラスモジュールのやつはインスタンスごとに別の実体だからモジュール変数じゃない。
2018/02/01(木) 08:11:40.86ID:qON5QokW
急いでるとよく間違えるよな。しかも思い込みでミス発見に時間かかかるかる
2018/02/01(木) 19:37:02.10ID:cx2O6kE2
78デフォルトの名無しさん
2018/02/01(木) 19:45:37.17ID:mRcX8hpa >>77
禿乙
禿乙
79デフォルトの名無しさん
2018/02/02(金) 10:09:17.92ID:VDaFhWcz http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/bingo_game.html
すみません このページでダブルビンゴの判定を追加しようと思うのですがうまくいきません。。。
すみません このページでダブルビンゴの判定を追加しようと思うのですがうまくいきません。。。
2018/02/02(金) 10:42:11.74ID:+j1MBhFC
ワシはティンコを2本もっている
2本目はとっておきだ(´・ω・`)b
2本目はとっておきだ(´・ω・`)b
2018/02/02(金) 18:16:54.37ID:ZpXsrnJV
>>80
バケモノじゃねーか
バケモノじゃねーか
82デフォルトの名無しさん
2018/02/02(金) 23:02:56.20 >>79
試してないけどこんな感じかね
・関数の先頭に「Dim cn5 As Integer」を追加
・「cn1 = 0: cn2 = 0」の直前行に「cn5 = (cn1 ¥ 5) + (cn2 ¥ 5)」を追加 (「/」ではなく「¥」)
・「cn3 = 0: cn4 = 0」の直前行に「cn5 = (cn3 ¥ 5) + (cn4 ¥ 5)」を追加
・「End With」の直前行に以下を追加
If cn5 = 5 Then
.Range(cf(k)).Value = "BINGO!!"
Beep
End If
試してないけどこんな感じかね
・関数の先頭に「Dim cn5 As Integer」を追加
・「cn1 = 0: cn2 = 0」の直前行に「cn5 = (cn1 ¥ 5) + (cn2 ¥ 5)」を追加 (「/」ではなく「¥」)
・「cn3 = 0: cn4 = 0」の直前行に「cn5 = (cn3 ¥ 5) + (cn4 ¥ 5)」を追加
・「End With」の直前行に以下を追加
If cn5 = 5 Then
.Range(cf(k)).Value = "BINGO!!"
Beep
End If
83デフォルトの名無しさん
2018/02/02(金) 23:03:49.7784デフォルトの名無しさん
2018/02/08(木) 00:16:22.23ID:MSYeXSpW クロスワードパズル、迷路探索アルゴリズムをExcelVBAで作ることができたので、
今度はテトリス作ってみようと思う。
が、飛躍しすぎ?
キー操作で回転させるとか、→押下で横に移動しつつ落下するとかは、難しそうだな。
タイマとかも張らないといけない?
今度はテトリス作ってみようと思う。
が、飛躍しすぎ?
キー操作で回転させるとか、→押下で横に移動しつつ落下するとかは、難しそうだな。
タイマとかも張らないといけない?
2018/02/08(木) 07:26:16.72ID:XpMtH+Ey
>>84
5年くらい前に作った。
余裕とは言わないけどぷよぷよ作るよりは楽。
タイマーはAPIで見てる。
ブロックはセルに数字を入れて
条件付き書式で着色した。
今作ればクラスの理解があの頃とは全然違うので
多分また違う作りになると思う。
5年くらい前に作った。
余裕とは言わないけどぷよぷよ作るよりは楽。
タイマーはAPIで見てる。
ブロックはセルに数字を入れて
条件付き書式で着色した。
今作ればクラスの理解があの頃とは全然違うので
多分また違う作りになると思う。
2018/02/08(木) 13:17:56.16ID:qQDxntOi
テトリスってWinAPIに慣れるために最初に作るようなヤツだから構造的にはそこまで難しくないだろうな
でもエクセルだと描画速度の問題があるから・・・
でもエクセルだと描画速度の問題があるから・・・
2018/02/08(木) 13:25:02.66ID:f2SIrsod
2018/02/08(木) 19:21:45.57ID:aY4A4Yk1
宣言済みの変数を全て初期化するにはどうしたらいいですか?
2018/02/08(木) 19:31:17.27ID:8qhKGghx
>>88
律儀に全部の変数になにかを代入すりゃいいだけだろ
律儀に全部の変数になにかを代入すりゃいいだけだろ
2018/02/08(木) 19:48:57.07ID:aY4A4Yk1
2018/02/08(木) 19:51:00.94ID:fuTq97cg
>>88
宣言した直後は初期化されてる
マクロの動作がすべて終了したら自動的に初期化される
マクロの動作の途中ですべての変数を初期化したいなら、初期化するプログラムをいちいち書くしかないけど、
それはもともとの設計が悪い、方針がおかしい
宣言した直後は初期化されてる
マクロの動作がすべて終了したら自動的に初期化される
マクロの動作の途中ですべての変数を初期化したいなら、初期化するプログラムをいちいち書くしかないけど、
それはもともとの設計が悪い、方針がおかしい
92デフォルトの名無しさん
2018/02/08(木) 19:52:33.01ID:x393c3Y0 構造体の初期値とかな
2018/02/08(木) 19:53:04.95ID:fuTq97cg
>>90
そもそも初期化漏れってなんだ?たとえば
Dim AAA As Integer
みたいに書いてあると、マクロが実行開始された時点ではAAAは必ず0になってるんだけど
ほかの言語と勘違いしてないか
そもそも初期化漏れってなんだ?たとえば
Dim AAA As Integer
みたいに書いてあると、マクロが実行開始された時点ではAAAは必ず0になってるんだけど
ほかの言語と勘違いしてないか
94デフォルトの名無しさん
2018/02/08(木) 20:07:30.59ID:nI+/jCYy Integerとか使うなよw
2018/02/08(木) 20:12:43.47ID:aY4A4Yk1
設計が悪いのは確かです。私がVBAド初心者の頃から改良・機能追加を繰り返したコードでぐちゃぐちゃしてます。Public変数だらけなんです。
まとめて初期化する方法はなさそうですね、残念ですがレスありがとうございました。
まとめて初期化する方法はなさそうですね、残念ですがレスありがとうございました。
2018/02/08(木) 20:55:54.86ID:XpMtH+Ey
>>93
欲しい初期値がデフォルト値とは限らない
欲しい初期値がデフォルト値とは限らない
2018/02/08(木) 21:31:08.51ID:YcyG5pes
リセットするプログラム組んでおいて呼び出すとか
2018/02/08(木) 21:43:42.80ID:wjl/A/KY
変数のスコープは短い方がメンテナンス性がいいと思います
2018/02/08(木) 21:48:43.16ID:Cj1tzdzh
変数の値なんて必要に応じてセットするもんだろ
なんだよ「全変数初期化」って
プログラミングの基礎からやりなおした方がいい
なんだよ「全変数初期化」って
プログラミングの基礎からやりなおした方がいい
100デフォルトの名無しさん
2018/02/08(木) 21:50:33.84ID:fuTq97cg 初期化するサブルーチンを作れ
101デフォルトの名無しさん
2018/02/08(木) 21:52:16.55ID:nI+/jCYy >>88が必要だと思ったから聞いてんだろw
何を訳のわからん事言ってんだコイツはw
何を訳のわからん事言ってんだコイツはw
102デフォルトの名無しさん
2018/02/08(木) 22:08:53.43ID:aY4A4Yk1103デフォルトの名無しさん
2018/02/08(木) 22:30:18.23ID:gEZZVs8q104デフォルトの名無しさん
2018/02/08(木) 22:47:07.92ID:XpMtH+Ey >>102
ひとこと言わせてもらうと
そもそも「一括で全ての変数を初期化する」と言う
機能が必要になっている時点で多分構成的に
破綻していると思う。
変数を設定する前にどんなプログラムをどんな構成で組むのか、
そのためにはどんなライフサイクルの変数が必要で
スコープはどうするのか
次回から考えて作るようにした方がいい。
もっとも、今そんなことを言っても
多分取り返しのつかないようなコードになっているだろうから
とりあえず一つクラスを作っておいて
今パブリック変数として使っている変数を
そのクラスのプロパティとして移してやって、
生成する際にコンストラクタで初期化してやったら
どうだろうか。
条件によって初期値が変わるのならそのクラス内に
そのためのメソッドを作ってもいいと思う。
あまりいい作りとは言えないけど
そのクラスのインスタンスを
モジュール変数にセットしておいて
初期化したいときは新たに生成したものを
その変数に入れてやればとりあえずは
現状よりはもう少し手が入れやすくなると思う。
ひとこと言わせてもらうと
そもそも「一括で全ての変数を初期化する」と言う
機能が必要になっている時点で多分構成的に
破綻していると思う。
変数を設定する前にどんなプログラムをどんな構成で組むのか、
そのためにはどんなライフサイクルの変数が必要で
スコープはどうするのか
次回から考えて作るようにした方がいい。
もっとも、今そんなことを言っても
多分取り返しのつかないようなコードになっているだろうから
とりあえず一つクラスを作っておいて
今パブリック変数として使っている変数を
そのクラスのプロパティとして移してやって、
生成する際にコンストラクタで初期化してやったら
どうだろうか。
条件によって初期値が変わるのならそのクラス内に
そのためのメソッドを作ってもいいと思う。
あまりいい作りとは言えないけど
そのクラスのインスタンスを
モジュール変数にセットしておいて
初期化したいときは新たに生成したものを
その変数に入れてやればとりあえずは
現状よりはもう少し手が入れやすくなると思う。
105デフォルトの名無しさん
2018/02/08(木) 22:48:28.42 >>102
setvar, letvar, getvar, setarray, letarray, getarray みたいな共通関数を作りましょう。
型ごとに letstrvar, getintvar みたいなのも作っといたほうが便利かな。
まあ大きな関数5〜6個と小さな関数30個くらい実装すれば事足りるでしょう。
既存の g_FooBar, g_Baz みたいなPublic変数へのアクセスを全部 letstrvar("g_FooBar", local_str), local_int = getintvar("g_Baz") のような形式に書き換えましょう。
共通関数の中では、実際の値は巨大な配列に保持して、名前とインデックスを紐付けて管理しましょう。
こうすればグローバル変数の置換は機械的にできるし、変数の初期化も一発です。
健闘を祈ります。
setvar, letvar, getvar, setarray, letarray, getarray みたいな共通関数を作りましょう。
型ごとに letstrvar, getintvar みたいなのも作っといたほうが便利かな。
まあ大きな関数5〜6個と小さな関数30個くらい実装すれば事足りるでしょう。
既存の g_FooBar, g_Baz みたいなPublic変数へのアクセスを全部 letstrvar("g_FooBar", local_str), local_int = getintvar("g_Baz") のような形式に書き換えましょう。
共通関数の中では、実際の値は巨大な配列に保持して、名前とインデックスを紐付けて管理しましょう。
こうすればグローバル変数の置換は機械的にできるし、変数の初期化も一発です。
健闘を祈ります。
106デフォルトの名無しさん
2018/02/08(木) 23:00:19.46ID:aY4A4Yk1 >>103
>>104
レスありがとうございます。
このVBAコードは自分しか使わないし、自分以外がメンテすることはありえないので、
ろくにプログラミングの基本マナーなんてものを勉強しないまま、コード追加追加でわけわからなくなってしまったものです。
自分の書き込みから短時間で、お前のコードの設計が悪いんだとのレスを多く頂いて正直落ち込んでおります・・・
薄々気付いてはいましたが、他の方から指摘されると流石にこたえました。
少しずつ改善していこうと思います。
その上で、>>104をやっていこうと思います。
現時点で>>104の内容は理解できていませんが、なんかすごい貴重なアドバイスなような気がします。参考にさせていただきます。ありがとうございました。
>>104
レスありがとうございます。
このVBAコードは自分しか使わないし、自分以外がメンテすることはありえないので、
ろくにプログラミングの基本マナーなんてものを勉強しないまま、コード追加追加でわけわからなくなってしまったものです。
自分の書き込みから短時間で、お前のコードの設計が悪いんだとのレスを多く頂いて正直落ち込んでおります・・・
薄々気付いてはいましたが、他の方から指摘されると流石にこたえました。
少しずつ改善していこうと思います。
その上で、>>104をやっていこうと思います。
現時点で>>104の内容は理解できていませんが、なんかすごい貴重なアドバイスなような気がします。参考にさせていただきます。ありがとうございました。
107デフォルトの名無しさん
2018/02/08(木) 23:48:09.40ID:XpMtH+Ey >>106
構成に関しては単一責任原則に沿って作れば
上達が早くなると思うので
もし知らなければググってみた方がいいかも。
初期化というのは実はそこそこ奥の深い話で
ファクトリーパターンやファクトリーメソッドとか
ググると色々出てくるのだけれど
かなりObject指向寄りの話になってしまうので
ここではまぁ興味があればということで。
頑張ってくださいね。
構成に関しては単一責任原則に沿って作れば
上達が早くなると思うので
もし知らなければググってみた方がいいかも。
初期化というのは実はそこそこ奥の深い話で
ファクトリーパターンやファクトリーメソッドとか
ググると色々出てくるのだけれど
かなりObject指向寄りの話になってしまうので
ここではまぁ興味があればということで。
頑張ってくださいね。
108デフォルトの名無しさん
2018/02/09(金) 06:47:45.10ID:Oqb9O2xf >>102
> 後からPublic変数を追加した場合、その"リセットするプログラム"も変更の必要ありますよね?
変更すればいいじゃない
そもそも今あるPublic変数はともかく今後もPublic変数バンバン増やしちゃるって思ってるの?
> 後からPublic変数を追加した場合、その"リセットするプログラム"も変更の必要ありますよね?
変更すればいいじゃない
そもそも今あるPublic変数はともかく今後もPublic変数バンバン増やしちゃるって思ってるの?
109デフォルトの名無しさん
2018/02/09(金) 08:10:43.77ID:pONSvQ5P j自分しか使わないってんなら現状使っているのはそのまま置いといて、いい機会だと
思って新たに作るぐらいの気持ちで、「少しずつ改善」なんて小手先のことやらずに1度徹底的
に作り直したほうが良い。
思って新たに作るぐらいの気持ちで、「少しずつ改善」なんて小手先のことやらずに1度徹底的
に作り直したほうが良い。
110デフォルトの名無しさん
2018/02/09(金) 12:00:04.92ID:liPrOEdm グローバル変数、「さっき設定した値を後でまた参照する」的な意味でどうしても必要になることは理解できるけど、
あったとして一つか二つがいいところ。
データセット的なものを配列使わず保持するならたくさん必要になるけど、さすがにそれは配列かコレクション使え。
あったとして一つか二つがいいところ。
データセット的なものを配列使わず保持するならたくさん必要になるけど、さすがにそれは配列かコレクション使え。
111デフォルトの名無しさん
2018/02/09(金) 19:07:16.76ID:pFe+ikyv 毎回初期化が必要なグローバル変数があるならいっそ値をワークシートに保存して管理した方が安全だよな
112デフォルトの名無しさん
2018/02/09(金) 19:29:49.16 誰か>>105を巨大配列じゃなくてワークシートに記録するやり方で実装してください。
113デフォルトの名無しさん
2018/02/09(金) 19:45:27.04ID:mfiNCmZ5 >>105さん渾身のネタ、スベる
114デフォルトの名無しさん
2018/02/10(土) 01:27:55.34ID:UqvxHzys Worksheet_Calculateが頻繁に呼び出され、これが主な処理であるとき
Public変数だらけになったことはある
初心者だから他にもっといい方法があったのかもしれんが
Public変数だらけになったことはある
初心者だから他にもっといい方法があったのかもしれんが
115デフォルトの名無しさん
2018/02/10(土) 04:42:12.40ID:sZXQwMqu でもみんなPublicな変数使ってて怖くない?
標準、あるいはクラスモジュール単位で
作られたメンバ変数が勝手に外部から
書き換えられちゃうんだよ?
しかもブレークポイントにもかからないから
いろんなところから頻繁に書き換えられたら
変な値が入っても犯人探しが大変だし。
前にも書いたけどプロパティにしたり
関数にしたりしてアクセサつけといた方がいいと思うよ。
読み取り専用にも出来るしね。
標準、あるいはクラスモジュール単位で
作られたメンバ変数が勝手に外部から
書き換えられちゃうんだよ?
しかもブレークポイントにもかからないから
いろんなところから頻繁に書き換えられたら
変な値が入っても犯人探しが大変だし。
前にも書いたけどプロパティにしたり
関数にしたりしてアクセサつけといた方がいいと思うよ。
読み取り専用にも出来るしね。
116デフォルトの名無しさん
2018/02/10(土) 05:43:42.77ID:FhCw4HrB マクロの設計にもよるだろうけどグローバル変数使わずに大がかりなマクロ作ったことあるから、
絶対に避けられないというのは疑問だな。
だいたい初期化が必要な時点でグローバル変数にするのは不適当だし。
絶対に避けられないというのは疑問だな。
だいたい初期化が必要な時点でグローバル変数にするのは不適当だし。
117デフォルトの名無しさん
2018/02/10(土) 07:57:32.74ID:vxg4RvSK 初心者あるあるだな
修正や追加を繰り返すうちにコードがスパゲッティになって、変数がどこで書き換えられたか追跡できなくなったもんだから特定のタイミングで一気に初期化したい
すごい手間がかかってるから全面的な書き直しもやりたくない
保守性やモジュール化などの概念がわかってきたところで覚悟を決めて、設計からやり直した方が幸せになれるパターン
修正や追加を繰り返すうちにコードがスパゲッティになって、変数がどこで書き換えられたか追跡できなくなったもんだから特定のタイミングで一気に初期化したい
すごい手間がかかってるから全面的な書き直しもやりたくない
保守性やモジュール化などの概念がわかってきたところで覚悟を決めて、設計からやり直した方が幸せになれるパターン
118デフォルトの名無しさん
2018/02/10(土) 07:57:57.08ID:4c5k2dma おまえらにはグローバル変数は決して悪いものではないという事を知って欲しい
119デフォルトの名無しさん
2018/02/10(土) 12:25:34.71ID:silh4Kun コントロールのイベントプロシージャはプライベートっていう制約があるから
シートと、ユーザーフォーム間のActiveXコントロールで変数の受け渡しをする場合は、パブリック変数を使用するしかいい方法がないと思う
シートと、ユーザーフォーム間のActiveXコントロールで変数の受け渡しをする場合は、パブリック変数を使用するしかいい方法がないと思う
120デフォルトの名無しさん
2018/02/10(土) 12:29:55.88ID:XBpzoSQ/ ワークシートはグローバル変数みたいなもん
印刷さえしなければたいがい便利に使える
印刷さえしなければたいがい便利に使える
121デフォルトの名無しさん
2018/02/10(土) 14:00:23.82ID:7mQmOVGk シートから直接取ればいいのでは??
使い回すにしてもプライベート変数で事足りると思うけど。
パブリックにして読み書き自由にする必要はないんじゃないか?
使い回すにしてもプライベート変数で事足りると思うけど。
パブリックにして読み書き自由にする必要はないんじゃないか?
122デフォルトの名無しさん
2018/02/10(土) 17:52:03.19ID:pkIiHatw rangeオブジェクトを分割して2つのrangeオブジェクトにしたいのですがこれだと値がおかしいので解決方法教えてください
Set obj = Range("a1:b100")
set obj1 = obj.range(obj.cells(1,1),obj.cells(100,1))
set obj2 = obj.range(obj.cells(1,2),obj.cells(100,2))
Set obj = Range("a1:b100")
set obj1 = obj.range(obj.cells(1,1),obj.cells(100,1))
set obj2 = obj.range(obj.cells(1,2),obj.cells(100,2))
123デフォルトの名無しさん
2018/02/10(土) 18:04:50.18ID:o71hUKxM >>122範囲をセットしてるだけで
値をセットしているわけではない
値をセットしているわけではない
124デフォルトの名無しさん
2018/02/10(土) 19:22:41.50ID:+Zdspcyw >>122
objに設定してるセルが存在するシートの参照式が省略されてるけど、シートはActiveSheetでいいの?
あと、obj1とobj2には値を設定してるわけじゃないんだが、値がおかしいってどういうこと?
objに設定してるセルが存在するシートの参照式が省略されてるけど、シートはActiveSheetでいいの?
あと、obj1とobj2には値を設定してるわけじゃないんだが、値がおかしいってどういうこと?
125デフォルトの名無しさん
2018/02/10(土) 21:53:50.67ID:9qCKy78B vbaに関する質問か分からないけど、
他者が作成したexcel vbaマクロの中身をのぞこうとしたら、パスワードがかかって開けなかった。
どうやったらパスワードを特定できる?
他者が作成したexcel vbaマクロの中身をのぞこうとしたら、パスワードがかかって開けなかった。
どうやったらパスワードを特定できる?
126デフォルトの名無しさん
2018/02/10(土) 21:55:42.82ID:Ohg/Tsol >>125
そんなもの他者が特定出来たらパスワードの意味がないだろう
そんなもの他者が特定出来たらパスワードの意味がないだろう
127デフォルトの名無しさん
2018/02/10(土) 21:55:42.88ID:yN3uaIXc >>125
パスかけたやつに聞く
パスかけたやつに聞く
128デフォルトの名無しさん
2018/02/10(土) 22:02:18.01129デフォルトの名無しさん
2018/02/10(土) 22:16:02.76ID:5tf0t1pe >>123-124
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = obj.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = obj.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
こんな風にした2列選択した後に1列毎のrangeオブジェクトに割り当てようとしています
試しにobj1.Selectとやって範囲を確認してみると関係のないセルが選択されてしまいました
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = obj.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = obj.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
こんな風にした2列選択した後に1列毎のrangeオブジェクトに割り当てようとしています
試しにobj1.Selectとやって範囲を確認してみると関係のないセルが選択されてしまいました
130デフォルトの名無しさん
2018/02/10(土) 23:02:35.50 >>129
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = obj.Worksheet.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = obj.Worksheet.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = obj.Worksheet.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = obj.Worksheet.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
131デフォルトの名無しさん
2018/02/10(土) 23:24:31.56 このほうが汎用的なのかな
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = Application.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = Application.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
Set obj = Application.InputBox("2列選択", Type:=8)
Set obj1 = Application.Range(obj.Cells(1, 1), obj.Cells(obj.Count / 2, 1))
Set obj2 = Application.Range(obj.Cells(1, 2), obj.Cells(obj.Count / 2, 2))
132デフォルトの名無しさん
2018/02/10(土) 23:27:24.03133デフォルトの名無しさん
2018/02/10(土) 23:39:33.30ID:o71hUKxM set obj = nothing
は最後に入れるべきか、
ほったらかしでも問題無いのか
どうなんだろう?
は最後に入れるべきか、
ほったらかしでも問題無いのか
どうなんだろう?
134デフォルトの名無しさん
2018/02/11(日) 00:18:26.88ID:q9UPBdZm おまえらには必要
135デフォルトの名無しさん
2018/02/11(日) 04:53:44.34ID:LDeaRbgm 同じADOでもデルファイのクローズはナッシングだけど、VB系の場合はクローズだよねだいたい
たしかクローズせずにナッシングするとクローズできなくなる
たしかクローズせずにナッシングするとクローズできなくなる
136デフォルトの名無しさん
2018/02/11(日) 08:29:24.42ID:AIGXauyP >>129
例えばC1:D:4を選択した場合
1.obj.Rangeの中で更にobj.Cellsを指定するということは、C列目を基準にC列目を指定をしていることになる。
だからRangeの中にCellsを書く時はobj.Cellsではなく、obj.Worksheet.Cellsが良い。
2.obj1がC1:C4、obj2にD1:D4をセットしたいってことだよな?
obj.Cells(obj.Count / 2, 1)
この書き方だと行数を半分にしているのだがこれは一体・・・
もしC1:F10を指定した場合にC1:D10、E1:F10に分けたいわけじゃないの?
3.可読性が死ぬからRange使うのをやめよう。
範囲指定をする時はResize、Offsetを使ったほうが直感的です。
当初の質問を参考に2の通りだと仮定して
Set obj1 = obj.Resize(, obj.Column / 2)
Set obj2 = obj.Resize(, obj.Column / 2).Offset(,obj.Column / 2)
Objには2列しか選択されない事が確定しているなら
Set obj1 = obj.Resize(, 1)
Set obj2 = obj.Resize(, 1).Offset(,1)
例えばC1:D:4を選択した場合
1.obj.Rangeの中で更にobj.Cellsを指定するということは、C列目を基準にC列目を指定をしていることになる。
だからRangeの中にCellsを書く時はobj.Cellsではなく、obj.Worksheet.Cellsが良い。
2.obj1がC1:C4、obj2にD1:D4をセットしたいってことだよな?
obj.Cells(obj.Count / 2, 1)
この書き方だと行数を半分にしているのだがこれは一体・・・
もしC1:F10を指定した場合にC1:D10、E1:F10に分けたいわけじゃないの?
3.可読性が死ぬからRange使うのをやめよう。
範囲指定をする時はResize、Offsetを使ったほうが直感的です。
当初の質問を参考に2の通りだと仮定して
Set obj1 = obj.Resize(, obj.Column / 2)
Set obj2 = obj.Resize(, obj.Column / 2).Offset(,obj.Column / 2)
Objには2列しか選択されない事が確定しているなら
Set obj1 = obj.Resize(, 1)
Set obj2 = obj.Resize(, 1).Offset(,1)
137デフォルトの名無しさん
2018/02/11(日) 10:16:47.04138デフォルトの名無しさん
2018/02/11(日) 10:18:33.85139デフォルトの名無しさん
2018/02/11(日) 10:29:03.91ID:q9UPBdZm 文献()読んでもわからんからこんな掃き溜めで質問しとんのやろw
ややこしい奴やなあw
ややこしい奴やなあw
140デフォルトの名無しさん
2018/02/11(日) 10:34:27.69 >>139
俺は回答者側や
俺は回答者側や
141デフォルトの名無しさん
2018/02/11(日) 10:37:10.14ID:q9UPBdZm142デフォルトの名無しさん
2018/02/11(日) 10:38:14.38ID:YMxCZLKM ほったらかしで問題ない場合と
そうでない場合があるので
よくわからなければ明示的に
Nothing入れといた方がいい
そうでない場合があるので
よくわからなければ明示的に
Nothing入れといた方がいい
143デフォルトの名無しさん
2018/02/11(日) 10:54:41.06ID:A61Ds/EI >>138
> あ、想像で書いてるどっかのブログとかじゃなくて
> ちゃんとしたMicrosoftの公式文献ね
偉そうにほざく前にMSDNぐらいググれ
https://msdn.microsoft.com/ja-jp/library/cc408924.aspx
> あ、想像で書いてるどっかのブログとかじゃなくて
> ちゃんとしたMicrosoftの公式文献ね
偉そうにほざく前にMSDNぐらいググれ
https://msdn.microsoft.com/ja-jp/library/cc408924.aspx
144デフォルトの名無しさん
2018/02/11(日) 10:58:29.29 >>143
どこにobj.Rangeの引数としてobj,Cellsが指定された場合の解釈のされ方が書いてあるの?
どこみてもActiveSheet.Rangeの引数として使ってる例ばっかりだし、内部的にどういう形式に変換されてるのか全然読み取れないんだわ
どこにobj.Rangeの引数としてobj,Cellsが指定された場合の解釈のされ方が書いてあるの?
どこみてもActiveSheet.Rangeの引数として使ってる例ばっかりだし、内部的にどういう形式に変換されてるのか全然読み取れないんだわ
145デフォルトの名無しさん
2018/02/11(日) 11:40:12.40ID:A61Ds/EI146デフォルトの名無しさん
2018/02/11(日) 11:49:28.10147デフォルトの名無しさん
2018/02/11(日) 12:24:58.11ID:A61Ds/EI そう思いたいならそれでいいんじゃね w
148デフォルトの名無しさん
2018/02/11(日) 12:56:24.79ID:AIGXauyP >>137
公式文献は知らないがそういうもんだと納得している。
想像()とか、こんなくらい知ってるわヴォケとか言われそうだが
set ws = Worksheets(1)があると仮定して。
これはどれもRange("B2")への参照を示すわけだが
ws.Cells(2,2)
ws.Cells(2,2).Cells(1,1)
ws.Cells(2,2).Range("A1")
CellsとかRangeは同一ワークシート内であれば、いくらでも参照先を変更できる。
例えばこれはどれもRange("C3")への参照。
B2を基準(1,1)として(2,2)を見ていることになるからだ。
ws.Cells(2,2).Cells(2,2)
ws.Cells(2,2).Range("B2")
ws.Range(ws.Cells(2,2).Range("B2"))
問題の件はobjに既にRangeが格納されているからわかりづらいが
Set obj = ws.Range("B2") の場合に
obj.Range(ws.Cells(2,2)) というのは
ws.Range("B2").Range(ws.Cells(2,2)) ってことだよね
単一セルの場合はws.Range("B2").Cells(2,2)と同一の結果になる。
範囲の場合も考え方は同じだがRange(a,b)でaとbに範囲を渡した場合
aとbを合わせた領域の最端の範囲を示すのは言わずもがな。
結局のところ何も難しい話ではなくて、Offsetの相対指定とResizeの範囲指定を同時にできるのがRangeだっていう話に戻る。
普段ws.Range("A1")と書いているものは、実はws.cells(1,1).Range("A1")の省略形だって考えて俺は納得した。
公式文献は知らないがそういうもんだと納得している。
想像()とか、こんなくらい知ってるわヴォケとか言われそうだが
set ws = Worksheets(1)があると仮定して。
これはどれもRange("B2")への参照を示すわけだが
ws.Cells(2,2)
ws.Cells(2,2).Cells(1,1)
ws.Cells(2,2).Range("A1")
CellsとかRangeは同一ワークシート内であれば、いくらでも参照先を変更できる。
例えばこれはどれもRange("C3")への参照。
B2を基準(1,1)として(2,2)を見ていることになるからだ。
ws.Cells(2,2).Cells(2,2)
ws.Cells(2,2).Range("B2")
ws.Range(ws.Cells(2,2).Range("B2"))
問題の件はobjに既にRangeが格納されているからわかりづらいが
Set obj = ws.Range("B2") の場合に
obj.Range(ws.Cells(2,2)) というのは
ws.Range("B2").Range(ws.Cells(2,2)) ってことだよね
単一セルの場合はws.Range("B2").Cells(2,2)と同一の結果になる。
範囲の場合も考え方は同じだがRange(a,b)でaとbに範囲を渡した場合
aとbを合わせた領域の最端の範囲を示すのは言わずもがな。
結局のところ何も難しい話ではなくて、Offsetの相対指定とResizeの範囲指定を同時にできるのがRangeだっていう話に戻る。
普段ws.Range("A1")と書いているものは、実はws.cells(1,1).Range("A1")の省略形だって考えて俺は納得した。
149デフォルトの名無しさん
2018/02/11(日) 13:17:28.48ID:A61Ds/EI >>148
素直な君には正解を教えてあげる w
For example, if the selection is cell C3, Selection.Cells(2, 2) returns cell D4
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-item-property-excel
素直な君には正解を教えてあげる w
For example, if the selection is cell C3, Selection.Cells(2, 2) returns cell D4
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-item-property-excel
150デフォルトの名無しさん
2018/02/11(日) 16:48:17.26 >>148
ありがとう。
結局、想像でしかないけど、
obj.Range(obj.Cells(x, x), obj.Cells(x, x))
を独自関数
SelectionRangeCells(obj, obj.Cells(x, x), obj.Cells(x, x))
に置き換えると、こんな感じのことをしているのかね。
Function SelectionRangeCells(ByRef rng As Range, ByRef cell1 As Range, ByRef cell2 As Range) As Range
Dim startRow As Long
Dim endRow As Long
Dim startColumn As Long
Dim endColumn As Long
startRow = WorksheetFunction.Min(cell1.Row, cell2.Row)
endRow = WorksheetFunction.Max(cell1.Row, cell2.Row)
startColumn = WorksheetFunction.Min(cell1.Column, cell2.Column)
endColumn = WorksheetFunction.Max(cell1.Column, cell2.Column)
Set SelectionRangeCells = rng.Resize(endRow - startRow + 1, endColumn - startColumn + 1).Offset(startRow - 1, startColumn - 1)
End Function
obj.Range("A1")という形式の場合は公式ドキュメントに明確に書かれてるね。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-range-property-excel
obj.Range(obj.Cells(x, x), obj.Cells(x, x))
の場合はobj.Cells(x, x)が実体セルを指していてobjとの相対位置も分かってるわけだから
Rangeプロパティ内で相対参照を算出する実装方法も考えられるしそのほうが使う側は分かりやすいはずだけど
そう実装していないという明確な記述がどこにもなかったから実際に動かしてみての想像しかできなかった。
(ちなみに>>149がなにやら勘違いしているようだがCells(x, x)【Cells._Default(x, x)】が何を返すかを知りたかったわけではない)
ありがとう。
結局、想像でしかないけど、
obj.Range(obj.Cells(x, x), obj.Cells(x, x))
を独自関数
SelectionRangeCells(obj, obj.Cells(x, x), obj.Cells(x, x))
に置き換えると、こんな感じのことをしているのかね。
Function SelectionRangeCells(ByRef rng As Range, ByRef cell1 As Range, ByRef cell2 As Range) As Range
Dim startRow As Long
Dim endRow As Long
Dim startColumn As Long
Dim endColumn As Long
startRow = WorksheetFunction.Min(cell1.Row, cell2.Row)
endRow = WorksheetFunction.Max(cell1.Row, cell2.Row)
startColumn = WorksheetFunction.Min(cell1.Column, cell2.Column)
endColumn = WorksheetFunction.Max(cell1.Column, cell2.Column)
Set SelectionRangeCells = rng.Resize(endRow - startRow + 1, endColumn - startColumn + 1).Offset(startRow - 1, startColumn - 1)
End Function
obj.Range("A1")という形式の場合は公式ドキュメントに明確に書かれてるね。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-range-property-excel
obj.Range(obj.Cells(x, x), obj.Cells(x, x))
の場合はobj.Cells(x, x)が実体セルを指していてobjとの相対位置も分かってるわけだから
Rangeプロパティ内で相対参照を算出する実装方法も考えられるしそのほうが使う側は分かりやすいはずだけど
そう実装していないという明確な記述がどこにもなかったから実際に動かしてみての想像しかできなかった。
(ちなみに>>149がなにやら勘違いしているようだがCells(x, x)【Cells._Default(x, x)】が何を返すかを知りたかったわけではない)
151デフォルトの名無しさん
2018/02/11(日) 17:24:07.93ID:A61Ds/EI152デフォルトの名無しさん
2018/02/11(日) 17:54:51.66ID:q9UPBdZm153デフォルトの名無しさん
2018/02/11(日) 18:02:54.57ID:zWT4td5V メゾット君も負けを認められるほど成長したかと感心したもののレス見ると何で勝利宣言してんのか分からなかった
154デフォルトの名無しさん
2018/02/11(日) 21:45:11.45ID:jnjDiTfu 今回の使い方は良いのか悪いのか
ちょっと判断つきかねるなぁ
可読性がちょっとね
扱い方そのものは悪いとは思わない
書いてる人も気付いているか分からないけど
やってることはデコレータパターンの
それにかなり近いんだよね
洗練されればそれなりに便利かも知れないね
ちょっと判断つきかねるなぁ
可読性がちょっとね
扱い方そのものは悪いとは思わない
書いてる人も気付いているか分からないけど
やってることはデコレータパターンの
それにかなり近いんだよね
洗練されればそれなりに便利かも知れないね
155デフォルトの名無しさん
2018/02/11(日) 22:48:44.70ID:49jQhb5f タスクスケジューラで、Private Sub Workbook_Open()、の記述のあるブックを開くと、
Private Sub Workbook_Open()が実行されるときもあれば、実行されないときもある。
なんでなんだろ?
その違いが今のところ掴めないでいるんですが、どなたか何か情報をお持ちではないですか?
Private Sub Workbook_Open()が実行されるときもあれば、実行されないときもある。
なんでなんだろ?
その違いが今のところ掴めないでいるんですが、どなたか何か情報をお持ちではないですか?
156デフォルトの名無しさん
2018/02/11(日) 23:09:13.81ID:S5L6PYJ0157デフォルトの名無しさん
2018/02/11(日) 23:28:58.59ID:49jQhb5f >>156
ユーザーがログオンしているときのみ実行する、にチェックが入っていますので違うと思います。
念のため、紹介してもらったサイトに従いフォルダを作成しましたがそれでも変わらずです。
他に情報ありましたらお知らせください。ありがとうございました。
ユーザーがログオンしているときのみ実行する、にチェックが入っていますので違うと思います。
念のため、紹介してもらったサイトに従いフォルダを作成しましたがそれでも変わらずです。
他に情報ありましたらお知らせください。ありがとうございました。
158デフォルトの名無しさん
2018/02/12(月) 07:06:15.59ID:Mlpgnb6c159デフォルトの名無しさん
2018/02/12(月) 08:05:14.90ID:xQy5Bsyb あほやなあオープンマクロが動かんのはオープンしとらんからにきまっとるんやがw
160デフォルトの名無しさん
2018/02/12(月) 08:30:35.08ID:F3ZoN7fb >>157
> 他に情報ありましたらお知らせください。ありがとうございました。
て言うかまずお前が情報書けよ
> ユーザーがログオンしているときのみ実行する、にチェックが入っていますので違うと思います。
なんて後から言われても困る
> 他に情報ありましたらお知らせください。ありがとうございました。
て言うかまずお前が情報書けよ
> ユーザーがログオンしているときのみ実行する、にチェックが入っていますので違うと思います。
なんて後から言われても困る
161デフォルトの名無しさん
2018/02/12(月) 10:49:27.81ID:fd37PB9t スケジュールで走らせるのが目的なら
イベントにたよらなくても
VBSからVBAのプロシージャを直で指定して呼べた気がする
でVBSの方をスケジューラーに登録しておく
ググれば方法が見つかると思うのでお試しあれ
イベントにたよらなくても
VBSからVBAのプロシージャを直で指定して呼べた気がする
でVBSの方をスケジューラーに登録しておく
ググれば方法が見つかると思うのでお試しあれ
162デフォルトの名無しさん
2018/02/12(月) 11:56:54.51ID:ovw7+iFl >>86
おまえはどんなショボいPCを使っているのか?Windows95でCPUは486DXか?
おまえはどんなショボいPCを使っているのか?Windows95でCPUは486DXか?
163デフォルトの名無しさん
2018/02/12(月) 12:41:45.34ID:F3ZoN7fb >>161
COM経由で操作するなら似たようなもん
COM経由で操作するなら似たようなもん
164デフォルトの名無しさん
2018/02/12(月) 14:28:15.32ID:RHpKon14 へーsystemアカウント用のDesktopフォルダ作るのか
なるほどね
なるほどね
165デフォルトの名無しさん
2018/02/15(木) 10:49:13.30ID:n3ZAbmwK VBE起動したあとVBEのウィンドウを最大化するんだけど、
ブックを閉じてVBEを開くと小さいウィンドウで開くから、また最大化する・・・のが面倒なんですが、
前回終了時のウィンドウサイズを記憶させることってできます?
ブックを閉じてVBEを開くと小さいウィンドウで開くから、また最大化する・・・のが面倒なんですが、
前回終了時のウィンドウサイズを記憶させることってできます?
166デフォルトの名無しさん
2018/02/15(木) 12:06:52.20ID:tgIxQ6Uj167デフォルトの名無しさん
2018/02/17(土) 18:05:06.20ID:XvsvycnR vbaで正規表現書いていたのですが(?:)って使えないんでしょうか?
キャプチャして欲しくない部分が結果に混ざるのでできれば最初から消しておきたいんですが
結果に対して処理するしかないんですかね
キャプチャして欲しくない部分が結果に混ざるのでできれば最初から消しておきたいんですが
結果に対して処理するしかないんですかね
168デフォルトの名無しさん
2018/02/17(土) 18:26:45.53ID:DOQJ47ER >>167
いま手元に環境ないから試せないけどRegExp (Microsoft VBScript Regular Expressions 5.5)使ってるなら使えるはずだが...
いま手元に環境ないから試せないけどRegExp (Microsoft VBScript Regular Expressions 5.5)使ってるなら使えるはずだが...
169デフォルトの名無しさん
2018/02/17(土) 18:39:43.21 >>167
普通にキャプチャしてSubMachesで必要な部分だけ取り出せばいい
普通にキャプチャしてSubMachesで必要な部分だけ取り出せばいい
170デフォルトの名無しさん
2018/02/17(土) 20:20:00.39ID:XvsvycnR できました
ありがとうございました
ありがとうございました
171デフォルトの名無しさん
2018/02/18(日) 00:43:49.98ID:trAPtbQv >>170
礼などいらんよ
礼などいらんよ
172デフォルトの名無しさん
2018/02/18(日) 09:52:01.75ID:VPiCj08E >>170
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
173デフォルトの名無しさん
2018/02/20(火) 20:34:05.33ID:po95iPWj 派遣先の親分がVBAの動作速度の改善のためにHDDをSSDに替えよう
なんて言っているけれど
VBAとSSDって動作速度の面で関係ありますか?
これってSATA接続のHDD上のExcelファイルを編集するのとUSBメモリ(USB2.0接続)では速度差が出ると言っているようなものだろうけれど
いかんせんUSBメモリはすべて捨ててしまって検証が出来ないです…
なんて言っているけれど
VBAとSSDって動作速度の面で関係ありますか?
これってSATA接続のHDD上のExcelファイルを編集するのとUSBメモリ(USB2.0接続)では速度差が出ると言っているようなものだろうけれど
いかんせんUSBメモリはすべて捨ててしまって検証が出来ないです…
174デフォルトの名無しさん
2018/02/20(火) 20:46:01.61ID:D3Dd0C9m >>173
派遣先の親分に対して何がしたくて、どういう裏付けのための「お言葉」を貰いに来たの?
派遣先の親分に対して何がしたくて、どういう裏付けのための「お言葉」を貰いに来たの?
175デフォルトの名無しさん
2018/02/20(火) 20:51:34.56ID:po95iPWj >>174
SSDには拘らずPC全てを新調する流れに誘導したいです
SSDには拘らずPC全てを新調する流れに誘導したいです
176デフォルトの名無しさん
2018/02/20(火) 20:54:53.19ID:egNrIJ1q ファイルを100個作って保存するとかなら効果あるかも?
誤差の範囲だと思うけど
VBAの速度を上げるならCPUパワーとロジックに力をそそぐべき
誤差の範囲だと思うけど
VBAの速度を上げるならCPUパワーとロジックに力をそそぐべき
177デフォルトの名無しさん
2018/02/20(火) 21:13:27.65ID:qLAJwQw3 やっぱり、そう思いますよねー
ちなみに10シート1000行50列をそれぞれ入力規則10種に違反しているものは無いかくまなく調べる…
みたいなマクロなんですけど
開発者は条件分岐はとりあえずIf文をネストすれば良いみたいな考え方らしくSelect文がゼロなんですよ
これってなんか工夫できそうな気がするんですけど
まぁもうちょっと分析してみます
ちなみに10シート1000行50列をそれぞれ入力規則10種に違反しているものは無いかくまなく調べる…
みたいなマクロなんですけど
開発者は条件分岐はとりあえずIf文をネストすれば良いみたいな考え方らしくSelect文がゼロなんですよ
これってなんか工夫できそうな気がするんですけど
まぁもうちょっと分析してみます
178デフォルトの名無しさん
2018/02/20(火) 21:20:14.98ID:qLAJwQw3 ごめんなさいIDかわりました
179デフォルトの名無しさん
2018/02/20(火) 21:36:39.55ID:egNrIJ1q たぶんループ内でセルアクセスしまくってるだろうから
一気に取ってきてメモリで処理して結果をズドン
にすれば1000倍オーダーで高速化するでしょう
健闘をいのる
一気に取ってきてメモリで処理して結果をズドン
にすれば1000倍オーダーで高速化するでしょう
健闘をいのる
180デフォルトの名無しさん
2018/02/20(火) 21:45:10.31ID:Qs1V/krE とりあえず親分を立ててSSDにする
↓
ほとんど全て作業が快適になるけど肝心のマクロは変わらず
↓
やっぱりCPUか、でPC新調する
↓
もったいないので新PCにSSD載せる
↓
マクロも他の作業も爆速になる
これしかないやろ
↓
ほとんど全て作業が快適になるけど肝心のマクロは変わらず
↓
やっぱりCPUか、でPC新調する
↓
もったいないので新PCにSSD載せる
↓
マクロも他の作業も爆速になる
これしかないやろ
181デフォルトの名無しさん
2018/02/20(火) 21:51:41.56ID:qLAJwQw3182デフォルトの名無しさん
2018/02/20(火) 22:19:42.59ID:kZvvD5Jp セル.valueを一旦全部配列に取り込んで
メモリ上で処理して
配列を最後にまとめて貼り付けれ
画面描画とイベント抑止も追加な
メモリ上で処理して
配列を最後にまとめて貼り付けれ
画面描画とイベント抑止も追加な
183デフォルトの名無しさん
2018/02/21(水) 07:37:11.81ID:pdEcbkjv >>177
まぁIf文でもSelect文でも使いどころが見合ってればいいけど
それより気を付けなければいけないのはOrやAndの扱いだね。
.Net系のOrElseやAndAlsoと違って前に設定した条件を満たしていても後続の条件を評価してしまう。
まだ単純な値を比較するなら誤差程度の時間差しか出ないけど
関数やメソッドの戻り値を条件にしていて、
その関数が重い処理であればそれだけ無駄な時間が掛かってしまう。
後はもしクラスに詳しければポリモーフィズムでなるべく無駄な分岐は避けた方が良いかな。
その分処理時間だけでなく改修やテストの時間も削減が見込める。
まぁIf文でもSelect文でも使いどころが見合ってればいいけど
それより気を付けなければいけないのはOrやAndの扱いだね。
.Net系のOrElseやAndAlsoと違って前に設定した条件を満たしていても後続の条件を評価してしまう。
まだ単純な値を比較するなら誤差程度の時間差しか出ないけど
関数やメソッドの戻り値を条件にしていて、
その関数が重い処理であればそれだけ無駄な時間が掛かってしまう。
後はもしクラスに詳しければポリモーフィズムでなるべく無駄な分岐は避けた方が良いかな。
その分処理時間だけでなく改修やテストの時間も削減が見込める。
184デフォルトの名無しさん
2018/02/21(水) 23:14:40.16ID:y7Un/hTJ 処理時間の高速化が目的なら
セル範囲をバリアント型配列に代入して配列内で処理をしてから、処理後の結果を配列からセル範囲に出力すれば劇的に早くなるよ
セル範囲をバリアント型配列に代入して配列内で処理をしてから、処理後の結果を配列からセル範囲に出力すれば劇的に早くなるよ
185デフォルトの名無しさん
2018/02/22(木) 01:57:42.07ID:gwSYBKpq エクセルで家計簿作りたいんだけど、みんなどうしてるん?
ものすっごい管理するのが面倒くさくなるんだけど…
家計簿を複式で書きたいから毎回商品名やら収入支出まで全部書くんだけど、
最近面倒臭くなってきたからこの辺の操作を簡略化したいのよ
商品名を全部書くのが面倒くさいから大雑把な商品項目を作って
商品項目の選択制にしたいんだけどどうすりゃいいんだ?
例えば、お茶買ったとしたら、飲み物って項目を選択して
収入支出のどっちかを選択して金額を入れればいいだけ、みたいな
あと、飲み物のグループだけを表示できるようにしたりもしたい
自分がその月に何にお金を一番使ってるのか項目毎に分析したいんだ
ものすっごい管理するのが面倒くさくなるんだけど…
家計簿を複式で書きたいから毎回商品名やら収入支出まで全部書くんだけど、
最近面倒臭くなってきたからこの辺の操作を簡略化したいのよ
商品名を全部書くのが面倒くさいから大雑把な商品項目を作って
商品項目の選択制にしたいんだけどどうすりゃいいんだ?
例えば、お茶買ったとしたら、飲み物って項目を選択して
収入支出のどっちかを選択して金額を入れればいいだけ、みたいな
あと、飲み物のグループだけを表示できるようにしたりもしたい
自分がその月に何にお金を一番使ってるのか項目毎に分析したいんだ
186デフォルトの名無しさん
2018/02/22(木) 05:34:45.99ID:6+gpZmum ユーザーフォーム作って選択すればいいんじゃね?
あとはKey に該当する商品だけ合計するとかでおk
あとはKey に該当する商品だけ合計するとかでおk
187デフォルトの名無しさん
2018/02/22(木) 07:11:07.10ID:/kJbMS0V188デフォルトの名無しさん
2018/02/22(木) 07:13:19.54 >>185
つ 「エクセル簿記」
つ 「エクセル簿記」
189デフォルトの名無しさん
2018/02/22(木) 07:17:47.39ID:FxhP8B8J190デフォルトの名無しさん
2018/02/22(木) 08:05:56.18ID:YVYiWWcv191デフォルトの名無しさん
2018/02/22(木) 10:32:45.75ID:jLYjEY9/ さらにスレチだけど、そもそも複式で書く意味って?
支出と費用計上のタイミングがずれる
収入と収益計上のタイミングがずれる
なんてことがある場合に複式の利点があるんだろうけど
そもそも家計簿作る人ってそこまでやんの?
米を10kg買ってきました
資産計上します
消費の都度費用計上しますとか?
支出と費用計上のタイミングがずれる
収入と収益計上のタイミングがずれる
なんてことがある場合に複式の利点があるんだろうけど
そもそも家計簿作る人ってそこまでやんの?
米を10kg買ってきました
資産計上します
消費の都度費用計上しますとか?
192デフォルトの名無しさん
2018/02/22(木) 18:43:19.33ID:VgNmulNi アスペ感強すぎwww
193デフォルトの名無しさん
2018/02/22(木) 19:08:12.44ID:K6gwUVsb 家計簿の無料アプリなんて、いくらでもあるだろ
既にあるものは作るな。
世の中に無いものを作れ
既にあるものは作るな。
世の中に無いものを作れ
194デフォルトの名無しさん
2018/02/22(木) 19:45:49.11ID:1JOjbwTy ほんと定期的にやばそうな人くるよな
195デフォルトの名無しさん
2018/02/22(木) 21:13:28.78ID:c7GHDdxz ++や+=や?みたいな演算子ないんでしょうか?
毎回代入やifしないと駄目?
毎回代入やifしないと駄目?
196デフォルトの名無しさん
2018/02/22(木) 21:36:57.24ID:UMUr68HJ >>195
だめ
だめ
197デフォルトの名無しさん
2018/02/22(木) 21:45:28.24ID:c7GHDdxz ありがとう
不便だなあ…('A`)
不便だなあ…('A`)
198デフォルトの名無しさん
2018/02/22(木) 22:03:55.07ID:/kJbMS0V199デフォルトの名無しさん
2018/02/22(木) 22:05:36.37ID:6NHeYF5q >>195
?:(三項演算子)はIIf( )で似たようなことができる
ただしC++の三項演算子と違って関数だから引数はすべて評価される
なので
a = 0
b = IIf(a <> 0, 1 / a, 0)
とかやると0割りエラーになるので注意
?:(三項演算子)はIIf( )で似たようなことができる
ただしC++の三項演算子と違って関数だから引数はすべて評価される
なので
a = 0
b = IIf(a <> 0, 1 / a, 0)
とかやると0割りエラーになるので注意
200デフォルトの名無しさん
2018/02/22(木) 22:31:32.98ID:rSjpq6iH And や Or も前件だけで真偽判定してくれなくて全文評価するから不便だよな
201デフォルトの名無しさん
2018/02/22(木) 22:44:59.91ID:Dms0Es6m 条件式は1本にまとめるよりIfをネストした方が処理が速いこともあるし
C#なんかとは考え方をまるっきり変えてコーディングしないと
C#なんかとは考え方をまるっきり変えてコーディングしないと
202デフォルトの名無しさん
2018/02/23(金) 00:01:36.17ID:aLU7NSfS その内LINQやラムダ式が使えないから不便だって言う人が出てきそうな勢いだな
Pythoneまで待てや
Pythoneまで待てや
203デフォルトの名無しさん
2018/02/23(金) 08:52:34.86ID:AfM26Mh3 「プログラミング環境なんて数年おきに改訂され進化していくもの」
という感覚は正しい。
しかしあたりまえが通じない世界もある。
それが、「廃れた開発環境」と「リソースの足りないプロジェクト」だ。
という感覚は正しい。
しかしあたりまえが通じない世界もある。
それが、「廃れた開発環境」と「リソースの足りないプロジェクト」だ。
204デフォルトの名無しさん
2018/02/23(金) 12:15:48.66ID:E8zJnigo どしたの急に?
205デフォルトの名無しさん
2018/02/23(金) 12:32:39.13ID:AiDQ1wxe Excel2010以降で、コンテキストメニュー追加するとき
commandbars().add
でコメントを右クリックした時のメニューは()の中は何になりますか?
commandbars().add
でコメントを右クリックした時のメニューは()の中は何になりますか?
206デフォルトの名無しさん
2018/02/23(金) 22:05:45.08 コメントを右クリックの意味がわからん
207デフォルトの名無しさん
2018/02/23(金) 22:09:49.60ID:NDjRlvGW まずコメントって知ってるか?
208デフォルトの名無しさん
2018/02/23(金) 22:21:14.89ID:LlcGT0P+ 日本語崩壊しててワロタ
209デフォルトの名無しさん
2018/02/24(土) 00:24:56.44 ひょっとして、無指定だと何のショートカットキーが表示されるか(「開く(O)」みたいなの)を聞きたいのではなく(表示されないやろ…てか試せばよくね?と思ってた)、
commandbarsの引数に何を指定すればVBAのエディタのコメントを右クリックしたときのコンテキストメニューに項目を追加できますか?っていう質問なのか?
何の質問をしているのかまったく分からなかったが、がんばって一番意味が通りそうな解釈をしてみた
commandbarsの引数に何を指定すればVBAのエディタのコメントを右クリックしたときのコンテキストメニューに項目を追加できますか?っていう質問なのか?
何の質問をしているのかまったく分からなかったが、がんばって一番意味が通りそうな解釈をしてみた
210デフォルトの名無しさん
2018/02/24(土) 00:54:26.24ID:S7UxFmQS よく頑張った、もう少しで賞を差し上げます
211デフォルトの名無しさん
2018/02/24(土) 03:12:36.02ID:Cy5WZ5pS どなたか知恵をください
日本語IMEの変換候補がドロップダウンリストで出てくるアレを
区切り記号入れて(カンマがいいかな)
一つのセルに列挙できませんかね?
例えばA1に半角英で「yama」と入力したら
B1に「山,ヤマ,やま,耶麻,耶摩,八馬,矢間」みたいな
日本語IMEの変換候補がドロップダウンリストで出てくるアレを
区切り記号入れて(カンマがいいかな)
一つのセルに列挙できませんかね?
例えばA1に半角英で「yama」と入力したら
B1に「山,ヤマ,やま,耶麻,耶摩,八馬,矢間」みたいな
212デフォルトの名無しさん
2018/02/24(土) 03:35:37.11ID:39HZSDcZ213デフォルトの名無しさん
2018/02/24(土) 04:09:09.96ID:Cy5WZ5pS214デフォルトの名無しさん
2018/02/24(土) 23:15:34.68ID:KQx6tQtJ MACでエクセルを使用して、ボタンクリックでphpを実行させてデータを取得してエクセル
に出力する方法を教えて下さい。
に出力する方法を教えて下さい。
215デフォルトの名無しさん
2018/02/25(日) 02:02:21.78ID:fGofbzeE モスじゃだめなのかい?
216デフォルトの名無しさん
2018/02/25(日) 07:39:33.73ID:tVogG6Wu 寒っ
217デフォルトの名無しさん
2018/02/25(日) 10:24:12.12ID:jtYvuOjV 今日は暖かいよ
218デフォルトの名無しさん
2018/02/25(日) 10:56:06.58ID:tVogG6Wu 寒っ寒っ!!
219デフォルトの名無しさん
2018/02/25(日) 11:00:26.62ID:fGofbzeE そだねー
220デフォルトの名無しさん
2018/02/25(日) 17:02:52.72ID:TpkMAgUG ここはエクセルの質問スレちゃうの?、あほばっかだな。
221デフォルトの名無しさん
2018/02/25(日) 19:21:52.64ID:eyGxL2ZU ソダネー
222デフォルトの名無しさん
2018/02/25(日) 19:54:07.26ID:UkkX22dp >>220
スレタイ読めが判ると思うが
スレタイ読めが判ると思うが
223デフォルトの名無しさん
2018/02/25(日) 20:22:35.82ID:JQVcjONo 10万件くらいのリストを作ってそれをある規則で並べかえたいんだけど、一番高速で行うにはどういう手法がありますか?
224デフォルトの名無しさん
2018/02/25(日) 20:39:07.10ID:uEiWTozj お前がやらずに、出来る奴に
キチンと敬意と対価を払って
やってもらう
ノウとかハウとかは後で身に付けたらいい
キチンと敬意と対価を払って
やってもらう
ノウとかハウとかは後で身に付けたらいい
225デフォルトの名無しさん
2018/02/25(日) 20:53:22.41226デフォルトの名無しさん
2018/02/26(月) 07:46:27.51ID:nDommPCV227デフォルトの名無しさん
2018/02/26(月) 10:23:38.67ID:2Ht8owgk >>226
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
228デフォルトの名無しさん
2018/02/26(月) 17:52:12.51ID:NcBRNf65 Ruby なら、VBA より速いし、そんなに難しくない
229デフォルトの名無しさん
2018/02/26(月) 18:56:12.78ID:+OqK48cA Worksheet_SelectionChangeのコード中に、
If Target.Count=1 then Exit Sub
のところで今日急にオーバーフローのエラーが出るようになって
ちょっとググったらCountLargeというのがあることを知ってとりあえず解決したんだけど
一つのセルしか選択肢てないのに・・・
ウォッチ式にTargetを追加して確認したらTargetの中にItemはひとつしかないのにTarget.Countはオーバーフローってなんだこれ?
If Target.Count=1 then Exit Sub
のところで今日急にオーバーフローのエラーが出るようになって
ちょっとググったらCountLargeというのがあることを知ってとりあえず解決したんだけど
一つのセルしか選択肢てないのに・・・
ウォッチ式にTargetを追加して確認したらTargetの中にItemはひとつしかないのにTarget.Countはオーバーフローってなんだこれ?
230デフォルトの名無しさん
2018/02/27(火) 23:52:36.36ID:ht7HfYcX コピー禁止
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub
コピー→別のファイル(Excelなど)に貼り付けが出来てしまう
コピー→マウスを動かすだけでキャンセルするようなVBAはないよね、、、。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub
コピー→別のファイル(Excelなど)に貼り付けが出来てしまう
コピー→マウスを動かすだけでキャンセルするようなVBAはないよね、、、。
231デフォルトの名無しさん
2018/02/28(水) 01:32:02.58ID:urFvMZOz APIでクリップボード自体をクリアしたらダメかね
232デフォルトの名無しさん
2018/02/28(水) 01:36:53.98ID:Ddk6veDH >>209
コメントアウトのコメントじゃなくてセルに付与するコメントのことだぞ
コメントアウトのコメントじゃなくてセルに付与するコメントのことだぞ
233デフォルトの名無しさん
2018/02/28(水) 05:54:26.44ID:PdZXKZv3 フォルダに大量に入ってる動画ファイルの名前と容量を抽出してエクセルファイルに出力したり出来ませんか?
234デフォルトの名無しさん
2018/02/28(水) 06:16:52.08ID:9FYD/BHY できらぁ!!
235デフォルトの名無しさん
2018/02/28(水) 07:17:25.76 VBAにできないことなんてないぞ
236デフォルトの名無しさん
2018/02/28(水) 07:39:47.81ID:6WnrRHIY え!!VBAでファイルの名前と容量の抽出を!?
237デフォルトの名無しさん
2018/02/28(水) 07:42:05.80ID:XToZbbWL とりあえずファイル操作は全部FSO使っておけば何とでもなる
238デフォルトの名無しさん
2018/02/28(水) 08:04:41.58ID:9Zs6j1Ub ちょっと横からで申し訳ないです
>>233に似たようなことをFSOでフォルダ内のファイルを数万件取得していて、foreachで一つずつ配列にいれてるんだけどかなり時間がかかる。。一括で取得する方法とかありますかね?
>>233に似たようなことをFSOでフォルダ内のファイルを数万件取得していて、foreachで一つずつ配列にいれてるんだけどかなり時間がかかる。。一括で取得する方法とかありますかね?
239デフォルトの名無しさん
2018/02/28(水) 08:08:27.77ID:Aj9baD3x >>238
配列に入れないで処理する方法を考える
配列に入れないで処理する方法を考える
240デフォルトの名無しさん
2018/02/28(水) 08:11:14.51ID:mCK56HVf エロ動画フォルダに入ってるファイルサイズ取得して一致したらかたっぽを削除するマクロ作ったわ
241デフォルトの名無しさん
2018/02/28(水) 08:23:05.93ID:5dUEHtJL そんなもんフリーソフト落としてくるだけで出来るわ。
一覧表に起こしてアレコレしたいときに捗る
一覧表に起こしてアレコレしたいときに捗る
242デフォルトの名無しさん
2018/02/28(水) 09:22:10.92ID:2zUSyVD3 朝っぱらから元気で草
243デフォルトの名無しさん
2018/02/28(水) 18:29:56.39ID:EAuLwM42 >>233
エロ動画を大量に集めすぎてどこに何があるか微妙にすぐ見つけれなくなった俺と同じ悩みなんだろうか
エロ動画を大量に集めすぎてどこに何があるか微妙にすぐ見つけれなくなった俺と同じ悩みなんだろうか
244デフォルトの名無しさん
2018/02/28(水) 19:15:28.02ID:Tb7VJEa0 Function func(ByVal arg) As int
処理
End Function
Dim var As Function
var = address(func)
Call var(argument)
みたいに、関数へのポインタでコールするのはどう書くの。
処理
End Function
Dim var As Function
var = address(func)
Call var(argument)
みたいに、関数へのポインタでコールするのはどう書くの。
245デフォルトの名無しさん
2018/02/28(水) 20:22:58.19ID:6WnrRHIY246デフォルトの名無しさん
2018/02/28(水) 22:29:15.05ID:ugxprRf8 PowerShell なら以下で、ファイル名・サイズを、カンマ区切りで表示できる
cd で、そのフォルダへ移動してから、
ls | %{ $_.Name + "," + $_.Length }
結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名
出力
test01.rb,341
test02.rb,216
test03.rb,453
cd で、そのフォルダへ移動してから、
ls | %{ $_.Name + "," + $_.Length }
結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名
出力
test01.rb,341
test02.rb,216
test03.rb,453
247デフォルトの名無しさん
2018/03/01(木) 22:00:03.32ID:AveIjfm9 エクセルに出力できとらんやんw
248デフォルトの名無しさん
2018/03/01(木) 22:10:39.18 結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名.csv
ls | %{ $_.Name + "," + $_.Length } > ファイル名.csv
249デフォルトの名無しさん
2018/03/01(木) 22:22:42.13ID:AveIjfm9 でたwwwエクセルとcsvの区別がついてない奴wwwww
250デフォルトの名無しさん
2018/03/02(金) 07:10:15.29ID:8gOr4FTA ブックオープン時にフォームだけ開きたい場合ってどうしたらいい?
251デフォルトの名無しさん
2018/03/02(金) 07:17:55.07 >>250
[表示]-[ウィンドウ]-[非表示]
[表示]-[ウィンドウ]-[非表示]
252デフォルトの名無しさん
2018/03/02(金) 08:53:24.56ID:NzNuwPhv クラス継承前提で設計してしまったのだが、どうしてくれるの。
253デフォルトの名無しさん
2018/03/02(金) 09:38:57.79ID:5NrcBP5g お前がマヌケだったって事だろ。
作り直せ
作り直せ
254デフォルトの名無しさん
2018/03/02(金) 12:05:11.13 >>252
ポリモーフィズムはImplementsがあるから、あとはどうにでも工夫できるやろ
ポリモーフィズムはImplementsがあるから、あとはどうにでも工夫できるやろ
255デフォルトの名無しさん
2018/03/02(金) 19:00:30.03ID:ALTNLkg9 >>252
コピペは攻守ともに最強の継承やぞ
コピペは攻守ともに最強の継承やぞ
256デフォルトの名無しさん
2018/03/02(金) 21:57:53.05ID:YGnqgkH5 スーパークラス作ってそれをオーバーライドしてけば省力化できると思ったのかな?
257デフォルトの名無しさん
2018/03/02(金) 22:07:46.54 省力化は委譲で代替できる
258デフォルトの名無しさん
2018/03/02(金) 22:19:05.00ID:ALTNLkg9 え?委譲で省力化を!?
259デフォルトの名無しさん
2018/03/03(土) 08:40:25.03ID:xibgNHFN 正直VBAのクラスは他のObject指向言語に比べるとその辺見劣りするのは仕方ない。元々構造化言語だし。
そこをどうするかを考えて行くのが醍醐味でもあるんだけど
やっぱり移譲にも限界があって例えばフォームを継承してもっと機能を追加したり変更したりしたいとき、
.Net系であれば単純に継承してメソッドやプロパティを追加やオーバーライドすれば良いものが、
移譲の場合は全て呼出し口を設定しなければならなかったりするので
こういう場合は余り現実的とは言えない。
移譲や継承を使うのとはまた違った方法を考える必要があるんだけど
それを考えるのもまた醍醐味。
そこをどうするかを考えて行くのが醍醐味でもあるんだけど
やっぱり移譲にも限界があって例えばフォームを継承してもっと機能を追加したり変更したりしたいとき、
.Net系であれば単純に継承してメソッドやプロパティを追加やオーバーライドすれば良いものが、
移譲の場合は全て呼出し口を設定しなければならなかったりするので
こういう場合は余り現実的とは言えない。
移譲や継承を使うのとはまた違った方法を考える必要があるんだけど
それを考えるのもまた醍醐味。
260デフォルトの名無しさん
2018/03/03(土) 09:00:54.41ID:QwmpO0ZF >醍醐味
プックスクス
プックスクス
261デフォルトの名無しさん
2018/03/03(土) 09:05:29.61ID:CziLTh5W 他に現実的な解法が無いからVBA使っているだけで、誰も好んで使っているわけではないんだけど、
かといって自分の無能を全てVBAのせいにしている発言を見るとイラッとするのは確か
かといって自分の無能を全てVBAのせいにしている発言を見るとイラッとするのは確か
262デフォルトの名無しさん
2018/03/03(土) 11:49:03.81ID:Rcnk03vE >>260 ☆ミ DAIGOアジ ☆ミ
263デフォルトの名無しさん
2018/03/03(土) 12:45:47.64ID:axcuG9mm 完全に割り切って ByVal As Object または ByVal As Variant で委譲オンリー
264デフォルトの名無しさん
2018/03/03(土) 14:19:14.14ID:axcuG9mm 間違えた
ByVal As Object または ByRef As Variant
ByVal As Object または ByRef As Variant
265デフォルトの名無しさん
2018/03/04(日) 00:55:22.93ID:DAVLACwj それのどこが醍醐味なの?
266デフォルトの名無しさん
2018/03/04(日) 09:54:22.41ID:K2njBMWG エクセルのマクロちょいちょいと組み立てて自動化させたら
ズルをするな、計算機でちゃんと計算して打ち込め
って怒られた
意味わかんねー
ズルをするな、計算機でちゃんと計算して打ち込め
って怒られた
意味わかんねー
267デフォルトの名無しさん
2018/03/04(日) 09:58:17.84ID:3XS25AQI 計算機
268デフォルトの名無しさん
2018/03/04(日) 10:02:50.11ID:aHerEJAV パソコンが登場し始めた前世紀になら居ただろうけど、このご時世だと信じがたいわな
269デフォルトの名無しさん
2018/03/04(日) 10:39:41.20ID:/M0AdgD3 その手の輩は
1.そんなもんを自動化したら
工数がへるから残業する理由が
なくなるだろ
2.人月商売なのに何で利益減らす行為するん
3.手作り、真心込めて、おもてなし
さて、どれ?
1.そんなもんを自動化したら
工数がへるから残業する理由が
なくなるだろ
2.人月商売なのに何で利益減らす行為するん
3.手作り、真心込めて、おもてなし
さて、どれ?
270デフォルトの名無しさん
2018/03/04(日) 10:51:00.13ID:6PsP9d9s 単なるバカ
271デフォルトの名無しさん
2018/03/04(日) 10:55:35.55ID:m9Z0+hmg >計算機でちゃんと計算して打ち込め
いや〜、そこまで言うなら計算機なんて信じず算盤で計算しろ
が正しいでしょ w
いや〜、そこまで言うなら計算機なんて信じず算盤で計算しろ
が正しいでしょ w
272デフォルトの名無しさん
2018/03/04(日) 11:30:31.21ID:7ZGw1DO5 今の時代でも、碌にパソコン使えないくせに、やたらパソコンで作業したがるおじさん・若手はいるし
ああいう人たちが「下手にパソコン使わせると遅くなる」ってイメージを植え付けているのかもしれない
あとマクロ組む工程までいれると、さして時間短縮になっていない人とか
ああいう人たちが「下手にパソコン使わせると遅くなる」ってイメージを植え付けているのかもしれない
あとマクロ組む工程までいれると、さして時間短縮になっていない人とか
273デフォルトの名無しさん
2018/03/04(日) 12:45:40.43ID:nY2/C6yI 自己満なんやからええやんけ
274デフォルトの名無しさん
2018/03/04(日) 14:52:14.27ID:6GOtxg/5 内製にせよ外注するにせよ他人にマクロ作ってもらうとなると時間も経費もかかるし、改修も容易じゃないからな
多少時間かかってもマクロを自分で組めた方が楽なのは間違いないけどね
管理職のくせにマクロの効用を理解できないような奴が、マクロ実装にかかる時間だけを見て手間がかかるからやめろとか言ってくることが結構あるからな
多少時間かかってもマクロを自分で組めた方が楽なのは間違いないけどね
管理職のくせにマクロの効用を理解できないような奴が、マクロ実装にかかる時間だけを見て手間がかかるからやめろとか言ってくることが結構あるからな
275デフォルトの名無しさん
2018/03/04(日) 15:51:22.29ID:DAVLACwj 結構あるってことはみんなお前のマクロにはもう懲り懲りなんじゃないの?
276デフォルトの名無しさん
2018/03/04(日) 15:59:46.94ID:ewEnZjbB エクセルマクロだと正しいか間違ってるかの判断が(上司にとって)出来ない
上司が使えないプログラミング言語は禁止ねっていうのと同じ種類の問題だと思うよ
上司が使えないプログラミング言語は禁止ねっていうのと同じ種類の問題だと思うよ
277デフォルトの名無しさん
2018/03/04(日) 17:55:29.98ID:ibRKmML9 マクロは自分用だとすごく便利
他人が作りっぱなしにしたマクロをだましだまし使うのは地獄
他人が作りっぱなしにしたマクロをだましだまし使うのは地獄
278デフォルトの名無しさん
2018/03/04(日) 18:24:28.65ID:jmE3cBn5 エラーハンドリング全然されず
Sheet の初期化(単なるクリア)も
人間がやらないとダメな仕様
のマクロに機能拡張しろってのが
あったけどとりあえず5分で
チンカスであることを強調した上でC#で作り直した思い出
Sheet の初期化(単なるクリア)も
人間がやらないとダメな仕様
のマクロに機能拡張しろってのが
あったけどとりあえず5分で
チンカスであることを強調した上でC#で作り直した思い出
279デフォルトの名無しさん
2018/03/04(日) 19:26:15.30 自分だけでこっそり使うんならいざしらず、
他人に使ってもらいたいんなら
使ってもらえるような作り方&ドキュメント整備しろってことだな
他人に使ってもらいたいんなら
使ってもらえるような作り方&ドキュメント整備しろってことだな
280デフォルトの名無しさん
2018/03/04(日) 20:05:19.79ID:IczeIIEA エクセルは説明書ページを簡単に添付できる(シート追加するだけ)のがいい
EXE形式だとreadme.txtやHELPなんて読んでもらえないしな
まぁ、エクセルで説明ページがあってもよまないやつがおおいから結局コメント機能使いまくりだったり
画面上に説明書いちゃうけど
EXE形式だとreadme.txtやHELPなんて読んでもらえないしな
まぁ、エクセルで説明ページがあってもよまないやつがおおいから結局コメント機能使いまくりだったり
画面上に説明書いちゃうけど
281デフォルトの名無しさん
2018/03/04(日) 20:22:52.23ID:DWVE2Vb5 もっぱらpowershellやvbscriptで書いてる
元のワークブック汚さずに済むし
元のワークブック汚さずに済むし
282デフォルトの名無しさん
2018/03/04(日) 22:51:58.52ID:a3KsBQsp283デフォルトの名無しさん
2018/03/04(日) 22:53:07.28ID:a3KsBQsp284デフォルトの名無しさん
2018/03/04(日) 23:02:24.00ID:XOwF/6X2 デバッグ中に別シートに集計中なのに
元データのシートを破壊してしまって涙目
アクティブシートのカレントリージョンをクリアで綺麗サッパリ(´Д`)
元データのシートを破壊してしまって涙目
アクティブシートのカレントリージョンをクリアで綺麗サッパリ(´Д`)
285デフォルトの名無しさん
2018/03/04(日) 23:41:13.27ID:DAVLACwj マクロはおめえのオモチャじゃねえんだよ
これに懲りたらスッパリとマクロから足を洗うんだな
これに懲りたらスッパリとマクロから足を洗うんだな
286デフォルトの名無しさん
2018/03/05(月) 10:31:45.26ID:Bgh1BGUs マクロは個人のオモチャでいいだろう
性能や信頼性は作り手による
性能や信頼性は作り手による
287デフォルトの名無しさん
2018/03/05(月) 12:18:46.09ID:Qtnfm99f >>286
何開き直っとんねんお前もマクロいじるの禁止な
何開き直っとんねんお前もマクロいじるの禁止な
288デフォルトの名無しさん
2018/03/05(月) 13:06:15.33ID:RmFDDOch 糞マクロでもいいじゃない
だって人間だもの
げいつ
だって人間だもの
げいつ
289デフォルトの名無しさん
2018/03/05(月) 16:20:35.95ID:Bgh1BGUs290デフォルトの名無しさん
2018/03/05(月) 19:21:30.95ID:2ygytXOa エクセルVBAのグラフの範囲指定Rows.Countで困っております。
お力添え頂きたくお願いしたいです。
A1からD600まで範囲指定して、K1からK600 までをVBAで範囲指定したいのですが、
なお601行目はすべて空白で、602行目には合計数が入っています。
600行目というのは日によって異なり入力値の最大数がばらばらです。
手動でやる際は A1をターゲットし、Shift →×4、CTRL+SHIFT+↓、
CTRLを押しながらK1をターゲットCTRL+SHIFT+↓で選択。
これをVBAに置き換えるために行ったのですが
某サイトで
Set Target = Union(Range(Range("A1"), Cells(Rows.Count, 4).End(xlUp)), _
Range(Range("K1"), Cells(Rows.Count, 11).End(xlUp)))
というような指定方法がありましたので行ってみましたが
合計数が入力されている602行目が範囲に含まれており困っております。
A1:D600(空白まで),K1:K600(空白まで) というように指定するにはどのようにすればよいでしょか。
お力添え頂きたくお願いしたいです。
A1からD600まで範囲指定して、K1からK600 までをVBAで範囲指定したいのですが、
なお601行目はすべて空白で、602行目には合計数が入っています。
600行目というのは日によって異なり入力値の最大数がばらばらです。
手動でやる際は A1をターゲットし、Shift →×4、CTRL+SHIFT+↓、
CTRLを押しながらK1をターゲットCTRL+SHIFT+↓で選択。
これをVBAに置き換えるために行ったのですが
某サイトで
Set Target = Union(Range(Range("A1"), Cells(Rows.Count, 4).End(xlUp)), _
Range(Range("K1"), Cells(Rows.Count, 11).End(xlUp)))
というような指定方法がありましたので行ってみましたが
合計数が入力されている602行目が範囲に含まれており困っております。
A1:D600(空白まで),K1:K600(空白まで) というように指定するにはどのようにすればよいでしょか。
291デフォルトの名無しさん
2018/03/05(月) 19:32:56.50ID:AenKmQiD292デフォルトの名無しさん
2018/03/05(月) 21:32:20.85ID:2t/pwmDg293デフォルトの名無しさん
2018/03/05(月) 21:48:18.83ID:2t/pwmDg >>290
言い忘れたけど
A〜DとKが表としてつながってない想定ね
一つの表からなら
Range(Range("a1"), Range("d1").End(xlDown))
Range(Range("k1"), Range("k1").End(xlDown))
でそれぞれの範囲をとれる
言い忘れたけど
A〜DとKが表としてつながってない想定ね
一つの表からなら
Range(Range("a1"), Range("d1").End(xlDown))
Range(Range("k1"), Range("k1").End(xlDown))
でそれぞれの範囲をとれる
294デフォルトの名無しさん
2018/03/05(月) 22:25:16.54ID:2ygytXOa >>293
ありがとうございます。
2つ目に書いていただいた表が一個の場合を想定しています。
Rangeで行う事が出来るのですね。
Cells(Rows.Count, 4).End(xlUp)をxlDwonに
変えてもダメだったのでかなり絶望してました。
A1〜A20とかに書かれている条件でそれが含まれていたら↓を検索するとかも
これでできそうな気がしてきました。
ありがとうございました。
ありがとうございます。
2つ目に書いていただいた表が一個の場合を想定しています。
Rangeで行う事が出来るのですね。
Cells(Rows.Count, 4).End(xlUp)をxlDwonに
変えてもダメだったのでかなり絶望してました。
A1〜A20とかに書かれている条件でそれが含まれていたら↓を検索するとかも
これでできそうな気がしてきました。
ありがとうございました。
295Excel→MySQL
2018/03/06(火) 01:06:36.39ID:fiBtEf92 すみません、あまり仕組みがよくわからず
こちらに質問致します。
やり方の案内でも助かります。
Excelかtxtのデータをシート上に配置したボタンワンクリックで
→MySQLにアップデートって出来ますか?
バーコードリーダー等のlogファイル
xls,csv,txt
―――A――――B
1、barcode 棚卸数
2、9876543, 21
3、1234567,89
MySQLデータベース
1、メーカ、型番、コード、品名、在庫数
2、Pansomy,THE123,9876543,USOメモリー,3
3、Hitasun,END987,1234567,モバテリー,7
在庫数を棚卸数で上書きが出来れば良いです。
よろしくお願いいたします。
こちらに質問致します。
やり方の案内でも助かります。
Excelかtxtのデータをシート上に配置したボタンワンクリックで
→MySQLにアップデートって出来ますか?
バーコードリーダー等のlogファイル
xls,csv,txt
―――A――――B
1、barcode 棚卸数
2、9876543, 21
3、1234567,89
MySQLデータベース
1、メーカ、型番、コード、品名、在庫数
2、Pansomy,THE123,9876543,USOメモリー,3
3、Hitasun,END987,1234567,モバテリー,7
在庫数を棚卸数で上書きが出来れば良いです。
よろしくお願いいたします。
296デフォルトの名無しさん
2018/03/06(火) 07:49:34.86ID:RSFFAx7v >>291
なるほど。
VBSはドラッグ&ドロップが使いやすいが終息方向。
VBAは開発しやすいがあくまでオフィスの製品ありき。
pythonは流行ってるが会社のマシンにデフォで入ってない。
導入のしやすさ、汎用性からpowershell かなあ。ただ動作が遅いのが気になるけど
なるほど。
VBSはドラッグ&ドロップが使いやすいが終息方向。
VBAは開発しやすいがあくまでオフィスの製品ありき。
pythonは流行ってるが会社のマシンにデフォで入ってない。
導入のしやすさ、汎用性からpowershell かなあ。ただ動作が遅いのが気になるけど
297デフォルトの名無しさん
2018/03/06(火) 08:23:29.61ID:Djyon39L 最終行取得する時って、おまえらどっち派?
298デフォルトの名無しさん
2018/03/06(火) 08:25:04.77ID:2b8pbF8x アレを使っちゃう派
誤取得する場合があるって聞くけどまだ未経験
誤取得する場合があるって聞くけどまだ未経験
299295
2018/03/06(火) 08:26:39.35ID:qLV0sr+i 『棚卸数の入力作業vba』(Masayo) エクセル Excel [エクセルの学校]
www.excel.studio-kazu.jp
こちらのサイトを参考に
http://www.excel.studio-kazu.jp/kw/20111019173742.html
VBAのマクロをボタン登録で
エクセルのbook 内のsheet2セルからsheet1に書き込む事は出来るのですが、
powershell?が何なのか知りませんがそれで可能ならそれでも良いです。
ボタンを押すとインポートファイルを指定できる物でも良いのですが、
ただ、PhpMyAdminからの操作が素人には難しくてめんどうなので、
ログファイルをドラッグドロップでアップデートかボタン1つでやれないかと思います。
VBSや.hta(html application)でMySQLにアクセスする方法とかでも良いです。
ログファイル名とフォルダが固定ならスケジュール自動化も視野にしたいです。
よろしくお願いいたします。
www.excel.studio-kazu.jp
こちらのサイトを参考に
http://www.excel.studio-kazu.jp/kw/20111019173742.html
VBAのマクロをボタン登録で
エクセルのbook 内のsheet2セルからsheet1に書き込む事は出来るのですが、
powershell?が何なのか知りませんがそれで可能ならそれでも良いです。
ボタンを押すとインポートファイルを指定できる物でも良いのですが、
ただ、PhpMyAdminからの操作が素人には難しくてめんどうなので、
ログファイルをドラッグドロップでアップデートかボタン1つでやれないかと思います。
VBSや.hta(html application)でMySQLにアクセスする方法とかでも良いです。
ログファイル名とフォルダが固定ならスケジュール自動化も視野にしたいです。
よろしくお願いいたします。
300デフォルトの名無しさん
2018/03/06(火) 08:31:48.14ID:2b8pbF8x >>295
ODBCの存在を知らないとかそういう話?
https://qiita.com/msano/items/fdcc0cbb8e41b988ce2d
もしくはySQLコマンドラインツールでもできると思う
ODBCの存在を知らないとかそういう話?
https://qiita.com/msano/items/fdcc0cbb8e41b988ce2d
もしくはySQLコマンドラインツールでもできると思う
301295
2018/03/06(火) 08:50:29.68ID:qLV0sr+i >>300
ODBCを使うんですか?ありがとうございます。
具体的な使い方がわからないので、ご提示のサイトで勉強したいと思います。
>ySQLコマンドラインツール
マウスかタッチパネル操作のみのおじいちゃんでも出来ますか?
ODBCを使うんですか?ありがとうございます。
具体的な使い方がわからないので、ご提示のサイトで勉強したいと思います。
>ySQLコマンドラインツール
マウスかタッチパネル操作のみのおじいちゃんでも出来ますか?
302295
2018/03/06(火) 10:37:26.93ID:qLV0sr+i >>300
ご紹介頂いたページを見てみました。
誠に申し訳ないのですが
ログのcsvファイルを新規でMySQLのテーブルに入れたい訳ではなく、
ExcelにMySQLからデータをダウンロードしたいのでも有りません。
確かにsheet1にMySQLからのダウンロードは可能です、sheet2にcsvのファイルも準備できます。
そして、先のVBAを用いてsheet2からsheet1の書き換えと消し込みが出来ましたが、
sheet1の書き換え後のデータをMySQLに戻すには
一旦csvで保存して、MySQLのテーブルをdrop かtruncate してから
書き換え保存したcsvをMySQLにインポートするしか無いのでしょうか?
ご紹介頂いたページを見てみました。
誠に申し訳ないのですが
ログのcsvファイルを新規でMySQLのテーブルに入れたい訳ではなく、
ExcelにMySQLからデータをダウンロードしたいのでも有りません。
確かにsheet1にMySQLからのダウンロードは可能です、sheet2にcsvのファイルも準備できます。
そして、先のVBAを用いてsheet2からsheet1の書き換えと消し込みが出来ましたが、
sheet1の書き換え後のデータをMySQLに戻すには
一旦csvで保存して、MySQLのテーブルをdrop かtruncate してから
書き換え保存したcsvをMySQLにインポートするしか無いのでしょうか?
303デフォルトの名無しさん
2018/03/06(火) 10:58:38.66ID:o11Cbfr7304デフォルトの名無しさん
2018/03/06(火) 12:48:25.53ID:Z8jG7st4305デフォルトの名無しさん
2018/03/06(火) 15:34:28.04ID:907OdX1W 先生、どうかご指導お願いします。
得意先名が記載してある列に対して
営業所や支店を削除して整理したいと考えてます
下記はAAA梶Z〇営業所という社名、営業署名を
AAA鰍ニ置き換えようとして作成しているマクロです
下記のようにワイルドカードを使って置き換えようとすると
スルーされてしまって変換できません
どうしたらスルーせずに変換できるようになるでしょうか?
Dim Mrow, TOcol, i, t As Long
Dim Mrange As Range
Mrow = Cells(Rows.Count, 1).End(xlUp).Row
TOcol = Rows(1).Find(what:="得意先", lookat:=xlWhole).Column
Range(Cells(2, TOcol), Cells(Mrow, TOcol)).Select
For Each Mrange In Selection
Mrange.Value = Replace(Mrange.Value, "AAA*", "AAA")
Next Mrange
得意先名が記載してある列に対して
営業所や支店を削除して整理したいと考えてます
下記はAAA梶Z〇営業所という社名、営業署名を
AAA鰍ニ置き換えようとして作成しているマクロです
下記のようにワイルドカードを使って置き換えようとすると
スルーされてしまって変換できません
どうしたらスルーせずに変換できるようになるでしょうか?
Dim Mrow, TOcol, i, t As Long
Dim Mrange As Range
Mrow = Cells(Rows.Count, 1).End(xlUp).Row
TOcol = Rows(1).Find(what:="得意先", lookat:=xlWhole).Column
Range(Cells(2, TOcol), Cells(Mrow, TOcol)).Select
For Each Mrange In Selection
Mrange.Value = Replace(Mrange.Value, "AAA*", "AAA")
Next Mrange
306デフォルトの名無しさん
2018/03/06(火) 15:40:08.21ID:Kz9r/khc Replaceにワイルドカードに対応した機能なんてあったっけ?
307デフォルトの名無しさん
2018/03/06(火) 16:55:46.30ID:syG3HE1y308デフォルトの名無しさん
2018/03/06(火) 17:00:18.43ID:o11Cbfr7 >>305
Mrange.Value = Split(Mrange.Value, "")(0) & ""
Mrange.Value = Split(Mrange.Value, "")(0) & ""
309デフォルトの名無しさん
2018/03/06(火) 17:10:48.55ID:Kz9r/khc >>308
楽したいときはそれよくやる
楽したいときはそれよくやる
310デフォルトの名無しさん
2018/03/06(火) 17:44:23.62ID:RSFFAx7v これマクロでやる必要あるのかな、関数でやる方が早くて楽だと思うけど。
311デフォルトの名無しさん
2018/03/06(火) 18:07:44.86ID:J8w9cnP2 ここで詳しく説明したくない何かがあるのさきっと
312デフォルトの名無しさん
2018/03/06(火) 19:04:37.73ID:907OdX1W どうもありがとうございました!
関数使ってしまうと私しか操作ができないので
CSVで読み込んだらボタン一つで誰でも結果が出せるようにしたかったのです^^
どもありがとうございました!
関数使ってしまうと私しか操作ができないので
CSVで読み込んだらボタン一つで誰でも結果が出せるようにしたかったのです^^
どもありがとうございました!
313デフォルトの名無しさん
2018/03/07(水) 01:38:36.16ID:x26Og5c6 これInStrとLeft使えば済む話だろ
314デフォルトの名無しさん
2018/03/07(水) 07:52:35.02ID:dk6C+v+n この程度の動作でわざわざマクロ組んでボタン付けるのって無駄な気がするけど。
実際は複雑な条件分岐でもあるのかな。
大量にcsvがあるなら、一人で一括処理した方が早いし。
複数人で手分けするにしてもこれアドインで配るのか。
イマイチ作業がピンとこないな。
実際は複雑な条件分岐でもあるのかな。
大量にcsvがあるなら、一人で一括処理した方が早いし。
複数人で手分けするにしてもこれアドインで配るのか。
イマイチ作業がピンとこないな。
315デフォルトの名無しさん
2018/03/07(水) 07:57:02.27ID:g1VMydGw 頭が悪いだけだから気にすんな
316デフォルトの名無しさん
2018/03/07(水) 08:25:40.94 業務アプリからCSV吐き出してExcelでインポートする定型業務なんだろ
317デフォルトの名無しさん
2018/03/07(水) 12:27:05.35ID:ITQ9LWXL >>305
Mrange.Replace what:="AAA*", replacement:="AAA"
Mrange.Replace what:="AAA*", replacement:="AAA"
318デフォルトの名無しさん
2018/03/07(水) 18:33:39.24ID:jNQbCOPg >>316
そういう感じか。
自分なら作業フォルダ決めて、そこに突っ込んだファイルでループ回して一括処理するな。
配布するならVBSでドロップしたら処理するようにしとく。
とりあえずボタンなどつけず、不可視でやった方が効率いいと思うな。
そういう感じか。
自分なら作業フォルダ決めて、そこに突っ込んだファイルでループ回して一括処理するな。
配布するならVBSでドロップしたら処理するようにしとく。
とりあえずボタンなどつけず、不可視でやった方が効率いいと思うな。
319デフォルトの名無しさん
2018/03/07(水) 20:37:03.79ID:fiBk/l1y 終わった問題にくどくど文句言ってんじゃねえよバカw
320デフォルトの名無しさん
2018/03/09(金) 05:37:29.78ID:Ioc33b8P あるURLからsendkeysでctrl+a ,ctrl +cで全画面をコピーし、セルに貼り付けたいのですが、macなのでIEが使えず、困っています。
どなたかわかる方いらっしゃいますか??
どなたかわかる方いらっしゃいますか??
321デフォルトの名無しさん
2018/03/09(金) 07:17:33.28ID:iKQibMl2 社内で使ってるソフトがVB6で動いてるんだけど、見直すことになって中身見てるんだけど変数宣言してなかったり変数名なのかコントロールなのか分からんしGOtoで飛びまくってあっちゃこっちゃ移動して見辛いのをキレイに直す近道は何かね?
322デフォルトの名無しさん
2018/03/09(金) 07:53:39.76ID:KC7p8RhA 全面作り直し
323デフォルトの名無しさん
2018/03/09(金) 08:09:53.68ID:p11XwhXH ついでにc#にでも書き換えたら
324デフォルトの名無しさん
2018/03/09(金) 08:21:10.99 >>321
一度に一つのポイントに絞って直していくといいよ。
たとえば、コントロール名の命名規則を全体的に統一、
動作確認、変数宣言強制、動作確認、
GoToを排除(関数切り出しやループ構文)、動作確認、
で、機能・動作は同じままで中身が綺麗になったら
C#やらPythonやらに移植するのもいいかもね。
一度に一つのポイントに絞って直していくといいよ。
たとえば、コントロール名の命名規則を全体的に統一、
動作確認、変数宣言強制、動作確認、
GoToを排除(関数切り出しやループ構文)、動作確認、
で、機能・動作は同じままで中身が綺麗になったら
C#やらPythonやらに移植するのもいいかもね。
325デフォルトの名無しさん
2018/03/09(金) 10:05:38.77ID:iKQibMl2 >>324
やっぱそういうかんじですよね。ゆくゆくC♯にはするつもりです。
やっぱそういうかんじですよね。ゆくゆくC♯にはするつもりです。
326デフォルトの名無しさん
2018/03/09(金) 12:03:12.65ID:f4+dGRtD 普通放置するだろ
327デフォルトの名無しさん
2018/03/09(金) 12:07:04.28ID:iKQibMl2 ″¥工*.*″
これどういう意味?
これどういう意味?
328デフォルトの名無しさん
2018/03/09(金) 12:10:16.16ID:49Hhyu8r329デフォルトの名無しさん
2018/03/09(金) 12:43:24.23ID:iKQibMl2330デフォルトの名無しさん
2018/03/09(金) 12:54:06.72ID:D+ALvGrM >>321
goto文を切り離して呼び出して使おう
goto文を切り離して呼び出して使おう
331デフォルトの名無しさん
2018/03/09(金) 13:21:58.26ID:8uMVsz+u ExcelVBAパスワード解析(解除)が出来ないプロテクトをかける方法がないかな。
※解除出来るVBAが出回ってる、、、。
ソースを見せろと上司から言われて困っています、、、。
※解除出来るVBAが出回ってる、、、。
ソースを見せろと上司から言われて困っています、、、。
332デフォルトの名無しさん
2018/03/09(金) 13:46:20.12ID:Bwgez1ze 業務として作ったものであれば上司の指示に従うべきかと
333デフォルトの名無しさん
2018/03/09(金) 15:21:24.04ID:7ef4doJx >>325
その質問をここにするような馬鹿頭じゃ無理なんじゃ?
その質問をここにするような馬鹿頭じゃ無理なんじゃ?
334デフォルトの名無しさん
2018/03/09(金) 17:46:42.77ID:wpod4SXa335デフォルトの名無しさん
2018/03/09(金) 17:56:22.24ID:f4+dGRtD つまり食い物にされている、と?
336デフォルトの名無しさん
2018/03/09(金) 17:58:04.10ID:CekgNpjO >>321
まずは全てのコードの先頭にOption Explicitを入れて変数宣言をきちんとするところからかな
まずは全てのコードの先頭にOption Explicitを入れて変数宣言をきちんとするところからかな
337デフォルトの名無しさん
2018/03/09(金) 19:01:08.54ID:M2r/B6Zk 初心者って必ず>>336言うよなw
誰に騙されとんのお前ら?w
誰に騙されとんのお前ら?w
338デフォルトの名無しさん
2018/03/09(金) 19:33:16.36ID:CekgNpjO 自称玄人 w
339デフォルトの名無しさん
2018/03/09(金) 20:27:41.68ID:f4+dGRtD 変数宣言をし忘れることはなくてもtypoのリスクはなくならないからな。
340デフォルトの名無しさん
2018/03/09(金) 20:50:54.71ID:qnoZKStj Visual Studioにコピペして修正すると捗る
typoとかもチェックしてくれるし
typoとかもチェックしてくれるし
341デフォルトの名無しさん
2018/03/09(金) 21:09:01.46ID:BWrGum71 typoってそこまで問題になるかな。
マクロを大きな塊で作るとか、途中でテストしないとかじゃないと問題になるような発生の仕方しないと思うんだけど。
マクロを大きな塊で作るとか、途中でテストしないとかじゃないと問題になるような発生の仕方しないと思うんだけど。
342デフォルトの名無しさん
2018/03/09(金) 21:27:32.88ID:Y3Dk8KBt 変数名ミスあるある
使ったことない関数と偶然同じ名前
よく似た変数をいくつも宣言してて、間違えたのにエラーにならない
逆に関数名をタイプミスして変数と解釈される
使ったことない関数と偶然同じ名前
よく似た変数をいくつも宣言してて、間違えたのにエラーにならない
逆に関数名をタイプミスして変数と解釈される
343デフォルトの名無しさん
2018/03/09(金) 21:35:07.60ID:f4+dGRtD >>341
大して問題にはならないと思うけど、多少は時間を浪費してしまうんじゃないか?
大して問題にはならないと思うけど、多少は時間を浪費してしまうんじゃないか?
344デフォルトの名無しさん
2018/03/09(金) 22:09:00.28 >>331
業務で作成したソースコードを隠すとか何考えてるの???
業務で作成したソースコードを隠すとか何考えてるの???
345デフォルトの名無しさん
2018/03/09(金) 23:06:24.40ID:s0Ox43/Q お昼休みや定時後サービス残業やプライベート潰して土日に頑張って作ったマクロだから他人に無償で差し出せと言われたら躊躇なく消し去る
346デフォルトの名無しさん
2018/03/09(金) 23:10:16.18347デフォルトの名無しさん
2018/03/09(金) 23:30:45.58ID:s0Ox43/Q ソダネー
348デフォルトの名無しさん
2018/03/09(金) 23:48:40.84ID:jpL8SCkU VBAというプログラミング言語は、昔からある枯れた技術だけど
エクセルを使っていない職場は、無いと言えるぐらい普及しているから
業務のAI化の流れから需要が減る可能性は少ないだろうなあ
エクセルを使っていない職場は、無いと言えるぐらい普及しているから
業務のAI化の流れから需要が減る可能性は少ないだろうなあ
349デフォルトの名無しさん
2018/03/10(土) 00:01:14.03ID:4nlfLUix >>348
エクセルよりお前の需要の心配しろよ能天気さんw
エクセルよりお前の需要の心配しろよ能天気さんw
350デフォルトの名無しさん
2018/03/10(土) 00:38:30.02ID:PZ/jlzJE パソコンによって紙が減るって言われていたのに印刷物が増えたように、
AI化するとカバー出来る業務が増えた結果、逆に忙しくなりそう。
AI化するとカバー出来る業務が増えた結果、逆に忙しくなりそう。
351デフォルトの名無しさん
2018/03/10(土) 02:32:10.79ID:0GMAoiXq 超有能になったカイルが復活するか
352デフォルトの名無しさん
2018/03/10(土) 09:24:51.95ID:AY0LzIsz パソコンによって誰でも気軽に印刷物を作成できるようになった
だから紙の書類は増えたんだけど
それ以上に母数となる書類は増えてるんだよ
印刷されてない電子書類の数も含めたら、やっぱり紙の書類の割合は減ってる
だから紙の書類は増えたんだけど
それ以上に母数となる書類は増えてるんだよ
印刷されてない電子書類の数も含めたら、やっぱり紙の書類の割合は減ってる
353デフォルトの名無しさん
2018/03/10(土) 10:46:17.42ID:xR2Zob7T 割合なんかはじめから問題になってないってゆう
354デフォルトの名無しさん
2018/03/10(土) 13:46:15.19ID:OgFFirzA 実際に減ったのは髪
355デフォルトの名無しさん
2018/03/10(土) 21:17:23.13ID:27Zew0ET Excel2013
デザインモードってONでもOFFでもどこが変わったのかわからないんだけど、
何が違うんですか?
検索したら、OFFの時はオブジェクトを右クリックしてもコード編集ができないとか書いてあって、
そんなことないんだけど!
デザインモードってONでもOFFでもどこが変わったのかわからないんだけど、
何が違うんですか?
検索したら、OFFの時はオブジェクトを右クリックしてもコード編集ができないとか書いてあって、
そんなことないんだけど!
356デフォルトの名無しさん
2018/03/10(土) 21:32:40.22ID:/UsVOqQZ357デフォルトの名無しさん
2018/03/10(土) 21:57:01.21ID:27Zew0ET358デフォルトの名無しさん
2018/03/11(日) 09:02:12.87ID:eeeFjAQk UserFormのオプションボタンが2つ(AとB)あったとします。
あるFrameのvisibleをFalseにしておいて、Bが選択された時だけTrueにしたいのですが、
@Bを選択→Frameが表示される
AAを選択
BBの選択は解除されるが、Frameが表示されたまま
になってしまいました。
Bの選択が解除されるのを認識させるにはどうしたらよいでしょうか?
あるFrameのvisibleをFalseにしておいて、Bが選択された時だけTrueにしたいのですが、
@Bを選択→Frameが表示される
AAを選択
BBの選択は解除されるが、Frameが表示されたまま
になってしまいました。
Bの選択が解除されるのを認識させるにはどうしたらよいでしょうか?
359デフォルトの名無しさん
2018/03/11(日) 09:10:40.94ID:WgDqrFTJ Bが選択された時だけTrueにしたのなら
つぎは
Aが選択された時にバルスにしたらいいんじゃないかい?
つぎは
Aが選択された時にバルスにしたらいいんじゃないかい?
360デフォルトの名無しさん
2018/03/11(日) 09:36:36.42ID:eeeFjAQk >>359
ありがとうございます。
ボタンは今後増やす予定で、
たとえば、ボタンCを追加した場合は、
A_Clickと同様にC_ClickにもBのバルスを追加する必要がありますよね。
ボタンを追加する度に同じ処理を入れるのはイマイチかと思いましたが、
このぐらいの1行で済む処理なら問題なしおですかね。
ありがとうございます。
ボタンは今後増やす予定で、
たとえば、ボタンCを追加した場合は、
A_Clickと同様にC_ClickにもBのバルスを追加する必要がありますよね。
ボタンを追加する度に同じ処理を入れるのはイマイチかと思いましたが、
このぐらいの1行で済む処理なら問題なしおですかね。
361デフォルトの名無しさん
2018/03/11(日) 11:12:45.26ID:1qbV0tMy >>275
やめろー
言うんじゃない、言うなー
作らせておいてちょっとミスると「こんなんだったら手作業でも一緒だよね」とかぬかしやがって。
朝まで電卓叩いて俺徹夜しましたオレ頑張ってますアピールしてろハゲ
やめろー
言うんじゃない、言うなー
作らせておいてちょっとミスると「こんなんだったら手作業でも一緒だよね」とかぬかしやがって。
朝まで電卓叩いて俺徹夜しましたオレ頑張ってますアピールしてろハゲ
362デフォルトの名無しさん
2018/03/11(日) 12:00:11.76ID:3gQJTH+l ひょっとして:Changeイベント
363デフォルトの名無しさん
2018/03/11(日) 13:16:00.78 Option Explicit
Private Sub OptionButton1_Change()
Frame1.Visible = OptionButton1
End Sub
Private Sub UserForm_Initialize()
Frame1.Visible = OptionButton1
End Sub
Private Sub OptionButton1_Change()
Frame1.Visible = OptionButton1
End Sub
Private Sub UserForm_Initialize()
Frame1.Visible = OptionButton1
End Sub
364デフォルトの名無しさん
2018/03/11(日) 18:26:53.04ID:rR985EAX >>360
お、悪くない着眼点だねー。
都度分岐を増やすと手の入ったところは全て再テストし直しになるし
その分岐がいろんなところに発生したら結構大変だよね。
いくつか方法があるよ。
例えば処理名とTRUE、FALSEの状態をシートに記載しておいて
処理に該当する状態を取得して設定する方法。
そういうことの出来る関数を一つ作っておいて
後は処理名を引数にでも渡して状態を取得するようにすれば都度分岐が増えることは無い。
他にもボタンが増えるということは
何かしら新しい処理が増えると言うことだから
新しく増えた側の処理に状態を持たせたりとか。
まぁ、その辺のことは前にも同じようなレスがあったと思ったけど
そういうのを組み入れるのと長期的に見てそこまでのものでは無いんじゃ、と言うのが
組み入れるかどうかの判断基準になるんじゃないかな。
お、悪くない着眼点だねー。
都度分岐を増やすと手の入ったところは全て再テストし直しになるし
その分岐がいろんなところに発生したら結構大変だよね。
いくつか方法があるよ。
例えば処理名とTRUE、FALSEの状態をシートに記載しておいて
処理に該当する状態を取得して設定する方法。
そういうことの出来る関数を一つ作っておいて
後は処理名を引数にでも渡して状態を取得するようにすれば都度分岐が増えることは無い。
他にもボタンが増えるということは
何かしら新しい処理が増えると言うことだから
新しく増えた側の処理に状態を持たせたりとか。
まぁ、その辺のことは前にも同じようなレスがあったと思ったけど
そういうのを組み入れるのと長期的に見てそこまでのものでは無いんじゃ、と言うのが
組み入れるかどうかの判断基準になるんじゃないかな。
365デフォルトの名無しさん
2018/03/11(日) 20:18:26.70ID:lvju0XX+ 長いねん
366デフォルトの名無しさん
2018/03/11(日) 20:52:08.82ID:eeeFjAQk367デフォルトの名無しさん
2018/03/11(日) 23:24:33.00ID:iweXkOC/ データのある最終行を取得したいのですが、
うまくうごきません。
Range("A10", Cells(Rows.Count, 1)).End(xlUp).Select
A10から下に続く最後の行数(データ個数15個、空白なし)を取得したいのですが、
なぜか返ってくる数は24ではなく、
1048575です。
知識が浅く、解決できません。
どなたかご助言お願いします。
うまくうごきません。
Range("A10", Cells(Rows.Count, 1)).End(xlUp).Select
A10から下に続く最後の行数(データ個数15個、空白なし)を取得したいのですが、
なぜか返ってくる数は24ではなく、
1048575です。
知識が浅く、解決できません。
どなたかご助言お願いします。
368デフォルトの名無しさん
2018/03/11(日) 23:30:27.72ID:XQUvZIO5 Range("A10").End(xlDown).Select
369デフォルトの名無しさん
2018/03/11(日) 23:47:11.35ID:iweXkOC/370デフォルトの名無しさん
2018/03/12(月) 00:02:45.31ID:HsTapSs6 シート1〜10まであって、a+b=cって計算を、シート1〜7で行ってます
aとbは入力シートに入力した数値で、各シートが、個別に入力シートから引っ張ってきています
各シートで同じ変数を元に同じ計算をしてるが作り方って変ですかね?
なんでそんなことしてるの?というと、検討するシートを1つ作って、そのあと別検討シートを追加、という作り方をしていった結果、検討内容自体は違うものの、共通の計算があるっていう状態になっていて、特に意識したわけではないです
このエクセルを整理することを考えた時、共通の計算は、別個シートを作って、そこで計算させておくべきでしょうか??
aとbは入力シートに入力した数値で、各シートが、個別に入力シートから引っ張ってきています
各シートで同じ変数を元に同じ計算をしてるが作り方って変ですかね?
なんでそんなことしてるの?というと、検討するシートを1つ作って、そのあと別検討シートを追加、という作り方をしていった結果、検討内容自体は違うものの、共通の計算があるっていう状態になっていて、特に意識したわけではないです
このエクセルを整理することを考えた時、共通の計算は、別個シートを作って、そこで計算させておくべきでしょうか??
371デフォルトの名無しさん
2018/03/12(月) 05:43:32.66 シートが必須なの?
標準モジュールじゃあかんの?
標準モジュールじゃあかんの?
372デフォルトの名無しさん
2018/03/12(月) 12:42:37.39ID:cBxGAu9U UserFormの部品の位置を微調整するために、
ズーム表示させる方法はありませんか?
(今は、Windows標準の拡大鏡を使ったりしています)
ズーム表示させる方法はありませんか?
(今は、Windows標準の拡大鏡を使ったりしています)
373デフォルトの名無しさん
2018/03/12(月) 14:30:50.92ID:Bvz0V3Xa >>372
微調整なら数値からやればいいのでは
微調整なら数値からやればいいのでは
374デフォルトの名無しさん
2018/03/12(月) 17:18:50.94ID:UMPN+oMV スペースがあるかないかもわからん馬鹿がなぜそんなことを気にするかね
375デフォルトの名無しさん
2018/03/12(月) 18:40:09.24ID:BreNV4lT376デフォルトの名無しさん
2018/03/13(火) 00:27:26.72ID:qWMLlpqF UserFormを作成中にF5押下でお試し実行ができますが、
普通にやるとモーダルになります。
F5押下でもモードレスで実行する方法ってありますか?
普通にやるとモーダルになります。
F5押下でもモードレスで実行する方法ってありますか?
377デフォルトの名無しさん
2018/03/13(火) 01:15:13.77 >>376
UserFormのShowModalプロパティをFalseにする
UserFormのShowModalプロパティをFalseにする
378デフォルトの名無しさん
2018/03/13(火) 01:17:05.94ID:qWMLlpqF379デフォルトの名無しさん
2018/03/13(火) 07:54:16.83ID:j6R4vUCh >>378
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
380デフォルトの名無しさん
2018/03/13(火) 11:51:11.57ID:pjKAsbJg ここはレベル高ぇ。
でも、みんな、協力しているのはとても嬉しいです。
勉強になる。
ありがとうございます。
でも、みんな、協力しているのはとても嬉しいです。
勉強になる。
ありがとうございます。
381デフォルトの名無しさん
2018/03/13(火) 17:49:20.30ID:Fj3wIRvx よろしくお願いします。年1のプレイヤーです。
商品コード(1000〜1000000)に対して、別シートにある原価を
vlookupで検索し、商品コードの右セルに代入しようとしているのですが
1000番台はエラーにならず、200000台からエラーになってしまいます
(1000番台の次は200000台にコードが飛びます)
「worksheetfunctionクラスのVlookupプロパティを取得できません」
なにが原因かわからなくてヘルプお願いします。
=================================================
For i = 2 To 最終行
原価 = 0
With Sheets("原価")
原価 = WorksheetFunction.VLookup(Cells(i, 商品コード列), .Range(.Cells(1, 1), .Cells(10, 1000)), 6, False)
End With
Next i
商品コード(1000〜1000000)に対して、別シートにある原価を
vlookupで検索し、商品コードの右セルに代入しようとしているのですが
1000番台はエラーにならず、200000台からエラーになってしまいます
(1000番台の次は200000台にコードが飛びます)
「worksheetfunctionクラスのVlookupプロパティを取得できません」
なにが原因かわからなくてヘルプお願いします。
=================================================
For i = 2 To 最終行
原価 = 0
With Sheets("原価")
原価 = WorksheetFunction.VLookup(Cells(i, 商品コード列), .Range(.Cells(1, 1), .Cells(10, 1000)), 6, False)
End With
Next i
382デフォルトの名無しさん
2018/03/13(火) 17:57:59.90383381
2018/03/13(火) 18:11:15.85ID:Fj3wIRvx すみません。解決しました。
384デフォルトの名無しさん
2018/03/14(水) 01:32:37.37ID:jWcIaZnH 済んだハナシで済みません
385デフォルトの名無しさん
2018/03/14(水) 20:38:23.29ID:LX5CWuB3 IEやExcelを非アクティブのままバッチ処理してると、CPUやメモリをやたら消費するのはなんでだろ?
AppActivateで対処はできてるけど、理由が分からないのが気持ち悪い
(ちなみにAppActivateは自アプリを前面にできないのはなんでだろ?いちいち別のVBSを呼び出してる)
Excelが「遅くなる」点については調べてる人がいて、「非アクティブでは遠慮して動くから」と
CPUが櫛型に動いてる様子を紹介してた
ならCPU使用率が下がるはずなのに現実は逆で、やたら使用率が上がり、メモリも何倍も上がる
遅い分イベントが貯まってスタックが貯まってメモリが上がって、そのためにCPUも上がるのかな
「遠慮する」機構が裏目に出てるのかな
AppActivateで対処はできてるけど、理由が分からないのが気持ち悪い
(ちなみにAppActivateは自アプリを前面にできないのはなんでだろ?いちいち別のVBSを呼び出してる)
Excelが「遅くなる」点については調べてる人がいて、「非アクティブでは遠慮して動くから」と
CPUが櫛型に動いてる様子を紹介してた
ならCPU使用率が下がるはずなのに現実は逆で、やたら使用率が上がり、メモリも何倍も上がる
遅い分イベントが貯まってスタックが貯まってメモリが上がって、そのためにCPUも上がるのかな
「遠慮する」機構が裏目に出てるのかな
386デフォルトの名無しさん
2018/03/14(水) 21:36:34.44ID:e3akNBzY >>385
一目で馬鹿とわかる文章
一目で馬鹿とわかる文章
387デフォルトの名無しさん
2018/03/14(水) 21:38:17.91ID:QheYb9tS IE, Excel などのプロセスを終了していないとか?
ドンドン起動しても終了しないから、プロセスが無限に増えていってるとか?
タスクマネージャーで見れば?
ドンドン起動しても終了しないから、プロセスが無限に増えていってるとか?
タスクマネージャーで見れば?
388デフォルトの名無しさん
2018/03/14(水) 22:18:16.08ID:LX5CWuB3389デフォルトの名無しさん
2018/03/14(水) 23:50:59.44ID:+W/Ve/Kf >>388
馬鹿丸出し
馬鹿丸出し
390387
2018/03/14(水) 23:58:49.45ID:QheYb9tS 例えば、コマンドプロンプトから、Ruby を起動して、そのソースコードから、
Selenium WebDriver で、ブラウザを起動すると、
これらは、GUI のプロセスだから、プロセスに親子関係がある。
(親) コマンドプロンプト → Ruby (子) → ブラウザ (孫)
だから、親か子を終了すると、孫のブラウザも終了する
でも、VBScript(VBS) などで、CUI モードを使うと、親子関係を断ち切るから、
(親) VBS → ブラウザ・Excel (子)
VBS を終了しても、ブラウザ・Excel は終了されない。
子プロセスを、自分で管理せず、OS に任せている状態になる
Selenium WebDriver で、ブラウザを起動すると、
これらは、GUI のプロセスだから、プロセスに親子関係がある。
(親) コマンドプロンプト → Ruby (子) → ブラウザ (孫)
だから、親か子を終了すると、孫のブラウザも終了する
でも、VBScript(VBS) などで、CUI モードを使うと、親子関係を断ち切るから、
(親) VBS → ブラウザ・Excel (子)
VBS を終了しても、ブラウザ・Excel は終了されない。
子プロセスを、自分で管理せず、OS に任せている状態になる
392385
2018/03/15(木) 01:06:52.75ID:3pohbyhz >>390
あ、分かった、俺が悪かった
タスクスケジューラで直接エクセルを起動した場合は、この現象起きなかった気がする
DOSのバッチ経由で起動すると起きる気がする
で、「OSに任せる」と、非アクティブ時に無駄にCPUとメモリを食うと
なるほど
留意点は分かったけど、理屈は分からんw
あ、分かった、俺が悪かった
タスクスケジューラで直接エクセルを起動した場合は、この現象起きなかった気がする
DOSのバッチ経由で起動すると起きる気がする
で、「OSに任せる」と、非アクティブ時に無駄にCPUとメモリを食うと
なるほど
留意点は分かったけど、理屈は分からんw
393387
2018/03/15(木) 01:42:16.85ID:NnpmsWbw プロセスには、2種類ある
ユーザーが管理している、画面を持つ(GUI)プロセスと、
OS が管理している、画面を持たない(CUI)、
バックグラウンドで動作する、サーバーのようなプロセス
上は、プロセスに親子関係があるけど、
下は、OS がプロセスの親になるとか?
ユーザーが管理している、画面を持つ(GUI)プロセスと、
OS が管理している、画面を持たない(CUI)、
バックグラウンドで動作する、サーバーのようなプロセス
上は、プロセスに親子関係があるけど、
下は、OS がプロセスの親になるとか?
394デフォルトの名無しさん
2018/03/15(木) 06:34:45.23ID:z1/gBAj5 フォルダ内の複数のエクセルファイルを開いて指定シートをコピーして閉じるを繰り返したい。コピーするシートは各エクセルに対して1シートのみ。
シート名は個人名でそれぞれバラバラなんだけどいい方法ない?
シート名は個人名でそれぞれバラバラなんだけどいい方法ない?
395デフォルトの名無しさん
2018/03/15(木) 06:42:29.06ID:VNc1eFwU 1シートしかないブックにする
396デフォルトの名無しさん
2018/03/15(木) 07:23:11.51397デフォルトの名無しさん
2018/03/15(木) 08:20:13.69ID:Q+OFwlGZ 質問です。
whatif のデータテーブルで、sheet1にある式をsheet2から参照したいのですが、「代入セルの参照が正しくありません。」というエラーが出ます。
sheet1の同じシート内でやる時はエラーは出ないのですが、別シートは参照出来ないのでしょうか。
whatif のデータテーブルで、sheet1にある式をsheet2から参照したいのですが、「代入セルの参照が正しくありません。」というエラーが出ます。
sheet1の同じシート内でやる時はエラーは出ないのですが、別シートは参照出来ないのでしょうか。
398デフォルトの名無しさん
2018/03/15(木) 08:24:47.39 >>397
VBAの質問じゃなくね?
VBAの質問じゃなくね?
399デフォルトの名無しさん
2018/03/15(木) 12:47:59.22ID:kdbViSCg メゾット君いて草
400デフォルトの名無しさん
2018/03/15(木) 13:26:06.11ID:GiNZbVBW >>397
馬鹿は死ねよ
馬鹿は死ねよ
401デフォルトの名無しさん
2018/03/15(木) 19:29:22.65ID:givVJukY402デフォルトの名無しさん
2018/03/15(木) 21:40:55.79ID:khWCS+hx 入力規則でセルに選択リストを作りました
で、セルのプルダウンで選んだアイテムが
何行目か?っていうのを知りたいんだけれど
doとかfor文でリスト先頭から一致検索するしかないのかな?
一発でアイテムのカウント何件目か取得する事って出来たりするんかなぁ?
で、セルのプルダウンで選んだアイテムが
何行目か?っていうのを知りたいんだけれど
doとかfor文でリスト先頭から一致検索するしかないのかな?
一発でアイテムのカウント何件目か取得する事って出来たりするんかなぁ?
403デフォルトの名無しさん
2018/03/15(木) 22:18:17.27ID:obWJCYhi match関数で行けないかな?
404デフォルトの名無しさん
2018/03/16(金) 07:44:18.61ID:D9gIY3FC >>394なんだが、フォルダ内のエクセルをループして開いて、目的のシートのオブジェクト名を統一してファイル開いてオブジェクト名をfor eachでヒットさせて、functionでそのシートをテキストにしたいんだがどうすればいい?ループさせてヒットさせるまではできた。
結果txtファイルは同フォルダ内の1個あってそれに更新して書き込んで行きたいんだが。
誰か教えて下さい。
結果txtファイルは同フォルダ内の1個あってそれに更新して書き込んで行きたいんだが。
誰か教えて下さい。
405デフォルトの名無しさん
2018/03/16(金) 08:28:41.10ID:qMVu/e+c 意味わからんしほぼ丸投げ感ある
406デフォルトの名無しさん
2018/03/16(金) 08:55:16.84ID:4vfDYpgH csvにエクスポートでもすればいいよ
マクロの記録でコード作れば
マクロの記録でコード作れば
407デフォルトの名無しさん
2018/03/16(金) 17:01:45.82ID:tJ/sJf9+ 全キャラエリーン化MOD希望します
408デフォルトの名無しさん
2018/03/16(金) 17:02:19.93ID:tJ/sJf9+ 誤爆w
409デフォルトの名無しさん
2018/03/16(金) 22:56:27.26ID:hrS8kMFb >>404だけどネットで探しながら作ってみてできたんだけど、
一回目のエクセルブックの指定したシートをoutputでテキストファイルに書き込み。2回目以降をApend?だっけ?で続きに書き込んでいくんだけど、outputとApend の違いだけで書き込みコードが2つあるのを一つにまとめるにはどうしたら出来ますか?
一回目のエクセルブックの指定したシートをoutputでテキストファイルに書き込み。2回目以降をApend?だっけ?で続きに書き込んでいくんだけど、outputとApend の違いだけで書き込みコードが2つあるのを一つにまとめるにはどうしたら出来ますか?
410デフォルトの名無しさん
2018/03/16(金) 23:04:26.61ID:ikUU8ykN411デフォルトの名無しさん
2018/03/17(土) 00:32:21.24412デフォルトの名無しさん
2018/03/17(土) 06:33:04.45ID:n47xCJZ+ 質問です
今EXCELで対戦格闘ゲームを作っているのですが
キャラクター同士の当たり判定は
それぞれ攻撃用、体用と別々に持つことで
正しく動いています。
ただ攻撃が当たった時のヒットマークを表示する位置を
どのように算出すれば良いかが思いつきません。
何か良い方法はないでしょうか?
ちなみにキャラクターはシートのセルを方眼紙のように見立てて
横256*縦200で1セルを1ドットに見立てて行っています。
今EXCELで対戦格闘ゲームを作っているのですが
キャラクター同士の当たり判定は
それぞれ攻撃用、体用と別々に持つことで
正しく動いています。
ただ攻撃が当たった時のヒットマークを表示する位置を
どのように算出すれば良いかが思いつきません。
何か良い方法はないでしょうか?
ちなみにキャラクターはシートのセルを方眼紙のように見立てて
横256*縦200で1セルを1ドットに見立てて行っています。
413デフォルトの名無しさん
2018/03/17(土) 07:23:19.78ID:n47xCJZ+ 言い忘れていましたが
当たり判定は各キャラクターの動作毎、絵柄毎に
攻撃用が1〜3個、体用が1〜5個の四角い範囲を持っていて
それが重なったかどうかで判定を行なっています。
動作とは例えば小パンチとか、大パンチとかを指します。
同じ絵柄でも違う動作の場合は
違う範囲で当たり判定を行えるようにしています。
当たり判定は各キャラクターの動作毎、絵柄毎に
攻撃用が1〜3個、体用が1〜5個の四角い範囲を持っていて
それが重なったかどうかで判定を行なっています。
動作とは例えば小パンチとか、大パンチとかを指します。
同じ絵柄でも違う動作の場合は
違う範囲で当たり判定を行えるようにしています。
414デフォルトの名無しさん
2018/03/17(土) 07:48:47.16ID:71uTBaAx415デフォルトの名無しさん
2018/03/17(土) 08:14:30.06ID:n47xCJZ+416デフォルトの名無しさん
2018/03/17(土) 08:23:52.27ID:0VMaqrOi417デフォルトの名無しさん
2018/03/17(土) 09:02:41.97ID:8EqoOoha 生きる!!!!!
(´・ω・`)b
(´・ω・`)b
418デフォルトの名無しさん
2018/03/17(土) 09:10:30.63ID:71uTBaAx >>415
「ゲームプログラミングなら俺に聞け」とか、そういうスレの方が絶対いいと思う
「ゲームプログラミングなら俺に聞け」とか、そういうスレの方が絶対いいと思う
419デフォルトの名無しさん
2018/03/17(土) 11:01:00.47ID:plFeqth9 ヒットマークとやらをどう表示したいのかも書いてない
こんなんで回答がつくわけない
質問の体を装ったただの俺こんなの作ってるスゲーだろアピール
こんなんで回答がつくわけない
質問の体を装ったただの俺こんなの作ってるスゲーだろアピール
420デフォルトの名無しさん
2018/03/17(土) 12:28:23.68ID:zttMJW/5 当たり判定とヒットマークの位置関係だけあらかじめ決めておいて、あとはヒットした当たり判定のセル位置のアドレスなり座標なりからオフセット参照するだけじゃん
421デフォルトの名無しさん
2018/03/17(土) 12:53:01.02ID:0VMaqrOi422デフォルトの名無しさん
2018/03/17(土) 13:02:49.05ID:JhGe8NGg マウントって簡単に言いすぎ
倫理をふりかざして人を委縮させようとする言動に限らないと
言葉の力がなくなってしまう
倫理をふりかざして人を委縮させようとする言動に限らないと
言葉の力がなくなってしまう
423デフォルトの名無しさん
2018/03/17(土) 13:38:51.05ID:heA3uIoa424デフォルトの名無しさん
2018/03/17(土) 14:18:21.64ID:7XiT0JZV >>412
もしかして当たった位置が判らないということですか?
もしかして当たった位置が判らないということですか?
425デフォルトの名無しさん
2018/03/17(土) 15:07:46.54ID:JHaB3/LC >>412
へぇ、このスレでは珍しい質問だね。
あくまでひとつの方法としての提案だけど、
当たり判定が出来るということは攻撃範囲と体範囲って呼んでるけど、
それが重なったことは判定出来てるんだよね?
なら重なった範囲の中心にヒットマークを出すようにすればいいと思うよ。
つまりキャラAの右下セルよりキャラBの左上セルが
左上にあって、かつ
キャラAの左上セルよりキャラBの右下セルが右下にある場合、これがキャラが重なった「当たった」ことに該当するんだけど、
この状態からキャラAの右下セルからキャラBの左上セルの縦横それぞれの差分を出して
それを2で割ってキャラAの右下セルの縦と横にそれぞれ足してやれば求められるはず。
後は複数判定用の範囲を持ってるというところで
どの範囲を優先するかの優先順位をつけて。
頑張って下さいね。
へぇ、このスレでは珍しい質問だね。
あくまでひとつの方法としての提案だけど、
当たり判定が出来るということは攻撃範囲と体範囲って呼んでるけど、
それが重なったことは判定出来てるんだよね?
なら重なった範囲の中心にヒットマークを出すようにすればいいと思うよ。
つまりキャラAの右下セルよりキャラBの左上セルが
左上にあって、かつ
キャラAの左上セルよりキャラBの右下セルが右下にある場合、これがキャラが重なった「当たった」ことに該当するんだけど、
この状態からキャラAの右下セルからキャラBの左上セルの縦横それぞれの差分を出して
それを2で割ってキャラAの右下セルの縦と横にそれぞれ足してやれば求められるはず。
後は複数判定用の範囲を持ってるというところで
どの範囲を優先するかの優先順位をつけて。
頑張って下さいね。
426デフォルトの名無しさん
2018/03/17(土) 22:00:46.63ID:plFeqth9 自演死ね
427デフォルトの名無しさん
2018/03/18(日) 01:02:38.92ID:5x2puHKk 教えてください。
別ブックを範囲(A10:B24)指定してコピーして
現在のブックA10をはじめとした範囲にペーストしたいのですが、
なぜか参照ブックをアクティブにした上で範囲指定ができません。
最初のブック・・・A.xlsm
参照ブック・・・nal.xls 参照シート:sheet10
参照ブックのデータ最終行・・・i (24が入っています)
Dim i As Integer
Workbooks("nal.xls").Activate
i = Worksheets("sheet10").Range("A10").End(xlDown).Row
Workbooks("nal.xls").Activate
Worksheets("sheet10").Activate
Range(Cells(10, 1), Cells(i, 2)).Select ←RangeクラスのSelectメソッドが失敗しました。
Selection.Copy
どなたか助けてください。
別ブックを範囲(A10:B24)指定してコピーして
現在のブックA10をはじめとした範囲にペーストしたいのですが、
なぜか参照ブックをアクティブにした上で範囲指定ができません。
最初のブック・・・A.xlsm
参照ブック・・・nal.xls 参照シート:sheet10
参照ブックのデータ最終行・・・i (24が入っています)
Dim i As Integer
Workbooks("nal.xls").Activate
i = Worksheets("sheet10").Range("A10").End(xlDown).Row
Workbooks("nal.xls").Activate
Worksheets("sheet10").Activate
Range(Cells(10, 1), Cells(i, 2)).Select ←RangeクラスのSelectメソッドが失敗しました。
Selection.Copy
どなたか助けてください。
428デフォルトの名無しさん
2018/03/18(日) 03:11:59.88ID:Ml7D0I3C 複数シートでゴニョゴニョする際は
Worksheets("sheet10").Range(Worksheets("sheet10").Cells(10, 1), Worksheets("sheet10").Cells(i, 2)).Select
と略さずに書くといいよ
デバッグ中につい違うページ開いちゃうと後で泣きを見る
Worksheets("sheet10").Range(Worksheets("sheet10").Cells(10, 1), Worksheets("sheet10").Cells(i, 2)).Select
と略さずに書くといいよ
デバッグ中につい違うページ開いちゃうと後で泣きを見る
429デフォルトの名無しさん
2018/03/18(日) 03:58:35.89ID:JrJJTzVM Aブックに、BブックをOpenするコードが書いてあります。
困ったことにBブックが正常に開くこともあれば、
長時間たってもビジー状態が続き開かないこともあります。
これはAブックから開くときだけでなく、Bブックのアイコンをダブルクリックしても同様です。
そんなときでも、エクセルを強制終了した後にBブックを開くとなぜか問題なく開くことも多いです。
Bブックの問題を取り除くのが正しい方法なんでしょうが、とりあえずの対策として、
wb = Workbooks.Open(strPath & "\" & "B.xslm")
で、AブックがBブックをOpenした後に一定時間経過後にBブックの特定のセルの内容を読み取れなければ、
Bブックを強制的に閉じて、再度Bブックを開き直すというコードを書こうと思ったのですが、
wb = Workbooks.Open(strPath & "\" & "B.xslm") を実行すると、
Bブックが開くまでAブックのマクロが止まってしまい、Bブックのセルが読めるかどうか判定することができません。
どうしたらよいでしょうか?
困ったことにBブックが正常に開くこともあれば、
長時間たってもビジー状態が続き開かないこともあります。
これはAブックから開くときだけでなく、Bブックのアイコンをダブルクリックしても同様です。
そんなときでも、エクセルを強制終了した後にBブックを開くとなぜか問題なく開くことも多いです。
Bブックの問題を取り除くのが正しい方法なんでしょうが、とりあえずの対策として、
wb = Workbooks.Open(strPath & "\" & "B.xslm")
で、AブックがBブックをOpenした後に一定時間経過後にBブックの特定のセルの内容を読み取れなければ、
Bブックを強制的に閉じて、再度Bブックを開き直すというコードを書こうと思ったのですが、
wb = Workbooks.Open(strPath & "\" & "B.xslm") を実行すると、
Bブックが開くまでAブックのマクロが止まってしまい、Bブックのセルが読めるかどうか判定することができません。
どうしたらよいでしょうか?
430デフォルトの名無しさん
2018/03/18(日) 04:24:15.80ID:/1Of5770 >>429
開けていないものを閉じろと言うのは無理ゲー
開けていないものを閉じろと言うのは無理ゲー
431デフォルトの名無しさん
2018/03/18(日) 06:47:14.19ID:JFJ3EKTR 最初にタスクマネージャーで、
起動中のすべてのExcel を、強制終了させてから実行すれば?
たぶん、起動中のExcel が、そのブックをつかんでいるのだろう
起動中のすべてのExcel を、強制終了させてから実行すれば?
たぶん、起動中のExcel が、そのブックをつかんでいるのだろう
432412
2018/03/18(日) 11:12:47.56ID:l25Pelu+433デフォルトの名無しさん
2018/03/18(日) 11:21:02.32ID:A1IN0XTG >>432
VBA初心者でこのスレをたまにチラチラ見ているものですが
「EXCELで対戦格闘ゲーム」ってものがどういうものなのか全然想像できないです
(どうやったらそんなことできるの! てかどんな画面になるの!! 状態です)
もしよろしければ、何か雰囲気の掴めそうな画像か
もしくは、そういう人たちが作ったゲームのリンクなどを紹介していただけると嬉しいです
VBA初心者でこのスレをたまにチラチラ見ているものですが
「EXCELで対戦格闘ゲーム」ってものがどういうものなのか全然想像できないです
(どうやったらそんなことできるの! てかどんな画面になるの!! 状態です)
もしよろしければ、何か雰囲気の掴めそうな画像か
もしくは、そういう人たちが作ったゲームのリンクなどを紹介していただけると嬉しいです
434427
2018/03/18(日) 21:11:28.30ID:5x2puHKk >>428
お返事遅くなってすみません。
コード丸写しで略さずにかいたところ、うまく動きました。
エラーの前のbookとsheetをアクティブにしただけでは足りなかったようで。
勉強になりました。
ありがとうございました。
お返事遅くなってすみません。
コード丸写しで略さずにかいたところ、うまく動きました。
エラーの前のbookとsheetをアクティブにしただけでは足りなかったようで。
勉強になりました。
ありがとうございました。
435デフォルトの名無しさん
2018/03/18(日) 21:34:46.44ID:utQAsfrI on
436デフォルトの名無しさん
2018/03/18(日) 21:35:52.97ID:utQAsfrI ontimeでopenするとかは?
437デフォルトの名無しさん
2018/03/19(月) 07:21:13.16ID:We1Ev2gv >>433
ちと古いけどこういうのがある
Excel VBA アクションゲーム作成入門 Excel 2007/2003/2002 対応
https://book.impress.co.jp/books/2686
ちと古いけどこういうのがある
Excel VBA アクションゲーム作成入門 Excel 2007/2003/2002 対応
https://book.impress.co.jp/books/2686
438デフォルトの名無しさん
2018/03/19(月) 20:14:20.80ID:uXl73OAC >>437
紹介ありがとうだけど…、本だとやっぱりよく実感がつかめない…
でその本のタイトルで色々ググってみたら実際にゲームをやってる動画が出てきた
エクセルでスーパーマリオを作ってみた
http://www.nico video.jp/watch/sm12052293
Excelでこんなものが作れちゃうってすごい!(というか見てもなお信じられないが)
紹介ありがとうだけど…、本だとやっぱりよく実感がつかめない…
でその本のタイトルで色々ググってみたら実際にゲームをやってる動画が出てきた
エクセルでスーパーマリオを作ってみた
http://www.nico video.jp/watch/sm12052293
Excelでこんなものが作れちゃうってすごい!(というか見てもなお信じられないが)
439デフォルトの名無しさん
2018/03/19(月) 20:59:21.19ID:Lmqu9UWt440デフォルトの名無しさん
2018/03/19(月) 22:27:28.31ID:bkGJBs4p スーパーマリオのDLLとかあるんか?
すげーなエクセルって
すげーなエクセルって
441デフォルトの名無しさん
2018/03/19(月) 23:08:18.69ID:SfVA8M0M >>440
DLLは自分でいくらでも作れるし、スーパーマリオもDLL化は可能だけど普通はそんなバカなことはやらない
DLLは自分でいくらでも作れるし、スーパーマリオもDLL化は可能だけど普通はそんなバカなことはやらない
442デフォルトの名無しさん
2018/03/20(火) 00:08:55.57ID:w5UAsH4d443デフォルトの名無しさん
2018/03/20(火) 00:13:05.69ID:XeOK7PK4444デフォルトの名無しさん
2018/03/20(火) 01:20:07.81ID:NBntR4Uy はいはい、メゾット君は無視しましょうね〜
445デフォルトの名無しさん
2018/03/20(火) 06:01:07.86ID:w5UAsH4d メゾット野郎はいつも口先ばかりwwwwwwww
違うってんならゲーム作ってみせろ無能wwwwwwwwwww
違うってんならゲーム作ってみせろ無能wwwwwwwwwww
446デフォルトの名無しさん
2018/03/20(火) 08:02:11.84ID:Su8VuYEw ゲームをエクセルで作る意味って何があるの?
447デフォルトの名無しさん
2018/03/20(火) 08:03:53.80ID:TJC60I00 意味は他人に教わるものじゃない
自分で見出すのだ
自分で見出すのだ
448デフォルトの名無しさん
2018/03/20(火) 08:14:23.93ID:mdjnVZmX やろうと思えばできるって言ってもなあ
やってない人が言ってもみたいな
やってない人が言ってもみたいな
449デフォルトの名無しさん
2018/03/20(火) 08:32:50.91ID:Su8VuYEw マリオのゲームってもコントロールしてるわけじゃないでしょ?
ドットに色表示してるだけじゃないの?
ドットに色表示してるだけじゃないの?
450デフォルトの名無しさん
2018/03/20(火) 09:49:54.48ID:uUCQMwFd451デフォルトの名無しさん
2018/03/20(火) 15:10:05.57ID:HXa9qFC5452デフォルトの名無しさん
2018/03/20(火) 16:00:38.63ID:J0Id73NT DLLしたあとインスコするんだったっけ。
453デフォルトの名無しさん
2018/03/20(火) 19:53:45.15ID:FFuoeUFR >>452
同じフォルダに置いておけば使えるだろw
同じフォルダに置いておけば使えるだろw
454デフォルトの名無しさん
2018/03/20(火) 20:20:30.33ID:GZSZ4At9 ボケ殺し
455デフォルトの名無しさん
2018/03/20(火) 22:16:37.59ID:BysB7y8w アスペなんやで
456デフォルトの名無しさん
2018/03/20(火) 22:48:23.28ID:9kggXYDo 質問です。
任意のフォルダ(ThisBookと同じフォルダ)の中にある
xlsファイルの数を取得する方法を考えています。
Dim N as Integer
With CreateObject("Scripting.FileSystemObject")
For Each ff In .GetFolder(ThisWorkbook.Path).Files
If UCase(.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
ネットで調べてみたものの、カウントがされません。
現在対象のフォルダにはxlsファイルが一つあります。
どこを修正すれば良いのでしょうか。
教えてください。
任意のフォルダ(ThisBookと同じフォルダ)の中にある
xlsファイルの数を取得する方法を考えています。
Dim N as Integer
With CreateObject("Scripting.FileSystemObject")
For Each ff In .GetFolder(ThisWorkbook.Path).Files
If UCase(.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
ネットで調べてみたものの、カウントがされません。
現在対象のフォルダにはxlsファイルが一つあります。
どこを修正すれば良いのでしょうか。
教えてください。
457デフォルトの名無しさん
2018/03/20(火) 23:07:13.92ID:BysB7y8w >>456
UCaseの意味をもう一度調べてみれば?
UCaseの意味をもう一度調べてみれば?
458デフォルトの名無しさん
2018/03/20(火) 23:25:24.58ID:qVb9KqM8 Ruby なら、これだけだが
puts Dir.glob('*.txt').size #=> 5
puts Dir.glob('*.txt').size #=> 5
459デフォルトの名無しさん
2018/03/20(火) 23:29:52.36ID:9kggXYDo460デフォルトの名無しさん
2018/03/21(水) 11:16:23.41ID:7pPMZ9pD461デフォルトの名無しさん
2018/03/21(水) 23:19:13.74ID:1JiLJjJR そーゆー感性ってすごく大事
なんとなくだが
なんとなくだが
462デフォルトの名無しさん
2018/03/22(木) 23:48:33.27ID:wY4uz5GL そいうWithの使い方は嫌い
んとなくだが
んとなくだが
463デフォルトの名無しさん
2018/03/23(金) 05:10:41.67ID:fhxmeXqE 寧ろ、with はああいう使い方をすべきなんじゃないの。単なる記述の省略としてだけでなく。
464デフォルトの名無しさん
2018/03/23(金) 07:23:25.20ID:KEQJOoX5 いんや、.NetのUsingみたいに解放は確実に出来るけど
ひとつのスコープにひとつしか使えないし
コーディングに慣れてる人には
一瞬、どこで生成してるの?ってなるから
可読性の見地からイマイチかなと思う
ひとつのスコープにひとつしか使えないし
コーディングに慣れてる人には
一瞬、どこで生成してるの?ってなるから
可読性の見地からイマイチかなと思う
465デフォルトの名無しさん
2018/03/23(金) 07:26:59.80ID:L9ucwTOA 既におなじみの使い方だろうとしか
466デフォルトの名無しさん
2018/03/23(金) 07:47:34.14ID:Kb85u4Z4 withってusingみたいに解放してくれるんだ
Set使うより簡潔にできるのね
Set使うより簡潔にできるのね
467デフォルトの名無しさん
2018/03/23(金) 08:04:55.76ID:FQA7q+b8468デフォルトの名無しさん
2018/03/23(金) 08:12:14.14ID:3JBwFnH8 こんなもんコピペグラマーでもしょっちゅう目にしてるはず
この程度でわかりにくいとか、どんだけ素人だ
ただ、老眼の俺にはドットの見落とし、書き漏らしがちょっと怖い
この程度でわかりにくいとか、どんだけ素人だ
ただ、老眼の俺にはドットの見落とし、書き漏らしがちょっと怖い
469デフォルトの名無しさん
2018/03/23(金) 12:22:12.90ID:5CV31jFy470デフォルトの名無しさん
2018/03/23(金) 18:30:24.67ID:fhxmeXqE471デフォルトの名無しさん
2018/03/23(金) 19:28:31.68ID:L9ucwTOA472デフォルトの名無しさん
2018/03/23(金) 20:26:02.56ID:qUw1cRZJ 無知なのは仕方がないとしてもEnd Withの後にClass_Terminateが呼び出されるのなら
論理的な帰結としてWithがオブジェクトの解放をしているのではないと気がついて欲しかったなあ
論理的な帰結としてWithがオブジェクトの解放をしているのではないと気がついて欲しかったなあ
473デフォルトの名無しさん
2018/03/23(金) 20:32:59.84ID:L9ucwTOA474デフォルトの名無しさん
2018/03/23(金) 20:43:47.72ID:L9ucwTOA それに「無知」とは何のことかな?
非明示的にデストラクトされてもFreeはされない言語があってその事を知らない、という意味かな?
だとしたら知らない
非明示的にデストラクトされてもFreeはされない言語があってその事を知らない、という意味かな?
だとしたら知らない
475デフォルトの名無しさん
2018/03/23(金) 22:16:31.73ID:LTH6T9fs476デフォルトの名無しさん
2018/03/23(金) 22:31:56.84ID:DV5xQmy6 解放の方法が違う程度の事を気にしてたら現場で発狂しまくりだろうなぁ
477デフォルトの名無しさん
2018/03/24(土) 00:04:50.79ID:X8NV5dnx スタイルは大事だから気にするわな。
気にしない奴はバグ増えまくりだ。
現場が忙しくなると崩れて来る。
そして俺のバグも増えるというわけさ。
気にしない奴とは仕事したくないな。
気にしない奴はバグ増えまくりだ。
現場が忙しくなると崩れて来る。
そして俺のバグも増えるというわけさ。
気にしない奴とは仕事したくないな。
478デフォルトの名無しさん
2018/03/24(土) 00:39:44.09ID:TyYpGZwY 解放の方法てwそんなもんないわwww
479デフォルトの名無しさん
2018/03/24(土) 01:08:51.19ID:nM3MUJGs プログラマってどういう大学のでの人たちがやってるんだ?
あんま高学歴のイメージ湧かないんだけど
あんま高学歴のイメージ湧かないんだけど
480デフォルトの名無しさん
2018/03/24(土) 02:40:55.22 Withをネストして内側から外側を参照するにはどうすればいいの?
最悪それ自身のオブジェクトを変数に保持できればいいけどできないよね?
>>456を例にとると(この場合ネストするメリットは何もないけど)
Dim N As Integer
With CreateObject("Scripting.FileSystemObject")
Dim obj As Object
Set obj = .
With .GetFolder(ThisWorkbook.Path)
For Each ff In .Files
If LCase(obj.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
End With
とか
Dim N As Integer
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(ThisWorkbook.Path)
For Each ff In .Files
If LCase(..GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
End With
とか
最悪それ自身のオブジェクトを変数に保持できればいいけどできないよね?
>>456を例にとると(この場合ネストするメリットは何もないけど)
Dim N As Integer
With CreateObject("Scripting.FileSystemObject")
Dim obj As Object
Set obj = .
With .GetFolder(ThisWorkbook.Path)
For Each ff In .Files
If LCase(obj.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
End With
とか
Dim N As Integer
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(ThisWorkbook.Path)
For Each ff In .Files
If LCase(..GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
End With
とか
481470
2018/03/24(土) 02:46:47.80ID:fNSyCTew スマソが、結局>>456のコードにおいて、fileSystemObjectはEnd withのタイミングでfreeされるってことでok?
で、With OpenTextFile()とした場合も同様にcloseされる理解でok?
で、With OpenTextFile()とした場合も同様にcloseされる理解でok?
482デフォルトの名無しさん
2018/03/24(土) 02:53:52.34ID:fNSyCTew483デフォルトの名無しさん
2018/03/24(土) 03:02:44.42 >>481
With New ObjectX
.Exec
End With
は、
Dim obj As ObjectX
Set obj = New ObjectX
obj.Exec
Set obj = Nothing
と同等という理解
根拠となる文献は↓の人が挙げてくれるはず
With New ObjectX
.Exec
End With
は、
Dim obj As ObjectX
Set obj = New ObjectX
obj.Exec
Set obj = Nothing
と同等という理解
根拠となる文献は↓の人が挙げてくれるはず
484デフォルトの名無しさん
2018/03/24(土) 03:12:24.84ID:TyYpGZwY つまりNothingを代入してもオブジェクトが解放されないのと同様にEnd Withでオブジェクトは解放されない
たまたまそこでオブジェクトの参照カウントが0になったから解放されただけ
たまたまそこでオブジェクトの参照カウントが0になったから解放されただけ
485デフォルトの名無しさん
2018/03/24(土) 04:09:07.06ID:fNSyCTew > freeされる
という表現が悪かったか。
Nothing代入と等価ならそれでええです。いずれにせよその類の機能はwithに無いと思っていたので。
ありがとう。
という表現が悪かったか。
Nothing代入と等価ならそれでええです。いずれにせよその類の機能はwithに無いと思っていたので。
ありがとう。
486デフォルトの名無しさん
2018/03/24(土) 05:50:00.67ID:3Pb/XQ// >>484
うん?.Net系と勘違いしてない?
.Net系は確かに参照しているところが無くなればガベージコレクションで解放するけど
VBAや旧VBであるVB6はNothingを入れるとそのObjectそのものが解放される仕組みだと思ったけど
うん?.Net系と勘違いしてない?
.Net系は確かに参照しているところが無くなればガベージコレクションで解放するけど
VBAや旧VBであるVB6はNothingを入れるとそのObjectそのものが解放される仕組みだと思ったけど
487デフォルトの名無しさん
2018/03/24(土) 05:57:47.30ID:Ou2f/XLi 参考までに
With New ObjectX
.Exec
End With
→End Withで解放される
With New ObjectY
.Exec
GoTo Line1
End With
Line1:
→解放されない(関数の最後で解放)
GoTo Line2
With New ObjectZ
Line2:
.Exec
End With
→生成されない(.Execで実行時エラー)
With New ObjectX
.Exec
End With
→End Withで解放される
With New ObjectY
.Exec
GoTo Line1
End With
Line1:
→解放されない(関数の最後で解放)
GoTo Line2
With New ObjectZ
Line2:
.Exec
End With
→生成されない(.Execで実行時エラー)
488デフォルトの名無しさん
2018/03/24(土) 06:08:07.14ID:Ou2f/XLi >>486
仮にClass1で以下のプロパティが定義されているとすると
Public Property Get Self() As Class1
Set Self = Me
End Property
以下のWithで生成されたオブジェクトはEnd Withで解放されない
Dim obj As Class1
With New Class1
Set obj = .Self
End With
仮にClass1で以下のプロパティが定義されているとすると
Public Property Get Self() As Class1
Set Self = Me
End Property
以下のWithで生成されたオブジェクトはEnd Withで解放されない
Dim obj As Class1
With New Class1
Set obj = .Self
End With
489デフォルトの名無しさん
2018/03/24(土) 06:24:23.25ID:3Pb/XQ// >>488
同様にNotingを入れると?
同様にNotingを入れると?
490デフォルトの名無しさん
2018/03/24(土) 08:07:41.90ID:dVRvT3Vm491デフォルトの名無しさん
2018/03/24(土) 08:16:33.84ID:wM3wzjps492デフォルトの名無しさん
2018/03/24(土) 08:21:58.80ID:Ypx42xzO VBA Set Obj = Nothing は必要か
http://thom.hateblo.jp/entry/2015/12/20/135035
http://thom.hateblo.jp/entry/2015/12/20/135035
493デフォルトの名無しさん
2018/03/24(土) 08:41:38.11ID:G40hdKBQ >>484
これでしょ
これでしょ
494デフォルトの名無しさん
2018/03/24(土) 09:04:16.28ID:dVRvT3Vm495デフォルトの名無しさん
2018/03/24(土) 09:33:19.46ID:DtiNFwiJ 俺はオブジェクトにNothingを入れるのを諦めた
プロシージャの途中で条件によりExit Subする時とかまでカバーしようとすると
コードが変な方向にねじ曲がっていく
プロシージャの途中で条件によりExit Subする時とかまでカバーしようとすると
コードが変な方向にねじ曲がっていく
496デフォルトの名無しさん
2018/03/24(土) 09:40:33.58ID:E2uahCPZ >>494
悔しくて草生やした時点でお前の負け
悔しくて草生やした時点でお前の負け
497デフォルトの名無しさん
2018/03/24(土) 10:14:46.87ID:maeX3hx+498デフォルトの名無しさん
2018/03/24(土) 10:19:01.04ID:Ou2f/XLi499デフォルトの名無しさん
2018/03/24(土) 10:33:33.02ID:TyYpGZwY500デフォルトの名無しさん
2018/03/24(土) 10:43:35.46ID:dVRvT3Vm >>496
反論できなくて悔しいね w
反論できなくて悔しいね w
501デフォルトの名無しさん
2018/03/24(土) 10:50:03.59ID:dVRvT3Vm502デフォルトの名無しさん
2018/03/24(土) 10:50:20.70ID:TyYpGZwY >>500
バカはしゃべるな
バカはしゃべるな
503デフォルトの名無しさん
2018/03/24(土) 11:44:41.58ID:D3IeoiHR 「ネストしているときはWithを使えないからネストしないときもWithはやめよう」
↑
これを「一貫性」と呼ぶのか?流石にそういう主張じゃないよな。
↑
これを「一貫性」と呼ぶのか?流石にそういう主張じゃないよな。
504デフォルトの名無しさん
2018/03/24(土) 11:51:46.46ID:Z79Bg+7E ExcelがPythonをネイティブサポートしたら世界はどう変わるか。
505デフォルトの名無しさん
2018/03/24(土) 11:55:52.55ID:3GLZsUhU506デフォルトの名無しさん
2018/03/24(土) 12:03:27.93ID:nM3MUJGs 応用力とは言わないんじゃないの
その場しのぎの対応は、一貫性がないんだよ
その場しのぎの対応は、一貫性がないんだよ
507デフォルトの名無しさん
2018/03/24(土) 12:22:38.50 >>480の汎用的な解ができたよー
【標準モジュール】
Public Function ObjectWrapper(ByRef ObjectRef As Object, Optional ByRef ParentWrapper As ObjectWrapperClass = Nothing) As ObjectWrapperClass
Dim wrapper As ObjectWrapperClass
Set wrapper = New ObjectWrapperClass
Set wrapper.Ref = ObjectRef
Set wrapper.Parent = ParentWrapper
Set ObjectWrapper = wrapper
End Function
【クラスモジュール : ObjectWrapperClass】
Private m_ref As Object
Private m_parent As ObjectWrapperClass
Public Property Set Ref(ByRef ObjectRef As Object)
Set m_ref = ObjectRef
End Property
Public Property Get Ref() As Object
Set Ref = m_ref
End Property
Public Property Set Parent(ByRef ObjectWrapper As ObjectWrapperClass)
Set m_parent = ObjectWrapper
End Property
Public Property Get Parent() As ObjectWrapperClass
Set Parent = m_parent
End Property
Public Property Get Self() As Object
Set Self = Me
End Property
【標準モジュール】
Public Function ObjectWrapper(ByRef ObjectRef As Object, Optional ByRef ParentWrapper As ObjectWrapperClass = Nothing) As ObjectWrapperClass
Dim wrapper As ObjectWrapperClass
Set wrapper = New ObjectWrapperClass
Set wrapper.Ref = ObjectRef
Set wrapper.Parent = ParentWrapper
Set ObjectWrapper = wrapper
End Function
【クラスモジュール : ObjectWrapperClass】
Private m_ref As Object
Private m_parent As ObjectWrapperClass
Public Property Set Ref(ByRef ObjectRef As Object)
Set m_ref = ObjectRef
End Property
Public Property Get Ref() As Object
Set Ref = m_ref
End Property
Public Property Set Parent(ByRef ObjectWrapper As ObjectWrapperClass)
Set m_parent = ObjectWrapper
End Property
Public Property Get Parent() As ObjectWrapperClass
Set Parent = m_parent
End Property
Public Property Get Self() As Object
Set Self = Me
End Property
508デフォルトの名無しさん
2018/03/24(土) 12:24:31.16 >>507の使用例
With ObjectWrapper(CreateObject("Scripting.FileSystemObject"))
With ObjectWrapper(.Ref.GetFolder(ThisWorkbook.Path), .Self)
For Each ff In .Ref.Files
If LCase(.Parent.Ref.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
End With
With ObjectWrapper(CreateObject("Scripting.FileSystemObject"))
With ObjectWrapper(.Ref.GetFolder(ThisWorkbook.Path), .Self)
For Each ff In .Ref.Files
If LCase(.Parent.Ref.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
End With
509デフォルトの名無しさん
2018/03/24(土) 13:02:42.69ID:TyYpGZwY java臭いw
510デフォルトの名無しさん
2018/03/24(土) 15:59:40.14ID:+7wE18C6 1点質問です。
ODBC接続するマイクロソフトクエリ(xxxx.dqy)をエクセルVBA(EXCEL2010)から起動する際、
ユーザとパスワードを自動入力してログインするマクロを作成したいのですが、
どのように記載すればいいでしょうか。詳しい方、ご教示下さい。
宜しくお願い致します。
sub mac()
Workbooks.Open ("C:\TEMP\xxxx.dqy")
'/// ユーザ(abc)、パスワード(p1a#s%s)自動入力
end sub
ODBC接続するマイクロソフトクエリ(xxxx.dqy)をエクセルVBA(EXCEL2010)から起動する際、
ユーザとパスワードを自動入力してログインするマクロを作成したいのですが、
どのように記載すればいいでしょうか。詳しい方、ご教示下さい。
宜しくお願い致します。
sub mac()
Workbooks.Open ("C:\TEMP\xxxx.dqy")
'/// ユーザ(abc)、パスワード(p1a#s%s)自動入力
end sub
511デフォルトの名無しさん
2018/03/24(土) 17:38:17.30ID:H6zN6TQZ512デフォルトの名無しさん
2018/03/24(土) 17:56:47.42ID:fT1SCAXE >>511
それなら今と変わらなくね?
それなら今と変わらなくね?
513デフォルトの名無しさん
2018/03/25(日) 00:20:48.30ID:F9l+1oy/ 勉強して会社エクセルに入れたいんだけどセキュリティ的にどうなのでしょうか?
管理者権限がなくてもできますか?
管理者権限がなくてもできますか?
514デフォルトの名無しさん
2018/03/25(日) 00:27:54.20ID:fDU87IMf >>513
セキュリティ的には完全にアウトだから入れたかったら会社の上司に相談すること
セキュリティ的には完全にアウトだから入れたかったら会社の上司に相談すること
515デフォルトの名無しさん
2018/03/25(日) 00:43:47.76ID:1gqbR9Sf >>513
今の時代にエクセルが入ってない職場ってどういうところなんか気になるな
今の時代にエクセルが入ってない職場ってどういうところなんか気になるな
516デフォルトの名無しさん
2018/03/25(日) 00:44:35.98ID:IZk64w7g なにを入れるんだよw
517デフォルトの名無しさん
2018/03/25(日) 01:05:24.75ID:EWpgF6fF ヒキニートの妄想だろ
518デフォルトの名無しさん
2018/03/25(日) 01:44:51.57ID:U5SlEUJl 日本は中小企業が大部分を占めるのでExcelの需要が大きいんだと思う。
519デフォルトの名無しさん
2018/03/25(日) 01:45:45.66ID:U5SlEUJl 10年以上受け継がれてる見積もりシートとかあるわ。
520デフォルトの名無しさん
2018/03/25(日) 04:17:50.28ID:fDU87IMf 中小企業が大部分なのはどこの国でも同じなんだが
521デフォルトの名無しさん
2018/03/25(日) 04:57:24.72ID:U5SlEUJl >>520
雇用者数に対する中小企業割合は日本では8割、アメリカ、イギリス、ドイツなどで5割程度のようだが、これおそらく生産性に直結してると思う。
資本が集中していない分、日本は競争力が低い。
一方で、中小企業割合が大きいということは、一国一城の主となれる割合が大きいことでもあり、儲からないけど好きなことで飯が食えるという意味では良いことなのかもしれない。
雇用者数に対する中小企業割合は日本では8割、アメリカ、イギリス、ドイツなどで5割程度のようだが、これおそらく生産性に直結してると思う。
資本が集中していない分、日本は競争力が低い。
一方で、中小企業割合が大きいということは、一国一城の主となれる割合が大きいことでもあり、儲からないけど好きなことで飯が食えるという意味では良いことなのかもしれない。
522デフォルトの名無しさん
2018/03/25(日) 05:01:26.01ID:U5SlEUJl ちなみに欧米でも中小企業が8割を占める国があり、イタリアがそうらしいです。
イタリアは職人的な工芸製品のイメージがあり、製品本来の価値よりブランドイメージが先行している感じがする。
そこは見習うべき点かもしれない。
同じものを売るなら高く売ったほうが良いからね。
イタリアは職人的な工芸製品のイメージがあり、製品本来の価値よりブランドイメージが先行している感じがする。
そこは見習うべき点かもしれない。
同じものを売るなら高く売ったほうが良いからね。
523デフォルトの名無しさん
2018/03/25(日) 05:04:38.97ID:U5SlEUJl イタリアのExcel割合を調べてくれたまえ。
524デフォルトの名無しさん
2018/03/25(日) 21:29:27.29ID:jcp+Rd0d 中小とか関係無いだろ。
大企業でExcel入ってない所なんて聞いたこと無いぞ。
大企業でExcel入ってない所なんて聞いたこと無いぞ。
525デフォルトの名無しさん
2018/03/25(日) 22:39:02.13ID:MnBbK5My 大企業はエクセルの他にTableauとかSAPとかSalesforceみたいなの入れてたりするやん
大抵の中小にはエクセルしかない
大抵の中小にはエクセルしかない
526デフォルトの名無しさん
2018/03/25(日) 23:08:52.28ID:jcp+Rd0d527デフォルトの名無しさん
2018/03/25(日) 23:31:43.16ID:IZk64w7g Excelのほかにはちゃんとしたデータベースが導入されていれば
事務部門には必要にして十分だろう
事務部門には必要にして十分だろう
528デフォルトの名無しさん
2018/03/25(日) 23:34:10.07ID:U5SlEUJl Excelの最大の問題点は情報の共有。
日本の大企業がExcelに頼っているならそれが弱点かもしれない。
日本の大企業がExcelに頼っているならそれが弱点かもしれない。
529デフォルトの名無しさん
2018/03/26(月) 00:27:14.12ID:KUO5BBWu >>528
働いたこともないニートが妄想で語るなよ
働いたこともないニートが妄想で語るなよ
530デフォルトの名無しさん
2018/03/26(月) 11:51:23.00ID:I0XgyLKy 情報の共有ってことだと社内データベースが不可欠だけど素人では運用するのが難しい。
このネックはなかなか解消できないのかもね。
開発ツールとかはただでいくらでも手に入るし運用も問題にならない。
ルールで導入できないとかそういうのは自業自得だから。
このネックはなかなか解消できないのかもね。
開発ツールとかはただでいくらでも手に入るし運用も問題にならない。
ルールで導入できないとかそういうのは自業自得だから。
531デフォルトの名無しさん
2018/03/26(月) 12:00:07.22 >>528
Excelの共有機能を使えば万事解決やろ
Excelの共有機能を使えば万事解決やろ
532デフォルトの名無しさん
2018/03/26(月) 12:06:51.37ID:WZ1ZCWjW >>531
無駄だろな。
俺は階層ディレクトリにも疑問を持っているのだが、おそらく理解する人は少ないだろうなあ。
一番被害を被ってるはずのウェブ屋さんが「階層ディレクトリは素晴らしい」と言い張りそうな気がする。
無駄だろな。
俺は階層ディレクトリにも疑問を持っているのだが、おそらく理解する人は少ないだろうなあ。
一番被害を被ってるはずのウェブ屋さんが「階層ディレクトリは素晴らしい」と言い張りそうな気がする。
533デフォルトの名無しさん
2018/03/26(月) 12:08:37.31ID:WZ1ZCWjW 業務用のパッケージソフトってだいたい300万位がエントリーレベルなので、そうおいそれと買い換えられない。
ここもネックになってる。
ここもネックになってる。
534デフォルトの名無しさん
2018/03/26(月) 12:20:45.13ID:I0XgyLKy ただで手に入るSQLSever ExpressとVisual Studio Express で機能的には十分なんだけどね。
運用が難しいってだけじゃなくて、「ツールを導入するのが好きな人」の陰謀なんじゃないかと勘ぐっているw
運用が難しいってだけじゃなくて、「ツールを導入するのが好きな人」の陰謀なんじゃないかと勘ぐっているw
535デフォルトの名無しさん
2018/03/26(月) 13:06:59.27ID:6T2vyhwF 業務用ソフトってのはサポート込みなんだけど
どこの企業でも運良くパソコンオタクが入社して時間を持て余してるわけじゃないんで
データのバックアップから非常用の電源まで、まとめて面倒を見るのは大変だし、いちいち調べて対処するのは効率が悪い
ノウハウを持った会社からパッケージで買った方がずっとコストも安いし対応も早いし安心できる
どこの企業でも運良くパソコンオタクが入社して時間を持て余してるわけじゃないんで
データのバックアップから非常用の電源まで、まとめて面倒を見るのは大変だし、いちいち調べて対処するのは効率が悪い
ノウハウを持った会社からパッケージで買った方がずっとコストも安いし対応も早いし安心できる
536デフォルトの名無しさん
2018/03/26(月) 13:23:21.66ID:0ERRGh/D VBEのコードウインドウの背景色を濃いグレーに変えたのですが、プロシージャの区分線の色も濃いグレーのために背景と同化して見えなくなってしまいました
プロシージャの区分線の色を変更する方法ってありませんか?
プロシージャの区分線の色を変更する方法ってありませんか?
537デフォルトの名無しさん
2018/03/26(月) 13:23:49.36ID:I0XgyLKy538デフォルトの名無しさん
2018/03/26(月) 13:29:25.15ID:WZ1ZCWjW 300万の製品を10年使われると年間30万、月2万5千円だろ。
だったら月2万5千円で最新バージョンが使い続けられるといいのだがな。
アップデートが途中で打ち切られるので未だにXPがあるんだよな。
XPで何でもできるならそれでもいいんだが、新しいソフトはXPサポートしないしな。
300万は微妙すぎる金額だよな。
まあ微妙だからこそ、その価格に集中するんだろうけど。
だったら月2万5千円で最新バージョンが使い続けられるといいのだがな。
アップデートが途中で打ち切られるので未だにXPがあるんだよな。
XPで何でもできるならそれでもいいんだが、新しいソフトはXPサポートしないしな。
300万は微妙すぎる金額だよな。
まあ微妙だからこそ、その価格に集中するんだろうけど。
539デフォルトの名無しさん
2018/03/26(月) 13:31:09.84ID:WZ1ZCWjW 代々受け継がれてるExcelのシートも結構あって、そこで問題になってるのが情報の共有なんだよな。
540デフォルトの名無しさん
2018/03/26(月) 13:56:24.07ID:Fzg6eq8C 小はともかく中規模の事業所はデータの整理も進んできてる
古いデータを必要な物からデータベースに落とし込んで再利用可能にしてる
それをやらないと競争に勝てないんで
古いデータを必要な物からデータベースに落とし込んで再利用可能にしてる
それをやらないと競争に勝てないんで
541デフォルトの名無しさん
2018/03/26(月) 22:38:29.48ID:RlMBpq5I むしろ小規模ならクラウド上に乗っけて
GITとかで管理すればいいんじゃないの?
GITとかで管理すればいいんじゃないの?
542デフォルトの名無しさん
2018/03/27(火) 00:06:28.13ID:i+K8FLsM REST APIをコールしたいんだがVBAだとどんな選択肢がある?
IEインスタンス使う方法以外で
IEインスタンス使う方法以外で
543デフォルトの名無しさん
2018/03/27(火) 07:54:36.52ID:/jbLr42o >>525
その辺のパッケージにマトモなBI作ってない企業は出力したデータをExcelで加工する仕事がある
その辺のパッケージにマトモなBI作ってない企業は出力したデータをExcelで加工する仕事がある
544デフォルトの名無しさん
2018/03/27(火) 08:48:00.11ID:OGHJWfFq >>536
誰もわかんないですか?
誰もわかんないですか?
545デフォルトの名無しさん
2018/03/27(火) 09:00:02.17ID:Rlp7FXcd ID:OGHJWfFq の頭の中では…
なぜ私が質問したのにみんなスルーしてるの!
私が質問したら答えるのが当然でしょ!
答えるのが当然なのに答えないってことは、つまり知らないって事よね!?
↓output
>>544 誰もわかんないですか?
なぜ私が質問したのにみんなスルーしてるの!
私が質問したら答えるのが当然でしょ!
答えるのが当然なのに答えないってことは、つまり知らないって事よね!?
↓output
>>544 誰もわかんないですか?
546デフォルトの名無しさん
2018/03/27(火) 09:52:14.28ID:se4xCVEM547デフォルトの名無しさん
2018/03/27(火) 11:09:50.91ID:nMHUA4Cr >>542
Application.WorksheetFunction.WebService()
Application.WorksheetFunction.WebService()
548デフォルトの名無しさん
2018/03/27(火) 12:10:18.56ID:Z1ln/9g0 >>545
いえ、わかんないの?って感じで煽ったらそれぐらい知ってるわ!ってノリで答えてくれる人が出てくるかなと思いまして
いえ、わかんないの?って感じで煽ったらそれぐらい知ってるわ!ってノリで答えてくれる人が出てくるかなと思いまして
549デフォルトの名無しさん
2018/03/27(火) 12:20:24.49ID:nnyxYnJQ お前ら関係ない事まで答えたがるくせにw
何変ないじり方してんだよw
何変ないじり方してんだよw
550デフォルトの名無しさん
2018/03/27(火) 22:07:01.34ID:8sNHT6Rv Dim c As Byte
For c = 1 To 43
処理
Next c
For c = 43 To 1 Step -1
ここでオーバーフローのエラーになります。cの中身は44でByteの範囲内です。
エラーになる原因を教えてください。
For c = 1 To 43
処理
Next c
For c = 43 To 1 Step -1
ここでオーバーフローのエラーになります。cの中身は44でByteの範囲内です。
エラーになる原因を教えてください。
551デフォルトの名無しさん
2018/03/27(火) 22:46:58.40ID:N/whD29M c = -1
でもオーバーフロー
Byte型にマイナスがだめ
でもオーバーフロー
Byte型にマイナスがだめ
552デフォルトの名無しさん
2018/03/27(火) 22:48:09.36 ケチケチしないでLong使えやwwwww
553デフォルトの名無しさん
2018/03/27(火) 22:48:40.35ID:8sNHT6Rv ありがとうございます。型かえます。
554デフォルトの名無しさん
2018/03/28(水) 03:53:43.79ID:Cdw31wh4 >>553
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
555555
2018/03/28(水) 03:54:06.82ID:Cdw31wh4 555げっち(´・ω・`)b
556デフォルトの名無しさん
2018/03/28(水) 21:27:49.05ID:b61/mHBH557デフォルトの名無しさん
2018/03/28(水) 21:33:27.08ID:fW+sJxWu ぐぐってみたら10年以上前からなんやねんこれってなってる
ttps://www.ozgrid.com/forum/forum/help-forums/excel-general/66761-overflow-error-in-for-loop-stepping-backwards-with-byte
ttps://www.ozgrid.com/forum/forum/help-forums/excel-general/66761-overflow-error-in-for-loop-stepping-backwards-with-byte
558デフォルトの名無しさん
2018/03/28(水) 21:39:46.02ID:b61/mHBH >>557
ありがと。まぁループ変数にByte型を使うなって事で ┐(´д`)┌ヤレヤレ
ありがと。まぁループ変数にByte型を使うなって事で ┐(´д`)┌ヤレヤレ
559デフォルトの名無しさん
2018/03/28(水) 21:48:47.59ID:c16Hwi83 For文の内部処理で-1をバイト型にキャストしようとして詰んでしまってるんじゃなかろうか
560デフォルトの名無しさん
2018/03/28(水) 22:58:28.63ID:b61/mHBH Step -1 の-1をDim c As Byte のByte型に合わせようとしたけど、Byte型では
範囲外 オーバーフローだぞ…と
なるほど
範囲外 オーバーフローだぞ…と
なるほど
561デフォルトの名無しさん
2018/03/28(水) 23:05:20.91ID:qqTeUvjF Variaant型変数を宣言して整数を代入した場合
Dim i
i = 65535
i = i + 1
して65536にしてもオーバーフローエラーにはなりませんでした。
Variant型変数の整数の内部表現はLongが標準なんでしょうか?
Dim i
i = 65535
i = i + 1
して65536にしてもオーバーフローエラーにはなりませんでした。
Variant型変数の整数の内部表現はLongが標準なんでしょうか?
562デフォルトの名無しさん
2018/03/29(木) 01:39:16.45ID:1S4zmkyv >>561
いっぺんヘルプ読んでみ
ttps://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/variant-data-type
いっぺんヘルプ読んでみ
ttps://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/variant-data-type
563デフォルトの名無しさん
2018/03/29(木) 03:39:40.96ID:Vz9b93Ky 急にオートメーションエラーが発生するようになったんだが。。。
564563
2018/03/29(木) 03:47:53.56ID:Vz9b93Ky ググったところ
以下のリンク見て、動くようにはなったが、納得できない感じ
ttps://social.msdn.microsoft.com/Forums/ja-JP/1522c74b-17e7-402d-8a87-2d1a6af1feab/excel-2016?forum=vbajp
Windows Update で動かなくなるとか勘弁
以下のリンク見て、動くようにはなったが、納得できない感じ
ttps://social.msdn.microsoft.com/Forums/ja-JP/1522c74b-17e7-402d-8a87-2d1a6af1feab/excel-2016?forum=vbajp
Windows Update で動かなくなるとか勘弁
565デフォルトの名無しさん
2018/03/29(木) 20:05:15.88ID:YuebNQaY listviewで教えてください
幅を自動調整したい時、ぐぐると「widthプロパティを-1か-2にすべし」と書いてあるのですが、
やってみると「プロパティの値が不正です」とエラーになります。
フォームエディタのプロパティ画面でwidthを直接設定しようとしたら、そもそも「0以上の値を
入力してください」と言われてしまいました。
listviewの仕様が変わるか何かあったのでしょうか。
それとも、実は同名の別のコントロールなのでしょうか。
listview事態は、ツールボックスを右クリックしてその他のコントロールから
Microsoft ListView Control, version 6.0
というのを有効にしています
幅を自動調整したい時、ぐぐると「widthプロパティを-1か-2にすべし」と書いてあるのですが、
やってみると「プロパティの値が不正です」とエラーになります。
フォームエディタのプロパティ画面でwidthを直接設定しようとしたら、そもそも「0以上の値を
入力してください」と言われてしまいました。
listviewの仕様が変わるか何かあったのでしょうか。
それとも、実は同名の別のコントロールなのでしょうか。
listview事態は、ツールボックスを右クリックしてその他のコントロールから
Microsoft ListView Control, version 6.0
というのを有効にしています
566デフォルトの名無しさん
2018/03/30(金) 07:00:19.72ID:r/zfsTLq こんなに詳しいならVBAなんかじゃなくてドットNETに移行したら?
出来る範囲も桁違いに多いし技術的にはVBAとそんなに変わらんじゃん
そう言うわけではないの?
出来る範囲も桁違いに多いし技術的にはVBAとそんなに変わらんじゃん
そう言うわけではないの?
567デフォルトの名無しさん
2018/03/30(金) 07:10:50.00ID:MnRWcQoL568デフォルトの名無しさん
2018/03/30(金) 07:25:23.82ID:r/zfsTLq そうじゃなくてエクセルを使う必要なんてないんじゃないのって事です
.netでもエクセル以上の事も出来るし
エクセルの制約がない分簡単な気がするんだけど
しかもコード的にも少ししか変わらないし
.netでもエクセル以上の事も出来るし
エクセルの制約がない分簡単な気がするんだけど
しかもコード的にも少ししか変わらないし
569デフォルトの名無しさん
2018/03/30(金) 07:55:52.10ID:M36Hc3ht 処理対象がエクセルならvbaのほうが手軽
そうじゃないなら他の言語のほうがいい
とか言いつつ俺はエクセル処理にpowershell使ってるけど
そうじゃないなら他の言語のほうがいい
とか言いつつ俺はエクセル処理にpowershell使ってるけど
570デフォルトの名無しさん
2018/03/30(金) 08:07:18.25ID:O1RjHycM 個人ならいいけど会社だとエクセル使いの方が多いから合わせないとならんしな
スマートで無いやり方をしているのは思いつかないからではなく他に方法がないからなのであって、
その代替手段は「君だけが思いつける冴えたアイディア」ではないんだよ
スマートで無いやり方をしているのは思いつかないからではなく他に方法がないからなのであって、
その代替手段は「君だけが思いつける冴えたアイディア」ではないんだよ
571デフォルトの名無しさん
2018/03/30(金) 08:24:56.25ID:MnRWcQoL >>568
> そうじゃなくてエクセルを使う必要なんてないんじゃないのって事です
お前のところがそう言う環境ならそうすればいい
> .netでもエクセル以上の事も出来るし
Excelを越える操作性を持つアプリを開発できるの?
>>569
> とか言いつつ俺はエクセル処理にpowershell使ってるけど
PowerShellは癖あるけど慣れると楽だよね
Windows 10 に移行して PowerShell 5.0 の class や enum が使えるようになったから嬉しい
と思ってたら Excel も 2013 → 2016 になってて以前のスクリプトがエラーになる...
新年度はまずはこの修正からだな
> そうじゃなくてエクセルを使う必要なんてないんじゃないのって事です
お前のところがそう言う環境ならそうすればいい
> .netでもエクセル以上の事も出来るし
Excelを越える操作性を持つアプリを開発できるの?
>>569
> とか言いつつ俺はエクセル処理にpowershell使ってるけど
PowerShellは癖あるけど慣れると楽だよね
Windows 10 に移行して PowerShell 5.0 の class や enum が使えるようになったから嬉しい
と思ってたら Excel も 2013 → 2016 になってて以前のスクリプトがエラーになる...
新年度はまずはこの修正からだな
572デフォルトの名無しさん
2018/03/30(金) 08:42:59.54ID:+sennHug ExcelはUIとしては優れているじゃないか。
これを利用しない手はない
これを利用しない手はない
573デフォルトの名無しさん
2018/03/30(金) 08:51:55.14ID:GVvaPPCb VisualStudioにOfficeSDKがあるからアプリとして簡単に作れると思うけど
豊富なオプジェクトツールもあるし
スピード速いし制約が少なくて簡単だと思うけどね
まぁ好きなの使えば良いんだけどね
豊富なオプジェクトツールもあるし
スピード速いし制約が少なくて簡単だと思うけどね
まぁ好きなの使えば良いんだけどね
574デフォルトの名無しさん
2018/03/30(金) 11:47:00.45ID:+sennHug 簡単にっていうレベル感によると思うけど、どんなもん?
575デフォルトの名無しさん
2018/03/30(金) 13:28:47.23ID:rW3gxcuW576デフォルトの名無しさん
2018/03/30(金) 13:37:44.27ID:O1RjHycM 簡単に(ただしVisual Studio使用許可を会社に貰う労力は除く)
577デフォルトの名無しさん
2018/03/30(金) 17:44:57.97 Excelは宇宙
578デフォルトの名無しさん
2018/03/30(金) 20:29:10.14ID:Gon83GvH VSのライセンスを事務屋の分まで手配してくれる会社ってどんなところだろうか。
579デフォルトの名無しさん
2018/03/30(金) 20:50:22.47ID:MnRWcQoL >>573
VisualStudio OfficeSDKでググってもOffice Developer Tools(Visual Studio Tools for Office (VSTO))の話とかしか出てこない
お前さんほんとに使ったことある?
VisualStudio OfficeSDKでググってもOffice Developer Tools(Visual Studio Tools for Office (VSTO))の話とかしか出てこない
お前さんほんとに使ったことある?
580デフォルトの名無しさん
2018/03/30(金) 21:08:20.75ID:PhjyEwlD >>568
>しかもコード的にも少ししか変わらないし
お前VB.Net仕事で使ったことないだろ
いくらなんでも舐め過ぎだ
コード的にも少ししか変わらない?
本当にうわべしか見てないのによくそんなことが言えるな
文法的にほぼ同じというだけで
内容的には同じフレームワークのC#とかの方に遥かに近いわ
お前、そんなこと言いながら.Net系の仕事に入ったら一発で首飛ぶぞ
>しかもコード的にも少ししか変わらないし
お前VB.Net仕事で使ったことないだろ
いくらなんでも舐め過ぎだ
コード的にも少ししか変わらない?
本当にうわべしか見てないのによくそんなことが言えるな
文法的にほぼ同じというだけで
内容的には同じフレームワークのC#とかの方に遥かに近いわ
お前、そんなこと言いながら.Net系の仕事に入ったら一発で首飛ぶぞ
581デフォルトの名無しさん
2018/03/30(金) 21:18:35.20ID:gQAlhwsH582デフォルトの名無しさん
2018/03/30(金) 22:28:42.55ID:rpshcViU >>580
なんでそんなに必死なの?
なんでそんなに必死なの?
583デフォルトの名無しさん
2018/03/30(金) 22:41:59.65ID:NsVRzYaI えっと、OpenXMLのことかな?
584デフォルトの名無しさん
2018/03/30(金) 23:23:13.75ID:7HVZnQv9 教えてください。
特定のフォルダの中にxlsファイルが一つと、xlsmファイルがあります。
これはシステムの前提です。
xlsファイルが2つ以上ある場合はエラーが出るよう、以下のように作りました。
ThisPass = ThisWorkbook.Path
With CreateObject("Scripting.FileSystemObject")
For Each ff In .GetFolder(ThisWorkbook.Path).Files
If LCase(.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
If N > 1 Then
MsgBox "xlsファイルが" & N & "個見つかりました。" & vbCrLf & _
"xlsファイルは1ファイルだけおいてください。" & vbCrLf & _
"プログラムを終了します。 "
Application.Quit
ThisWorkbook.Close SaveChanges:=False
End If
質問ですが、
そのフォルダの中に一つだけあるxlsファイル名を取得するには
どうしたら良いでしょうか。
"*.xls"の条件に合うファイル名を返したいです。
特定のフォルダの中にxlsファイルが一つと、xlsmファイルがあります。
これはシステムの前提です。
xlsファイルが2つ以上ある場合はエラーが出るよう、以下のように作りました。
ThisPass = ThisWorkbook.Path
With CreateObject("Scripting.FileSystemObject")
For Each ff In .GetFolder(ThisWorkbook.Path).Files
If LCase(.GetExtensionName(ff.Path)) = "xls" Then N = N + 1
Next
End With
If N > 1 Then
MsgBox "xlsファイルが" & N & "個見つかりました。" & vbCrLf & _
"xlsファイルは1ファイルだけおいてください。" & vbCrLf & _
"プログラムを終了します。 "
Application.Quit
ThisWorkbook.Close SaveChanges:=False
End If
質問ですが、
そのフォルダの中に一つだけあるxlsファイル名を取得するには
どうしたら良いでしょうか。
"*.xls"の条件に合うファイル名を返したいです。
585デフォルトの名無しさん
2018/03/30(金) 23:26:17.70ID:Edi5ddFk Dir関数を使えば良いんじゃないの
586デフォルトの名無しさん
2018/03/30(金) 23:29:47.99ID:BIk3pBCX 既にfso使ってるならそのif分の中でGetBaseNameで取得すりゃいいのでわ
酔っ払ってんのか?
酔っ払ってんのか?
587デフォルトの名無しさん
2018/03/30(金) 23:31:17.74ID:7HVZnQv9588デフォルトの名無しさん
2018/03/30(金) 23:34:41.59 >>584
If 〜 Then N = N + 1 を複数行にして
If 〜 Then
If N = 0 Then strFirstFileName = ff.Name
N = N + 1
End If
にすればいい
If 〜 Then N = N + 1 を複数行にして
If 〜 Then
If N = 0 Then strFirstFileName = ff.Name
N = N + 1
End If
にすればいい
589デフォルトの名無しさん
2018/03/30(金) 23:46:29.02ID:7HVZnQv9590デフォルトの名無しさん
2018/03/31(土) 09:26:07.32ID:H7P83KyH 他のテキストエディタなどで書いたコードをvbeに貼り付けるのってダメなんでしょうか?
ダイアログを表示するのに文字列を直接指定している部分が引っかかっているらしくて
vbeの方で同じ文字列を再度打ち直すと正常に動作してくれるのですが
原因なにかわかりませんか?
ダイアログを表示するのに文字列を直接指定している部分が引っかかっているらしくて
vbeの方で同じ文字列を再度打ち直すと正常に動作してくれるのですが
原因なにかわかりませんか?
591デフォルトの名無しさん
2018/03/31(土) 09:58:16.23ID:XNLdwQIM >>590
ユニコード
ユニコード
592デフォルトの名無しさん
2018/03/31(土) 16:00:53.86ID:H7P83KyH ゴミvbにunicode非対応とかなんでこんなのが現代に君臨してんだろう
ありがとうございました
ありがとうございました
593デフォルトの名無しさん
2018/03/31(土) 16:31:10.15ID:qcKBqECv >>592
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
594デフォルトの名無しさん
2018/04/01(日) 14:16:21.26ID:YzkMtc7h VBAのテキストボックスの .LineCount ってどういう時に使いますか?
595デフォルトの名無しさん
2018/04/01(日) 14:19:52.40ID:YzkMtc7h >>594
というのも、例えばInteger型の変数iに代入しようとして、
i=テキストボックス名.LineCount
ってやると、
実行時エラー '2185':
LineCountプロパティの値を取得できません。このコントロールはフォーカスを持つ必要
があります。SetFocusメソッドによって、このプロパティまたはメソッドが参照されるま
えにフォーカスが移動しました。
ってエラーになったもので。
というのも、例えばInteger型の変数iに代入しようとして、
i=テキストボックス名.LineCount
ってやると、
実行時エラー '2185':
LineCountプロパティの値を取得できません。このコントロールはフォーカスを持つ必要
があります。SetFocusメソッドによって、このプロパティまたはメソッドが参照されるま
えにフォーカスが移動しました。
ってエラーになったもので。
596デフォルトの名無しさん
2018/04/01(日) 16:31:21.48ID:OrI5htLK >>595
さあね、SetFocusとセットで使って問題ないシーンだったら使えばいいんじゃね?
なんでそういう作りになってるかはしらんけど、歴史的な理由ってやつじゃね?
LineCountは全部品共通で使い回してる内部変数を参照していて
フォーカスが当たってるときだけ値を保持してるとか
さあね、SetFocusとセットで使って問題ないシーンだったら使えばいいんじゃね?
なんでそういう作りになってるかはしらんけど、歴史的な理由ってやつじゃね?
LineCountは全部品共通で使い回してる内部変数を参照していて
フォーカスが当たってるときだけ値を保持してるとか
597デフォルトの名無しさん
2018/04/02(月) 00:58:07.54ID:4AdYvMWY Ruby で、Selenium WebDriver で、ブラウザの自動操作をすると、
入力コントロールに入力するには、フォーカスが必要だったかな?
フォーカスは、キーボードなどの入力装置を独占するから、
OS内で同時に、1つのアプリの、1つのコントロールしか持てない
入力コントロールに入力するには、フォーカスが必要だったかな?
フォーカスは、キーボードなどの入力装置を独占するから、
OS内で同時に、1つのアプリの、1つのコントロールしか持てない
598デフォルトの名無しさん
2018/04/02(月) 12:20:32.51ID:7SJzoey2 それは単なるwebdriverの仕様あるいは方針にすぎん
599デフォルトの名無しさん
2018/04/02(月) 13:41:52.74ID:zMeLik1V 誰か教えてください。いくら調べても分からなかった・・・
近似曲線を引くマクロを書いて、ボタンに登録してるのですが、この動作を行うと
1回目の曲線が変な形で残ってしまう。
1回目の曲線を消したいのですが、どうしても消し方がわからない。
Private Sub CommandButton1_Click()
Dim num As Integer
num = MovingAvgUF.TextBox1.Value
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveChart.FullSeriesCollection(1).Trendlines.Add
ActiveChart.FullSeriesCollection(1).Trendlines(1).Select
With Selection
.Type = xlMovingAvg
.Period = num
End With
With Selection.Format.Line
.ForeColor.RGB = RGB(0, 0, 0)
.Weight = 1.5
End With
Unload MovingAvgUF
Range("A3").Select
End Sub
近似曲線を引くマクロを書いて、ボタンに登録してるのですが、この動作を行うと
1回目の曲線が変な形で残ってしまう。
1回目の曲線を消したいのですが、どうしても消し方がわからない。
Private Sub CommandButton1_Click()
Dim num As Integer
num = MovingAvgUF.TextBox1.Value
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveChart.FullSeriesCollection(1).Trendlines.Add
ActiveChart.FullSeriesCollection(1).Trendlines(1).Select
With Selection
.Type = xlMovingAvg
.Period = num
End With
With Selection.Format.Line
.ForeColor.RGB = RGB(0, 0, 0)
.Weight = 1.5
End With
Unload MovingAvgUF
Range("A3").Select
End Sub
600デフォルトの名無しさん
2018/04/02(月) 16:44:10.21ID:Ts/JiFXW >>599
実行のたびにAddしているので、新しく追加されているからでしょう
たぶん移動平均の期間を可変にしたいのだろうから
ない場合だけAdd、すでにあれば既存のパラメーターを変更するようにする
あとActivateとかSelectionは無駄なのでやめる
Dim num As Integer
Dim graph
num = MovingAvgUF.TextBox1.Value
Set graph= Worksheets(1).ChartObjects(1).Chart.SeriesCollection(1)
If graph.Trendlines.Count = 0 Then
With graph.Trendlines.Add
.Type = xlMovingAvg
.Period = num
.Format.Line.ForeColor.RGB = RGB(100, 0, 0)
.Format.Line.Weight = 1.5
End With
Else
graph.Trendlines(1).Period = num
End If
Unload MovingAvgUF
これでどうでしょう
グラフ指定(Set句のところ)はそっちの環境に合わせて書き換えてね
実行のたびにAddしているので、新しく追加されているからでしょう
たぶん移動平均の期間を可変にしたいのだろうから
ない場合だけAdd、すでにあれば既存のパラメーターを変更するようにする
あとActivateとかSelectionは無駄なのでやめる
Dim num As Integer
Dim graph
num = MovingAvgUF.TextBox1.Value
Set graph= Worksheets(1).ChartObjects(1).Chart.SeriesCollection(1)
If graph.Trendlines.Count = 0 Then
With graph.Trendlines.Add
.Type = xlMovingAvg
.Period = num
.Format.Line.ForeColor.RGB = RGB(100, 0, 0)
.Format.Line.Weight = 1.5
End With
Else
graph.Trendlines(1).Period = num
End If
Unload MovingAvgUF
これでどうでしょう
グラフ指定(Set句のところ)はそっちの環境に合わせて書き換えてね
601デフォルトの名無しさん
2018/04/02(月) 17:15:58.69ID:zMeLik1V602デフォルトの名無しさん
2018/04/03(火) 12:12:56.67ID:eJeJFdNC VB6で計算ボタンをボタンを押すと各フォームのテキストボックスの値とか使っていろいろ自動で計算してフォームが勝手に閉じられるんですが、デバッグで1個ずつ追ってくと途中で止まってしまうのって仕方ないんですかね?
gotfocusやらclickとかで途中で無理やりやってるとは思うですけど、通る順序を追うにはどうしたらいいですか?
gotfocusやらclickとかで途中で無理やりやってるとは思うですけど、通る順序を追うにはどうしたらいいですか?
603デフォルトの名無しさん
2018/04/03(火) 13:11:49.11ID:Coyy9Cz8 VB6
604デフォルトの名無しさん
2018/04/03(火) 21:25:59.19ID:q0sRpwvy A1とB1は空白C1からZ1まで日付型がはいっています。
3月分の最後
20180330と2018331がないので20180328を拾いたい。
4月分の初め
20180401と20180402が無いので20180403を拾いたい。
日付型------------------------------
空白 (A1)
空白 (B1)
20180325(C1)
20180326(D1)
20180328(E1)
20180403(F1)
20180405(G1)
20180406(H1)
・
・
・
20180505
------------------------------------------
Sub 日付
Dim 最小数 As long, 最大数 As long
最小数= WotksheetFunction.Dmin(Rnge("1:1"),range("C1"),"200180401")
最大数= WotksheetFunction.Dmin(Rnge("1:1"),range("C1"),"200180331")
End Sub
----------------------------------------
これだとうまくいかない・・・・。
何か間違っているのでしょか・・・?
3月分の最後
20180330と2018331がないので20180328を拾いたい。
4月分の初め
20180401と20180402が無いので20180403を拾いたい。
日付型------------------------------
空白 (A1)
空白 (B1)
20180325(C1)
20180326(D1)
20180328(E1)
20180403(F1)
20180405(G1)
20180406(H1)
・
・
・
20180505
------------------------------------------
Sub 日付
Dim 最小数 As long, 最大数 As long
最小数= WotksheetFunction.Dmin(Rnge("1:1"),range("C1"),"200180401")
最大数= WotksheetFunction.Dmin(Rnge("1:1"),range("C1"),"200180331")
End Sub
----------------------------------------
これだとうまくいかない・・・・。
何か間違っているのでしょか・・・?
605デフォルトの名無しさん
2018/04/03(火) 21:46:25.59ID:UZjK1Wan 何がしたいのか説明を読んでもコードを見てもさっぱりわからん
わからんけどエスパーすると”201803”で検索して最後に見つかったセルと”201804”で検索して最初に見つかったセルでいいんじゃないの?
わからんけどエスパーすると”201803”で検索して最後に見つかったセルと”201804”で検索して最初に見つかったセルでいいんじゃないの?
606デフォルトの名無しさん
2018/04/04(水) 08:15:37.03ID:cLM6HPyb607デフォルトの名無しさん
2018/04/04(水) 11:56:03.28ID:k8docH3r MID("20180325",5,2)で"03"が取り出せるから、それで判断すればいいんじゃないの。
色んな日付上の制約があるならLEFT(),MID(),RIGHT()使い分けで。
色んな日付上の制約があるならLEFT(),MID(),RIGHT()使い分けで。
608デフォルトの名無しさん
2018/04/04(水) 12:58:19.17ID:ZiMW+8i0 >>607
ありがとうございます。
その方法がありましたね・・・。
勉強になります。
------------------------------------------------------------
関数
{=MIN(IF(20180201<=1:1,1:1,""))}
{=MAX(IF(20180231>=1:1,1:1,""))}
これだとうまく行きますが、VBAだとどうやって作るのかなと思っていました。
ありがとうございます。
その方法がありましたね・・・。
勉強になります。
------------------------------------------------------------
関数
{=MIN(IF(20180201<=1:1,1:1,""))}
{=MAX(IF(20180231>=1:1,1:1,""))}
これだとうまく行きますが、VBAだとどうやって作るのかなと思っていました。
609デフォルトの名無しさん
2018/04/04(水) 13:11:13.67ID:A+wsnEra 素直にfor回せ
610デフォルトの名無しさん
2018/04/04(水) 13:19:04.73ID:ZhVuw5lC611デフォルトの名無しさん
2018/04/04(水) 13:36:26.96ID:p0Y8un4q 自動車業界で例えると
1、トヨタ、日産、ホンダ
2、1の下請け企業名
3、2の下請け企業名
4、3の下請け企業名
.
.
.
としたとき、2のAの企業名を入力したらそこからの下請け企業を抽出したいんですが、その場合のエクセルのシートの作り方をどのように作れば効率がいいですか?
1、トヨタ、日産、ホンダ
2、1の下請け企業名
3、2の下請け企業名
4、3の下請け企業名
.
.
.
としたとき、2のAの企業名を入力したらそこからの下請け企業を抽出したいんですが、その場合のエクセルのシートの作り方をどのように作れば効率がいいですか?
612デフォルトの名無しさん
2018/04/04(水) 16:08:01.72ID:v9gnJiNk シートAAAにあるテーブル1の種目という項目のデータを
ComboBox1のリストに代入するのは下記マクロでできました
Private Sub UserForm_Initialize()
Dim KV As Range
Set KV = Sheets("AAA").Range("テーブル1[種目]")
With ComboBox1
For i = 1 To KV.Rows.Count
.AddItem KV(i)
Next i
End With
End Sub
さて、ここからが質問です
テーブル1にフィルターをかけた後に、フィルターで残った種目という項目のデータを
ComboBox1のリストに代入するのはどうしたら良いのでしょうか?
よろしくお願い致します
ComboBox1のリストに代入するのは下記マクロでできました
Private Sub UserForm_Initialize()
Dim KV As Range
Set KV = Sheets("AAA").Range("テーブル1[種目]")
With ComboBox1
For i = 1 To KV.Rows.Count
.AddItem KV(i)
Next i
End With
End Sub
さて、ここからが質問です
テーブル1にフィルターをかけた後に、フィルターで残った種目という項目のデータを
ComboBox1のリストに代入するのはどうしたら良いのでしょうか?
よろしくお願い致します
613デフォルトの名無しさん
2018/04/04(水) 16:56:39.61ID:JVI42cK6 伝票番号 顧客名 商品名 数量 価格 金額
というデータがあり、同じ伝票番号に3〜6行の取引データがあります
(1枚の伝票に複数の商品の販売記録がある)
同じ伝票番号の行を、1行残して削除し、1伝票番号に1行というデータに作り替えたいと考えてます。
対象となる行数は50万行
今は、ある伝票番号の一番上の次の行と
その伝票番号の一番下の行を範囲で削除し、
この処理を繰り返しているのですが、とても時間がかかります
どういう方法なら早く処理できるでしょうか?
というデータがあり、同じ伝票番号に3〜6行の取引データがあります
(1枚の伝票に複数の商品の販売記録がある)
同じ伝票番号の行を、1行残して削除し、1伝票番号に1行というデータに作り替えたいと考えてます。
対象となる行数は50万行
今は、ある伝票番号の一番上の次の行と
その伝票番号の一番下の行を範囲で削除し、
この処理を繰り返しているのですが、とても時間がかかります
どういう方法なら早く処理できるでしょうか?
614デフォルトの名無しさん
2018/04/04(水) 17:13:35.91ID:2HxBBF0q615デフォルトの名無しさん
2018/04/04(水) 17:27:12.13ID:2HxBBF0q >>613
単純に重複を削除したいだけでしょうか?
ぶら下がってるデータを1つにまとめつつでしょうか?
単純に重複削除ならフィルターでできたはず
もしくはRemoveDuplicatesというメソッドで
つかい方はこちら
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-removeduplicates-method-excel
単純に重複を削除したいだけでしょうか?
ぶら下がってるデータを1つにまとめつつでしょうか?
単純に重複削除ならフィルターでできたはず
もしくはRemoveDuplicatesというメソッドで
つかい方はこちら
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-removeduplicates-method-excel
616デフォルトの名無しさん
2018/04/04(水) 18:13:35.11ID:JVI42cK6617デフォルトの名無しさん
2018/04/08(日) 00:48:16.79ID:GhjqeU3J 質問です。
Dim Wb2 As Workbook
buf = Dir(ThisPass & "\" & strfirstfilename)
Do While Len(buf) > 0
If LCase(buf) Like "*.xls" Then
buf2 = Left(buf, InStrRev(buf, ".") - 1)
End If
buf = Dir()
Loop
Set Wb2 = Workbooks(strfirstfilename) ←”インデックスが有効範囲にありません”
というエラーが発生します。
strfirstfilenameには”AAA_original-コピー.xls”が入っており、ここまではOKです。
なぜインデックスが有効範囲にないのか・・・。
どなたか教えてください。
よろしくお願いします。
Dim Wb2 As Workbook
buf = Dir(ThisPass & "\" & strfirstfilename)
Do While Len(buf) > 0
If LCase(buf) Like "*.xls" Then
buf2 = Left(buf, InStrRev(buf, ".") - 1)
End If
buf = Dir()
Loop
Set Wb2 = Workbooks(strfirstfilename) ←”インデックスが有効範囲にありません”
というエラーが発生します。
strfirstfilenameには”AAA_original-コピー.xls”が入っており、ここまではOKです。
なぜインデックスが有効範囲にないのか・・・。
どなたか教えてください。
よろしくお願いします。
618デフォルトの名無しさん
2018/04/08(日) 01:24:05.18ID:bco3gmLh >>617
ワークブックファイルを開いてないから
ワークブックファイルを開いてないから
619デフォルトの名無しさん
2018/04/08(日) 02:53:42.68ID:SzguuQfE >>617
ファイルシステムの場所を示す「パス」はpassじゃなくてpathだよ
ファイルシステムの場所を示す「パス」はpassじゃなくてpathだよ
620デフォルトの名無しさん
2018/04/08(日) 07:04:38.01ID:U7ChR0a6 まとめるとこう
Set Wb2 = Workbooks.Open(ThisWorkbook.Path & "\" & strfirstfilename)
Set Wb2 = Workbooks.Open(ThisWorkbook.Path & "\" & strfirstfilename)
621デフォルトの名無しさん
2018/04/08(日) 11:56:26.77ID:GhjqeU3J622デフォルトの名無しさん
2018/04/08(日) 11:57:47.06ID:GhjqeU3J623デフォルトの名無しさん
2018/04/08(日) 11:59:21.51ID:GhjqeU3J >>620
このプログラムの直後に
Workbooks.Open (ThisPath & "\" & strfirstfilename)
があったので、それをsetの前に持ってきて成功しました。
ありがとうございました。
このプログラムの直後に
Workbooks.Open (ThisPath & "\" & strfirstfilename)
があったので、それをsetの前に持ってきて成功しました。
ありがとうございました。
624デフォルトの名無しさん
2018/04/08(日) 12:36:53.53ID:bco3gmLh >>620だと昔のExcelじゃ動かなかった歴史的経緯がある
625デフォルトの名無しさん
2018/04/08(日) 19:54:17.74ID:e7Arryer ダイアログシートって使ってる人おる?
ちょっと前客先で初めて見てたまげたわ
ちょっと前客先で初めて見てたまげたわ
626デフォルトの名無しさん
2018/04/09(月) 01:50:27.33ID:HvlaoHdk >>624
openだと開かない?って事??何故?
openだと開かない?って事??何故?
627デフォルトの名無しさん
2018/04/09(月) 06:17:53.49ID:aBFApcbH628デフォルトの名無しさん
2018/04/09(月) 08:06:45.50ID:+GOKj8c/629デフォルトの名無しさん
2018/04/09(月) 09:59:01.14ID:4rd3h0yy 質問です。
ピボットテーブルのフィルターで特定の日付を絞りこみたいのですがどうしたら良いでしょうか?
マクロの記録を使用したり、「ピボットテーブル フィルター 日付」などで検索しましたが出来ませんでした。
関係があるかはわかりませんが既存の日付フィルターも選択出来ない状態になっています。
ご存知の方がいれば教えていただけないでしょうか?
よろしくお願いいたします。
ピボットテーブルのフィルターで特定の日付を絞りこみたいのですがどうしたら良いでしょうか?
マクロの記録を使用したり、「ピボットテーブル フィルター 日付」などで検索しましたが出来ませんでした。
関係があるかはわかりませんが既存の日付フィルターも選択出来ない状態になっています。
ご存知の方がいれば教えていただけないでしょうか?
よろしくお願いいたします。
630デフォルトの名無しさん
2018/04/09(月) 10:59:34.52ID:0O8XR8PB 質問です とか 教えてで始まる質問をするのは厚かましい馬鹿ばっか
631デフォルトの名無しさん
2018/04/09(月) 12:37:19.47ID:VtsYOpX+ そーいうスレなので
632デフォルトの名無しさん
2018/04/09(月) 19:03:54.95ID:L4YqDawe >>629
それはもしかしてピボットテーブルを使わなくても出来る内容なんじゃないかと思えてならない
それはもしかしてピボットテーブルを使わなくても出来る内容なんじゃないかと思えてならない
633デフォルトの名無しさん
2018/04/09(月) 19:30:20.73ID:zGBk1vsP >>632
返信ありがとうございます。
仕事で使用しているのですが別シートにデータを入力して、ピボットテーブルの行エリアに型式、列エリアに出荷日と納品先を指定していて、翌日出荷分などを抽出したい状態です。
返信ありがとうございます。
仕事で使用しているのですが別シートにデータを入力して、ピボットテーブルの行エリアに型式、列エリアに出荷日と納品先を指定していて、翌日出荷分などを抽出したい状態です。
634デフォルトの名無しさん
2018/04/09(月) 20:11:24.02ID:p9GpoA3a635デフォルトの名無しさん
2018/04/09(月) 20:49:14.80ID:0O8XR8PB な?厚かましい馬鹿だろ?
636デフォルトの名無しさん
2018/04/09(月) 20:53:05.38ID:xfuEg0jA 過疎るより良くね?
嫌ならスルーしてれば?
嫌ならスルーしてれば?
637デフォルトの名無しさん
2018/04/09(月) 22:14:46.27ID:BolAIQzl デバッグ停止した時をイベントとして動く仕掛けが欲しい
画面描画更新抑止解除とか書くの面倒
画面描画更新抑止解除とか書くの面倒
638デフォルトの名無しさん
2018/04/10(火) 02:11:50.06ID:uEuHjy2e >>637
しょっちゅうやらかすんならIMEに単語登録しといてイミディエイトウィンドウで実行
しょっちゅうやらかすんならIMEに単語登録しといてイミディエイトウィンドウで実行
639デフォルトの名無しさん
2018/04/10(火) 07:54:34.58ID:4h5TWJMH >>633
フィルターだか、スライサーだかで普通に出来なかったっけ?
出来ないならなんか設定がおかしいと思う。
まずはデータピックアップして、小規模のデータで試してみたら。
あと、スレチな上に質問レベルも低いからその程度のことはもっと自分で調べるくせをつけた方がいい。
フィルターだか、スライサーだかで普通に出来なかったっけ?
出来ないならなんか設定がおかしいと思う。
まずはデータピックアップして、小規模のデータで試してみたら。
あと、スレチな上に質問レベルも低いからその程度のことはもっと自分で調べるくせをつけた方がいい。
640デフォルトの名無しさん
2018/04/10(火) 09:38:25.63ID:GHxbWUjO ブックやシートの構成がどうなっていて、どうしたいのかさっぱり判らんから
テスト用のデータを付けたブックをうpしたほうが早い。
んで、自分は何処まで出来たのかをも付けて
そしたら、それに対して少しはレスが付くかもだなw
テスト用のデータを付けたブックをうpしたほうが早い。
んで、自分は何処まで出来たのかをも付けて
そしたら、それに対して少しはレスが付くかもだなw
641デフォルトの名無しさん
2018/04/10(火) 09:44:16.04ID:HFEk8tOo 「VBA」
642デフォルトの名無しさん
2018/04/10(火) 09:46:10.36ID:3MvS74tV >>639
答えたくないなら黙ってればいいだけ
答えたくないなら黙ってればいいだけ
643デフォルトの名無しさん
2018/04/10(火) 15:14:24.81ID:M/3om7RN 姉VBAのリリースはよ(´・ω・`)b
644デフォルトの名無しさん
2018/04/10(火) 18:59:46.71ID:nvaLZrjf >>639
ここで聞くこともネットで調べる事の一つ
ここで聞くこともネットで調べる事の一つ
645デフォルトの名無しさん
2018/04/10(火) 19:03:28.83ID:v03YChI+ 自分がログインした環境で開く全てのブックに右クリックメニューを追加する方法教えて
646デフォルトの名無しさん
2018/04/10(火) 19:11:15.95ID:IhLaWa2X googleはエスパーしてくれないからな。ここなら大体何をやりたいか汲んで答えてくれるだろうと。
オレなら、まずジュンク堂に行ってエクセル関連本を片っ端から立ち読みして自分の欲しているモノが書いてある
本を買うね。その結果、「なんだ、簡単じゃねえか本買って損した」となったとしてもそれが血になり肉となるって事だよな。
オレなら、まずジュンク堂に行ってエクセル関連本を片っ端から立ち読みして自分の欲しているモノが書いてある
本を買うね。その結果、「なんだ、簡単じゃねえか本買って損した」となったとしてもそれが血になり肉となるって事だよな。
647デフォルトの名無しさん
2018/04/10(火) 19:31:57.73ID:xK9q0OHZ バカだからエクセル本を読むのかエクセル本を読んだからバカになったのか
それが問題だ
それが問題だ
648デフォルトの名無しさん
2018/04/10(火) 20:18:58.96ID:IhLaWa2X649デフォルトの名無しさん
2018/04/10(火) 20:51:24.91ID:BQLlMX/b650デフォルトの名無しさん
2018/04/10(火) 20:57:33.15ID:HFEk8tOo そもそもVBAの質問じゃないし
VBAの意味すらわからん馬鹿か、無視して書き込んでくる奴なんだろ
VBAの意味すらわからん馬鹿か、無視して書き込んでくる奴なんだろ
651デフォルトの名無しさん
2018/04/10(火) 22:56:03.73ID:xK9q0OHZ >>647
今回は「バカだからエクセル本を読んだ」が正解の模様
今回は「バカだからエクセル本を読んだ」が正解の模様
652↑
2018/04/11(水) 03:04:58.26ID:VWbEhKN2 貧乏バカチョンキムジジイ
653デフォルトの名無しさん
2018/04/11(水) 07:57:48.69ID:Mg2+VUZu ところで、VBAのPython対応っていつからの話なの?
654デフォルトの名無しさん
2018/04/11(水) 08:03:17.65 >>653
2045年から
2045年から
655デフォルトの名無しさん
2018/04/11(水) 08:07:42.93ID:xXxwVMfw 機械学習でpython3やりまくってるワシは生き残れるのかのう?
ちなみに丙午です
ちなみに丙午です
656デフォルトの名無しさん
2018/04/11(水) 18:17:41.89ID:e7qNRsJ3 >>645
アドインとCustomUI勉強してみな
アドインとCustomUI勉強してみな
657デフォルトの名無しさん
2018/04/12(木) 01:31:14.47ID:fKA+nAAm 最近VBAを触り始めて、言語と言われてる理由がなんとなく分かったんだけど
これを習っていった時に、せけんて"難しい"と言われるのはどういう部分になるんだろう?
作業を
これを習っていった時に、せけんて"難しい"と言われるのはどういう部分になるんだろう?
作業を
658デフォルトの名無しさん
2018/04/12(木) 01:32:05.63ID:fKA+nAAm うーん、途中送信しちゃった
出直してきます
おやすみなさい
出直してきます
おやすみなさい
659デフォルトの名無しさん
2018/04/12(木) 01:34:09.14ID:QnlWRFoV 知恵遅れ馬鹿の日記帳かよ
660デフォルトの名無しさん
2018/04/12(木) 03:57:20.29ID:LcBy+9MJ >>657
プログラミングが初めてなら、何もかも難しいと感じるだろうし、
他のプログラミング言語が1つだけ使える人にとっては、その言語とVBAの文法などの違いにいちいち驚く
複数の言語が使える人なら、Excel固有のオブジェクト階層あたりを面倒と感じるんじゃないかな
プログラミングが初めてなら、何もかも難しいと感じるだろうし、
他のプログラミング言語が1つだけ使える人にとっては、その言語とVBAの文法などの違いにいちいち驚く
複数の言語が使える人なら、Excel固有のオブジェクト階層あたりを面倒と感じるんじゃないかな
661デフォルトの名無しさん
2018/04/12(木) 05:30:51.69ID:JtsPqpHF >>659
自己紹介ですかBasic爺WW
自己紹介ですかBasic爺WW
662デフォルトの名無しさん
2018/04/12(木) 07:02:33.85ID:UMpPjY/U 例えば一つのテキストファイルを扱う時のパス?アドレス?ってどうやって扱ってます?
2つ以上のモジュールで使う場合ってやっぱグローバル?
2つ以上のモジュールで使う場合ってやっぱグローバル?
663デフォルトの名無しさん
2018/04/12(木) 07:07:34.20664デフォルトの名無しさん
2018/04/12(木) 08:50:34.23ID:DGaLRDsY665デフォルトの名無しさん
2018/04/12(木) 11:40:14.81ID:LcBy+9MJ666デフォルトの名無しさん
2018/04/12(木) 13:54:18.13ID:MHmA0cf+667デフォルトの名無しさん
2018/04/12(木) 20:17:01.21ID:CCj06eku 質問です。
条件付き書式でやろうと思ってましたが、データが10,000行になったため、VBAを使いたいと思います。
例えば、
データ範囲をRange("A1:Z100")として、
A1に入力された数値が1だったらA1からZ1を赤色にする、
A1に入力された数値が2だったら黄色、
A1に入力された数値が3だったら青色、という風にするにはどうしたらよいでしょうか?
A列に入力される文字は1〜8の数値のみです。
コマンドボタンを押したときに一気に処理をしたいのですが、
A1が1ならA1からZ1の色を変える、というのがわかりません。
どなたかご教授いただけないでしょうか。
よろしくお願いします。
条件付き書式でやろうと思ってましたが、データが10,000行になったため、VBAを使いたいと思います。
例えば、
データ範囲をRange("A1:Z100")として、
A1に入力された数値が1だったらA1からZ1を赤色にする、
A1に入力された数値が2だったら黄色、
A1に入力された数値が3だったら青色、という風にするにはどうしたらよいでしょうか?
A列に入力される文字は1〜8の数値のみです。
コマンドボタンを押したときに一気に処理をしたいのですが、
A1が1ならA1からZ1の色を変える、というのがわかりません。
どなたかご教授いただけないでしょうか。
よろしくお願いします。
668デフォルトの名無しさん
2018/04/12(木) 20:26:52.62ID:ueTcTtIU >>667
全くわからないから全部教えろってこと?
全くわからないから全部教えろってこと?
669デフォルトの名無しさん
2018/04/12(木) 20:34:28.91ID:CCj06eku >>668
i = Ws2.Range("A10").End(xlDown).Row
With Worksheets("Sheet1").Range(Cells(9, 1), Cells(i, 28))
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A9=1"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.TintAndShade = 0.399945066682943
.Color = 13408767
End With
という条件付き書式のコードを考えましたが、これ以外の方法をさがしています。
A1が1ならA1からZ1の色を変える、というのが本当にわからないので、
ヒントだけでもいただけないかと・・・。
i = Ws2.Range("A10").End(xlDown).Row
With Worksheets("Sheet1").Range(Cells(9, 1), Cells(i, 28))
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A9=1"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.TintAndShade = 0.399945066682943
.Color = 13408767
End With
という条件付き書式のコードを考えましたが、これ以外の方法をさがしています。
A1が1ならA1からZ1の色を変える、というのが本当にわからないので、
ヒントだけでもいただけないかと・・・。
670デフォルトの名無しさん
2018/04/12(木) 21:15:46.98ID:JtsPqpHF >>669
よく、ネットや書籍で「マクロの記録で生成されたコードを基にほにゃららしよう」ってな記事を見かけるけど、
あんまり良くない方法な気がする。最初は退屈でも我慢してマトモな入門書を見ながら基礎をやった方がいい。
よく、ネットや書籍で「マクロの記録で生成されたコードを基にほにゃららしよう」ってな記事を見かけるけど、
あんまり良くない方法な気がする。最初は退屈でも我慢してマトモな入門書を見ながら基礎をやった方がいい。
671デフォルトの名無しさん
2018/04/12(木) 21:19:08.35ID:c/dN7gKJ 10万件以上のデータ処理にはアクセスを推奨
それぞれに得意分野があるのだから使い分けなさい
エクセルVBAがらアクセスデータを引っ張る
でデータをエクセル側で計算なり加工なり表なりをやるのが良い
それぞれに得意分野があるのだから使い分けなさい
エクセルVBAがらアクセスデータを引っ張る
でデータをエクセル側で計算なり加工なり表なりをやるのが良い
672デフォルトの名無しさん
2018/04/12(木) 21:36:24.97ID:CCj06eku673デフォルトの名無しさん
2018/04/12(木) 21:36:49.41ID:ueTcTtIU674デフォルトの名無しさん
2018/04/12(木) 23:53:14.20ID:J/s3hdBh ごらん。てwww
ソープのキモ客かよwwww
ソープのキモ客かよwwww
675デフォルトの名無しさん
2018/04/13(金) 00:00:04.74ID:5acpPh4/ メゾット君はソープとか行く上に嬢に対して「考えてごらん」とかリアルに言い出すのか。それはキモいな。
676デフォルトの名無しさん
2018/04/13(金) 00:08:44.43ID:HKlJ1iBx >>675←ごらんて言った覚えがあるソープ通www
677デフォルトの名無しさん
2018/04/13(金) 01:03:21.93ID:qS+KnG2r 風俗でなければ女性に相手してもらえないキモデブか
678デフォルトの名無しさん
2018/04/13(金) 01:12:37.40ID:yZAZeFsH ごらんと言われたからというわけではないですが、作ってみました。
Dim iro As Long
Workbooks("test.xlsm").Worksheets("sheet1").Activate
For iro = 10 To i
If Cells(iro, 1) = 1 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 33
ElseIf Cells(iro, 1) = 2 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 34
ElseIf Cells(iro, 1) = 3 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 35
ElseIf Cells(iro, 1) = 4 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 36
ElseIf Cells(iro, 1) = 5 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 37
ElseIf Cells(iro, 1) = 6 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 38
ElseIf Cells(iro, 1) = 7 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 39
ElseIf Cells(iro, 1) = 8 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 40
End If
Next iro
なんだか長いコードになってしまいました・・・。
すっきり出来ると良いのですけど、今はこれが限界。
ありがとうございました。
Dim iro As Long
Workbooks("test.xlsm").Worksheets("sheet1").Activate
For iro = 10 To i
If Cells(iro, 1) = 1 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 33
ElseIf Cells(iro, 1) = 2 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 34
ElseIf Cells(iro, 1) = 3 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 35
ElseIf Cells(iro, 1) = 4 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 36
ElseIf Cells(iro, 1) = 5 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 37
ElseIf Cells(iro, 1) = 6 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 38
ElseIf Cells(iro, 1) = 7 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 39
ElseIf Cells(iro, 1) = 8 Then
Range(Cells(iro, 1), Cells(iro, 28)).Interior.ColorIndex = 40
End If
Next iro
なんだか長いコードになってしまいました・・・。
すっきり出来ると良いのですけど、今はこれが限界。
ありがとうございました。
679デフォルトの名無しさん
2018/04/13(金) 02:00:10.76ID:0w2hy+Vf680デフォルトの名無しさん
2018/04/13(金) 06:43:49.41ID:YdugUaFV ごらんってソープ用語なの?
681デフォルトの名無しさん
2018/04/13(金) 07:43:37.15ID:bN+8cQpR $('tr:first > td').css('background-color','orange');
JavaScript のjQuery なら、これで、
表の1行目(tr)のすべての列(td)の、背景色を変更できる
JavaScript のjQuery なら、これで、
表の1行目(tr)のすべての列(td)の、背景色を変更できる
682デフォルトの名無しさん
2018/04/13(金) 09:50:34.75ID:qS+KnG2r >>681
で?馬鹿は黙っていればいいのに
で?馬鹿は黙っていればいいのに
683デフォルトの名無しさん
2018/04/13(金) 11:21:39.81ID:/3lEd5QR684デフォルトの名無しさん
2018/04/13(金) 11:53:44.26685デフォルトの名無しさん
2018/04/13(金) 12:01:28.69ID:rA4jw6Vb686デフォルトの名無しさん
2018/04/13(金) 12:06:28.55ID:/4JAUyBc >>683
メインモジュールのローカル変数としてユーザー定義型のインスタンスを作って関数へ参照渡しするんだけど
シートモジュールからの参照はできないかな?(やったことないので何も言えない)
ユーザーフォームに参照させる方法はインスタンス作ってそのメンバー変数に参照を渡すように作れば良い
メインモジュールのローカル変数としてユーザー定義型のインスタンスを作って関数へ参照渡しするんだけど
シートモジュールからの参照はできないかな?(やったことないので何も言えない)
ユーザーフォームに参照させる方法はインスタンス作ってそのメンバー変数に参照を渡すように作れば良い
687デフォルトの名無しさん
2018/04/13(金) 12:08:15.06ID:/4JAUyBc688デフォルトの名無しさん
2018/04/13(金) 12:14:57.86ID:aDeKUDTr689デフォルトの名無しさん
2018/04/13(金) 12:17:07.86ID:aDeKUDTr おっと
× シートモジュールの
○ モジュールの
× シートモジュールの
○ モジュールの
690デフォルトの名無しさん
2018/04/13(金) 12:28:49.89ID:hu4msYuE691デフォルトの名無しさん
2018/04/13(金) 13:08:18.95ID:aDeKUDTr そんなことないだろう
並列化が進んでますます大事になってるような気がするんだが
並列化が進んでますます大事になってるような気がするんだが
692デフォルトの名無しさん
2018/04/13(金) 14:34:26.06ID:uRBQbu6P .xlsxでVBAを使う方法を教えろ。
仕方なくワークシート関数で書いたら長過ぎると文句を言われる。ゲイツ氏ね。
仕方なくワークシート関数で書いたら長過ぎると文句を言われる。ゲイツ氏ね。
693デフォルトの名無しさん
2018/04/13(金) 15:29:36.69ID:aDeKUDTr ゲイツ言う時点で老害
694デフォルトの名無しさん
2018/04/13(金) 17:03:22.93ID:YdugUaFV Windowsを作ったビルゲイツは人類史上最大の貢献者なのは間違いない
貴方も恩恵を受けている
貴方も恩恵を受けている
695デフォルトの名無しさん
2018/04/13(金) 17:58:16.00ID:pWhW0uY9 >>685
関数じゃダメなのか?
関数じゃダメなのか?
696デフォルトの名無しさん
2018/04/13(金) 18:18:59.86ID:FrFNJPuN >>685 一発やらせて
Sub Macro1()
Application.Calculation = xlManual
For r = 1 To Cells(Rows.Count, "D").End(xlUp).Row + 1
If Val(Cells(r, "B")) > 0 And Val(Cells(r, "C")) > 0 Then
Cells(r, "E") = "=B" & r & "*C" & r
ElseIf InStr(Cells(r, "D"), "合計") > 0 Then
Cells(r, "E") = "=SUM(E" & r1 & ",E" & r - 1 & ")"
Else
r1 = r + 1
End If
Next
Application.Calculation = xlAutomatic
End Sub
Sub Macro1()
Application.Calculation = xlManual
For r = 1 To Cells(Rows.Count, "D").End(xlUp).Row + 1
If Val(Cells(r, "B")) > 0 And Val(Cells(r, "C")) > 0 Then
Cells(r, "E") = "=B" & r & "*C" & r
ElseIf InStr(Cells(r, "D"), "合計") > 0 Then
Cells(r, "E") = "=SUM(E" & r1 & ",E" & r - 1 & ")"
Else
r1 = r + 1
End If
Next
Application.Calculation = xlAutomatic
End Sub
697デフォルトの名無しさん
2018/04/13(金) 18:59:42.30ID:HKlJ1iBx698デフォルトの名無しさん
2018/04/13(金) 20:24:06.11 それこそ>>685みたいなのはわざわざマクロなんか組まんでも数式で十分なんだけどな
699デフォルトの名無しさん
2018/04/13(金) 20:34:24.79ID:UkpF6ptq700デフォルトの名無しさん
2018/04/13(金) 21:31:25.90ID:aDeKUDTr701デフォルトの名無しさん
2018/04/13(金) 21:41:28.09ID:N9BUaB8U 皆さんに質問です
シートの標準機能や関数で出来ることでもわざわざVBAで作りますよね?
その方が仕事してる感じするし
プログラムやってる感でますもんね
違いますか?
シートの標準機能や関数で出来ることでもわざわざVBAで作りますよね?
その方が仕事してる感じするし
プログラムやってる感でますもんね
違いますか?
702デフォルトの名無しさん
2018/04/13(金) 21:45:30.15ID:f6NgT/p9 同じ数式で参照するセルを2箇所ずつ変えるだけ、みたいな単純な繰り返し作業だと、むしろミスを防ぐためにVBAを使ったりするけど
703デフォルトの名無しさん
2018/04/13(金) 22:11:00.99ID:BN8hJaEi 違います。
他の人が使えないのでなるべく関数で処理、VBAはコピーとか貼り付けとか二つ以上のファイルでやり取りするとか関数では実装できないことに限定してます。
他の人が使えないのでなるべく関数で処理、VBAはコピーとか貼り付けとか二つ以上のファイルでやり取りするとか関数では実装できないことに限定してます。
704デフォルトの名無しさん
2018/04/13(金) 22:34:56.44ID:N9BUaB8U VBAでユーザーフォーム作ってとかしてるんでしょ?
で、それに入力させてるんでしょ?
で、それに入力させてるんでしょ?
705デフォルトの名無しさん
2018/04/13(金) 22:36:59.11ID:0w2hy+Vf シートに関数埋め込みたくない場合はvba使うかな?
706デフォルトの名無しさん
2018/04/13(金) 22:38:17.37ID:c1bJKvGv office作ってる連中がプログラム自体仕込むの嫌だからほったらかしってマジなの?
今更vbなんて学習する価値すらねえし本気で時間と労力の無駄なんだけど
jsとかpythonくらい対応する気ねえのかよこのうんこ
今更vbなんて学習する価値すらねえし本気で時間と労力の無駄なんだけど
jsとかpythonくらい対応する気ねえのかよこのうんこ
707デフォルトの名無しさん
2018/04/13(金) 22:38:40.28ID:N9BUaB8U ユーザーフォームできちんと作り込めば簡単になって便利なんだし
708デフォルトの名無しさん
2018/04/13(金) 22:43:23.72ID:kFKp+Je2 COM経由で好きな言語で使えばいいじゃん
709デフォルトの名無しさん
2018/04/13(金) 22:59:23.05ID:6a6EX6Xk COMぁちゃうなー
710デフォルトの名無しさん
2018/04/14(土) 08:38:50.16ID:sPXNQYEL 凡人が作るエクセルファイルはデータとロジックとプレゼンテーションが一つのシートに一体化してるから気持ち悪いんだよね
プログラミングを学習するとだんだんシートからプレゼンテーションが減って、単純なテーブルだけのシートになる
そのテーブルからも次第に関数や重複列、繰り返し項目、殆ど空欄の列が取り除かれてテーブルが正規化される
最終的にユーザーIO専用のシートあるいはフォーム、ロジックを置くVBA、それとデータ専用シートに綺麗に分かれてしまう
ここまでくるともはやエクセル、エクセルVBAにこだわる理由は無くなる
C#やPowerShellと手頃なローカルDBでサクッと作ってしまう方が簡単で高品質
プログラミングを学習するとだんだんシートからプレゼンテーションが減って、単純なテーブルだけのシートになる
そのテーブルからも次第に関数や重複列、繰り返し項目、殆ど空欄の列が取り除かれてテーブルが正規化される
最終的にユーザーIO専用のシートあるいはフォーム、ロジックを置くVBA、それとデータ専用シートに綺麗に分かれてしまう
ここまでくるともはやエクセル、エクセルVBAにこだわる理由は無くなる
C#やPowerShellと手頃なローカルDBでサクッと作ってしまう方が簡単で高品質
711デフォルトの名無しさん
2018/04/14(土) 08:53:16.70ID:cUogvDbv なんで仕事した事無いのに仕事を語りたがるのか これが分からない
712デフォルトの名無しさん
2018/04/14(土) 12:29:30.86ID:cGW/rI9o 手段と目的が区別できない人多いな
713デフォルトの名無しさん
2018/04/14(土) 13:03:47.82ID:sPXNQYEL 区別できないから何にでもエクセルVBAを使うんだろうね
ここぞという時に使うならいいけどね
いろんな選択肢がある中でエクセルVBAがベストってパターン殆どないんだよな
ここぞという時に使うならいいけどね
いろんな選択肢がある中でエクセルVBAがベストってパターン殆どないんだよな
714デフォルトの名無しさん
2018/04/14(土) 13:09:38.72ID:fnrer+0Y >>710
> ここまでくるともはやエクセル、エクセルVBAにこだわる理由は無くなる
基本的にお前みたいな勘違いしてる奴の方が圧倒的少数派だからなw
エクセルがお手軽統合開発環境だと思ってるやつw
大多数の普通の人はvbaはあくまでアプリを拡張するためのマクロ言語だと心得ているからw
> ここまでくるともはやエクセル、エクセルVBAにこだわる理由は無くなる
基本的にお前みたいな勘違いしてる奴の方が圧倒的少数派だからなw
エクセルがお手軽統合開発環境だと思ってるやつw
大多数の普通の人はvbaはあくまでアプリを拡張するためのマクロ言語だと心得ているからw
715デフォルトの名無しさん
2018/04/14(土) 13:48:42.38ID:sPXNQYEL ちょっとしたマクロもPowerShellでいいじゃん
楽だよ
楽だよ
716デフォルトの名無しさん
2018/04/14(土) 13:59:47.32ID:fnrer+0Y717デフォルトの名無しさん
2018/04/14(土) 14:11:33.66ID:sPXNQYEL じゃあ君が言う目的ってなんだい?
718デフォルトの名無しさん
2018/04/14(土) 14:15:50.81ID:fnrer+0Y719デフォルトの名無しさん
2018/04/14(土) 14:19:48.01ID:sPXNQYEL720デフォルトの名無しさん
2018/04/14(土) 14:48:55.19ID:cUogvDbv VBAがベストチョイスではない(統合環境の構築申請や見慣れた拡張子以外に対する拒絶反応を是正する労力は含めない場合)
721デフォルトの名無しさん
2018/04/14(土) 15:17:19.70ID:rbNw7OQO そうそう
新人さんに教えるならVBAは避けた方が良いね
新人さんに教えるならVBAは避けた方が良いね
722デフォルトの名無しさん
2018/04/14(土) 19:00:29.99ID:5nkgm3TY723デフォルトの名無しさん
2018/04/14(土) 19:20:48.08ID:sPXNQYEL724デフォルトの名無しさん
2018/04/14(土) 19:46:40.37ID:3VqakJAw エクセルファイルならVBAで良いじゃん
725デフォルトの名無しさん
2018/04/14(土) 20:13:55.28ID:xcHHAJfd726デフォルトの名無しさん
2018/04/14(土) 20:21:19.54ID:htouokVR SQLの機能を拡張???
727デフォルトの名無しさん
2018/04/14(土) 20:32:43.51ID:cXQvPX0m 【アニメーター無念の死】 『枝野氏を信頼』『福島の桃食す』『急に鼻血』『胃液が逆流』『歯欠けた』
http://rosie.5ch.net/test/read.cgi/liveplus/1523670536/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1523670536/l50
728デフォルトの名無しさん
2018/04/14(土) 20:58:15.14ID:cGW/rI9o 手段と目的が区別できない人は、そもそも目的が理解できないのか
目的のための最適な手段が判断できないのか
まあ、その両方なんだろうなぁ
目的のための最適な手段が判断できないのか
まあ、その両方なんだろうなぁ
729デフォルトの名無しさん
2018/04/14(土) 21:04:24.62ID:sPXNQYEL >>725
すまんそのジョークの面白さがわからんから説明してみて
すまんそのジョークの面白さがわからんから説明してみて
730デフォルトの名無しさん
2018/04/14(土) 21:54:59.19ID:5hamrQWk SQLの編集こそExcel大活躍ですよ
731デフォルトの名無しさん
2018/04/14(土) 22:23:47.37ID:5nkgm3TY732デフォルトの名無しさん
2018/04/15(日) 00:17:22.91ID:mNVYhnWU733デフォルトの名無しさん
2018/04/15(日) 00:18:54.06ID:pW3Ux/Zr 醜いアスペの煽り合い
734デフォルトの名無しさん
2018/04/15(日) 01:59:24.88ID:uLe7g39K しょーもな
735デフォルトの名無しさん
2018/04/15(日) 04:06:35.37ID:ZGDRPa/t736デフォルトの名無しさん
2018/04/15(日) 04:55:47.37ID:mNVYhnWU737デフォルトの名無しさん
2018/04/15(日) 05:40:24.25ID:3gCJYAlM >>736
Basic老人ウゼェ
Basic老人ウゼェ
738デフォルトの名無しさん
2018/04/15(日) 06:03:18.76ID:/DCk6ETQ 実務経験してないと特殊な言い回しが伝わらないあるある
739デフォルトの名無しさん
2018/04/15(日) 07:20:17.87ID:Arm7XjQb740デフォルトの名無しさん
2018/04/15(日) 09:08:17.32ID:Pzh/Cu9E 画像ファイルの取扱について教えてください
特定のフォルダに有る画像ファイル(jpg)を貼り付けるマクロを組もうとしています
貼り付け先のシートは複数あるので、ディスクアクセスを1回で済ませるために、
画像データを一旦メモリに読み込んだあとシートに貼り付けたいと考えています
ですが、画像の取扱については Pictures.Insert や Shapes.AddPicture のいずれも
ファイル名を指定するようになっており、画像データ(オブジェクト)を貼り付けるようには
なっていないようです
諦めて、必要回数分ディスクから読むしかないのでしょうか
特定のフォルダに有る画像ファイル(jpg)を貼り付けるマクロを組もうとしています
貼り付け先のシートは複数あるので、ディスクアクセスを1回で済ませるために、
画像データを一旦メモリに読み込んだあとシートに貼り付けたいと考えています
ですが、画像の取扱については Pictures.Insert や Shapes.AddPicture のいずれも
ファイル名を指定するようになっており、画像データ(オブジェクト)を貼り付けるようには
なっていないようです
諦めて、必要回数分ディスクから読むしかないのでしょうか
741デフォルトの名無しさん
2018/04/15(日) 10:25:19.60ID:LyYRjAz1 >>736←こいつはなかなかの馬鹿
742デフォルトの名無しさん
2018/04/15(日) 10:30:28.81ID:koN3j5aX すまんSQL編集とエクセルの結びつきがわからん
743デフォルトの名無しさん
2018/04/15(日) 10:31:31.23ID:koN3j5aX エクセルに使いやすいクエリエディタが付属してるってこと?
744デフォルトの名無しさん
2018/04/15(日) 10:35:21.86ID:/DCk6ETQ エクセル上で完成予想図を手作りしてからSQL文考えるって事じゃないの
745デフォルトの名無しさん
2018/04/15(日) 10:44:40.64ID:VXOW+WoG746デフォルトの名無しさん
2018/04/15(日) 12:34:58.71ID:mNVYhnWU SQL文を編集
SQLデータを編集
SQL設定を編集
これはあるけど、
SQLを編集なんて書く奴は必ず現場でおかしなことをしでかす馬鹿
SQLデータを編集
SQL設定を編集
これはあるけど、
SQLを編集なんて書く奴は必ず現場でおかしなことをしでかす馬鹿
747デフォルトの名無しさん
2018/04/15(日) 12:40:17.64ID:WGwd/sOZ >>746
よくいるよな、こういう些末な指摘をしてレビュー時間を食いつぶすおっさん
そのおっさんからしたら「将来のことを思って教育してやってる」つもりかもしれないが
この場で本当にその使い分けが必要なのかTPOをわきまえろよ
よくいるよな、こういう些末な指摘をしてレビュー時間を食いつぶすおっさん
そのおっさんからしたら「将来のことを思って教育してやってる」つもりかもしれないが
この場で本当にその使い分けが必要なのかTPOをわきまえろよ
748デフォルトの名無しさん
2018/04/15(日) 12:43:18.98ID:/DCk6ETQ >>746
だから君はまず現場経験してからそういう事言いなさい
だから君はまず現場経験してからそういう事言いなさい
749デフォルトの名無しさん
2018/04/15(日) 13:09:58.84ID:XQ/rpiYn 寝る前にその文言に食いついて、起きてからも同じ事に噛みついてると考えるとちょっと面白い
750デフォルトの名無しさん
2018/04/15(日) 13:16:36.47ID:koN3j5aX 待ってくれ
些細な言葉使いはいいんだよ
俺が知りたいのはSQL編集とエクセルの関係性の事なんだ
エクセルにそんな機能あったっけ?
些細な言葉使いはいいんだよ
俺が知りたいのはSQL編集とエクセルの関係性の事なんだ
エクセルにそんな機能あったっけ?
751デフォルトの名無しさん
2018/04/15(日) 13:32:19.58ID:LyYRjAz1 知らんなら知らんでええやろw
知らん事を知れたんやから素直に教えを請えばええやんけw
ホンマにバカやなコイツらw
知らん事を知れたんやから素直に教えを請えばええやんけw
ホンマにバカやなコイツらw
752デフォルトの名無しさん
2018/04/15(日) 14:19:35.08ID:Qk5xqw9Q SQL(Structured Query Language)の編集は、言葉として理解できる。寧ろ
> SQLデータ
> SQL設定
が分からん。
> SQLデータ
> SQL設定
が分からん。
753740
2018/04/15(日) 14:54:13.60ID:Pzh/Cu9E754デフォルトの名無しさん
2018/04/15(日) 15:01:27.90ID:MGyIE80t Excelの話じゃ無いだろ。
何でもPowerShellで良いという主張に反論してるんじゃないの?
まっ、俺はPowerShellの方が苦行だからOffice関連ならVBAにするけどな。
Office関係無い場合はPowerShellにすることもあるけどな。
けどPowerShellはそんなに慣れてないから別の選択肢にするかもね。
何でもPowerShellで良いという主張に反論してるんじゃないの?
まっ、俺はPowerShellの方が苦行だからOffice関連ならVBAにするけどな。
Office関係無い場合はPowerShellにすることもあるけどな。
けどPowerShellはそんなに慣れてないから別の選択肢にするかもね。
755デフォルトの名無しさん
2018/04/15(日) 15:24:12.18ID:WGwd/sOZ756デフォルトの名無しさん
2018/04/15(日) 15:30:59.97ID:MGyIE80t >>753
そういう方法を知識として知っていたわけじゃ無いけど、多分出来るとは思う。
でもVBAでは結構高度になると思う。
もしあなたがそれを扱えるほどのスキルがあるなら既に気付いてるとも思うんだよな。
それに俺のレベルではそういうやり方のメリットも分からん。
取りあえずGDI系のCreateCompatibleDCと Bitblt系API使うのが平気ならメモリDCに溜め込んで、OleCreatePictureInDirect使ってPictureオブジェクトに変換するなんてやり方か、GDIPlus系APIを使用する方向が思いつくけど。
そういう方法を知識として知っていたわけじゃ無いけど、多分出来るとは思う。
でもVBAでは結構高度になると思う。
もしあなたがそれを扱えるほどのスキルがあるなら既に気付いてるとも思うんだよな。
それに俺のレベルではそういうやり方のメリットも分からん。
取りあえずGDI系のCreateCompatibleDCと Bitblt系API使うのが平気ならメモリDCに溜め込んで、OleCreatePictureInDirect使ってPictureオブジェクトに変換するなんてやり方か、GDIPlus系APIを使用する方向が思いつくけど。
757デフォルトの名無しさん
2018/04/15(日) 15:32:50.62ID:K3iBQQ6B VBAでメインメモリにアクセスなんて出来るの?
758デフォルトの名無しさん
2018/04/15(日) 15:36:55.89ID:/DCk6ETQ 出来るかどうかという話ならWinAPIを扱えばいいだけだから出来る
でも出来るかどうかという質問でWinAPIを含めて答えるのは不適当な気はする
WinAPI扱えるならそもそも質問しないだろうし
でも出来るかどうかという質問でWinAPIを含めて答えるのは不適当な気はする
WinAPI扱えるならそもそも質問しないだろうし
759デフォルトの名無しさん
2018/04/15(日) 15:39:24.48ID:CIuag2/D メインメモリーのアクセスって言うのがなにを意味してるのかわからんけど>>756辺りの話ならWin32API呼び出しでできる
760デフォルトの名無しさん
2018/04/15(日) 15:46:04.12ID:WGwd/sOZ 「できますん」が正しい回答か
761デフォルトの名無しさん
2018/04/15(日) 16:28:15.05ID:Pzh/Cu9E762デフォルトの名無しさん
2018/04/15(日) 16:42:54.85ID:Evm/8r2L 画像をシートに貼り付けるだけなんだから普通にファイル名指定すりゃいいだろと思うのだが
ディスクアクセスもOSキャッシュに乗るんだから連続でやれば1回読んだだけで終わる
ディスクアクセスもOSキャッシュに乗るんだから連続でやれば1回読んだだけで終わる
763デフォルトの名無しさん
2018/04/15(日) 18:03:51.72ID:WGwd/sOZ VBAに限った話でもなく、よくいるんだよ
どこに時間かかってるのか計測もせずに
やれ最適化レベルを上げようとかインライン化しようとか
スレッド数減らそうとか根拠もなくトライして
時間を浪費するプログラマーがな
どこに時間かかってるのか計測もせずに
やれ最適化レベルを上げようとかインライン化しようとか
スレッド数減らそうとか根拠もなくトライして
時間を浪費するプログラマーがな
764デフォルトの名無しさん
2018/04/15(日) 19:32:20.73ID:q8wZBRrJ つか非表示のシートにでも画像貼り付けとけば良いんじゃねえのか
765デフォルトの名無しさん
2018/04/15(日) 19:35:37.64ID:koN3j5aX htmlでいいじゃん
766デフォルトの名無しさん
2018/04/15(日) 21:09:55.26ID:Pzh/Cu9E とりあえずそのまま画像を貼り付けることにして作ったのですが、奇妙なバグが出て困りました
特定の画像ファイルだけ、指定したセルの一つ左上(C5に貼ろうとしたらB4)に貼り付けられます
それも、特定のワークシートに貼った場合のみです
同じ画像を2枚のワークシートに場所を変えて貼るのですが、(順番は無関係と思いますが)
最初のシートには正しく貼れて、次のシートだとズレてしまいます
たくさんある中の数個だけで発生する現象で、何の根拠もなくペイントブラシで画像をちょっとだけ
トリミングしたら発生しなくなりました
何が起きているのかわかる方いないでしょうか
下記のプロシージャを2回呼んでいて、違うのは引数のtargetRangeだけです
' 指定のセルの位置に画像ファイルのイメージを等倍で貼り付ける
Private Sub PasteImageFromFile(targetRange As Range, imageFilePath As String)
Dim image As Shape
Set image = targetRange.Worksheet.Shapes.AddPicture( _
filename:=imageFilePath, _
LinkToFile:=True, _
SaveWithDocument:=False, _
Left:=targetRange.Left, Top:=targetRange.Top, _
Width:=-1, Height:=-1)
image.LockAspectRatio = msoTrue
End Sub
特定の画像ファイルだけ、指定したセルの一つ左上(C5に貼ろうとしたらB4)に貼り付けられます
それも、特定のワークシートに貼った場合のみです
同じ画像を2枚のワークシートに場所を変えて貼るのですが、(順番は無関係と思いますが)
最初のシートには正しく貼れて、次のシートだとズレてしまいます
たくさんある中の数個だけで発生する現象で、何の根拠もなくペイントブラシで画像をちょっとだけ
トリミングしたら発生しなくなりました
何が起きているのかわかる方いないでしょうか
下記のプロシージャを2回呼んでいて、違うのは引数のtargetRangeだけです
' 指定のセルの位置に画像ファイルのイメージを等倍で貼り付ける
Private Sub PasteImageFromFile(targetRange As Range, imageFilePath As String)
Dim image As Shape
Set image = targetRange.Worksheet.Shapes.AddPicture( _
filename:=imageFilePath, _
LinkToFile:=True, _
SaveWithDocument:=False, _
Left:=targetRange.Left, Top:=targetRange.Top, _
Width:=-1, Height:=-1)
image.LockAspectRatio = msoTrue
End Sub
767デフォルトの名無しさん
2018/04/15(日) 23:51:47.37 >>766
何が起きてるかは知らんけど、貼り付けてからもう一回位置調整すればええんでね?
何が起きてるかは知らんけど、貼り付けてからもう一回位置調整すればええんでね?
768デフォルトの名無しさん
2018/04/16(月) 00:20:34.44ID:f3RnCMph ツールバーにボタンとか並べる場合って方向操作できないですか?
普通に追加してると右方向に順番に並んでいくようですけど
そうじゃなくて下方向に数個ずつ並べていきたいんですが
普通に追加してると右方向に順番に並んでいくようですけど
そうじゃなくて下方向に数個ずつ並べていきたいんですが
769766
2018/04/16(月) 06:08:33.87ID:6ZwybagU770デフォルトの名無しさん
2018/04/16(月) 07:16:08.06ID:kK8liqj6771デフォルトの名無しさん
2018/04/16(月) 07:46:35.83ID:6ZwybagU772デフォルトの名無しさん
2018/04/17(火) 00:03:37.71ID:7EYd60LZ VBAでAPI使うのってどれくらい難しい?
教本の中級レベルなんだが、最終的にはそれくらいやりたいなと思ってる
結局"何をするか"に拠るんかな
教本の中級レベルなんだが、最終的にはそれくらいやりたいなと思ってる
結局"何をするか"に拠るんかな
773デフォルトの名無しさん
2018/04/17(火) 00:08:06.60ID:71rZXGtd774デフォルトの名無しさん
2018/04/17(火) 01:01:25.08ID:7EYd60LZ ありがとう
とりあえずその拾い物から使ってみる
とりあえずその拾い物から使ってみる
775デフォルトの名無しさん
2018/04/17(火) 06:57:42.37ID:7Dpz+bU0776デフォルトの名無しさん
2018/04/17(火) 07:04:55.69ID:9jZKmgYa777デフォルトの名無しさん
2018/04/17(火) 07:20:21.18ID:7Dpz+bU0778デフォルトの名無しさん
2018/04/17(火) 11:41:46.89ID:PYkzn9qy win32api vba でぐぐればいっぱい出てくるやん
779デフォルトの名無しさん
2018/04/17(火) 11:55:31.70 C++やC#向けのサンプルコードを見てVBAで使えるようになれば一人前
780デフォルトの名無しさん
2018/04/17(火) 12:17:48.81ID:VAUeyy7y ただのコピペやんw
781デフォルトの名無しさん
2018/04/17(火) 17:43:34.64 昔ちょっと苦労した覚えがあると思ったら、あれはPerlでWindows APIを使うときだった
782デフォルトの名無しさん
2018/04/17(火) 17:50:27.17ID:PN1o89Xi >>779
piaでエクセルの機能呼び出してるコード見ると勉強になるよな
piaでエクセルの機能呼び出してるコード見ると勉強になるよな
783デフォルトの名無しさん
2018/04/17(火) 17:53:34.87ID:xUsXMLJ+ チケットPIA?
784デフォルトの名無しさん
2018/04/17(火) 18:57:49.21ID:Sro26Cmq ・すべての変数がグローバルかつ型宣言文字を使っての指定
・使われていない関数の山
・どこからも参照されていない変数の山
・変数名・関数名が英語・日本語・ローマ字の混在
こんな凄まじいコードを修正・機能追加することになって泣いています
自分まだプログラマ歴1年未満なので、単に超絶技巧コードを見て理解出来てないだけという可能性もあるなと思いここに来ました
vbaのコードではこういう読みにくいのも割とあるものなのでしょうか。そしてこういう書き方でも実は良いとされる場面があったりするのでしょうか
・使われていない関数の山
・どこからも参照されていない変数の山
・変数名・関数名が英語・日本語・ローマ字の混在
こんな凄まじいコードを修正・機能追加することになって泣いています
自分まだプログラマ歴1年未満なので、単に超絶技巧コードを見て理解出来てないだけという可能性もあるなと思いここに来ました
vbaのコードではこういう読みにくいのも割とあるものなのでしょうか。そしてこういう書き方でも実は良いとされる場面があったりするのでしょうか
785デフォルトの名無しさん
2018/04/17(火) 19:12:22.44ID:upC1/Erc 何日間で何人でどういう内容の作業をするの?
オジサンにおしえてごらん♪
価値相当の価格なのかも知らんし
オジサンにおしえてごらん♪
価値相当の価格なのかも知らんし
786デフォルトの名無しさん
2018/04/17(火) 19:33:49.32ID:3oXUXGvj787デフォルトの名無しさん
2018/04/17(火) 21:47:12.39ID:9jZKmgYa VBA担当は新人または使えないおっさんと相場が決まってるからな
788デフォルトの名無しさん
2018/04/17(火) 22:15:51.49ID:OguVeWqq プログラマーとは認められない者
エクセルエンジニアw
エクセルエンジニアw
789デフォルトの名無しさん
2018/04/17(火) 23:50:58.95ID:jnGKhzNu セルを変数代わりに使う素晴らしい見識をお持ちのクソジジイが同じ部署にいる
790デフォルトの名無しさん
2018/04/18(水) 00:19:02.87ID:Av//TRQH 教本を読んでると
・メンテナンスしやすいスクリプト
・誰が見ても分かるスクリプト
みたいな項目が必ずと言っていいほど出てくるんだが、
酷いのはそんなに酷いのか?
今の職場は自分1人だけしか作ってないから可否が分からん
・メンテナンスしやすいスクリプト
・誰が見ても分かるスクリプト
みたいな項目が必ずと言っていいほど出てくるんだが、
酷いのはそんなに酷いのか?
今の職場は自分1人だけしか作ってないから可否が分からん
791デフォルトの名無しさん
2018/04/18(水) 00:26:46.75ID:RSRnSjrn コード読めないって言っているヤツは単なる知識不足が大半だけどな
792デフォルトの名無しさん
2018/04/18(水) 01:23:10.31ID:ABcs9Eg1 シートにフォームコントロールのボタンがあって、押すとシート上で条件を満たすセルを変化させる
そういうコードを書こうと思ってます。この場合、標準モジュールに書くべきですか?それともシートモジュールに書くべきですか?
一応前者かなとは思ってるんですが
>>791
変数名の付け方とかコメントとかそういうところでほんと読める読めないが変わってくることを最近実感してますね
そういうコードを書こうと思ってます。この場合、標準モジュールに書くべきですか?それともシートモジュールに書くべきですか?
一応前者かなとは思ってるんですが
>>791
変数名の付け方とかコメントとかそういうところでほんと読める読めないが変わってくることを最近実感してますね
793デフォルトの名無しさん
2018/04/18(水) 01:38:15.90ID:RSRnSjrn794デフォルトの名無しさん
2018/04/18(水) 04:08:59.43ID:vJ9/iAQD795デフォルトの名無しさん
2018/04/18(水) 04:20:24.72ID:RSRnSjrn >>794
文字の後ろに特定の文字を加えると、その型での変数を宣言できるんだよ
Sub test()
i$ = "test"
Debug.Print i
End Sub
みたいな書き方が出来る。
ヘルプでString型とかLong型とかの項目見てみると「型宣言文字は〜〜です。」って載ってる。
文字の後ろに特定の文字を加えると、その型での変数を宣言できるんだよ
Sub test()
i$ = "test"
Debug.Print i
End Sub
みたいな書き方が出来る。
ヘルプでString型とかLong型とかの項目見てみると「型宣言文字は〜〜です。」って載ってる。
796デフォルトの名無しさん
2018/04/18(水) 04:38:46.99ID:vJ9/iAQD ああ、昔見た気がする。
VBAでも使えるんだね。書く機会があればイヤガラセで多用してやろう。
VBAでも使えるんだね。書く機会があればイヤガラセで多用してやろう。
797デフォルトの名無しさん
2018/04/18(水) 09:24:59.94ID:ins5325S 型宣言文字は互換性維持のための隠れ仕様にしてくれ
リファレンスに易々と載せるべきではない
リファレンスに易々と載せるべきではない
798デフォルトの名無しさん
2018/04/18(水) 12:24:01.12ID:LApBWp2e799デフォルトの名無しさん
2018/04/18(水) 14:03:23.26ID:k8PiJXI5 正直、型宣言文字の何が弊害なのかよくわからない
今は使ってないけど昔は使ってて、これといった害はなかったからね
今は使ってないけど昔は使ってて、これといった害はなかったからね
800デフォルトの名無しさん
2018/04/18(水) 14:16:43.80ID:RSRnSjrn Dimとか無しでコードの途中で自然に宣言できるので、
HowTo本に出てくる伝説の存在「全ての変数が最初に書かれていないとコードの読解に支障を来す勢」にとって不利なんじゃない?
HowTo本に出てくる伝説の存在「全ての変数が最初に書かれていないとコードの読解に支障を来す勢」にとって不利なんじゃない?
801デフォルトの名無しさん
2018/04/18(水) 16:27:48.27ID:k8PiJXI5 >>800
ああなるほど
Dim a&
みたいな使い方しかしてなかったから無縁だな
しかしすべての変数が冒頭になきゃいけない人たちって、Exit Function や Exit Sub のあとに出てくる変数も
そうなのかね?
ああなるほど
Dim a&
みたいな使い方しかしてなかったから無縁だな
しかしすべての変数が冒頭になきゃいけない人たちって、Exit Function や Exit Sub のあとに出てくる変数も
そうなのかね?
802デフォルトの名無しさん
2018/04/18(水) 16:49:41.54ID:FXGDHP9F 初めて知ったがこれはむしろC#のvarみたいで必要な機能だよなこれ(同じだよな?)
問題は変数名$っていう目に優しくない文法だけだ
問題は変数名$っていう目に優しくない文法だけだ
803デフォルトの名無しさん
2018/04/18(水) 17:00:05.48804デフォルトの名無しさん
2018/04/18(水) 17:05:46.97ID:k8PiJXI5 >>803
関数内ローカル変数の話だよ
関数内ローカル変数の話だよ
805デフォルトの名無しさん
2018/04/18(水) 17:58:52.75ID:d/mhsB/j テキストファイルをline inputでループして自分の名前が入っていたら、エクセルに張り付けていきたいんですけど、その際に抜き出した行を消してテキストファイルを更新して、最終的には自分の名前のないテキストファイルにするにはどんな作り方ですか?
806デフォルトの名無しさん
2018/04/18(水) 19:40:47.78ID:GNqfI2kR 抜き出さなかった行を別のファイルに追記していく
最後に元ファイルけして、別ファイルを元ファイルにリネームする
最後に元ファイルけして、別ファイルを元ファイルにリネームする
807デフォルトの名無しさん
2018/04/18(水) 22:25:17.86ID:kL5iQ307 N88-BASICもマイクロソフト製だったから、文字列変数には$、倍精度実数は#を付けるとか、当時は必須の知識だった
ところでDEFINTはVBAでも使えるんかな?
ところでDEFINTはVBAでも使えるんかな?
808デフォルトの名無しさん
2018/04/19(木) 00:41:36.44ID:Z28Cxj5J デフィングフタッ!
809デフォルトの名無しさん
2018/04/19(木) 12:06:57.90ID:+4ib45ZB ファイルの拡張子をBakにする
それを読んで必要な行を元のファイル名に出力する
これで必要な行が無ければファイルも消える
それを読んで必要な行を元のファイル名に出力する
これで必要な行が無ければファイルも消える
810デフォルトの名無しさん
2018/04/19(木) 12:18:21.18 >>809
更新する必要がないときにファイルを更新してしまうのは下策中の下策
更新する必要がないときにファイルを更新してしまうのは下策中の下策
811デフォルトの名無しさん
2018/04/19(木) 12:21:25.32 >>805
数百MBあるようなファイルじゃなければ、
一括で文字列として読み込んで
一行ずつ処理して出力用の新しい文字列を組み立てて
読み込んだ文字列と新しい文字列に差分があれば
ファイルに一括で書き込むのが
性能面でも処理の分かりやすさでも優れてるよ
数百MBあるようなファイルじゃなければ、
一括で文字列として読み込んで
一行ずつ処理して出力用の新しい文字列を組み立てて
読み込んだ文字列と新しい文字列に差分があれば
ファイルに一括で書き込むのが
性能面でも処理の分かりやすさでも優れてるよ
812デフォルトの名無しさん
2018/04/19(木) 12:22:32.15ID:F3Bh1jYP 更新する必要がないのに更新されてしまったら
それは下策ではなくバグやぞ
それは下策ではなくバグやぞ
813デフォルトの名無しさん
2018/04/19(木) 18:39:40.27ID:ml4EPJfx 初歩的な質問で恐縮なんだが
もしかしてマクロってやりたい事をコードでできる要素に分解するのが難しいのか?
俺はてっきり文法的な難しさが勝ると思ってたが、
実務に落とし込もうとした時に、この作業をどうやってコードに起こそう?ってフリーズしたわ
もしかしてマクロってやりたい事をコードでできる要素に分解するのが難しいのか?
俺はてっきり文法的な難しさが勝ると思ってたが、
実務に落とし込もうとした時に、この作業をどうやってコードに起こそう?ってフリーズしたわ
814デフォルトの名無しさん
2018/04/19(木) 18:44:14.89ID:rUVJgjTn 何を言っているのか分からないw
815デフォルトの名無しさん
2018/04/19(木) 18:51:50.57ID:Z28Cxj5J おいおい笑っとる場合とちゃうでそりゃ
816デフォルトの名無しさん
2018/04/19(木) 18:55:32.33ID:vrFoPp38 そうだよ
VBAはエクセルを使った作業を助けるちょっとした拡張を書く分には適してる
でもそれ以外のエクセル関係ない処理を書くのにはお世辞にも向いてるとは言えん
そんで業務上で実用的な処理って殆どはエクセル関係ないんだよね
VBAはエクセルを使った作業を助けるちょっとした拡張を書く分には適してる
でもそれ以外のエクセル関係ない処理を書くのにはお世辞にも向いてるとは言えん
そんで業務上で実用的な処理って殆どはエクセル関係ないんだよね
817デフォルトの名無しさん
2018/04/19(木) 19:01:06.47ID:4+we2EIF はいはい、他の言語勧めるならVBA使う職場でIDE入れる許可取る方法も合わせて紹介してくださいね
818デフォルトの名無しさん
2018/04/19(木) 19:22:27.76ID:vrFoPp38 IDEなんていらんよ
WindowsならPowerShellが使えるからね
WindowsならPowerShellが使えるからね
819デフォルトの名無しさん
2018/04/19(木) 19:30:43.32ID:4+we2EIF インテリセンス無しで書くって状況を効率的と称するのはちょっと現実見えてないどころの話じゃないな
820デフォルトの名無しさん
2018/04/19(木) 20:15:01.48ID:FhTBU56j >>818パワーシェルでスクリプト走らすための設定をするのが面倒っていうか、いちいち覚えてらんない
スクリプトを走らすための設定をするスクリプト無いのかなぁ
スクリプトを走らすための設定をするスクリプト無いのかなぁ
821デフォルトの名無しさん
2018/04/19(木) 20:28:26.88ID:Z28Cxj5J またパワー系バカかいなw
822デフォルトの名無しさん
2018/04/19(木) 20:48:34.30ID:srwk8Yrs823デフォルトの名無しさん
2018/04/19(木) 21:23:11.71ID:Z28Cxj5J824デフォルトの名無しさん
2018/04/19(木) 22:01:03.55ID:srwk8Yrs ちょっとなに言ってるのかわかりませんな
皮肉の意味も知らなさそうw
皮肉の意味も知らなさそうw
825デフォルトの名無しさん
2018/04/19(木) 22:03:43.71 所詮VBAエンジニアだもん
826デフォルトの名無しさん
2018/04/19(木) 22:10:03.54ID:vrFoPp38 エンジニアって言葉に違和感がある
VBAユーザーとかにしてくれ
VBAユーザーとかにしてくれ
827デフォルトの名無しさん
2018/04/19(木) 22:16:42.11ID:Z28Cxj5J 悲報、VBAエンジニアさん皮肉を理解できないwww
828デフォルトの名無しさん
2018/04/19(木) 22:51:03.97ID:NI/UICUh これはさすがに恥ずかしい
829デフォルトの名無しさん
2018/04/20(金) 01:10:17.00ID:ZSD8J3qj エクセル関数で出来る事は全てマクロでも出来ると思っていいのかな
今VLOOKUPを大量に使って元データのシートを4,5枚のシートに分けて転記してる作業があって、
このブック自体、ある意味完成されてるから業務上特に問題はないのだが
セルの中身を見ると酷く不恰好でな
背中がムズムズするから改善したいと思ってる
今VLOOKUPを大量に使って元データのシートを4,5枚のシートに分けて転記してる作業があって、
このブック自体、ある意味完成されてるから業務上特に問題はないのだが
セルの中身を見ると酷く不恰好でな
背中がムズムズするから改善したいと思ってる
830デフォルトの名無しさん
2018/04/20(金) 02:51:15.64ID:750RsbNY 転記と参照は異なるイメージ
831デフォルトの名無しさん
2018/04/20(金) 06:26:22.33ID:Z/hF/kR3 >>829
関数はVBAで組まれているので、十分な理解の元でマクロを組めば同処理同時間になる。
それにマクロの方が無駄な機能を省くなど最適化しやすいので、処理時間は普通、 関数≧マクロ になる。
最近のバージョンだと関数はSIMD使ってたりセル単位で並列処理してたりと、
マクロで出来ない事やってるとは聞くんだけど実際問題処理時間に反映されてないんだよね。
関数はVBAで組まれているので、十分な理解の元でマクロを組めば同処理同時間になる。
それにマクロの方が無駄な機能を省くなど最適化しやすいので、処理時間は普通、 関数≧マクロ になる。
最近のバージョンだと関数はSIMD使ってたりセル単位で並列処理してたりと、
マクロで出来ない事やってるとは聞くんだけど実際問題処理時間に反映されてないんだよね。
832デフォルトの名無しさん
2018/04/20(金) 07:16:10.06ID:DDZisBas833デフォルトの名無しさん
2018/04/20(金) 07:34:56.30ID:Z/hF/kR3834デフォルトの名無しさん
2018/04/20(金) 08:02:16.85ID:DDZisBas >>833
ソース出してみ
ソース出してみ
835デフォルトの名無しさん
2018/04/20(金) 08:46:12.64ID:0VrNppPf 共同ツール 1
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
836デフォルトの名無しさん
2018/04/20(金) 15:24:43.31ID:RP9oZBhW VBA マクロを外部 dll にて記述することは可能ですか?
VBA マクロから外部 dll を呼び出すことは可能ですか?
VBA の関数を外注したいのですが
VBA マクロから外部 dll を呼び出すことは可能ですか?
VBA の関数を外注したいのですが
837デフォルトの名無しさん
2018/04/20(金) 16:34:17.47ID:3Cb8dXo7838デフォルトの名無しさん
2018/04/20(金) 17:22:24.62ID:fJgzb4WI sheetオブジェクトさわれないと不便だろうからc#+OpenXML でdll作れば?
839デフォルトの名無しさん
2018/04/20(金) 18:28:12.60ID:hyGn+NWp >VBA マクロから外部 dll を呼び出すことは可能ですか?
圧縮用に unlha32.dll を使ってる。セキュリティがどうのこうの言われてたりしたけど
まぁ自分用途に使う分には問題ないし外部dllを呼び出せるか?って質問に呼び出す
例としてあげただけなんで。
圧縮用に unlha32.dll を使ってる。セキュリティがどうのこうの言われてたりしたけど
まぁ自分用途に使う分には問題ないし外部dllを呼び出せるか?って質問に呼び出す
例としてあげただけなんで。
840デフォルトの名無しさん
2018/04/20(金) 19:43:37.08ID:P2bCm2Cm >>836
Module1.bas のまま納入してもらえばいいじゃん。
Module1.bas のまま納入してもらえばいいじゃん。
841デフォルトの名無しさん
2018/04/20(金) 21:11:48.80ID:TsjxvbIu >>836
なぜVBAで作らせたいのか?
なぜVBAで作らせたいのか?
842デフォルトの名無しさん
2018/04/20(金) 21:51:00.88ID:/f4SVs1l だからさ、そういうのはVBAの仕事じゃねんだよ
843デフォルトの名無しさん
2018/04/21(土) 00:19:32.87ID:6+H6buOa VBAの仕事って何だよ
エロ画像の整理とかで圧縮ファイル扱うしun*32.dll系はむしろよく使うんじゃないの
エロ画像の整理とかで圧縮ファイル扱うしun*32.dll系はむしろよく使うんじゃないの
844デフォルトの名無しさん
2018/04/21(土) 03:17:59.36ID:C12WZHgI >>841
投資分野における RSIインディケーターをexcel 数式で使いたいのです
投資分野における RSIインディケーターをexcel 数式で使いたいのです
845デフォルトの名無しさん
2018/04/21(土) 06:32:49.84ID:cZjOaU/p >>844
それはファンクションプロシージャでラッピングすればいい話で、VBAの話ではない。
それはファンクションプロシージャでラッピングすればいい話で、VBAの話ではない。
846デフォルトの名無しさん
2018/04/21(土) 07:36:11.37ID:g3Kr5e2D >>843
そんなんVBAでやる理由が皆無やろ
そんなんVBAでやる理由が皆無やろ
847デフォルトの名無しさん
2018/04/21(土) 07:43:23.30ID:lPKh0fp6848デフォルトの名無しさん
2018/04/21(土) 07:57:41.71ID:g3Kr5e2D VBAerは世界感が狭いからなんでもVBでやろうとするなぁ
849デフォルトの名無しさん
2018/04/21(土) 07:59:35.52ID:nwm3yYwa >>848
VBAエンジニアって呼べや
VBAエンジニアって呼べや
850デフォルトの名無しさん
2018/04/21(土) 08:37:53.75ID:wT5HHzfo 開発環境をインストールできない環境では
VBAぐらいしか選択肢がない
VBAぐらいしか選択肢がない
851デフォルトの名無しさん
2018/04/21(土) 08:38:57.92ID:GXQ98g1T エクセルは統計に使う関数が一通り揃ってるんで投資分野は使いやすいぞ
インジケータならMT4とか使った方がいいような気はするけど
インジケータならMT4とか使った方がいいような気はするけど
852デフォルトの名無しさん
2018/04/21(土) 08:59:09.12ID:8eWDHGAr853デフォルトの名無しさん
2018/04/21(土) 09:58:30.23ID:C12WZHgI >>847
エクセルで指定されたシートの範囲を dll にて取り出す方法がわかりません
エクセルで指定されたシートの範囲を dll にて取り出す方法がわかりません
854デフォルトの名無しさん
2018/04/21(土) 10:09:46.33ID:FdDi/Wma >>851
むしろエクセルはまともに統計に使える関数少ないだろ。重回帰くらいしかない。
相関行列や時系列分析なんかないし。自分で作るしかない
しかもエクセルじゃビッグデータは重すぎて、全体的な見通しも悪い。
むしろエクセルはまともに統計に使える関数少ないだろ。重回帰くらいしかない。
相関行列や時系列分析なんかないし。自分で作るしかない
しかもエクセルじゃビッグデータは重すぎて、全体的な見通しも悪い。
855デフォルトの名無しさん
2018/04/21(土) 10:14:19.71ID:g3Kr5e2D 他の選択肢を知れば知るほどもうVBAはねえわってなるよね普通
VBAに執着する人ってどんだけ勉強嫌いなんだろう
VBAに執着する人ってどんだけ勉強嫌いなんだろう
856デフォルトの名無しさん
2018/04/21(土) 10:14:56.03ID:lPKh0fp6857デフォルトの名無しさん
2018/04/21(土) 10:15:29.17ID:a1jne6cy >>855
そんな事言うためにこのスレに留まってるの?
そんな事言うためにこのスレに留まってるの?
858デフォルトの名無しさん
2018/04/21(土) 11:33:54.73ID:C2C7Ud8C フォルダAにある現在開いているファイル以外のファイルをフォルダBにコピーし、
その後、フォルダAにある現在開いているファイル以外を削除する方法を教えていただけますでしょうか。
よろしくお願いします。
その後、フォルダAにある現在開いているファイル以外を削除する方法を教えていただけますでしょうか。
よろしくお願いします。
859デフォルトの名無しさん
2018/04/21(土) 12:13:41.84ID:g71h8OPL >>858
Dim fn as String
fn = Dir(ThisWorkbook.Path & "\")
Do While Not fn = ""
If Not fn = ThisWorkbook.Name Then
Name ThisWorkbook.Path & "\" & fn As "フォルダBのパス" & "\" & fn
End If
fn = Dir()
Loop
これでどうかな
実験してないのでこけるかも知れない
Dim fn as String
fn = Dir(ThisWorkbook.Path & "\")
Do While Not fn = ""
If Not fn = ThisWorkbook.Name Then
Name ThisWorkbook.Path & "\" & fn As "フォルダBのパス" & "\" & fn
End If
fn = Dir()
Loop
これでどうかな
実験してないのでこけるかも知れない
860デフォルトの名無しさん
2018/04/21(土) 12:20:05.75ID:C2C7Ud8C861デフォルトの名無しさん
2018/04/21(土) 12:28:03.91ID:7+Um7Y8b >>848
ヴィーバアーって読むん? それともビーバー?
ヴィーバアーって読むん? それともビーバー?
862デフォルトの名無しさん
2018/04/21(土) 12:55:33.20ID:ERfeW7nP ブック1のシート1とブック2のシート2を開いてシート2がアクティブの時、
シート1の選択範囲を取得する方法はありますか?
シート1の選択範囲を取得する方法はありますか?
863デフォルトの名無しさん
2018/04/21(土) 14:20:03.89ID:qaO+nC3q 切り替わるタイミングでアクティブなセルの番地を拾っておけばできるんじゃないか。
864デフォルトの名無しさん
2018/04/21(土) 17:05:31.81ID:wAQUEkyG >>862
同一EXCELアプリケーション内なら
同一EXCELアプリケーション内なら
865デフォルトの名無しさん
2018/04/21(土) 22:31:31.47ID:nN/toUY2 エクセルのことわざわざ英語でEXCELって書くやつなんなん?
866デフォルトの名無しさん
2018/04/21(土) 22:34:09.27ID:dFQ+pJAQ そこはさすがにエクセルのほうが違和感あるわ
867デフォルトの名無しさん
2018/04/22(日) 04:13:47.20ID:g5wVKO/X 地味な違いだけど
ローマ字綴りの方がタイプしやすいと感じてる
ローマ字綴りの方がタイプしやすいと感じてる
868デフォルトの名無しさん
2018/04/22(日) 04:46:55.12ID:5gwwyGqC ekuseru
869デフォルトの名無しさん
2018/04/22(日) 05:22:32.39ID:L4UjA6aN ブイビーエー
870デフォルトの名無しさん
2018/04/22(日) 05:56:17.23ID:5gwwyGqC ヴィービーエィ
871デフォルトの名無しさん
2018/04/22(日) 09:06:19.18ID:AipipDzh あーあー Eきもーちー♪
いや、思い出したんでついな(´・ω・`)b
いや、思い出したんでついな(´・ω・`)b
872デフォルトの名無しさん
2018/04/22(日) 09:21:51.06ID:KfecN0Qu JIS(?)っぽい思想だとカタカナでエクセルなんだろうなぁ、とか
873デフォルトの名無しさん
2018/04/22(日) 09:46:56.02ID:Z8CuG080 >>865
こういうつまらないことにこだわる奴って気持ち悪いよね
こういうつまらないことにこだわる奴って気持ち悪いよね
874デフォルトの名無しさん
2018/04/22(日) 10:20:16.74ID:G5t9FUHp 複数シートの中で売上という文字列が入っているシートがいくつかあり、
そのシート内のB列にデータがないシートのみを削除する方法を
教えていただけますでしょうか。
宜しくお願い致します。
そのシート内のB列にデータがないシートのみを削除する方法を
教えていただけますでしょうか。
宜しくお願い致します。
875デフォルトの名無しさん
2018/04/22(日) 10:21:28.91ID:CtyzUBhW なんか質問する人、同じ人ばっかり??
876デフォルトの名無しさん
2018/04/22(日) 10:23:26.90ID:Ilmcglgl >>862
マクロの記録でどう出るか確認したら?
マクロの記録でどう出るか確認したら?
877デフォルトの名無しさん
2018/04/22(日) 10:24:40.29ID:Ilmcglgl >>875
宿題か何かだろうね。
宿題か何かだろうね。
878デフォルトの名無しさん
2018/04/22(日) 10:25:45.97ID:Ilmcglgl >>874
そのまえに、そんな乱暴にシートを削除してよいのか?
そのまえに、そんな乱暴にシートを削除してよいのか?
879デフォルトの名無しさん
2018/04/22(日) 11:37:43.72ID:kYJUlnih880デフォルトの名無しさん
2018/04/22(日) 12:07:27.96ID:G5t9FUHp881デフォルトの名無しさん
2018/04/22(日) 12:15:10.53ID:bQIDMX1u その程度も書けないようじゃマクロ使わない方がいい。特にシート削除は理解してないと危険。
882デフォルトの名無しさん
2018/04/22(日) 12:26:25.19ID:5gwwyGqC 「B列にデータがない時」ってマクロの記録じゃ無理と違うか?
883デフォルトの名無しさん
2018/04/22(日) 12:29:32.98ID:g5wVKO/X マクロの記録でヒントでも掴んでみろって事じゃないの
みんなトライエラー繰り返してる中、トライもせずに質問投げるのは印象良くない
みんなトライエラー繰り返してる中、トライもせずに質問投げるのは印象良くない
884デフォルトの名無しさん
2018/04/22(日) 15:01:52.07ID:jW53Gcv8 >>874
・for each で全シートをなめます。
・シート名に「売上」が含まれている場合、さらにB列の値を数えます。
・条件に合致したらシートを削除します。
上2つはGGればいくらでも情報でてきます。
一番下はマクロ記録でわかります。
動作上不都合な挙動があれば、その挙動を潰す方法を調べます。
基本的な動作の羅列なので、がんばって。
・for each で全シートをなめます。
・シート名に「売上」が含まれている場合、さらにB列の値を数えます。
・条件に合致したらシートを削除します。
上2つはGGればいくらでも情報でてきます。
一番下はマクロ記録でわかります。
動作上不都合な挙動があれば、その挙動を潰す方法を調べます。
基本的な動作の羅列なので、がんばって。
885デフォルトの名無しさん
2018/04/22(日) 15:40:59.16ID:Ilmcglgl シートを削除するのではなく、新しいファイルを作成する方向でやってくれないかな?
こういう素人が増えると困るんだよ。
一般人はファイルのバックアップもしないし、削除してゴミ箱まで空にして、ファイルを復元しろと言い出すから迷惑。
こういう素人が増えると困るんだよ。
一般人はファイルのバックアップもしないし、削除してゴミ箱まで空にして、ファイルを復元しろと言い出すから迷惑。
886デフォルトの名無しさん
2018/04/22(日) 16:15:38.56ID:T8IjF/fs フォームやら速度が必須でない処理はVBSとかでやった方がいいね
887デフォルトの名無しさん
2018/04/22(日) 16:20:44.69ID:n6LuIpRE コレクションのforeach処理内で
コレクション削除したらヤバイんじゃないの
コレクション削除したらヤバイんじゃないの
888デフォルトの名無しさん
2018/04/22(日) 16:30:45.70ID:Ilmcglgl889デフォルトの名無しさん
2018/04/22(日) 16:39:52.54ID:T8IjF/fs そうだね
一旦配列とかのコンテナに入れといて
for each アイテム in コンテナ
Worksheets(アイテム).Delete
next
が安全かな
一旦配列とかのコンテナに入れといて
for each アイテム in コンテナ
Worksheets(アイテム).Delete
next
が安全かな
890デフォルトの名無しさん
2018/04/22(日) 16:44:25.17ID:jW53Gcv8891デフォルトの名無しさん
2018/04/22(日) 17:48:00.30ID:Ilmcglgl 質問者がいないのに、
892デフォルトの名無しさん
2018/04/22(日) 18:19:48.56ID:u/gXMUne B列にデータがないのを効率よく判定する方法はなんだ?
背景色とかついてても空白セルならデータがないとすべきか
数式が入ってても結果が空白セルならデータがないとすべきか
半角スペースはデータがあると判定するのか
NaNやError Valueはデータがないとみなすか
考え出すと思ったより難しいなこれ
背景色とかついてても空白セルならデータがないとすべきか
数式が入ってても結果が空白セルならデータがないとすべきか
半角スペースはデータがあると判定するのか
NaNやError Valueはデータがないとみなすか
考え出すと思ったより難しいなこれ
893デフォルトの名無しさん
2018/04/22(日) 18:22:08.85ID:PsQCMKRd >>892
そもそもお前が悩む必要が皆無な件w
そもそもお前が悩む必要が皆無な件w
894デフォルトの名無しさん
2018/04/22(日) 18:34:56.15ID:lFCngtN7895デフォルトの名無しさん
2018/04/22(日) 18:47:49.33ID:5gwwyGqC >>894
それで大丈夫かどうかは質問者にしか分からないので
それで大丈夫かどうかは質問者にしか分からないので
896デフォルトの名無しさん
2018/04/22(日) 18:56:09.26ID:Ilmcglgl そんな自動化しなくてはいけないほど、シートの数が多いExcelファイルがあるなら、B列に値が入っていると決めつけているのも怖いよな。
そんなExcelファイルを作る職場だとExcelファイルのフォーマットが変更されていないかどうかのチェックも必要。
そんなExcelファイルを作る職場だとExcelファイルのフォーマットが変更されていないかどうかのチェックも必要。
897デフォルトの名無しさん
2018/04/22(日) 19:09:33.32ID:PsQCMKRd >>896
だからお前が心配する必要が皆無な件w
だからお前が心配する必要が皆無な件w
898デフォルトの名無しさん
2018/04/22(日) 20:10:15.74ID:8Z9OLZMo 条件が曖昧ならここでうだうだ考えずに質問者に明確に書くよう言えば良いだろ。
それが出てこないなら質問の体をなさないということで却下するもよし、回答したい人間が自分の想像で
回答するもよしで。
質問に書かれていないバックアップがどうこうってのも、そんなもん質問者が考えれば良いことであってこっちが
どうこう考えることじゃない。
それが出てこないなら質問の体をなさないということで却下するもよし、回答したい人間が自分の想像で
回答するもよしで。
質問に書かれていないバックアップがどうこうってのも、そんなもん質問者が考えれば良いことであってこっちが
どうこう考えることじゃない。
899デフォルトの名無しさん
2018/04/22(日) 20:39:48.94ID:CtyzUBhW countaで対象範囲拾うだけだと思ったけど、データ有り無し判定。
900デフォルトの名無しさん
2018/04/22(日) 21:42:52.36ID:Ilmcglgl >>898
下手な回答を書かれると第3者が参考にしてしまう。
下手な回答を書かれると第3者が参考にしてしまう。
901862
2018/04/22(日) 22:40:57.74ID:QxU3gWrv902デフォルトの名無しさん
2018/04/23(月) 00:55:13.87ID:sU1qXEfT903デフォルトの名無しさん
2018/04/23(月) 02:23:36.29ID:sEcyfSnM >>901
やったことがないけど、ワークブックオブジェクト変数を使えばできるかな。
やったことがないけど、ワークブックオブジェクト変数を使えばできるかな。
904デフォルトの名無しさん
2018/04/23(月) 13:20:01.73ID:7NmKhRsO ちょっと教えて下さい
列挙型の項目に数字が先頭に来ると表示が変になるのですが、なんとかなりますか?
列挙型の項目に数字が先頭に来ると表示が変になるのですが、なんとかなりますか?
905デフォルトの名無しさん
2018/04/23(月) 13:49:02.96ID:bp7TOG8C 何がどうなってるか具体的な事一切説明せずにおかしい!おかしい!って言うのがこのスレの質問者のデフォ w
906デフォルトの名無しさん
2018/04/23(月) 16:09:56.14ID:jyC8yCZ+ >>901
アクティブなシートをコードで切り替えていけばSelectionで取れる
たとえば
Workbooks("Book1.xlsx").Worksheets(1).Activate
Debug.Print Selection.Address
Workbooks("Book2.xlsm").Worksheets(2).Activate
Debug.Print Selection.Address
これで両方ブックの選択中のセルアドレスが出力されるはず
選択範囲という概念はActivateされているシートにしかないので
これ以外の方法でやるなら>>863のようにどっかに書き出しておく必要があると思われる
アクティブなシートをコードで切り替えていけばSelectionで取れる
たとえば
Workbooks("Book1.xlsx").Worksheets(1).Activate
Debug.Print Selection.Address
Workbooks("Book2.xlsm").Worksheets(2).Activate
Debug.Print Selection.Address
これで両方ブックの選択中のセルアドレスが出力されるはず
選択範囲という概念はActivateされているシートにしかないので
これ以外の方法でやるなら>>863のようにどっかに書き出しておく必要があると思われる
907デフォルトの名無しさん
2018/04/23(月) 20:16:07.45ID:o4ACymGu >>906
それだとAddressプロパティを持たないオブジェクトがSelectされてるときにエラーにならないか?
TypeName(Selection)で"Range"が返ってきたときだけ番地を拾うようにするとか、Shapeオブジェクトの場合はTopLeftCell.Addessを拾うようにするとか
それだとAddressプロパティを持たないオブジェクトがSelectされてるときにエラーにならないか?
TypeName(Selection)で"Range"が返ってきたときだけ番地を拾うようにするとか、Shapeオブジェクトの場合はTopLeftCell.Addessを拾うようにするとか
908デフォルトの名無しさん
2018/04/23(月) 22:29:47.83ID:jyC8yCZ+909デフォルトの名無しさん
2018/04/24(火) 01:52:45.14ID:lbZwsvg0 興味本位で触り始めて面白かったから本腰入れて勉強してるんだが
教本レベルから実務までのハードルが結構高いな
これ、基本的なコード覚えてしまえばほとんどパズルだよね?
上手になるとまた別の見え方ができるんかね
教本レベルから実務までのハードルが結構高いな
これ、基本的なコード覚えてしまえばほとんどパズルだよね?
上手になるとまた別の見え方ができるんかね
911デフォルトの名無しさん
2018/04/24(火) 06:45:33.52ID:ineULIRb >>909
実務レベルで使えるようになってから自分で作ったプログラムを見てみると確かに基本的なコードや基本的なアルゴリズムのパズルでしかないと思えるが、教本を読まないとコードが書けない初心者のうちからそのように侮っていても実務レベルに到達することはない
パズルの組み方そのものが問題になるからだ
実務で行いたい処理があるという前提で、そのためにVBAで実現する機能はどのようなものか、どのようなコードを書けば安全かつ確実に期待通りの機能を実現できるか、というベクトルの思考を繰り返して試行錯誤する以外に近道はないぞ
実務レベルで使えるようになってから自分で作ったプログラムを見てみると確かに基本的なコードや基本的なアルゴリズムのパズルでしかないと思えるが、教本を読まないとコードが書けない初心者のうちからそのように侮っていても実務レベルに到達することはない
パズルの組み方そのものが問題になるからだ
実務で行いたい処理があるという前提で、そのためにVBAで実現する機能はどのようなものか、どのようなコードを書けば安全かつ確実に期待通りの機能を実現できるか、というベクトルの思考を繰り返して試行錯誤する以外に近道はないぞ
912デフォルトの名無しさん
2018/04/24(火) 18:46:56.86ID:g60rXxGt 現在、入力ファイルAの体裁を整えてファイルBとして出力するツールをVBAで作成しています。
その中で、入力ファイルAではS-JISになっている文字コードを出力ファイルBではJISにしてほしいと頼まれています。(先方でのファイル取り込み時の都合のようです。)
自分で調べたところ、文字列を1文字ずつVBAのAsc関数でS-JISコード(10進数)にして、さらにHex関数によりS-JISコード(16進数)に変換するところまではたどり着きました。
さらに、ここからS-JISコード→JISコード変換のアルゴリズムに当てはめればJISコード(16進数)までは取得できると思います。
そこで質問なのですが、JISコード(16進数)から日本語文字列を復元する方法はあるのでしょうか?
Chr関数ではS-JISコード(10進数)には対応していてもJISコードには対応していない?ようでした
その中で、入力ファイルAではS-JISになっている文字コードを出力ファイルBではJISにしてほしいと頼まれています。(先方でのファイル取り込み時の都合のようです。)
自分で調べたところ、文字列を1文字ずつVBAのAsc関数でS-JISコード(10進数)にして、さらにHex関数によりS-JISコード(16進数)に変換するところまではたどり着きました。
さらに、ここからS-JISコード→JISコード変換のアルゴリズムに当てはめればJISコード(16進数)までは取得できると思います。
そこで質問なのですが、JISコード(16進数)から日本語文字列を復元する方法はあるのでしょうか?
Chr関数ではS-JISコード(10進数)には対応していてもJISコードには対応していない?ようでした
913デフォルトの名無しさん
2018/04/24(火) 19:07:17.90ID:zMJHGl6Z JISって色々あるんだけど
914デフォルトの名無しさん
2018/04/24(火) 19:42:22.62ID:R3k7NdiR >>912
16ビットのJISコードに変換したら上位8ビットと下位8ビットに分けてChrB関数で1バイトずつ出力すればいい
16ビットのJISコードに変換したら上位8ビットと下位8ビットに分けてChrB関数で1バイトずつ出力すればいい
915デフォルトの名無しさん
2018/04/24(火) 19:43:52.16ID:R3k7NdiR916912
2018/04/24(火) 19:50:39.85ID:vM6+2E7U917デフォルトの名無しさん
2018/04/24(火) 20:12:06.67ID:QhqCN0U8 Get-Content ./Input.txt -Encoding ([Text.Encoding]::GetEncoding('Shift-JIS')) |
Out-File ./Output.txt -Encoding ([Text.Encoding]::GetEncoding('ISO-2022-JP'))
Out-File ./Output.txt -Encoding ([Text.Encoding]::GetEncoding('ISO-2022-JP'))
918デフォルトの名無しさん
2018/04/24(火) 20:50:34.67ID:y2nIc1cW >>916
そのひと手間のヒューマンエラーよりお前さんがバグを作り込む確率の方が高いと思われ
そのひと手間のヒューマンエラーよりお前さんがバグを作り込む確率の方が高いと思われ
919デフォルトの名無しさん
2018/04/24(火) 21:27:53.13ID:PN6zL45J >>912
なんでADODB.Stream使わないのか理解に苦しむ
なんでADODB.Stream使わないのか理解に苦しむ
920デフォルトの名無しさん
2018/04/24(火) 21:42:34.24ID:zMJHGl6Z ADODBに入ってるのが気にくわないから使わない
921デフォルトの名無しさん
2018/04/24(火) 22:00:23.87ID:1D4v+3Mx 日本語の方言の違いなんて、自分で調べられない
Ruby を使え
Ruby を使え
922デフォルトの名無しさん
2018/04/24(火) 23:00:27.91ID:swLaOBA7 >>916
そもそもなぜExcel VBAでやるのか?
そもそもなぜExcel VBAでやるのか?
923デフォルトの名無しさん
2018/04/25(水) 00:24:09.38ID:/BAngWYJ PowerShellなら1行で終わり
VBAは金とって無駄ばかりなんだから参っちゃうよ
VBAは金とって無駄ばかりなんだから参っちゃうよ
924デフォルトの名無しさん
2018/04/25(水) 06:51:43.78ID:8LB4hW/t ちょっと待てオイ、kanjiコード変換機能ぐらい標準で提供されていないのか。
何かの参照を有効にする程度で実現できないと、VBA、幾らなんでも使えないんじゃ。
何かの参照を有効にする程度で実現できないと、VBA、幾らなんでも使えないんじゃ。
925デフォルトの名無しさん
2018/04/25(水) 07:38:44.95ID:0Sha8z7i なにをいまさら
配列のソートすらないんだぞ
配列のソートすらないんだぞ
926デフォルトの名無しさん
2018/04/25(水) 07:41:12.84ID:/BAngWYJ VBAは子供のオモチャ
幸い日本のビジネスマンは子供レベルしかいないので重宝されてる
幸い日本のビジネスマンは子供レベルしかいないので重宝されてる
927デフォルトの名無しさん
2018/04/25(水) 07:47:41.06ID:rm2LBzKT 日頃の鬱憤を「VBA使えない」と喚くことでしか発散できないってのもなかなか可哀想だなw
本当に使えなかったら普及してないんだけどそこまで頭回らない辺りが不憫
本当に使えなかったら普及してないんだけどそこまで頭回らない辺りが不憫
928デフォルトの名無しさん
2018/04/25(水) 07:49:03.35 >>924
つ ADODB.Stream
つ ADODB.Stream
929デフォルトの名無しさん
2018/04/25(水) 08:23:50.15ID:O5bsMvPg 使える・使えないが普及率に直結するとか世界観チープすぎるだろ
VBAはチープな言語だからお似合いっちゃそうだが
VBAはチープな言語だからお似合いっちゃそうだが
930デフォルトの名無しさん
2018/04/25(水) 08:44:24.36ID:rm2LBzKT 「直結する」なんて言ってないんだけどw
お人形遊びが好きだねぇ図星を疲れたのがそんなに悔しかったんだな
お人形遊びが好きだねぇ図星を疲れたのがそんなに悔しかったんだな
931デフォルトの名無しさん
2018/04/25(水) 08:52:17.08ID:O5bsMvPg な?
幼稚だろvbarrってさ
幼稚だろvbarrってさ
932912
2018/04/25(水) 09:56:12.06ID:hFZ7TZpJ >>919>>928
ありがとうございます
ADODB.streamを調べていて気になったことがあったので重ねて質問させてください
いくつかのウェブページを見たところ、ADODAを利用するときには参照設定Microsoft ActiveX Data Objects 2.8をチェックしろと書いているページがいくつかありました(書いてないページもありました)
自環境で試したところ、特にチェックしなくてもADODB.streamは動作するみたいなんですが、この参照設定はどういうためのものなんでしょうか?
ありがとうございます
ADODB.streamを調べていて気になったことがあったので重ねて質問させてください
いくつかのウェブページを見たところ、ADODAを利用するときには参照設定Microsoft ActiveX Data Objects 2.8をチェックしろと書いているページがいくつかありました(書いてないページもありました)
自環境で試したところ、特にチェックしなくてもADODB.streamは動作するみたいなんですが、この参照設定はどういうためのものなんでしょうか?
933デフォルトの名無しさん
2018/04/25(水) 11:31:08.53ID:7GDPhwwg934デフォルトの名無しさん
2018/04/25(水) 11:47:13.44935デフォルトの名無しさん
2018/04/25(水) 12:31:44.15ID:CBW/f5zC936デフォルトの名無しさん
2018/04/25(水) 12:43:28.06ID:qfD/6Ux6 VBAでHTMLに入っているJavaScriptのオンクリックを配列に入れたいのですがヒントを下さい
937デフォルトの名無しさん
2018/04/25(水) 17:57:57.64ID:s99z6Kr1 >>933
タイポ指摘でドヤ顔って子供でも恥ずかしくてできないことをようやるねぇ
タイポ指摘でドヤ顔って子供でも恥ずかしくてできないことをようやるねぇ
938デフォルトの名無しさん
2018/04/25(水) 21:28:29.48ID:ntbHaYzV タイポ指摘されて顔真っ赤の図? w
939デフォルトの名無しさん
2018/04/25(水) 21:58:11.30ID:4jlZTTJk タイポタイポのシューリンガン
940デフォルトの名無しさん
2018/04/25(水) 22:55:18.79ID:TGx01Nms >>909
亀レスだけど、多分最初に「何言ってたんだろ俺・・・」となって
その後しばらく続けた後に
「あれ?パズルって違った意味で正しいじゃん」ってなって
更に少ししてから
「最初に言った意味と後で考えた意味って違うと思ってたけど実は根本は同じだったんだ。
やっぱり俺は正しかったんだ!!」
・・・ってなると思う。多分。
君の言ってることは正しいから
そのままの考えでやって行けばいいと思うよ。
亀レスだけど、多分最初に「何言ってたんだろ俺・・・」となって
その後しばらく続けた後に
「あれ?パズルって違った意味で正しいじゃん」ってなって
更に少ししてから
「最初に言った意味と後で考えた意味って違うと思ってたけど実は根本は同じだったんだ。
やっぱり俺は正しかったんだ!!」
・・・ってなると思う。多分。
君の言ってることは正しいから
そのままの考えでやって行けばいいと思うよ。
941デフォルトの名無しさん
2018/04/25(水) 22:59:37.34ID:K7PRE5LI 発言をリファクタしたいが
そもそも意図がわからない
まさにVBAメンタル
そもそも意図がわからない
まさにVBAメンタル
942デフォルトの名無しさん
2018/04/25(水) 23:02:51.00ID:RV/USVw1 VBAエンジニアの鑑
943デフォルトの名無しさん
2018/04/25(水) 23:30:05.36ID:TGx01Nms なぜここにいる者がみなVBA「だけ」やってると思ってるような発言している人がいるんだろう。
何かと便利だからVBA「も」やっている人もいるというところまでの考えに至らないのかな?
何かと便利だからVBA「も」やっている人もいるというところまでの考えに至らないのかな?
944デフォルトの名無しさん
2018/04/25(水) 23:40:48.35ID:lWlKIfdP 何かと便利?
そもそもまずこれVBAじゃなくてよくね?じゃ?
仕方なくVBA使うはめになるんだが
そもそもまずこれVBAじゃなくてよくね?じゃ?
仕方なくVBA使うはめになるんだが
945デフォルトの名無しさん
2018/04/25(水) 23:54:38.70ID:gjlQbXYm おれはここ数年VBAなんてやってないよ
Excelに関する処理はVBSやPS
Excelに関する処理はVBSやPS
946デフォルトの名無しさん
2018/04/26(木) 00:34:59.65ID:6UTEs8Zh VBAはマジで他になにも使えない厳しい環境にいる人かなんかこじらせた人が使うもの
でも標準でPSあるから他になにも使えない環境ってのは今は滅多にないんだよね
でも標準でPSあるから他になにも使えない環境ってのは今は滅多にないんだよね
947デフォルトの名無しさん
2018/04/26(木) 00:58:31.77ID:/vLmdzNr PSがVBAより便利とかいうやつはそもそもVBAの用途がわかってないとしか思えん
948デフォルトの名無しさん
2018/04/26(木) 01:02:16.31ID:11we/xOQ ここはVBAのスレだからVBAの話をするんじゃないのか
別に他の話題を出すなとは言わんが、なんでVBAなの?みたいな話は流石に空気読めてないかと
別に他の話題を出すなとは言わんが、なんでVBAなの?みたいな話は流石に空気読めてないかと
949デフォルトの名無しさん
2018/04/26(木) 01:18:15.87ID:WexEyoKw なんでVBAなの?は一つの案としてアドバイスでもあるだろ
100キロの道案内をチャリで行くにはどうしたらいいですか?
って聞いてきたら、まずなんでチャリなの?ってなるやろ
100キロの道案内をチャリで行くにはどうしたらいいですか?
って聞いてきたら、まずなんでチャリなの?ってなるやろ
950デフォルトの名無しさん
2018/04/26(木) 01:26:45.61ID:vXKBXetI 「なんでチャリなの?」をサイクリングスレで言い出すクソバカはどんな脳みそしてるんだって話題でしょ
海を渡りたいとかいう話なら別だけどチャリで行けそうだからチャリの話題を出してるのに
「チャリは疲れるから車で行け」とか「これだからチャリンコ乗りは」とか言い出すのは場違いに決まってるだろ
海を渡りたいとかいう話なら別だけどチャリで行けそうだからチャリの話題を出してるのに
「チャリは疲れるから車で行け」とか「これだからチャリンコ乗りは」とか言い出すのは場違いに決まってるだろ
951デフォルトの名無しさん
2018/04/26(木) 03:17:03.33ID:nduhK5av 他の言語使えるオレ様エライ!ってしたいんだよ
952デフォルトの名無しさん
2018/04/26(木) 06:24:38.62ID:5wkI5WBA >>927
VBAが普及しているの(か?)なら、その理由は単にExcel付属だから。
VBAが使える言語であるという証左にはならない。
VBS見りゃ分かることだと思うが、そこまで頭回らない辺りが不憫。
VBAが普及しているの(か?)なら、その理由は単にExcel付属だから。
VBAが使える言語であるという証左にはならない。
VBS見りゃ分かることだと思うが、そこまで頭回らない辺りが不憫。
953デフォルトの名無しさん
2018/04/26(木) 06:34:18.55ID:6UTEs8Zh954デフォルトの名無しさん
2018/04/26(木) 07:58:00.08ID:vXKBXetI >>952
だから全言語を比較検討した結果の使える使えないが普及に直結してるなんて話じゃないし
どんなに否定しようが実務において使えるから普及してんだよ
むしろ碌な知識の無い事務員ですら使える言語が使えないお前の脳みそを嘆け
だから全言語を比較検討した結果の使える使えないが普及に直結してるなんて話じゃないし
どんなに否定しようが実務において使えるから普及してんだよ
むしろ碌な知識の無い事務員ですら使える言語が使えないお前の脳みそを嘆け
955デフォルトの名無しさん
2018/04/26(木) 08:40:15.59ID:YJ/3jqXK ここに居る奴は賢いのかもしれないが、スレチな役立たずの無能なレスする対人関係拗らせてる奴しか居ないのか…
956デフォルトの名無しさん
2018/04/26(木) 09:15:54.51ID:7RW+qgkz ブックの中に「名簿」と「納付書」というシートがあります。
そして「名簿」シートのF1に数字の1が入っており、A8以降に行番号が入っています。
納付書には名簿F1の値にあわせてVLOOKUP関数で返される値が入るようになっています。
そこで、F1の番号が2ずつ繰り上がるごとにシート「納付書」を印刷し、それをシート名簿のA列の最終行の数字まで繰り返す
(A列の最終行が奇数の場合にはその番号の次の偶数で終わるようにしたい)
というコードを教えてください。
↓のコードだと一つのシート内でしか機能しないです
Sheets("名簿").Select
For i = Range("F1") To Range("F2") - 1 Step 2
Range("F1") = i
ActiveSheet.PrintOut
Next
End Sub
そして「名簿」シートのF1に数字の1が入っており、A8以降に行番号が入っています。
納付書には名簿F1の値にあわせてVLOOKUP関数で返される値が入るようになっています。
そこで、F1の番号が2ずつ繰り上がるごとにシート「納付書」を印刷し、それをシート名簿のA列の最終行の数字まで繰り返す
(A列の最終行が奇数の場合にはその番号の次の偶数で終わるようにしたい)
というコードを教えてください。
↓のコードだと一つのシート内でしか機能しないです
Sheets("名簿").Select
For i = Range("F1") To Range("F2") - 1 Step 2
Range("F1") = i
ActiveSheet.PrintOut
Next
End Sub
957デフォルトの名無しさん
2018/04/26(木) 10:17:51.67ID:1F0vpiyn958デフォルトの名無しさん
2018/04/26(木) 12:12:58.85959デフォルトの名無しさん
2018/04/26(木) 12:14:27.31 あとは印刷の次の行にまたSheets("名簿").Selectか
960デフォルトの名無しさん
2018/04/26(木) 12:25:48.74ID:qzHLyUF8 >>954
VBAに取り憑かれるとこうなるのかな
どうしてもVBAをイケてるから普及してる言語に認定したいらしい
現実には他の選択肢を調べる発想すらない素人がなんとなくMicrosoftのブランドと簡単って宣伝文句につられて使ってるだけ
そりゃユーザー数だけなら多くなるわな
VBAに取り憑かれるとこうなるのかな
どうしてもVBAをイケてるから普及してる言語に認定したいらしい
現実には他の選択肢を調べる発想すらない素人がなんとなくMicrosoftのブランドと簡単って宣伝文句につられて使ってるだけ
そりゃユーザー数だけなら多くなるわな
961デフォルトの名無しさん
2018/04/26(木) 12:36:33.48ID:pitnEJRh ループ処理で以下のクリップボードに変数を格納する関数を通すと2回目でエラーになってしまいます
原因がわかれば教えてください
関数
Sub clip(strwork As String)
With New MSForms.DataObject
.SetText strwork '変数の値をDataObjectに格納する
.PutInClipboard 'DataObjectのデータをクリップボードに格納する
End With
Exit Sub
End Sub
エラー内容
実行時エラー'-2147221040(800401d0)'
DataObject:PutClipboardOpenClipboardに失敗しました
このあとSetCursorPosとSendKeys "^v"を使ってブラウザ上のテキストに貼り付けしてます
1回目の貼り付け時にブラウザが固まっているのでそれも影響しているかも知れません
よろしくお願いします
原因がわかれば教えてください
関数
Sub clip(strwork As String)
With New MSForms.DataObject
.SetText strwork '変数の値をDataObjectに格納する
.PutInClipboard 'DataObjectのデータをクリップボードに格納する
End With
Exit Sub
End Sub
エラー内容
実行時エラー'-2147221040(800401d0)'
DataObject:PutClipboardOpenClipboardに失敗しました
このあとSetCursorPosとSendKeys "^v"を使ってブラウザ上のテキストに貼り付けしてます
1回目の貼り付け時にブラウザが固まっているのでそれも影響しているかも知れません
よろしくお願いします
962デフォルトの名無しさん
2018/04/26(木) 15:09:38.89ID:ifqqE2DW963デフォルトの名無しさん
2018/04/26(木) 15:14:40.98ID:vXKBXetI バカが何をどう言おうが現実にVBAは使えてるし使われてるんだよ
顔真っ赤にしてバカなこと言う前に正しく現実を見るところから始めよう
顔真っ赤にしてバカなこと言う前に正しく現実を見るところから始めよう
964956
2018/04/26(木) 15:18:00.48ID:7RW+qgkz965デフォルトの名無しさん
2018/04/26(木) 17:16:40.00ID:CPNcKS6O Sheet選択についてSheetが7つあります。
Sheet1/Sheet2/Sheet3/1/2/3/4
Sheet名「1」を選択するためにはこの方法しかないでしょうか?
------------------------
Dim cnt As long
cnt = 1
sheets(”” & cnt & "").select
------------------------
↓これだとSheet1選択
-------------------------
Dim cnt As long
cnt = 1
sheets(cnt).select
-------------------------
Sheet1/Sheet2/Sheet3/1/2/3/4
Sheet名「1」を選択するためにはこの方法しかないでしょうか?
------------------------
Dim cnt As long
cnt = 1
sheets(”” & cnt & "").select
------------------------
↓これだとSheet1選択
-------------------------
Dim cnt As long
cnt = 1
sheets(cnt).select
-------------------------
966デフォルトの名無しさん
2018/04/26(木) 17:56:34.08ID:6+UF6pSh967デフォルトの名無しさん
2018/04/26(木) 18:44:21.68ID:vXKBXetI >>966
まともな人は「VBAで作って」と言われたらVBAで作るんだぜ
しかもPowerShellやらC#やらRubyやらで工数かけた分は依頼者が受け取らないから全部無駄になるんだぜ
今まで知らなかったんだろうけどこれで一つ勉強になったな
まともな人は「VBAで作って」と言われたらVBAで作るんだぜ
しかもPowerShellやらC#やらRubyやらで工数かけた分は依頼者が受け取らないから全部無駄になるんだぜ
今まで知らなかったんだろうけどこれで一つ勉強になったな
968デフォルトの名無しさん
2018/04/26(木) 18:47:45.62ID:1F0vpiyn まともな業界はVBAで作ってなんて言わない
969デフォルトの名無しさん
2018/04/26(木) 18:48:34.66ID:6+UF6pSh まともな人はまずVBAでやるべき仕事か判断して別の選択肢も提案するんだよ
言われたことしかできない底辺には難しいかもしれないがビジネスってそういうことなの
言われたことしかできない底辺には難しいかもしれないがビジネスってそういうことなの
970デフォルトの名無しさん
2018/04/26(木) 18:51:16.28ID:ftOVszhQ 近頃やたらとパワー系バカが暴れとるなw
一体どうしたんやコイツw
一体どうしたんやコイツw
971デフォルトの名無しさん
2018/04/26(木) 19:18:37.14ID:vXKBXetI972デフォルトの名無しさん
2018/04/26(木) 19:55:00.04ID:PM4/5yqo >>965
シートを特定する方法は3つあって
1.オブジェクト名
2.シート名
3.インデックス番号
で、あなたのやり方はシート名
オブジェクト名はVBEで確認できて初期値は追加した順にSheet1〜なので
その場合、 Sheet4.Select でも選択できると思う
オブジェクト名は好きに変えられるので
わかりやすい名前にしとおくと、誰かが勝手にシート名を変えようが
そのオブジェクト名でシートを指定できるのでオススメ
インデックスで指定するなら Sheets(4).select
インデックスは単純に左から数えた順番ね
シートを特定する方法は3つあって
1.オブジェクト名
2.シート名
3.インデックス番号
で、あなたのやり方はシート名
オブジェクト名はVBEで確認できて初期値は追加した順にSheet1〜なので
その場合、 Sheet4.Select でも選択できると思う
オブジェクト名は好きに変えられるので
わかりやすい名前にしとおくと、誰かが勝手にシート名を変えようが
そのオブジェクト名でシートを指定できるのでオススメ
インデックスで指定するなら Sheets(4).select
インデックスは単純に左から数えた順番ね
973デフォルトの名無しさん
2018/04/26(木) 20:04:54.98ID:PM4/5yqo974デフォルトの名無しさん
2018/04/26(木) 20:53:29.98ID:azksLNTx 吹いた
975デフォルトの名無しさん
2018/04/26(木) 21:05:15.36ID:lkizjysQ メゾット君大量発生してて草
976デフォルトの名無しさん
2018/04/26(木) 21:23:42.24ID:r/OY0BCQ 別にプロの仕事として使われてる訳ではないと思うけどね、VBA。
Excelの使用頻度が高い事務職とかの人が使うイメージ。
何でもかんでも金払ってシステム化してくれる会社なんて無いし、例え使えたとしても簡単に他の言語の開発環境を手配できる訳でもないし。
powershell推しの人はメモ帳で書いてるの?
Excelの使用頻度が高い事務職とかの人が使うイメージ。
何でもかんでも金払ってシステム化してくれる会社なんて無いし、例え使えたとしても簡単に他の言語の開発環境を手配できる訳でもないし。
powershell推しの人はメモ帳で書いてるの?
977デフォルトの名無しさん
2018/04/26(木) 22:06:42.62 サクラエディタだろ🙄
978デフォルトの名無しさん
2018/04/26(木) 22:53:45.01ID:6/yp9D/N PowerShell ISE
979デフォルトの名無しさん
2018/04/26(木) 23:05:32.69ID:4xU9Va0k980デフォルトの名無しさん
2018/04/26(木) 23:08:02.27ID:PM4/5yqo981デフォルトの名無しさん
2018/04/27(金) 01:20:38.90ID:XIoO9rX1 >>976
Excelと関係ないことをExcel VBAでやりたいという質問者がいる。
文字コード変換をExcel VBAで自作するので教えてくれという人間に対して、VBAを勧めるのはいくらなんでもおかしいだろ。
Excelと関係ないことをExcel VBAでやりたいという質問者がいる。
文字コード変換をExcel VBAで自作するので教えてくれという人間に対して、VBAを勧めるのはいくらなんでもおかしいだろ。
982デフォルトの名無しさん
2018/04/27(金) 01:22:57.14ID:HF+12vcg 実際VBAでもADODB使って数行でできることなのに何をそんな発狂してるんだよ
983デフォルトの名無しさん
2018/04/27(金) 07:29:42.30ID:x5ddf63d 処理の進捗をテキストボックスに表示する方法なの
ですが何かサンプルはありませんか?
出来れば自動的にスクロールしてくれるといいのですが
ですが何かサンプルはありませんか?
出来れば自動的にスクロールしてくれるといいのですが
984デフォルトの名無しさん
2018/04/27(金) 08:35:57.38ID:OIkEEKud985デフォルトの名無しさん
2018/04/27(金) 09:53:41.83ID:ssDw3ggw986デフォルトの名無しさん
2018/04/27(金) 10:24:15.83ID:VVRpgY9f987デフォルトの名無しさん
2018/04/27(金) 10:53:19.60ID:24cBGVvy Excel エンジニアは、プログラマーじゃない。
企業内のExcel マクロエンジニア
Excel は、表示とデータが合体しているから、プログラミングが難しい。
Rails などの、MVC みたいに分かれていない
Excel は、データをexport して、Ruby で処理して、import するのが、最も簡単。
これで表示関係なく、ビジネスロジックだけに集中できる
>>976-978
VSCode
企業内のExcel マクロエンジニア
Excel は、表示とデータが合体しているから、プログラミングが難しい。
Rails などの、MVC みたいに分かれていない
Excel は、データをexport して、Ruby で処理して、import するのが、最も簡単。
これで表示関係なく、ビジネスロジックだけに集中できる
>>976-978
VSCode
988デフォルトの名無しさん
2018/04/27(金) 11:01:30.91ID:5M69ecQt989デフォルトの名無しさん
2018/04/27(金) 11:06:36.26ID:1E0b+/ui 進捗の表示で自動スクロールって、処理ログを表示したいって事じゃないのかな
全体像が分からないから提案すら出来ない状況だけど
全体像が分からないから提案すら出来ない状況だけど
990デフォルトの名無しさん
2018/04/27(金) 11:15:47.31ID:zdd5R6zJ Debug.Printでイミディエイトウィンドウに出力するみたいなことをフォームでやりたいってことじゃろ
このスレ住民の読解力低すぎない?実務でクライアントの意向理解できてるの?
このスレ住民の読解力低すぎない?実務でクライアントの意向理解できてるの?
991デフォルトの名無しさん
2018/04/27(金) 11:57:22.87 >>987
Ruby(笑)
Ruby(笑)
992デフォルトの名無しさん
2018/04/27(金) 12:23:59.13ID:aFuuJPZg993デフォルトの名無しさん
2018/04/27(金) 12:42:48.64ID:Z6S9Pog7 >>987
お前EXCELに何やらせようとしてんの?w
MVCモデルなんてシステム作成するときに使うもんだろ
EXCEL上でデカいシステムでも作るつもりなのかよw
RubyやC#が悪いとは思わんがお前の頭は相当に悪そうだなw
お前EXCELに何やらせようとしてんの?w
MVCモデルなんてシステム作成するときに使うもんだろ
EXCEL上でデカいシステムでも作るつもりなのかよw
RubyやC#が悪いとは思わんがお前の頭は相当に悪そうだなw
994デフォルトの名無しさん
2018/04/27(金) 13:24:19.95ID:zdd5R6zJ >>992
自動的にスクロールは難しそうなので最新の進捗を1行目に追記するようにした方が楽
自動的にスクロールは難しそうなので最新の進捗を1行目に追記するようにした方が楽
995デフォルトの名無しさん
2018/04/27(金) 16:16:03.70ID:j5wh8y7F996デフォルトの名無しさん
2018/04/27(金) 16:42:05.34ID:UmeTlh/w 社内業務効率化のために使われるのが常だわな
997デフォルトの名無しさん
2018/04/27(金) 17:38:05.91ID:3dQ/JE4S >>993
こういうバカがクソ使いにくいbookを作るんだよなぁ
こういうバカがクソ使いにくいbookを作るんだよなぁ
998デフォルトの名無しさん
2018/04/27(金) 17:50:21.87ID:thq99FCt MVCでもMVVMでもなんでもいいけど入出力とデータを分けてくれ
そしてデータを正規化してくれ
VBAerさんはその程度の基本すら出来てない人ばっかりだ
そんなんじゃブック渡された方も迷惑だよ
そしてデータを正規化してくれ
VBAerさんはその程度の基本すら出来てない人ばっかりだ
そんなんじゃブック渡された方も迷惑だよ
999デフォルトの名無しさん
2018/04/27(金) 17:56:59.29ID:1E0b+/ui 自分の頭の中にしかいないVBAerとやらの話をここでされてもなぁ
1000デフォルトの名無しさん
2018/04/27(金) 18:22:55.95ID:bvIKSWev おっと
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 21時間 57分 51秒
新しいスレッドを立ててください。
life time: 89日 21時間 57分 51秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- そういや米倉涼子はどうなったんんや?
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- ( -᷄ὢ-᷅ )💤
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ( ´・ω・` )朝ですぞー
