Excel VBA 質問スレ Part67

レス数が950を超えています。1000を超えると書き込みができなくなります。
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/08/24(月) 19:07:40.74ID:k+YcXwpu0
Worksheet_Changeイベントを使えばいいです
2020/08/24(月) 19:26:54.83ID:w4ZB1tmF0
>>875
データの入力規則のエラーメッセージ
2020/08/24(月) 20:16:24.02ID:pfMfCN200
1を入力した時点でメッセージボックスが出ると思うんだが10まではセーフで100だと確認のほうが良いのか
2020/08/24(月) 20:27:42.41ID:N/ceNi6Ud
>>875だけどいい忘れてました
0を入力した場合はメッセージ出さずにそのまま0と入力
0以上(例えば200)を入力した場合は「●なんだから入力すんなボケ!どうしても"200"って入力したいの?」
「OK」「キャンセル」
みたいなね
2020/08/24(月) 20:34:28.35ID:ZbbapVPTd
OK押したらそのまま200がセルに入力される
キャンセル押したら""ね
881デフォルトの名無しさん (ワッチョイ 9f8e-NwtD)
垢版 |
2020/08/24(月) 20:35:32.06ID:C0VIZWNb0
馬鹿は条件を後で付け加える
2020/08/24(月) 20:36:54.05ID:ZbbapVPTd
>>881
誹謗中傷?
883デフォルトの名無しさん (ラクッペペ MM4f-NoNb)
垢版 |
2020/08/24(月) 20:42:38.20ID:hwq7Y5YHM
メッセージボックスはうっとおしいからセルの色を変えるぐらいのほうが喜ばれるよ
2020/08/24(月) 20:46:47.07ID:ZbbapVPTd
>>883
それでも入力する奴がいるんだもん
IF(B2:B10000=●,"入力すんな","")
これでも駄目
2020/08/24(月) 20:56:49.89ID:w4ZB1tmF0
数字以外を入力したら?
2020/08/24(月) 20:59:38.82ID:KH3D74B7d
>>885
数字以外入力しません
2020/08/24(月) 21:02:06.67ID:w4ZB1tmF0
自主的にしないのなら入力規則をユーザ設定にしてエラースタイルを注意でいいじゃんかと思うんだが
2020/08/24(月) 21:19:01.81ID:hykwk2E+d
>>887
そうか
やってみようかな
ちなみにVBAだとどう書くの?
2020/08/24(月) 21:58:37.53ID:w4ZB1tmF0
●があるあったらダイアログ表示するだけ
2020/08/24(月) 21:58:57.09ID:w4ZB1tmF0
●があったら
891デフォルトの名無しさん (ドコグロ MM7f-a78p)
垢版 |
2020/08/24(月) 22:34:30.60ID:6Nxhc9klM
個性的な物を作りたいのなら図形を使えば色も形も自由自在に作れる
2020/08/25(火) 07:27:56.68ID:Dix5Myuw0
Win10で、VBAを作っています。
テキストファイルをLine関数で1行ずつ読み込み
読んだ行にてInStr関数で円マーク(\)を検索
しています。
InStr(1, 検索対象, "\")
と書いています。
しかし\が無い行で「ある」と判定されているようです。
\にはエスケープ文字が必要だからではないかと思いますが
どう書いたら良いかわからず途方に暮れています。
どなたかご教示ください。
(文字コードで指定すれば良いようですが
他の担当者が理解できない可能性もあるので
別の方法も把握したく存じます)
2020/08/25(火) 09:38:34.28ID:UEyqjSRY0
無いのにあると判定される行の文字列を教えて下さい
2020/08/25(火) 09:40:05.96ID:j61R6fge0
instr特に問題なさそうですが。
ウォッチ式の想定外時検索対象文字列は晒せないのですか?
instr使わずに1文字ずつ取るとか?
2020/08/25(火) 10:33:08.00ID:JyPo3Qi40
>>892
されてるようですじゃなくてちゃんと確認して
2020/08/25(火) 10:41:04.86ID:8u+D4XfyM
>>893
海砂利水魚の水行末\n
2020/08/25(火) 11:01:09.56ID:UEyqjSRY0
>>896
次の人どうぞ
2020/08/25(火) 11:14:02.60ID:HdlOc3e6M
>>893
[壁]_・)_シン・シンギュラリティ¥n
899デフォルトの名無しさん (ラクッペペ MM4f-pqEW)
垢版 |
2020/08/25(火) 12:47:56.13ID:LoAGT2GVM
>>893
会社の住所です
一文字目が全角郵便マーク
2文字目が全角スペース
三文字目から半角数字で郵便番号です。
\と半角ハイフンの間を取り出す処理を
書いたところ
郵便番号最初の3桁、
ハイフンの手前まで
が取り出されますので
全角スペースが\マークとして
扱われてると思ってます
2020/08/25(火) 12:58:49.60ID:KRGfI1UYM
>>893
「\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
\と半角ハイフンの間を取り出す処理
を全角スペースが\マークとして扱われてると思ってます
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-」
2020/08/25(火) 13:03:59.81ID:at7FUvm30
>>899
そもそもVBAにエスケープ文字とかないから
お前のコードがバグってるか、テキストがちゃんと読めてないかどっちかだろ

