Excel VBA 質問スレ Part62

■ このスレッドは過去ログ倉庫に格納されています
1
垢版 |
2019/06/24(月) 00:21:37.48
!extend:checked:vvvvv:1000:512

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

※前スレ
Excel VBA 質問スレ Part61
http://mevius.5ch.net/test/read.cgi/tech/1556203263/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/06/24(月) 09:54:51.06ID:pOxYP/iS0
保守
2019/06/24(月) 10:30:40.50ID:/dcVGEspM
>>1
令和初乙
2019/06/24(月) 13:02:31.59ID:H9TPhtT7a
皆さん無知はいいんですよ
誰でも知らないこと、間違って理解してることはあるんだから

だけど知ったような口をきくから叩かれるのですよ
気をつけましょうね
5デフォルトの名無しさん
垢版 |
2019/06/24(月) 15:03:11.87
令和初か
2019/06/24(月) 20:50:58.37ID:zxVE+D4VM
>>4
なんか辛い目にあったのか?
2019/06/25(火) 20:13:59.77ID:YzkEODl+a
ムチでたたかれたいんじゃね
2019/06/26(水) 18:24:48.22ID:0wa1QMM+d
オートフィルターで抽出条件を変数にして繰り返し処理で1ずつ加算していくことは出来ませんか?
下記では出来ませんでした。

For i = 1 to 10
Range("A1").AutoFilter _
Field:=2, Criteria1:="i"
next
2019/06/26(水) 18:55:16.75ID:WMWleXLcr
iの前後にある"は要らないのでは
2019/06/26(水) 21:19:57.14ID:G0xbFDCN0
何故ダブルクォーテーションで括ろうとしたのか全く意味不明。
2019/06/26(水) 21:32:13.70ID:0wa1QMM+d
なるほど!ありがとうございます。最初記録させてそれを元に1つずつやろうと思って、その名残で囲っていました。
助かります!
2019/06/26(水) 23:33:00.96ID:HbMJ8lDB0
中二病みたいな感じにしたらこうかな?

┌→ FoR Z = 1 ─┐
│           └→ 10
│ RANgE("A1").AutoF F = 2, C = Z
│        │
└┐       │
  └ NExT   │
          ↓
          ×
2019/06/27(木) 01:44:52.76ID:wmQpTLu90
面白さを解説してくれ
2019/06/27(木) 04:56:56.51ID:LPdAyFsH0
感じ取れよ・・・
2019/06/27(木) 05:07:29.23ID:qGKhWTNI0
そこはNExTじゃなくてNeXTにしないと
16デフォルトの名無しさん (ワッチョイ d602-/vdH)
垢版 |
2019/06/27(木) 19:55:21.93ID:M8DBqUMl0
VBAができるようになると、xlsmのファイルの中には、普通のワークブック関数って使ったりしないんですか?

例えば、セルの値を別のセルに入れたりとか、if関数とか、簡単なものも
全部 VBAで書いたりするんですか??

それとも混在するんですかね??
2019/06/27(木) 20:02:20.18ID:rZhnxql+0
>>16
マクロでないと出来ないことをするために使うのが普通
2019/06/27(木) 20:02:49.59ID:JZwmukYw0
>>16
処理の内容によって関数の方が良い場合とVBAの方が良い場合がある。
だから内容次第。
混在もあり得る。

でもVBAメインで考えてる時は関数のことは忘れがちで全部VBAにしてしまうことも多い。
あと、自分が組む場合はそもそも関数じゃ無理な処理が多い。
2019/06/27(木) 21:14:07.66ID:8D+6ahzu0
変えられがちなセル関数をリセットするようなのとか
2019/06/27(木) 23:03:15.57ID:It0Wr+rk0
>>16
しない。
VBAが出来るようになると、発想自体が変わるから。
手で数字を入れて、計算式で答えを出す、みたいな使い方にならなくなる。

コマンドボタンを押すと、Webとかデータベースから自動で情報を探してきて、
シートに必要な答えだけを表示するとか、そんな使い方になる。
21デフォルトの名無しさん (ワッチョイ 3e8c-zD22)
垢版 |
2019/06/27(木) 23:08:08.30ID:T3xK78tz0
>>16
ワークシート関数の方が100倍早いからできないことだけVBAを使う
2019/06/27(木) 23:50:13.90ID:It0Wr+rk0
>>21
それは関数とかバージョンによると思うけど・・。
2013のVLOOKUPなら、VBA+SQLの方が何倍も速いし。
23デフォルトの名無しさん (ワッチョイ 3e8c-zD22)
垢版 |
2019/06/27(木) 23:52:45.12ID:T3xK78tz0
超初心者へのアドバイスなんだからザックリでいいんだよ
2019/06/28(金) 00:44:00.93ID:PbHMOvL40
だな

