Excel VBA 質問スレ Part58

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/11/19(月) 06:47:24.99ID:Qq88xGOU
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
2019/02/04(月) 22:43:34.77ID:lmibofpe
エディタは別のを使わずに備え付けのものを使いますか?
2019/02/04(月) 22:52:12.63ID:WAN0VVnl
高速でシートを切り替えるとか、
ふざけるのかと思ったら、結構真面目に作っててワロタ。
2019/02/05(火) 08:19:52.51ID:8bHFC9p3
>>854
後で見てみるけど、仕様になかったインターバルの時間とか可変で設定できる?
2019/02/05(火) 08:25:47.35ID:Bt9udYT0
フラッシュ暗算て何?
てっきりルパン三世だと思ったんだが
2019/02/05(火) 09:46:15.11ID:seWX9f2k
>>856
画面に数字が次々に出て暗算で合計を求めるやつ
https://www.youtube.com/watch?v=wTkVZne-i2g
2019/02/05(火) 10:20:39.56ID:Kjw5jSR6
>>857
まあ、これが評価できる最低限の仕様だな
2019/02/05(火) 10:22:40.38ID:Kjw5jSR6
ちゃんとしたのを、>>850が作ってくれるやろ
ことを期待しよう
860828
垢版 |
2019/02/05(火) 11:08:12.53ID:Kjw5jSR6
>>828 デフォルトの名無しさん2019/02/04(月) 06:46:04.48ID:d8a/a/xM
>>825
> 作るのは他の要件が有るだろうから他の人に
> Excelのシートから枠線を消して全画面表示
> ランダムに出す文字はワードアートを挿入したり
> 消すだけでいいだろ
最低限でもこの程度のことやれよっと、ワードアートの動作速度が問題なら全て作成してから
表示非表示を切り替えるだけだよっと
2019/02/05(火) 11:15:39.50ID:seWX9f2k
>>852 
↑これで骨組みは十分だろ
2019/02/05(火) 11:22:46.31ID:Kjw5jSR6
>>861
こんなの客に提示するとすぐ帰っていくよ
イメージが違い過ぎる
2019/02/05(火) 11:25:28.34ID:Kjw5jSR6
行間を読めない奴はいつまでたってもろくなもの作れないんだよ
おれは、年取ったから行間いっぱいある奴は遠慮するけどな
2019/02/05(火) 11:53:42.93ID:Kjw5jSR6
ちゃんとしたのを、>>850が作ってくれるやろ
ことを期待しよう。
865デフォルトの名無しさん
垢版 |
2019/02/05(火) 12:15:44.59ID:jg7BNmXb
なんやバカ必死やなw
2019/02/05(火) 12:19:32.33ID:8bHFC9p3
>>865
面白いな何で草はえるの
2019/02/05(火) 12:32:36.37ID:Kjw5jSR6
>>865
ちみぐらいバカをからかうのって私の趣味ではありません
あわれ過ぎるから
868デフォルトの名無しさん
垢版 |
2019/02/05(火) 12:53:49.77ID:jg7BNmXb
加速するバカw
869852
垢版 |
2019/02/05(火) 12:54:18.46ID:uJYvVabq
>>855>>857の要素を気持ち取り入れてみたよ
あとはもうシラネ
https://www.axfc.net/u/3957750
870852
垢版 |
2019/02/05(火) 13:02:38.95ID:uJYvVabq
間違えた。こっちで
https://www.axfc.net/u/3957753
2019/02/05(火) 13:05:08.57ID:Kjw5jSR6
>>869
知らねえと言われても