とりあえずコードと読み込んだデータ晒せ
2020/08/25(火) 13:39:05.50ID:UEyqjSRY0
>>899
その説明だとコード晒してもらわないとわからん
住所そのまま晒してって言ってるんじゃなくて
別の文字に置き換えていいから同じフォーマットで
処理前後でどうなってほしい所がどうなってしまうのか書いてもらわないとわからない
2020/08/25(火) 13:53:58.00ID:JyPo3Qi40
>>900
なんで想像するだけで実際の中身を確認ようとしないの
2020/08/25(火) 13:54:35.07ID:JyPo3Qi40
>>903>>899
2020/08/25(火) 14:14:41.86ID:NinLgEivH
プログラムってのはなあ、思った通りには動かないもんなんだよ
いつでも書いた通りに動くだけ
2020/08/25(火) 14:23:43.06ID:QWQtRQIZ0
タブとか改行(CR+LF)とかバイナリデータが混ざっているとか機種依存文字とか
文字コードの違いとか色々あるからな
2020/08/25(火) 14:28:30.69ID:at7FUvm30
まあ一番怪しいのは、文字コード関係でテキストがちゃんと読めてない
ちゃんと読みこんだデータのバイナリ確認してみろ
2020/08/25(火) 14:43:48.86ID:JyPo3Qi40
line inputはSJISで読み込む
バイナリ確認しなくても元ファイルがSJISであればそれでいい
909デフォルトの名無しさん (ラクッペペ MM4f-pqEW)
垢版 |
2020/08/25(火) 15:50:41.61ID:LoAGT2GVM
すみません892です
デバッガで見たら
全部の行で1を返してました
つまり全行、先頭は\マークみたいです
1文字目は無視するようにしたら
意図通りの動きになりました
2020/08/25(火) 16:00:19.40ID:UEyqjSRY0
>>909
それ完全にその場しのぎでしかないから
他の担当者が後々困る絶対
2020/08/25(火) 16:23:37.10ID:JyPo3Qi40
先頭が\かどうかすらも確認しないのか…
912デフォルトの名無しさん (オッペケ Sr73-rg60)
垢版 |
2020/08/25(火) 17:36:53.32ID:Lm28KJF/r
VBAからPowerShellで外部コマンドを実行して出力内容を加工したいのですが、うまくいきません
現在は、Execの引数に下記のように書いてます
powershell -Command "& Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 "foo bar" >>'一時ファイル.txt'"

