Excel VBA 質問スレ Part76

■ このスレッドは過去ログ倉庫に格納されています
2022/05/01(日) 02:23:41.78ID:2t63WK/jM
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
389デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/06(月) 05:44:12.69ID:RB7fKeqq0
>>388
このハゲ!
2022/06/06(月) 10:06:09.33ID:JILrjNOSM
>>387
無理、素直に.net使え
2022/06/06(月) 13:21:31.23ID:4DEc3eXi0
>>383
> お互い譲り合えば良いじゃん。

「ネコと和解せよ」
https://youtu.be/52fdqGMawwc

(逆再生という指摘もあるが・・・)
2022/06/07(火) 22:41:43.65ID:mgVGi2C30
'Word,Excel,Powerpointどれでも動くようにする
Select Case True
Case Application.Caption = "Word"
Set myDocument = ActiveDocument
Case InStr(Application.Caption, "Excel") > 0
Set myDocument = ActiveSheet
Case Else
Set myDocument = ActivePresentation.Slides(1)
End Select
'あとはmyDocument.なんとかで操作すればどれでも動く。
393デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/08(水) 00:49:01.93ID:cIjXs1I0d
>>392
馬鹿の日記はお断り
394デフォルトの名無しさん (ブーイモ MM2e-M86+)
垢版 |
2022/06/08(水) 00:54:12.05ID:jfy5wCdsM
ハゲの日記なら大丈夫?
395デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/08(水) 00:55:55.27ID:cIjXs1I0d
今日は毛が341本抜けました

とか読みたい?
396デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/08(水) 01:01:21.01ID:cIjXs1I0d
唐突ですが、30歳を過ぎて頭皮を去っていく髪の毛が増えてきました。

今までは粘着力の強いコロコロで定期的に取っていましたが、これが厄介で、頭からからは簡単に抜けるくせにカーペットからはなかなか離れようとしません。
また、いくら自分の髪とはいえ、毛の大群がまとわりついたコロコロを剥がすあの瞬間が最高に嫌いでした。

勿体無いかな…でも欲しいな…など思いつつダ〇ソンのハンディタイプを買おうと迷った事もありましたが、1/5のお値段で高評価のこちらの商品でとりあえず様子見することに。外箱が思っていたよりもかなり小さく、最初は失敗したかと思いましたが、開けてみると質感も良く、これなら部屋のどこに置いても邪魔にならなそうです。

そして肝心の吸引力ですが、あんなにコロコロで取れなかった脱走兵どもが綺麗に吸い込まれていくではありませんか!

ついでにいつぞやの晩酌の際に食べこぼしたクルミの欠片など、多少大きさのある物でも綺麗に吸い込んでくれます。もしかしたらダ〇ソンはもっと強力に吸ってくれるのかもしれませんが、私と同じような悩みをお持ちの方でしたら、これで十分でしょう。アタッチメントも布団用や狭いところ用のものもついていますので便利です。

もういっそ、頭に直接この掃除機をかけた方が早いんじゃないかと思ってしまう程です。
2022/06/08(水) 02:36:31.18ID:3hgKnM3d0
ち○毛や脇の下まで薄くなった俺は??
398デフォルトの名無しさん (ワッチョイ 6905-Apbd)
垢版 |
2022/06/08(水) 07:20:52.11ID:fAskgOC50
ここはHGのあつまりでつね
2022/06/08(水) 08:24:09.17ID:0P23HUlSM
MGかPGが良いなぁ
2022/06/08(水) 09:48:44.91ID:pnJSpG8Od
はげもげぱげ
2022/06/08(水) 17:24:59.25ID:C2b/Gc96H
以前こちらでお世話になったものですが、うまくファイルに転記できないためまたお力をお借りしにきました。。

2つのブックがあって、別のブックにエリアごと(B列で判定)のデータをぺたぺた貼って保存すればOKなんですが
元データが10万行くらいあって、なぜかブックはエリアごとに保存は出来るのですが、あるはずの半分くらいのデータしかコピペできてないのです。

コピペで切り貼りしたコードで見づらいくて申し訳ありませんが、おかしいところがあれば教えていただけないでしょうか??(H列が最右の列でTOTALにあたります)

■データのイメージ 延々と下に10万行くらいあります。

A列 B列    C列     D列                                                                TOTAL
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Distribution (PCW; Sales value) 0.01
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Market size (Value) 339,651.60
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Sales per store selling item (Unit) x1,000 5,744.20
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Sales per store selling item (Value) x1,000 573,148.54
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Distribution (PCW; Sales value) 0.05
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Market size (Value) 697,424.54
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Sales per store selling item (Unit) x1,000 6,850.74
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Sales per store selling item (Value) x1,000 871,208.64
業態合算 東海 大容量 PKS SOYBIO ソイビオトウニユウY プレ-ンムトウKP400 4589850822179 Distribution (PCW; Sales value) 41.70
業態合算 関東 大容量 PKS SOYBIO ソイビオトウニユウY プレ-ンムトウKP400 4589850822179 Market size (Value) 197,839,014.22
2022/06/08(水) 17:26:49.54ID:C2b/Gc96H
コードです 長いので分けます

Sub Export_ExcelFile()

'変数の定義
Dim Wb1 As Worksheet, Wb2 As Workbook, FileNam As String
Dim xPath As String
Dim key As String
Dim i As Integer

Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Application.ScreenUpdating = False

'ワークシートを指定する
Set Sh1 = ThisWorkbook.Worksheets("Sheet1")

'データの始まり2行目を指定
Dim start As Long
start = 2

Set Wb1 = ActiveSheet '元シートをActiveSheetにセットする

'出力先のパスを指定
With ActiveWorkbook
xPath = .Path & "\" 'ファイルが置いてあるフォルダからのパスを指定
End With
2022/06/08(水) 17:27:20.86ID:C2b/Gc96H
'エリアが空欄の位置までループ
Do While Sh1.Cells(start, 2) <> ""

Set Wb2 = Workbooks.Add ' 新規ブック作成
Set Sh2 = Wb2.Worksheets("Sheet1") '新規ブックのシートを指定

'ファイル名に付ける日付を取得
Dim strDate As String
strDate = DateSerial(Year(Now), Month(Now), Day(Now))
strDate = Format(strDate, "yyyymmdd")

'Excelファイル出力
FileNam = xPath & Sh1.Cells(start, 2).Value & "" & strDate & ".xlsx"


'コピー元の最初のエリア名を取得
key = Sh1.Cells(start, 2).Value

'同じエリア名が続く間はループ
Sh1.Activate
Do While Sh1.Cells(start, 2).Value = key

'データ行に色をつける
Cells(start, 7).Resize(1, 1).Interior.Color = RGB(255, 0, 0)
'Cells(i, 7).Resize(1, 1).Interior.Color = RGB(255, 0, 0)
i = i + 1 'コピー先の行を一つ下にずらす。
start = start + 1 'コピー元のエリア名行を一つ下にずらす。

Loop
2022/06/08(水) 17:27:41.62ID:C2b/Gc96H
Dim mySheet As Worksheet: Set mySheet = ActiveSheet

'赤く塗られた行をソートしてコピペする
Dim myRange As Range: Set myRange = mySheet.Range("A1").CurrentRegion
myRange.AutoFilter Field:=7, Criteria1:=RGB(255, 0 _
, 0), Operator:=xlFilterCellColor


myRange.SpecialCells(xlCellTypeVisible).Copy
Sh2.Activate

Range("A1").Select
ActiveSheet.Paste
Sh2.Range("G:G").Interior.Pattern = xlNone

mySheet.ShowAllData

Sh1.Range("G:G").Interior.Pattern = xlNone

'分割したファイルを保存して閉じる
Wb2.SaveAs Filename:=FileNam ' 同一フォルダに保存して閉じる
Wb2.Close
'分割ファイルのブックを解放
Set Wb2 = Nothing

Loop
Application.ScreenUpdating = True

MsgBox "終わったよ"

End Sub
2022/06/08(水) 17:31:00.27ID:C2b/Gc96H
元データを少なくして全部で50行くらいにしたら上手くファイルを分けて保存出来てたんですが、、、
もし問題点がお分かりになる方いらっしゃったらよろしくお願いしたいです(>_<)
406デフォルトの名無しさん (ワッチョイ c6da-3oMX)
垢版 |
2022/06/08(水) 18:24:26.53ID:38a4SNrC0
integerの最大っていくつまでだっけ?
407デフォルトの名無しさん (アウアウウー Sa11-3OWO)
垢版 |
2022/06/08(水) 18:40:07.58ID:lFvBESVva
2 ^ 15 - 1 = 32767 じゃね
2022/06/08(水) 18:40:44.71ID:mwMQbcQT0
ググれよ
2022/06/08(水) 19:08:37.35ID:/v6Td7Qv0
>>396
面白いんですけど何で商品の話ですか
410デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/08(水) 19:25:08.52ID:2MMAQscUa
32bitのexcelと64bitのexcelでintの範囲違うんだろうか
(もちろんOSの話ではない)
2022/06/08(水) 19:34:40.24ID:38a4SNrC0
>i = i + 1 'コピー先の行を一つ下にずらす。

ってあるから貼り付け先が integer 超えたらだめじゃねって思った
2022/06/08(水) 19:43:22.59ID:60yE+Uw7d
Dim 残りの髪の毛 As byte
Dim 抜け毛 As LongLong

