Excel VBA 質問スレ Part70

■ このスレッドは過去ログ倉庫に格納されています
2021/03/18(木) 22:08:43.71ID:jtngtgXU0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/04/12(月) 15:02:08.77ID:3rdXwFWw0
>>215
死ねよ
2021/04/12(月) 17:28:11.89ID:H+Y94TUB0
バツルックアップじゃないの??
事務のオバチャンにそう聞いたけど
2021/04/12(月) 19:56:57.26ID:UqVxKohHa
とんこつととんかつの違いはなんですか

そういう質問をうけたときがあったなぁ
2021/04/12(月) 20:02:02.68ID:HPbAbv3kH
とんかつ
とんかち
2021/04/12(月) 22:40:18.25ID:6cC4Cv/z0
マジレスするとExtraやExtendのX
2021/04/13(火) 12:25:16.60ID:XNPY+hAHa
ガントチャートの欠点は
遅れの検出がおそいだよね
期限が過ぎないと遅れることがわからない

これでは手遅れですよ
2021/04/13(火) 12:40:10.17ID:5GJi7nDK0
>>221
あ、そうなんだ
EXCELの数式だったら予定線より実績線が
二日くらい前になったらワーニングで黄色、
予定線以降になったら赤とかにしとけば
ワーニングに入った時点でリカバリ案とか
会議で話し合えるのにね。
2021/04/13(火) 12:54:32.74ID:mzxN/X4qM
期限過ぎる前に進捗率がヤバくなればリスケで仕切り直し
いつまで経っても期限が過ぎることは無い
2021/04/13(火) 13:24:50.99ID:5GJi7nDK0
>>223
本当にありそうで怖いわ!
2021/04/13(火) 17:28:26.59ID:XNPY+hAHa
開始日でだいたいわかる
おおくのばあいはまともにスタート出来てないからw

人がいない、資料がそろってない、仕様がきまってない
だも
スタートできなきゃゴールするわけがない
2021/04/13(火) 20:57:49.87ID:5GJi7nDK0
>>225
開発あるあるだなw
そうか、確かにVBAだと後ろが伸びるだけになるかも知れないね。
他のある程度大きいシステムになると
・客先から上がって来ない要件定義
・客先だから強く言えないチームのリーダー
・差し迫る納期
・焦りが出てきてイラつく俺ら。それを宥めるリーダー

この辺からが違うところかな

・システム間の連携や他システムとの連携のため伸ばせない納期
・更に焦る俺ら。宥めきれなくなるリーダー
・上がって来る要件定義、血眼で設計書を作る俺ら
・時間がなくて客先との対面レビューのはずが回覧レビューになる設計書
・PGしながら単体テストケース作りながら単位テストしながらエビデンス取る俺ら
・超える納期、無くなる休日、伸びまくる勤務時間、倒れる仲間
・覆る要件定義、設計種ミス発覚、他の嶋から助っ人入るも焼石に水、発狂する助っ人
・何とかSTまで終了。飛ばされるリーダー、バグだらけの成果物、昇天する俺ら

最悪こんな感じかな。
227デフォルトの名無しさん (ブーイモ MM93-uTt7)
垢版 |
2021/04/13(火) 21:11:48.26ID:QqfAiqTvM
>>225
開発あるあるだなw
そうか、確かにVBAだと後ろが伸びるだけになるかも知れないね。
他のある程度大きいシステムになると
・客先から上がって来ない要件定義
・客先だから強く言えないチームのリーダー
・差し迫る納期
・焦りが出てきてイラつく俺ら。それを宥めるリーダー

この辺からが違うところかな

・システム間の連携や他システムとの連携のため伸ばせない納期
・更に焦る俺ら。宥めきれなくなるリーダー
・上がって来る要件定義、血眼で設計書を作る俺ら
・時間がなくて客先との対面レビューのはずが回覧レビューになる設計書
・PGしながら単体テストケース作りながら単位テストしながらエビデンス取る俺ら
・超える納期、無くなる休日、伸びまくる勤務時間、倒れる仲間
・覆る要件定義、設計種ミス発覚、他の嶋から助っ人入るも焼石に水、発狂する助っ人
・何とかSTまで終了。飛ばされるリーダー、ハゲだらけの社員、昇天する俺ら

最悪こんな感じかな。
2021/04/13(火) 21:15:01.18ID:5GJi7nDK0
うーん、何か接続がおかしいのかな
他のスレに誤爆になってこのスレでも2回載ってしまった
すまんこ
229デフォルトの名無しさん (ブーイモ MM93-uTt7)
垢版 |
2021/04/13(火) 21:34:03.40ID:QqfAiqTvM
うーん、何か接続がおかしいのかな
他のスレに誤爆になってこのスレでも2回載ってしまった
おまんこ
2021/04/13(火) 21:38:41.78ID:5GJi7nDK0
>>229
おいw
2021/04/14(水) 07:51:01.50ID:EILUghab0
ウンコマクロ
2021/04/14(水) 19:17:03.44ID:hXL/FQf4a
まあ。そんなんだ
2021/04/14(水) 19:29:05.82ID:jCprHRHj0
EXCEL VBAは好きだし凄く肌に合ってると思うけど、案件単価がちょっとなぁ
2021/04/14(水) 19:47:31.92ID:kMGrei9fM
EXCEL VBAが肌に合う様な奴が案件単価とか生意気。
235デフォルトの名無しさん (ワッチョイ 6268-/CMm)
垢版 |
2021/04/14(水) 20:39:37.17ID:E4KyUeCU0
一般事務が仕事中に覚える→結婚・退職→主婦の傍ら有り余る時間で糞みたいな単価で受注
まぁ、悪い事でもなんでもないんだけどね、うん
2021/04/14(水) 20:45:27.19ID:ijCB3EYv0
あたまが鉛のようにおもい
2021/04/14(水) 20:47:48.07ID:cTgQ8ZPt0
1時間で作れるような案件が高いわけない
2021/04/14(水) 20:52:06.82ID:ijCB3EYv0
冷戦時代日本がロケットのことでロシアに教えをこうたとき
一言ジャイロに問題があるといって
100億ぐらいもって去っていったそうな
239デフォルトの名無しさん (ワッチョイ 43de-iqg9)
垢版 |
2021/04/14(水) 21:21:01.64ID:tTtaKpUk0
VBA Seleniumdriveで
driver.ExecuteScript ("XXXX")
でonclickをクリックするとモーダルコンテンツが表示されます。
コンテンツ内のXpathをクリックしてもボタンを押すことが出来ないんですが、
SendKeys "{TAB}", Trueで該当のボタンをクリックする以外に
要素を指定してクリックする方法ってありますか?
2021/04/14(水) 22:43:58.06ID:bsTwIiw80
下記「やりたいこと」のようにhtmlから抽出したいのですが、
下記「前提」があって、どうしたらいいのか分かりません。
なにか方法ありますでしょうか?

--- やりたいこと ---
下記htmlにおいて、"ヘッダ"のすぐ次に存在しているtableタグ内の項目1,2、要素1,2を取得したい

--- 前提 ---
@"ヘッダ"は特定できる
Atableは特定できない
 ・tableのidや要素から特定できない
 ・tableの数から特定できない(取得したいtableが何個目なのか分からない)

--- html例 ---
 ・・・
<h2>ヘッダ</h2>
<table>
<tr><th>項目1</th><th>項目2</th></tr>
<tr><td>要素1</td><td>要素2</td></tr>
</table>
 ・・・