どうしたらよいでしょうか
2020/08/25(火) 18:00:08.63ID:YUvg5uyAa
>>909
1件目でも入っているのかな?
2020/08/25(火) 18:12:08.06ID:mPnhNdWta
テキスト全行読み込みしてsplitしてる説
んで\rでsplitして\nが先頭に来てるんじゃね
2020/08/25(火) 20:46:10.83ID:+ct4ya2Y0
>>912
Exec("powershell -Command Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 'foo bar' >> '一時ファイル.txt'")
916デフォルトの名無しさん (ラクッペペ MM4f-NoNb)
垢版 |
2020/08/25(火) 20:53:13.85ID:4vNIHvGrM
shell でいいのにわざわざ外部オブジェクト使う人っているよね
917デフォルトの名無しさん (アウアウウー Sa63-/2iM)
垢版 |
2020/08/25(火) 21:28:28.78ID:n9RIifSya
>>914
改行コードは別に文字列としての\が入ってる訳じゃないだろ
918デフォルトの名無しさん (オッペケ Sr73-rg60)
垢版 |
2020/08/25(火) 22:12:02.97ID:Lm28KJF/r
>>915
ありがとうございます
もう一点よろしいでしょうか
標準出力にUnicodeで吐き出すコンソールアプリの出力を、Wscript.Shell.ExecのStdOutを使用して読み込みたいのですが、文字化けします
個人情報を扱うのでできれば一時ファイルを作らずに作業したいのですが、Unicodeの標準出力を直接読み込む方法は無いでしょうか
2020/08/25(火) 22:59:12.42ID:8Q4E/UJjM
>>899
>>903なるほど特殊文字が16進数表記で¥マークってことか>>909
〒 〒 \03012 郵便マーク
920デフォルトの名無しさん (ワッチョイ 118e-WkEz)
垢版 |
2020/08/26(水) 01:37:45.74ID:zCSTsYdn0
>>918
スレチだろ、厚かましい
2020/08/26(水) 02:00:19.04ID:BpaQECb00
>>918
オプションなどで、文字コードを指定できないの?
922デフォルトの名無しさん (ワッチョイ 7901-yRqa)
垢版 |
2020/08/26(水) 02:56:47.46ID:oEB3gdtA0
これから新規に作る形式の文字コードは、UTF-8とGB18030の二択じゃないでしょうかね。
923デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/26(水) 11:13:08.29ID:DBm/bRJ+r
>>921
調べたところわかりませんでした
Unicodeの文字が欠落するのでSJISに変換して流すのも避けたいです
一晩考えてPowerShell側でBase64エンコードしてからVBA側でデコードしてみようと考え直しました
失礼しました
924デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/26(水) 11:25:02.41ID:DBm/bRJ+r
ちなみに、Wscript.Shell.Execに渡せるコマンドラインって255文字までのような制限があるのでしょうか
コンソール側で動いたコマンドラインがExecからだと動かなかったりするので
2020/08/26(水) 19:01:16.17ID:vVfdbk8D0
>>924
状況がわからないので超エスパー回答すると、
32bitじゃないと動かないものを64bitで実行しようとしている。
2020/08/26(水) 19:03:04.71ID:vVfdbk8D0
powershellか。
ごめん、関係ないわ。
927デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/26(水) 19:09:15.11ID:DBm/bRJ+r
>>926
ありがとうございます。
PowerShell上で動作を確認したワンライナースクリプトをExecで実行したら動かなかったもので、特に根拠があって疑ってる訳じゃないです。
こちらはPS1ファイルを用意して実行することにしました。
928デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/26(水) 19:15:01.39ID:DBm/bRJ+r
ところで、ADODB.Streamに書き込んだテキストをCSVとしてパースしてRecordSetに読み込む方法をどなたかご存知ないでしょうか
一時ファイルを保存すればいいのですがオンメモリでやれたらそちらの方がありがたいです
同じADODBクラスなので方法がありそうだなと思い調べてみたのですが…
929デフォルトの名無しさん (ワッチョイ 118e-WkEz)
垢版 |
2020/08/26(水) 20:35:45.89ID:zCSTsYdn0
>>928
厚かましいスレチはいい加減にしろ
2020/08/26(水) 20:40:23.56ID:SKzt3LIS0
ノイズが発生してるけど無視していいよ
知ってて答えたい人が答えると思うし
2020/08/26(水) 22:47:53.03ID:vVfdbk8D0
>>928
ちょっと意味が分からない。
そこまで知っていて出来ないというのは、どこで躓いているのか。
2020/08/26(水) 22:50:24.69ID:Xm7NIhRp0
できないわけじゃない
1文字づつ解析とか馬鹿らしくてやってられないから一発でできる方法を聞いておる
2020/08/26(水) 22:52:29.85ID:FaIObZsK0
一年他部署に応援行ってて戻ってきたが
その間に転属されてた人に

