Excel VBA 質問スレ Part79(ワッチョイあり)at TECH
Excel VBA 質問スレ Part79(ワッチョイあり) - 暇つぶし2ch2:デフォルトの名無しさん
23/01/28 12:23:13.98 +RlrKkV4M.net
Excel VBA 質問スレ Part79
スレリンク(tech板)

3:デフォルトの名無しさん
23/01/28 12:40:41.67 NqcfPhRT0.net
>>1


4:デフォルトの名無しさん
23/01/28 15:04:00.65 uWWFw1N+a.net
1gj

5:デフォルトの名無しさん
23/01/28 15:34:06.67 YZOoYTJxM.net
わかった気で勘違いしている馬鹿の間違いや馬鹿さ加減を指摘するとスレが荒れるので無視しましょう
最近では零細企業のあれです

6:デフォルトの名無しさん
23/01/28 21:43:50.55 cCrz+GwL0.net
エクセルでスクレイピングはできそうだけどね。

7:デフォルトの名無しさん
23/01/28 22:05:54.66 cCrz+GwL0.net
分かりづらい質問だな。
「エクセルファイルのシートにボタンを置いて、それをクリックしたら
あるアプリを立ち上げたい。これが可能ですか?」
ということかな。答えは可能。

8:デフォルトの名無しさん (ワッチョイ 8379-jh2e)
23/01/29 01:25:58.33 R24XfIrD0.net
>>6
javascriptに丸投げする形だからそっちの知識も必要になるけどね
IE時代はVB単体で完結できたのに面倒な時代になったな!

9:デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
23/01/29 09:15:12.97 KzySl/Bm0.net
httpリクエストとか、api接続とか、一般的な表計算の操作が中心の
エクセルユーザーの範囲外なんだけど。
ただ、ExcelでなくてGoogleスプレッドシートはapi接続に相性が良さそう。
クラウドにアプリがあるっていうのは、それだけ優位な気がする。
会社での表計算もほとんど、ExcelでなくてGoogleスプレッドシート使うようになってきて、
今Excelとして残っているのは、過去開発されたマクロで運用する箇所があるから。
こんなことになるとは数年前には思っていなかった。

10:デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
23/01/29 09:19:56.22 KzySl/Bm0.net
VBAとGASどっちもできるようになるといいね。

11:デフォルトの名無しさん
23/01/29 10:26:38.51 nRF7bUNu0.net
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を番号前に追加するにはどうすればよいでしょうか。

12:デフォルトの名無しさん
23/01/29 10:28:09.50 nRF7bUNu0.net
続き
コードはこれなのですが
どうかよろしくお願いします
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:デフォルトの名無しさん
23/01/29 11:46:37.73 WTXbQyE20.net
>>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

14:デフォルトの名無しさん (ワッチョイ db10-+rQD)
23/01/29 12:05:26.37 nRF7bUNu0.net
>>13
ありがとうございます!!
希望通りに動きました。

助かりました。すごく嬉しいです。

15:デフォルトの名無しさん (オッペケ Sr3b-O9ZV)
23/01/29 14:40:20.12 cIjm/G+Or.net
>>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.

16:デフォルトの名無しさん (ワッチョイ 5fda-2biX)
23/01/29 15:11:19.34 GtadNWQm0.net
looks like 〇
sounds like ×

17:デフォルトの名無しさん
23/01/29 15:15:30.68 KzySl/Bm0.net
なんで英訳

18:デフォルトの名無しさん
23/01/29 15:18:51.71 cIjm/G+Or.net
ChatGPT

19:デフォルトの名無しさん
23/01/29 16:52:45.66 wtQ124Fo0.net
こっちも零細企業荒らしがいるのか

20:デフォルトの名無しさん
23/01/29 18:16:29.96 OkpG00lK0.net
クラスモジュールを使っていく勉強しています。
ClassAのプロパティとしてClassB,ClassCから作るオブジェクトを持たせる事で階層型に
整理できるようですが、これも正しいオブジェクト指向の形なのでしょうか?
メインコードからObjA.ObjB.プロパティAみたいに呼び出せるのです。
ObjAは例えば初期値というカテゴリ
ObjBは初期値の中の日付に関連するもの
ObjCは初期値の中の料金に関するもの
ObjA.の時点で候補が出てくるのも便利です。なんだかただの変数みたいに使ってる気もしますが。
そしてJavaでいうところのメソッドの継承ですが、親側ObjAのメソッドと同じ名前のメソッドを子側ObjBに作り、
中身は親側ObjAのメソッドを呼び出すだけとすれば継承と同じ動作をするような気がします。
子側クラス内で親側クラスのインスタンスを作成しているので、循環しているような気持ち悪さはありますが、内部はメインコードからは見えませんし。
オーバーライド?というのも親側ObjA側のメソッドを呼ばずに子側のObjBのメソッドに処理を好きなように書けばいいだけと思いました。
そして関数型にありがちな関連性のない関数群Module1とかもClassMultiにプロパティのないクラスとして書いて、
オブジェクト化すると、マルチに活躍する便利屋みたいな存在として、これもオブジェクト指向な気がしてきました。
しかも先ほどの継承みたいに別のクラスから同名メソッドで呼ばせれば、同じメソッドをクラス毎に書く必要もありません。
メイン側から見るとオブジェクト指向そのものにも思えます。
オブジェクト指向を人間や動物に例えると、とてもわかりづらかったのですが、
ネームタグみたいな説明をしているサイトから、単なる整理整頓の為の思考技術みたいに考えて。
見せかけのオブジェクト指向を目指してみると、本物と大差ない気がしてきているのですが間違っていますか?
このままなんちゃってオブジェクト指向で進むことをお勧めできない理由がありましたら教えてください。
CallByNameとかImplementsとか勉強すればもっと本物に近づくような気がしています。

21:デフォルトの名無しさん
23/01/29 21:58:40.35 TymAj0Je0.net
Excelスレでも荒らしてるヤツがいるなここ

22:デフォルトの名無しさん
23/01/29 23:11:48.83 QtxW6Mg40.net
ワッチョイ付きに誘導されますた。
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:デフォルトの名無しさん
23/01/29 23:33:48.49 5iJXY4pQ0.net
>>22
LSETじゃダメなのか?

24:デフォルトの名無しさん
23/01/30 03:06:05.93 yj3XWjhj0.net
>>23
できました

25:デフォルトの名無しさん (ワッチョイ 3619-GWjr)
23/01/30 08:01:49.37 1uz9zngm0.net
>>20
> 子側クラス内で親側クラスのインスタンスを作成しているので、循環しているような気持ち悪さはありますが、内部はメインコードからは見えませんし。

堅牢性から考えるとVBAに限らずここがまずいかな
子クラスCで親クラスAを生成すると言う事は、
もし同じような親クラスDを作成して同じ子クラスを
使おうとするとその中で親クラスAを作成することが
前提となってしまい、親クラスDでは使えない場合が出てくる。

子クラスではあくまで子クラスの役割を
与えるべきであって、もし親クラスの機能を
使いたいなら直接子クラスの中で生成するのではなく、
CallByNameやインターフェースを使用するかして
処理を移譲させるようにした方がいいと思うよ。

26:デフォルトの名無しさん (スププ Sdba-5IHC)
23/01/30 09:39:47.20 e2a+Lyz1d.net
CSVファイルって、Excelで開いて編集して保存すると文字コードの問題でデータの後ろに半角スペースが入ることがあるのでしょうか?

27:デフォルトの名無しさん (スププ Sdba-5IHC)
23/01/30 09:40:56.25 e2a+Lyz1d.net
元々半角スペース入ってなかったのにデータをかきかえたりすると文字コードがShiftJISではない場合、文字化けして半角スペースが入るのでしょうか?

28:デフォルトの名無しさん
23/01/30 10:51:56.77 Vha856Nid.net
ここはVBAスレなのでスレチでは?
Excel総合相談所 144
スレリンク(software板)

29:デフォルトの名無しさん
23/01/30 11:54:01.10 beImLHJmr.net
>>26
URLリンク(www.officepro.jp)
これとか?
セルの表示形式の問題?

30:デフォルトの名無しさん (スププ Sdba-5IHC)
23/01/30 15:20:40.00 e2a+Lyz1d.net
>>29
たぶん、それだわ
ありがとう

31:デフォルトの名無しさん
23/01/30 15:57:22.13 dCL8a0ux0.net
>>29
その記事、余白と空白文字(半角スペース)を同一視してるのが気持ち悪いな

32:デフォルトの名無しさん
23/01/30 19:11:31.03 uxYUj7Ria.net
>>31
そうは言ってもExcelだと余白を空けるのに空白しか使えないから仕方なくね?

33:デフォルトの名無しさん
23/01/30 21:40:04.89 dCL8a0ux0.net
>>32
正しい余白ならインデントってのがあるが
CSVにしたらどうせ書式はなくなるのに、書式を空白で表そうとするEXCELが気持ち悪いのか
そのくせインデントは無視するという

34:デフォルトの名無しさん
23/01/30 22:17:38.88 uC26F0Aa0.net
>>33
なるほどインデントは忘れてたわw


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch