!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part77
https://mevius.2ch.net/test/read.cgi/tech/1658009255/
Excel VBA 質問スレ Part78
https://mevius.2ch.net/test/read.cgi/tech/1667104996/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part79(ワッチョイあり)
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ aaa4-I2zm)
2023/01/28(土) 12:12:12.41ID:UjlIZ1Ov02デフォルトの名無しさん (ラクッペペ MMb6-aFYY)
2023/01/28(土) 12:23:13.98ID:+RlrKkV4M Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
3デフォルトの名無しさん (ワッチョイ 0b01-hj3w)
2023/01/28(土) 12:40:41.67ID:NqcfPhRT0 >>1
乙
乙
4デフォルトの名無しさん (アウアウウー Sa47-B/zI)
2023/01/28(土) 15:04:00.65ID:uWWFw1N+a 1gj
5デフォルトの名無しさん (ワントンキン MM8a-bQbc)
2023/01/28(土) 15:34:06.67ID:YZOoYTJxM わかった気で勘違いしている馬鹿の間違いや馬鹿さ加減を指摘するとスレが荒れるので無視しましょう
最近では零細企業のあれです
最近では零細企業のあれです
6デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
2023/01/28(土) 21:43:50.55ID:cCrz+GwL0 エクセルでスクレイピングはできそうだけどね。
7デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
2023/01/28(土) 22:05:54.66ID:cCrz+GwL0 分かりづらい質問だな。
「エクセルファイルのシートにボタンを置いて、それをクリックしたら
あるアプリを立ち上げたい。これが可能ですか?」
ということかな。答えは可能。
「エクセルファイルのシートにボタンを置いて、それをクリックしたら
あるアプリを立ち上げたい。これが可能ですか?」
ということかな。答えは可能。
8デフォルトの名無しさん (ワッチョイ 8379-jh2e)
2023/01/29(日) 01:25:58.33ID:R24XfIrD09デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
2023/01/29(日) 09:15:12.97ID:KzySl/Bm0 httpリクエストとか、api接続とか、一般的な表計算の操作が中心の
エクセルユーザーの範囲外なんだけど。
ただ、ExcelでなくてGoogleスプレッドシートはapi接続に相性が良さそう。
クラウドにアプリがあるっていうのは、それだけ優位な気がする。
会社での表計算もほとんど、ExcelでなくてGoogleスプレッドシート使うようになってきて、
今Excelとして残っているのは、過去開発されたマクロで運用する箇所があるから。
こんなことになるとは数年前には思っていなかった。
エクセルユーザーの範囲外なんだけど。
ただ、ExcelでなくてGoogleスプレッドシートはapi接続に相性が良さそう。
クラウドにアプリがあるっていうのは、それだけ優位な気がする。
会社での表計算もほとんど、ExcelでなくてGoogleスプレッドシート使うようになってきて、
今Excelとして残っているのは、過去開発されたマクロで運用する箇所があるから。
こんなことになるとは数年前には思っていなかった。
10デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
2023/01/29(日) 09:19:56.22ID:KzySl/Bm0 VBAとGASどっちもできるようになるといいね。
11デフォルトの名無しさん (ワッチョイ db10-+rQD)
2023/01/29(日) 10:26:38.51ID:nRF7bUNu0 A列セルに3桁のアルファベットと番号(AAA 1000)、B列セルに金額が入っており
A列セルは番号部分が同セル内に/で区切られ増えるパターンあり(AAA 1000/1001/1002)
これを/がある場合は/で区切り、番号ごとに行を追加して
更にB列の金額も追加した行数で分割するといったことを最終行まで繰り返し処理したいのですが
A列 B列
AAA 1000/1001 1,000
↓↓↓
A列 B列
AAA 1000 500
AAA 1001 500
金額を行数で分割する方法と
番号ごとに行を追加した時にアルファベットAAAを番号前に追加するにはどうすればよいでしょうか。
A列セルは番号部分が同セル内に/で区切られ増えるパターンあり(AAA 1000/1001/1002)
これを/がある場合は/で区切り、番号ごとに行を追加して
更にB列の金額も追加した行数で分割するといったことを最終行まで繰り返し処理したいのですが
A列 B列
AAA 1000/1001 1,000
↓↓↓
A列 B列
AAA 1000 500
AAA 1001 500
金額を行数で分割する方法と
番号ごとに行を追加した時にアルファベットAAAを番号前に追加するにはどうすればよいでしょうか。
12デフォルトの名無しさん (ワッチョイ db10-+rQD)
2023/01/29(日) 10:28:09.50ID:nRF7bUNu0 続き
コードはこれなのですが
どうかよろしくお願いします
Dim i As Long
Dim n As Long
Dim LastRow As Long
Dim SplCell As String
Dim temp As Variant
Dim AddRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = LastRow To 1 Step -1
SplCell = Cells(i, 1)
temp = Split(SplCell, "/")
AddRow = UBound(temp)
If AddRow > 0 Then
Range("A" & i + 1).Resize(AddRow).EntireRow.Insert
End If
For n = 0 To AddRow
Cells(i + n, 1) = temp(n)
Cells(i + n, 2) = Cells(i, 2)
Next n
Next i
End Sub
コードはこれなのですが
どうかよろしくお願いします
Dim i As Long
Dim n As Long
Dim LastRow As Long
Dim SplCell As String
Dim temp As Variant
Dim AddRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = LastRow To 1 Step -1
SplCell = Cells(i, 1)
temp = Split(SplCell, "/")
AddRow = UBound(temp)
If AddRow > 0 Then
Range("A" & i + 1).Resize(AddRow).EntireRow.Insert
End If
For n = 0 To AddRow
Cells(i + n, 1) = temp(n)
Cells(i + n, 2) = Cells(i, 2)
Next n
Next i
End Sub
13デフォルトの名無しさん (ワッチョイ df49-+rQD)
2023/01/29(日) 11:46:37.73ID:WTXbQyE20 >>12
考えてみた。
Sub test()
Dim i As Long
Dim n As Long
Dim LastRow As Long
Dim SplCell(1) As String ←変更。(0)はアルファベットを格納、(1)はアルファベット以降の金額部を格納。
Dim temp As Variant
Dim AddRow As Long
Dim m As Double ←追加。行数で分割した金額。
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = LastRow To 1 Step -1
SplCell(0) = Left(Cells(i, 1), 4) ←追加
SplCell(1) = Mid(Cells(i, 1), 5) ←変更
temp = Split(SplCell(1), "/")
AddRow = UBound(temp)
If AddRow > 0 Then
Range("A" & i + 1).Resize(AddRow).EntireRow.Insert
End If
m = Cells(i, 2) / (AddRow + 1) 追加
For n = 0 To AddRow
Cells(i + n, 1) = SplCell(0) & temp(n) ←変更
Cells(i + n, 2) = m ←変更
Next n
Next i
End Sub
考えてみた。
Sub test()
Dim i As Long
Dim n As Long
Dim LastRow As Long
Dim SplCell(1) As String ←変更。(0)はアルファベットを格納、(1)はアルファベット以降の金額部を格納。
Dim temp As Variant
Dim AddRow As Long
Dim m As Double ←追加。行数で分割した金額。
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = LastRow To 1 Step -1
SplCell(0) = Left(Cells(i, 1), 4) ←追加
SplCell(1) = Mid(Cells(i, 1), 5) ←変更
temp = Split(SplCell(1), "/")
AddRow = UBound(temp)
If AddRow > 0 Then
Range("A" & i + 1).Resize(AddRow).EntireRow.Insert
End If
m = Cells(i, 2) / (AddRow + 1) 追加
For n = 0 To AddRow
Cells(i + n, 1) = SplCell(0) & temp(n) ←変更
Cells(i + n, 2) = m ←変更
Next n
Next i
End Sub
14デフォルトの名無しさん (ワッチョイ db10-+rQD)
2023/01/29(日) 12:05:26.37ID:nRF7bUNu015デフォルトの名無しさん (オッペケ Sr3b-O9ZV)
2023/01/29(日) 14:40:20.12ID:cIjm/G+Or >>9
It sounds like you are saying that Excel users may not have experience with things like HTTP requests and API connections, but that Google Sheets may be better suited for those types of tasks because it is a cloud-based app. You also mention that your company has been transitioning away from using Excel and towards using Google Sheets for most of their spreadsheet needs, with the exception of some areas where older macros developed in Excel are still in use. It's interesting to see how technology and user preferences can change over time.
It sounds like you are saying that Excel users may not have experience with things like HTTP requests and API connections, but that Google Sheets may be better suited for those types of tasks because it is a cloud-based app. You also mention that your company has been transitioning away from using Excel and towards using Google Sheets for most of their spreadsheet needs, with the exception of some areas where older macros developed in Excel are still in use. It's interesting to see how technology and user preferences can change over time.
16デフォルトの名無しさん (ワッチョイ 5fda-2biX)
2023/01/29(日) 15:11:19.34ID:GtadNWQm0 looks like 〇
sounds like ×
sounds like ×
17デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
2023/01/29(日) 15:15:30.68ID:KzySl/Bm0 なんで英訳
18デフォルトの名無しさん (オッペケ Sr3b-O9ZV)
2023/01/29(日) 15:18:51.71ID:cIjm/G+Or ChatGPT
19デフォルトの名無しさん (ワッチョイ 5f10-bQbc)
2023/01/29(日) 16:52:45.66ID:wtQ124Fo0 こっちも零細企業荒らしがいるのか
20デフォルトの名無しさん (ワッチョイ b666-5T4A)
2023/01/29(日) 18:16:29.96ID:OkpG00lK0 クラスモジュールを使っていく勉強しています。
ClassAのプロパティとしてClassB,ClassCから作るオブジェクトを持たせる事で階層型に
整理できるようですが、これも正しいオブジェクト指向の形なのでしょうか?
メインコードからObjA.ObjB.プロパティAみたいに呼び出せるのです。
ObjAは例えば初期値というカテゴリ
ObjBは初期値の中の日付に関連するもの
ObjCは初期値の中の料金に関するもの
ObjA.の時点で候補が出てくるのも便利です。なんだかただの変数みたいに使ってる気もしますが。
そしてJavaでいうところのメソッドの継承ですが、親側ObjAのメソッドと同じ名前のメソッドを子側ObjBに作り、
中身は親側ObjAのメソッドを呼び出すだけとすれば継承と同じ動作をするような気がします。
子側クラス内で親側クラスのインスタンスを作成しているので、循環しているような気持ち悪さはありますが、内部はメインコードからは見えませんし。
オーバーライド?というのも親側ObjA側のメソッドを呼ばずに子側のObjBのメソッドに処理を好きなように書けばいいだけと思いました。
そして関数型にありがちな関連性のない関数群Module1とかもClassMultiにプロパティのないクラスとして書いて、
オブジェクト化すると、マルチに活躍する便利屋みたいな存在として、これもオブジェクト指向な気がしてきました。
しかも先ほどの継承みたいに別のクラスから同名メソッドで呼ばせれば、同じメソッドをクラス毎に書く必要もありません。
メイン側から見るとオブジェクト指向そのものにも思えます。
オブジェクト指向を人間や動物に例えると、とてもわかりづらかったのですが、
ネームタグみたいな説明をしているサイトから、単なる整理整頓の為の思考技術みたいに考えて。
見せかけのオブジェクト指向を目指してみると、本物と大差ない気がしてきているのですが間違っていますか?
このままなんちゃってオブジェクト指向で進むことをお勧めできない理由がありましたら教えてください。
CallByNameとかImplementsとか勉強すればもっと本物に近づくような気がしています。
ClassAのプロパティとしてClassB,ClassCから作るオブジェクトを持たせる事で階層型に
整理できるようですが、これも正しいオブジェクト指向の形なのでしょうか?
メインコードからObjA.ObjB.プロパティAみたいに呼び出せるのです。
ObjAは例えば初期値というカテゴリ
ObjBは初期値の中の日付に関連するもの
ObjCは初期値の中の料金に関するもの
ObjA.の時点で候補が出てくるのも便利です。なんだかただの変数みたいに使ってる気もしますが。
そしてJavaでいうところのメソッドの継承ですが、親側ObjAのメソッドと同じ名前のメソッドを子側ObjBに作り、
中身は親側ObjAのメソッドを呼び出すだけとすれば継承と同じ動作をするような気がします。
子側クラス内で親側クラスのインスタンスを作成しているので、循環しているような気持ち悪さはありますが、内部はメインコードからは見えませんし。
オーバーライド?というのも親側ObjA側のメソッドを呼ばずに子側のObjBのメソッドに処理を好きなように書けばいいだけと思いました。
そして関数型にありがちな関連性のない関数群Module1とかもClassMultiにプロパティのないクラスとして書いて、
オブジェクト化すると、マルチに活躍する便利屋みたいな存在として、これもオブジェクト指向な気がしてきました。
しかも先ほどの継承みたいに別のクラスから同名メソッドで呼ばせれば、同じメソッドをクラス毎に書く必要もありません。
メイン側から見るとオブジェクト指向そのものにも思えます。
オブジェクト指向を人間や動物に例えると、とてもわかりづらかったのですが、
ネームタグみたいな説明をしているサイトから、単なる整理整頓の為の思考技術みたいに考えて。
見せかけのオブジェクト指向を目指してみると、本物と大差ない気がしてきているのですが間違っていますか?
このままなんちゃってオブジェクト指向で進むことをお勧めできない理由がありましたら教えてください。
CallByNameとかImplementsとか勉強すればもっと本物に近づくような気がしています。
21デフォルトの名無しさん (ワッチョイ 5f10-exzg)
2023/01/29(日) 21:58:40.35ID:TymAj0Je0 Excelスレでも荒らしてるヤツがいるなここ
22デフォルトの名無しさん (ワッチョイ 8a3d-0rrK)
2023/01/29(日) 23:11:48.83ID:QtxW6Mg40 ワッチョイ付きに誘導されますた。
Type RecClass0
field01 As String * 6
End Type
Type RecClass1
field01 As String * 4
field02 As Integer
End Type
Sub test()
data = "abcdyyzzzz・・" ← HEXにすると "414243440006??????・・"
Dim rec0 As RecClass0
Dim rec1 As RecClass1
rec0.field01 = data
rec1 = rec0 ←型が一致しません
Debug.Print Len(rec1.field02)
End Sub
dateの0006にあたる6を取ってきたいんだけど、上記のようなコードを考えてみた。
型が一致しませんになる。
代入て無理なのか?
コボルだとできるよな。
上のコードはインデントのために全角空白を使ってるので、半角にしてくれ。
Type RecClass0
field01 As String * 6
End Type
Type RecClass1
field01 As String * 4
field02 As Integer
End Type
Sub test()
data = "abcdyyzzzz・・" ← HEXにすると "414243440006??????・・"
Dim rec0 As RecClass0
Dim rec1 As RecClass1
rec0.field01 = data
rec1 = rec0 ←型が一致しません
Debug.Print Len(rec1.field02)
End Sub
dateの0006にあたる6を取ってきたいんだけど、上記のようなコードを考えてみた。
型が一致しませんになる。
代入て無理なのか?
コボルだとできるよな。
上のコードはインデントのために全角空白を使ってるので、半角にしてくれ。
23デフォルトの名無しさん (ワッチョイ e38e-+gLB)
2023/01/29(日) 23:33:48.49ID:5iJXY4pQ0 >>22
LSETじゃダメなのか?
LSETじゃダメなのか?
24デフォルトの名無しさん (ワッチョイ 8a3d-0rrK)
2023/01/30(月) 03:06:05.93ID:yj3XWjhj0 >>23
できました
できました
25デフォルトの名無しさん (ワッチョイ 3619-GWjr)
2023/01/30(月) 08:01:49.37ID:1uz9zngm0 >>20
> 子側クラス内で親側クラスのインスタンスを作成しているので、循環しているような気持ち悪さはありますが、内部はメインコードからは見えませんし。
堅牢性から考えるとVBAに限らずここがまずいかな
子クラスCで親クラスAを生成すると言う事は、
もし同じような親クラスDを作成して同じ子クラスを
使おうとするとその中で親クラスAを作成することが
前提となってしまい、親クラスDでは使えない場合が出てくる。
子クラスではあくまで子クラスの役割を
与えるべきであって、もし親クラスの機能を
使いたいなら直接子クラスの中で生成するのではなく、
CallByNameやインターフェースを使用するかして
処理を移譲させるようにした方がいいと思うよ。
> 子側クラス内で親側クラスのインスタンスを作成しているので、循環しているような気持ち悪さはありますが、内部はメインコードからは見えませんし。
堅牢性から考えるとVBAに限らずここがまずいかな
子クラスCで親クラスAを生成すると言う事は、
もし同じような親クラスDを作成して同じ子クラスを
使おうとするとその中で親クラスAを作成することが
前提となってしまい、親クラスDでは使えない場合が出てくる。
子クラスではあくまで子クラスの役割を
与えるべきであって、もし親クラスの機能を
使いたいなら直接子クラスの中で生成するのではなく、
CallByNameやインターフェースを使用するかして
処理を移譲させるようにした方がいいと思うよ。
26デフォルトの名無しさん (スププ Sdba-5IHC)
2023/01/30(月) 09:39:47.20ID:e2a+Lyz1d CSVファイルって、Excelで開いて編集して保存すると文字コードの問題でデータの後ろに半角スペースが入ることがあるのでしょうか?
27デフォルトの名無しさん (スププ Sdba-5IHC)
2023/01/30(月) 09:40:56.25ID:e2a+Lyz1d 元々半角スペース入ってなかったのにデータをかきかえたりすると文字コードがShiftJISではない場合、文字化けして半角スペースが入るのでしょうか?
28デフォルトの名無しさん (スッップ Sdba-+rQD)
2023/01/30(月) 10:51:56.77ID:Vha856Nid29デフォルトの名無しさん (オッペケ Sr3b-Gtwf)
2023/01/30(月) 11:54:01.10ID:beImLHJmr30デフォルトの名無しさん (スププ Sdba-5IHC)
2023/01/30(月) 15:20:40.00ID:e2a+Lyz1d31デフォルトの名無しさん (ワッチョイ 172f-DSsr)
2023/01/30(月) 15:57:22.13ID:dCL8a0ux0 >>29
その記事、余白と空白文字(半角スペース)を同一視してるのが気持ち悪いな
その記事、余白と空白文字(半角スペース)を同一視してるのが気持ち悪いな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 山田邦子 ひょうきん族時代の年収は12億円「ただ税金が80%」 [muffin★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★7 [ぐれ★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【鹿児島】容疑者は大学生。国道3号を横断中の母娘を車ではねる――「太陽がまぶしくて見えなかった」。20歳女を現行犯逮捕 日置署 [ぐれ★]
- 高市早苗「定数削減とかすると思ってたの???笑」漢一匹吉村「ざっけんな」反旗を翻す [245325974]
- しかし鈴木農水大臣ほど、見る人によって『イケメン』か『ブサイク』か真っ二つに割れる人間も中々いないよな [762037879]
- ルーナイト第1条!誰よりルーナ(・o・🍬)が好きな人~🙋🏡
- 小野田紀美、同党議員の熱愛報道に「不潔...」と嫌悪感を漏らす... [856698234]
- おさかなさんあつまれえ
- 高市「たまたま私が支部長だった。高市早苗に対する献金ではない」→自分の公式サイトで、ガッツリ寄付を呼びかけていた事が判明 [594040874]