これがあれば一覧のデータを一気に出力できるからマクロの使い方だけは覚えてね
マクロとかわかる?とにかく使い方おぼえて
と言われた
俺が応援行く前に作って課に展開したマクロやんけ…
2020/08/27(木) 10:45:53.98ID:M3gK7ks0M
strconvで文字列"試験"をUnicodeに変換すると、変な文字に変換されるんだけど解決策ありますか?

StrConv(StrConv("試験",vbUnicode),vbFromUnicode)
の結果が、"試験"であってほしいんだけど、別のよくわからない文字に変換される
935デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/27(木) 10:56:45.12ID:EdbkG5X3r
>>931
情報小出しですみません。

UTF8で標準出力に個人情報含むCSVを吐き出すコンソールアプリがありまして、それを一時ファイルを使用せずにVBAに読み込むのが目的です。

Wscript.Exec.StdOutを使用したところUTF8が文字化けしてしまい、PowerShell上でByte配列化→Base64エンコードして吐き出すことで、VBAでCSVのStringを得るところまではできました。
2020/08/27(木) 10:58:22.12ID:W5jLLhyA0
>>934
shiftjisで表示してんじゃないの
937デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/27(木) 11:04:53.94ID:EdbkG5X3r
VBAでBase64デコードしたByte配列をADODB.Streamにバイナリ書き込み・UTF8読み込みすることでString変数に収めるところまでは行けました。
ここから、ADODB.Connectionを使用してADODB.Streamの内容をCSVとしてパースしたいのですが、ネットで見られるサンプルコードはファイルを読み込むものばかりです。
試しにADODB.Connection.Open ADODB.Streamとしてみましたが、うまく行きません。
現在ADODBのリファレンスに目を通していて、関係の有りそうなプロパティを見て回っているのですが、方法をご存知の方いらっしゃればご教示いただけるとありがたいです。
2020/08/27(木) 11:29:45.37ID:h0aAGvNz0
>>934
試験のバイナリと
よくわからない文字のバイナリ比較してみたら
2020/08/27(木) 11:35:18.54ID:UMnMnU6h0
WSH は、CP932 だけじゃないの?
もうWSHは、Microsoft もサポートしていないのでは?

WSH, VBScript のスレのスレ主、ピッコロ大魔王に聞けば?

漏れは、Ruby スクリプトをダブルクリックで起動したい場合に、WSHを使っているけど、
その際、Ruby側で、CP932・UTF-8 を変換している。
または、NKF というモジュールもある
2020/08/27(木) 11:58:06.46ID:tH7sxKPhM
>>934
そりゃそうだろ…
Unicode文字列をShift-JISだと思ってUnicodeに変換して、それを更にUnicodeだと思ってShift-JISに変換して何をしたいんだ?
やりたいのは
StrConv(StrConv("試験", vbFromUnicode), vbUnicode)
かな?
2020/08/27(木) 12:21:37.52ID:M3gK7ks0M
AddDllDirectory関数の引数にパスを渡したい
この関数の引数はUnicode文字列をである必要があるから、StrConvでUnicode変換してから渡す
変換がうまく行く文字だけのパスなら、AddDllDirectory関数は成功するが、変換がうまくいかない文字が含まれるパスだと失敗する
2020/08/27(木) 12:24:57.51ID:W5jLLhyA0
>>941
vbUnicodeのstrconvだけじゃいかんの
2020/08/27(木) 12:31:49.04ID:M3gK7ks0M
>>942
それが失敗するから、vbFromUnicodeでもう戻したら案の定変になってた
2020/08/27(木) 12:49:42.68ID:h0aAGvNz0
変換がうまくいく文字列
変換がうまくいかない文字列
それぞれ教えてよ

似たような流れ多い?
2020/08/27(木) 13:18:08.14ID:XBcyB/ra0
なぜうまくいかないというコードを出さないのか

とりあえずEXCEL関係ないしVBA何でもスレ行けや
2020/08/27(木) 13:21:23.95ID:M3gK7ks0M
・成功
 日本、解析、実
 あ~む、ア~ミ、濁音、半濁音

・失敗
 試験、行、め~ん、ム~ン、ゃゅょ、ャュョ