--- プログラム例(Microsoft Internet Controls、Microsoft HTML Object Libraryは参照設定済み) ---
Dim objIE As New InternetExplorer
objIE.Navigate "http://***";
Do While objIE.Busy = True Or objIE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
For Each obj In objIE.Document.getElementsByTagName("h2")
If InStr(obj.innerText, "ヘッダ") > 0 Then  ヘッダは見つけることができるが、この後どうしたらいいのか・・・
End If
Next obj
2021/04/14(水) 23:08:27.54ID:mIFbuL/UH
>>240
<HTML>タグか<BODY>タグで全体のソースを取り込んで、あとは文字列として処理
2021/04/15(木) 01:36:52.92ID:E+h/Uieza
VBAでやる意味あんの?
2021/04/15(木) 02:03:12.55ID:Un6DIa9Z0
>>241>>242
ありがとうです。
もう少し考えます。。
2021/04/15(木) 06:20:29.14ID:5JoH8OD60
>>240
jQuery なら、2重ループで、

<h2 id="id-1">ヘッダ</h2>
<table><tbody>
<tr><th>項目1</th><th>項目2</th></tr>
<tr><td>要素1</td><td>要素2</td></tr>
</tbody></table>
<table><tbody>
<tr><th>項目3</th><th>項目4</th></tr>
<tr><td>要素3</td><td>要素4</td></tr>
</tbody></table>

$( function ( ) {
let table = $( '#id-1' ).next( ); //次の兄弟要素

// table > tbody > tr を、1行ずつ処理する
$( table ).children( ).children( ).each( function ( index, row ) {
// 1列ずつ処理する
$( row ).children( ).each( function ( index_2, col ) {
console.log( `${ index }行 ${ index_2 }列`, col.textContent );
} );
} );
} );

出力
0行 0列 項目1
0行 1列 項目2
1行 0列 要素1
1行 1列 要素2
2021/04/15(木) 06:53:10.31ID:r2UxJQfIM
>>244
VBAの構文に変換してくれ
2021/04/15(木) 11:25:51.10ID:c60l0/FJ0
>>244
VBAに対してHTMLの集約やメソッドチェーンが使える言語をぶつけてくるのは卑怯だと思うの
2021/04/15(木) 12:05:58.59ID:nvZZu+k0a
スクリプトぐらいなら良くねの
2021/04/15(木) 12:18:14.12ID:ivOr0/mk0
>>244
結局総当りか
まあそうだよね
249デフォルトの名無しさん (ワッチョイ c207-iqg9)
垢版 |
2021/04/15(木) 16:07:09.80ID:MUSbI6ab0
質問です。
今は下記のようなコードとvlookupを組み合わせて連続で請求書を印刷しています。
一つのジョブにまとめて印刷するにはどのようにしたらよいでしょうか?

Sub 連続印刷()
Dim i As Integer
Dim LastRow As Integer

Worksheets("請求書").Select

With Worksheets("データ")

For i = 3 To 5
Range("d1").Value = .Range("A" & i).Value
Range("n1").Value = .Range("A" & i + 1).Value
i = i + 1
ActiveSheet.PrintOut
Next
End With
End Sub
2021/04/15(木) 17:29:43.21ID:c2wrGnlaM
>>249
vlookup部分もVBA化して組入れれば一つのJOBに出来るよ
2021/04/15(木) 17:46:43.97ID:BAka9uDVM
>>249
3つぐらいなら請求書シートを必要分コピーして各々値を入れて複数シートを一気に印刷するしか思い付かない
2021/04/15(木) 17:53:55.45ID:c2wrGnlaM
請求書シートも複数有るなら、それをFor Nextで繰り返すぐらいだろうね
2021/04/15(木) 19:09:26.62ID:pI0uqt930
UI Automationの質問てここでいいの?
VBAでゆっくりムービーメーカー4のキャラクター切り替えをやりたいんだけど、
うまくいかず。
キー操作をWindowsに送ることでごまかしている。

”追加してシーク”ボタンを押すだけならこんな感じでできるんだけど、

