[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/08 10:06 / Filesize : 292 KB / Number-of Response : 1011
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part65



1 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 16:27:20.88 ID:hh8LiIgR0.net]

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

※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

754 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/01(金) 09:08:51 ID:GU+C/Jnt0.net]
はいつぎの方

755 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 10:00:32.66 ID:6b7IUzcd0.net]
Sub Sample2()

Dim Date1 As Date
Dim Date2 As Date
Dim i As Long

Date1 = "2018/1/1"
Date2 = "2018/4/30"

For i = 0 To DateDiff("d", Date1, Date2)

Cells(i + 1, 1) = DateAdd("d", i, Date1)
Exit For
Next i

End Sub

VBA初心者です
上記を実行すると強制終了してしまいます
どうしてなんでしょうか?

756 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/01(金) 10:50:57 ID:eM3SnLnx0.net]
>>748
Exit Forを消す
あと、自分のミスで思った通りにならない時は強制終了とは言わない

757 名前:デフォルトの名無しさん (ワッチョイ bff7-INiV) mailto:sage [2020/05/01(金) 12:14:21 ID:gUWwrcBK0.net]
"4/30/2018"

758 名前:デフォルトの名無しさん (アウアウエー Sa9f-kSwD) [2020/05/01(金) 13:10:21 ID:n1w4ahs6a.net]
#で括ってみては

759 名前:デフォルトの名無しさん (JP 0H9f-r+sk) [2020/05/01(金) 14:08:14 ID:Lu25V/ckH.net]
学術巨大掲示板群: アルファ・ラボ
ttp://x0000.net

物理学 化学 数学 生物学 天文学 地理地学
IT 電子 工学 国語 方言 言語学 など

PS 連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

760 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/01(金) 14:08:57 ID:GU+C/Jnt0.net]
>>748
回答としては748の通り

なぜこうなるのかわからない場合
 ・ブレークポイントを使ってどういうふうに処理が進んでいるか確認してみ?
 ・気になる行をコメントアウトをしてみる

などをするがよろし

761 名前:デフォルトの名無しさん [2020/05/01(金) 15:46:49.34 ID:O26w7br10.net]
どうして馬鹿ばかり来るのか

762 名前:デフォルトの名無しさん [2020/05/01(金) 15:48:19.31 ID:e9rmxAXgM.net]
>>754
ようこそ!



763 名前: mailto:sage [2020/05/01(金) 16:42:17.98 ID:w4TGDP35H.net]
>>754
Welcome to the real world !!

764 名前:デフォルトの名無しさん (ワッチョイ e7ad-GPK9) mailto:sage [2020/05/01(金) 17:52:33 ID:XmUvZ7vC0.net]
>>748
単純にすべての単語の意味を
把握したらそれだけで分かるよ?

最初の内は意味が分からないまま
コピペプログラミングだろうけど
ずっとそのままだと上達しない

765 名前:デフォルトの名無しさん (ワッチョイ dff0-h83k) mailto:sage [2020/05/02(土) 03:52:34 ID:gsxD2EFS0.net]
皆さんありがとうございます。
初心者から脱出できるように勉強します

766 名前:デフォルトの名無しさん (ワッチョイ df01-lZTE) mailto:sage [2020/05/02(土) 04:16:39 ID:WlPNyw+i0.net]
がんばれ

767 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/02(土) 07:47:42 ID:8I2uZvpu0.net]
会社が休みに入って書き込みが減ったな

768 名前:デフォルトの名無しさん (ワッチョイ a78f-h83k) mailto:sage [2020/05/02(土) 09:40:27 ID:7uDOF2SH0.net]
IE自動操作のマクロで

今まで動いていたが動かなくなる

コードに変化を加えると動く
(スペースでも改行でもコメントでも、プロシージャに変化があると動くようになる)

これはどういうあれなんや

769 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 10:47:09.64 ID:8Sc54whm0.net]
全角のスペースとかキーワード途中での改行とか

無意識にやらかしたんでないの

770 名前:デフォルトの名無しさん (ワッチョイ a7ad-ur4w) [2020/05/02(土) 11:30:23 ID:Z+zF8E0a0.net]
PowerQueryをVBAで使いたい初心者
>>691です。
変数に入れるファイルパスを、テーブルにしておかないと
PowerQueryは読んでくれないんだ。そのテーブル名とか列名も
指定するんだ、へ~、という現状からこの連休中に抜け出したいです。

テレワークからの連休突入前に先輩たちに投げた質問の答えは
「zoom飲み会やるから、入れとけよ。」でした。

771 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/02(土) 11:33:04 ID:qrZctUhv0.net]
VBAむずいが努力だわ
昇級幅が大きい時代の残りカスの50代の職場のおっさん達が給料ばっかり高くて
ExcelのSUM関数すらわからないレベルで
電卓で計算してテンキーで手打ち
そんな信じられない存在がいる職場
「俺のやり方があるんだよ!」
とか、心の底から腹が立つ
大手で組合もあるからリストラはされないんだが
そんなやつを駆逐したい
エクセル関数は職場で使うものはだいたい使っておっさん共の10倍は早くやってきたが
更なる憎しみだけが俺のVBA勉強へのモチベーションになってる

772 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/02(土) 11:34:32 ID:jcfx6zQ80.net]
>>761
そもそも、どう動かなくなるんだ?
エラーが出るのか?
Excel再起動で動くようになるか?
PC再起動で動くようになるか?

昔よくあったのがデバックやStopのように勝手に途中で止まるという奴。
F5で続行出来るんだけどまた途中で止まる。
Excelの再起動では治らんがPC再起動で治る。



773 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/02(土) 11:44:58 ID:u3ozWGyy0.net]
>>761
Win10ではIEの動作が変わったのでVBAからコントロールするのがかなり大変になった

うまく動かない時は、ブラウザのキャッシュとかクッキーとか、WEBサーバの応答のタイミングとか調べる
変更しなくても時間を置けば動かないか、Excelを再起動したらどうか、パケットモニターとか調べた?

774 名前:デフォルトの名無しさん (アウアウカー Sa3b-QanA) [2020/05/02(土) 11:52:59 ID:be7YjfFea.net]
初めてのマクロでやりたいことはほぼ出来たのですが、新規ブックをコピー元のマクロごとコピーする方法が分かりません
xlsmで保存することは出来るのですが、どうもマクロの参照先がコピー元になっているらしく、新規ブックからマクロを実行するとコピー元のファイルをわざわざ開く形になってしまっています
マクロごとコピーする方法があればご教示ください

775 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/02(土) 11:53:28 ID:jcfx6zQ80.net]
>>763
初心者がPowerQuery使うの?
その前にやることがあると思うんだが。

まず、テキストファイルを扱えるようになりなよ。
自在にテキストファイルを扱えるようになれば、どんな形式のCSVでも関係無い。
セル内改行も、そのCSVのフォーマットが分かってないのが原因。
普通はデ−タに改行が入ってるならレコード間の改行と区別する何かがある筈。
1レコードの項目数が必ず決まっている(1レコードのカンマの数が決まっている)とか、そのテキストデ―タは必ずダブルクォーテーションで挟まれており、データ内の改行はダブルクォーテーションのInとOutの間のどこかにあるとか。

もちろんPowerQueryでも良いんだけど、それでたまたま解決出来そうだから飛び付くのは良くない。
こんなもの基本的な処理の組み合わせで出来るんだから、PowerQueryで有利な何かも無いのに無理矢理使おうとしてるように見える。

776 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 12:25:11.14 ID:E33c3GVR0.net]
>>767
自分ではやったことないけどモジュールをそのままコピーするなら
officetanaka.net/excel/vba/vbe/07.htm#sample04
こういう方法じゃないかな

自分でやったことがあるのは
https://oshiete.goo.ne.jp/qa/756026.html
こちらの方法で、コードを一行ずつ書いていくことになります

ほんとにまるごとコピーでいいなら上の方法でしょうけど、thisworkbookとか
activeworkbookとか場合によって挙動が変わるような内容なら下の方法
じゃないかな

777 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 12:32:45.18 ID:u3ozWGyy0.net]
>>767
モジュールのエクスポートとインポートでやってみるとか
https://jizilog.com/vba-modadd

778 名前:デフォルトの名無しさん (アウアウカー Sa3b-QanA) [2020/05/02(土) 13:09:24 ID:me7NM96ka.net]
>>769
>>770
ありがとうございます
お恥ずかしながら、今更ながらアドインと個人用マクロブックの存在を知りました
マクロの数も多いので、毎回記述する方法は重くなりそうですし、インポートも考えたのですが、管理するのが大変そうだと躊躇していました
とりあえず、個人用マクロブックで一括管理してやってみようと思います

779 名前:デフォルトの名無しさん (スッップ Sdff-x7Cl) mailto:sage [2020/05/02(土) 15:03:15 ID:fjHWXn6td.net]
>>769
これは、セキュリティ上の危険を承知するなら良いんだけどね。
今のExcelはデフォルトで動かないように設定されてるよ。

動作原理はマクロウィルスと全く同じなんで。

780 名前:デフォルトの名無しさん (ワッチョイ dfea-9YRN) mailto:sage [2020/05/02(土) 15:03:21 ID:HkfyT0U40.net]
>>771
マクロブックだと、最後の1ファイルを閉じてもアプリ画面が残っちゃう。
アドインだとこれを回避できる。

781 名前:デフォルトの名無しさん (ワッチョイ dfea-9YRN) mailto:sage [2020/05/02(土) 15:06:50 ID:HkfyT0U40.net]
>>772
そそ。D&Dでパワポにノートを読み上げるマクロをぶっ込めるvbs作ったんだけど、よく考えるとちょつと怖くなった。

782 名前:デフォルトの名無しさん [2020/05/02(土) 15:24:24.68 ID:Z+zF8E0a0.net]
>>768
あ、ありがとうございます。
テキストファイルから…。
連休の課題にします!



783 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 15:37:35.14 ID:lt4kIJ5o0.net]
>>768
VBAのスレで言うのもなんだが
PowerQueryの前にやることがVBAなのかと

784 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 15:54:13.09 ID:WuBkO5o5x.net]
>>763
テーブルとしての構造化参照が不要なら別にテーブルにしなくても「空のクエリ」でリテラル定数を返す接続クエリを作るなり、パラメータを登録するなりすれば良い
詳細エディタに
= "テーブル名"
って一行書けば"テーブル名"を返す定数クエリが出来上がる