2020/08/27(木) 13:28:24.20ID:W5jLLhyA0
strconvが失敗するって時点で、何かの勘違いがあるとしか思えない
2020/08/27(木) 14:18:18.49ID:h0aAGvNz0
あぁ空目してた>>940でいいやん
引数が間違ってる
てか試そうよ
2020/08/27(木) 17:02:04.95ID:DiWyHVVAM
AddDllDirectory(StrConv(パス,vbUnicode))ってコールしたときに
パスに特定文字が含まれると失敗、含まれないと成功

文字の例は>>946のとおり
明らかにStrConvの文字コード変換がおかしいと思うんだけど

ちなみに第2引数をvbFromUnicodeにすると、どんな文字列でもAddDllDirectoryは失敗する
StrConvを噛ませずに、パスを渡した場合も必ず失敗する
2020/08/27(木) 18:30:06.72ID:XBcyB/ra0
AddDllDirectoryの引数をポインタでとって文字列のポインタ渡せば動く気がする
2020/08/27(木) 19:32:16.28ID:nk+dwtaU0
>>935
やっぱわからん。
「UTF8で標準出力に個人情報含むCSV」って、既にその時点でCSVなんじゃないの?
CSVなのにカンマ区切りじゃなくてCSVとして扱えないとか?(何じゃそりゃ)
UTF8が問題ならschema.ini作って回避できない?
schema.ini使う時点で一時ファイルだわって言われたらそれまでだけど。
2020/08/27(木) 21:54:27.65ID:M2V0MDYQM
>>949
とりあえずAddDllDirectoryのDeclare定義と呼び出してる部分のコード晒してよ
Unicode文字列の渡し方って1つじゃないから定義がわからないとなんとも言えん
953デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/28(金) 03:17:22.48ID:0Wmy1rK2r
>>951
CSVファイルではなく、CSVの文字列になります
これをファイルに保存することなくパースしたかったのですが、方法が見つかりませんでした。
セル内カンマやセル内改行も含むCSVでしたので、自分でパースするのもちょっと大変でした。
MITライセンスのコードを見つけたのでそれを組み込んで処理しようと思います。
ありがとうございました。
2020/08/28(金) 09:32:14.87ID:WbcjPKym0
>>949
明らかにおかしいのはStrConv以外だから
元々使い方間違ってただけで変換に問題はない
最少構成でやってみたらわかるはず
2020/08/28(金) 10:58:16.31ID:CzRmvnjE0
Ruby なら標準で、CSV モジュールが付いている。
他にも、JSON, YAML などもパースできる

プログラミングするなら、ちゃんとしたプログラミング言語を使わないと、ダメ!
汎用的な機能を、自作して使うと、バグってばかりで仕事にならない
2020/08/28(金) 12:55:46.61ID:dgSTJFNK0
そもそもここ最強のcsvパーサEXCELのVBAすれなんだが
2020/08/28(金) 13:14:57.90ID:RBhGMmXKM
確かにExcelは世界一利用者の多いCSVパーサかも
958デフォルトの名無しさん (ワッチョイ 6e63-VQ5f)
垢版 |
2020/08/28(金) 23:36:31.47ID:KRJ+x4lY0
エクセル2010を使ってます。
ファイル名の先頭に前月の年と月を付けたいと思い
下のような式を書きました。
本日動かすと「202007」と付きます。
しかし先頭の20を削除し2007としたいです。
式をどのようになおしたら良いか自力ではわかりません。
お恥ずかしいですがご教示いただきたく。
newfilename = Format(Year(DateSerial(Year(Date), Month(Date) - 1, Day(Date))), "00") _
& Format(Month(DateSerial(Year(Date), Month(Date) - 1, Day(Date))), "00") _
& currentfilename
2020/08/28(金) 23:42:18.02ID:6tfEVBvr0
>>958
ヘルプでformatの書式見た?
2020/08/28(金) 23:47:50.15ID:X3zZxqmk0
newfilename = Format(DateSerial(Year(Now), Month(Now) - 1, 1), "yymm")
2020/08/29(土) 00:17:46.05ID:58gyTBSb0
来年でIEなくなるんか?
IE制御で作ったVBAファイルはどうなってしまうん