Set iCnd = uiAuto.CreatePropertyCondition(UIA_NamePropertyId, "追加してシーク")
Set elmYukkuri_Button = elmYukkuri_timeline.FindFirst(TreeScope_Subtree, iCnd)

Dim InvokePattern As IUIAutomationInvokePattern
Set InvokePattern = elmYukkuri_Button.GetCurrentPattern(UIA_InvokePatternId)

ボタンじゃなくてコンボボックスでボタン内容が切り替わるときはどうすればいいんだろう?
254デフォルトの名無しさん (ワッチョイ 6268-/CMm)
垢版 |
2021/04/15(木) 21:08:32.60ID:fGNDJEoP0
>>249
俺もそれ使ってたわ
100セットとか印刷するとコピー機占領するからすごい迷惑なんだよね。
色々あって、vbaは逆に使わなくなった

方法はは>>251にかなり近くて、

・シートを連番で用意しておく
・シート名は「3」〜「5」
・vlookupのキーはシート名にする
Range("d1").Valueには、 .Range("A" & シート名).Value
Range("n1").Value には、.Range("A" & シート名+ 1).Value
のように、予めシート名を引っ張ってvlokup部分は完結させておく

後はシート「3」〜シート「5」を選択し、印刷するだけ。ジョブは一つになるし、vbaも不要になる

シート内容が変更になる時は、vbaを使って連番のシートを再作成すると良い
2021/04/15(木) 22:20:13.95ID:8+4wzY1VH
直接印刷せずPDFにすればいいじゃん
PDFなら大量のファイルを1回のジョブで一気に印刷できるぞ
256デフォルトの名無しさん (ワッチョイ 6268-/CMm)
垢版 |
2021/04/15(木) 22:56:26.48ID:fGNDJEoP0
>255
PDFに出力する時はvbaで制御できないんじゃ
2021/04/15(木) 23:42:15.25ID:rzqCvIH40
>>253
ここで良いけど、
UIAutomationとムービーメーカー4両方知ってるレアな人じゃないとわからないと思うぞ。

俺は前者しかわからんからあてずっぽうで言うけど、
FindFirstじゃなくてFindAllして中身を調べれば良いんじゃないの?
2021/04/16(金) 04:48:18.88ID:aO0hqHGi0
>>257
とりあえずごまかしながら作ったのがこんなやつ
https://youtu.be/3RApNTTEkIs
ソースとかほしい?
2021/04/16(金) 19:03:44.09ID:yYdNvwCc0
様々なご提案ありがとうございます。
シートを増やして行くやり方にしようと思います。
2021/04/17(土) 04:28:55.40ID:aiLxsK7Md
質問です。変更したセルに色をつけたいと思っており、調べたところ変更履歴の使用や色を変更するマクロ(private sub〜)は出てきました。
それに加えて、その色変更をその日だけ有効にすることは可能ですか?

例えば、
4/17 A1の値 1
1→2に変更すると色も変更
4/18 A1の値 2 白に戻っている
      2→3に変更すると色も変更…

といった感じなんですが。。。
2021/04/17(土) 04:47:34.80ID:5JzvmzAs0
If Today()="2021/04/17" Then

Range("A1").Interior.Color = 256

〜とか条件加えればいいんじゃね
2021/04/17(土) 05:37:32.98ID:HGZEZM9x0
こんなこと出来ますか?
https://i.imgur.com/ypZck9P.png
A列に予め色の見本が、C列に数値を代入していく。
C列に数値を代入したら、そのセルの背景色をA列の色の見本と同じ色にしたい。

A列め色の見本は20色ぐらいを想定。
条件付き書式を使おうと思ったけど、20色も増えたらルールも20個書かないといけないので、ちょっとなえた。
2021/04/17(土) 06:27:08.23ID:fydw5HpOa
>>261
これを、ワークブックオープンにいれておけばよいよ
2021/04/17(土) 06:33:53.75ID:fydw5HpOa
>>262
セルに入力されたらシートチェンジというモジュールがあるはずなので
それをさがしてその中でいろいろな処理をすればよいよ
2021/04/17(土) 06:44:21.86ID:iZq5P4oj0
>>262
出来る出来ないで聞かれたら出来ると答えるよ。