あと、Letの前行に
(path as text, table_name as text, column_name as text)=>
とか追加すれば、path とtable_nameとcolumn_nameという三つのtext型の引数をダイアログ入力でクエリに渡せるようになるので、クエリ式の側をソース=Csv.Document(File.Contents(path))みたいに書けば良い。


どうしてもVBAからPower Queryをいじりたいなら
Workbook.Queries(Index).Formulaでクエリの式が読み書きできるので、Replaceを使うなりして好きにいじったらいいんじゃないの

785 名前:デフォルトの名無しさん (アウアウカー Sa3b-QanA) [2020/05/02(土) 16:19:14 ID:be7YjfFea.net]
>>773
なるほど、それはちょっと嫌かも
この際だからアドインも試してみることにします

786 名前:デフォルトの名無しさん [2020/05/02(土) 17:01:28.47 ID:be7YjfFea.net]
何度もすみません
アドインを通常のマクロのように、図形などで作ったボタンに割り当てることはできないのでしょうか?

787 名前:デフォルトの名無しさん (ワッチョイ 677f-v3HX) mailto:sage [2020/05/02(土) 19:33:07 ID:I/r+DzJx0.net]
デバッグ中からリセットをかける際に特定の処理をさせるようなイベントプロシージャって無いでしょうか

788 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 21:25:13.04 ID:fjHWXn6td.net]
>>780
それは俺も知りたいね。
リセットすると確実にExcelが落ちるプログラムを安全に終了したい。

789 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 21:28:27.20 ID:fjHWXn6td.net]
>>779
アドインの場合、メインは別のブックになるわけだからアドインのシートとかは表示されないという基本は分かってる?

それが分かっていれば図形等で作ったボタンを配置する場所もないと分かる筈。

普通はメニュー(リボン)に作る。

790 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 22:09:54.71 ID:7uDOF2SH0.net]
>>765
>>766

数か月前の事なので返ってくるエラーは忘れたけど
どこかの部分で止まるのではなく、開始時に起きるエラーだったと思う
そのファイルを複数のPCで試したけど全てで同じ現象が起こる

で、subプロシージャのコードを一部変更して実行すると動く

コードの変更は何でも良くて
改行、何も書いていない行にスペース追加、コメント追加、コードを消して同じコードを書く
とにかく変化があれば再起動も何も必要なく正常に動く
変更後上書き保存してからは同じエラーは起こっていない

今は問題なく動いてるから困っては無いんだけど
あれは何だったのかなと思った

791 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/02(土) 22:19:21 ID:8I2uZvpu0.net]
はあ、そうですか。しらんがな

792 名前:デフォルトの名無しさん (ワッチョイ 7fda-ts7H) mailto:sage [2020/05/02(土) 22:37:34 ID:zUyEitTf0.net]
>>761
俺もさんざん悩まされたが、ByVal/ByRef問わず、関数にオブジェクト渡すのやめたら改善したわ。
何でもかんでもパブリックにすんなアホって言われてたから、パブリックという発想が中々でなかったが。

>>765
俺の場合は何の音沙汰もなく強制終了だな。
エラーが出ないし、PCによっては動くし、改行いれるだけで変わることもあるから、
どこがおかしいのか全然わからんかった。
互換表示とか保護モードの有無も関係ないし。



793 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 22:45:55.01 ID:zUyEitTf0.net]
多分、

Readystateコンプしてるのにエラーでるな〜
↓こうしちゃえ

On Error Resume Next
Do
 IEにカキコ
 Sleep 1000
Loop While なんとか
On Error Goto 0

長くて面倒くせえなぁ〜
関数化しちゃえ

で、オブジェクトを関数に渡して嵌る罠なんだと思う。

794 名前:デフォルトの名無しさん (アメ MM6b-p7s+) mailto:sage [2020/05/02(土) 23:09:24 ID:FzDABaHmM.net]
>>783
それ、IEと関係なく、Excelの更新が原因でvba関係にエラー起きてるやつでは?
ファイル開くときに「エラーがあります、可能な範囲で修正しますか」みたいなアラートがでて、はいを押すとコードが全削除される。

795 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/02(土) 23:36:58 ID:qrZctUhv0.net]
教えてくださいまし。。
画像のように日によって参加人数も競技した数も違うものを
受付した人と競技の範囲の値のみ
隣のシートに貼り付けるようにしたいですが
エクセル関数のエラーや未計算が都合上どうしても残ってしまい残ってうまく行かず…
https://i.imgur.com/Sd2Afas.jpg
https://i.imgur.com/MfnIQSU.jpg
https://i.imgur.com/lEQTEIe.jpg

受付した人の数字が空白になるまでは空白になるまで、競技も空白になるまで
その範囲のみをコピーというか可能でしょうか

796 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/02(土) 23:39:12 ID:qrZctUhv0.net]
Sub 貼り付け()
Dim gy As Long
Dim re As Long Dim
Dim Tensu As String
Dim Kekka As String

Sheets(Tensu) = "点数"
Sheets() = "結果シート"

Sheets(Tensu).Select
With Range("C5")
gy = .End(xlDown).Row
If .Offset(1).Value = "" Then
gy = .Row re = .End(xlToRight).Column
If .Offset(, 1).Value = "" Then
re = .Column With .Resize(gy - .Row + 1, re - .Column + 1)
Sheets(Tensu).Select Range("H8").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With End With
End Sub

これで作ってみたのですがやはり関数エラーが
邪魔してエラーになります
行も列も両方を空白までループして貼り付け
むずぃす

797 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:46:04.45 ID:zUyEitTf0.net]
画像から式を逆算するクイズみたいになっとる。

798 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:48:07.49 ID:TR3WF5Jt0.net]
人、それをデバッグと呼ぶ

799 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:48:58.13 ID:zUyEitTf0.net]
エラーってそっちのエラーかい!

If IsError(セルの値) = False Then の時だけ実行とか。

800 名前:デフォルトの名無しさん mailto:sage [2020/05/02(土) 23:51:07.35 ID:zUyEitTf0.net]
それか、ValueじゃなくてTextでエラー回避。

801 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/03(日) 00:01:44 ID:fR4zqWYb0.net]
>>789
全体的にめちゃくちゃで、それじゃ関数エラー以前にまったく動かないはずなんだけど、本当にそれで途中までは動いてるの?
スマホでポチポチ書き写すんじゃなくて、できるだけPCでそのままコピペしてくれない?

802 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/03(日) 00:26:05 ID:EGR1WLcw0.net]
>>794
Sub test()
Dim gy As Long, re As Long
With Range("C5") gy = .End(xlDown).Row
If .Offset(1).Value = "" Then gy = .Row
cl = .End(xlToRight).Column
If .Offset(, 1).Value = "" Then re = .Column With .Resize(gy - .Row + 1, re - .Column + 1) Range("AA5").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
End With
End Sub

元々作これで動いたのを確認しやしたが
無力過ぎて悔しいっす
そもそもエクセル関数の方のエラーが出ないようにif関数で空白の場合はセルも空白にしようかと思ったけどそもそも他部署の管轄
俺の圧倒的力の無さですわこりゃ



803 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/03(日) 00:31:44 ID:EGR1WLcw0.net]
というか完全に圧倒的勘違いでした

動いたと思っていざ使おうとしたら
他部署からのデータが画像のように
参加してない選手のところにセルにエラーがついてくる仕様なのに気付いて動かなかった
これが正解です
頭おかしくなってますわ

804 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/03(日) 00:38:44 ID:fR4zqWYb0.net]
>>795
ワークシートの数式を消しちゃっていいんなら、エラーの出てるセルを全部空白にするのは簡単
Sub エラー全部消す()
 Dim c As Range
 For Each c In ActiveSheet.UsedRange
  If IsError(c.Value) Then c = ""
 Next
End Sub

805 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/03(日) 01:01:50 ID:fR4zqWYb0.net]
>>796
コピーしたいのは、赤枠の範囲でいいの?
https://i.imgur.com/hJcIMrT.jpg

806 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/03(日) 01:03:01 ID:fR4zqWYb0.net]
それとも選手名も必要?

807 名前:デフォルトの名無しさん (ワッチョイ dfb5-EVni) mailto:sage [2020/05/03(日) 01:37:52 ID:EGR1WLcw0.net]
>>797
教えてくれてありがとうございやす
ただシート内の別のところにも数式待ちのエラーのセルがあって俺の管轄じゃないので全てのエラーを消すわけにはいかず…範囲指定するスキルもなく…

>>798
>>799
完全にその赤枠のところの「値」のみをコピーしたいです

それが毎回、選手の数と競技の数が違う
という感じです

選手Cが空白なのに選手Dは数値が入る
ということはないので
受付の列が空白になるまでコピーを
ループ?とか考えながら挫折してます

808 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 01:46:13.78 ID:EGR1WLcw0.net]
受付の行が空白のセルになるまでループしつつ
競技の列が空白になるまでループ??
んん?違うか

GWになのにExcel開いてずっとマクロで悩むとは…とんだステイホームですわ

809 名前:デフォルトの名無しさん (ワッチョイ 877c-mIzA) mailto:sage [2020/05/03(日) 01:55:50 ID:yO9oP2CW0.net]
ここに書かずなぜ動かして試さない…

810 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/03(日) 02:10:58 ID:fR4zqWYb0.net]
>>800
はい、できたよ

Sub 数字だけコピー()
  Dim rr As Long
  Dim cc As Long
  Dim dat As Variant
  rr = Cells(Rows.Count, 3).End(xlUp).Row - 4 '高さを求める
  cc = Cells(5, Columns.Count).End(xlToLeft).Column - 2 '幅を求める
  dat = Range("C5").Resize(rr, cc).Value 'データを変数に入れる
  Range("AA5").Resize(rr, cc).Value = dat 'コピーする
End Sub

811 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/05/03(日) 02:15:53 ID:fR4zqWYb0.net]
ごめん
ちょっとだけ修正させて

Sub 数字だけコピー()
  Dim rr As Long
  Dim cc As Long
  Dim dat As Variant
  rr = Range("C4").End(xlDown).Row - 4 '高さを求める
  cc = Range("B5").End(xlToRight).Column - 2 '幅を求める
  dat = Range("C5").Resize(rr, cc).Value 'データを変数に入れる
  Range("AA5").Resize(rr, cc).Value = dat 'コピーする
