X



Excel VBA 質問スレ Part67

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-3+hg)
垢版 |
2020/06/26(金) 02:01:29.56ID:uDfmpksE0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part66
https://mevius.5ch.net/test/read.cgi/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/07/29(水) 00:46:40.06ID:d6pTrFks0
>>656
あーなるほど。最後のところ
End If
r.Value = strData
Next
にしたらできました、ありがとうございます
2020/07/29(水) 01:00:46.72ID:X5Dn8QJR0
>>644
ありがとうございます

objIE.document.GetElementsByTagName("タグ名")(添え字)

上記の構文で該当のページに自動クリックするようになったのです

For p = 1 to 10
objIE.document.GetElementsByTagName("タグ名")(p)
Next p

上のような構文で最初は2ページにきちんと遷移するのですが、次は4ページ、次は2ページ、次は3ページと
うまくページ遷移が出来ません。
一応MsgBoxでpを参照すると1〜10の数字は格納されてるみたいなのですが
objIE.document.GetElementsByTagName("タグ名")(1)で2ページ目
objIE.document.GetElementsByTagName("タグ名")(2)で4ページ目
objIE.document.GetElementsByTagName("タグ名")(3)で3ページ目

上記のように変数の数字と同じページに進んでくれない処理になります。
For文を使用してインクリメントするのではなく、表示させたいページとそれに対応する添え字で処理をしてくしか方法はないのでしょうか
2020/07/29(水) 02:34:23.24ID:TpnjQV/H0
それでページ遷移したらバグを疑うが
2020/07/29(水) 13:22:46.34ID:mS6Tz06p0
本社が作って社内システムにアップロードされてるVBAマクロが
マクロの記録をつなぎ合わせて作った酷いコードでつらい・・・
連続した1000行*5列ぐらいのコピペするだけなのにVBE50行ぐらい使っててつらい・・・
2020/07/29(水) 13:57:55.28ID:MurrSo1vd
>>657
まず、最初の方にあるSet r = ActiveSheet.UsedRangeは意味が無いし、必要無い。
rはFor文の中でUsedRangeの中の1つ1つのセルを巡っていくのであって、UsedRangeそのものじゃない。

次に、元々のプログラムでも思ったのだが、書ける人は文字列を与えると変換する関数を作ることを考える。
それさえ出来てしまえばrにそれを与えるだけ。
Private Sub test()
Dim r As Range
For Each r In ActiveSheet.UsedRange
r.Value=ConvertString(r.Value)
Next
End Sub
Private Function ConvertString(strData As String) As String

Dim lngLen As Long
Do While lngLen<>Len(strData)
lngLen=Len(strData)
strData=Replace(strData,"||","|")
Loop
If Left(strData,1)="|" Then
strData=Mid(strData,2)
EndIf
If Right(strData,1)="|" Then
strData=Left(strData,Len(strData)-1)
EndIf

ConvertString=strData

End Function
2020/07/29(水) 14:31:44.31ID:MurrSo1vd
>>658
クリックする命令が無いが、For文の中でクリックしているとして、

1.そのpの1〜10が正しく遷移出来るリンクのあるタグかどうか?

2.一旦、遷移したら場合にもよるがobjIEは遷移後のページになる。
とすれば、Document以下のソースが遷移後のぺージのソースになる。

3.遷移には時間がかかるが、それをきちんと待つことが考慮されている?

ぐらいは気になるね。
2020/07/29(水) 15:27:30.52ID:6iCm/sfN0
配列ary2の重複を削除して配列ary3にいれたいのですが
実行後ary3の値はすべて空欄になってしまいます
ary2には全て値が入っています

Option Base 1
Sub Test4()

Dim EndRow, cnt, cnt2 As Long
Dim flg As Boolean

EndRow = Cells(Rows.Count,1).End(xlUp).Row
ReDim ary2(EndRow)
ReDim ary3(EndRow)
2020/07/29(水) 15:28:20.62ID:6iCm/sfN0
↓続きです

For cnt = 1 To EndRow 'ary2に値は入っています
ary2(cnt) = Cells(cnt,1)
End cnt

For cnt = 1 To UBound(ary2)
flg = False
For cnt2 = 1 To UBound(ary3)
If (ary2(cnt) = ary3(cnt2)) Then
flg = True
Exit For
End If
Next cnt2

If (flg = False) Then
ary3(UBound(ary3)) = ary2(cnt)
ReDim Preserve ary3(UBound(ary3) + 1)
End If
Next cnt

End Sub
2020/07/29(水) 16:02:10.87ID:AAZ7Zxr30
>>663
Dimの型を省略するとVariantになる
全部Longにしたい時はこう書く
Dim EndRow As Long, cnt As Long, cnt2 As Long
2020/07/29(水) 16:11:12.11ID:AAZ7Zxr30
>>663
ReDim ary3(EndRow) がおかしい
最小限直すなら ReDim ary3(1)
2020/07/29(水) 17:54:47.23ID:OLLqLA300
>>663
変数の中身がどういう動きしてるか1行1行確認しよう
2020/07/29(水) 18:28:53.19ID:6iCm/sfN0
>>665
勉強になりました。ありがとうございます

>>666
ご指摘の通りでした。ありがとうございます

>>667
確認しましたが、すべてのcntの時にary3が空になってしまっていました
2020/07/29(水) 18:36:47.82ID:XMqoLN/00
>>664
ひょっとしてary2には値が入っていたけど
ary2(cnt) = Cells(cnt,1)
で、セル値を設定してて
セル値に値が入ってないとかいうオチだったりして
2020/07/29(水) 19:15:26.15ID:pwxjYZ3c0
Mapに固定値設定してMapから取り出すってなんか意味ある?
直接固定値見てもいいんだけど
671デフォルトの名無しさん (ラクッペペ MMee-LxoB)
垢版 |
2020/07/29(水) 19:38:04.93ID:/vJCggp/M
書いたやつに聞けよ
2020/07/29(水) 20:52:19.99ID:OLLqLA300
>>668
どうして空になってるのか順に追って行かないと原因わからんでしょ・・・
673デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 09:11:02.16ID:G1iLlMLAH
VBAの知識0なんですけど
・1000円以上買うごとに1口
・1ヶ月感の累計購入金額総額で抽選
この条件で最大300人に当たるキャンペーンやりたいんだけど
これをVBAで動かして抽出するのにどれくらいの手間がかかりますか?

口数は1人あたり0口から5000口(最大500万円想定)
対象人数は最大2万人を想定してます

ランダム関数でなんとか無理やり組もうとするとデータ多すぎてメモリたんなくなる・・・
2020/07/30(木) 09:15:44.99ID:sgyBPyzj0
>>673
できる業者に委託する金だけだせばいいんじゃね
2020/07/30(木) 09:20:25.92ID:oxoY3p6DM
そんなもんDBに投入してSQLで一発だろ
676デフォルトの名無しさん (ラクッペペ MMee-LxoB)
垢版 |
2020/07/30(木) 09:23:42.54ID:JMS2FJh9M
一口ごとに1枚プリントアウト。この時なるべく小さい紙に印刷するのがポイント!
後は紙を穴の空いたボックスに詰めて目隠しした担当者が300枚を抜き出す
2020/07/30(木) 09:36:09.05ID:tHevDqCo0
個人の氏名ごとに口数記録するじゃんね
口数の合計値をlongにいれるじゃんね
longの最大は21億〜だからいけるじゃんね
んでその合計値が例えば20万だったら
20万の中からRandomをうまいこと使って300個の数字を抽出すればいいだけじゃんね
各数字は氏名ごとに記録した口数を上から合計したときの数値と一致するわけじゃんね
簡単じゃんね
2020/07/30(木) 09:43:40.24ID:tHevDqCo0
抽出するには、いろんな方法あるけど
位ごとに数字を選ぶみたいなのでもいいじゃんね