ファイルが見つかりません
既にファイルが削除されたか、期限切れになったか、ダウンロード上限数に達した、若しくは誤ったURLが指定されています。
再度ご確認下さいますようお願い致します。
2019/02/05(火) 15:50:53.68ID:Kjw5jSR6
>>870
今さっき起きた。
ソースを1分程度見たけど、毛が1本生えただけだろ
オリジナル性もない、引かれている部分もありで
評価はマイナスだな、マクロを動かす気にもならん
2019/02/05(火) 16:03:55.64ID:Kjw5jSR6
>>857
ホントなんだよ、この映像少なくとも全画面表示で
他の表示はテスト中いらないは
結果は、答え合わせでちゃんと出るようにな
問題作成だって、何の機能もないって考えてないだろ
指定した桁数で数字を作成しろよ・・・こんなの仕様の内の一寸な
2019/02/05(火) 16:18:43.72ID:Kjw5jSR6
>>870
テストしないのは申し訳ないと思ってもう一度20秒ぐらい見た
あまりにごみで、テストしてない
875デフォルトの名無しさん
垢版 |
2019/02/05(火) 20:09:31.48ID:2313QgIt
必死すぎてアンタッチャブルのバカw
2019/02/05(火) 20:30:50.84ID:seWX9f2k
金もらえるならきちんと作るだろうけど金出さないんでしょ?
2019/02/05(火) 21:01:45.45ID:WLSIITfa
きちっとって このレベルを100倍してもくずはくずだな
2019/02/05(火) 21:13:23.45ID:seWX9f2k
ただでもらったものにケチつけるって人間としてクズだな
2019/02/05(火) 21:45:13.17ID:84y7DIGj
なんかつらいことがあったんでしょ
そっとしといてあげなさい
880852
垢版 |
2019/02/05(火) 23:50:58.70ID:uJYvVabq
ユーザーフォームに変えてみた
あと少し機能を足してみた
https://www.axfc.net/u/3957855
2019/02/06(水) 00:44:18.42ID:ZnA/X3oO
A B
1 あ
2 い
1 か
2 き
3 く
1 さ
1 た
2 ち

となっているデータを、連番でまとめて

あい
かきく

たち

とするにはどうすればいいですか?
2019/02/06(水) 01:00:17.91ID:Piy/PJ2X
>>881
死ねばいいよ
2019/02/06(水) 05:43:02.95ID:DSThmZXP
死ねばいいよ
2019/02/06(水) 10:06:21.68ID:pkuTd0pW
>>881
関数で直接は難しいけどVBAでやるなら簡単だろ
ただそれもわからない人間に提示しても無駄だな
2019/02/06(水) 10:48:09.84ID:pkuTd0pW
>>880
マクロを実行してみた、君は自分で考えてるんで良いと思う
1.出力する問題は固定ではなく文字とか長い数字もいらない
  桁数(上限・下限)を指定してランダムに数値を発生すること
  フラッシュ暗算を考えると余分な機能はいらない
2.バックを全画面表示にすること
  もちろん、画面の中央に表示する、画面の大きさから割合で文字の大きさを指定する
3.タイミングをmsで指定指定しているが
  ディスプレーって最大解像度ではリフレッシュレート60hz(16.6msおき)程度なんだよ
  ディスプレーの反応速度も早くて5msかかる、10ms単位で十分だが、好みはある
4.答えの表示がチェックだが
  要するに終わった後、計算が合ってるかを確認するんだから
  終了後に特定のキーを押したら答えを出すでいいだろ
ざっくり、大きく気になった点だけ、やり方は分からなければ聞け
2019/02/06(水) 10:57:13.19ID:pkuTd0pW
全画面表示は数字表示部をユーザーフォーム(全画面)で表示文字をVBAで切り替えたほうが簡単だな
2019/02/06(水) 11:03:53.28ID:inxqkSwn
上司気取りの人が上から目線でダメだしし出したけどこの人どんだけ偉いの?
まさか感謝でもしてもらえるとか妄想してんのかな
2019/02/06(水) 11:26:06.43ID:pkuTd0pW
>>887
で、君にはどんなダメ出しが欲しいんだ?
2019/02/06(水) 11:34:27.39ID:pkuTd0pW
まあ、自分で作って「フラッシュ暗算」で面白いものを作ってみろよ
自分で満足できないものは、他人は評価しないよ
890デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:26:19.63ID:FGND1cQA
おいwこのバカ必死すぎてダメ出しとかしだしたでw
891デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:43:34.25ID:eyuAOAwV
>>881
Dim i As Long
i = 1

Do While Range("A1").End(xlDown).Row > i
Cells(Cells(i, 1), 3) = Cells(Cells(i, 1), 3) + Cells(i, 2)
i = i + 1
Loop

答えやアドバイスをしないでマウントしてくるやつは結局何も出来ないやつと同じなので放置で。
892デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:45:00.03ID:eyuAOAwV
あ、質問の意味まちがえてたw
2019/02/06(水) 12:50:23.01ID:oteDmMe3
>>892
だよね
ひらがなのあ行か行…で括るっぽいし
2行目の2と4行目の2が紐づく1が違うから考えれば出来そうだけど面倒そう
2019/02/06(水) 12:56:44.95ID:pkuTd0pW
>>893
え、どんだけ
2019/02/06(水) 12:58:37.07ID:pkuTd0pW
バカって、すぐ熱くなるよな、面白いけど
896デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:07:21.25ID:eyuAOAwV
これでどうや!w

Dim i, j, k As Long
i = 1: j = 1: k = 1 'i=データの行 j=書き込みセルの行 k=数列のカウント用

Do While Range("A1").End(xlDown).Row >= i

Cells(j, 3) = Cells(j, 3) + Cells(i, 2)

If Cells(i + 1, 1) <> k + 1 Then j = j + 1: k = 0
i = i + 1
k = k + 1
Loop
2019/02/06(水) 13:15:51.19ID:pkuTd0pW
>>896
>これでどうや!w
何に対して言ってるのかな?。なんだろう?こんなの提示して?
よくわからんな
898デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:22:01.82ID:eyuAOAwV
>>897
ばっかだなぁ、881に対していってんだろw
つかお前マウントとることしかしないASDのザコという認識だから何も求めてない。レスいらない。
するならちゃんと自分で作ったものを提示してからだ。できたらあやまる。
2019/02/06(水) 13:25:32.81ID:pkuTd0pW
例えば
「Do While Range("A1").End(xlDown).Row >= i 」
こんなの"A1"と変数jとiが同期できていないことでプログラムじゃないよ
2019/02/06(水) 13:27:12.93ID:pkuTd0pW
>>898
うふ〜面白いな
2019/02/06(水) 13:30:48.46ID:pkuTd0pW
>>898
からかうしかないけど、>>881って何か意味あるんか?
バカって面白いな
2019/02/06(水) 13:34:49.77ID:pkuTd0pW
>>898
頭悪いのに大変だな
903デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:37:03.76ID:eyuAOAwV
>>899
いや、そうじゃなくってよ。

俺はプロじゃないから変なことしてるかもしれない。いやあるだろう。
そいでお前は凄いのかもしれないけど結局何も作ってないわけだろ?
それって何も出来ないのと同じなんだから偉そうにするなって言いたいの。
お前さ、俺の言っている意味解ってる?
2019/02/06(水) 13:41:27.75ID:pkuTd0pW
>>903
無能が無能に教える意味あるか、無能が威張る意味あるか?
役に立つってなんだよ?
お前の満足は何だよ、作ったってことか?
905デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:43:57.13ID:eyuAOAwV
>>904
ん?お前無能なの?無能なのに威張ってるの?ダメじゃん。
役に立つって何?満足って何ってどういう意味?
俺はそんなこと書いてないけどそれはどこから出てきたんだ?
お前ののーみそか?
2019/02/06(水) 13:44:16.40ID:pkuTd0pW
おれがこのスレで作っても意味ないからな質問スレだ答えるだけ
907デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:53:46.56ID:eyuAOAwV
ああ、そういうことか。
質問には答えるけど代りにお前が作ることはないって意味でいいのか?
それがお前のポリシーなら俺はお前に口はさまないよ。
偉そうにされて終わるだけみたいだからお前には質問もしたくないけどな。