End Sub

812 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 03:59:51.25 ID:PK0PPm520.net]
この程度のものを人に聞かなきゃできないようじゃ先が思いやられる
これで職場の50代批判できるのかと・・・・
しかも最初のこれ>>788
もう少し日本語の説明能力上げたほうがいいんじゃないか
君何度もここでいろんな質問してるよね?質問の仕方からして酷すぎる

説明の例1:
この画像で言えばC5からE13の範囲を別シートにコピーしたいです
https://i.imgur.com/Sd2Afas.jpg
コピーしたい範囲は変化します。例えばこの場合はC5からI9までをコピーしたいです
i.imgur.com/MfnIQSU.jpg

説明の例2:
こういう画像をペイントで作る
https://i.imgur.com/u9Vhnj1.jpg




はぁ・・・おれ深夜に何やってんだか・・・



813 名前:デフォルトの名無しさん (ワッチョイ a7ad-ur4w) [2020/05/03(日) 09:15:39 ID:iPr/hZRI0.net]
>>777
ご助言ありがとうございます!
教えていたことの意味を調べながら勉強します。

ちなみにうちの職場では55歳のオバハンが独学で書いてるVBA
が一番「きれい」だそうで。教科書通りで、整理整頓されてる感じで
非エンジニアには優しいんです。(簡単なものしか作らない人ですけど。)
でも「リーダブルコード」とか「VBA実践のためのなんちゃら」とか
読んで勉強してるの見かけたので、心がけは見習いたいです。

814 名前:デフォルトの名無しさん (ワッチョイ 87e6-ts7H) mailto:sage [2020/05/03(日) 09:19:57 ID:6v/wuiGx0.net]
> Sheets(Tensu) = "点数"
> Sheets() = "結果シート"

きれいだとか汚いとかいう以前に読む気が失せるな
入門書買ったとか言ってなかったっけ?

815 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 09:20:36.28 ID:2hdRjZho0.net]
>>806
>独学で書いてるVBAが一番「きれい」
>教科書通りで、整理整頓
それはあるかもな

プログラマだとなまじ他言語の知識があるために
トリッキーなことやりだす奴が一定数いるからな
効率が良い面もあるだろうが他人が理解しにくい

816 名前:デフォルトの名無しさん (ワッチョイ 87e6-ts7H) mailto:sage [2020/05/03(日) 09:35:40 ID:6v/wuiGx0.net]
>>804
生血プログラマーなら1行にするべきである

817 名前:デフォルトの名無しさん (ワッチョイ 7fda-ts7H) mailto:sage [2020/05/03(日) 10:26:05 ID:9LS/Ekj10.net]
ああ、

If a = True Then
a = False
ElseIf a = False Then
a = True
End If

みたいなやつか。
大っ嫌いだけどな。

818 名前:デフォルトの名無しさん (ワッチョイ c7da-ts7H) mailto:sage [2020/05/03(日) 13:07:08 ID:T/wh1/tE0.net]
a = Not(a)
でいいんじゃね

819 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/03(日) 13:43:00 ID:AWBCl49n0.net]
エスパースレと化してる

820 名前:デフォルトの名無しさん (ワッチョイ bf2f-WRor) mailto:sage [2020/05/03(日) 14:21:40 ID:jHKSsTzt0.net]
>>811
そもそも>>810が何を言いたかったのかわからんが
それaがBooleanじゃないと同じじゃないからな

821 名前:デフォルトの名無しさん (ワッチョイ a778-NLJ6) mailto:sage [2020/05/03(日) 16:23:21 ID:7ZZm2K4r0.net]
たしかにそうだ

822 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 18:57:16.84 ID:hVYH2JxT0.net]
うん、>>810が何を言いたいのか不明瞭だな。
あのIf文も自分は嫌いじゃ無い。
見てすぐ分かるんで。

長くても短くてもすぐ分かれば問題なし。
a=not aでも別に良い。



823 名前:デフォルトの名無しさん (ドコグロ MM9f-4Orb) mailto:sage [2020/05/03(日) 20:02:39 ID:GBCMW2mVM.net]
If a = True Then
の時点で嫌い

824 名前:デフォルトの名無しさん (ワッチョイ a75f-rvxR) mailto:sage [2020/05/03(日) 20:33:25 ID:INbjbW0w0.net]
If a Then は気持ち悪いわ

825 名前:デフォルトの名無しさん (ワッチョイ 7fda-ts7H) mailto:sage [2020/05/03(日) 20:35:39 ID:9LS/Ekj10.net]
>>815
オバハンが独学で書いてる綺麗なコードって、
a=not aを>>810みたいに書いてるやつかなと思って。

826 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 20:41:41.89 ID:jHKSsTzt0.net]
俺はBooleanにたいして= Trueは大概は冗長に感じるけどな
VBAは型がゆるいからなぁ
If a Then は気持ち悪いが、これは変数名が悪い

827 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 22:08:11.47 ID:dDcWYHiB0.net]
>>808
perl で組んだテトリスだったかな。あれ見たときはぶったまげた。

元々ワンライナーをやりやすい言語とは言え、あれはもう
何が何やらわからない世界だった。どんだけ頭いいんだよと。

でも、「こんなの理解できないの?ふ〜ん(にやにや)」みたいな
のは生産性的には駄目だよね。


美しさをトリッキーさに見出すか可読性に見出すかは人それぞれ
だけど、自分よりスキルが下の他人に保守させるとか、未来の自
分が保守しないといけないかもとかなら冗長性持ってるほうがいい
かも。

いちばん大事なのは懇切丁寧なコメントだろうけど。

828 名前:デフォルトの名無しさん (ワッチョイ 878f-ts7H) mailto:sage [2020/05/03(日) 22:21:26 ID:dDcWYHiB0.net]
>>806
> ちなみにうちの職場では55歳のオバハンが独学で書いてるVBA
> が一番「きれい」だそうで。教科書通りで、整理整頓されてる感じで
> 非エンジニアには優しいんです。(簡単なものしか作らない人ですけど。)
> でも「リーダブルコード」とか「VBA実践のためのなんちゃら」とか
> 読んで勉強してるの見かけたので、心がけは見習いたいです。

あえて長文引用させてもらったけど、あんた程度の人間がなんで
その55歳の女性を貶めてるの?

829 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/03(日) 22:55:28 ID:hVYH2JxT0.net]
>>818
いや、想像はついてた。
大嫌いというのが分からんかった。

830 名前:デフォルトの名無しさん (JP 0H8f-Ng5p) mailto:sage [2020/05/03(日) 22:57:44 ID:8sSb2t20H.net]
まともなプログラマなら周りのレベルに合わせて読みやすいコードを書けるよ
VBAの仕事なんかやってる時点でその程度のレベルなんだから仕方ない

831 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/03(日) 22:58:39 ID:hVYH2JxT0.net]
>>820
コメントもたくさんあれば良いというもんじゃない。

Dim blFlg AsBoolean 'フラグ

こんなコメントはアホ。
フラグかどうかは名前と型で分かってる。
残すべきはどういうフラグかだ。

832 名前:デフォルトの名無しさん (ワッチョイ 878f-ts7H) mailto:sage [2020/05/03(日) 23:00:42 ID:dDcWYHiB0.net]
>>824
それは確かにコメントっつうより、「ノイズ」だなw



833 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/03(日) 23:03:28 ID:hVYH2JxT0.net]
>>823
まともなプログラマなら周りのレベルにあわせて読みやすいコードをかける。
お前とは違ってなw

834 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 23:06:45.24 ID:oMB0K2Jka.net]
>>824
こんな奴いるのw

835 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 23:07:47.50 ID:hVYH2JxT0.net]
>>825
意外に近いのはある。
コメントより元々の変数名を伝わるものにするのが第一義。
それで伝わりにくい時にコメントで補足する。

836 名前:デフォルトの名無しさん (ワッチョイ 878f-ts7H) mailto:sage [2020/05/03(日) 23:13:29 ID:dDcWYHiB0.net]
ただ、伝わりやすい変数名ってのが読む方の英語の素養に
大きく左右されちゃう不幸が。

TOEICで600くらい(英語の得意な高校生あたり)を想定するのが
いいかなあ。

837 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/03(日) 23:19:40 ID:hVYH2JxT0.net]
Cプログラミング診断室の第三章の中盤に出てくるフラグの所に似たようなのが出てくる。
言語は違うが読んどくと良い。

www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.3.7.html

838 名前:デフォルトの名無しさん (ワッチョイ df02-mIzA) mailto:sage [2020/05/04(月) 01:56:50 ID:6MBl5GGH0.net]
ここのスレ見てると、共同で保守してるのに細かい仕様書作ってない感じ
VBA使いって連携取るの苦手だろ

839 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 02:26:38.20 ID:5comiU6qd.net]
自分だけ楽するために片手間に作ったやつがいつのまにか広まって、ドキュメントなんかもちろん作ってなくて、最初に作った人は異動しちゃって、みたいなことVBAではよくある

840 名前:デフォルトの名無しさん (ワッチョイ e794-C/EQ) [2020/05/04(月) 04:29:56 ID:eaaQNpcs0.net]
VBAは事務員のオバさんが作る程度のオモチャ
仕様書とか本気で言ってんの?
キモいわ

841 名前:デフォルトの名無しさん (ワッチョイ bf12-h83k) mailto:sage [2020/05/04(月) 06:18:26 ID:XD3JqXFe0.net]
仕様書を書くような立場で仕事をしたことない人は黙ってな

842 名前:デフォルトの名無しさん (ワッチョイ c7da-ts7H) mailto:sage [2020/05/04(月) 08:36:53 ID:NmZgEDtP0.net]
会社のファイルで仕様書作ってあげてもいいんだけど今の職場では上司が理解できないからあえて作らないでいる



843 名前:デフォルトの名無しさん (ワッチョイ c7da-ts7H) mailto:sage [2020/05/04(月) 08:37:36 ID:NmZgEDtP0.net]
俺は832ではない

844 名前:デフォルトの名無しさん (ドコグロ MM9f-4Orb) mailto:sage [2020/05/04(月) 09:29:50 ID:eyf9VoYQM.net]
全社に配布するようなものは仕様書も作るしテストもやるけど、自分とか課内で使うようなツールだと作りっぱだな
別に他の言語でも変わらんと思うが