方法は?と聞かれたらワークシートチェンジイベントをシートモジュールに付け足して、引数にはRangeが入ってくるから
その範囲にC列が被っていたらそこの数字みてA列の該当する数字の色拾って来て着色する。

イベントの範囲とC列が被っているかどうかは計算でも求められるけど、今回はセル値も見ることになるからFor Each でイベントでとったRangeを
ぐーるぐる回してC列かどうかを見ればいいと思うよ。
その際、イベントの引数の範囲もRangeだけど
Eachの後に書くCellに該当する変数の型もRangeになることに気をつけて。
実はCellって型はRangeなんだよ。
2021/04/17(土) 07:03:20.22ID:jQb3oNGZ0
>>265
こういう回答する人って知識ひけらかしたいだけに見える
簡潔答えられないのかね
2021/04/17(土) 07:05:28.63ID:gHXBJYD60
まあ条件付き書式のほうがスッキリしていいと思うけどな
2021/04/17(土) 07:19:08.72ID:iZq5P4oj0
>>266
そうなんだ
最近ヒマしててちょっとひけらかしたい部分もあったんだ。
でも作る時のポイントになること押さえてるからいいだろ?
本当は手元に環境があればソース貼りゃいいんだけど。
2021/04/17(土) 07:26:58.07ID:fydw5HpOa
ふつうはシート・チェンジのモジュールのなかで
target.アドレスやtarget.valueで値を取り出すのじゃないのか

なにをやってるのかよくわからんぞ、
2021/04/17(土) 07:28:09.89ID:5JzvmzAs0
>>262
どういうシステムにしたいかがいまいち分からん

まずC列の複数のセルに0〜5の整数をまとめていくつも代入して、
その後に数字入れたセルの背景色をまとめて変えたい?
2021/04/17(土) 07:30:13.57ID:jQb3oNGZ0
口だけ出すのもなんなので一応作ってみた
Sheet1モジュール用

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Alea数値 As Range
Set Alea数値 = Range("C4:C9")

If Intersect(Target, Alea数値) Is Nothing Then Exit Sub

Dim AleaColor As Range
Set AleaColor = Range("A4:A9")

Dim Rng As Range
Dim Color As Long

For Each Rng In AleaColor
If Rng.Value = Target.Value Then
Color = Rng.Interior.Color
Target.Interior.Color = Color
Exit Sub
End If
Next Rng

End Sub
2021/04/17(土) 07:46:50.44ID:fydw5HpOa
>>262
てさあ、なかなか賢いとうか
赤や黄色のセルを取り出す、⬅これできないだよな

どこかのセルと同じ色にするならできるだけど
2021/04/17(土) 07:47:30.68ID:IoVEY+h40
>>271
素晴らしいです。
やりたいことが出来ました。
コメントくれた人にも感謝します。
2021/04/17(土) 08:50:15.05ID:xdZBdiobH
>>271
いま見返したらAreaがAleaになってるな
2021/04/17(土) 08:56:18.27ID:fydw5HpOa
エクセルは1600万色もあるからどれが赤で黄色なのかわからない
262のように色見本があって、これが赤です。と決めてくれないと
276デフォルトの名無しさん (ワッチョイ 9f68-1iXq)
垢版 |
2021/04/17(土) 09:08:47.12ID:lNzUtf8u0
>275
EXCEL関係ない
2021/04/17(土) 12:35:40.75
>>102,103
返信ありがとうございます。
input_str =〜 の()内にB2の文字列を貼付して出来ましたが、
input_str =〜
input_str =〜
と複数行にして試しましたが、複数行は出来ませんでした、どうすれば複数行処理可能になりますでしょうか?
2021/04/17(土) 20:38:15.19ID:A+RmKR4F0
>>258
いや、ムービーメーカー4がわからないから、貰ってもわからないし。

