ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
Excel VBA 質問スレ Part58
レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/11/19(月) 06:47:24.99ID:Qq88xGOU
882デフォルトの名無しさん
2019/02/06(水) 01:00:17.91ID:Piy/PJ2X >>881
死ねばいいよ
死ねばいいよ
883デフォルトの名無しさん
2019/02/06(水) 05:43:02.95ID:DSThmZXP 死ねばいいよ
884デフォルトの名無しさん
2019/02/06(水) 10:06:21.68ID:pkuTd0pW885デフォルトの名無しさん
2019/02/06(水) 10:48:09.84ID:pkuTd0pW >>880
マクロを実行してみた、君は自分で考えてるんで良いと思う
1.出力する問題は固定ではなく文字とか長い数字もいらない
桁数(上限・下限)を指定してランダムに数値を発生すること
フラッシュ暗算を考えると余分な機能はいらない
2.バックを全画面表示にすること
もちろん、画面の中央に表示する、画面の大きさから割合で文字の大きさを指定する
3.タイミングをmsで指定指定しているが
ディスプレーって最大解像度ではリフレッシュレート60hz(16.6msおき)程度なんだよ
ディスプレーの反応速度も早くて5msかかる、10ms単位で十分だが、好みはある
4.答えの表示がチェックだが
要するに終わった後、計算が合ってるかを確認するんだから
終了後に特定のキーを押したら答えを出すでいいだろ
ざっくり、大きく気になった点だけ、やり方は分からなければ聞け
マクロを実行してみた、君は自分で考えてるんで良いと思う
1.出力する問題は固定ではなく文字とか長い数字もいらない
桁数(上限・下限)を指定してランダムに数値を発生すること
フラッシュ暗算を考えると余分な機能はいらない
2.バックを全画面表示にすること
もちろん、画面の中央に表示する、画面の大きさから割合で文字の大きさを指定する
3.タイミングをmsで指定指定しているが
ディスプレーって最大解像度ではリフレッシュレート60hz(16.6msおき)程度なんだよ
ディスプレーの反応速度も早くて5msかかる、10ms単位で十分だが、好みはある
4.答えの表示がチェックだが
要するに終わった後、計算が合ってるかを確認するんだから
終了後に特定のキーを押したら答えを出すでいいだろ
ざっくり、大きく気になった点だけ、やり方は分からなければ聞け
886デフォルトの名無しさん
2019/02/06(水) 10:57:13.19ID:pkuTd0pW 全画面表示は数字表示部をユーザーフォーム(全画面)で表示文字をVBAで切り替えたほうが簡単だな
887デフォルトの名無しさん
2019/02/06(水) 11:03:53.28ID:inxqkSwn 上司気取りの人が上から目線でダメだしし出したけどこの人どんだけ偉いの?
まさか感謝でもしてもらえるとか妄想してんのかな
まさか感謝でもしてもらえるとか妄想してんのかな
888デフォルトの名無しさん
2019/02/06(水) 11:26:06.43ID:pkuTd0pW >>887
で、君にはどんなダメ出しが欲しいんだ?
で、君にはどんなダメ出しが欲しいんだ?
889デフォルトの名無しさん
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
答えやアドバイスをしないでマウントしてくるやつは結局何も出来ないやつと同じなので放置で。
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
893デフォルトの名無しさん
2019/02/06(水) 12:50:23.01ID:oteDmMe3894デフォルトの名無しさん
2019/02/06(水) 12:56:44.95ID:pkuTd0pW >>893
え、どんだけ
え、どんだけ
895デフォルトの名無しさん
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
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
897デフォルトの名無しさん
2019/02/06(水) 13:15:51.19ID:pkuTd0pW898デフォルトの名無しさん
2019/02/06(水) 13:22:01.82ID:eyuAOAwV >>897
ばっかだなぁ、881に対していってんだろw
つかお前マウントとることしかしないASDのザコという認識だから何も求めてない。レスいらない。
するならちゃんと自分で作ったものを提示してからだ。できたらあやまる。
ばっかだなぁ、881に対していってんだろw
つかお前マウントとることしかしないASDのザコという認識だから何も求めてない。レスいらない。
するならちゃんと自分で作ったものを提示してからだ。できたらあやまる。
899デフォルトの名無しさん
2019/02/06(水) 13:25:32.81ID:pkuTd0pW 例えば
「Do While Range("A1").End(xlDown).Row >= i 」
こんなの"A1"と変数jとiが同期できていないことでプログラムじゃないよ
「Do While Range("A1").End(xlDown).Row >= i 」
こんなの"A1"と変数jとiが同期できていないことでプログラムじゃないよ
900デフォルトの名無しさん
2019/02/06(水) 13:27:12.93ID:pkuTd0pW >>898
うふ〜面白いな
うふ〜面白いな
901デフォルトの名無しさん
2019/02/06(水) 13:30:48.46ID:pkuTd0pW902デフォルトの名無しさん
2019/02/06(水) 13:34:49.77ID:pkuTd0pW >>898
頭悪いのに大変だな
頭悪いのに大変だな
903デフォルトの名無しさん
2019/02/06(水) 13:37:03.76ID:eyuAOAwV >>899
いや、そうじゃなくってよ。
俺はプロじゃないから変なことしてるかもしれない。いやあるだろう。
そいでお前は凄いのかもしれないけど結局何も作ってないわけだろ?
それって何も出来ないのと同じなんだから偉そうにするなって言いたいの。
お前さ、俺の言っている意味解ってる?
いや、そうじゃなくってよ。
俺はプロじゃないから変なことしてるかもしれない。いやあるだろう。
そいでお前は凄いのかもしれないけど結局何も作ってないわけだろ?
それって何も出来ないのと同じなんだから偉そうにするなって言いたいの。
お前さ、俺の言っている意味解ってる?
904デフォルトの名無しさん
2019/02/06(水) 13:41:27.75ID:pkuTd0pW905デフォルトの名無しさん
2019/02/06(水) 13:43:57.13ID:eyuAOAwV906デフォルトの名無しさん
2019/02/06(水) 13:44:16.40ID:pkuTd0pW おれがこのスレで作っても意味ないからな質問スレだ答えるだけ
907デフォルトの名無しさん
2019/02/06(水) 13:53:46.56ID:eyuAOAwV ああ、そういうことか。
質問には答えるけど代りにお前が作ることはないって意味でいいのか?
それがお前のポリシーなら俺はお前に口はさまないよ。
偉そうにされて終わるだけみたいだからお前には質問もしたくないけどな。
質問してるやつはいろいろ試して困ってるんだろ?
俺は動くもの見せて、あとは自分で工夫するなりなんなりした方が良いと思ってる。
だって、具体的なほうが解りやすいじゃん。
それに対してお前がどうこう言うことはないだろ?俺はお前に何も聞いてないんだから。
質問には答えるけど代りにお前が作ることはないって意味でいいのか?
それがお前のポリシーなら俺はお前に口はさまないよ。
偉そうにされて終わるだけみたいだからお前には質問もしたくないけどな。
質問してるやつはいろいろ試して困ってるんだろ?
俺は動くもの見せて、あとは自分で工夫するなりなんなりした方が良いと思ってる。
だって、具体的なほうが解りやすいじゃん。
それに対してお前がどうこう言うことはないだろ?俺はお前に何も聞いてないんだから。
908デフォルトの名無しさん
2019/02/06(水) 13:57:29.30ID:pkuTd0pW909デフォルトの名無しさん
2019/02/06(水) 14:10:39.95ID:eyuAOAwV >>908
うーん、辞書がわりに次々聞かれても結局俺が作ってるかいー!
みたいになりそうで確かに嫌だな。
ただお前凄そうなんだからそんくらいしてやってもバチあたらんべ。
あ、そこらへんは俺が口はさむことじゃないな、すまん。でももったいないわーほんまに。
俺は基本は自分で調べるから聞くことってほとんどないけど
本当に困っててもまともな返答来なさそうでここで聞けないからさらに困ることあるもん。
お前に言ってるわけじゃないけどライトユーザーからしたら雰囲気怖いよここ。
うーん、辞書がわりに次々聞かれても結局俺が作ってるかいー!
みたいになりそうで確かに嫌だな。
ただお前凄そうなんだからそんくらいしてやってもバチあたらんべ。
あ、そこらへんは俺が口はさむことじゃないな、すまん。でももったいないわーほんまに。
俺は基本は自分で調べるから聞くことってほとんどないけど
本当に困っててもまともな返答来なさそうでここで聞けないからさらに困ることあるもん。
お前に言ってるわけじゃないけどライトユーザーからしたら雰囲気怖いよここ。
910デフォルトの名無しさん
2019/02/06(水) 14:12:54.78ID:pkuTd0pW911デフォルトの名無しさん
2019/02/06(水) 14:32:47.81ID:sQxfU38+ >おれがこのスレで作っても意味ない
は>>880も同様だな
は>>880も同様だな
912デフォルトの名無しさん
2019/02/06(水) 14:35:44.06ID:pkuTd0pW >>911
別にそれでいいが♡♡♡
別にそれでいいが♡♡♡
913デフォルトの名無しさん
2019/02/06(水) 14:38:23.25ID:sQxfU38+ 次の質問どうぞ
914デフォルトの名無しさん
2019/02/06(水) 14:45:26.84ID:Piy/PJ2X 頭が悪いのが丸わかりな次の質問どうぞ
915デフォルトの名無しさん
2019/02/06(水) 14:48:20.14ID:54X0jJM7 マウントしたがりのバカしか居ないスレですけど、それでもよかったら質問をどうぞ
916デフォルトの名無しさん
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種類の画面に対応)
・ユーザーインターフェースの強化
・デバッグを少々
最初に作ってほしいといっていた人の要望にかなってるかが心配
https://www.axfc.net/u/3958012
変更点
・ランダム表示
・乱数生成
・(ほぼ)フルスクリーンモード(1920x1080、1600x900、1280x720、800x600の4種類の画面に対応)
・ユーザーインターフェースの強化
・デバッグを少々
最初に作ってほしいといっていた人の要望にかなってるかが心配
918デフォルトの名無しさん
2019/02/06(水) 23:27:15.81ID:pkC1NeiE フルスクリーンならDirectXだろ、と思ったら、
Windows10だと色々面倒なのな。
Windows10だと色々面倒なのな。
919852
2019/02/06(水) 23:33:49.56ID:gXPhlUR0 いえ、知識がないだけです
920デフォルトの名無しさん
2019/02/07(木) 00:04:38.13ID:o0PdMVgb Excelの起動画面、ドラクエでエンカウントしたみたいな感じにできないかな。
緑画面に白文字でExcelって、ちょっと地味じゃない?
緑画面に白文字でExcelって、ちょっと地味じゃない?
921デフォルトの名無しさん
2019/02/07(木) 00:55:54.67ID:XTuXysWv ID:pkuTd0pWだけど
やっぱり午前中はましだが午後は酒がだいぶ効いて
すまんな
まあ文字結合のお題はExcelの問題をコピペしたものだろう
これ関数とExcelの機能を使って解いた方が面白い
やっぱり午前中はましだが午後は酒がだいぶ効いて
すまんな
まあ文字結合のお題はExcelの問題をコピペしたものだろう
これ関数とExcelの機能を使って解いた方が面白い
922デフォルトの名無しさん
2019/02/07(木) 01:10:49.40ID:XTuXysWv923デフォルトの名無しさん
2019/02/07(木) 01:15:55.77ID:XTuXysWv924デフォルトの名無しさん
2019/02/07(木) 06:41:43.06ID:C6bM/gU/ 質問です
同じブック、同じシート上にある
任意の二つのセル間を
セルで直線を引きたいと思っています
例えばA1セルとD4セルを指定したら
A1、B2、C3、D4のセルが黒く着色されるような
そんな感じです
どのようなロジックを組めば宜しいでしょうか?
同じブック、同じシート上にある
任意の二つのセル間を
セルで直線を引きたいと思っています
例えばA1セルとD4セルを指定したら
A1、B2、C3、D4のセルが黒く着色されるような
そんな感じです
どのようなロジックを組めば宜しいでしょうか?
925デフォルトの名無しさん
2019/02/07(木) 07:17:58.06ID:sLOxqlfO >>924
まず動作仕様を決める
1,指定の仕方をどうするか クリック Or 別セルで指定
2,複数回線を引くのか 取り消しは同じ指定で取り消すのか
3,クロスしたセルの色は
4,線の色はどの様に指定するのか
5,全てクリアーする処理は必要か?
まず動作仕様を決める
1,指定の仕方をどうするか クリック Or 別セルで指定
2,複数回線を引くのか 取り消しは同じ指定で取り消すのか
3,クロスしたセルの色は
4,線の色はどの様に指定するのか
5,全てクリアーする処理は必要か?
926デフォルトの名無しさん
2019/02/07(木) 07:27:46.12ID:sLOxqlfO >>924
セルの色の指定方法は、マクロの記録でセルの色を変えて、マクロの記録の終了で確認してください
セルの色の指定方法は、マクロの記録でセルの色を変えて、マクロの記録の終了で確認してください
927デフォルトの名無しさん
2019/02/07(木) 08:42:01.81ID:94HRw/Ac928デフォルトの名無しさん
2019/02/07(木) 08:46:47.16ID:C6bM/gU/929デフォルトの名無しさん
2019/02/07(木) 09:04:22.19ID:sLOxqlfO >>928
セルの位置情報から列の差が大きいか行の差が大きいかでループする側を決定します
ループする側は1増えるいく
その数に小さい側を大きい側で割って少数側を四捨五入したものが小さい側の増分でいいでしょう
セルの位置情報から列の差が大きいか行の差が大きいかでループする側を決定します
ループする側は1増えるいく
その数に小さい側を大きい側で割って少数側を四捨五入したものが小さい側の増分でいいでしょう
930デフォルトの名無しさん
2019/02/07(木) 09:09:14.04ID:sLOxqlfO 追記 ループ変数は0から差分まで
列ぎょうとも 初期値に増分を足していく
列ぎょうとも 初期値に増分を足していく
931デフォルトの名無しさん
2019/02/07(木) 09:45:06.58ID:aUTfkvT8 列幅、行幅ともにまちまちだと考えるとマジメに座表計算がいりそうだ
932デフォルトの名無しさん
2019/02/07(木) 10:25:13.14ID:nA5U51xW >>931
セル単位での指定だから、幅は関係ない
セル単位での指定だから、幅は関係ない
933デフォルトの名無しさん
2019/02/07(木) 10:30:41.24ID:nA5U51xW934デフォルトの名無しさん
2019/02/07(木) 11:11:43.55ID:nA5U51xW >>917
この感覚だと、遠いな
この感覚だと、遠いな
935デフォルトの名無しさん
2019/02/07(木) 11:16:37.25ID:nA5U51xW936デフォルトの名無しさん
2019/02/07(木) 11:38:14.89ID:aUTfkvT8937デフォルトの名無しさん
2019/02/07(木) 11:59:06.94ID:nA5U51xW938デフォルトの名無しさん
2019/02/07(木) 12:08:17.49ID:nA5U51xW まあ、意味あることならいくらでも方法がある(各行列のプロパティから幅なんて取れるからな)けど
お題が意味ないこと検討する必要もない
お題が意味ないこと検討する必要もない
939デフォルトの名無しさん
2019/02/07(木) 13:37:49.53ID:JiT+m3d9 数学的な問題でVBA関係ないんじゃね
940デフォルトの名無しさん
2019/02/07(木) 14:00:56.39ID:C6bM/gU/ 皆さんありがとうございます
セルで線を引く質問をした者です
セル幅がまちまちのケースは
こちらも想定外でした
均等幅で求められれば良いと
考えていましたから
既に回答して頂いた方法で
試してみたいと思います
どうもありがとうございました
セルで線を引く質問をした者です
セル幅がまちまちのケースは
こちらも想定外でした
均等幅で求められれば良いと
考えていましたから
既に回答して頂いた方法で
試してみたいと思います
どうもありがとうございました
941デフォルトの名無しさん
2019/02/07(木) 16:33:46.50ID:IUpQT5qY 質問です
文字列のカラムと数値のカラムが混在する表
数値カラムは空欄セルもある
この表からセル値をコピーするとき、数値カラムでセルが空欄の時はコピー先を0にしたい
文字列カラムでセルが空欄の時はコピー先も空欄
タイトル名で判定するのはスマートじゃないと思って
セルや変数の仕様を使って上手くできないでしょうか
文字列のカラムと数値のカラムが混在する表
数値カラムは空欄セルもある
この表からセル値をコピーするとき、数値カラムでセルが空欄の時はコピー先を0にしたい
文字列カラムでセルが空欄の時はコピー先も空欄
タイトル名で判定するのはスマートじゃないと思って
セルや変数の仕様を使って上手くできないでしょうか
942デフォルトの名無しさん
2019/02/07(木) 17:12:43.16ID:suQqSSWO セルの書式を1つずつチェックするのが確実
943デフォルトの名無しさん
2019/02/07(木) 17:18:57.62ID:nA5U51xW944デフォルトの名無しさん
2019/02/07(木) 22:22:10.23ID:kH7/pekJ 数値カラムの空欄はそのまま空欄で
文字カラムの空欄を長さ0の文字列にしておけばセル参照で
文字カラムの空欄を長さ0の文字列にしておけばセル参照で
945デフォルトの名無しさん
2019/02/07(木) 23:16:40.13ID:o0PdMVgb946デフォルトの名無しさん
2019/02/07(木) 23:30:09.71ID:nA5U51xW >>945
それを式で表記すると?
それを式で表記すると?
947デフォルトの名無しさん
2019/02/08(金) 00:39:13.26ID:nir6IlOg 質問です
C言語のFILEポインタをexternしているdllをvbaから呼び出すときにシグニチャーは何型ですか
C言語のFILEポインタをexternしているdllをvbaから呼び出すときにシグニチャーは何型ですか
948デフォルトの名無しさん
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で。
ごめん、勘違いしてた。
何とかできたけど、ものすごくダサい。
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で。
949デフォルトの名無しさん
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を書きたいです。
どうすればよいでしょうか?
ある住所リストを宛名印刷するための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を書きたいです。
どうすればよいでしょうか?
951デフォルトの名無しさん
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
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
952デフォルトの名無しさん
2019/02/08(金) 05:23:12.23ID:imEPOnT1 >>950
tmp = Split(Jusho, " ", 2)
tmp = Split(Jusho, " ", 2)
953デフォルトの名無しさん
2019/02/08(金) 06:20:13.15ID:Ec5y9MTZ >>950
Instrは検索文字が文字列の左から何文字目にあるかを返すよ
Instr(“東京都 渋谷区 ほげほげ町”, “ ”) は4が返ってくるのでそれでSplitする
ちなみに右から調べるInstrRevもある
Instrは検索文字が文字列の左から何文字目にあるかを返すよ
Instr(“東京都 渋谷区 ほげほげ町”, “ ”) は4が返ってくるのでそれでSplitする
ちなみに右から調べるInstrRevもある
954デフォルトの名無しさん
2019/02/08(金) 06:40:44.15ID:Ec5y9MTZ955デフォルトの名無しさん
2019/02/08(金) 07:17:52.94ID:SOh8GklL >>948
やってみた
結果、E列
あ い
か き く
さ た ち
た ち
答えは以下が正しいのとG列の式を
H列以降に無限に張らなければいけないのが問題ある
他にも問題があるかもしれないが・・・
あい
かきく
さ
たち
やってみた
結果、E列
あ い
か き く
さ た ち
た ち
答えは以下が正しいのとG列の式を
H列以降に無限に張らなければいけないのが問題ある
他にも問題があるかもしれないが・・・
あい
かきく
さ
たち
956デフォルトの名無しさん
2019/02/08(金) 07:21:27.36ID:SOh8GklL957デフォルトの名無しさん
2019/02/08(金) 07:26:35.12ID:ViZCNFeP フラッシュ演算のやりとり見てて思ったけど
文字にして答えを文字結合すればアルツハイマーテストに使えるんじゃね?
文字にして答えを文字結合すればアルツハイマーテストに使えるんじゃね?
958デフォルトの名無しさん
2019/02/08(金) 08:20:58.27ID:SOh8GklL959デフォルトの名無しさん
2019/02/08(金) 11:14:58.05ID:SOh8GklL960デフォルトの名無しさん
2019/02/08(金) 11:46:52.42ID:SOh8GklL961デフォルトの名無しさん
2019/02/08(金) 12:00:58.70ID:CDEogeBV >>950
limitオプションで回答は出てますが、実用的には長い住所の時は複数回改行も有り得るんではないでしょうか
またフォーマットが変わったときに全ての住所録の全角位置を調整するのが大変だと思われます
なので記入者には単純に単語毎にスペースを入れて貰って、適時自然な位置で改行するのはどうでしょうか
limitオプションで回答は出てますが、実用的には長い住所の時は複数回改行も有り得るんではないでしょうか
またフォーマットが変わったときに全ての住所録の全角位置を調整するのが大変だと思われます
なので記入者には単純に単語毎にスペースを入れて貰って、適時自然な位置で改行するのはどうでしょうか
962デフォルトの名無しさん
2019/02/08(金) 12:14:24.08ID:WyTY+E9f >>961
運用でカバーできたら誰も苦労しないよね
運用でカバーできたら誰も苦労しないよね
963デフォルトの名無しさん
2019/02/08(金) 12:19:37.60ID:jEYFKApV 自然な位置てなんやねん
964デフォルトの名無しさん
2019/02/08(金) 12:29:29.52ID:CDEogeBV 一行の文字数を決めて、そこからInStrRevで最後のスペース位置を検索してLF挿入です
コード書いたんですが何故かブロックされます・・・
コード書いたんですが何故かブロックされます・・・
965デフォルトの名無しさん
2019/02/08(金) 12:31:14.56ID:SOh8GklL >郵便番号に合致する部分を1行目、それ以外を2行目が良いだろ
2行目があふれても、それは枠内で表示するだけで問題ないだろ
どうせ印刷はWordのあて名書きだろ2行目の表示エリアを広くしておけば問題ない
2行目があふれても、それは枠内で表示するだけで問題ないだろ
どうせ印刷はWordのあて名書きだろ2行目の表示エリアを広くしておけば問題ない
966デフォルトの名無しさん
2019/02/08(金) 12:35:06.44ID:CDEogeBV 拙いですが折角書いたのでうpしました
https://ux.getuploader.com/dialogues_txt/download/129
>>965
エクセルだと思うし、表示エリアを広くで済むならそもそも改行不要なのでは・・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
https://ux.getuploader.com/dialogues_txt/download/129
>>965
エクセルだと思うし、表示エリアを広くで済むならそもそも改行不要なのでは・・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
967デフォルトの名無しさん
2019/02/08(金) 12:59:45.99ID:WyTY+E9f968デフォルトの名無しさん
2019/02/08(金) 13:11:41.88ID:SOh8GklL969デフォルトの名無しさん
2019/02/08(金) 13:14:37.20ID:SOh8GklL970デフォルトの名無しさん
2019/02/08(金) 13:19:24.26ID:WyTY+E9f >>968
くっさ
くっさ
971デフォルトの名無しさん
2019/02/08(金) 15:18:18.79ID:ZcpxXTEs >>961
うちのシステムだとテキストボックスが既に3つになってて一段目が市区町村まで、二段目が枝番まで、三段目が物件名と部屋番+様方、会社名とかって決まってる。
うちのシステムだとテキストボックスが既に3つになってて一段目が市区町村まで、二段目が枝番まで、三段目が物件名と部屋番+様方、会社名とかって決まってる。
972デフォルトの名無しさん
2019/02/08(金) 15:20:53.99ID:SOh8GklL まあ、なんだな住所を2行にしたいなんてあて名書きだけだろ
それって、Wordのあて名書き印刷ぐらい
で、きれいに住所を分けるのは郵便番号に載っている住所で区切るんだよ
それ以外は長いマンション名あるけど適当に範囲内で打てばいいんだよ
今時郵便番号を管理しない住所録もないだろ
まあ、引きこもりにはわからないかもしれないが
それって、Wordのあて名書き印刷ぐらい
で、きれいに住所を分けるのは郵便番号に載っている住所で区切るんだよ
それ以外は長いマンション名あるけど適当に範囲内で打てばいいんだよ
今時郵便番号を管理しない住所録もないだろ
まあ、引きこもりにはわからないかもしれないが
973デフォルトの名無しさん
2019/02/08(金) 15:21:19.17ID:ZcpxXTEs >>971
追記、登録する人にはこれで宛名出るからって言ってある。
追記、登録する人にはこれで宛名出るからって言ってある。
974デフォルトの名無しさん
2019/02/08(金) 15:21:58.27ID:RRS+yeTf 市区町村の名前のDB作ればいいんじゃね
975デフォルトの名無しさん
2019/02/08(金) 15:29:02.53ID:SOh8GklL976デフォルトの名無しさん
2019/02/08(金) 16:46:02.55ID:QatAiOm8 >>950
「1つ目のスペースで2つに分ける。2つ目以降のスペースは無視」という解決ではなく
「分割が発生したら住所を2つに再結合する」という解決だけど
Sub test()
Dim tmp As Variant
Dim i As Integer
Dim jusho0 As String
Dim jusho1 As String
Dim jusho2 As String
jusho0 = Sheets("住所").Range("A1").Value '参照するセルは自分で書いてください
tmp = Split(jusho0, " ") '文字を分割して
If UBound(tmp) > 0 Then '分割が発生していたら再結合する
jusho1 = tmp(0)
For i = 1 To UBound(tmp)
jusho2 = jusho2 & tmp(i)
Next i
Else
jusho1 = jusho0 '分割が発生していなかったらそのまま代入する
jusho2 = " "
End If
Sheets("印刷元").Range("A1") = jusho1
Sheets("印刷元").Range("A2") = jusho2
End Sub
これでいけるはず
「1つ目のスペースで2つに分ける。2つ目以降のスペースは無視」という解決ではなく
「分割が発生したら住所を2つに再結合する」という解決だけど
Sub test()
Dim tmp As Variant
Dim i As Integer
Dim jusho0 As String
Dim jusho1 As String
Dim jusho2 As String
jusho0 = Sheets("住所").Range("A1").Value '参照するセルは自分で書いてください
tmp = Split(jusho0, " ") '文字を分割して
If UBound(tmp) > 0 Then '分割が発生していたら再結合する
jusho1 = tmp(0)
For i = 1 To UBound(tmp)
jusho2 = jusho2 & tmp(i)
Next i
Else
jusho1 = jusho0 '分割が発生していなかったらそのまま代入する
jusho2 = " "
End If
Sheets("印刷元").Range("A1") = jusho1
Sheets("印刷元").Range("A2") = jusho2
End Sub
これでいけるはず
977デフォルトの名無しさん
2019/02/08(金) 18:27:58.69ID:CDEogeBV978デフォルトの名無しさん
2019/02/08(金) 19:06:53.88ID:imEPOnT1 >>976
もしSplit( )で分割数の制限ができなくて
> 「分割が発生したら住所を2つに再結合する」
としても
Sub test()
Dim tmp As Variant
Dim i As Integer
Dim jusho0 As String
Dim jusho1 As String
Dim jusho2 As String
jusho0 = Sheets("住所").Range("A1").Value '参照するセルは自分で書いてください
tmp = Split(jusho0, " ") '文字を分割して
jusho1 = tmp(0)
jusho2 = ""
For i = 1 To UBound(tmp)
jusho2 = jusho2 & tmp(i)
Next i
Sheets("印刷元").Range("A1") = jusho1
Sheets("印刷元").Range("A2") = jusho2
End Sub
でいいだろ
ちょっとトリッキーだけど
jusho1 = tmp(0)
tmp(0) = ""
jusho2 = Join(tmp, "")
ってやる手もあるな
もしSplit( )で分割数の制限ができなくて
> 「分割が発生したら住所を2つに再結合する」
としても
Sub test()
Dim tmp As Variant
Dim i As Integer
Dim jusho0 As String
Dim jusho1 As String
Dim jusho2 As String
jusho0 = Sheets("住所").Range("A1").Value '参照するセルは自分で書いてください
tmp = Split(jusho0, " ") '文字を分割して
jusho1 = tmp(0)
jusho2 = ""
For i = 1 To UBound(tmp)
jusho2 = jusho2 & tmp(i)
Next i
Sheets("印刷元").Range("A1") = jusho1
Sheets("印刷元").Range("A2") = jusho2
End Sub
でいいだろ
ちょっとトリッキーだけど
jusho1 = tmp(0)
tmp(0) = ""
jusho2 = Join(tmp, "")
ってやる手もあるな
979デフォルトの名無しさん
2019/02/08(金) 20:28:18.13ID:v6US6OW1 どこで質問していいのかわからないので、ここにお邪魔します
Jscript、 拡張子がjsのファイルですが、これでエクセルを操作するのですが、
複数のワークシートがあるxlsファイルを開いた状態で
var book = GetObject("C:\\file.xls");
var sheet = book.Worksheets( 1 );
sheet.cells( 2, 2 ).Select;
としたとき、1のワークシートを開いているときは問題ないのですが、他のワークシートを開いているときは
エラーになります。でも、
sheet.cells( 2,2 ) = 5
は問題なくできます
つまり、タブで対象となるワークシート以外の他のワークシートを選択しているとき、
代入はできるのに、選択ができないのです
選択をできる方法ってありますか
Jscript、 拡張子がjsのファイルですが、これでエクセルを操作するのですが、
複数のワークシートがあるxlsファイルを開いた状態で
var book = GetObject("C:\\file.xls");
var sheet = book.Worksheets( 1 );
sheet.cells( 2, 2 ).Select;
としたとき、1のワークシートを開いているときは問題ないのですが、他のワークシートを開いているときは
エラーになります。でも、
sheet.cells( 2,2 ) = 5
は問題なくできます
つまり、タブで対象となるワークシート以外の他のワークシートを選択しているとき、
代入はできるのに、選択ができないのです
選択をできる方法ってありますか
980デフォルトの名無しさん
2019/02/08(金) 21:07:58.30ID:sNzlIvCP >>979
セルをセレクトする前に、シートもセレクトすればいいよ
セルをセレクトする前に、シートもセレクトすればいいよ
981デフォルトの名無しさん
2019/02/08(金) 21:17:15.14ID:v6US6OW1 あ、出来た。シートのセレクトってできたんですね。ありがとうございました
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 高市早苗総理「金利上昇よりも日本の成長が大事」 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」 [冬月記者★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★2 [Hitzeschleier★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 【野球】止まらぬ野球人口減少に危機感 ラミレス氏「野球人口は激減、人気自体も下がっている」「もっと野球ができる環境を整えるべき」 [冬月記者★]
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★2 [Hitzeschleier★]
- 【高市速報】小泉進次郎「事前に中国軍から飛行訓練を開始すると連絡があったのは事実」★2 [931948549]
- 【高市速報】片山さつき、文春砲wwwwwwwwwwwwwwwwwwwwwwwwwwww [339035499]
- 独身おっさんの娯楽、食事と風呂しかない
- マイナンバーカード更新のために役所までいなきゃいけなくてワロタ [931948549]
- 【画像】韓国人「カリカリ女?あぁ、『ソンケ』のことね」 [977261419]
- 【悲報】たけガイ、「中卒」という言葉を覚えてしまう🏡