845 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 09:55:22.79 ID:oqIKeiQj0.net]
最近よく来る馬鹿どもが仕様書作れると思うのか?

846 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 10:02:07.63 ID:cVQIuVcH0.net]
共同開発やドキュメントが必要になるレベルのプロジェクトには別の言語を使うのが普通
VBAスレで仕様書の話題はスレ違い

847 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 10:28:02.39 ID:ESbXk+mE0.net]
はいつぎの方

848 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 10:39:56.70 ID:EYE1xMNJ0.net]
うちの職場じゃボタン押すことぐらいしか出来ないような連中ばかりだから
仕様書どころかマニュアル作っても1割ぐらいしか理解してもらえないだろうな
目の前で説明しても少し込み入った設定になると覚える気一切ないしな
俺がいなくなったら終わりと思ってる
コメントすら残してない

849 名前:デフォルトの名無しさん (ワッチョイ a7ad-ur4w) [2020/05/04(月) 11:03:15 ID:mKy38ERH0.net]
こんにちは。
このスレを見て勉強しようと思って色々読んでは、たいてい
なんの話をしているのかもわからない、プログラマではない層の者です。
上の方で、
>>810
If a = True Then 
a = False
ElseIf a = False Then
a = True
End If
みたいな書き方っていやだね。
>>811
a = Not(a)  でいいんじゃ?

という会話があったのですが、>>810 って
どんな時に使うのかさっぱり???でした。
どなたか暇つぶしにでもご教示いただけませんでしょうか。

850 名前:デフォルトの名無しさん (ワッチョイ a78e-MvRk) mailto:sage [2020/05/04(月) 11:58:39 ID:oqIKeiQj0.net]
>>842
死ね

851 名前:デフォルトの名無しさん (ワッチョイ 877c-mIzA) mailto:sage [2020/05/04(月) 11:59:42 ID:zFV2kJYS0.net]
ドキュメントが必要かどうかに言語は関係ない
プロジェクトの内容次第

852 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 12:35:48.74 ID:NmZgEDtP0.net]
>>842
例えばテレビのリモコンの電源ボタンとか消音ボタンのような使い方をするイメージ



853 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 12:43:46.28 ID:RsDc9cGOM.net]
>>839
お前の所の普通が世間一般の普通じゃないだけが

854 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 12:48:54.23 ID:cVQIuVcH0.net]
>>842
誰も使わない悪い例を書いただけ

855 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 13:16:33.95 ID:c8yfA7Q3M.net]
>>846
お前いつも質問スレに無関係な書き込みばっかだな
どうせPC-VANやってた老害だろ

856 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 13:17:26.32 ID:n6lRLUl70.net]
If a = True Then

誰にでもわかる書き方でとても良いと思う

今VBAを勉強する人は本職プログラマではなく
別に仕事があって、その効率化の為に学んでる人が主でしょう

そしてそれを非プログラマ同士で共有するのなら
どの本にでも書いてある書き方の方が望ましい
匿名の名人様の言葉に右往左往する必要はないよ

857 名前:デフォルトの名無しさん (ワッチョイ df01-4Orb) mailto:sage [2020/05/04(月) 13:43:10 ID:/ITc8kQd0.net]
>>848
自己紹介かよww

858 名前:デフォルトの名無しさん (ワッチョイ 7fda-ts7H) mailto:sage [2020/05/04(月) 14:09:51 ID:9S16/cFq0.net]
Debug.Print xml.getElementsByTagName("タグ名").Item(0).Text

Microsoft XML, v3.0 参照 → OK
Microsoft XML, v6.0 参照 → エラー

何でやねん。

859 名前:デフォルトの名無しさん (ワッチョイ 2791-x7Cl) mailto:sage [2020/05/04(月) 14:14:20 ID:r232eNWS0.net]
>>842
卜グルボタンとかチェックボックスのようなオンオフするようなものを変数で管理しようとした時に、変数がTrueならFalseに設定し、FalseならTrueに設定する処理を書いている。

最初のIf文の方は英文が分かれば簡単に理解出来る。
Notを使う方はTrue/Falseだから変数を変数自身と反対にすることで実現してる。

860 名前:デフォルトの名無しさん (ワッチョイ 7fdd-ts7H) mailto:sage [2020/05/04(月) 14:35:44 ID:m3H0OQVZ0.net]
検索Dialogの検索場所(WithIn)をVBAから切り替えるアイデアをお持ちの方いたら教えていただけないでしょうか。
全シートから検索するのが目的ではなく、ブック全体検索後に何気に範囲指定置換を実施して引き起こされる惨状を回避したく。
(または別視点による工夫でもOKです)
詳しい方、よろしくお願いします。

861 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/05/04(月) 15:43:06 ID:ESbXk+mE0.net]
>>853
意味不明な点が多すぎる。
>ブック全体検索後に何気に範囲指定置換を実施して
 検索と置換ダイアログでは検索、置換は違うタブだから操作ミスは起きずらいが、
 そこまでしなきゃならないのか

>引き起こされる惨状を回避したく。
 惨状って具体的になにか

そもそも惨状とやらが起きるのは、GUIの話なのかVBAの話なのか

862 名前:デフォルトの名無しさん (スップ Sd7f-C/EQ) [2020/05/04(月) 15:44:13 ID:gO9XNStOd.net]
今からVBAなんて覚える必要は全くない



863 名前:デフォルトの名無しさん (ワッチョイ a7ad-ur4w) [2020/05/04(月) 18:17:24 ID:mKy38ERH0.net]
841です。
丁寧な解説、みなさんありがとうございました。
勉強になりました。

864 名前:デフォルトの名無しさん (ワッチョイ 67f9-qVEi) [2020/05/04(月) 19:20:35 ID:V2+TGFiQ0.net]
>>856
アンカーも書けず全角で数字を書くよな馬鹿は死ね

865 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 19:40:04.11 ID:m3H0OQVZ0.net]
>>854
説明が不足していました。

検索と置換のタブはパラメータ設定の記憶が共通となっております。
ブック全体検索を行った後に範囲を選択して範囲内置換を実施しようとCtrl+Hを押します。
すると前回検索時の "検索場所=ブック"が活きている状態になっております。
気づかずに実施すると全シートの指定文字列が置換されてデータが破壊されてしまいます。
コロン ":" でも削除置換しようものなら全ての時刻書式が破壊されます。
お試しください。

これを防ぐには、ブック内検索を実施した際は引き続きシート内検索を実施して設定を戻しておく必要があります。
普段ブック内検索ってあまり使わないのでこんな時に限って忘れてしまいます。
VBAはどうなっているかというと、.Find .Replace共に、WithInパラメータが存在しないため引数指定できず、直前のUI操作依存となるわけです。
自動化された置換処理があったりすると、事故が起こるわけです。

本件、GGってよく捜してみたら同様の悩みに対するQAありました。

 Range("A1").Find("*")

この1行を実施するだけで検索場所をシートに戻せるようです。
逆に検索場所をブックにする方法を探しているところです。

ご存じの方おられましたら教えてください。

866 名前:デフォルトの名無しさん (ワッチョイ 6741-eET6) mailto:sage [2020/05/04(月) 20:21:19 ID:2XIJsT+F0.net]
.OpenTextで開いたテキストファイルを操作したいのですがやり方がわからなくて困っています。
拡張子CSVなら通常のエクセルワークシートと同様に扱えますが、テキストファイルは無理なのでしょうか?
Workbooks.Countは開いたテキストファイルの分増えているようですが…
ご教示お願いいたします。

867 名前:デフォルトの名無しさん (スフッ Sdff-rvxR) mailto:sage [2020/05/04(月) 20:24:42 ID:mUlUr63md.net]
テキストファイルの中身はどのようなフォーマットで、どう操作したいのですか?

868 名前:デフォルトの名無しさん (ワッチョイ 87e6-aR2J) [2020/05/04(月) 20:40:40 ID:c199Arvf0.net]
1セルに1文字づつならExcelチックに楽しめそうだな

知らんけど

869 名前:デフォルトの名無しさん [2020/05/04(月) 20:56:39.11 ID:oqIKeiQj0.net]
次から次へと馬鹿が来る

870 名前:853 (ワッチョイ 67ac-ts7H) mailto:sage [2020/05/04(月) 21:05:25 ID:ESbXk+mE0.net]
>>858
まず、問題としてる事象は提示している方法で解決するんだよね
そのブック開いたときとか操作したときに実行すればいい

>「ブック全体検索を行った後」に「範囲を選択」して「範囲内置換を実施」(ブック全体と指定しているオプションを開いたまま)
 → その悪意に満ちた行為のみを想定するの?
   検索ダイアログのオプション設定は起動中のExcelアプリ(プロセス)に記憶されるから、
   Excelアプリを開いたまま同じPCで同様の操作をしないと再現しないはず

>気づかずに実施すると全シートの指定文字列が置換されてデータが破壊されてしまいます。
 → さっきの操作をすると検索オプションは開いてるはずだけど、
   それでも気付かずファイル保存するっていう悪意ry
   GUI操作->GUI操作で出る問題なら、運用で禁止するか保護するか、影響に基づいて運用システム自体を見直す

>逆に検索場所をブックにする方法を探しているところです。
 → 問題としてる事象の解決は自分で提示しているようだけど、
   逆に引き起こしたいってことは、単にやりたいから?
   VBAで置換するなら別に全シートをReplace擦ればいいだけだし
   GUIでブックにしたいならそう操作すればいいけど、何が必要なの

検索と置換ダイアログの操作はCommandBars.dialogsとかExecuteMsoとかで表示は出来る
ウィンドウ操作にしても他のダイアログ操作と似たようなもんだろう(APIが多分必要)

GUIとVBAをごっちゃに対応するから要らない悩みを抱える
運用やコストを考えない妄想の機能なら、それこそ趣味でアドインでも作ればいい

871 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 21:24:09.39 ID:2XIJsT+F0.net]
説明足らずで申し訳ありません。
カンマ区切りのテキストファイルに対してOpenTextを使います。これでカンマごとにセルに値が分けらたエクセルブックが開きます。
このブックのシートを通常のエクセルシートと同様に、例えばRange("A1").Activateとしたいのですが、ブックをどうやって指定すればいいのでしょうか?