あとよろしく
2022/06/08(水) 19:45:48.83ID:C2b/Gc96H
>>411
なるほど!どうりで最後まで貼られてなかったんだ(´;ω;`)早速ありがとうございます。
ちょっと自分でやり直してみます!!m(__)m
2022/06/08(水) 19:46:53.74ID:C2b/Gc96H
>>412
流れぶった切ってゴメンなさい

でも考えすぎてハゲそうな勢いでした。。頭悪くてイヤになります。。
2022/06/08(水) 20:12:39.32ID:C2b/Gc96H
ダメだ、integerをlongに替えてやってみたけど
やはり半分以下しか貼られませんでした。

もう少し頑張ってみます
2022/06/08(水) 20:25:07.29ID:C2b/Gc96H
自己解決しました。1つのエリアの塊が飛び飛びになってたので
同じエリアのブック内で上書きされてたみたいです。

でも皆さんのおかげで解決出来ました。ありがとうございました!
またハゲそうになったらこちらに伺いたいです。。懲りずによろしくお願いいたしますm(__)m
2022/06/08(水) 22:42:41.32ID:3hgKnM3d0
また毛
2022/06/09(木) 00:00:12.33ID:XIUzPNKLM
※よろず~ニュース

波平さん銅像に髪の毛戻る 引き抜かれてから5日の〝スピード植毛〟
https://yorozoonews.jp/article/14640597

杉田 康人

https://public.potaufeu.asahi.com/dd83-p/picture/26885823/46ac4b106abdd0873e85fa50ea6f8cbb_640px.jpg

東京都世田谷区の桜新町商店街にある人気アニメ「サザエさん」一家の銅像から引き抜かれていた髪の毛が8日、復活した。同商店街によると3日朝、波平さんのトレードマークとなっている貴重な1本毛が抜かれているのが見つかった。ワカメちゃんの頭頂部から跳ね出した〝アホ毛〟3本もなくなっていたが、商店街の依頼を受けた業者が8日午後までに修復した。

サザエさん一家は、桜新町に住んでいる設定。作者の長谷川町子氏の美術館・記念館おひざ元の桜新町商店街は、作品ゆかりのストリートとして知られる。銅像は2012年(平成24)に建立したが、商店街の担当者によると波平さんはこれまでに6度、毛を引き抜かれる憂き目に遭っている。ワカメちゃんの髪が抜かれるのは初だという。

 銅像の髪の毛は、針金にビニールをコーティングしたもの。(略)

※省略していますので全文はソース元を参照して下さい。
419デフォルトの名無しさん (ブーイモ MM39-M86+)
垢版 |
2022/06/09(木) 04:46:01.01ID:CxlByAWLM
このハゲ
      / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ 
    l:::::::::.                  | 
    |::::::::::   (●)     (●)   | 
   |:::::::::::::::::   \___/     |  
    ヽ:::::::::::::::::::.  \/     ノ
420デフォルトの名無しさん (ワッチョイ ca4f-QyWa)
垢版 |
2022/06/09(木) 19:07:14.80ID:cD/wL2EQ0
いや
お前らハゲ散らかし過ぎだろ
421デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/09(木) 21:45:50.80ID:WYCVR9XP0
>>420
そんなつもりは毛頭ございません
2022/06/09(木) 22:38:52.28ID:pASwhhxq0
パソコンばっかやっているから禿るんだわ
いい加減気がつけよ
2022/06/09(木) 22:48:34.88ID:/RbqsnKRd
禿げてる奴がパソコンばっかやるようになるんだわ
人生って残酷だよな
424デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/10(金) 07:26:23.24ID:1o37Jrb90
もうしわ毛ありません
2022/06/10(金) 07:28:26.18ID:rEbuXRdM0
真面目に話すと、パソコン作業は頭使うしストレスの負荷が高いから禿やすいとは聞いた。
2022/06/10(金) 08:55:47.16ID:kCKMlptW0
人間関係の煩わしさでストレスの負荷が多い場合が多いから、パソコン作業はハゲにくいらしいよ
2022/06/10(金) 12:04:33.87ID:F7hdpVFcd
パソコンからは強い電磁波が出てるから、パソコン作業は禿げやすいとは聞いた。
428デフォルトの名無しさん (アウアウウー Sa11-3oMX)
垢版 |
2022/06/10(金) 12:51:05.36ID:zP3+9Ywoa
ハゲ対策の情報もいっぱい持ってるから予防できる
2022/06/10(金) 13:28:56.18ID:dcEjX7ueM
男性ホルモンの優位でハゲるから(*ノω・*)テヘ
2022/06/10(金) 13:52:15.99ID:6StqYoESd
パソコンの前でやる事と言ったらそれしか無いからな
2022/06/10(金) 18:44:17.05ID:rEbuXRdM0
男性ホルモンが盛んなのですから禿る
432デフォルトの名無しさん (スッップ Sdea-QKcq)
垢版 |
2022/06/10(金) 22:17:29.28ID:e4qm213id
このスレで質問するレベルの馬鹿が作ったExcel表のせいで葛飾区の保育所は大騒ぎ
2022/06/10(金) 22:31:48.31ID:lQlywAWy0
エクセル2016で複数のbook開いてると単体で開いてるときよりもずっとVBAの動作が遅くなるんだけど
解決策知ってる人いる?
2022/06/10(金) 22:34:53.56ID:/aCQrqDp0
複数開かなきゃいいんじゃね
2022/06/10(金) 23:02:11.31ID:yoZYMWv5H
>>432
(´;ω;`)
2022/06/10(金) 23:11:39.01ID:rEbuXRdM0
>>432
え?詳しく
ググっても詳細出てこない。
禿そうだわ
2022/06/10(金) 23:14:29.48ID:rEbuXRdM0
あ、葛飾区のニュース出て来た
表計算ソフト式に誤りとか最低だろう。
テストしなかったのかな?
2022/06/10(金) 23:17:41.83ID:Vb4kLAL3M
>>436
検索初心者か?
普通にぐぐって一発で出るんだが
https://xtech.nikkei.com/atcl/nxt/news/18/13050/
2022/06/10(金) 23:24:30.64ID:bPqrOIr80
どーせsubtotalじゃなくsumで小計出してたせいで合計が2重計上されたとかじゃねーの
2022/06/11(土) 00:03:58.02ID:peHZyvXnd
Dick A as strong
Dick B as strong

