探検
Excel VBA 質問スレ Part51
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sd4a-O827)
2017/11/08(水) 11:26:30.13ID:+KUB1/9hdスレ立ての際は一行目に
!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総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
※前スレ
Excel VBA 質問スレ Part50
http://mevius.2ch.net/test/read.cgi/tech/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
247デフォルトの名無しさん (ワッチョイ 47b3-2sqJ)
2017/11/25(土) 23:36:51.22ID:Yv0FOuti0248デフォルトの名無しさん (ワッチョイ 5fe7-8Ex9)
2017/11/25(土) 23:47:28.66ID:Sg1k8TV00249デフォルトの名無しさん (スプッッ Sd1f-3JRZ)
2017/11/26(日) 09:00:43.39ID:/OBEl30Ad 大事じゃない変数なんてないんだよ
みんなそれぞれに役割があって、一生懸命に生きてるんだから
みんなそれぞれに役割があって、一生懸命に生きてるんだから
250デフォルトの名無しさん (ワッチョイ 47b3-2sqJ)
2017/11/26(日) 09:30:00.33ID:ci9PkC0t0 >>248
それは違うだろ
まあ、使い捨てのテストなんかは適当にやるけど
長い変数名が嫌なのは打つのが面倒だからなんだろうけど、そもそも同じ変数が何度も出てくる時点でリファクタリングの臭いがするわけでな
それは違うだろ
まあ、使い捨てのテストなんかは適当にやるけど
長い変数名が嫌なのは打つのが面倒だからなんだろうけど、そもそも同じ変数が何度も出てくる時点でリファクタリングの臭いがするわけでな
251デフォルトの名無しさん (ワッチョイ 5fe7-8Ex9)
2017/11/26(日) 11:10:58.75ID:A1ZwwN/70 >>250
ローカル変数に限っていうなら、上の方がよくて下に行くにしたがって悪くなると思っている
・ローカル変数がない
・tmp とか a とか x とかいう名前で十分わかる
・適切な名前をつけることでよくわかる
・適切な名前がつけられていないことで混乱する
・適切な名前がつけられているにもかかわらず混乱する
そうだよね?
ローカル変数に限っていうなら、上の方がよくて下に行くにしたがって悪くなると思っている
・ローカル変数がない
・tmp とか a とか x とかいう名前で十分わかる
・適切な名前をつけることでよくわかる
・適切な名前がつけられていないことで混乱する
・適切な名前がつけられているにもかかわらず混乱する
そうだよね?
252デフォルトの名無しさん (ワッチョイ 27af-tzt8)
2017/11/26(日) 11:15:24.53ID:hep87Sd80 >・適切な名前をつけることでよくわかる
>・適切な名前がつけられていないことで混乱する
同じことじゃね?
>・適切な名前がつけられていないことで混乱する
同じことじゃね?
253デフォルトの名無しさん (ワッチョイ 27e3-tRV8)
2017/11/26(日) 11:16:38.23ID:KMInKg0R0 ソンタクして変数名にvarを採用
254デフォルトの名無しさん (ワッチョイ 5fe7-8Ex9)
2017/11/26(日) 11:24:16.70ID:A1ZwwN/70255デフォルトの名無しさん (ドコグロ MM1f-CDhT)
2017/11/26(日) 11:44:51.98ID:DTyNodR2M >>249
底辺のお前も頑張ってるもんな w
底辺のお前も頑張ってるもんな w
256デフォルトの名無しさん (ワッチョイ 67f7-3JRZ)
2017/11/26(日) 11:50:05.48ID:ApNVvKeX0257デフォルトの名無しさん (ワッチョイ 5fb3-CDhT)
2017/11/26(日) 12:54:24.61ID:pGcZHtwF0258デフォルトの名無しさん (ワッチョイ 079f-6+xn)
2017/11/26(日) 12:56:36.30ID:OTnHPyYR0 VBAからどんどん離れて公開オナニーになってきた
259デフォルトの名無しさん (ワッチョイ 47b3-2sqJ)
2017/11/26(日) 13:04:15.84ID:ci9PkC0t0260デフォルトの名無しさん (ワッチョイ 5fb3-CDhT)
2017/11/26(日) 13:33:08.74ID:pGcZHtwF0261デフォルトの名無しさん (ワッチョイ 47b3-2sqJ)
2017/11/26(日) 14:16:29.61ID:ci9PkC0t0262デフォルトの名無しさん (ワッチョイ 5fb3-CDhT)
2017/11/26(日) 14:40:03.00ID:pGcZHtwF0263デフォルトの名無しさん (ワッチョイ 5fe7-8Ex9)
2017/11/26(日) 15:20:43.89ID:A1ZwwN/70264デフォルトの名無しさん (アウアウカー Sadb-tRV8)
2017/11/26(日) 16:18:08.52ID:t/ZpdAAca ( ・ω・)∩シツモーン
範囲A1:C10の値をまとめてD1:F10に代入するときにさ
直接=で結ぶと駄目で
一旦変数で
tmp=range(A1:C10).value
range(D1:F10)=tmp
とかいうふうにすればオッケーなのって何でなのん?
範囲A1:C10の値をまとめてD1:F10に代入するときにさ
直接=で結ぶと駄目で
一旦変数で
tmp=range(A1:C10).value
range(D1:F10)=tmp
とかいうふうにすればオッケーなのって何でなのん?
265デフォルトの名無しさん (ワッチョイ 5fe7-8Ex9)
2017/11/26(日) 16:56:09.10ID:A1ZwwN/70266デフォルトの名無しさん (ワッチョイ 5fe7-8Ex9)
2017/11/26(日) 17:06:14.25ID:A1ZwwN/70267デフォルトの名無しさん (ワッチョイ 67f7-3JRZ)
2017/11/26(日) 17:18:28.93ID:ApNVvKeX0 値のコピーは
Range("D1:F10") = Range("A1:C10").Value
Range("D1:F10") = Range("A1:C10").Value
268デフォルトの名無しさん (アウアウイー Safb-2sqJ)
2017/11/27(月) 09:03:15.77ID:3l0DMD54a 範囲が同じなら
R1.Value=R2.Valueで行けるな、普通に
Set R1=R2はなんか無理
R1=R2でいけない理由はよくわからん
RangeオブジェクトのデフォルトプロパティってValueだよね?
R1.Value=R2.Valueで行けるな、普通に
Set R1=R2はなんか無理
R1=R2でいけない理由はよくわからん
RangeオブジェクトのデフォルトプロパティってValueだよね?
269デフォルトの名無しさん (ワッチョイ bf9d-XMpE)
2017/11/27(月) 12:39:02.79ID:Hzamsy590270デフォルトの名無しさん (ワッチョイ bf9f-n8us)
2017/11/27(月) 22:21:45.18ID:HF1f2kGW0 >>268
Setを使うということはオブジェクトということだぞ。
それはRangeそのものを代入することを意味する。
A1セルにB1セルを代入など出来よう筈が無い。
A1セルのアドレスがB1?
意味不明だろ。
Setを使うということはオブジェクトということだぞ。
それはRangeそのものを代入することを意味する。
A1セルにB1セルを代入など出来よう筈が無い。
A1セルのアドレスがB1?
意味不明だろ。
271デフォルトの名無しさん (オイコラミネオ MM4f-6+xn)
2017/11/27(月) 22:54:13.44ID:scsxtpuJM indirectの悪口はそこまでだ
272デフォルトの名無しさん (ワッチョイ 5faf-5mWG)
2017/11/27(月) 23:55:45.37ID:++h0dxh80 indirectが未だに理解できない
273デフォルトの名無しさん (ワッチョイ 47b3-2sqJ)
2017/11/27(月) 23:58:34.84ID:VuuuCAGm0 >>270
rangeオブジェクトの実体はアドレス情報ってことか?
rangeオブジェクトの実体はアドレス情報ってことか?
274デフォルトの名無しさん (ワッチョイ bf9f-n8us)
2017/11/28(火) 02:02:42.04ID:+NcnLu/Q0275デフォルトの名無しさん (ワッチョイ 079f-6+xn)
2017/11/28(火) 07:27:08.64ID:ZnyBsd4x0 indirectとかsumproductとか、便利なんだけどいまいちよく解らんよな。
276デフォルトの名無しさん (ワッチョイ 078a-lrN+)
2017/11/28(火) 09:30:34.94ID:PHeqRDr40 忘れちまえよindirectの事なんか
277デフォルトの名無しさん (スップ Sd7f-cUxe)
2017/11/28(火) 09:41:03.64ID:/j8R3q5Od278デフォルトの名無しさん (アウアウイー Safb-2sqJ)
2017/11/28(火) 10:01:09.63ID:mtOclWiza >>274
いやまあ、セル同士を直接セットが無理っぽいのは何となく感覚でわかるんだが、どういう動きでそうなってんのかなーって気になるわけよ
いやまあ、セル同士を直接セットが無理っぽいのは何となく感覚でわかるんだが、どういう動きでそうなってんのかなーって気になるわけよ
279デフォルトの名無しさん (ワッチョイ 7fb9-+V5r)
2017/11/28(火) 12:43:56.96ID:ZLcA5r8L0 Range()みたいなのって返却値がRangeクラスなだけあってRange()自体は関数だから
280デフォルトの名無しさん (ワッチョイ 67f7-3JRZ)
2017/11/28(火) 14:06:44.13ID:WkhkCF1D0 Rangeオブジェクト
Rangeプロパティ
Range関数
Rangeでチン
これが区別できれば完璧
Rangeプロパティ
Range関数
Rangeでチン
これが区別できれば完璧
281デフォルトの名無しさん (バットンキン MM3f-wNoG)
2017/11/28(火) 22:19:20.97ID:0EijvfTXM ら...らんげ?
(´・ω・`)b
(´・ω・`)b
282デフォルトの名無しさん (ワッチョイ 47b3-2sqJ)
2017/11/29(水) 19:36:16.84ID:vIwO7IkJ0283デフォルトの名無しさん (アウアウオー Sa12-9GJZ)
2017/11/30(木) 20:52:21.44ID:Acf/eaNYa リストを絞り込み別のリストで1行だけを表示できるようにしたらどうしたらいいでしょうか?
わかりやすくいうと、sheet1にA1からZ1000までのリスト置き、それを何らかの方法で絞込
sheet2のEの1にE列の絞り込んだ1行目をEの2にF列の1行目を表示し次へを押すと2行目を表示するようにしたい
オートフィルみたいなことですが表示したいセルが文文章で多くそのセルだけを表示できるようにしたいです。
1行だけならなんとなくわかるのですが次の行にコマンドボタンを押すことで表示する方法はイメージできません。
for文ならiを使えばいいんでしょうけどやりたいことと違う
わかりやすくいうと、sheet1にA1からZ1000までのリスト置き、それを何らかの方法で絞込
sheet2のEの1にE列の絞り込んだ1行目をEの2にF列の1行目を表示し次へを押すと2行目を表示するようにしたい
オートフィルみたいなことですが表示したいセルが文文章で多くそのセルだけを表示できるようにしたいです。
1行だけならなんとなくわかるのですが次の行にコマンドボタンを押すことで表示する方法はイメージできません。
for文ならiを使えばいいんでしょうけどやりたいことと違う
284デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/11/30(木) 21:50:06.23ID:ECoRVPVY0 >>283
Find関数使って検索してヒットした行数を返すようにして、
受け取った行数を元に情報を取得、次へボタンはFindNextにしておく。
というのが一番簡単かなぁ。本当はExcelじゃなくてAccessで扱う方がやりやすいんだけど。
Find関数使って検索してヒットした行数を返すようにして、
受け取った行数を元に情報を取得、次へボタンはFindNextにしておく。
というのが一番簡単かなぁ。本当はExcelじゃなくてAccessで扱う方がやりやすいんだけど。
285デフォルトの名無しさん (ワッチョイ 2aaf-1sOs)
2017/12/01(金) 14:32:31.35ID:4uYh51s/0 以下不明点を教えて
1なぜ変数を初期化するのか?
2なぜNextjでjだけループが終わるのか?
3If Hantei Then (もしも変数の場合は。。。) もはや意味がわからない
初心者にもわかりやすく答えよ
Sub CorrectCode()
Dim i As Long
Dim j As Long
Dim Hantei As Boolean
'変数の値を初期化する
Hantei = False
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(i, 1) = Cells(j, 3) Then
'変数に"True"を代入する
Hantei = True
Exit For
End If
Next j
If Hantei Then
'変数の値を"False"に戻す
Hantei = False
Else
'セルの背景色を変える(チェックする)
Cells(i, 1).Interior.ColorIndex = 6
End If
Next i
End Sub
1なぜ変数を初期化するのか?
2なぜNextjでjだけループが終わるのか?
3If Hantei Then (もしも変数の場合は。。。) もはや意味がわからない
初心者にもわかりやすく答えよ
Sub CorrectCode()
Dim i As Long
Dim j As Long
Dim Hantei As Boolean
'変数の値を初期化する
Hantei = False
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(i, 1) = Cells(j, 3) Then
'変数に"True"を代入する
Hantei = True
Exit For
End If
Next j
If Hantei Then
'変数の値を"False"に戻す
Hantei = False
Else
'セルの背景色を変える(チェックする)
Cells(i, 1).Interior.ColorIndex = 6
End If
Next i
End Sub
286デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/01(金) 14:54:37.77ID:RC6w6Z/F0 >>285
Next j の捉え方からすると、そもそも実行の順番が分かっていないようなので基礎からやる事をおすすめする。
Next j の捉え方からすると、そもそも実行の順番が分かっていないようなので基礎からやる事をおすすめする。
287デフォルトの名無しさん (ワッチョイ 2aaf-1sOs)
2017/12/01(金) 15:05:39.92ID:4uYh51s/0 俺なりに日本語訳してみた
間違っていたら教えてくれ
VBA初めて3日です
基礎は本読んでるからわかっている
変数宣言
変数に初期値を入れる わかりやすいように
変数iは2から一番下からみて最初に値の入ってセルまでをループする
変数jも同様
もしもA列とC列にループする上で同じのが見つかったら
変数にTUREを入れる
そしてループを抜ける
そんでまたjのループを繰り返す
もしも変数がTUREをもっていたら
FALSEに変える → なぜ?
セルの色を変える
そんでiのループを繰り返す
間違っていたら教えてくれ
VBA初めて3日です
基礎は本読んでるからわかっている
変数宣言
変数に初期値を入れる わかりやすいように
変数iは2から一番下からみて最初に値の入ってセルまでをループする
変数jも同様
もしもA列とC列にループする上で同じのが見つかったら
変数にTUREを入れる
そしてループを抜ける
そんでまたjのループを繰り返す
もしも変数がTUREをもっていたら
FALSEに変える → なぜ?
セルの色を変える
そんでiのループを繰り返す
288デフォルトの名無しさん (ワッチョイ eab3-JjO2)
2017/12/01(金) 15:48:12.50ID:AGjDU3vg0 初期値をfalseにする理由
trueの時は色づけという流れにしたいので、予めfalseにしておく必要がある
boolean型の初期値はtrueなので。
途中でfalseを入れる理由
i=1 のままで j を最終行までループさせてチェック
その次に i=2 にして j を同じく最終行までループさせてチェックするのだが
i=1 でのチェックが終わった結果 true なら i=2 でのチェックに備えて false に初期化する必要がある
これは基本的に最初の初期化と同じ考え方
trueの時は色づけという流れにしたいので、予めfalseにしておく必要がある
boolean型の初期値はtrueなので。
途中でfalseを入れる理由
i=1 のままで j を最終行までループさせてチェック
その次に i=2 にして j を同じく最終行までループさせてチェックするのだが
i=1 でのチェックが終わった結果 true なら i=2 でのチェックに備えて false に初期化する必要がある
これは基本的に最初の初期化と同じ考え方
289デフォルトの名無しさん (エーイモ SEea-ZQia)
2017/12/01(金) 15:49:27.01ID:Mw452gW7E Hanteiの初期化、j のループの直前に置けばIf文の後の変数初期化がいらなくなる気がする・・・
290デフォルトの名無しさん (ワッチョイ 2aaf-1sOs)
2017/12/01(金) 16:20:04.74ID:4uYh51s/0291デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/01(金) 16:42:02.13ID:xc+Vk5Dr0 >>285
最初の変数初期化は全く必要無い。
そもそもこういうBooleanな変数を用意することに疑問。
こういう変数は、どうにもそれが無いとプログラムが組み立てられない時に使うべきで、出来るなら使わない方向で組み立てるべき。
そして、やってる内容を見ればこんなもの使わない方向で組み立てられる。
こういうコードはやりたいことを論理的につめられていない時に安易に書き出してしまった時になりやすい。
はっきり言ってクソコード。
全く参考にならん。
1.最初の初期化はいらん。
宣言後の初期値はFalseだから。
逆に初期値をTrueにする場合は初期化が必要。
途中の初期化については、jに関する1つの処理が終わった時にTrueになってたら次の処理の結果がおかしくなるから必要。
2.Exit Forのことを言ってるなら最も内側のFor Nextから抜けるからとしか言えん。仕様だね。
3.If〜Thenは〜がTrueかどうかを判定している。
If i=0 Thenはiが0だったらと考えがちだが正しくはi=0の文がTrueかどうかを判定している。
イミディエイトウィンドウに?(10=10)と入力してEnterキーを押すとTrueとなるし?(10=5)と入力してEnterキーを押すとFalseになる。
最初の変数初期化は全く必要無い。
そもそもこういうBooleanな変数を用意することに疑問。
こういう変数は、どうにもそれが無いとプログラムが組み立てられない時に使うべきで、出来るなら使わない方向で組み立てるべき。
そして、やってる内容を見ればこんなもの使わない方向で組み立てられる。
こういうコードはやりたいことを論理的につめられていない時に安易に書き出してしまった時になりやすい。
はっきり言ってクソコード。
全く参考にならん。
1.最初の初期化はいらん。
宣言後の初期値はFalseだから。
逆に初期値をTrueにする場合は初期化が必要。
途中の初期化については、jに関する1つの処理が終わった時にTrueになってたら次の処理の結果がおかしくなるから必要。
2.Exit Forのことを言ってるなら最も内側のFor Nextから抜けるからとしか言えん。仕様だね。
3.If〜Thenは〜がTrueかどうかを判定している。
If i=0 Thenはiが0だったらと考えがちだが正しくはi=0の文がTrueかどうかを判定している。
イミディエイトウィンドウに?(10=10)と入力してEnterキーを押すとTrueとなるし?(10=5)と入力してEnterキーを押すとFalseになる。
292デフォルトの名無しさん (アウアウイー Sa7d-dPl8)
2017/12/01(金) 17:52:43.75ID:P9JEW6xna >>285
同じこといってるかもしれんけどこの場合変数Hanteiが丸々要らない
if文の中にセルの色変更のコードを書けばいい
仮に、この変数がいるとしてもどんな値が入っててもどうせfalseにするんだからif分岐してる意味がわからない
もっと言うとHanteiとかいう変数名がクソ過ぎる
なんの判定かさっぱりわからん
canChangeColorとかnotMatchValueとかしとけば目的が分かりやすいのに
同じこといってるかもしれんけどこの場合変数Hanteiが丸々要らない
if文の中にセルの色変更のコードを書けばいい
仮に、この変数がいるとしてもどんな値が入っててもどうせfalseにするんだからif分岐してる意味がわからない
もっと言うとHanteiとかいう変数名がクソ過ぎる
なんの判定かさっぱりわからん
canChangeColorとかnotMatchValueとかしとけば目的が分かりやすいのに
293デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/01(金) 19:09:05.50ID:RC6w6Z/F0 A列の各セルの情報と合致するものが、C列に一件も無かった場合、
次に合致するデータが現れるまでA列の背景色を変え続ける
という処理なのでHanteiが要らない様に書き換えるって難しい気がするんだけど。
次に合致するデータが現れるまでA列の背景色を変え続ける
という処理なのでHanteiが要らない様に書き換えるって難しい気がするんだけど。
294デフォルトの名無しさん (アウアウイー Sa7d-dPl8)
2017/12/01(金) 19:13:14.77ID:P9JEW6xna295デフォルトの名無しさん (ワッチョイ 2aaf-1sOs)
2017/12/01(金) 19:49:15.65ID:4uYh51s/0 ちなみにこのコードはVBAエキスパート公式のだよ
296デフォルトの名無しさん (ワッチョイ 2aaf-JjO2)
2017/12/01(金) 20:08:56.93ID:4uYh51s/0 似たようなソースコードを作ってみました
なぜだかエラーがでます
Sub test()
Dim i As Long
Dim j As Long
Dim U As Long
For i = 1 To Cells(Rows.Count, 1).End(xUp).Row
For j = 1 To Cells(Rows.Count, 3).End(xUp).Row
If Cells(i, 1) = Cells(j, 3) Then
U = 1
End If
Next j
If U = 1 Then
U = 0
Else
Cells(j, 3).ColorIndex = 3
End If
Next i
End Sub
なぜだかエラーがでます
Sub test()
Dim i As Long
Dim j As Long
Dim U As Long
For i = 1 To Cells(Rows.Count, 1).End(xUp).Row
For j = 1 To Cells(Rows.Count, 3).End(xUp).Row
If Cells(i, 1) = Cells(j, 3) Then
U = 1
End If
Next j
If U = 1 Then
U = 0
Else
Cells(j, 3).ColorIndex = 3
End If
Next i
End Sub
297デフォルトの名無しさん (ワッチョイ 7d8a-HgL3)
2017/12/01(金) 22:17:56.90ID:eRljVU/z0 xUp → xlUp
298デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/02(土) 00:44:57.80ID:aL/u+cy30 >>293
確かに一致したものが無かったらだからBoolean使う方が自然か。
使わなくても簡単だけど自然なBoolean使うのが正しいわ。
俺も勘違いした。
ちなみに、一致せずに全てチェックしてjのループを終了した場合のjの値を調べればBooleanはいらんし、そもそもFind使ってループ1つにしてもいらん。
この仕様を見た場合、絶対こんなコード書かないけど、俺が書くとした場合の配列にぶちこむ方法はBoolean使うのが自然だな。
ちなみにランダムで10000行にデータ入れた場合、このコードで320秒、Find使う方法で22秒、配列入れる方法で9秒だった。
確かに一致したものが無かったらだからBoolean使う方が自然か。
使わなくても簡単だけど自然なBoolean使うのが正しいわ。
俺も勘違いした。
ちなみに、一致せずに全てチェックしてjのループを終了した場合のjの値を調べればBooleanはいらんし、そもそもFind使ってループ1つにしてもいらん。
この仕様を見た場合、絶対こんなコード書かないけど、俺が書くとした場合の配列にぶちこむ方法はBoolean使うのが自然だな。
ちなみにランダムで10000行にデータ入れた場合、このコードで320秒、Find使う方法で22秒、配列入れる方法で9秒だった。
299デフォルトの名無しさん (ワッチョイ eab3-JjO2)
2017/12/02(土) 01:37:25.51ID:jpak6rxd0 小学生がなんで3×5が15になるの?って聞いてるのに
俺なら電卓で答えだすぜ!って息巻いてる人のようにみえる
学習の初段階でつまずいてる人への的確な回答ではないわな
俺なら電卓で答えだすぜ!って息巻いてる人のようにみえる
学習の初段階でつまずいてる人への的確な回答ではないわな
300デフォルトの名無しさん (ワッチョイ 9e9d-9GJZ)
2017/12/02(土) 05:02:50.84ID:EvURnJTn0 なんつうか、これが俺の後輩なら、フローチャート書いてみって言いたくなるな
もうフローチャートなんて10年以上見てないけどな
>1なぜ変数を初期化するのか?
あってもなくてもこのコードなら動くけど
すべての言語が変数を初期化してくれるわけではないので、変数は必ず自分で初期化しろって作法もある
自分で初期化すれば、初期値を間違えて覚えていたりしてもバグになりにくいしな(Booleanの初期値はFalse)
>2なぜNextjでjだけループが終わるのか?
ちょっと質問の真意がわからん
ForとNextは1対1で対応するんで、Next jならjのループ終端だぞ
>3If Hantei Then (もしも変数の場合は。。。) もはや意味がわからない
IfとThenの間に書くのは、条件式と呼ばれる式(文じゃないよ)
式の値がTrueかFlaseで条件分岐する
そして変数はそれだけで式として成り立つ。この場合は変数の内容そのものが式の値
If Hantei=True Thenって書いても良いんだけど、(とくにBooleanに対する=Trueは)冗長だと言って嫌う作法もある
VBAはExcelが現役だから、いつまでたっても入門者が一定数いるよなぁ
はっきり言えば、今どきのブログラムの勉強にはVBAは向かないよ
もうフローチャートなんて10年以上見てないけどな
>1なぜ変数を初期化するのか?
あってもなくてもこのコードなら動くけど
すべての言語が変数を初期化してくれるわけではないので、変数は必ず自分で初期化しろって作法もある
自分で初期化すれば、初期値を間違えて覚えていたりしてもバグになりにくいしな(Booleanの初期値はFalse)
>2なぜNextjでjだけループが終わるのか?
ちょっと質問の真意がわからん
ForとNextは1対1で対応するんで、Next jならjのループ終端だぞ
>3If Hantei Then (もしも変数の場合は。。。) もはや意味がわからない
IfとThenの間に書くのは、条件式と呼ばれる式(文じゃないよ)
式の値がTrueかFlaseで条件分岐する
そして変数はそれだけで式として成り立つ。この場合は変数の内容そのものが式の値
If Hantei=True Thenって書いても良いんだけど、(とくにBooleanに対する=Trueは)冗長だと言って嫌う作法もある
VBAはExcelが現役だから、いつまでたっても入門者が一定数いるよなぁ
はっきり言えば、今どきのブログラムの勉強にはVBAは向かないよ
301デフォルトの名無しさん (ワントンキン MM7a-9NqV)
2017/12/02(土) 08:17:12.76ID:/lrBlva0M ブック名 C:\book.xlsx
シート名 データ
説明文パート 1〜5行目
データパート
..ヘッダ A6〜Z6
..データ A7〜Z*
..データ件数 不定
プロバイダ Microsoft.ACE.OleDB.12.0
このような設定でヘッダとデータをselect文で全件取得するにはどうすればいいですか?
シート名 データ
説明文パート 1〜5行目
データパート
..ヘッダ A6〜Z6
..データ A7〜Z*
..データ件数 不定
プロバイダ Microsoft.ACE.OleDB.12.0
このような設定でヘッダとデータをselect文で全件取得するにはどうすればいいですか?
302デフォルトの名無しさん (ワッチョイ 9e9f-w/Tc)
2017/12/02(土) 08:26:37.96ID:aL/u+cy30 >>299-300
超初心者の話かよ。
VBAエキスパートの話じゃなかったんか?
あと、If Hantei Thenを分からないって言ってるのは感覚の話で、君の説明じゃ分からないと思うぜ。
Hantei=Trueという式自体に値があって、それが正しい場合にその値は(Hantei=True)=Trueという結果になっているということが感覚的に分からないと理解できんだろ。
初心者はHanteiとTrueが等しかった場合と感覚的に理解してるんだから。
その感覚ではIf Hantei Thenが理解出来ない。
超初心者の話かよ。
VBAエキスパートの話じゃなかったんか?
あと、If Hantei Thenを分からないって言ってるのは感覚の話で、君の説明じゃ分からないと思うぜ。
Hantei=Trueという式自体に値があって、それが正しい場合にその値は(Hantei=True)=Trueという結果になっているということが感覚的に分からないと理解できんだろ。
初心者はHanteiとTrueが等しかった場合と感覚的に理解してるんだから。
その感覚ではIf Hantei Thenが理解出来ない。
303デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/02(土) 08:27:57.05ID:cPyK88Sm0 >>301
SQLで任意のセル範囲を取得する場合はFROM文で取得出来たはず。
SELECT * FROM [ データ$A6:Z1000] みたいな形。
ただその条件だとデータベースに投げる前にエクセル上で整形した方が効率いいと思うけど。
SQLで任意のセル範囲を取得する場合はFROM文で取得出来たはず。
SELECT * FROM [ データ$A6:Z1000] みたいな形。
ただその条件だとデータベースに投げる前にエクセル上で整形した方が効率いいと思うけど。
304デフォルトの名無しさん (ワッチョイ 59e3-YkX8)
2017/12/02(土) 08:31:27.69ID:7+Ics+9V0 if hentai = true then 変態は正義
305デフォルトの名無しさん (ササクッテロロ Spbd-1sOs)
2017/12/02(土) 09:32:03.18ID:1C3LInkCp まず>>285のプログラムを動作順に日本語訳してくれよ
306デフォルトの名無しさん (ワッチョイ 9e9f-w/Tc)
2017/12/02(土) 11:12:44.97ID:aL/u+cy30 >>305
簡単だろ。
A列のそれぞれのセルに対してC列に同じ値が無かったら色を付けてる。
1.A2からA列の最終セルまで1つ1つのセル(以下Aiとする)について以下を繰り返す。
2.C2からC列の最終セルまでにAiと同じ値が有ったときHanteiをTrueに設定。
3.HanteiがFalseの場合(C列にAiと等しい値はなかった場合)はAiに色を付ける。
4.HanteiがTrueの場合はFalseに設定。(どんな場合だろうがFalseに設定したいが、既にFalseなのにFalseに設定する必要は無い。単にFalseに初期化してるだけ。)
5.Aiの次のセルに対して繰り返し処理続行する。
簡単だろ。
A列のそれぞれのセルに対してC列に同じ値が無かったら色を付けてる。
1.A2からA列の最終セルまで1つ1つのセル(以下Aiとする)について以下を繰り返す。
2.C2からC列の最終セルまでにAiと同じ値が有ったときHanteiをTrueに設定。
3.HanteiがFalseの場合(C列にAiと等しい値はなかった場合)はAiに色を付ける。
4.HanteiがTrueの場合はFalseに設定。(どんな場合だろうがFalseに設定したいが、既にFalseなのにFalseに設定する必要は無い。単にFalseに初期化してるだけ。)
5.Aiの次のセルに対して繰り返し処理続行する。
307デフォルトの名無しさん (ワッチョイ e5f7-17nN)
2017/12/02(土) 11:17:14.58ID:tnWofmmQ0308デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/02(土) 11:45:34.19ID:cPyK88Sm0 エキスパート名乗ってる割にはバグくさいコードなんだよな。
If Not Hantei Then Cells(i, 1).Interior.ColorIndex = 6
Hantei = False
っていう書き方がたぶん本来意図した仕様に近いと思うんだけども。
If Not Hantei Then Cells(i, 1).Interior.ColorIndex = 6
Hantei = False
っていう書き方がたぶん本来意図した仕様に近いと思うんだけども。
309デフォルトの名無しさん (ワッチョイ 7d8a-HgL3)
2017/12/02(土) 11:46:30.49ID:ab3YxIeg0 Hantei が Hentai に見える
310デフォルトの名無しさん (ワッチョイ 9e9f-w/Tc)
2017/12/02(土) 14:09:12.13ID:aL/u+cy30311デフォルトの名無しさん (アウアウカー Sa55-YkX8)
2017/12/02(土) 14:24:58.47ID:fk+w59AEa ○○でもわかる
○○のすべて
○○エキスパート
○○完全ガイド
こういうタイトル付いてるのは初心者向け
○○のすべて
○○エキスパート
○○完全ガイド
こういうタイトル付いてるのは初心者向け
312デフォルトの名無しさん (ワッチョイ e5f7-17nN)
2017/12/02(土) 14:38:18.30ID:zmHPgLHa0313デフォルトの名無しさん (アウアウオー Sa12-WJoG)
2017/12/03(日) 08:02:30.09ID:Q2bt/ZXPa エクセル相談所にあった質問で、とりあえずVBAなしじゃ出来ないって言っといったんだけど、VBAでリストの絞り込みって一度で出来る?
多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって事だと思うんですけど。
インターネットの選択方式でそんなの見た事あるけど一から開発するの面倒くさそう。
ユーザーフォームと2次元配列でも使えばできるかな?
ちなみにこの機能の名称あれば教えて欲しいです。
自分も配列すら参考書でかじったくらいでその必要性がわかってない初心者です
多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって事だと思うんですけど。
インターネットの選択方式でそんなの見た事あるけど一から開発するの面倒くさそう。
ユーザーフォームと2次元配列でも使えばできるかな?
ちなみにこの機能の名称あれば教えて欲しいです。
自分も配列すら参考書でかじったくらいでその必要性がわかってない初心者です
314デフォルトの名無しさん (ワッチョイ 3d9f-JNzg)
2017/12/03(日) 08:42:40.14ID:U0ESQ6dD0 残念ながらVBAなしで実現可能
315デフォルトの名無しさん (アウアウウー Sa21-zPcF)
2017/12/03(日) 09:19:50.58ID:lwbJHU3ya お力添えをお願いします
チェックボックスでチェック入れたら行の高さを0にし、チェック入れなかったら13.5にしたいのですがうまく動作してくれません
Sub チェック8_Click()
Dim A As Boolean
Dim B As Boolean
If A = True Then
A = Rows(43).RowHeight = 13.5
B = Rows(44).RowHeight = 13.5
Else
A = Rows(43).RowHeight = 0
B = Rows(44).RowHeight = 0
End If
End Sub
どこが間違っているのかご教示お願いします。
チェックボックスでチェック入れたら行の高さを0にし、チェック入れなかったら13.5にしたいのですがうまく動作してくれません
Sub チェック8_Click()
Dim A As Boolean
Dim B As Boolean
If A = True Then
A = Rows(43).RowHeight = 13.5
B = Rows(44).RowHeight = 13.5
Else
A = Rows(43).RowHeight = 0
B = Rows(44).RowHeight = 0
End If
End Sub
どこが間違っているのかご教示お願いします。
316デフォルトの名無しさん (ワッチョイ 1111-JjO2)
2017/12/03(日) 09:52:22.12ID:ObUuqjZI0 >>315
行は適当に変えてくれ
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
Rows(3).RowHeight = 13.5
Rows(4).RowHeight = 13.5
Else
Rows(3).RowHeight = 0
Rows(4).RowHeight = 0
End If
End Sub
行は適当に変えてくれ
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
Rows(3).RowHeight = 13.5
Rows(4).RowHeight = 13.5
Else
Rows(3).RowHeight = 0
Rows(4).RowHeight = 0
End If
End Sub
317デフォルトの名無しさん (ワッチョイ 1111-JjO2)
2017/12/03(日) 10:04:41.09ID:ObUuqjZI0 >>315
フォームコントロールならこっちだわ
コントロール名は適当に変えてくれ
Sub チェック2_Click()
If Sheet1.CheckBoxes("チェック 2").Value = 1 Then 'これでダメなら下を試そう
'If "Sheet1".Shapes("チェック 2").ControlFormat.Value = 1 Then
Rows(3).RowHeight = 13.5
Rows(4).RowHeight = 13.5
Else
Rows(3).RowHeight = 0
Rows(4).RowHeight = 0
End If
End Sub
フォームコントロールならこっちだわ
コントロール名は適当に変えてくれ
Sub チェック2_Click()
If Sheet1.CheckBoxes("チェック 2").Value = 1 Then 'これでダメなら下を試そう
'If "Sheet1".Shapes("チェック 2").ControlFormat.Value = 1 Then
Rows(3).RowHeight = 13.5
Rows(4).RowHeight = 13.5
Else
Rows(3).RowHeight = 0
Rows(4).RowHeight = 0
End If
End Sub
318デフォルトの名無しさん (アウアウウー Sa21-zPcF)
2017/12/03(日) 10:11:57.07ID:lwbJHU3ya >>317
ありがとうございます!!!こちらで動作しました!!本当に有難うございます!!!
ありがとうございます!!!こちらで動作しました!!本当に有難うございます!!!
319デフォルトの名無しさん (ワッチョイ 6681-9GJZ)
2017/12/03(日) 10:42:36.13ID:HLUSF6su0 〉〉314
できるの?
入力規則の絞り込みじゃないよ?
階層化してリストから直接下層に移動(3段階くらい)して選択する方法だよ?
できるの?
入力規則の絞り込みじゃないよ?
階層化してリストから直接下層に移動(3段階くらい)して選択する方法だよ?
320デフォルトの名無しさん (ワッチョイ 3d9f-JNzg)
2017/12/03(日) 11:18:12.75ID:U0ESQ6dD0321デフォルトの名無しさん (ワッチョイ eab3-YtI1)
2017/12/03(日) 11:24:14.71ID:pXIsIngK0322デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/03(日) 11:39:56.54ID:JkBkmVnb0323デフォルトの名無しさん (ワッチョイ 6681-9GJZ)
2017/12/03(日) 12:12:17.46ID:HLUSF6su0 >>320
しかも、わかりにくいかもしれないけど条件ちゃんと書いてあるんだけどね
入力規則の絞り込み検索じゃない。
階層ごとにクリック選択する事すらめんどくさいと言ってるんだよ。
一度の選択でリストの階層移動ができるかどうかを質問主は相談所で聞いていて
自分はVBAないとだめだよと回答したけどVBAだとどうなんだろうとこっち
で聞きなおしてみたんだけど、
しかも、わかりにくいかもしれないけど条件ちゃんと書いてあるんだけどね
入力規則の絞り込み検索じゃない。
階層ごとにクリック選択する事すらめんどくさいと言ってるんだよ。
一度の選択でリストの階層移動ができるかどうかを質問主は相談所で聞いていて
自分はVBAないとだめだよと回答したけどVBAだとどうなんだろうとこっち
で聞きなおしてみたんだけど、
324デフォルトの名無しさん (ドコグロ MMb1-YtI1)
2017/12/03(日) 12:58:31.51ID:A600L+iiM >>323
さすがにそれは読み取れん
さすがにそれは読み取れん
325デフォルトの名無しさん (オイコラミネオ MM2e-JNzg)
2017/12/03(日) 13:12:35.66ID:bN8T4SKTM >>321
こういう糞レスがつくからスレが過疎るんだぞ
こういう糞レスがつくからスレが過疎るんだぞ
326デフォルトの名無しさん (ワッチョイ 6681-9GJZ)
2017/12/03(日) 13:54:27.80ID:HLUSF6su0 ちゃんと、VBAでリストの絞り込みって一度で出来る? こう書いて
その下に
多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって
こう書いてあるんだけど読み取れない?
しかも、前文にエクセル相談所にあった質問こうも書いてあるし。
で、わざわざVBAで聞いてるのにわからないかー
その下に
多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって
こう書いてあるんだけど読み取れない?
しかも、前文にエクセル相談所にあった質問こうも書いてあるし。
で、わざわざVBAで聞いてるのにわからないかー
327デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/03(日) 15:23:42.34ID:icSWQcwl0 具体的なコードが伴わない場合は外野がなんかゴチャゴチャ言っている程度に聞き流すべき。
>>321の質問はウィンドウズ標準のメニューバーみたいな形を想定しているみたいなので、
外部参照にMicrosoft Toolbarとかあれば、それを追加して解決するんじゃないかな。
>>321の質問はウィンドウズ標準のメニューバーみたいな形を想定しているみたいなので、
外部参照にMicrosoft Toolbarとかあれば、それを追加して解決するんじゃないかな。
328デフォルトの名無しさん (ワッチョイ eab3-YtI1)
2017/12/03(日) 15:57:02.43ID:pXIsIngK0329デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/03(日) 16:12:49.11ID:icSWQcwl0330デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/03(日) 17:11:02.86ID:JkBkmVnb0 >>313
それは、VBAでも出来ないと思う。
というかWindowsの標準動作と違う。
似たようなのは出来るかもしれないけど。
コンボボックスじゃなくメニューなら出来るかな。
見ためが違うけど。
見ためをコンボボックスにしたいならコンボボックス使わずにフォ−ムに描画した方が楽じゃね?
コンボボックスだと選択しないとイベント発生させるのが難しいし、イベント発生時にブルダウンが閉じるのが通常動作だから。
サブクラスでHITTEST検出で出来るかどうか。
VBAではウルトラC級に難しい。
それは、VBAでも出来ないと思う。
というかWindowsの標準動作と違う。
似たようなのは出来るかもしれないけど。
コンボボックスじゃなくメニューなら出来るかな。
見ためが違うけど。
見ためをコンボボックスにしたいならコンボボックス使わずにフォ−ムに描画した方が楽じゃね?
コンボボックスだと選択しないとイベント発生させるのが難しいし、イベント発生時にブルダウンが閉じるのが通常動作だから。
サブクラスでHITTEST検出で出来るかどうか。
VBAではウルトラC級に難しい。
331デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/03(日) 17:13:47.51ID:JkBkmVnb0332デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/03(日) 18:36:56.64ID:RpLqv7Ag0 >>313
階層付きMenuで3項同時に入力するってこと?
自分だったらContextMenuの改造またはPopupでやるかな。
見た目悪いけど、最下層をデリミタ区切りのフルセットにすれば
Splitして投げ込むだけでいいでしょ?
CellのContextMenuだとあとで標準に戻すこと考えないと
いけないので最近はもっぱらPopupばかり使ってる。
Cellのプルダウンだと表示数に限りがあるけど、Popupだと
画面サイズいっぱいまでいけるし、、
あ、もちろんCommandBarsのアレのことです。
階層付きMenuで3項同時に入力するってこと?
自分だったらContextMenuの改造またはPopupでやるかな。
見た目悪いけど、最下層をデリミタ区切りのフルセットにすれば
Splitして投げ込むだけでいいでしょ?
CellのContextMenuだとあとで標準に戻すこと考えないと
いけないので最近はもっぱらPopupばかり使ってる。
Cellのプルダウンだと表示数に限りがあるけど、Popupだと
画面サイズいっぱいまでいけるし、、
あ、もちろんCommandBarsのアレのことです。
333デフォルトの名無しさん (アウアウオー Sa12-9GJZ)
2017/12/03(日) 22:48:18.35ID:DUCKYmEka >>313
いえ、1つ目のリストを表示して、マウスの位置をその位置まで持ってきて
2つ目のリストを表示してって3つ目のリストを最終的に表示するみたいな。
エクセルの旧表示みたいな感じで、ファイル→検索みたいな感じです。
多分
いえ、1つ目のリストを表示して、マウスの位置をその位置まで持ってきて
2つ目のリストを表示してって3つ目のリストを最終的に表示するみたいな。
エクセルの旧表示みたいな感じで、ファイル→検索みたいな感じです。
多分
334デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 00:43:15.26ID:oPXdl+lm0 >>333
いやだからそれって、階層メニューのことでしょ?
手近なところでいうと、、、たとえばFireFoxだと、
表示 > テキストエンコーディング > 自動判別 > 日本語
みたいな。この手のMenuって、onMouseOverイベントで
下層が勝手に開いていきますよね。
それで各階層の選択肢を全部入力値として使うことじゃないの?
いやだからそれって、階層メニューのことでしょ?
手近なところでいうと、、、たとえばFireFoxだと、
表示 > テキストエンコーディング > 自動判別 > 日本語
みたいな。この手のMenuって、onMouseOverイベントで
下層が勝手に開いていきますよね。
それで各階層の選択肢を全部入力値として使うことじゃないの?
335デフォルトの名無しさん (ワッチョイ 9e9f-w/Tc)
2017/12/04(月) 02:58:02.92ID:Fxj9yJGL0 そう、これはメニューの動作なんだ。
コンボボックスで実現するのはとても難しい。
ほとんどの奴は上級者でも不可能と言うだろう。
それとも俺の知らない何かがあるかもしれないけど。
コンボボックスで実現するのはとても難しい。
ほとんどの奴は上級者でも不可能と言うだろう。
それとも俺の知らない何かがあるかもしれないけど。
336デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:21:07.64ID:oPXdl+lm0 コンボの配下にメニュー作ろうとすると怒られた。
階層メニューによる一括入力、自分でも使うかもと思い作ってみたよ。
1) 前提:質問者のリンク先キャプチャを参考
A2:C2が回答入力欄
キャプチャにある凡例を登録するための矩形範囲を"R_Master"とする。
2)呼出部:キャプチャのA1セルにある "商品"の文字列を右クリックで発動。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Resize(1, 1).Value = "商品" Then
Cancel = True
Call Popup_FullPut(Range("R_Master"), " 個")
End If
End Sub
階層メニューによる一括入力、自分でも使うかもと思い作ってみたよ。
1) 前提:質問者のリンク先キャプチャを参考
A2:C2が回答入力欄
キャプチャにある凡例を登録するための矩形範囲を"R_Master"とする。
2)呼出部:キャプチャのA1セルにある "商品"の文字列を右クリックで発動。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Resize(1, 1).Value = "商品" Then
Cancel = True
Call Popup_FullPut(Range("R_Master"), " 個")
End If
End Sub
337デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:23:18.02ID:oPXdl+lm0 3)Menu生成部
Sub Popup_FullPut(rngMst As Range, Optional strUnit As String)
Dim r As Range
Dim i As Long, j As Long, k As Long
With CommandBars.Add(Position:=msoBarPopup)
For i = 0 To rngMst.Rows.Count - 1
Set r = rngMst.Offset(0, 0).Resize(1, 1).Offset(i, 0)
If r.Value = "" Then Exit For
With .Controls.Add(msoControlPopup)
.Caption = r.Value
For j = 0 To rngMst.Rows.Count - 1
Set r = rngMst.Offset(0, 1).Resize(1, 1).Offset(j, 0)
If r.Value = "" Then Exit For
With .Controls.Add(msoControlPopup)
.Caption = r.Value
For k = 0 To rngMst.Rows.Count - 1
Set r = rngMst.Offset(0, 2).Resize(1, 1).Offset(k, 0)
If r.Value = "" Then Exit For
With .Controls.Add(msoControlButton)
.Caption = r.Value & strUnit
.OnAction = MkAction( "Popup_Input", rngMst.Address(external:=True),i & "|" & j & "|" & k )
End With
Next
End With
Next
End With
Next
.ShowPopup
.Delete
End With
End Sub
Sub Popup_FullPut(rngMst As Range, Optional strUnit As String)
Dim r As Range
Dim i As Long, j As Long, k As Long
With CommandBars.Add(Position:=msoBarPopup)
For i = 0 To rngMst.Rows.Count - 1
Set r = rngMst.Offset(0, 0).Resize(1, 1).Offset(i, 0)
If r.Value = "" Then Exit For
With .Controls.Add(msoControlPopup)
.Caption = r.Value
For j = 0 To rngMst.Rows.Count - 1
Set r = rngMst.Offset(0, 1).Resize(1, 1).Offset(j, 0)
If r.Value = "" Then Exit For
With .Controls.Add(msoControlPopup)
.Caption = r.Value
For k = 0 To rngMst.Rows.Count - 1
Set r = rngMst.Offset(0, 2).Resize(1, 1).Offset(k, 0)
If r.Value = "" Then Exit For
With .Controls.Add(msoControlButton)
.Caption = r.Value & strUnit
.OnAction = MkAction( "Popup_Input", rngMst.Address(external:=True),i & "|" & j & "|" & k )
End With
Next
End With
Next
End With
Next
.ShowPopup
.Delete
End With
End Sub
338デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:24:02.05ID:oPXdl+lm0 4)入力実行部
Sub Popup_Input(strMst As String, strAns As String)
Dim rngR1 As Range: Set rngR1 = Range("A2")
Dim rngR2 As Range: Set rngR2 = Range("B2")
Dim rngR3 As Range: Set rngR3 = Range("C2")
Dim rngMst As Range: Set rngMst = Range(strMst)
Dim i As Long, j As Long, k As Long
i = Split(strAns, "|")(0)
j = Split(strAns, "|")(1)
k = Split(strAns, "|")(2)
rngR1.Value = rngMst(i + 1, 1).Value
rngR2.Value = rngMst(j + 1, 2).Value
rngR3.Value = rngMst(k + 1, 3).Value
End Sub
Sub Popup_Input(strMst As String, strAns As String)
Dim rngR1 As Range: Set rngR1 = Range("A2")
Dim rngR2 As Range: Set rngR2 = Range("B2")
Dim rngR3 As Range: Set rngR3 = Range("C2")
Dim rngMst As Range: Set rngMst = Range(strMst)
Dim i As Long, j As Long, k As Long
i = Split(strAns, "|")(0)
j = Split(strAns, "|")(1)
k = Split(strAns, "|")(2)
rngR1.Value = rngMst(i + 1, 1).Value
rngR2.Value = rngMst(j + 1, 2).Value
rngR3.Value = rngMst(k + 1, 3).Value
End Sub
339デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:28:37.65ID:oPXdl+lm0 5)引数付きのOnActionコマンドの生成に普段使っている関数
ん?書き込めない、、なんで?
要は文字列生成がメンドーだから関数使ってるだけなんだけど、、
ん?書き込めない、、なんで?
要は文字列生成がメンドーだから関数使ってるだけなんだけど、、
340デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:36:14.51ID:oPXdl+lm0 刻んでみる。
5)引数付きのOnActionコマンドの生成に普段使っている関数
Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String )
5)引数付きのOnActionコマンドの生成に普段使っている関数
Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String )
341デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:41:24.99ID:oPXdl+lm0 Dim文のところではじかれるみたい、、
5)引数付きのOnActionコマンドの生成に普段使っている関数
Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String )
Dim DQ As String: DQ = Chr(34)
Dim SQ As String: SQ = Chr(39)
Dim buf As String
buf = strCMD & " "
If arg1 <> "" Then buf = buf & DQ & arg1 & DQ
If arg2 <> "" Then buf = buf & "," & DQ & arg2 & DQ
MkAction = SQ & buf & SQ
End Function
書き込めたかな?
Chr関数は禁則?
5)引数付きのOnActionコマンドの生成に普段使っている関数
Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String )
Dim DQ As String: DQ = Chr(34)
Dim SQ As String: SQ = Chr(39)
Dim buf As String
buf = strCMD & " "
If arg1 <> "" Then buf = buf & DQ & arg1 & DQ
If arg2 <> "" Then buf = buf & "," & DQ & arg2 & DQ
MkAction = SQ & buf & SQ
End Function
書き込めたかな?
Chr関数は禁則?
342デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:44:57.18ID:oPXdl+lm0 書き込めた。
Chr関数で引っかかっていたみたい。実際は半角です。
インデントは全角スペースになっているので変換が必要です。
Chr関数で引っかかっていたみたい。実際は半角です。
インデントは全角スペースになっているので変換が必要です。
343デフォルトの名無しさん (ワッチョイ f1f7-681q)
2017/12/04(月) 07:27:39.63ID:65GoxPZl0 VBEにコピペすると、全角スペースは自動的に半角スペースに変換されるから意識する必要ない
344デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 07:55:50.52ID:oPXdl+lm0 >>343
本当ですね。 tnx!
本当ですね。 tnx!
345デフォルトの名無しさん (ワッチョイ a57b-JjO2)
2017/12/05(火) 20:57:29.50ID:dwGLun0F0 エクセルのVBAで、サーバー上にディレクトリを作成して、そこにファイルを移動させたいのですが、
MkDIRで作成できませんでした。どうすればよいでしょうか?
MkDIRで作成できませんでした。どうすればよいでしょうか?
346デフォルトの名無しさん (ワッチョイ b5b3-85w6)
2017/12/05(火) 21:25:35.80ID:JPkeWfWn0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 食品の高騰対策、政府が交付金の「特別枠」検討 原則全ての自治体で [蚤の市★]
- 【超絶悲報】日本政府「高市さんの答弁撤回はない。政権として弱腰と映る姿勢は見せられない」これもう立憲岡田の議員辞職しかないだろ [519511584]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 台湾「高市さんが台湾人の悲願を叶えてくれた!」これじゃ高市さん発言撤回できないぢゃん😰 [523957489]
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