以下の方法を試しましたがうまくいきません。
元々開いているブックが一つのとき、テキストファイルはWorkbooks.CountWorkbook=2として開かれることを確認。このときWorkbooks(2)をVariant型の変数に代入しようとしました。

Set myBook = Workbooks(2)

ウォッチ式でmyBookの値を確認すると
型 Variant/Object
値 <変数なし>
となり値が取得できません。

テキストファイルの拡張子をCSVに変更すると問題なく値が取得できます。

すみませんがよろしくお願いいたします。

872 名前:デフォルトの名無しさん (ワッチョイ 7fdd-ts7H) mailto:sage [2020/05/04(月) 21:39:32 ID:m3H0OQVZ0.net]
>>863
ご回答ありがとうございます。

>オプションを開いたまま
これの意味がわからないですが、ダイアログを開いたままという意味なら、閉じても記憶は維持します。
全体検索実施と範囲選択実施は一連の動作じゃないです。
例えば複数のファイルを開いて作業していて、全体検索を実施したファイルは既に1時間前に閉じていたとしても設定は維持されます。
これを悪意と言われましても、、
まあ、この点は前述のコードをシートイベント等に挟むことで防げそうです。
(設置Bookに限られるかな?まあ、良い方法を考えてみます)

>それでも気づかずに
キーボード主体でマウスはほぼ使わない派なので、範囲選択→ダイアログ開く→検索語、置換語入力→Enterの動作は
一連の操作で、ガッ、ガガガッで感じでやっちゃうのでダイアログのパラメータいちいち確認しないんですよね。
ちょっと落ち着けよって話なんでしょうけど。

>問題としている事象の解決は自分で提示しているようだけど、
最初に掲げた命題が "VBAで検索場所(WithIn)を切り替えたい" だったので逆の操作もできれば知りたいという程度です。
破壊リスクは回避できそうですが、例えば範囲が”シート"の状態からVBAで"ブック"に変更して全置換も可能なのかな、という疑問です。
結論としては通常の方法では出来なそうですね。
Worksheets.Select: Cells.Select を実行すれば、シートをForで回さなくても
 Selection.Replace できることもわかりましたのでこれで解決としたいと思います。

>GUIとVBAをごっちゃに対応するから要らない悩みを抱える
GUIの設定がVBA操作にも影響を与えてしまうから制御できないかなと思った次第です。

お付き合いいただきありがとうございます。



873 名前:デフォルトの名無しさん (ワッチョイ df02-mIzA) mailto:sage [2020/05/04(月) 21:50:38 ID:6MBl5GGH0.net]
>>864
txtファイル開いた時点で何かしらのファイル名が付いてるでしょ

874 名前:デフォルトの名無しさん (ワッチョイ a764-7mTq) mailto:sage [2020/05/04(月) 22:13:52 ID:HiZbEqQh0.net]
特に目的があるわけではないけど、興味があってVBAを勉強しようと思ってます。
皆さんどんな勉強法しましたか?おすすめの本とか有りましたら知りたいです

875 名前:853 (ワッチョイ 67ac-ts7H) mailto:sage [2020/05/04(月) 22:16:36 ID:ESbXk+mE0.net]
>>865
まあ終わってるからいいけど・・

>>オプションを開いたまま
>これの意味がわからないですが、ダイアログを開いたままという意味なら、閉じても記憶は維持します。
 →これは、「検索と置換」ダイアログの
  「検索場所」ドロップダウンはGUIだと「オプション>>」ボタンで開かれる拡張エリアにのみ表示されて、
  「ブック全体を選択した」=「オプションを展開表示している」から、GUIなら気付かないわけがない。
  ということ。
  ダイアログ内の設定値同様、オプション展開状況もExcelプロセスで共有してるから、
  他のファイルで展開してるなら違うブックでも展開されたままダイアログ表示される。

>GUIの設定がVBA操作にも影響を与えてしまうから制御できないかなと思った次第です。
  VBAもGUIで行った設定の影響を受けないような、Rangeを指定する記述を普通は心掛けるべきだな

876 名前:デフォルトの名無しさん (ワッチョイ e709-ur4w) mailto:sage [2020/05/04(月) 23:21:11 ID:igVQrW+K0.net]
今までそーいうものだと思い込ませて放置していたことなのですが、
引数を使うのにカッコつけなきゃいけないメソッドと、使わなくてもいい
メソッドって、なにが違うんでしょうか?なにか理由があるのでしょうか。

Dim a As Range: Set a = Cells.Find(What:="test")
ThisWorkbook.ActiveSheet.PrintOut copies:=1

それに付け加えて、findした結果をcolllectionに格納する際、
カッコをつけるとdouble型、つけないとrange型となりました。

検索結果を格納するcollection.Add 検索range
検索結果を格納するcollection.Add (検索range)

ご教授何卒宜しくお願いいたします。

877 名前:デフォルトの名無しさん mailto:sage [2020/05/04(月) 23:58:21.23 ID:m3H0OQVZ0.net]
>>868
オプションが開かれてるという意味でしたか。
なるほどですね。
呼吸レベルでキーコンビネーションで通り過ぎちゃうので、、しっかり見るべきだと。

>VBAもGUIで行った設定の影響を受けないような
ごもっともです。

普段は .Find系は滅多に使わないのですが、あるとき大被害にあって、、、
どちらかというとGUI操作のほうが悩ましかったので、、、

API制御の方法にも辿り着けて、各Controlの制御もわかりました。
一瞬表示されてしまうのが難点ですが。良い情報をいただきました。

ご助言感謝します。

878 名前:デフォルトの名無しさん (ワッチョイ 877c-mIzA) mailto:sage [2020/05/05(火) 01:19:15 ID:nv2gdYIy0.net]
>>869
とりあえず戻り値があるかないかの違いとでも思っとけばよい

879 名前:デフォルトの名無しさん (ワッチョイ e7ad-HyhH) mailto:sage [2020/05/05(火) 03:17:48 ID:SDhPW+o/0.net]
12121212111211121112みたいな数列で、
1212..と続くものにはA、
11121112..と続くものにはBと置き換え、
AABBBのような文字列を作成することはできますか?

880 名前:デフォルトの名無しさん (ワッチョイ 2701-3faj) mailto:sage [2020/05/05(火) 04:45:25 ID:a+XprBAt0.net]
その数列を文字列に直しておく

これをReplace関数で
1212 → AA
A12 → AA
に置換する

同様に 1112 についても行う

881 名前:デフォルトの名無しさん (バットンキン MM4b-+Mqj) mailto:sage [2020/05/05(火) 12:25:05 ID:hJBFA35lM.net]
>>871
868です。ありがとうございました。

882 名前:デフォルトの名無しさん (ワッチョイ e709-ur4w) mailto:sage [2020/05/05(火) 21:19:05 ID:lsW1yIjx0.net]
vbaのエディタの話なのですが、皆様はコードの複数行を選択したいとき
ショートカットかなにか使っているのでしょうか?
たとえば、一部のコードが不要になって削除や切り取りしたいときに、
ちゃんと行頭から行末までしっかり選択しないとtabやスペースが残ってしまい、
その後コードがズレたり色々と不都合が生じています。
現在は、Homeで行頭、Shift+下矢印で選択しています。
マウスで左端をドラッグすれば選択できるのは知っていますが、これの
キーボードショートカットとかないんですかね・・・



883 名前:デフォルトの名無しさん (ワッチョイ bf2f-WRor) mailto:sage [2020/05/05(火) 21:34:38 ID:wmeBDlBR0.net]
行選択は知らんが、行削除ならCTRL-Yでよくね

884 名前:デフォルトの名無しさん mailto:sage [2020/05/05(火) 21:52:41.57 ID:PgjsbAaO0.net]
検索すれば出てくるよな、俺は shift+上/下 をよく使うけど
https://excel-ubara.com/excelvba1/EXCELVBA485.html

885 名前:デフォルトの名無しさん mailto:sage [2020/05/05(火) 22:03:15.71 ID:lsW1yIjx0.net]
>>877
web拝見しましたが、「複数選択→tabで行範囲が作成される」という部分
でしょうか?確かに、削除ならこれでいけそうです。
(コピーや切り取りのときにはtab→shift+tabで元通りにしなきゃならないかもですが)
私はずっとvbaを使わずエクセル本体の操作に慣れていたのですが、よく使っているのが
適当な複数のセル範囲を作成⇒それらをshift+spaceで行範囲化
という動作だったので、ここにいる方たちはvbaではどんな操作を
しているのか気になって質問いたしました。ありがとうございました。

886 名前:デフォルトの名無しさん mailto:sage [2020/05/05(火) 22:06:50.95 ID:PgjsbAaO0.net]
ちがうだろ

887 名前:デフォルトの名無しさん [2020/05/05(火) 22:11:42.93 ID:NpEa/agLM.net]
このハゲー

888 名前:デフォルトの名無しさん (ワッチョイ e709-ur4w) mailto:sage [2020/05/05(火) 22:30:50 ID:lsW1yIjx0.net]
>>879
すみません、何回webを読み返しても分かりません…
自分でショートカットを作れる(ユーザ設定のコマンド)という部分
かなとも思ったのですが…

889 名前:デフォルトの名無しさん (ワッチョイ 738e-jYUs) [2020/05/06(水) 00:51:48 ID:Kd1uYxyM0.net]
>>881
馬鹿は死ね

890 名前:デフォルトの名無しさん (ワッチョイ 7364-JVfZ) mailto:sage [2020/05/06(水) 00:55:04 ID:zRh9yAG10.net]
>>882
酷いこと言うね

891 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/06(水) 01:03:21 ID:6rAOvRF50.net]
コメントアウトだけはctrl+/でデフォルトでできるようにアプデして欲しいわ。。
設定もボタンクリックもめんどい

892 名前:デフォルトの名無しさん (ワッチョイ 5b09-jgrQ) mailto:sage [2020/05/06(水) 08:05:52 ID:p05hHIhJ0.net]
うーむ…どういじっても分からない…
Ctrl+Yは現在の行だけしか削除されないし、そもそも選択範囲は
作成されないし…
おっさんになった私の限界ですかね汗



893 名前:デフォルトの名無しさん (ワッチョイ 17da-oySJ) mailto:sage [2020/05/06(水) 09:03:13 ID:1Pr5leMy0.net]
>>885
やろうとしていることに何の意味がある?

