2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Excel VBA 質問スレ Part58

1 :デフォルトの名無しさん:2018/11/19(月) 06:47:24.99 ID:Qq88xGOU.net
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/

954 :デフォルトの名無しさん:2019/02/08(金) 05:23:12.23 ID:imEPOnT1.net
>>952
tmp = Split(Jusho, " ", 2)

955 :デフォルトの名無しさん:2019/02/08(金) 06:20:13.15 ID:Ec5y9MTZ.net
>>952
Instrは検索文字が文字列の左から何文字目にあるかを返すよ
Instr(“東京都 渋谷区 ほげほげ町”, “ ”) は4が返ってくるのでそれでSplitする
ちなみに右から調べるInstrRevもある

956 :デフォルトの名無しさん:2019/02/08(金) 06:40:44.15 ID:Ec5y9MTZ.net
>>952
あと検索文字がない場合は0を返すから条件式で使うなら
Instr(Jusyo, “ ”) <> 0 Then にしといた方がいいかも
他の人が見たとき「?」になる

957 :デフォルトの名無しさん:2019/02/08(金) 07:17:52.94 ID:SOh8GklL.net
>>950
やってみた
結果、E列

あ い 
か き く 
さ た ち 
た ち 

答えは以下が正しいのとG列の式を
H列以降に無限に張らなければいけないのが問題ある
他にも問題があるかもしれないが・・・

あい
かきく

たち

958 :デフォルトの名無しさん:2019/02/08(金) 07:21:27.36 ID:SOh8GklL.net
>>925
ここで、ヒントを出してるのに
作業列は1列で十分

959 :デフォルトの名無しさん:2019/02/08(金) 07:26:35.12 ID:ViZCNFeP.net
フラッシュ演算のやりとり見てて思ったけど
文字にして答えを文字結合すればアルツハイマーテストに使えるんじゃね?

960 :デフォルトの名無しさん:2019/02/08(金) 08:20:58.27 ID:SOh8GklL.net
>>958
すまん
無理にピボットテーブルや式でやらず
フィルターで列Aが1を表示でいいな

961 :デフォルトの名無しさん:2019/02/08(金) 11:14:58.05 ID:SOh8GklL.net
>>952
住所印刷なら、郵便番号が有るだろう
郵便番号の住所変換ルーチンはある
住所は郵便番号と比較すべきで比較してエラーを出すべき
郵便番号に合致する部分を1行目、それ以外を2行目が良いだろ

962 :デフォルトの名無しさん:2019/02/08(金) 11:46:52.42 ID:SOh8GklL.net
>>959
色々使えるだろうね
文字の表示位置を変えてタッチパネルでやるとか
応用範囲は広いがちゃんと全画面表示や文字の大きさ位
自動でできないとな、今時4Kモニターも出てるし・・・

963 :デフォルトの名無しさん:2019/02/08(金) 12:00:58.70 ID:CDEogeBV.net
>>952
limitオプションで回答は出てますが、実用的には長い住所の時は複数回改行も有り得るんではないでしょうか
またフォーマットが変わったときに全ての住所録の全角位置を調整するのが大変だと思われます
なので記入者には単純に単語毎にスペースを入れて貰って、適時自然な位置で改行するのはどうでしょうか

964 :デフォルトの名無しさん:2019/02/08(金) 12:14:24.08 ID:WyTY+E9f.net
>>963
運用でカバーできたら誰も苦労しないよね

965 :デフォルトの名無しさん:2019/02/08(金) 12:19:37.60 ID:jEYFKApV.net
自然な位置てなんやねん

966 :デフォルトの名無しさん:2019/02/08(金) 12:29:29.52 ID:CDEogeBV.net
一行の文字数を決めて、そこからInStrRevで最後のスペース位置を検索してLF挿入です
コード書いたんですが何故かブロックされます・・・

967 :デフォルトの名無しさん:2019/02/08(金) 12:31:14.56 ID:SOh8GklL.net
>郵便番号に合致する部分を1行目、それ以外を2行目が良いだろ
2行目があふれても、それは枠内で表示するだけで問題ないだろ
どうせ印刷はWordのあて名書きだろ2行目の表示エリアを広くしておけば問題ない

968 :デフォルトの名無しさん:2019/02/08(金) 12:35:06.44 ID:CDEogeBV.net
拙いですが折角書いたのでうpしました
https://ux.getuploader.com/dialogues_txt/download/129

>>967
エクセルだと思うし、表示エリアを広くで済むならそもそも改行不要なのでは・・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


969 :デフォルトの名無しさん:2019/02/08(金) 12:59:45.99 ID:WyTY+E9f.net
>>967
普通は郵便番号と住所は別カラムだろ
というか質問者は郵便番号の話してないから

970 :デフォルトの名無しさん:2019/02/08(金) 13:11:41.88 ID:SOh8GklL.net
>>969
空想の世界で生きるのも人生
実態を考えるのも人生 好きにしてね
ちなみに、午後だからやばいかも

971 :デフォルトの名無しさん:2019/02/08(金) 13:14:37.20 ID:SOh8GklL.net
>>968
見栄えがあるよな、企業が出すなら
すまないが午後になったのでテストはしてない

