Excel VBA 質問スレ Part77

■ このスレッドは過去ログ倉庫に格納されています
2022/07/17(日) 07:07:35.59ID:tS4zKdphH
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

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

※前スレ
Excel VBA 質問スレ Part76
https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/09/20(火) 12:12:55.21ID:ZsS5zbqxM
>>702
Excelやめてなんのソフトを代替にしたいの?
2022/09/20(火) 14:20:11.48ID:E6px8L9o0
Excelを使わない事務仕事なんか無いだろうね
2022/09/20(火) 14:37:00.62ID:a8qXzxjlM
うちの会社は弥生会計をずっと使ってるぞ
2022/09/20(火) 17:24:35.64ID:Qfc1UF5x0
>>704
うちの会社の経理は紙の帳面だぞ
古代エジプト時代と変わらん
707デフォルトの名無しさん (スップ Sd3f-w3i5)
垢版 |
2022/09/20(火) 17:48:30.31ID:TuCax8r2d
>>706
パピルスと現代の紙とは異なる
髪はその頃と一緒だが
2022/09/20(火) 19:11:26.07ID:bPcXAKoD0
>>702
そんなに辛いなら転職したらいいんじゃね
2022/09/20(火) 20:36:15.87ID:E6px8L9o0
>>706
The 昭和
710デフォルトの名無しさん (ワッチョイ 9701-W3aP)
垢版 |
2022/09/20(火) 20:42:24.19ID:z6cIhAGk0
昭和の頃はすでにMZ-80とか有ったからね。
711デフォルトの名無しさん (ワッチョイ bf66-W3aP)
垢版 |
2022/09/20(火) 21:20:11.78ID:9PvWzZvw0
>>695
ありがとうございました。
それで徐々にコードを消していったら判明しました。
助かりました。
712デフォルトの名無しさん (ワッチョイ bf66-W3aP)
垢版 |
2022/09/20(火) 21:52:40.24ID:9PvWzZvw0
ユーザー定義型を配列に入れて使っているのですが、nameでソートしたり、
idでソートしたり、ageでソートしたり、その都度いろいろなプロパティでソートをしたいのです。
いままでは一旦二次元配列に入れてソートしていましたが、二次元配列のkeyposにあたるような
key elementsみたいに引数で渡す事はできないのでしょうか?

Sub Sort(ByRef User as Usertype,ByRef Property asここがわかりません)
なんというかworksheetオブジェクトとrangeオブジェクトみたいな関係みたいな

最悪プロパティ毎に違う名前のソート関数にすれば一応好きなプロパティの値でソートして返せるのですが

こんな感じで
713デフォルトの名無しさん (ワッチョイ d75f-E+l9)
垢版 |
2022/09/21(水) 15:26:19.55ID:IxQ+qaQI0
まずユーザー定義型をクラスにして、その後は IComparer インターフェイスでよしなに

Sorting of objects by their properties in VBA
https://scripts4all.eu/sorting-of-objects-by-their-properties-in-vba/

個人的にはここまでやるならVBA以外を検討するけどね
2022/09/21(水) 18:55:18.56ID:sEtFya3v0
別の方法としてADODBでメモリ上にテーブルを持つのもある
テーブルにぶち込んでしまえば、ソート、フィルター、その際の項目指定とかどうにでもなる
その分のメモリは必要だし、テーブルに対する出し入れの処理はあるので
配列の大きさやソートの頻度で使うかどうか考える
2022/09/21(水) 19:12:53.53ID:rqvHCnL40
>>713
そちらを見に行ってEnumの便利さに気付きました。
二次元配列のfor for ネストでやってるような処理、列が増えるほどだんだん
わからなくなりますが、enum使えば二次元配列の利便性も残しつつ
ユーザー定義型みたいに使えますね。
二次元配列の悪い所はだんだん自分が何を指定してるのかわからなくなるところだったので、
Enumと相性抜群ですね。

せっかく教えてもらった高度な手法は今回は見送りさせて頂いて、簡単なEnum&二次元配列でやってみようと思います。
感謝です。
2022/09/21(水) 20:40:31.74ID:NsHiQ7yd0
元データがどこにあって、それをソートしてどうしたいのかわからんが
普通に考えればエクセルシートに展開すれば良いんじゃないかと思うんだが
2022/09/22(木) 09:56:35.87ID:zJSl4eTM0
たぶんEXCELのソート機能を使わず自分でソートしたいんじゃね
718デフォルトの名無しさん (アウアウウー Sa5b-8eP5)
垢版 |
2022/09/22(木) 11:03:21.08ID:u9/ouAZsa
なぜ競プロではVBAの出番が無いのか
2022/09/22(木) 11:36:03.90ID:V4zanZlpM
遅いとか記述が冗長とかサーバーサイドで動かせないとかテクニカルな問題はいくらでもあるけど、
最大の理由は競プロやるような人はVBAなんか使いたがらないから
2022/09/22(木) 18:38:55.33ID:+Wi4osLB0
>>718
年末のAdvent of CodeはVBAだかExcelだけかでやってる人たまにいる
2022/09/23(金) 18:18:40.70ID:pQLCPMYW0
>>666
いいえて妙、ワロタw
2022/09/23(金) 19:12:26.46ID:27USMHor0
外注ってやっぱ高い?
2022/09/24(土) 01:17:31.15ID:mU6CwKwa0
素人にやらせると、見かけは安上がりだけど結果的に高く付くことが多い
724デフォルトの名無しさん (アウアウウー Sa43-Cd/v)
垢版 |
2022/09/24(土) 03:39:42.11ID:sis0YFKKa
何人で何ヵ月かかるかで金額が変わる
2022/09/24(土) 04:49:54.00ID:rKbJBgHg0
じゃあここのスレの方ならプロだから安心して頼むそうかな??
金額以外は
726デフォルトの名無しさん (ワッチョイ 124f-EPsI)
垢版 |
2022/09/24(土) 05:51:09.21ID:Bbc/0kyt0
RubyはそれだけではDBとなるものを持ってないからEXCELやACCESSのVBAとは比較できない。

もっとも、同様にDBを持たない言語と比較するなら
セーフティーでガベージコレクションの概念がなくスピードの速いRust辺りと比べるとゴミ同然
2022/09/24(土) 08:05:14.18ID:DeEi7HC40
エクスプローラーでフォルダーのプロパティを開いて
カスタマイズタブのところに「フォルダーの種類」が全般とかビデオとかになってるけど。
これをVBA/VBSで変更できる?
フォルダーのtypeを見ても全部「ファイル フォルダー」になる。
2022/09/24(土) 09:33:48.67ID:DeEi7HC40
>>727
レジストリ操作でやりたいことができたわ。
2022/09/24(土) 14:15:19.28ID:qbD2jrks0
お、おう、よかったな
730デフォルトの名無しさん (ワッチョイ d697-JEMU)
垢版 |
2022/09/25(日) 05:30:19.65ID:/q7OsFL50
一般ユーザがある列のセルを編集できないようにしたい。
でも、VBAの実行や、セル関数の結果は反映させたい。

https://support.microsoft.com/ja-jp/office/excel-%E3%81%A7%E3%82%BB%E3%83%AB%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B-b942fe92-5e87-0985-214b-9617b5b6d53f
↑セルのロック
という機能で試してみたがVBAマクロでの変更は許されなくてちょっと困っています。

セルに対してマウスイベントを発生させない。みたいなことを考えて、調べているが。
皆さんも悩まれる案件かと思います。もっと良い方法ないでしょうか?
731デフォルトの名無しさん (ワッチョイ 124f-EPsI)
垢版 |
2022/09/25(日) 06:18:07.93ID:jaItMug30
VBAん中でロック解除して
処理終了間際にロックし直しってんじゃだめなの?
2022/09/25(日) 07:44:30.90ID:dPa0+M2C0
SheetSelectionイベントとIntersect使うだけでは
2022/09/25(日) 09:13:59.54ID:nIE2ah490
お願いします。
検索をシートからではなくブックからをデフォルトにしたいです。
下記のサイトのコードを使い検索は出来るのですが、
結果表示ではなく( '<全てのシートの検索が終わったら、結果を表示します。> )、
検索値まで移動するにはどのようにコードを書けばいいか、ご教授願います。。
https://www.moug.net/tech/exvba/0040005.html
2022/09/25(日) 10:44:33.52ID:mk9vdghN0
>>730
worksheet_boforedoubleclick みたいなイベントプロシージャでできる
2022/09/25(日) 10:58:13.51ID:/q7OsFL50
ありがとうございました。
>>731の方法で簡単にできました。
VBA実行時に保護を解除して、終了時に再度保護をかけることで、
すんなりといけました。
736デフォルトの名無しさん (ワッチョイ 1e66-JEMU)
垢版 |
2022/09/28(水) 13:31:05.50ID:/kKDTdjO0
A1:10もしくはA100に入力された値を配列に格納しています。
動的配列です。
Select Case 文字列A
case A1:A100のどれかに一致するなら
case B1:B100のどれかに一致するなら

みたいな書き方って出来ないのでしょうか?
2022/09/28(水) 13:35:10.17ID:Rj0JQSes0
ifで条件書けよ
738デフォルトの名無しさん (ワッチョイ 124f-EPsI)
垢版 |
2022/09/28(水) 15:15:27.03ID:n6LgYqsE0
>>736
恐らく出来ない。
ただ、Select Case の後の文字列の部分をTrueとして、
A10:A100の中に該当文字列が有った場合、
Trueを返す関数を作成して、Case文の後ろに記載して
その条件に当たったかを判別して、Case文の下に
その条件下での処理を記載することは可能。

Caseにある条件のA10:A100にとある文字列が
有った場合とB10:B100にとある文字列が
有った場合と下に続く処理が同じなら、
先程言った関数の引数に対象範囲と検索対象文字列を
持たせておけばCase文を使う必要すら無い。
戻り値がTrueかFalseかをIf文で判断すれば良い。

その辺は実際の状況に合わせて上手く作ってくれ。
2022/09/28(水) 16:15:51.79ID:vR69ytL90
select caseにtrue??
知らなかったわ何それ??
2022/09/28(水) 18:26:27.19ID:Pxqx/4k10
Do
With
End With
Loop

よりも

With
Do
Loop
End With

の方が計算が早い(PCにとっては楽)と考えてよいでしょうか
741デフォルトの名無しさん (ワッチョイ 12c7-qdT0)
垢版 |
2022/09/28(水) 19:01:46.26ID:8l5UWazH0
>>736
こんな感じ?
https://i.imgur.com/wuSExDf.png
2022/09/28(水) 19:28:29.47ID:Aad51sjLa
>>736
Private Function F(R As RangeRange, S As String) As Boolean
Dim C As Range
For Each C In R
If C.Value = S Then
F = True
Exit Function
End If
Next
F = False
End Function
...
Select Case True
Case F(Range("A1:100"), 文字列A)
...
Case F(Range("B1:100"), 文字列A)
...
Case ...
End Select
2022/09/28(水) 19:32:38.30ID:Aad51sjLa
>>740
たいていのプログラムだと有意な差はでないから気にせずに作りやすい方で作れ
有意な差がでそうならまず測定
744デフォルトの名無しさん (ワッチョイ 124f-EPsI)
垢版 |
2022/09/28(水) 19:38:38.93ID:n6LgYqsE0
>>740
これも恐らくの話で申し訳ないけど、
元々Withで設定されているインスタンスが既に生成されているものであれば、その格納アドレス先を読むだけなので
Withがループの外にあっても中にあっても処理コストは変わらないと思う。
変わったとしても繰り返し実行での誤差と見分けが付かない程度と思われる。

逆にインスタンスが生成されておらず、With New 〜 のようにWithでインスタンスを生成する場合は
ヒープエリアのメモリにそのインスタンスを展開するため、Withがループの外に有った方が処理コストは低くて済む。


・・・はず。
745デフォルトの名無しさん (アウアウウー Sa43-Cd/v)
垢版 |
2022/09/28(水) 19:40:24.19ID:2tCqxjcra
とりっきー
2022/09/28(水) 19:51:29.67ID:30UfjVhGd
>>739

ケツの穴をガバガバにして全通しするいやらしい関数だよ

Select Case True
Case オナラ
よし通れ
Case うんこ
よし通れ
End Select
2022/09/28(水) 21:06:15.14ID:Apn5XmOg0
>>742
結局If文でラップしてるだけじゃん
2022/09/28(水) 21:06:47.83ID:vR69ytL90
>>746
汚ねえな。。
こっちは夕食のカレー食ってんだぞ。。
2022/09/28(水) 21:20:17.00ID:0sCmeNkX0
>>747
If 文でラップとか意味わからんこと言われてもw
2022/09/29(木) 00:27:52.00ID:tkXe+LzA0
ヘイヘイヘイ~!
もしも~オブジェクト変数でぇ~宣言したぁ~値がぁ🎵
ラップ調
751デフォルトの名無しさん (ワッチョイ 4bda-Cd/v)
垢版 |
2022/09/29(木) 01:53:20.13ID:I3DbECBa0
ラップのセンスはいまいちだね
2022/09/30(金) 17:41:05.63ID:8DTKPQSA0
>>738-742
ありがとうございました。
変数Strの中の値が配列Listのどれかと一致するかということだったので、そのCountIFがまさにその通りでした。
それようの関数書いてSelect case True使わせていただきます。
753デフォルトの名無しさん (ワッチョイ 124f-EPsI)
垢版 |
2022/09/30(金) 21:34:23.42ID:RGIc4eHD0
>>752
Select Case True の話持ち出しといてなんだけど
最初のCase の条件に引っ掛かってその下の処理を実行した後でも
次のCaseの条件に引っかかったらその下の処理も実行するからそれだけは気をつけてね
2022/09/30(金) 22:06:41.52ID:ZYIMeitZd
>>753
そんなことないのでは?と思って試したけどやっぱりそんなことなかったんだが
普通はcaseの条件の中に入ったら次のステップはEnd Selectにいかないか?
Dim ncount As Long
ncount = 0
Select Case True
Case 0 = 0
ncount = ncount + 1
Case 1 = 1
ncount = ncount + 1
Case 2 = 2
ncount = ncount + 1
End Select
Debug.Print ncount
これは1になるんだが
2022/09/30(金) 22:32:22.37ID:ysasb+xw0
>>754
多分breakいれなきゃいけないCとかと勘違いしてるんだと思う
2022/09/30(金) 22:50:53.72ID:oHn8O8ll0
Select みたいな文で複数の選択肢が条件満たした場合に複数の選択肢を実行する言語って PowerShell ぐらいしか知らんけど他にもあるんだろうか?
2022/09/30(金) 23:04:52.77ID:FO5tGPcx0
>>756
cとかそうだったはずだし、たぶん複数実行するほうが多数派なんじゃね
c#も、文法上は複数実行することになってるけど、break書いて抜けないと怒られるという
よくわからんことになってるし
2022/09/30(金) 23:17:37.16ID:2no5G0l30
CもそうだしJavaもそうだしPythonもそうだしJavaScriptもそう
2022/09/30(金) 23:34:30.49ID:oHn8O8ll0
>>757-758
C/C++ はそもそも複数選択肢が条件満たすことはないよ(たいていの処理系でコンパイルエラーになる)
fall through と勘違いしてるでしょ
2022/09/30(金) 23:56:30.92ID:2no5G0l30
>>759
ああそうだ。勘違いです
申し訳ない
761デフォルトの名無しさん (アウアウウー Sa27-VbfW)
垢版 |
2022/10/01(土) 00:36:40.48ID:fyOJn4KOa
>>754
これってコンパイル時に畳み込みで定数化されて同一のラベルが複数あってエラーになるとかしないのか
762デフォルトの名無しさん (スップ Sd1f-XcTz)
垢版 |
2022/10/01(土) 01:42:48.83ID:a0drtoBbd
>>761
馬鹿にはそう思えるのだろ
2022/10/01(土) 01:48:20.03ID:AX86MJ2c0
>>759
ああ、まさにfall throughだった

つかそうなると、fall throughじゃなくて
複数一致したら複数ブロック実行するような言語って知らないな
PowerShellってそうなのか?
2022/10/01(土) 01:53:07.95ID:AX86MJ2c0
>>761
VBAのCaseは定数以外にいろいろ書けるから
2022/10/01(土) 04:50:29.38ID:igg+s+OR0
>>763
複数一致
同じ条件を複数回追加すれば、それらすべてがトリガーされます。
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-switch?view=powershell-7.2
766デフォルトの名無しさん (ワッチョイ ff4f-PeWp)
垢版 |
2022/10/01(土) 07:29:29.38ID:66c8QTBM0
みんないろんな言語やってるのね
2022/10/01(土) 07:40:45.91ID:BiebxrBw0
他言語やってる人が暇潰しに見に来る場所って印象があるよね
質問も簡単だし答えるほうに余裕があるので他スレと比べると寛容というかギスギスしてない
768デフォルトの名無しさん (スププ Sd1f-z20m)
垢版 |
2022/10/01(土) 13:08:15.88ID:sQwPc1U3d
Excelでデータベースを作り、各レコード?事に
〜月〜日 〜
〜月〜日 〜
みたいなログを表示したいのですがどの様にすればできるのか教えていただけませんか?
2022/10/01(土) 13:10:34.86ID:PSWCeSJW0
キーボードで打ち込め
2022/10/01(土) 13:17:44.94ID:GEkLNCKa0
>>768
入門書買って自分で勉強したらどうかな
あ、EXCELが入っているPCを持ってないと無理かも
771デフォルトの名無しさん (スププ Sd1f-z20m)
垢版 |
2022/10/01(土) 13:31:32.89ID:sQwPc1U3d
テキストボックスにセルの値を参照するとか、繰り返しの処理とかlookup関数とかindexとmatch関数はわかります
あとはこのリストが欲しいです
2022/10/01(土) 13:34:23.97ID:mp76wcbAa
MSのサイトを見ればいいだけじゃね?
2022/10/01(土) 14:11:06.32ID:m6/aGG23M
>>771
漠然としすぎていて適切に回答できない
書式設定のこと?ファイル出力?
どこにそれを表示したいの?
2022/10/01(土) 14:50:47.98ID:ozHkf13K0
もう自分で勉強してくれって。
775デフォルトの名無しさん (ワッチョイ ff4f-PeWp)
垢版 |
2022/10/01(土) 15:38:51.00ID:66c8QTBM0
>>768
そもそもそのログの日付とやらはどこから持ってくるつもりなのか
776デフォルトの名無しさん (ワッチョイ ff3e-z20m)
垢版 |
2022/10/01(土) 15:39:00.83ID:05rfSfda0
>>773
すみません
VBAのユーザーフォームで検索用のテキストボックスを作り、
検索結果に該当したレコード(行)を選択(抽出)?して
それをテキストボックス2やリストボックスに表示したいです

〜番(ID)

名前
テキストボックス(リストボックス)
〜月〜日 何をした

みたいな表示画面が作りたいです
777デフォルトの名無しさん (ワッチョイ ff3e-z20m)
垢版 |
2022/10/01(土) 15:40:48.76ID:05rfSfda0
>>775
〜番号 名前 〜 〜 〜
の様な感じで列に追加していくやり方で作ろうかなと考えています
778デフォルトの名無しさん (ブーイモ MM7f-FQI2)
垢版 |
2022/10/01(土) 16:48:39.94ID:vnBH5ihbM
>>776
まずワークシート上でlookup,index,matchで検索、表示できるものを作る。
それからフォームのテキストボックスに入れた値をワークシートの検索用のセルに書き込み、結果をフォーム上のテキストボックス、リストボックスに書き込むVBAを作る。
779デフォルトの名無しさん (ワッチョイ ff3e-z20m)
垢版 |
2022/10/01(土) 16:50:40.38ID:05rfSfda0
>>778
ありがとうございます
まずはそこからですよね
2022/10/01(土) 16:52:55.19ID:GEkLNCKa0
どこでつまずいているかを書かないで答えだけほしいとか言われてもね
2022/10/01(土) 16:55:41.93ID:HuJ3UkiEd
>>768
こんなんVBAでもなんでもなくシステムを作りたいっていってるようなもんでしょ
金払って作ってもらえよ
2022/10/01(土) 17:09:04.65ID:AX86MJ2c0
>>768
なぜそれをエクセルでやりたいと思ったのか

今のレベルだと一から勉強レベルだと思えるが
c#かせめてVB.Net覚えたほうがいいんじゃない
2022/10/01(土) 18:15:10.78ID:BiebxrBw0
セルの内容(日付のところは文字列型(頭にアポストロフィ)で入れてる)
ID 名前 日付 イベント
1 名前1 2012年3月14日 Aをした
2 名前2 2012年3月15日 Bをした
3 名前3 2012年3月16日 Cをした
4 名前4 2012年3月17日 Dをした
5 名前5 2012年3月18日 Eをした
6 名前6 2012年3月19日 Fをした

※Sheet1のマクロ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With UserForm1
y = ActiveCell.Row
.TextBox1 = Cells(y, 1)
.TextBox2 = Cells(y, 2)
.TextBox3 = Cells(y, 3) + vbNewLine + Cells(y, 4)
End With
End Sub

フォーム(UserForm1)を作って下記コントロールを配置
TextBox,TextBox1,TextBox2,TextBox3(Multiline=true),CommandButton1

UserForm1のマクロ
Private Sub CommandButton1_Click()
Sheets(1).Range("A1").AutoFilter 2, "*" & UserForm1.TextBox.Text & "*"
End Sub

ファイル開くイベントとかボタン作って下記マクロでフォームを表示
UserForm1.Show vbModeless
聞いた限りではこんなのしか思い浮かばない
2022/10/01(土) 18:31:08.84ID:oCrNNmAI0
VBAのPicture.Insertでリンク貼付けさせないようにクリップボード利用でPasteで貼り付けてみたら画像が異常に重くなりすぎて使い物にならない…。
おとなしくShapes.addPicture使うしかない?
2022/10/01(土) 18:49:59.64ID:PeKIyBQF0
>>768
Listobject作ってListrowsを都度登録する仕組みを作って目的のListrows()を呼び出すユーザーフォームを作ればいいんじゃないっすかね。
2022/10/01(土) 18:55:31.78ID:HuJ3UkiEd
まず質問者は何ができて何ができないのか気になるが何もできないんだろうなと推測してる
なのでここで丸投げしてバカなお人よしに作ってもらおうとしてるんだろ
2022/10/01(土) 23:20:55.43ID:BiebxrBw0
猪木が死んだ、時代が流れていく
思えばPCとの付き合いももう40年か
戦時中はと口癖のように言っていたジジイ共も消えてアマチュア無線なみにニッチな趣味だったPCが主流になるとは不思議なものだ
2022/10/02(日) 07:27:45.20ID:ySn/5a2I0
>>784
もとの画像が大きいんじゃね、表示用の画像を別途つくってから貼り付けてみ
789デフォルトの名無しさん (ワッチョイ ff3e-z20m)
垢版 |
2022/10/02(日) 13:27:44.47ID:TlawqFoR0
>>783
わざわざありがとうございます
助かりました
790デフォルトの名無しさん (ワッチョイ c3cd-vqPj)
垢版 |
2022/10/02(日) 15:47:28.98ID:DdgukWIZ0
>>787
おいおいいつだよって思ったら昨日かよ

>>786
それでいいと思うんだよな
それが社会の基本だし、暇な元事務のNEETはそれで快楽を得つつ勉強になり、
転職への自信になるだろう
791デフォルトの名無しさん (ワッチョイ ff3e-z20m)
垢版 |
2022/10/02(日) 20:54:31.26ID:TlawqFoR0
VBAは作業を登録して自動化するくらいで覚えておいた方がいいですよね
2022/10/03(月) 06:16:19.93ID:S2WAje4f0
>>788
800kの画像でやってみたけど15Mぐらいまで巨大化してしまう
やはりAddPictureで代用してみる
2022/10/03(月) 07:27:24.16ID:4wRZXMmm0
VBEに書いたコードの整列っていうかコードを整えるっていうか自動インデントっていうかそんなショートカットキーがあったと思うけどなんだっけ?
2022/10/03(月) 17:56:19.40ID:M1bZx+HZ0
タブ
795デフォルトの名無しさん (ワッチョイ ff4f-PeWp)
垢版 |
2022/10/03(月) 20:58:11.99ID:FDmFS1zQ0
>>791
変な枷付けること考えんと
好きに作っていいんやで
2022/10/04(火) 15:00:55.06ID:pLalriKq0
イベントで質問

余所で作ったエクセルにVBAで改造加えてるんだけど
1マス入力だけするSheetにActiveXのコマンドボタン付けたら
Worksheet_SelectionChange
が発生しなくなった

コマンドボタン押したイベントは拾ってるので
EnableEventsがFalseってわけじゃない(イミディエイトで確認済み)

デザインモードを解除してもWorksheet_SelectionChangeイベントが起きないので
しょうが無いからまた一から作り直したんだが
この現象って頻発するもの?
ググってもOfficeの修復かEnableEventsしか解決策が出てこない
2022/10/04(火) 15:54:59.32ID:TDYI1fTGd
>>792
Sub Macro1()
ActiveSheet.Pictures.Insert "C:\Work\Sample1.jpg"
End Sub



これで400KBのpngで試してみたけど
なぜかxlsmファイルのサイズは15KB
何か別の要因とか
2022/10/04(火) 19:28:07.31ID:uOFwOuxi0
>>796
そりゃエクセルを改造したら駄目だろ
2022/10/04(火) 19:47:41.77ID:o+JurUyd0
>>792
オプションの詳細設定-イメージのサイズと画質 ってどうなってる?
800デフォルトの名無しさん (ワッチョイ 6f66-vqPj)
垢版 |
2022/10/04(火) 21:08:36.46ID:vyetwO+c0
Dim ar(2) As Variant
ar(0) = 1
ar(1) = 2
ar(2) = Split("1,2,3,4,5", ",")
Dim i
For i = 0 To UBound(ar(2))
ar(2)(i) = CLng(ar(2)(i))
Next i

splitで作ったジャグ配列の中身をlong型に変換したいです。
variant変数に一度入ったらもう無理ですか?
一応他の変数に入れる事で型変換には成功するのですが。
余計な変数を二つも用意してstringで作成されたのを一時的なvariant型ノーマル配列に
おさめてmそのあとで本当に使いたい配列のジャグ配列に入れていくというのが
どうも汚い感じで腑におちません。
アドバイスもらえると助かります。
801デフォルトの名無しさん (ワッチョイ ff4f-PeWp)
垢版 |
2022/10/04(火) 22:26:54.77ID:cce3s7590
>>800
出来ません
諦めてください
802800 (ワッチョイ 6f66-vqPj)
垢版 |
2022/10/04(火) 22:43:48.69ID:vyetwO+c0
>>801
ありがとうございます。
ジャグ配列はRedim出来ないのがデメリットですね。
動的な配列の中にジャグ配列なのですが、なんとか先に不確定な親配列の中にある
不確定な数のジャグ配列を一時的なLong型配列に作って
そこからさらにsplitなしでなんとか作ろうとあれこれしてたら
よっぽど>>800の方法の方が処理がわかりやすくなってしまい徒労に終わりました。

諦めます。踏ん切りつきました。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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