894 名前:デフォルトの名無しさん (ワッチョイ 6602-uk0G) mailto:sage [2020/05/06(水) 09:22:21 ID:iCjbaALk0.net]
意味のある事しかしなかったら進化しない

895 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 10:57:23.06 ID:6rAOvRF50.net]
くっそどうでもいいことに時間かけてるな

896 名前:デフォルトの名無しさん (ブーイモ MMd6-sgQa) mailto:sage [2020/05/06(水) 12:16:06 ID:j2svN8neM.net]
クラスに対してモジュールという概念がよくわかりません。Cで言うところ外部ヘッダファイルとソースみたいなものでしょうか。クラスを使ってたら基本的に出番がない?

897 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 12:56:23.88 ID:Z893TlLs0.net]
クラスはOOPに出てくるクラス
newする必要がないならモジュール

898 名前:デフォルトの名無しさん (アウアウウー Sa1f-t13D) mailto:sage [2020/05/06(水) 13:46:31 ID:gPSsYrwFa.net]
馬鹿が進化してどうにかなるのか

899 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 14:02:43.27 ID:OIN1lY2H0.net]
モジュールはVBがオブジェクト指向になるまえからの互換のためだから
クラスを使うなら忘れてもいいよ

広域で静的なクラスだと思えばいい

900 名前:デフォルトの名無しさん (ワッチョイ cb41-KyAn) mailto:sage [2020/05/06(水) 15:26:50 ID:G9W2eJpB0.net]
>>866
そのファイル名を使っても値が変数なしになってしまいます…

901 名前:デフォルトの名無しさん (ワッチョイ 662f-jW3u) mailto:sage [2020/05/06(水) 16:43:25 ID:OIN1lY2H0.net]
>>864
それウォッチがちゃんと出ないだけで、ブックそのものはとれてるだろ
試しにやってみたが、myBookのウォッチで展開すると変数なしだが
myBook.Sheets(1).Range("A1").Activate でちゃんと動作するぞ

902 名前:デフォルトの名無しさん (ワッチョイ 6602-uk0G) mailto:sage [2020/05/06(水) 18:09:01 ID:iCjbaALk0.net]
どうにかなるのかと思考停止するバカが炙り出される



903 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 18:27:07.81 ID:1Pr5leMy0.net]
目的と手段が逆になる人たまにいる

904 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 18:39:41.01 ID:6rAOvRF50.net]
基本的にプログラミングがうまくなる人って、
早い段階で、特定のやり方にこだわらず最終的に要件を満たせればいいってことに気付けるんだよな

905 名前:デフォルトの名無しさん (ワッチョイ 17da-oySJ) mailto:sage [2020/05/06(水) 19:32:27 ID:1Pr5leMy0.net]
本末転倒か、言葉が出てこなかった

906 名前:デフォルトの名無しさん (アウアウウー Sa1f-lvFW) mailto:sage [2020/05/06(水) 19:37:46 ID:aLD+Grz6a.net]
それはプログラミングをするという前提を置いている時点で矛盾している
手段はなんでもいいから目的達成できりゃいい、だと、だいたいのことは出来合いのSaaSを契約して使うのが最良

907 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 20:34:47.68 ID:6rAOvRF50.net]
仕事ならそうだよね
代わりにSaasでってのは範囲が違うので当てはまらないけど

908 名前:デフォルトの名無しさん mailto:sage [2020/05/06(水) 20:38:43.01 ID:prm5gj7H0.net]
普段の自分のやり方じゃ対応できない場面が出た時は、
変に拘らずに完成優先でやるべきって意味でしょ

909 名前:デフォルトの名無しさん (ワッチョイ 5b09-jgrQ) mailto:sage [2020/05/06(水) 20:48:48 ID:p05hHIhJ0.net]
>>886
余計な操作が無くなることでかかる時間とストレスが減って、その分
新しい知識や技術を取り入れることに割ける、という意味があると思って
質問してみました。
>>879のちがうだろの結局何が違うのかは分かりませんでしたが…
まあ、ググレカスは昔からある2chの風習だと思いますが。

910 名前:デフォルトの名無しさん (ワッチョイ 8f63-07dd) [2020/05/06(水) 22:29:01 ID:k50qIlTz0.net]
>>902
残念ながら設定でこれだけ躓いて立ち止まるような人は言ってるような時間の有効活用できるとは思えんな
ツールはツールと割り切ったり慣れたりする事ができないなら、今後時間の有効活用できるようにもなれないよ

911 名前:デフォルトの名無しさん (ワッチョイ 738e-jYUs) [2020/05/06(水) 22:34:53 ID:Kd1uYxyM0.net]
>>902
馬鹿は死ね

912 名前:デフォルトの名無しさん (ワッチョイ cb41-KyAn) mailto:sage [2020/05/06(水) 23:47:22 ID:G9W2eJpB0.net]
>>894
できました
ありがとう



913 名前:デフォルトの名無しさん (ワッチョイ 17da-oySJ) mailto:sage [2020/05/07(Thu) 10:28:01 ID:nnhcaKI70.net]
頭のおかしい人の書き込みを読むのが無駄なので無視しますね

914 名前:デフォルトの名無しさん (オッペケ Sr33-V20a) mailto:sage [2020/05/07(Thu) 12:26:16 ID:D07kRcpQr.net]
はいつぎのひと

915 名前:デフォルトの名無しさん (ワッチョイ 6391-ABif) mailto:sage [2020/05/07(Thu) 13:12:49 ID:MibsCGor0.net]
>>897
そいつは違うな。
拘るのは必要だ。

最適なのに拘るの。
だから動いたで終わりにしないで他にもっと良い方法はないかを常に考える。

自分が知らなかった技術を手に入れた時に、これを使えば5年前のあの件はもっと上手く出来たかもと考える。

916 名前:デフォルトの名無しさん (ワッチョイ 1749-V20a) mailto:sage [2020/05/07(Thu) 14:10:36 ID:2qiR+IIc0.net]
>>908
ヒマなんだな

917 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 14:23:33.98 ID:cpirF9cIa.net]
本気でやり方に拘ったらExcelなんて大半が無駄なわけで
自分達の仕事を守るためにも割り切りは必要

918 名前:デフォルトの名無しさん (ワッチョイ bbad-I8iA) mailto:sage [2020/05/07(Thu) 14:42:35 ID:O8jL8wQb0.net]
>>897
>>908
短期では手段にこだわらない方が早いが
長期では技術向上になるから両方必要だ

919 名前:デフォルトの名無しさん (ワッチョイ 1749-V20a) mailto:sage [2020/05/07(Thu) 14:50:52 ID:2qiR+IIc0.net]
そんな1つのVBAに何日もかけれんわ

時間かけれるならWebサービスとかAPIとかもっと皆が幸せな解決方法が大体あるわ

920 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 17:22:17.83 ID:IeUYmiVSd.net]
VBAとか関係無く、プログラミング全般の話なんだけどね。
動きゃ良いとかいう奴はいつまで経っても出来るようにゃならんよ。

921 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 17:23:34.85 ID:IeUYmiVSd.net]
>>912
無い。
VBAが使われる所は殆どVBAじゃないとどうにもならんから使われてる。

922 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 17:24:33.58 ID:IeUYmiVSd.net]
>>909
出来る奴は瞬時に何通りかは思いつく。



923 名前:デフォルトの名無しさん [2020/05/07(木) 17:29:14.38 ID:OBEeDnS1M.net]
無知の知

924 名前:デフォルトの名無しさん (ワッチョイ 33ad-D+XR) mailto:sage [2020/05/07(Thu) 17:50:13 ID:oG7+JCgx0.net]
Application.CentimetersToPoints(1)
で列幅1cmにしたいんですが、
何度やっても5.64cmになります。

Rows(n).RowHeight = Application.CentimetersToPoints(1)
はちゃんと行幅1cmになりました。
Columns(n).ColumnWidth = Application.CentimetersToPoints(1)
だと何故か列幅5.64cmになります。
この事についてどう検索しても誰も言及してないことも含めて謎が尽きません。
煮詰まり過ぎて焦げ付いてきたのでどなたかアドバイスお願いします。

925 名前:デフォルトの名無しさん (ワッチョイ 33ad-D+XR) mailto:sage [2020/05/07(Thu) 17:58:41 ID:oG7+JCgx0.net]
あっまさか列と幅のポイントは同じポイントでも数値としては別物って聞いた気もする
そして行幅のポイントの方がVBAのポイントと合致しているという訳か
だとすると列幅のポイントに変換するのはどうしたらいいのか…

926 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/07(Thu) 18:13:16 ID:k5uIH00p0.net]
>>914
列幅の単位は違う

列幅の設定の仕方も
「application.centi〜 列幅」
で検索すればサンプルがいくつか出てくるけどね

927 名前:デフォルトの名無しさん (ワッチョイ becc-oySJ) mailto:sage [2020/05/07(Thu) 18:13:25 ID:z+lCu/T70.net]
>>918
ページレイアウトにして、列幅1cmをマクロ記録

928 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/07(Thu) 18:13:45 ID:k5uIH00p0.net]
あ、間違えた
アンカ>>917ね

929 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/07(Thu) 18:17:19 ID:k5uIH00p0.net]
>>915
瞬時に思い付くのに5年前のコードのこと修正するのかよw
5年間もずっとVBAばっかやって、しかもそんな昔のコード引きずってるのw

930 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:06:33.04 ID:IeUYmiVSd.net]
>>922
あれ、分からんかった?
瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
あるいは昔、どうしても解決出来なかった問題が解決出来たとか。

俺の場合はデフォルトのプリンター設定のポートを変更するプログラムが出来なくてね。
PRINTER_INFO_5構造体を使ってプリンターのプロパティ設定変更するのは出来てたけどポートはさらに先のポインタでその時は出来なかった。

もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

931 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:59:41.10 ID:k5uIH00p0.net]
>>923
効いてて草、必死すぎw

932 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/07(Thu) 20:18:07 ID:IeUYmiVSd.net]
>>924
理解出来なくて悔しいからって、そうまでして絡みたいの?



933 名前:デフォルトの名無しさん (ワッチョイ 6668-uk0G) mailto:sage [2020/05/07(Thu) 20:58:22 ID:SRAFxxem0.net]
効いてる事にして勝ったつもりになってるけど実は・・・

934 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 21:20:02.04 ID:k5uIH00p0.net]
>>925
別に古臭いVBAおじさんに絡みたいとかないけどなw
その程度でどや顔して、こんなところで長文まで書いて哀れだなあってねw