例えば合計値が232,984口だったとしたら
10万の位→2,1,0から1つえらぶ
1万の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
千の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
百の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
10の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
1の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
これで1つの数字ができる
これを300回繰り返すんだけど
0になったり、重複したりしたら無効でやり直しするじゃんね
2020/07/30(木) 09:44:36.17ID:tHevDqCo0
てかどういう風でもいいからゴリゴリやっていくのが面白いのにさー
スマートじゃなくてもいいからゴリゴリいこうぜぇー
680デフォルトの名無しさん (ドコグロ MM9a-Fc3l)
垢版 |
2020/07/30(木) 09:48:09.38ID:P52O6TU4M
おまえら食いつきがいいな
681デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 09:51:09.03ID:G1iLlMLAH
最初口数だして横に5000まで数字並べて
IF(1〜5000<口数,RAND(),"")って全部のセルに埋めてたら
20000×5000の関数が動くからフリーズして困ったんだよね・・・

これをやったあとMAX関数で一番でかい数字引っ張ってきて
それをソートして上から300人ってすれば重複当選もないし問題ないかと思ってた

まさか4〜500万購入ユーザーがいるなんて聞いてなかったから気軽に引き受けちゃったよ・・・
682デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 09:53:13.58ID:G1iLlMLAH
取り敢えず2万人の口数を順番に足していったリスト作って
合計数からランダムに300個抜き出して
それを作ったリストと照らし合わせればいいのか
サンクス、突破口見えた気がする

VBAじゃなくてもいいのか・・・ありがとう
2020/07/30(木) 09:56:06.13ID:tHevDqCo0
それなんも工夫ないじゃんね
つまらないじゃんね
のーたりんじゃんね
2020/07/30(木) 10:27:51.92ID:EC4xcxw30
>>673
A列に人の名前なりIDなり入れる
B列に口数
C列は当選番号の割り振りで、C1はB1の値、CnはC(n-1)+Bnとし、C(n-1)+1〜CnがAnの当選番号
これと独立して300回ランダム*全口数+1で当選番号300個を作る
それを1つずつ誰のものか確認して当選者とする
2020/07/30(木) 10:35:23.48ID:cH8Va6i20
じゃんね、ってどこの方言だろ
東京ではじゃんとは言うけど
じゃんねはあまり使わない
使ったとしてもここまで執拗に使わないじゃんね
686デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 11:11:00.39ID:G1iLlMLAH
この方式だと重複当選しちゃうな・・・
2〜3回繰り返して重複当選除外してやるかいね
どうせ1回しかやらんし
2020/07/30(木) 11:50:07.24ID:RHK/Swp/0
ああ、重複当選なしなのね
じゃあ300じゃなくて400ぐらいやっといて、301以降は順に重複時用の補欠にすればいい
2020/07/30(木) 11:50:49.23ID:A5neBprE0
2口の人は2回当選して然るべきでは?
口数ってそういうモノだと思うが
689デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 11:58:26.01ID:G1iLlMLAH
複数当選してしまうと総額が景品表示法に引っかかってしまうんですよ・・・
690デフォルトの名無しさん (ワッチョイ ce8c-UdrD)
垢版 |
2020/07/30(木) 12:09:03.16ID:LgbrNaJ+0
>>673
A列に個人名(もしくは個人コード)
B列に1回の購入金額

この形式で基礎データをもらえるものだと思っていいの?
691デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 12:11:02.85ID:G1iLlMLAH
>>690
ユーザーIDと期間内の累計購入金額は貰えます
手元に前年同月のデータもあります
2020/07/30(木) 12:18:53.15ID:AlO/S9Es0
>>689
その場合、複数応募者は口数に比例して当選確率を上げるアルゴリズムにしないと公平にならないけど
正直にやるか、手を抜いて全員の確率を同じにするかは運営側の気持ち次第
2020/07/30(木) 12:58:00.60ID:sgyBPyzj0
知識0でやろうとするのが間違いだと思うが
2020/07/30(木) 13:01:49.26ID:5b+GEPmC0
>>673
何の手間?
695デフォルトの名無しさん (JP 0H62-5jfS)
垢版 |
2020/07/30(木) 13:20:10.92ID:G1iLlMLAH
VBAの基礎を学んで言われたことを遂行するための知識を得るための手間かな・・・ほんと知識0なんで必要ならこれを機に手を出してみようかなと
2020/07/30(木) 13:41:23.22ID:/qyU4NXl0
なんか前もこんな奴居なかった?
2020/07/30(木) 13:59:59.21ID:tHevDqCo0
ビール飲みながらすげー適当に組んでみたんだけどあげちゃだめなの?
てかコード貼ったら使えるレベルなん?
うちの3世代ぐらい前のi5のPCで300件で5分ぐらいかかりそうな感じだけど
2020/07/30(木) 14:12:07.28ID:cH8Va6i20
>>697
いや、仕事しようよ
2020/07/30(木) 14:18:10.19ID:vzRw0yWJr
>>658
回答頂きましてありがとうございます