https://news.livedoor.com/article/detail/18778408/
962デフォルトの名無しさん (ワッチョイ 6e63-VQ5f)
垢版 |
2020/08/29(土) 00:20:59.98ID:M2c3GV/+0
>>959
ヘルプといいますが色々なサイトを見ましたが私の頭では理解できず・・
やむを得ずお伺いしました
>>960
この式で出来ました!本当にありがとうございます!
2020/08/29(土) 00:54:05.51ID:OUCG9mQHM
00014500-1
のような、数字以外が入ってる文字列から
前ゼロを取りたいです。
どうすれば良いでしょうか
ゼロは先頭以外にもあるので
replaceで削除するのは無理です。
964デフォルトの名無しさん (ワッチョイ 118e-WkEz)
垢版 |
2020/08/29(土) 01:26:16.94ID:uG4P+RAn0
>>963
自分の意思で呼吸を30分止めてご覧
それができなければVBAを使う資格なし
2020/08/29(土) 01:42:59.60ID:haGEh7ED0
>>963
020-040 は 20-40 にすればいいの?
966デフォルトの名無しさん (ラクッペペ MM66-i8JQ)
垢版 |
2020/08/29(土) 04:49:38.60ID:OUCG9mQHM
>>965
はぃ、それで良いです
言葉足らずですみません
2020/08/29(土) 05:11:12.22ID:nRBZReLEM
>>966
Sub Macro1()
  Dim s1 As String
  Dim s2 As String
  Dim s3 As String
  Dim c As String
  Dim i As Integer
  s1 = "001100-004400-007700" '入力
  s2 = ""
  s3 = ""
  For i = 1 To Len(s1)
    c = Mid(s1, i, 1)
    If "0" <= c And c <= "9" Then
      s2 = s2 & c
    Else
      If s2 <> "" Then
        s3 = s3 & s2 * 1 & c
        s2 = ""
      Else
        s3 = s3 & c
      End If
    End If
  Next
  If s2 <> "" Then
    s3 = s3 & s2 * 1
  End If
  Debug.Print s3 '出力
End Sub
2020/08/29(土) 05:37:03.41ID:IjPanbf80
入力データにピリオドが入ることはないのか?
2020/08/29(土) 05:42:52.81ID:IjPanbf80
あ、平気か
2020/08/29(土) 06:40:50.33ID:VAMGDei30
そんな難しいことしなくてもこれでよくないか

Sub test()

Dim testStr As String
Dim rtnStr As String
Dim cnvNm As Long

testStr = "000070-00100-01230"

For i = 1 To Len(testStr) + 1

s = Mid(testStr, i, 1)

'数値か判定
If (IsNumeric(s)) Then
strNum = strNum + s
Else
'数値に変換
cnvNm = Val(strNum)
rtnStr = rtnStr + Trim(str(cnvNm)) + s
strNum = ""
End If
Next
End Sub
2020/08/29(土) 06:44:47.53ID:VAMGDei30
区切り文字が-だけならsplitして終わる気もするけど
何が入ってるかわからんなら1文字ずつみるしかないのかな
972デフォルトの名無しさん (ラクッペペ MM66-i8JQ)
垢版 |
2020/08/29(土) 07:17:10.36ID:OUCG9mQHM
区切りはハイフンだけです
すみません
分けて各々数字扱いすれば良かったですね
書いてみます
973デフォルトの名無しさん (ワッチョイ 6101-u5JS)
垢版 |
2020/08/29(土) 08:56:00.81ID:VAMGDei30
デリミタが"-"だけならもっと簡単になるね

Sub test2()

Dim strArray() As String
Dim rtnStr As String

testStr = "000070-00100-01230"

strArray = Split(testStr, "-", , vbTextCompare)

For i = 0 To UBound(strArray)

rtnStr = rtnStr + Trim(str(Val(strArray(i))))

If(i <> UBound(strArray)) Then rtnStr = rtnStr + "-"
Next

End Sub

文字列で連結して返す必要なければsplitして数値変換でおわり
2020/08/29(土) 09:09:11.49ID:dZuEnb/K0
しかし今の子はこの程度も分からないほど論理的思考がないのか、
それともこのスレの住民を試そうとしているのか
2020/08/29(土) 09:45:04.26ID:SoqUgBeq0
使う関数提示するくらいで解決できなきゃ放置でいいんじゃね?
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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