972 :デフォルトの名無しさん:2019/02/08(金) 13:19:24.26 ID:WyTY+E9f.net
>>970
くっさ

973 :デフォルトの名無しさん:2019/02/08(金) 15:18:18.79 ID:ZcpxXTEs.net
>>963
うちのシステムだとテキストボックスが既に3つになってて一段目が市区町村まで、二段目が枝番まで、三段目が物件名と部屋番+様方、会社名とかって決まってる。

974 :デフォルトの名無しさん:2019/02/08(金) 15:20:53.99 ID:SOh8GklL.net
まあ、なんだな住所を2行にしたいなんてあて名書きだけだろ
それって、Wordのあて名書き印刷ぐらい
で、きれいに住所を分けるのは郵便番号に載っている住所で区切るんだよ
それ以外は長いマンション名あるけど適当に範囲内で打てばいいんだよ
今時郵便番号を管理しない住所録もないだろ
まあ、引きこもりにはわからないかもしれないが

975 :デフォルトの名無しさん:2019/02/08(金) 15:21:19.17 ID:ZcpxXTEs.net
>>973
追記、登録する人にはこれで宛名出るからって言ってある。

976 :デフォルトの名無しさん:2019/02/08(金) 15:21:58.27 ID:RRS+yeTf.net
市区町村の名前のDB作ればいいんじゃね

977 :デフォルトの名無しさん:2019/02/08(金) 15:29:02.53 ID:SOh8GklL.net
>>973
お前の所への質問じゃないな
あと、分けて入力するフォームも結構あるが
無視されることも多いだろ
気にしているところは、まず郵便番号を聞くな

978 :デフォルトの名無しさん:2019/02/08(金) 16:46:02.55 ID:QatAiOm8.net
>>952
「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

これでいけるはず

979 :デフォルトの名無しさん:2019/02/08(金) 18:27:58.69 ID:CDEogeBV.net
>>978
>>954でいいですし、デリミタが潰れたままになってますよ

980 :デフォルトの名無しさん:2019/02/08(金) 19:06:53.88 ID:imEPOnT1.net
>>978
もし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, "")
ってやる手もあるな

981 :デフォルトの名無しさん:2019/02/08(金) 20:28:18.13 ID:v6US6OW1.net
どこで質問していいのかわからないので、ここにお邪魔します
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
は問題なくできます

つまり、タブで対象となるワークシート以外の他のワークシートを選択しているとき、
代入はできるのに、選択ができないのです
選択をできる方法ってありますか

982 :デフォルトの名無しさん:2019/02/08(金) 21:07:58.30 ID:sNzlIvCP.net
>>981
セルをセレクトする前に、シートもセレクトすればいいよ

983 :デフォルトの名無しさん:2019/02/08(金) 21:17:15.14 ID:v6US6OW1.net
あ、出来た。シートのセレクトってできたんですね。ありがとうございました

984 :デフォルトの名無しさん:2019/02/09(土) 09:52:28.52 ID:45ZMFjRM.net
コード書く画面を
背景黒、文字色白にするには
どうしますか?

985 :デフォルトの名無しさん:2019/02/09(土) 10:11:07.65 ID:0f9Fhb3P.net
>>919
あとでみます。

986 :デフォルトの名無しさん:2019/02/09(土) 10:13:47.89 ID:7J3n1w5Y.net
>>984
オプション

987 :デフォルトの名無しさん:2019/02/09(土) 10:52:22.81 ID:4JLmAX8Q.net
依頼者ですがみました。ここまでやってくれるとは思わなかった、それぐらいの完成度の高いです。感謝です。

フラッシュ演算「のような」ツールがほしいニュアンスで言ったのですが、演算までやってくれるプラスアルファまでやってくれるとは思わなかったです。恐れ入りました。

988 :デフォルトの名無しさん:2019/02/09(土) 10:59:52.07 ID:76xhR9ul.net
>>883
まあ、Excelの関数や機能でやるのはスレ違だが
基本的にVBAでやるのは最終手段っと考えてるのであしからず

A1 B1から始めてるとして C1に入れる式は「=IF(A1>0,IF(A2>A1,B1&C2,B1),"")」
これをC列にコピーすれば、A列に1が入っているところに答えが入る

A列B列C列に、フィルターを設定して、A列の1のみを表示するだけ 

989 :デフォルトの名無しさん:2019/02/09(土) 11:07:15.59 ID:4JLmAX8Q.net
連投すみません。
さらに要望なのですが、
要望その一
現状、横並びでフラッシュ表示しますが、縦並びに切り替えることはできます?
可能であれば対応いただきたいです。できたら、円並び、ランダム配置といったバリエーションも検討いただきたく。

要望その二
「問題セット」シートにて、登録した文字列の順序をボタン一つでランダムに入れ換えることは可能でしょうか?
可能であれば対応いただきたいです。
もともと登録した文字列は同一シート内の別の列に退避させてください。

990 :デフォルトの名無しさん:2019/02/09(土) 11:10:02.53 ID:k8PbCSOR.net
>>989
直接メールでやれ
既にただの仕事依頼になっていてさすがに質問スレでやることじゃない