再度の質問になえうのですが

getelement.所属クラス.getelementbytagname("a")(インクリメント変数).length -1
messageボックスでouterhtml出力

上記で取得されてる要素を参照すると
1の時、label=page1 何だかcheck=true
2の時、label=page2 何だかcheck=false
3の時、label=page1 何だかcheck=false
4の時、label=page4 何だかcheck=false
5の時、label=page3 何だかcheck=false

上記のような要素取得がなされており、番号順にページ遷移がなされてないことがわかりました

タグ以外にラベルやタイプ等で特定要素を抽出する方法はありませんでしょうか
2020/07/30(木) 14:23:09.16ID:tHevDqCo0
>>698
でしゅよねー(ろれつが回らない
2020/07/30(木) 14:30:10.36ID:5b+GEPmC0
>>695
書き方だけならネットでいくらでも調べられる
言語知識よりやりたいことを実現するため計算方法を考える力が一番重要
2020/07/30(木) 15:27:13.51ID:YhpZ6thja
>>673
知識ゼロならまず、実現する為の手順を箇条書きで書き出す。
それを皆んなに見てもらっていけそうになったら
その手順に従ってプログラミングする。
2020/07/30(木) 15:33:07.63ID:zHAo07P50
Excel VBAの問題じゃなくてそれ以前の問題だよな
704デフォルトの名無しさん (スッップ Sd9a-nhZs)
垢版 |
2020/07/30(木) 15:36:31.06ID:keIwCUAVd
perl,pythonスレに続く釣りなのかね?
2020/07/30(木) 15:36:51.50ID:THFUAhsVr
innertextでクラス配下のaタグの行を1つずつ抽出でfor eachでページ番号のラベルに引っ掛けて処理するっていうのは可能でしょうか
2020/07/30(木) 17:31:34.81ID:THFUAhsVr
すいませんある程度自己解決しましたが、取得した要素にouterhtmlで抽出したところ番号順にタグ情報が取得出来たのですが、outerhtmlに続けて.clickだとエラーになります
一旦変数に格納しないとクリック出来ませんでしょうか
2020/07/30(木) 19:05:02.57ID:GYhlOBUpd
>>706
まずさ、OuterHtmlの型は何か考えてみようよ。
これでピンと来ないようなら、色々勉強する必要がある。
2020/07/30(木) 23:18:28.10ID:i0KpmXdS0
>>707
すいません

Dim table_date As MSHTML.HTMLDocument

上の宣言でまずouterhtmlの取得要素を格納する変数を宣言する必要があると思いますが
ユーザー定義型エラーが出てしまい、調べたところ参照設定で[Microsoft HTML Object Library]を有効にしないと使えないという事ですが、
上記のHTMLDocumentオブジェクトで宣言したマクロを他のPCのエクセルでも使用する場合、イチイチ参照設定を有効にしないと使えないのでしょうか

あともう1つの質問になりますが、

table_date = getelementclass(objie,"所属class名").outerhtml

上記でまず対象のタグが所属するclassの全要素を変数に格納したあと

for i = 0 to 10
table_date.getelementsbytag("a")(i).click
next

変数に格納されたhtml文のaタグ要素を一行ずつ取り出してボタンクリックしたいのですが、
この構文で可能でしょうか
2020/07/30(木) 23:22:34.48ID:b3ddbfY40
ちゃんもリファレンスを読んで返り値の型を確認しようね
710デフォルトの名無しさん (ワッチョイ d68e-nhZs)
垢版 |
2020/07/31(金) 00:01:53.71ID:sBpjKr+V0
>>708
そろそろ死ねよ
2020/07/31(金) 06:14:13.92ID:mPBeAG88a
>>708
まず自分で考えるくせを付けたほうがいいよ
712デフォルトの名無しさん (ワッチョイ 4102-UD9X)
垢版 |
2020/07/31(金) 07:35:13.13ID:Seq7lwgB0
ソルバーを使おうと思ってまずは機能するか簡単なものを作ってみたんですが、
与える値によって解があるにも関わらず機能したりしなかったりするんですが何がおかしいのでしょうか
A2 9
A3 15
A4 30
B2 空白
B3 空白
B4 空白
C2 =SUMPRODUCT(A2:A4,B2:B4)
として、値45で実行すると正しく解が見つかるのですが
値60で実行すると解が見つけられないのです。
45の場合
https://i.imgur.com/eAOJ9Ju.jpg
https://i.imgur.com/eCc0hFi.jpg
60の場合
https://i.imgur.com/t2CqGfo.jpg
https://i.imgur.com/lNC6CDZ.jpg
713デフォルトの名無しさん (アウアウエー Sa22-DfbS)
垢版 |
2020/07/31(金) 08:36:27.75ID:BJAFpQuia
>>712
は?ちょと、なに言ってのかわからない
何もおかしくないじゃない!?
ちゃんと54て出てんじゃん!
2020/07/31(金) 09:39:24.31ID:j4Q2HRqw0
局所最適なんだから初期値によって結果が異なるのは自明です
2020/07/31(金) 11:33:16.53ID:QyaenPE80
で、それのどこにVBAが関係してるんだ?
2020/07/31(金) 12:13:10.42ID:QmvWOqJdd
>>708
OuterHtmlの型は文字列。
ということは
Dim strA As String
strA="abc"
strA.Click
と同じことしようとしてる。
2020/07/31(金) 12:28:54.85ID:TQ16TWaV0
質問です
シェイプを回転させたくて
シェイプのRotationX,RotationY,RotationZを弄ってみたのですが、
Z軸は上手く行くのですが、X軸、Y軸はその軸に併せて縮小するだけで全く奥行きが出ません。

これは設定するプロパティが足りないのでしょうか?
それともこういうものなんでしょうか?
2020/07/31(金) 13:03:40.39ID:qhJJRQ9da
2.5Dとか擬似 3Dに過ぎないからでしょ
2020/07/31(金) 20:02:27.14ID:Seq7lwgB0
>>713-714
エクセルに問題がないなら問題があるのは私ということで考えてみたら
与えた命令を根本的に勘違いしていたみたいです
同じ値を複数回選択することもできると思っていました
もともと想定していた目的には問題なく使えますし、
もし複数選択させたい場合は同じ値を複数入れて対応します
スレ違いにも関わらず温かくご回答いただきありがとうございました

>>715
スレ違いだったみたいで申し訳ないです
ご迷惑おかけしました
2020/08/01(土) 08:39:00.72ID:kuObS2ra0
>>717
透視投影?
確かにマクロの自動記録でもそこだけ変わらないな。

しかしこれ何に使うんだろうな。
重すぎてポリゴンゲーは作れないしな。
スターフォックスレベルでも無理だろ。
2020/08/01(土) 09:22:34.54ID:wQymbaU60
部屋の模様替え後のレイアウトをExcelで作ろうとしてた人はいたな
2020/08/01(土) 09:31:20.60ID:znOplMqnM
一軒家の建築図面をExcelで作ろうとしてる人もいるかもしれない
2020/08/01(土) 11:11:05.09ID:Y2rZE5zP0
セルの色で絵を描くおじいちゃんがいる
2020/08/01(土) 11:15:30.51ID:qSPnGZZQ0
15年ぐらい前に、セルに色を塗ってゲームやアニメを作るのがはやった
2020/08/01(土) 11:19:29.08ID:biQ1QRTHa
Excelで 3Dモデル表示は出来るぞ?

ホーム
わかできブログ
ExcelやWordでも3Dモデルが扱えるというので試してみた

https://www.wakarutodekiru.com/blog/tips/673.html

https://www.wakarutodekiru.com/blog/wp-content/uploads/2020/05/2017-09-25_15h52_57-600x447-1.png
2020/08/01(土) 11:33:13.92ID:qSPnGZZQ0
できるかできないかじゃなくて、表示パフォーマンスや製作コストが実用レベルかどうかが重要では
727デフォルトの名無しさん (アウアウカー Sa5d-DfbS)
垢版 |
2020/08/01(土) 11:39:41.69ID:biQ1QRTHa
>>717の目的は
【シェイプを回転させたくて 】
なので回転出来るんだからそれで達成できてる
728デフォルトの名無しさん (ワッチョイ 5d01-UdrD)
垢版 |
2020/08/01(土) 11:47:14.76ID:bRba9mah0
エクセルを禁止しないと日本のITは韓国に追いつけない。

エクセルのせいで数学がわからない子供たちが増えている。

Ubuntuを使うべき。
2020/08/01(土) 12:06:15.89ID:51ANSeyq0
EXCELとの因果関係を証明せよ
2020/08/01(土) 12:21:54.41ID:wQymbaU60
そもそも子供はExcel使ってねーだろ
なんか電波でも出してるのか?
731デフォルトの名無しさん (アウアウカー Sa5d-DfbS)
垢版 |
2020/08/01(土) 12:29:20.74ID:biQ1QRTHa
ソロバンから電卓に代わってもそうゆう人って一定数いるよね
小学生からExcel使えるなら
FAXで集計してるコロナ関係者よりマシ
2020/08/01(土) 12:35:20.61ID:GdrGS70y0
そうゆうとか言ってる人はVBAの前に日本語勉強したほうがいいよ
733デフォルトの名無しさん (ワッチョイ 5d01-UdrD)
垢版 |
2020/08/01(土) 12:49:17.09ID:bRba9mah0
小学生のIT教育でUbuntuのインストールを教えるべきでは?
734デフォルトの名無しさん (アウアウカー Sa5d-DfbS)
垢版 |
2020/08/01(土) 12:59:14.62ID:biQ1QRTHa
すいませんすみませんあーざーっす
「なんで、そーゆーこと言うの?」さおいふ
オッハーマヨチュチュ
タイガーアッパっパー
「こちらの方でよろしかったですか?」
「おにぎり温めなかったほうで大丈夫ですか?」
「お買い物袋はお持ちでありませんでかまいませんか?」
735デフォルトの名無しさん (ワッチョイ 2590-roBb)
垢版 |
2020/08/01(土) 13:03:30.83ID:cAfu1ZYc0
https://research.sc/participant/login/dynamic/B5FBEF0B-B393-431A-A00A-88ECA7469238
736デフォルトの名無しさん (ワッチョイ 5d01-UdrD)
垢版 |
2020/08/01(土) 13:04:03.06ID:bRba9mah0
UbuntuはスパコンのOSにも使われているので、数学に強いです。

エクセルは禁止にするべきです。
2020/08/01(土) 13:50:27.99ID:VVRkNkWF0
>>736
金持ちLinuxおじさんこっちに来てまで迷惑掛けるなよ
2020/08/01(土) 17:35:39.71ID:l0aqZI9e0
マクロ実行ボタン1を押すとマクロ実行ボタン1が消えて
新しいマクロ実行ボタン2が出現。ボタン2を押すとマクロ実行ボタン3が出現するような
繰り返し動作を行いたいのですが可能でしょうか?
コードを教えていただきたく、よろしくお願いします。
2020/08/01(土) 17:45:47.31ID:BG2/nyCb0
>>738
つVisible
2020/08/01(土) 18:55:56.93ID:7hgxy1yb0
>>738
少し違うけど、こうした方が楽

With マクロ実行ボタン
Select Case .Caption
Case "マクロ実行ボタン2"
マクロ2
.Caption = "マクロ実行ボタン3"
Case "マクロ実行ボタン3"
マクロ3
.Caption = "マクロ実行ボタン1"
Case Else
マクロ1
.Caption = "マクロ実行ボタン2"
End Select
End With
2020/08/01(土) 18:58:42.53ID:B3d0/RPj0
一つのボタンにいろんな機能を詰め込むのはどうかと思うの
2020/08/01(土) 19:43:27.83ID:0WCKoTHWM
>>738
最近そう言うUI多いけど昔のように押せない時はグレーアウト(.Enabled)する方がわかりやすいと思うのは俺だけ?
2020/08/01(土) 20:04:46.26ID:xQeMvl7Qa
もう少し背景が分かるとね

インストーラの [次へ] みたいならこうだとか、有意義な回答が得られそうだけど
2020/08/01(土) 20:14:10.47ID:Y2rZE5zP0
ボタン1が押される
表示をボタン2に変える
無効にする
ボタン1の処理する
処理終わる
有効にする

これならまぁ押された時の表示によって分岐もありかな
2020/08/02(日) 00:24:11.20ID:fhoRH5wU0
>>743
その場合はシートの移動のほうがスッキリする
2020/08/02(日) 04:27:47.15ID:yz3gxwYFM
ラウンドワンとかゲームセンターに置いてある
「動体視力ゲーム」みたいなのじゃないの?
数字ボタンがランダムな位置に出現して
押したら次のボタンが別の位置に現れるヤツ
747デフォルトの名無しさん (ワッチョイ 4e06-LqCg)
垢版 |
2020/08/02(日) 12:51:46.72ID:i29UoGb/0
>>673
エクセルのほうが簡単だと思います。
A列:1〜20000までの連番
B列:口数
C列:∔B1/B列合計 (以下コピー)
D列:1行目は0、2行目 +C1、3行目以降は=+D2+C2をコピー
E列:+A1(以下コピー)
F列:=RAND()(以下コピー)
G列:=VLOOKUP(+F1,D$1:E$20000,2)を300行目までコピー
300/20000なら大口がいないと重複しなさそう。
重複があったらシートコピーして当選行を削除。
2020/08/02(日) 13:42:27.44ID:7JTul7vs0
俺らそういうのいやだから
重複しなさそうとか認めないし
749デフォルトの名無しさん (ワッチョイ 4e06-LqCg)
垢版 |
2020/08/02(日) 14:04:53.69ID:i29UoGb/0
ベースモデル考えて確率的に速い手段を選ぶだけ。
コード書くのが好きなら計算結果を配列に入れて、既定カウントに達するまで回せばいいけど、時間の無駄。
2020/08/02(日) 14:52:01.85ID:6ZNrYs7D0
条件にもよるけど今回の話の場合は1回目重複覚悟でやってから重複分だけ再度重複なしの方法でやるのが速そうだね
2020/08/02(日) 15:17:38.22ID:7JTul7vs0
時間かかるってそんなの5分で終わるし
2020/08/02(日) 18:40:53.06ID:i29UoGb/0
>>751
ワッチョイって何かわかる?
2020/08/02(日) 19:11:50.62ID:7JTul7vs0
>>752
実際にコード書いたから5分かかるっていってんだろぼけなす
てめぇみたいに他人のワッチョイに執着する気持ちの悪いはげおやじじゃねぇんだよぉ
2020/08/02(日) 22:26:59.52ID:RZU5Rxbr0
>>747
A列:連番
B列:口数
C列:当選確率 = 口数/口数の合計
D列:点数 = 当選確率*RAND()
これでソートかけたほうが簡単じゃね
300番付近のボーダーラインで点数の重複が生じたら
重複者のみを対象に再度抽選
まだ重複者がいたらさらに再度抽選(・・・)

再抽選回数が0〜300と未定だけども現実的には多くても数回で終わるだろうよ
755デフォルトの名無しさん (ワッチョイ 4e06-LqCg)
垢版 |
2020/08/02(日) 22:40:10.04ID:i29UoGb/0
>>754
そちらの方がいいですね。
2020/08/03(月) 02:34:06.94ID:R5x2YJ6L0
それだと当選確率が公平にならない気がする
まあコーディングの手間と計算時間と公平さとどっちを取るかだな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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