質問してるやつはいろいろ試して困ってるんだろ?
俺は動くもの見せて、あとは自分で工夫するなりなんなりした方が良いと思ってる。
だって、具体的なほうが解りやすいじゃん。
それに対してお前がどうこう言うことはないだろ?俺はお前に何も聞いてないんだから。
2019/02/06(水) 13:57:29.30ID:pkuTd0pW
>>907
まあ、補足すると具体的なものを使えるのは少し考えたやつ
考えない奴は応用できない、だから答えではなくヒントなんだがな
909デフォルトの名無しさん
垢版 |
2019/02/06(水) 14:10:39.95ID:eyuAOAwV
>>908
うーん、辞書がわりに次々聞かれても結局俺が作ってるかいー!
みたいになりそうで確かに嫌だな。
ただお前凄そうなんだからそんくらいしてやってもバチあたらんべ。
あ、そこらへんは俺が口はさむことじゃないな、すまん。でももったいないわーほんまに。
俺は基本は自分で調べるから聞くことってほとんどないけど
本当に困っててもまともな返答来なさそうでここで聞けないからさらに困ることあるもん。
お前に言ってるわけじゃないけどライトユーザーからしたら雰囲気怖いよここ。
2019/02/06(水) 14:12:54.78ID:pkuTd0pW
>>880
お前、ちゃんと満足いくもの作ってみろ
やめるのは簡単だまんぞくできるレベルもお前しだい
おれは、ダメ出しはしてやるよ、ダメな点は数多いがプライオリティは下がっている
2019/02/06(水) 14:32:47.81ID:sQxfU38+
>おれがこのスレで作っても意味ない
>>880も同様だな
2019/02/06(水) 14:35:44.06ID:pkuTd0pW
>>911
別にそれでいいが♡♡♡
2019/02/06(水) 14:38:23.25ID:sQxfU38+
次の質問どうぞ
2019/02/06(水) 14:45:26.84ID:Piy/PJ2X
頭が悪いのが丸わかりな次の質問どうぞ
2019/02/06(水) 14:48:20.14ID:54X0jJM7
マウントしたがりのバカしか居ないスレですけど、それでもよかったら質問をどうぞ
2019/02/06(水) 23:06:50.96ID:pkC1NeiE
パラパラ漫画作って、動画に撮って再生すればいいんじゃね?
917852
垢版 |
2019/02/06(水) 23:08:35.09ID:gXPhlUR0
作ってるうちに楽しくなってつい作りこんでしまいました
https://www.axfc.net/u/3958012
変更点
・ランダム表示
・乱数生成
・(ほぼ)フルスクリーンモード(1920x1080、1600x900、1280x720、800x600の4種類の画面に対応)
・ユーザーインターフェースの強化
・デバッグを少々

最初に作ってほしいといっていた人の要望にかなってるかが心配
2019/02/06(水) 23:27:15.81ID:pkC1NeiE
フルスクリーンならDirectXだろ、と思ったら、
Windows10だと色々面倒なのな。
919852
垢版 |
2019/02/06(水) 23:33:49.56ID:gXPhlUR0
いえ、知識がないだけです
2019/02/07(木) 00:04:38.13ID:o0PdMVgb
Excelの起動画面、ドラクエでエンカウントしたみたいな感じにできないかな。
緑画面に白文字でExcelって、ちょっと地味じゃない?
2019/02/07(木) 00:55:54.67ID:XTuXysWv
ID:pkuTd0pWだけど
やっぱり午前中はましだが午後は酒がだいぶ効いて
すまんな
まあ文字結合のお題はExcelの問題をコピペしたものだろう
これ関数とExcelの機能を使って解いた方が面白い
2019/02/07(木) 01:10:49.40ID:XTuXysWv
>>917
中身を見ていないが
ディスプレイの解像度を取得する(API)
https://www.moug.net/tech/acvba/0020006.html
2019/02/07(木) 01:15:55.77ID:XTuXysWv
>>881
cを作業列にして
結果をピボットテーブルを使って表示
2019/02/07(木) 06:41:43.06ID:C6bM/gU/
質問です

同じブック、同じシート上にある
任意の二つのセル間を
セルで直線を引きたいと思っています

例えばA1セルとD4セルを指定したら
A1、B2、C3、D4のセルが黒く着色されるような
そんな感じです

