[過去ログ] VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (993レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
964(1): 2020/09/10(木)01:35 ID:fOUD4fUU(1) AAS
vba捨ててまともなところに新しくシステム作ってもらった方が安いし早そう
965: 2020/09/10(木)01:38 ID:JZj4+m/A(1) AAS
それだと社内で仕事が無くなるおっさんたちが文句言い出す
966(1): 2020/09/10(木)12:15 ID:dws80o57(1) AAS
住宅で喩えるなら 地場でイチから設計・施工をする在来工法のパワービルダーや
社内で設計した通り加工し現地で組み立てるだけのハウスメーカー 又は方式は
一緒だけどコスト削減に特化して現地の安い下請け使って費用を抑えるローコスト系
システムを売りにしてる企業は上で言うHMに近く、依頼すればひと声一千万は相場
PBはどんどん規模が縮小してるから探すのも大変 LCHMなら見付かるかも知らんが
要求に応じかねるレベルだと思われる
当時の社内の人間が内製したレベルならその条件、例えばExcelVBAと絞って
改修・修繕の可不可(得意かどうか)を先ず相手に問えば話が早いかも知れない
業務内容を伝えるだけだとうまく伝わらずに高額商品を売る方向に話が進み兼ねない
967(1): 958 2020/09/10(木)12:19 ID:Oh+8RCfx(1/3) AAS
>>962
はえ〜・・・なるほどなぁ
変数名は一応業界の人なら意味が分かる程度
インデントはルールから逸脱してるのはほぼない、とおもう
コメントはあることはあるけど助けられたコメントはほぼないな
'ここで●×処理をする Sub ●×処理(・・・・・・・) みたいなw
行数はただの改行も含めると3万行くらいで
モジュールが4、functionが500、subが1500くらい
この辺が大量にあるから難しいって説明しようとしてたんだけど
数行(ステップ?)なら別にF8ポチポチしながら追えるんだよね
じゃあ足りないのは根気だろ、みたいに言われて循環複雑なんちゃらみたいなの調べてたけど
結局こんな数字だしても理解されないだろうしなぁってのと、単に俺が素人だからってのもあって今に至る
>>964
マジそれなんだけど、何をしてるのか誰もわかんないから何を作ってもらえば良いのかも説明出来ないっていうねw
世間で言われてる炎上案件よりよっぽどかわいいレベルなのかも知れないけど
マジであと数ヶ月放置して会社潰れればいいんじゃねーかとも思ってる
968: 958 2020/09/10(木)12:20 ID:Oh+8RCfx(2/3) AAS
>>966
おっと、同じ人かもしれんけどありがとなあ
969: 2020/09/10(木)12:36 ID:l+lun8zf(1) AAS
>>961
わかんねーから高めに見積もってんだよ
970(1): 2020/09/10(木)13:19 ID:4mlwjCSe(1) AAS
>>967
他人の作ったプロシージャを2千個3万行解析してドキュメントを作成しながらデバッグなら1千万はまあまあ妥当かと
設備投資でたった1千万が出せない会社は遠からず潰れると思うよ
ほかの資産や設備だって千万単位の修理はいつ発生してもおかしくないし
971: 2020/09/10(木)22:45 ID:Oh+8RCfx(3/3) AAS
>>970
詳しい人にそう言ってもらえるとたすかる
とりあえず素人がやるもんじゃ無いって話は集めたので素直に金だせやって資料作ってるw
しかし1千万つめばできちゃうってのもすげーなあ
個人にとっては大金だけど、会社にとっては中堅社員一人分/年くらいの費用だもんな
972(2): 2020/09/11(金)11:34 ID:LThuGd0x(1) AAS
解析・デバッグ・ドキュメント作成でひと声一千万?
じゃ、せっかく解析できたんだしそれをベースに新システム製作費は?
パッケージから大きく外れるものだったらオリジナル新規作成?千万? 都合?千万?
せっかく途中まで分析し始めたようだし「わたしに二千万ください、これやります」でいーじゃん
973: 2020/09/11(金)19:07 ID:0mQCTSsr(1) AAS
>>972
日本語で
974: 2020/09/13(日)14:01 ID:AJy8UwEC(1) AAS
>>972
やり方教えてくれww
まあ1千万超えは最低限な感じだね
今起きてる障害を直すだけだけどね
975: 2020/09/13(日)18:15 ID:/EQXGeQJ(1) AAS
業務止まってるのにのん気だな
せめて地方と業務とアプリぐらい概略書けば誰かがどこかを紹介するかも知れんぞ
アプリはAccessと踏んだが、どう?
どうせこのご時世、近場でなくともZoomやらでリモートしたりでのサポートだろうし
976: 2020/09/16(水)23:50 ID:249cxrEP(1) AAS
結局余所に投げる方向で解決した
乗り越えられるものとそうじゃないものを見極めるのも大切と思い込むことにした
なお費用は想定の2倍近くになる模様w
みんなアドバイスありがとう
977: 2020/12/20(日)00:10 ID:14Mj/Q6q(1) AAS
>>963
> ループの中にgotoが入ってるやつ見たときはちょっと感動した
Continue 文が無いメジャーな言語があってな。
GoTo Continue1
とか、書くときの隔靴掻痒感と言ったらもう・・・。
978(1): 2020/12/25(金)06:38 ID:wEXLIZpl(1) AAS
もしかしてフィルタで非表示になってるセルってVBAで値参照できない?
979: 2020/12/26(土)04:11 ID:NJB8+QKa(1) AAS
>>978
自己解決
980: 2021/05/14(金)13:33 ID:Kf/7Ycdt(1/3) AAS
WordのVBAで質問させてください。
文書内の2種類の括弧「」『』の中にある改行だけを削除するマクロを作りたいと思っています。
例えば以下のような文章に対してマクロをかけたときに
「み
か
ん」
ば
な
な
「り
ん
ご
」
以下のような結果になるマクロです。
「みかん」
ば
な
な
「りんご」
つづきます
981: 2021/05/14(金)13:34 ID:Kf/7Ycdt(2/3) AAS
Sub 括弧内の改行を削除()
Dim myRange As Range
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "[「『""]*^13*[""』」]"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
Do While .Execute = True
With myRange.Find
.Text = "^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
DoEvents
End With
Loop
End With
Set myRange = Nothing
End Sub
982(1): 2021/05/14(金)13:35 ID:Kf/7Ycdt(3/3) AAS
自分なりに以上のようなマクロを組んでみたのですが、実行してみると、
最初の「みかん」の改行は削除されるのですが、そのあとの「りんご」の改行が削除されません
やり方をお教えいただけると助かります。
983: 2021/05/14(金)13:58 ID:dwsPOlKo(1) AAS
馬鹿には無理
984: 2021/05/14(金)20:08 ID:YZr2qR8x(1) AAS
正規表現使えば一発じゃん。
VBAって正規表現使えるんだっけ?
985: 2021/05/14(金)20:22 ID:pWuJPMFY(1) AAS
RegExpオブジェクトを使えば。
面倒だから俺はどうしてもというとき以外は使わない。
986: 2021/05/14(金)20:24 ID:6X3W89ka(1) AAS
Wordなら最初から正規表現もどきが使えるから、Excel VBAよりはちょっとだけ楽に文字列操作ができる
987: 2021/05/15(土)04:20 ID:rI+eK0KL(1) AAS
>>982
正規表現でマルチラインを設定して改行を空文字に置換
RegExpオブジェクトの使い方は、他の言語より面倒な書き方だったりするけど文字を操作するなら必須だと思うよ
988: 2021/06/10(木)19:25 ID:CLREf/YK(1) AAS
splitでいい感じに分割して判定してreplaceで改行無くしてくっ付けろ
「」は自分でつけたせ
989(1): 2021/08/25(水)17:06 ID:qYcBJ8fd(1/5) AAS
あんま実験してないから文句いうなよ
まずはさ、アホでも考えられるような地道な形でやるべきだと思うわ
そのあとに、効率性とか考えて無駄排除したりすればいいわ
Sub MainProcess()
Dim text As String
text = Sheet1.Cells(1, 1) 'A1に括弧が含まれる文字列をいれろ
Const right1 As String = "「"
Const left1 As String = "」"
Const right2 As String = "『"
Const left2 As String = "』"
text = MakeText(text, right1, left1)
text = MakeText(text, right2, left2)
'B1に結果が返ってくるぞ。途中結果はメッセージボックスで順次表示されるからループ終わるまで何度もOKおせ
Sheet1.Cells(1, 2) = text
End Sub
990(1): 2021/08/25(水)17:06 ID:qYcBJ8fd(2/5) AAS
>>989の続き
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)
InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Loop
MakeText = text
End Function
991: 2021/08/25(水)17:07 ID:qYcBJ8fd(3/5) AAS
つかさ、rightとleftが逆だったわ
まぁ動くからいいわ
992: 2021/08/25(水)17:18 ID:qYcBJ8fd(4/5) AAS
あれだ、最期の方に「だけが単独であると無限ループだわな
ループの条件にその辺の修正いれておいてくれ
もう寝る
993: 2021/08/25(水)17:34 ID:qYcBJ8fd(5/5) AAS
おっきした
>>990を↓に修正
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)
InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Dim textForCheck As String
If textForCheck = text Then
MakeText = text
Exit Function
End If
textForCheck = text
Loop
MakeText = text
End Function
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.326s*