コンボボックスって未選択の所?
UIAutomationじゃなくてもSendMessageで行けそうな気がするけど・・。

▼が何の文字を指定すればいいのかわからないって意味なら、
やっぱりFindAllで取得して、配列の何番目にそれっぽいのが入ってるか調べればいいと思うな。
2021/04/17(土) 20:55:43.60ID:IoVEY+h40
>>278
1日がかりでググりまくりの苦労と試行で出来た。

'コンボボックスを開いて折りたたむ
Dim ptnExpand As IUIAutomationExpandCollapsePattern
Set ptnExpand = elmYukkuri.GetCurrentPattern(UIA_ExpandCollapsePatternId)
ptnExpand.Expand
ptnExpand.Collapse

'コンボボックスの中身をセルA3に書き出す
Set elmYukkuri = elmYukkuri.FindFirst(TreeScope_Subtree, iCnd)
Set iCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "ListBoxItem")
Set elmsYukkuri = elmYukkuri.FindAll(TreeScope_Children, iCnd)
Set iCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "TextBlock")
For i = 0 To elmsYukkuri.Length - 1
Set elmYukkuri = elmsYukkuri.GetElement(i).FindFirst(TreeScope_Children, iCnd)
Cells(i + row_セリフ開始, 1).Value = i
Cells(i + row_セリフ開始, 2).Value = elmYukkuri.CurrentName
Next
280デフォルトの名無しさん (ワッチョイ 9ff0-KAGY)
垢版 |
2021/04/18(日) 09:49:47.16ID:AhVY6Zxk0
281デフォルトの名無しさん (ワッチョイ 9ff0-KAGY)
垢版 |
2021/04/18(日) 09:56:40.54ID:AhVY6Zxk0
Private Sub Worksheet_Change(ByVal target As Range)
If Intersect(target, Range("A1:A2")) Is Nothing Then
Exit Sub
End If
ClearDates
UpdateDates
End Sub
Sub ClearDates()
Range("A4:A999").Clear
End Sub
Sub UpdateDates()
If IsDate(Range("A1").Value) = False Or IsDate(Range("A2").Value) = False Then
MsgBox "日付を正しく入力してください"
Exit Sub
End If
Dim d As Date, endDate As Date
d = Range("A1").Value
endDate = Range("A2").Value
Dim y As Long
y = 4
Do While d <= Range("A2").Value
Cells(y, 1) = d
d = d + 1
y = y + 1
Loop
End Sub
日付間の日にちが自動で打ちあがるようにしたんですけど
めちゃくちゃ重くてパソコンが固まってしまいますご教授ください
素人みたいな質問ですいません。
2021/04/18(日) 10:09:03.12ID:CdbHG8Q+0
>>281
Changeイベントをする時は、
処理の前で
Application.EnableEvents=False

処理の後で
Application.EnableEvents=True

が動くようにしないと延々Changeイベントが動いて重くなる
283デフォルトの名無しさん (ワッチョイ 9f68-1iXq)
垢版 |
2021/04/18(日) 10:09:19.29ID:a83COmqy0
>>281
むしろそれでプロだったらびびるけど・・・

Worksheet_Change()はワークシートの内容が変わった時に発火する

Worksheet_Change()→ClearDates()→Worksheet_Change()→UpdateDates()→Worksheet_Change()→・・・
多分無限ループになっている

こういう時はイベントを無効にしておけば無限ループにならない

Private Sub Worksheet_Change(ByVal target As Range)
object.EnableEvents = false
'内容
object.EnableEvents = true
endsub
284デフォルトの名無しさん (ワッチョイ 9f68-1iXq)
垢版 |
2021/04/18(日) 10:09:41.04ID:a83COmqy0
すまん、Application.EnableEvents = Falseだった上に遅かった
285デフォルトの名無しさん (ワッチョイ 9ff0-B9Cj)
垢版 |
2021/04/18(日) 10:53:16.67ID:AhVY6Zxk0
すばやい返答ありがとうございます
少し早くてびっくり

VBAははじめて2年ぐらいです
5年後ぐらいにプロになれたらいいな

Private Sub Worksheet_Change(ByVal target As Range)
object.EnableEvents = false
上記を先頭2行と置き換えて

object.EnableEvents = true
endsub
↑この2行は最終行に書けばいいのですか?

素人ですいません!
2021/04/18(日) 11:21:49.65ID:JCpiu5BAH
>>285
直す部分だけ書くと、こう

Private Sub Worksheet_Change(ByVal target As Range)
  Application.EnableEvents = False
  If Intersect(target, Range("A1:A2")) Is Nothing Then
    Exit Sub
  End If
  ClearDates
  UpdateDates
  Application.EnableEvents = True
End Sub
287デフォルトの名無しさん (ワッチョイ b768-1iXq)
垢版 |
2021/04/18(日) 12:11:13.84ID:ORj5XeNB0
>>285
ごめーん、object.EnableEvents = false  は間違いです
>>286さんが正しいです
288デフォルトの名無しさん (ワッチョイ 9ff0-B9Cj)
垢版 |
2021/04/18(日) 14:57:21.70ID:AhVY6Zxk0
先生たちありがとうございます!
新設丁寧頭もいい
289デフォルトの名無しさん (ワッチョイ 9ff0-B9Cj)
垢版 |
2021/04/18(日) 14:58:49.68ID:AhVY6Zxk0
自分の力で解決できるようにがんばります!
2021/04/18(日) 16:07:16.06ID:c/Nu40gb0
>>281
それコピペして動かしてみたけど全然重くなかったよ
1900年から今日までにしても4秒くらい
これで固まるのは別の原因があると思う

その場所以外にとても複雑な計算式があって
Cells(y, 1) = d の度に計算して重くなってるとか

そうであれば計算を手動に変えて最後に自動にするとか
セルじゃなくて配列にdを入れて最後に一回だけ出力するとか

UpdateDates()を1行ずつ動かせばどの行で固まってるか分かると思うよ
2021/04/18(日) 16:21:48.14ID:n1x9QJALa
>>290
それはChangeイベントで検証しましたか?
2021/04/18(日) 19:37:56.63ID:Z7m7Dr1xd
>>261
ありがとうございます。試してみます。
2021/04/18(日) 20:47:27.38ID:c/Nu40gb0
>>291
検証しました。
対象セルの書き換えはないから普通は無限ループにならないと思うけど
環境によって何か違うのかな?

とにかく一行ずつ動かしてどこで固まるか調べた方がいいと思います。
2021/04/18(日) 23:15:06.97ID:FAQ+sCCd0
https://i.imgur.com/8OFf7Pv.jpg