If A > B then
A = Tachi
B = Uke
End if

A => B
2022/06/11(土) 00:50:08.66ID:c8NiZZbH0
>>440
ツッコミどころ満載やな
442デフォルトの名無しさん (ワッチョイ ff4f-LHJ+)
垢版 |
2022/06/11(土) 09:42:09.94ID:k8BssVI/0
A もB も
強そうな型だなオイ
2022/06/11(土) 11:19:57.24ID:zJAfd1A70
ストロングチューハイはやばい酔い方する
2022/06/11(土) 12:41:06.40ID:CM4vZAaMM
A = Bだとどうなるの?
2022/06/11(土) 14:14:10.27ID:ZxVNHiJ20
なんで竿がデカい方が攻めなんだよ
はっ倒すぞ
2022/06/11(土) 14:27:57.92ID:8O7zsVZWM
どこにも竿の大きさなんて書いてない
クラス定義まで見ない限り、何を比較してるのか、このコードだけではわからない
さては思い込みでコードを書いてバグを発生させちゃうタイプだな?
2022/06/11(土) 15:03:55.80ID:zJAfd1A70
分かってないだけでしょ
2022/06/11(土) 16:08:12.40ID:ZxVNHiJ20
If Dick(竿)A>DickB Then A=タチって書いてあんじゃんか
2022/06/11(土) 16:33:22.04ID:k7wiIunZM
Strongは精力じゃね?
大きさならSizeとかLengthとか
2022/06/11(土) 18:37:34.42ID:4UGI/r2E0
禿は精力が強い
2022/06/11(土) 19:01:23.35ID:qcSYfg6i0
B = Not(A)
じゃね
2022/06/11(土) 20:12:32.64ID:VlCDkB2oM
DickクラスのSizeプロパティは読み取り専用
Electプロパティは代入可能
Cumメソッドは1日5回以上使うと例外発生
2022/06/11(土) 21:54:22.38ID:Ejve8RvI0
ShapeとTextBoxをマクロで作ったのを
別のBookのSheetにコピペした時のフォントは
マクロ側とコピペ側だとどちらに依存しますか?
2022/06/11(土) 22:02:30.68ID:TK5b+qDd0
聞く前にやったほうが早いだろw
2022/06/11(土) 22:04:32.17ID:XvS1eUBu0
質問失礼いたします。
ユーザー定義型に以下のようなツリー型になる感じの物をPublicで宣言してて
クラスモジュールにユーザー定義型の変数を作っているのですが、
プロパティの作り方で悩んでいます。

以下標準モジュール内
Public Type MinorItemType ' 小項目
 minorItemName as String ' 小項目名
 minorItemID as Long
End Type

Public Type MajorItemType ' 大項目
 majorItemName as String ' 大項目名
 majorItemID as Long
 minorItem() as MinorItemType
End Type

以下クラスモジュール内
Dim majorItem_() as MajorItemType

この場合、以下のようにMajorItemType型のプロパティを作成して丸ごと渡すのか、
Public Property Get majorItem(ByVal num as Long) as MajorItemType
 majorItem = majorItem_(num)
End Property

それともユーザー定義型の中の変数へのプロパティを1つずつ作成するのか、
どちらが正しいのでしょうか?
ちなみに作成するプロパティは原則Getのみで、
変数に値を取得するのは、クラス内に作成したSubプロシージャで
シートへ値を取りに行かせる具合です。
2022/06/11(土) 22:38:15.29ID:kVPUfUKj0
正解はない
2022/06/11(土) 23:57:34.93ID:XvS1eUBu0
>>456
ありがとうございます。前者の方法で行ってみます。
2022/06/12(日) 00:52:49.29ID:SFQsQSvz0
戦車の砲塔で行ってみてやりにくかったら変えればいいんじゃね
2022/06/12(日) 01:40:55.69ID:QoN69QoAd
芋芋亀してみます!
2022/06/12(日) 18:48:33.62ID:cJxXuNHT0
文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・
a = "000000000"
b = a
Mid(a, 2, 5) = 123
Debug.Print "変更前" & b
Debug.Print "変更後" & a

 結果
変更前000000000
変更後012300000
これだと左詰めなんだが、こうなるべきじゃないの?
変更後0123 000

midにRightをかぶせてみたんだが、
Right(Mid(a, 2, 5), 3) = 123
オブジェクトが必要て言われる。
どうすればいいの?
461デフォルトの名無しさん (ブーイモ MM67-bhaQ)
垢版 |
2022/06/12(日) 19:03:38.39ID:M5mGZ9TuM
format(123, "000000000")じゃ駄目なの?
2022/06/12(日) 19:09:33.96ID:DaJUN4Jhd
Mid(a, 2, 5) = 123
の右辺を数字のままにしてるからおかしくなると思うので
CStr(123)みたいに文字列にしてからセットすればいいんじゃ
2022/06/12(日) 19:30:47.38ID:ImMFuzyy0
むしろ
Mid(a, 2, 5) = 123
これでなんでaが012300000になるの?どう評価されてるの?
2022/06/12(日) 19:37:46.32ID:ImMFuzyy0
???

Sub foo()

a = 0
Mid(a, 1) = "aaa" '通る
Right(0, 2) = "bbb" 'エラー
Debug.Print a

End Sub
2022/06/12(日) 20:39:25.03ID:uZt7xySi0
自分ならright("000000000" & "123"の右側を取る
2022/06/12(日) 21:12:13.58ID:DaJUN4Jhd
ああ右詰で数字をいれたいのか
自分のレスは無視して
そもそも桁数も統一してないからそこから見直せ
2022/06/12(日) 21:35:58.65ID:cJxXuNHT0
Sub sample()
'01 PIC X(1)
'01 PIC 9(5)
'01 PIC X(3)
a = "A00000ABC": Debug.Print "元データ :" & a
Mid(a, 2, 5) = Format(123, "00000"): Debug.Print "パターン1:" & a
a = "A00000ABC"
Mid(a, 2, 4) = Format(123, "0000"): Debug.Print "パターン2:" & a
a = "A00000ABC"
Mid(a, 2, 5) = Format(123, "000"): Debug.Print "パターン3:" & a
a = "A00000ABC"
Mid(a, 2, 5) = 123: Debug.Print "パターン4:" & a
a = "A00000ABC"
c = "00000"
RSet c = 123
Mid(a, 2, 5) = c: Debug.Print "パターン5:" & a
End Sub

元データ :A00000ABC
パターン1:A00123ABC
パターン2:A01230ABC
パターン3:A12300ABC
パターン4:A12300ABC
パターン5:A 123ABC

パターン1が正解なんだけど、なぜパターン4は3文字分だけ書き換えるんだろう?
パターン4がOKならパターン5でもいけるような気がするが、パターン5は空白を埋める。
RSet Mid(a, 2, 5) = 123 はエラーになる
2022/06/12(日) 21:46:31.55ID:ImMFuzyy0
それ以前に
Mid(a, 2, 5) = Format(123, "00000")
でエラーが出ないのがおかしいだるお
2022/06/12(日) 21:52:55.42ID:SFQsQSvz0
ちなみに -123 のときどうする?
470デフォルトの名無しさん (スプッッ Sd1f-UGZ9)
垢版 |
2022/06/12(日) 22:19:45.52ID:+/mRZvLHd
ID:ImMFuzyy0

馬鹿は黙っていればいいのに
そうやって馬鹿を曝け出していると頭の皮膚も曝け出されるぞ
2022/06/12(日) 22:37:23.13ID:aOGWTw070
midステートメントは今ある文字列に対して別の文字列を被せるだけの動作だよ
2022/06/12(日) 23:03:38.74ID:b6RzJ+XoM
別の文字列を被せるのは仕様外動作だと思うけどな
2022/06/12(日) 23:07:02.46ID:ImMFuzyy0
何一つその動作がのってねぇ
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-function
2022/06/12(日) 23:10:22.37ID:UzvPms3IM
引数以外の手段で関数に値を代入(?)するという前代未聞の珍動作
何が起きるか分かったもんじゃない
2022/06/12(日) 23:13:02.41ID:cJxXuNHT0
つまり
Mid(a, 2, 5) = 123

aの2文字目から5文字分ところに、"123"を書き込むんだけど、
3文字しかないから、4-5文字目は何もしないてことだよね。
でも代入の原則論から言えば、足りない部分はスペースで埋めるんじゃないのか?
RSetは足りない部分はスペースで埋めてる。
まあ、それが仕様だて言えばそうだけど、
深く考えて作られてないのかな。
もし、RSetも3文字しか代入しないのなら、RIGHTやFORMATを使わなくても0埋めができるし、
単純な代入だから性能もいいはず。
2022/06/12(日) 23:16:04.57ID:cJxXuNHT0
>>473
それはmid関数。
midステートメントとは別物だよwww。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-statement
オレもさっき知ったんだがwww
2022/06/12(日) 23:29:45.68ID:nFfW5LM6M
そんなものがあったのか!?
けど代入元の型は文字列になってるけど数値を代入していいのか?
2022/06/12(日) 23:33:25.21ID:ImMFuzyy0
>>476
ありがとう!!!
気になって眠れないとこだった。俺の頭がおかしくなったのかと思ったわw

ステートメント、一度目を通しておいたほうがいいね
https://excel-ubara.com/EXCEL/EXCEL908.html
>>477
vbaで何をいっとるんじゃい
2022/06/12(日) 23:54:08.09ID:cJxXuNHT0
>>477
どの言語もできるような気もするが。
出来ない言語なんかあったけ?
化石のような言語のCOBOLでもできる。
COBOLだと9型の変数があって、VBA風にかくと
Dim a as 99999
a = 123
でaを00123にしてくれる。
a=RIGHT("00000" & 123,5)なんてやってるのをみて驚いたわ。
2022/06/12(日) 23:56:26.34ID:as/ibVfq0
ちなみに、MidステートメントはLetステートメントと違ってヒープ領域の再確保を行わないようなので
めちゃくちゃいっぱい文字列を結合したり置き換えたりする文字列操作をMidステートメントで高速化できたりはする
色々注意しなきゃならんしめんどいけど
2022/06/13(月) 14:10:09.78ID:cuhQaR4kM
mid("00000",5-len(a),len(a))=a
なんてやってるの?
2022/06/13(月) 15:41:58.25ID:e6QxpplAd
文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・
これがやりたい事なんだから
A.MIDステートメントを使うなら右辺の値を5桁固定にする
 Mid(a,2,5) = Format(123,"00000")
B.代入するの文字列を代入先の左側+5桁固定の値+代入先の右側にする
 a = Mid(a,1,1) & Format(123,"00000") & Mid(a,7,Len(a))
あたりに落ち着くのでは 
自分は誤解されないためにもBのようなコードがいいと思うけど
2022/06/13(月) 18:10:47.94ID:S+tXl/uoD
自分なら
right("00000" & 123, 5)
って書く
2022/06/13(月) 18:28:06.25ID:CiY+fWgN0
セルの書式設定に 0000# って書けばいいのに
2022/06/13(月) 19:38:44.31ID:5YQd33j2d
いやどうせVBAでやるならNumberFormatLocalでやろうよ
2022/06/13(月) 20:02:21.45ID:3bSnFxDm0
要件にもよるが正規表現とFormat()で。
2022/06/13(月) 21:14:24.62ID:c4yOIzj40
>>482
https://www.moug.net/tech/exvba/0140045.html
MIDステートメントのほうが速いらしい。
でもオレが試したら逆だったけど・・・・
2022/06/13(月) 22:37:41.37ID:pISmU68J0
みんなのコードカッコいいわ
やっぱりコードはカッコ良くなきゃ舐められるわな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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