どのようなロジックを組めば宜しいでしょうか?
2019/02/07(木) 07:17:58.06ID:sLOxqlfO
>>924
まず動作仕様を決める
1,指定の仕方をどうするか クリック Or 別セルで指定
2,複数回線を引くのか 取り消しは同じ指定で取り消すのか
3,クロスしたセルの色は
4,線の色はどの様に指定するのか
5,全てクリアーする処理は必要か?
2019/02/07(木) 07:27:46.12ID:sLOxqlfO
>>924
セルの色の指定方法は、マクロの記録でセルの色を変えて、マクロの記録の終了で確認してください
2019/02/07(木) 08:42:01.81ID:94HRw/Ac
>>924
何に使うのかが謎だ。
絵でも描くのかな?
2019/02/07(木) 08:46:47.16ID:C6bM/gU/
>>925
返答ありがとうございます
特にトリガーは定めていませんし
複数回引くことも考慮しなくていいです
こちらとしては
「二つのセル間にセルで線を引くこと」の
実際にどのセルが着色対象となるのかが
求められるロジックが必要となっています

>>926
ありがとうございます
ただ、上記しました通り
着色自体が焦点ではなく
どのセルが着色対象となるのかを
求めることができればなぁと考えています
2019/02/07(木) 09:04:22.19ID:sLOxqlfO
>>928
セルの位置情報から列の差が大きいか行の差が大きいかでループする側を決定します
ループする側は1増えるいく
その数に小さい側を大きい側で割って少数側を四捨五入したものが小さい側の増分でいいでしょう
2019/02/07(木) 09:09:14.04ID:sLOxqlfO
追記 ループ変数は0から差分まで
列ぎょうとも 初期値に増分を足していく
2019/02/07(木) 09:45:06.58ID:aUTfkvT8
列幅、行幅ともにまちまちだと考えるとマジメに座表計算がいりそうだ
2019/02/07(木) 10:25:13.14ID:nA5U51xW
>>931
セル単位での指定だから、幅は関係ない
2019/02/07(木) 10:30:41.24ID:nA5U51xW
>>931
すまん、関係あるなそれをかんがえると確かに難しいが
実質的にその構造で線を引く意味あるのかな?
2019/02/07(木) 11:11:43.55ID:nA5U51xW
>>917
この感覚だと、遠いな
2019/02/07(木) 11:16:37.25ID:nA5U51xW
>>931
所詮線はシェイプで引けばいいだけだからな
セルの色を変えることにどんな意味があるかが問題
2019/02/07(木) 11:38:14.89ID:aUTfkvT8
>>935
セルにシェイプが掛かっているかはすぐ判定できるんだっけ?
できるならまあ簡単かな
2019/02/07(木) 11:59:06.94ID:nA5U51xW
>>936
セルの色を変える仕様が実質的に意味あるかが疑問なだけ
意味ないもの検討する必要ないからな
2019/02/07(木) 12:08:17.49ID:nA5U51xW
まあ、意味あることならいくらでも方法がある(各行列のプロパティから幅なんて取れるからな)けど
お題が意味ないこと検討する必要もない
2019/02/07(木) 13:37:49.53ID:JiT+m3d9
数学的な問題でVBA関係ないんじゃね
2019/02/07(木) 14:00:56.39ID:C6bM/gU/
皆さんありがとうございます
セルで線を引く質問をした者です

セル幅がまちまちのケースは
こちらも想定外でした
均等幅で求められれば良いと
考えていましたから
既に回答して頂いた方法で
試してみたいと思います

どうもありがとうございました
941デフォルトの名無しさん
垢版 |
2019/02/07(木) 16:33:46.50ID:IUpQT5qY
質問です

文字列のカラムと数値のカラムが混在する表
数値カラムは空欄セルもある
この表からセル値をコピーするとき、数値カラムでセルが空欄の時はコピー先を0にしたい
文字列カラムでセルが空欄の時はコピー先も空欄