・瞬時に5個思い付く(ドヤア)
・10年以上前の話(ドヤア)
・どうしても解決出来ない問題が解決できた(ドヤア)

いい年して恥ずかしいww

935 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 21:20:55.13 ID:XMGIuLDd0.net]
>>917
煮詰まったなら完成じゃん。

936 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 21:29:03.52 ID:vCXp7vkf0.net]
4月、5月、6月というシートを請求書という新しいブック名のシートに追加していきたい場合

請求書というブックがなかったら
請求書というブックを作成して○月のシートをコピー
既に請求書というブックがあったら
そのブック内に○月のシートをコピー

という考え方でいいですか?
というか可能ですか?

937 名前:デフォルトの名無しさん (ワッチョイ cf7c-7oqX) mailto:sage [2020/05/07(Thu) 21:34:48 ID:wHiSIw2F0.net]
既にあるブックを変えて問題ないんならいいんじゃないの

938 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 21:46:21.07 ID:IeUYmiVSd.net]
>>927
悔しいと素直に言えば良いのにw

939 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 21:58:23.82 ID:k5uIH00p0.net]
>>931
あ、恥ずかしくなってるwかわいーねーw

940 名前:デフォルトの名無しさん (ワッチョイ 33ad-D+XR) mailto:sage [2020/05/07(Thu) 22:16:17 ID:oG7+JCgx0.net]
色々調べ直して列幅1cmできた! ありがとうございます。
それにしたって、なんと解りにくい…
CentimetersToColumnPointsみたいにしてくれればいいのに…

941 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/07(Thu) 22:22:20 ID:IeUYmiVSd.net]
>>932
自分の技術が足りないのがそんなに悔しいのかねw

942 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/07(Thu) 22:33:54 ID:k5uIH00p0.net]
>>934
恥ずかしくて言えることないの草
黒歴史だねーww



943 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/07(Thu) 22:35:53 ID:k5uIH00p0.net]
>>934
あ、>>929とか5通り早くコード付で答えてあげなよww
あと5年後まで改善策見つけたら書き込んでねw

944 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 22:48:13.57 ID:IeUYmiVSd.net]
>>935
君が初心者に毛が生えたレベルなのは俺の責任じゃ無いんだ。
悔しいからって絡むのは辞めてくれw

945 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 22:50:20.24 ID:IeUYmiVSd.net]
だいたい、バカにしようととしたら自分より上のレベルで悔しくても、それは自分が悪いんだろw

946 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 23:08:01.99 ID:ATN3rOjQ0.net]
array関数で要素を代入する際に、プロシージャ引数のヒントの様にカンマで区切ると何を入力すべきか表示させることは出来ないでしょうか。要素が多いので解りづらくて
戻り値ありの関数作るべきなのでしょうか

947 名前:デフォルトの名無しさん mailto:sage [2020/05/08(金) 00:15:43.02 ID:7LgH0Xf00.net]
>>939
入力に困るほど大量のデータをプログラム中に直接書くのは設計が悪いと思う
せめてワークシートに見出しを付けて並べたら?

948 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/08(金) 00:44:49 ID:NrG+fdAu0.net]
>>937
恥ずかしい書き込みするやつの言うことは違うなあw
10年以上前の話とか言っちゃうんだもんなあww
で、5年がなんだって?w

949 名前:デフォルトの名無しさん (ワッチョイ 6391-ABif) mailto:sage [2020/05/08(金) 02:37:36 ID:LrYvIqoM0.net]
>>941
だから絡むの辞めてくれ。
初心者のプライドが傷ついたのかよw

950 名前:デフォルトの名無しさん (ワッチョイ 17da-oySJ) mailto:sage [2020/05/08(金) 09:10:24 ID:gaKPf4O20.net]
1000とった方が勝ち

951 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/08(金) 09:39:57 ID:NrG+fdAu0.net]
>>942

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

ん?早く質問者に5通りコードで回答してあげなよ、プロVBAおじさんww

952 名前:デフォルトの名無しさん (ワッチョイ 6668-uk0G) mailto:sage [2020/05/08(金) 10:17:39 ID:SGzHt0H00.net]
このスレにコロナでも混ざってんの?



953 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/08(金) 12:21:01 ID:KpBIrL5Ad.net]
>>944
その返しもバカっぽくね?
質問の内容とか考えた?

954 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/08(金) 12:25:59 ID:KpBIrL5Ad.net]
>>944

>早く質問者に5通りコードで回答してあげなよ

日本語をちゃんと理解することができる?

955 名前:デフォルトの名無しさん (ワッチョイ 7f7f-sgQa) mailto:sage [2020/05/08(金) 12:27:38 ID:EoiUnzGX0.net]
static変数の宣言と同時に初期値入れても、Cと違って毎回初期値が入るようなんですけが回避方法ってありますか

956 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/08(金) 12:37:08 ID:NrG+fdAu0.net]
>>946
ほらほらー、10年以上やってこの程度も5通り分からないの?ww

「出来る奴は瞬時に何通りかは思いつく。」
んだろwwほらほらww

957 名前:デフォルトの名無しさん (アウアウウー Sa1f-Y/5H) mailto:sage [2020/05/08(金) 18:51:21 ID:F9AE4+4ta.net]
バッチを非同期で実行したいんだけどShellでやってもWSHShellでやっても
バッチの終了まで待たされるんだけど何故?

やってることはIEを操作してファイルをDLするところまでVBAでやって
それ以降の処理をバッチでやりたいんだけど…

958 名前:デフォルトの名無しさん (ワッチョイ cfe6-r6hg) [2020/05/08(金) 19:02:53 ID:XNwDJZFz0.net]
非同期オプション付けても出来ないのですか?
不思議ですね

959 名前:デフォルトの名無しさん (ワッチョイ 7364-JVfZ) mailto:sage [2020/05/08(金) 19:59:31 ID:swHMPSPD0.net]
最大で何行くらい組んだことある?

960 名前:デフォルトの名無しさん (ワッチョイ aea7-XasS) mailto:sage [2020/05/08(金) 20:43:59 ID:1Hremoh70.net]
2000

961 名前:デフォルトの名無しさん (アウアウウー Sa1f-2+Ho) [2020/05/08(金) 21:13:02 ID:oLBub1X/a.net]
vbaでハイパーリンク設定済み場所から
フルパスを取得したいです。

https://www.google.co.jp/amp/s/gamp.ameblo.jp/ksej/entry-11288945247.html

このサイトの方法でネットワーク上のアドレス取得して
あるセルにフルパスを貼りたいんだけど
カレントディレクトリが¥¥A¥B¥C
とあったら、¥¥A¥Bまでしか貼り付けに反映されないのってなぜかわかりますか?

msgboxでカレントディレクトリだけ表示させたら
Cまで表示されますが貼り付けたらBまでしか表示されない感じです。

あとカレントフォルダの設定はこのサイトの方法です。
https://vbabeginner.net/vbaでネットワークドライブにカレントを変更する/

962 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/08(金) 21:31:38 ID:KpBIrL5Ad.net]
>>949
くだらねえ煽りの前にお前が日本語を理解出来て無かったのが分かったのか?
そして今は理解出来てるんだろうな?



963 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/08(金) 21:32:10 ID:KpBIrL5Ad.net]
>>949
そしてもう1つ。
質問の内容とか考えた?

964 名前:デフォルトの名無しさん (スプッッ Sd2a-ABif) mailto:sage [2020/05/08(金) 21:43:28 ID:KpBIrL5Ad.net]
>>950
Shellは待たされないと思うぞ。
待つにはタスクからプロセスハンドルを得て、WaitForSingleObjectとかを使う筈。
←たしかこいつは古いんで今は似た名前の奴を使う。

965 名前:デフォルトの名無しさん (ワッチョイ 738e-jYUs) [2020/05/08(金) 22:58:17 ID:AMoglHga0.net]
>>954
ただのコピペしかできない馬鹿だからだろ

966 名前:デフォルトの名無しさん (アウアウウー Sa1f-2+Ho) [2020/05/08(金) 23:39:12 ID:oLBub1X/a.net]
>>958
他のサイトも色々見て調べたり試行錯誤したのですが
Cが表示されなくて。

何か縛り的なのがあるかわかりますか。
貼り付け時の表示文字数に制限があるとか。

最悪わからなければ、
¥¥からCまでを取得したものをセルに貼り付けて
C以降を貼り付けたものを&で繋げて使おうか迷ってます。

967 名前:デフォルトの名無しさん (ワッチョイ b7ce-oySJ) mailto:sage [2020/05/08(金) 23:49:29 ID:7LgH0Xf00.net]
>>954
最小限のコードで実験してみ?
(1)ワークシートにハイパーリンク設定
(2)FSOでフルパス取得
(3)MsgBoxで確認
(4)セルにフルパスの文字列を入れる

968 名前:デフォルトの名無しさん (アウアウウー Sa1f-2+Ho) [2020/05/08(金) 23:56:44 ID:oLBub1X/a.net]
1)と2)と4)についてはBまでの表示

3)についてはフルパスでは試してないので、試して見ます。

ちなみに3)はカレントディレクトリのみで行うと、Cまで表示されて、次の行に2)を試すとBまでになってしまいます。

969 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/09(土) 00:37:26 ID:SO2yq4ky0.net]
>>955
質問どんどん来てるよww
10年やってきたんだから早く5通り以上答えてあげなよww
そしてリファクタリング出来たらその都度書き込んでなw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

970 名前:デフォルトの名無しさん (アウアウウー Sa1f-Y/5H) mailto:sage [2020/05/09(土) 09:12:02 ID:jb1+fPLha.net]
>>957
思うぞと言われても実際待たされてるから困ってるんだが。

検索しても待つ方法しか引っかからんし…
CPU使用率が上がるとVBAスクリプトが止まるとかそういうわけじゃないよね

971 名前:デフォルトの名無しさん (オッペケ Sr33-DSpW) mailto:sage [2020/05/09(土) 09:12:34 ID:5lxB5cuMr.net]
パスとドライブの違いわかってる?
uncパスの形式わかってる?
そのaもbもフォルダじゃないけど、なにをどうやって表示させた?