991 :デフォルトの名無しさん:2019/02/09(土) 11:17:52.46 ID:76xhR9ul.net
>>990
いいじゃないかたくるしく考えるなよ
回答者が嫌じゃなければそれでいいよ

992 :デフォルトの名無しさん:2019/02/09(土) 11:21:46.36 ID:4JLmAX8Q.net
要望その二はわかりづらいと思うので、具体的には「きりん」を登録します。
これをランダムで文字を入れ換えて「んきり」といったイメージです。
「んきり」をみてばらばらの文字を自分が知っている既知の情報「きりん」に変換し、きりんをイメージする。

個人的な、ツールの用途として、左脳で文章をよまず、文章をぱっと見で右脳でビジュアルに思い描く右脳活性化のための訓練として扱いたいのです。

これができるようになると、本を読むとき、文章で読むより右脳でイメージでとらえながら読むので、速読が可能そしてイメージでみるので記憶に残りやすくなります。

993 :デフォルトの名無しさん:2019/02/09(土) 11:32:56.47 ID:6oInKB58.net
こんちには みさなん おんげき ですか?
わしたは げんき です。

この ぶんょしう は いりぎす の ケブンッリジ だがいく の けゅきんう の けっか
にんんげ は もじ を にしんき する とき その さしいょ と さいご の もさじえ
あいてっれば じばんゅん は めくちちゃゃ でも ちんゃと よめる という けゅきんう に
もづいとて わざと もじの じんばゅん を いかれえて あまりす。
どでうす? ちんゃと よゃちめう でしょ?

ちんゃと よためら はのんう よしろく

994 :デフォルトの名無しさん:2019/02/09(土) 11:44:46.80 ID:76xhR9ul.net
---------上記はワッチョイ表示用(この行の後を1行目から )--------
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑の二行はワッチョイつけ忘れ防止用の予備です。 立てた時点で1行消耗します
スレを立てる方は本文の文頭に上記行を三行重ねて立てて下さい

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/
---------上記はワッチョイ表示用(この行の前)---------
私は新参者なのでスレたては控えさせていただきますが
ワッチョイを入れることも検討してください

995 :デフォルトの名無しさん:2019/02/09(土) 15:10:39.63 ID:3lTArmdf.net
建てま

996 :デフォルトの名無しさん:2019/02/09(土) 15:13:23.38 ID:3lTArmdf.net
>>995
した
https://mevius.5ch.net/test/read.cgi/tech/1549692750/

997 :デフォルトの名無しさん:2019/02/09(土) 16:27:54.49 ID:dlyNQvdo.net
スレ最後の質問。

あるファイルに、
on error goto err
******
exit sub
err:
msgbox err.description
end sub


こういうコードをたくさん書いてきました。
しかし、エラーが出たときに、どのプロシージャで発生したのか知りたくなり、
msgbox err.description & このプロシージャ名
に変更したくなりました。
「このプロシージャ名」を書く方法ってあるのでしょうか?

998 :デフォルトの名無しさん:2019/02/09(土) 18:30:41.53 ID:wulgFGFC.net
>>993
もうそのコピペあきた

999 :デフォルトの名無しさん:2019/02/09(土) 18:34:38.97 ID:gPze9fmT.net
乗りかかった船だし、自分自身も勉強になっているのでこの案件は、できるところまでやりたいと思います。

>>989
要望その1
縦並び = 今でも(一応)可能。セルの書式設定からB2の書式で「配置タブ」の「方向」で縦を選んでみてください。
        文字の大きさとかも合わせて調整したら画面に収まりきると思います。後はセルの大きさも調整してみて。
ランダム配置 = スレの上のほうで案が出てたけどオートシェイプとかワードアートでできるかもしれないしできないかもしれない。あんま期待しないで。
円並び = 自分にはできません。

総じて、要望その1はあまり自信なしです!!!

要望その2
おそらく可能。まずはこっちから手をつけます。

時間がかかると思うのでのんびり待ってください。

>>924
922さんが想定された使い方かどうかはわかりませんが、使い方が解った気がします。
ヒントありがとうございます。

1000 :デフォルトの名無しさん:2019/02/09(土) 18:56:58.62 ID:2u7e0Xtv.net
>>999
要望その二ができれば、要望その一のランダム配置は解決済みでよいです。
本は横書きと縦書きな二種類しかないので、円並びはあまり意味がないかなとおもうので対応は不要です。縦並びの実現はセルの書式設定で変えることができるので、実質要望その二だけになります。

余談ですが、Androidアプリでフラッシュカードというフリーのアプリを一週間前から使ってましたが、スマホでデータ登録は面倒、フラッシュ速度最大にしても0.5秒くらい望んでるものではないのでアンインストールしました。

1001 :デフォルトの名無しさん:2019/02/09(土) 21:15:13.37 ID:mrBfx6rS.net
999

1002 :デフォルトの名無しさん:2019/02/09(土) 21:15:45.94 ID:jdOhgT4v.net
いまからお前の名前は せん だ

1003 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1003
302 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★