タイトル名で判定するのはスマートじゃないと思って
セルや変数の仕様を使って上手くできないでしょうか
2019/02/07(木) 17:12:43.16ID:suQqSSWO
セルの書式を1つずつチェックするのが確実
2019/02/07(木) 17:18:57.62ID:nA5U51xW
>>941
これはVBAの質問ですか?
機能はExcelの質問だよ
2019/02/07(木) 22:22:10.23ID:kH7/pekJ
数値カラムの空欄はそのまま空欄で
文字カラムの空欄を長さ0の文字列にしておけばセル参照で
2019/02/07(木) 23:16:40.13ID:o0PdMVgb
>>881
1が出てくる回数をそのまま行番号に使って、
1・2・3という数字を、そのまま列番号に使う。
2019/02/07(木) 23:30:09.71ID:nA5U51xW
>>945
それを式で表記すると?
2019/02/08(金) 00:39:13.26ID:nir6IlOg
質問です
C言語のFILEポインタをexternしているdllをvbaから呼び出すときにシグニチャーは何型ですか
2019/02/08(金) 00:50:45.35ID:WrxcLohJ
>>946
ごめん、勘違いしてた。
何とかできたけど、ものすごくダサい。

C列 =COUNTIF(INDIRECT("A1:A"&ROW()),A:A)
D列 =MATCH(ROW(),C:C,0)
E列 =LEFT(F:F&G:G&H:H&I:I&J:J&K:K,FIND("0",F:F&G:G&H:H&I:I&J:J&K:K)-1)
F列 =INDEX($1:$1048576,INDIRECT("D"&ROW())+COLUMN()-6,2)
G列以降 =IF(INDEX($1:$1048576,INDIRECT("D"&ROW())+COLUMN()-7,1)<=INDEX($1:$1048576,INDIRECT("D"&ROW())+COLUMN()-6,1),INDEX($1:$1048576,INDIRECT("D"&ROW())+COLUMN()-6,2),0)

E列が答えだけど、2016なら、ここはCONCATENATEで。
2019/02/08(金) 01:05:57.02ID:WrxcLohJ
↑ごめん、これもなんかおかしいわ。
950デフォルトの名無しさん
垢版 |
2019/02/08(金) 04:25:07.76ID:49YgIYkI
よろしくお願いします。

ある住所リストを宛名印刷するためのVBAを書きました。
印刷したときに、枠に収らないとまずいし、とはいえ町名の途中などで機械的に次の
行になるのもまずいので、途中、全角スペースがあったら次の行にする、という
ことを考えて、名簿リストを入力する係の人に「だいたい○文字目くらいで、市町村名あたりの
キリのいいところで全角スペースを入れておいてください」と頼んでおきました。

Jusho = sheets("名簿").cells.(rowcnt,2)
If InStr(Jusho, " ") Then
  tmp = Split(Jusho, " ")
Jusho1 = tmp(0)
Jusho2 = tmp(1)
Else
Jusho1 = Jusho0
Jusho2 = " "
End If
sheets("印刷元").range("A1")=Jusho1
sheets("印刷元").range("A2")=Jusho2
sheets("印刷元").printout

こうやって、長い住所を2行に分けることに成功したのですが、
今になって、マンション名やらなんやらで、全角スペースがいくつもある場合があることがわかりました。
つまり、Jusho0に、2つ以上のスペースがある場合が出てきて、そうすると、tmp(2)やtmp(3)が
発生することなってしまい、印刷の住所が途切れてしまうことになりました。
私のVBAの書き方が悪かったのだと思います。

「1つ目のスペースで2つに分ける。2つ目以降のスペースは無視」というVBAを書きたいです。
どうすればよいでしょうか?
2019/02/08(金) 05:17:51.52ID:0dQnaPPd
>>881
Ruby で作った

require 'csv'

results = [ ]
# 空白区切りで、ヘッダー有り
options = { :headers => true, col_sep: " " }

# CSV 入力ファイルを、1行ずつ処理する
CSV.foreach( "input.csv", options ) do | row |
if row[ 0 ] == "1"
results.push row[ 1 ] # 要素の追加
else
results[ -1 ] += row[ 1 ] # 最終要素に文字列を連結
end
end

puts results
2019/02/08(金) 05:23:12.23ID:imEPOnT1
>>950
tmp = Split(Jusho, " ", 2)
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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