972 名前:デフォルトの名無しさん (ワッチョイ b7ce-oySJ) mailto:sage [2020/05/09(土) 10:41:18 ID:OK904gHA0.net]
最小限のコードでテストしてみた
Excel2019のshell関数でバッチの同時起動できてるから原因は別の所にある
https://i.imgur.com/bqqc2uc.png



973 名前:デフォルトの名無しさん (ワッチョイ 17da-oySJ) mailto:sage [2020/05/09(土) 11:14:42 ID:m7V0shMq0.net]
>>954
ハイパーリンク扱う時って表示文字列とアドレスの2つがあった気がするが関係ないか?

974 名前:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho) [2020/05/09(土) 12:02:06 ID:zV8Vx2bY0.net]
>>964
わかりにくくてすいません。

abcは仮に書いた感じで、実際はネットワーク上のフォルダ名になります。

975 名前:デフォルトの名無しさん (ワッチョイ b7ce-oySJ) mailto:sage [2020/05/09(土) 12:06:22 ID:OK904gHA0.net]
>>967
何をやろうとしてるのかイマイチよくわからん
試したコードとワークシートのスクショをここに書いて

976 名前:デフォルトの名無しさん (ワッチョイ 6391-ABif) mailto:sage [2020/05/09(土) 12:11:35 ID:74X5YOol0.net]
>>962
日本語が理解出来てたのか出来て無かったのかどっちだい?
話はそれからだ。

977 名前:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho) [2020/05/09(土) 12:17:50 ID:zV8Vx2bY0.net]
>>968

ネットワーク上にあるエクセルファイルで、
相対参照で貼り付けされたハイパーリンクがあるんですが
それを絶対参照で取得したいです。

カレントディレクトリを¥¥a¥¥b¥¥cで設定し
GetAbsolutePathNameで取得しあるセルに貼り付けると
なぜか¥¥a¥b¥取得したパス.xlsxになります。
カレントディレクトリをmsgboxで表示すると¥¥a¥b¥cとなります。

今端末が手元にないので、スクショ取れるようになり次第
対応します。

助かります。

978 名前:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho) [2020/05/09(土) 12:23:23 ID:zV8Vx2bY0.net]
>>966
アドレスを変更しています。

979 名前:デフォルトの名無しさん (ワッチョイ 7364-JVfZ) mailto:sage [2020/05/09(土) 12:40:40 ID:5ucHUX9S0.net]
どうやってvba勉強した?

980 名前:デフォルトの名無しさん (JP 0He6-lvFW) mailto:sage [2020/05/09(土) 12:48:47 ID:drDVgFRjH.net]
いくつか他の言語はできるからなんとなく雰囲気で
特に勉強はしていない

981 名前:デフォルトの名無しさん (ワッチョイ 6391-ABif) mailto:sage [2020/05/09(土) 13:04:53 ID:74X5YOol0.net]
>>963
何となく分かった。
待たされたんじゃなくてフォーカスがバッチファイルにある。

よく、たくさんのウィンドウが開いてる時なんかにメッセージを表示しようとタスクバー上で点滅してるのと同じ現象。
バッチファイル実行中にExcelをクリックするとすぐ実行されるよ。

Shellの第2引数にvbNormalNoFocusを指定してみよう。

982 名前:デフォルトの名無しさん (ワッチョイ 6391-ABif) mailto:sage [2020/05/09(土) 13:16:32 ID:74X5YOol0.net]
>>970
カレントディレクトリとは何かを調べた方が良い。
これはエクセルファイルだとかに関係が無い。
動いている場所だ。
ブックのある場所でも無い。

ハイパーリンクの相対参照、絶対参照の操作でカレントディレクトリが関係することは無い。



983 名前:デフォルトの名無しさん (スフッ Sd8a-xOzV) mailto:sage [2020/05/09(土) 13:16:59 ID:hJO1Owz9d.net]
>>972
マイコンBASICマガジンのゲームがやりたくて覚えた
子供は記憶力がいいからすぐ覚えた
大人になってから始める人は大変だろうね

984 名前:デフォルトの名無しさん (ワッチョイ 738e-jYUs) [2020/05/09(土) 13:21:14 ID:WSrPnN3q0.net]
意味もわからずただコピペしかできない馬鹿には無理

985 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/09(土) 13:25:01 ID:SO2yq4ky0.net]
>>969
話はそれからだ、ってコード5つ提示もしないで答えない10年経験者に言われてもなあww
ほらコード5つ提示して答えてあげなよw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

986 名前:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho) [2020/05/09(土) 13:27:57 ID:zV8Vx2bY0.net]
>>975
ご指摘ありがとうございます。

相対参照だと./や../で省略されてしまうので
省略される箇所(ネットワーク上(インターネット上ではない)の決まったフォルダ)
を指定するためにカレントディレクトリで設定していました。

ちなみに複数端末でファイルを操作する事を想定しています。

もう少し勉強します。

987 名前:デフォルトの名無しさん mailto:sage [2020/05/09(土) 13:33:59.72 ID:74X5YOol0.net]
>>978
やっぱり日本語分かってねえじゃんwww

988 名前:デフォルトの名無しさん mailto:sage [2020/05/09(土) 13:40:39.44 ID:m7V0shMq0.net]
>>970
ネットワーク上にあるエクセルファイルはUNCパスになるので
ディレクトリ構成はサーバー上での階層
一番上はサーバーのIPアドレス(DNSで変換された名前)

989 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/09(土) 14:38:22 ID:SO2yq4ky0.net]
>>980
自分の言ったこと分かってねえじゃんww

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

990 名前:デフォルトの名無しさん (ブーイモ MM97-OuYa) mailto:sage [2020/05/09(土) 15:54:31 ID:INzaqzr5M.net]
議論してるところ申し訳ないけど
>>929
わかる方お願いできますか

991 名前:デフォルトの名無しさん (ワッチョイ 17f8-lN29) mailto:sage [2020/05/09(土) 15:58:18 ID:JX27GBwZ0.net]
>>983
合ってるよ

992 名前:デフォルトの名無しさん mailto:sage [2020/05/09(土) 16:04:20.17 ID:74X5YOol0.net]
>>982
バ一カw

>>984
そう、これが正解。
バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。



993 名前:デフォルトの名無しさん (ワッチョイ 7332-R2sI) [2020/05/09(土) 18:27:33 ID:d0o5iTyS0.net]
>>984
便乗してそのコード教えてくれせんか

994 名前:デフォルトの名無しさん [2020/05/09(土) 18:39:39.46 ID:3Qrhs3L2M.net]
ある表があって一行ずつアクティブセルをループで下に移動させ、条件があった場合offset で特定のセルを集計するマクロを作成し使用してたんだけど、
アクティブセルじゃなくてcellで置き換えたら実行スピードが早くなった。
やっぱり画面が遷移すると遅くなるんだよね?
オートフィルタ組み込むと遅くなる?

995 名前:デフォルトの名無しさん (ワッチョイ 6bac-V20a) mailto:sage [2020/05/09(土) 19:29:16 ID:SO2yq4ky0.net]
>>985

矛盾しまくってるがww
頭悪いなーVBA10年以上やってるんだろww
瞬時に5通りできるんじゃないんですかー?www

ID:KpBIrL5Ad
ID:74X5YOol0
ID:MibsCGor0

>バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

996 名前:デフォルトの名無しさん [2020/05/09(土) 19:48:20.99 ID:YHeP8Ot70.net]
>>986
死ねよ

997 名前:デフォルトの名無しさん (ワッチョイ 7f7f-sgQa) mailto:sage [2020/05/09(土) 20:09:54 ID:7P+we5mg0.net]
フォームからシートにデータを入力する場合、セルに値を入れるコードはどちらに書く方が良いのでしょうか。
シート側に関数処理書いて、フォーム側から引数渡す形を考えていますが、本来はどういう使い方なのかわからず。

998 名前:デフォルトの名無しさん (ワッチョイ 17da-oySJ) mailto:sage [2020/05/09(土) 20:14:54 ID:m7V0shMq0.net]
>>990
書き方が何通りかある場合、どれを選択するかは作る人が選択すればいい

999 名前:デフォルトの名無しさん (ワッチョイ cf7c-7oqX) mailto:sage [2020/05/09(土) 20:29:18 ID:JFqcrtJG0.net]
>>987
表示に影響する処理は速くない

1000 名前:デフォルトの名無しさん (ワッチョイ cf7c-7oqX) mailto:sage [2020/05/09(土) 20:32:02 ID:JFqcrtJG0.net]
>>990
自分だったらシートには書かない

1001 名前:デフォルトの名無しさん mailto:sage [2020/05/09(土) 21:56:43.63 ID:RixiaBnA0.net]
>>990
変なやり方だね

1002 名前:デフォルトの名無しさん (ワッチョイ 7eef-oySJ) mailto:sage [2020/05/09(土) 22:11:53 ID:yzOAykNA0.net]
>>938
フォームとシートでどちらが主役かで決めるといいと思ったけど
シートをコピーしたときにコードもコピーされて後で大変になるから、シートじゃない方がいいね



1003 名前:デフォルトの名無しさん (ワッチョイ 7eef-oySJ) mailto:sage [2020/05/09(土) 22:12:57 ID:yzOAykNA0.net]
×>>938
○>>990
です

1004 名前:デフォルトの名無しさん (ワッチョイ 7f7f-sgQa) mailto:sage [2020/05/09(土) 22:22:33 ID:7P+we5mg0.net]
ありがとうございます。
フォームのコード量が多くなりますね。別クラスに記述してみます。

1005 名前:デフォルトの名無しさん mailto:sage [2020/05/09(土) 23:28:56.55 ID:m7V0shMq0.net]
>>997
お前の仕事はお前が判断すればいい

1006 名前:デフォルトの名無しさん mailto:sage [2020/05/09(土) 23:43:47.15 ID:G+eyUkVB0.net]
俺の仕事はお前のものだ。
お前の仕事はお前のものだ。
お前の手柄は俺のもの。
俺の手柄は俺のものだ。

みんな違っていいじゃないか。
だって、人間だもの。

1007 名前:デフォルトの名無しさん mailto:sage [2020/05/10(日) 08:02:11.47 ID:Nkoph0aj0.net]
俺の手柄なら金くれ

1008 名前:デフォルトの名無しさん mailto:sage [2020/05/10(日) 08:02:44.03 ID:Nkoph0aj0.net]
1000

1009 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 53日 15時間 35分 24秒

1010 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef