X



Excel VBA 質問スレ Part58
レス数が950を超えています。1000を超えると書き込みができなくなります。
0854デフォルトの名無しさん
垢版 |
2019/02/04(月) 22:52:12.63ID:WAN0VVnl
高速でシートを切り替えるとか、
ふざけるのかと思ったら、結構真面目に作っててワロタ。
0860828
垢版 |
2019/02/05(火) 11:08:12.53ID:Kjw5jSR6
>>828 デフォルトの名無しさん2019/02/04(月) 06:46:04.48ID:d8a/a/xM
>>825
> 作るのは他の要件が有るだろうから他の人に
> Excelのシートから枠線を消して全画面表示
> ランダムに出す文字はワードアートを挿入したり
> 消すだけでいいだろ
最低限でもこの程度のことやれよっと、ワードアートの動作速度が問題なら全て作成してから
表示非表示を切り替えるだけだよっと
0863デフォルトの名無しさん
垢版 |
2019/02/05(火) 11:25:28.34ID:Kjw5jSR6
行間を読めない奴はいつまでたってもろくなもの作れないんだよ
おれは、年取ったから行間いっぱいある奴は遠慮するけどな
0865デフォルトの名無しさん
垢版 |
2019/02/05(火) 12:15:44.59ID:jg7BNmXb
なんやバカ必死やなw
0868デフォルトの名無しさん
垢版 |
2019/02/05(火) 12:53:49.77ID:jg7BNmXb
加速するバカw
0871デフォルトの名無しさん
垢版 |
2019/02/05(火) 13:05:08.57ID:Kjw5jSR6
>>869
知らねえと言われても

ファイルが見つかりません
既にファイルが削除されたか、期限切れになったか、ダウンロード上限数に達した、若しくは誤ったURLが指定されています。
再度ご確認下さいますようお願い致します。
0872デフォルトの名無しさん
垢版 |
2019/02/05(火) 15:50:53.68ID:Kjw5jSR6
>>870
今さっき起きた。
ソースを1分程度見たけど、毛が1本生えただけだろ
オリジナル性もない、引かれている部分もありで
評価はマイナスだな、マクロを動かす気にもならん
0873デフォルトの名無しさん
垢版 |
2019/02/05(火) 16:03:55.64ID:Kjw5jSR6
>>857
ホントなんだよ、この映像少なくとも全画面表示で
他の表示はテスト中いらないは
結果は、答え合わせでちゃんと出るようにな
問題作成だって、何の機能もないって考えてないだろ
指定した桁数で数字を作成しろよ・・・こんなの仕様の内の一寸な
0874デフォルトの名無しさん
垢版 |
2019/02/05(火) 16:18:43.72ID:Kjw5jSR6
>>870
テストしないのは申し訳ないと思ってもう一度20秒ぐらい見た
あまりにごみで、テストしてない
0875デフォルトの名無しさん
垢版 |
2019/02/05(火) 20:09:31.48ID:2313QgIt
必死すぎてアンタッチャブルのバカw
0881デフォルトの名無しさん
垢版 |
2019/02/06(水) 00:44:18.42ID:ZnA/X3oO
A B
1 あ
2 い
1 か
2 き
3 く
1 さ
1 た
2 ち

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

あい
かきく

たち

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

答えやアドバイスをしないでマウントしてくるやつは結局何も出来ないやつと同じなので放置で。
0892デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:45:00.03ID:eyuAOAwV
あ、質問の意味まちがえてたw
0893デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:50:23.01ID:oteDmMe3
>>892
だよね
ひらがなのあ行か行…で括るっぽいし
2行目の2と4行目の2が紐づく1が違うから考えれば出来そうだけど面倒そう
0896デフォルトの名無しさん
垢版 |
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
0897デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:15:51.19ID:pkuTd0pW
>>896
>これでどうや!w
何に対して言ってるのかな?。なんだろう?こんなの提示して?
よくわからんな
0898デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:22:01.82ID:eyuAOAwV
>>897
ばっかだなぁ、881に対していってんだろw
つかお前マウントとることしかしないASDのザコという認識だから何も求めてない。レスいらない。
するならちゃんと自分で作ったものを提示してからだ。できたらあやまる。
0899デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:25:32.81ID:pkuTd0pW
例えば
「Do While Range("A1").End(xlDown).Row >= i 」
こんなの"A1"と変数jとiが同期できていないことでプログラムじゃないよ
0903デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:37:03.76ID:eyuAOAwV
>>899
いや、そうじゃなくってよ。

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

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

最初に作ってほしいといっていた人の要望にかなってるかが心配
0919852
垢版 |
2019/02/06(水) 23:33:49.56ID:gXPhlUR0
いえ、知識がないだけです
0920デフォルトの名無しさん
垢版 |
2019/02/07(木) 00:04:38.13ID:o0PdMVgb
Excelの起動画面、ドラクエでエンカウントしたみたいな感じにできないかな。
緑画面に白文字でExcelって、ちょっと地味じゃない?
0921デフォルトの名無しさん
垢版 |
2019/02/07(木) 00:55:54.67ID:XTuXysWv
ID:pkuTd0pWだけど
やっぱり午前中はましだが午後は酒がだいぶ効いて
すまんな
まあ文字結合のお題はExcelの問題をコピペしたものだろう
これ関数とExcelの機能を使って解いた方が面白い
0924デフォルトの名無しさん
垢版 |
2019/02/07(木) 06:41:43.06ID:C6bM/gU/
質問です

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

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

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

>>926
ありがとうございます
ただ、上記しました通り
着色自体が焦点ではなく
どのセルが着色対象となるのかを
求めることができればなぁと考えています
0929デフォルトの名無しさん
垢版 |
2019/02/07(木) 09:04:22.19ID:sLOxqlfO
>>928
セルの位置情報から列の差が大きいか行の差が大きいかでループする側を決定します
ループする側は1増えるいく
その数に小さい側を大きい側で割って少数側を四捨五入したものが小さい側の増分でいいでしょう
0930デフォルトの名無しさん
垢版 |
2019/02/07(木) 09:09:14.04ID:sLOxqlfO
追記 ループ変数は0から差分まで
列ぎょうとも 初期値に増分を足していく
0933デフォルトの名無しさん
垢版 |
2019/02/07(木) 10:30:41.24ID:nA5U51xW
>>931
すまん、関係あるなそれをかんがえると確かに難しいが
実質的にその構造で線を引く意味あるのかな?
0935デフォルトの名無しさん
垢版 |
2019/02/07(木) 11:16:37.25ID:nA5U51xW
>>931
所詮線はシェイプで引けばいいだけだからな
セルの色を変えることにどんな意味があるかが問題
0937デフォルトの名無しさん
垢版 |
2019/02/07(木) 11:59:06.94ID:nA5U51xW
>>936
セルの色を変える仕様が実質的に意味あるかが疑問なだけ
意味ないもの検討する必要ないからな
0938デフォルトの名無しさん
垢版 |
2019/02/07(木) 12:08:17.49ID:nA5U51xW
まあ、意味あることならいくらでも方法がある(各行列のプロパティから幅なんて取れるからな)けど
お題が意味ないこと検討する必要もない
0940デフォルトの名無しさん
垢版 |
2019/02/07(木) 14:00:56.39ID:C6bM/gU/
皆さんありがとうございます
セルで線を引く質問をした者です

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

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

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

タイトル名で判定するのはスマートじゃないと思って
セルや変数の仕様を使って上手くできないでしょうか
0944デフォルトの名無しさん
垢版 |
2019/02/07(木) 22:22:10.23ID:kH7/pekJ
数値カラムの空欄はそのまま空欄で
文字カラムの空欄を長さ0の文字列にしておけばセル参照で
0945デフォルトの名無しさん
垢版 |
2019/02/07(木) 23:16:40.13ID:o0PdMVgb
>>881
1が出てくる回数をそのまま行番号に使って、
1・2・3という数字を、そのまま列番号に使う。
0947デフォルトの名無しさん
垢版 |
2019/02/08(金) 00:39:13.26ID:nir6IlOg
質問です
C言語のFILEポインタをexternしているdllをvbaから呼び出すときにシグニチャーは何型ですか
0948デフォルトの名無しさん
垢版 |
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で。
0950デフォルトの名無しさん
垢版 |
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を書きたいです。
どうすればよいでしょうか?
0951デフォルトの名無しさん
垢版 |
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
レス数が950を超えています。1000を超えると書き込みができなくなります。

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