>>16
ワークブック関数ていうものは使ったことないから分からないスマン
2019/06/28(金) 00:52:55.40ID:4xkaC8y70
意味なくマクロ仕込んでるファイルは嫌われるので関数で済むものはなるべくそちらで
2019/06/28(金) 09:16:53.79ID:caJaiAqwM
ワークシート関数でできることはワークシート関数で済ませて
データの差し替えとかそういうところだけVBAを使う
27デフォルトの名無しさん (スプッッ Sdea-mW/F)
垢版 |
2019/06/28(金) 09:29:37.11ID:jtjZs4Dcd
そうすると関数とVBAの2つを覚える必要があるからVBAで出来るならBBAでやるのが簡単
2019/06/28(金) 09:35:04.68ID:IiKC1YBqM
>>26
それってコンセンサスないと思えよ
2019/06/28(金) 09:37:37.70ID:8sFMCkEs0
コンセンサスは無いけど実務上>>26が一番安定するな
2019/06/28(金) 10:08:23.19ID:Ge4DIzuq0
無駄にVBA使われてると「これ作った人承認欲求強いんかな」って思うわ
臨機応変に使い分けできる方がいい
2019/06/28(金) 12:12:11.20ID:8ZSyBqDMa
基本ワークシート使って無理なものはVBAかな

そもそもワークシート使わないならVBAも使わないな
2019/06/28(金) 13:05:33.48ID:Ug9PnKsO0
式が長くなったり作業列がいくつも必要になるような処理はVBAだわ
深いネストとか配列数式とか使うのもいいけど、ワークシート関数だけにこだわると、見通しや保守性が悪くなることもあるし

地味に厄介なのが条件付き書式
これも他人が作ったのを保守すると地獄を見ることになる
2019/06/28(金) 13:39:24.53ID:lRyPlVqwM
保守性で考えると名前の定義が割と曲者
大抵ぶっ壊れてる
2019/06/28(金) 17:29:45.12ID:IiKC1YBqM
>>33
範囲名のこと?
2019/06/28(金) 19:13:18.48ID:7K6czL1cM
>>32
> 地味に厄介なのが条件付き書式
> これも他人が作ったのを保守すると地獄を見ることになる
頑張ってA1:A10に設定したのに次に見たらA1:A3,A4,A5:A7,A8:A9,A10に分割されてたり
マージしろとまでは言わないけど設定した奴を崩すなよ…
2019/06/28(金) 19:24:19.77ID:8sFMCkEs0
コピーペーストすると範囲がぶっ壊れるんだ
2019/06/28(金) 19:30:02.78ID:iRyUn2/nM
条件付き書式が壊れるのは仕様らしいぞ
よって改善される見込みも薄い
2019/06/28(金) 20:30:33.91ID:E4Gg/kBRd
VBAで設定するの追加しとけばOK
2019/06/28(金) 22:15:25.94ID:x+6aVDsg0
関数と条件付き書式は被害者。
これ自体は何も悪くないのに、知らないうちに壊すアホのせいで、
糞みたいに思われてる。
2019/06/28(金) 22:55:25.47ID:3rVPyv1n0
それは仕組みが悪い
人のせいにしてはいかんずら
2019/06/29(土) 00:26:23.28ID:n02ql8lh0
ちょっとニッチな質問失礼します。

バーコードによる品物管理のvbaの検討中です。

バーコードをスキャンした際に、数字に交じって、
グループセパレータ(GS) Asciiコード(0x1d)が出力されるタイプのバーコードを
スキャンした際、文字として存在しない、Ascii 0x1dが入力されたことを検知する術は
何かあるでしょうか。

スキャンしたデータは例えば、0000(0x1d)1234という形でスキャナから飛んできてるはずなのですが、
エクセル上の表記は、当然ながら00001234となってしまいます。

飛んでくる文字のasciiコードを逐一キャッチできれば、0x1dを検知できるかと思うのですが、
vbaでそんなこと可能でしょうか。
2019/06/29(土) 00:30:19.89ID:+e4iLYRh0
>>41
方法は読み取り機ごとに違う
機種によって可能だったり困難だった不可能だったりする
詳細はメーカーに問い合わせるしかない
2019/06/29(土) 00:48:05.66ID:N8jtlPKB0
>>41
どういう形でスキャン結果が来るのか知らんけど、文字列であれば
chr系の関数で一文字ごとに判定してみれば
2019/06/29(土) 01:05:03.58ID:ZIaZJNy10
>ちょっとニッチな質問失礼します。

ここの用途不明の質問に比べたら、
バーコードなんて超普通。
2019/06/29(土) 06:38:14.13ID:e27Fxp8l0
>>41
検知するだけだったら
0< InStr(s, ちゃー(&H1d))
ではダメなの?
2019/06/29(土) 06:44:07.39ID:e27Fxp8l0
Chr が投稿出来ないのか
2019/06/29(土) 07:42:08.89ID:63PqHEX+0
バーコードリーダーを買い換える
二千円くらいであるでしょ
2019/06/29(土) 08:02:50.58ID:pdRWGZY40
おれはUSB-COMでの読取りに挑戦してるけど
なかなかうまくいかないわ
2019/06/29(土) 08:41:34.78ID:ar/F9wgf0
スマホアプリ使ってるな
COGNEXのSCANNERってやつ

>>41
2つに分けたほうが良いと思う
・バーコードスキャン、文字をセルに入力
・入力したセルに対してvbaでfindか何かで検知。changeイベントになると思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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