B4:E6を画像として出力したいんだけど、Rangeの範囲指定をどういじっても、B3:E6が出力されてしまう。
B4:C6を指定してもB3:E6が出力されてしまう。
どうすればいいの?
2021/04/19(月) 00:55:03.43ID:BhG1xyLeH
>>294
CurrentRegionを使わない
2021/04/19(月) 01:56:46.57ID:/e3Iiylf0
>>295
thx
CurrentRegionとったらあっさり出来たわ。
たまたまググって出てきたサンプルが説明もなくCurrentRegionを使ってて、
それを参考にしたから数時間損したわ。
2021/04/19(月) 10:20:37.00ID:gkbaJTWH0
Name As でExcel以外のJpegファイル等のファイル名を変えることができると思いますが、そもそもなんでEXCELで他のソフトウェアのファイル名変えられるんでしょ?
便利だからいいんですけど
2021/04/19(月) 10:27:18.04ID:BhG1xyLeH
>>297
ファイル操作はOSの基本機能の一つだから
逆に制限する方が、作るのも使うのも面倒になってメリットがなさすぎるという設計上の理由
2021/04/19(月) 10:41:44.29ID:gkbaJTWH0
そっか、OSを操作してるんでしたね
EXCELもOSも同じメーカーだからこそできる技なんですな
300デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
垢版 |
2021/04/19(月) 21:03:08.15ID:K5RFczke0
>>299
馬鹿?
301デフォルトの名無しさん (ワンミングク MM7f-wYoi)
垢版 |
2021/04/19(月) 21:19:11.87ID:80cIHSk1M
>>299
知能に問題がある人かな
2021/04/19(月) 21:54:25.72ID:zOv5i/QS0
昔のExcelは非公開API使ってたとか噂を聞いたことがある
2021/04/19(月) 23:09:31.11ID:Qr9ctU7Wa
噂を信じるな
2021/04/19(月) 23:15:55.48ID:NSiRzHFAa
なつかしいなぁ 90年から2000年ぐらいの頃だな
2021/04/20(火) 00:42:55.05ID:LQ8i77JG0
あるシートをコピーした時、
「移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’○○○’が含まれています。この名前を使用しますか?」
が延々と出てくるのがうざいので、
メッセージを出さないようにするマクロって作れますか?

事前に名前の定義から削除するのではなく、シートをコピーしたら、メッセージを出さずに名前の定義を削除したいです。
詳しい方、ご教示をよろしくお願いいたします。
2021/04/20(火) 01:37:22.55ID:ptbZPsIm0
書式設定をコピーしなくて良いなら配列に値を代入して新しいシートに貼り付けが楽じゃない?
書式もって言うなら出力後に書式だけコピーしてやるとか
2021/04/20(火) 07:08:37.93ID:j3U7nYtJ0
VBAで隠蔽使ってる人はどんな時に使ってますか?
ぶっちゃけPropertyGetだけでいい気がしてきてしまったので、適切な使い所を知りたいです
2021/04/20(火) 07:20:28.94ID:LQ8i77JG0
>>306
なるほどです!
やってみます、ありがとうございます!
2021/04/20(火) 07:26:26.47ID:sns0znWgd
>>307
二人以上で開発する時、または長期に渡るメンテが必要になりそうな時
310デフォルトの名無しさん (ワッチョイ b768-1iXq)
垢版 |
2021/04/20(火) 07:29:11.43ID:aQV8TqKv0
>>307
基本privateにしておいたほうが色々とトラブルが少ないけど、
特に不満を感じてないならpublicでもどっちでも同じだと思う

privateで意味が出てくるのは大規模・多人数開発だ
2021/04/20(火) 12:11:30.20ID:fqIzsxE3p
>>307
メッセージングを行う際にて不必要と思われるメソッド(関数)や変数、プロパティは隠蔽する。
2021/04/20(火) 12:18:15.46ID:fqIzsxE3p
いや?
そもそも変数はプロパティかメソッド(関数)の引数や戻り値でしか受け渡ししないから変数は隠蔽しないことは無いか
2021/04/20(火) 12:27:20.11ID:WjARqIhg0
>>307
ぶっちゃけPropertyGetだけでいいです、他のことはやらなくていいです
314デフォルトの名無しさん (ワッチョイ b768-1iXq)
垢版 |
2021/04/20(火) 18:45:51.60ID:aQV8TqKv0
変数を隠蔽しておけばgetter・setterを必ず通るからそこさえ監視しておけば後を追える
変数丸出しだとどこから触られるかわからないのでデバッグが死ぬほど大変になる
2021/04/20(火) 19:02:40.74ID:grfVULwwa
みんなが使うのはパブリック
自分だけで使いたいときはプライベート

XとかY,Zなんかはプライベートにしましょう
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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