!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
その記事、余白と空白文字(半角スペース)を同一視してるのが気持ち悪いな
その記事、余白と空白文字(半角スペース)を同一視してるのが気持ち悪いな
32デフォルトの名無しさん (アウアウウー Sa47-hj3w)
2023/01/30(月) 19:11:31.03ID:uxYUj7Ria >>31
そうは言ってもExcelだと余白を空けるのに空白しか使えないから仕方なくね?
そうは言ってもExcelだと余白を空けるのに空白しか使えないから仕方なくね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
- 【悲報】麻生太郎さん、オムツをしていた。晋さん…ここにいたんだね… [731544683]
