1 名前:デフォルトの名無しさん [2017/11/08(水) 11:26:30.13 ID:+KUB1/9hd.net] スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※関連スレ VBAなんでも質問スレ Part2 mevius.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 mevius.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 126 https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/ ※前スレ Excel VBA 質問スレ Part50 mevius.2ch.net/test/read.cgi/tech/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
325 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 09:19:50.58 ID:lwbJHU3ya.net] お力添えをお願いします チェックボックスでチェック入れたら行の高さを0にし、チェック入れなかったら13.5にしたいのですがうまく動作してくれません Sub チェック8_Click() Dim A As Boolean Dim B As Boolean If A = True Then A = Rows(43).RowHeight = 13.5 B = Rows(44).RowHeight = 13.5 Else A = Rows(43).RowHeight = 0 B = Rows(44).RowHeight = 0 End If End Sub どこが間違っているのかご教示お願いします。
326 名前:デフォルトの名無しさん [2017/12/03(日) 09:52:22.12 ID:ObUuqjZI0.net] >>317 行は適当に変えてくれ Private Sub CheckBox1_Click() If CheckBox1.Value Then Rows(3).RowHeight = 13.5 Rows(4).RowHeight = 13.5 Else Rows(3).RowHeight = 0 Rows(4).RowHeight = 0 End If End Sub
327 名前:デフォルトの名無しさん [2017/12/03(日) 10:04:41.09 ID:ObUuqjZI0.net] >>317 フォームコントロールならこっちだわ コントロール名は適当に変えてくれ Sub チェック2_Click() If Sheet1.CheckBoxes("チェック 2").Value = 1 Then 'これでダメなら下を試そう 'If "Sheet1".Shapes("チェック 2").ControlFormat.Value = 1 Then Rows(3).RowHeight = 13.5 Rows(4).RowHeight = 13.5 Else Rows(3).RowHeight = 0 Rows(4).RowHeight = 0 End If End Sub
328 名前:デフォルトの名無しさん [2017/12/03(日) 10:11:57.07 ID:lwbJHU3ya.net] >>319 ありがとうございます!!!こちらで動作しました!!本当に有難うございます!!!
329 名前:デフォルトの名無しさん [2017/12/03(日) 10:42:36.13 ID:HLUSF6su0.net] 〉〉314 できるの? 入力規則の絞り込みじゃないよ? 階層化してリストから直接下層に移動(3段階くらい)して選択する方法だよ? <
330 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 11:18:12.75 ID:U0ESQ6dD0.net] おいおい急に条件増やすなよw www.tschoolbank.com/excel/validation-list-linkage/ こういうことじゃないのかよ
331 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 11:24:14.71 ID:pXIsIngK0.net] >>322 これの話だから知らないなら絡んでくるなよ mevius.2ch.net/test/read.cgi/bsoft/1506938295/713
332 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 11:39:56.54 ID:JkBkmVnb0.net] >>314 違う。 そのコード書いた奴に向かって言ってるのと、躓いてる奴にはそのコードはよろしくないと言ってる。 何の例かは分からんが、もっと現実的なコードにすべきなんだぜ。
333 名前:デフォルトの名無しさん [2017/12/03(日) 12:12:17.46 ID:HLUSF6su0.net] >>322 しかも、わかりにくいかもしれないけど条件ちゃんと書いてあるんだけどね 入力規則の絞り込み検索じゃない。 階層ごとにクリック選択する事すらめんどくさいと言ってるんだよ。 一度の選択でリストの階層移動ができるかどうかを質問主は相談所で聞いていて 自分はVBAないとだめだよと回答したけどVBAだとどうなんだろうとこっち で聞きなおしてみたんだけど、
334 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 12:58:31.51 ID:A600L+iiM.net] >>325 さすがにそれは読み取れん
335 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 13:12:35.66 ID:bN8T4SKTM.net] >>323 こういう糞レスがつくからスレが過疎るんだぞ
336 名前:デフォルトの名無しさん [2017/12/03(日) 13:54:27.80 ID:HLUSF6su0.net] ちゃんと、VBAでリストの絞り込みって一度で出来る? こう書いて その下に 多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって こう書いてあるんだけど読み取れない? しかも、前文にエクセル相談所にあった質問こうも書いてあるし。 で、わざわざVBAで聞いてるのにわからないかー
337 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 15:23:42.34 ID:icSWQcwl0.net] 具体的なコードが伴わない場合は外野がなんかゴチャゴチャ言っている程度に聞き流すべき。 >>323 の質問はウィンドウズ標準のメニューバーみたいな形を想定しているみたいなので、 外部参照にMicrosoft Toolbarとかあれば、それを追加して解決するんじゃないかな。
338 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 15:57:02.43 ID:pXIsIngK0.net] >>328 > 多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって マウス操作にはクリックも含むのが普通だと思うぞ >>327 無駄なレスしてなにか楽しいのか? >>329 あっちのスレ読めばわかるけどそもそも VBA 使わずにできるかどうかの問題になってるから Toolbar 云々の話ですらない お前さんこそ聞き流すべき
339 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 16:12:49.11 ID:icSWQcwl0.net] >>330 どちらかというと>>315 の質問に答えた形だけど。 向こうの質問にこっちで答える義理もないし。
340 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 17:11:02.86 ID:JkBkmVnb0.net] >>315 それは、VBAでも出来ないと思う。 というかWindowsの標準動作と違う。 似たようなのは出来るかもしれないけど。 コンボボックスじゃなくメニューなら出来るかな。 見ためが違うけど。 見ためをコンボボックスにしたいならコンボボックス使わずにフォ−ムに描画した方が楽じゃね? コンボボックスだと選択しないとイベント発生させるのが難しいし、イベント発生時にブルダウンが閉じるのが通常動作だから。 サブクラスでHITTEST検出で出来るかどうか。 VBAではウルトラC級に難しい。
341 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 17:13:47.51 ID:JkBkmVnb0.net] >>329 メニューバーの見ためは駄目なんじゃないの? 俺もメニューバーが現実的だとは思うけど。
342 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 18:36:56.64 ID:RpLqv7Ag0.net] >>315 階層付きMenuで3項同時に入力するってこと? 自分だったらContextMenuの改造またはPopupでやるかな。 見た目悪いけど、最下層をデリミタ区切りのフルセットにすれば Splitして投げ込むだけでいいでしょ? CellのContextMenuだとあとで標準に戻すこと考えないと いけないので最近はもっぱらPopupばかり使ってる。 Cellのプルダウンだと表示数に限りがあるけど、Popupだと 画面サイズいっぱいまでいけるし、、 あ、もちろんCommandBarsのアレのことです。
343 名前:デフォルトの名無しさん [2017/12/03(日) 22:48:18.35 ID:DUCKYmEka.net] >>315 いえ、1つ目のリストを表示して、マウスの位置をその位置まで持ってきて 2つ目のリストを表示してって3つ目のリストを最終的に表示するみたいな。 エクセルの旧表示みたいな感じで、ファイル→検索みたいな感じです。 多分
344 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 00:43:15.26 ID:oPXdl+lm0.net] >>335 いやだからそれって、階層メニューのことでしょ? 手近なところでいうと、、、たとえばFireFoxだと、 表示 > テキストエンコーディング > 自動判別 > 日本語 みたいな。この手のMenuって、onMouseOverイベントで 下層が勝手に開いていきますよね。 それで各階層の選択肢を全部入力値として使うことじゃないの?
345 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 02:58:02.92 ID:Fxj9yJGL0.net] そう、これはメニューの動作なんだ。 コンボボックスで実現するのはとても難しい。 ほとんどの奴は上級者でも不可能と言うだろう。 それとも俺の知らない何かがあるかもしれないけど。
346 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:21:07.64 ID:oPXdl+lm0.net] コンボの配下にメニュー作ろうとすると怒られた。 階層メニューによる一括入力、自分でも使うかもと思い作ってみたよ。 1) 前提:質問者のリンク先キャプチャを参考 A2:C2が回答入力欄 キャプチャにある凡例を登録するための矩形範囲を"R_Master"とする。 2)呼出部:キャプチャのA1セルにある "商品"の文字列を右クリックで発動。 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Resize(1, 1).Value = "商品" Then Cancel = True Call Popup_FullPut(Range("R_Master"), " 個") End If End Sub
347 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:23:18.02 ID:oPXdl+lm0.net] 3)Menu生成部 Sub Popup_FullPut(rngMst As Range, Optional strUnit As String) Dim r As Range Dim i As Long, j As Long, k As Long With CommandBars.Add(Position:=msoBarPopup) For i = 0 To rngMst.Rows.Count - 1 Set r = rngMst.Offset(0, 0).Resize(1, 1).Offset(i, 0) If r.Value = "" Then Exit For With .Controls.Add(msoControlPopup) .Caption = r.Value For j = 0 To rngMst.Rows.Count - 1 Set r = rngMst.Offset(0, 1).Resize(1, 1).Offset(j, 0) If r.Value = "" Then Exit For With .Controls.Add(msoControlPopup) .Caption = r.Value For k = 0 To rngMst.Rows.Count - 1 Set r = rngMst.Offset(0, 2).Resize(1, 1).Offset(k, 0) If r.Value = "" Then Exit For With .Controls.Add(msoControlButton) .Caption = r.Value & strUnit .OnAction = MkAction( "Popup_Input", rngMst.Address(external:=True),i & "|" & j & "|" & k ) End With Next End With Next End With Next .ShowPopup .Delete End With End Sub
348 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:24:02.05 ID:oPXdl+lm0.net] 4)入力実行部 Sub Popup_Input(strMst As String, strAns As String) Dim rngR1 As Range: Set rngR1 = Range("A2") Dim rngR2 As Range: Set rngR2 = Range("B2") Dim rngR3 As Range: Set rngR3 = Range("C2") Dim rngMst As Range: Set rngMst = Range(strMst) Dim i As Long, j As Long, k As Long i = Split(strAns, "|")(0) j = Split(strAns, "|")(1) k = Split(strAns, "|")(2) rngR1.Value = rngMst(i + 1, 1).Value rngR2.Value = rngMst(j + 1, 2).Value rngR3.Value = rngMst(k + 1, 3).Value End Sub
349 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:28:37.65 ID:oPXdl+lm0.net] 5)引数付きのOnActionコマンドの生成に普段使っている関数 ん?書き込めない、、なんで? 要は文字列生成がメンドーだから関数使ってるだけなんだけど、、
350 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:36:14.51 ID:oPXdl+lm0.net] 刻んでみる。 5)引数付きのOnActionコマンドの生成に普段使っている関数 Function MkAction( strCMD
351 名前: As String, Optional arg1 As String, Optional arg2 As String ) [] [ここ壊れてます]
352 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:41:24.99 ID:oPXdl+lm0.net] Dim文のところではじかれるみたい、、 5)引数付きのOnActionコマンドの生成に普段使っている関数 Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String ) Dim DQ As String: DQ = Chr(34) Dim SQ As String: SQ = Chr(39) Dim buf As String buf = strCMD & " " If arg1 <> "" Then buf = buf & DQ & arg1 & DQ If arg2 <> "" Then buf = buf & "," & DQ & arg2 & DQ MkAction = SQ & buf & SQ End Function 書き込めたかな? Chr関数は禁則?
353 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 03:44:57.18 ID:oPXdl+lm0.net] 書き込めた。 Chr関数で引っかかっていたみたい。実際は半角です。 インデントは全角スペースになっているので変換が必要です。
354 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 07:27:39.63 ID:65GoxPZl0.net] VBEにコピペすると、全角スペースは自動的に半角スペースに変換されるから意識する必要ない
355 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 07:55:50.52 ID:oPXdl+lm0.net] >>345 本当ですね。 tnx!
356 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 20:57:29.50 ID:dwGLun0F0.net] エクセルのVBAで、サーバー上にディレクトリを作成して、そこにファイルを移動させたいのですが、 MkDIRで作成できませんでした。どうすればよいでしょうか?
357 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 21:25:35.80 ID:JPkeWfWn0.net] >>347 FileSystemObject使えばできますよ。 サーバー側の権限は大丈夫ですか?
358 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 21:34:50.27 ID:dwGLun0F0.net] >>348 ありがとうございます! dim myFSO as new filesystemobject myFSO.CreateFolder (サーバー上のつくるディレクトリ名)でいけますか? それともカレントドライブをサーバー上に移動すべきでしょうか?
359 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 00:43:40.01 ID:D6s1mPo40.net] >>349 試してみたら?
360 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 11:15:00.00 ID:8dpxpCOD0.net] 質問です。 プロシージャの処理の途中でイミディエイトウィンドウをうまくクリアする方法はありますか?
361 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 11:39:53.74 ID:MQk7+ulPa.net] あるかないかでいえば、 ないこともないアル 地道にセンドキーでキー送って 全選択してデリートしてって方法がな
362 名前:デフォルトの名無しさん [2017/12/06(水) 11:46:45.28 ID:vAzWmOhld.net] 関係ないけどブックを開くとイミディエイトウィンドウ上の変数が消滅するの困る
363 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 13:39:40.38 ID:yYTt94fN0.net] >>352 その際はFocusをVBEに移してイミディエイトPaneをアクティブにする操作を挟むのでしょうか?
364 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 16:07:50.81 ID:ykbUk5IV0.net] エクセルのVBAで競馬予想ソフト作っている人っていますか?
365 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 19:37:25.77 ID:sdGXOm2ja.net] >>354 デバッグ クリア VBAで検索したら 幸せになれるかもよ
366 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 21:02:08.65 ID:H8Zs2M1B0.net] VBAでコンボボックスのリストのみクリアってどうやってやるんですか?
367 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 23:12:55.48 ID:ClwZMpdPa.net] >>357 正式にやるのは多分すごく難しい。 Win32APIでコンボボックス内のリストボックスに対してどうにかするということになると思う。 しかし、単純に strCombo=ComboBox1.Text ComboBox1.Clear ComboBox1.Text=strCombo でテキストが一瞬クリアされたのは見えないから現実的な案だと思う。
368 名前:デフォルトの名無しさん [2017/12/07(木) 10:43:49.53 ID:cGZzJnMw0.net] シートの非表示設定について Sheets(”sheet1").Visible = False でシート非表示設定をしたのですが元々非表示だとバグになってしまいます。 釦を押せば特定のシートのみを表示できるようにしたいんですけど表示時非表示時がランダムで 非表示時でもそのコード無視するかと思ったら非表示なのに非表示にするんじゃねぇと怒られた。
369 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 10:55:46.75 ID:SgQPpSGG0.net] >>359 VisibleプロパティがBooleanで状態を返すのでIfで分岐させる If Sheets("sheet1").Visible Then Sheets("sheet1").Visible = False Else Sheets("sheet1").Visible = True End If こうすると実行するたびに表示/非表示が切り替えられる
370 名前:デフォルトの名無しさん [2017/12/07(木) 11:24:06.29 ID:cGZzJnMw0.net] >>35 8 ありがとうございます。できました。 なんとなく、if文使うのかなと思ったのですがif文が思いつかなかった。 Elseの下を消すことで、非表示時は非表示のままのする思い通りの事が出来ました。
371 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 11:50:17.69 ID:/U/N3RBoa.net] >>360 それだと非表示の時は表示されるからElseはいらねえだろ。 俺も Sheets("sheet1").Visible=(Not Sheets("sheet1").Visible) と最初考えたけどやっぱIf文にしないと駄目かと考えた。
372 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 12:06:28.65 ID:SgQPpSGG0.net] >>361 たぶん他人にも使わせるのだと思いますが シートをシート名じゃなくオブジェクト名で指定すると 誰かが勝手にシート名を変えても関係ないのでオススメ。 さらにわかりやすいオブジェクト名に書き換えると、尚良し。 オブジェクト名はVBEのプロパティウィンドウの(オブジェクト名)を見てね。 初期値はSheet1なので Sheets("sheet1")をSheet1に置き換えてもうごくはず。 >>362 あとから余計なこと書いたかなーと思ったけど、本人が気づいてくれてよかった。
373 名前:デフォルトの名無しさん [2017/12/07(木) 13:06:30.92 ID:cGZzJnMw0.net] 〉〉361 ど素人で何もわからないままマクロの記述させながら必要なところ コピペしてとネットコピペでほとんどコード打ち込まず作ってるので まだ、オブジェクトまで触ってません。 今度触ってみたいと思います。 標準モジュールは逆になんのモジュールかわからなくなるの必要なモジュールと区別するために名前つけてるけど sheet名はそのままです。
374 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:42:15.17 ID:F/BnOZfeM.net] >>287 ワシはティンコを2本もっている 2本目はとっておきだ(´・ω・`)b
375 名前:デフォルトの名無しさん [2017/12/07(木) 22:24:29.94 ID:QxT2u2P9d.net] >>365 マジ気になるわー V字になってるのか、真ん中で2段になってんのか、前後に生えてんのか? 1本は普通だが、もう1本はデコに生えてんのか?
376 名前:デフォルトの名無しさん [2017/12/08(金) 00:07:26.11 ID:8mEkhztWa.net] コードのコメントについて どこまで記入してますか? 素人なもんで変数の内容から 変更前のコードまでコメント化してるからコード自体が長くなる。 社内のVBAコード見るとコメントほとんど書いてなくてf8で追っても、よくわからないからなにがいいか分からない
377 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 00:27:27.18 ID:tPe4A27O0.net] 設計さえキチンとしていれば大抵はコメント要らない。 Dim SLine As Long:SLine = 3 '読み込むファイルのヘッダーが二行ある為 みたいにプログラム依存でないパラメータを解説する時に使ったりはする。 ある程度の習熟が必要なので、ステップ実行でも何してるか分からない(正常に追えない原因が分からない)のであれば、 まだコメントの必要性について論ずる段階では無いので特に要らないんじゃないかな。 自分の昔書いたコードを改修しようとして訳分からないみたいなのを何度も経験して始めてコメントの要点が掴めると思う。
378 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 00:40:24.89 ID:MH/bn/0fH.net] >>367 変数名からなるべく中身を類推できるようにつけてコメは最小限にしてる。 後で迷うくらいならつけたほうがいいと思う。コード記述して直後は完全にわかってるから迷うポイントに気づけない。一週間後とかに再レビューして、「コレなにやってんだろ?」と引っかかった所はポイントかな。 あとExcel本体の不具合、制限回避とかコメしてないと中々思い出せないことがある。
379 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 00:50:05.27 ID:04xg1k3G0.net] コメントは書いた方が良いんだが、余計なのはいらない。 変数名で分かるものは必要ない。 むしろどういう処理かのコメントを書く場合が多い。 それもそこのメンバーのレベルによる。 書ける奴らが集まってるなら、こんなもん分かるだろと書かない場合も多い。
380 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 08:12:21.44 ID:WX0K1LcLa.net] コメントは処理の内容についてはしない なぜその処理をするのかつかみにくいとリッキーだったり使用上やむを得ないときに理由を簡潔に書く 変更履歴をコード上に書くのは愚の骨頂だけどVBAだとほかに方法が少ないから自分かチームでルール決めるしかないな
381 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 08:13:11.00 ID:WX0K1LcLa.net] とリッキー→トリッキー 使用→仕様
382 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 18:16:29.95 ID:3k7CQU1Hd.net] 質問です。 シミュレータソフトをVBAを使って制御しています。順々にモデルを解析していき、逐次計算結果がエクセルに反映表示されるような動作をします。 ただそのとき、きちんと逐次結果が表示されていく場合と画面に全く結果が表示されずプログラムが終わった途端に一気に数値が表示される場合とがあります。 途中でも解析結果が分かるよう安定して逐次表示するようにしたいのですが解決策分かる方いたら教えてください。 なお画面更新はもちろんオンです。調べたところdo eventsというのでWindowsに制御を渡すやり方もあるようですが、途中の動作が割り込む可能性がありそれは避けたいです。
383 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 19:13:35.05 ID:jJUgyerEM.net] 自分も普段はほとんどコメント書かない。 適切な命名とコードの流れで処理は説明して、意図や補足説明にコメントを書くのが正しいと思ってる。 ただ、VBAではかなり細かく書いてる。理由は、VBAの時点でどうやっても読みづらいから。 勝手に行間調整するせいで int n WorkBook book みたいな整列ができないし、Dim n As Integerって構文自体が無駄な単語多くて、数並んでいると読む気がなくなる。 スコープの区切りにEndを使うのも()よりコードに埋もれて見づらいしVBEの色設定は貧弱だし。 VBAに限ってはコメントで処理追った方が楽だって最近は思ってる。 早くエクセル操作に向いたもっとまともな言語出ないかな。
384 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 19:16:35.83 ID:wpv6YuQca.net] そうか、ここもvba方式なんだった。 int__________a WorkBook___book みたいにタイプと変数名で表っぽく配置することね。
385 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 19:34:22.58 ID:tPe4A27O0.net] >>374 VBAは宣言しないのがデフォなんだから、いちいちDimなんちゃらってやってたら、そりゃ不便だろ。
386 名前:デフォルトの名無しさん [2017/12/08(金) 20:15:19.13 ID:F+K0Jtko0.net] >>376 そうではなくて、変数の宣言構文がシンプルではないところを言っていると思うよ。
387 名前:デフォルトの名無しさん [2017/12/08(金) 20:45:47.90 ID:kuqPkTCcd.net] やれやれ、また長い関数を書いてしまった
388 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 01:25:45.78 ID:naguWC2La.net] 宣言しない奴のコードは読みたくないな。 宣言全部入れてから持って来いと言うかも。
389 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 01:27:01.02 ID:vu3Y0INla.net] >>375 VBAに慣れてれば、そんなの違和感無いけどな。
390 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 01:39:08.64 ID:vu3Y0INla.net] >>373 それじゃコメントのしようがない。 どんな風に制御しているのかとか、結果はそのシュミレータソフトから取ってきてるんだろうけど、そこから逐次結果が得られてるのかとかの詳細が分からんと何とも言えない。
391 名前:デフォルトの名無しさん [2017/12/09(土) 11:52:36.39 ID:oQ1pndO0d.net] Debug.Print もApplication.Statusbar もちょっと処理が重くなってくると表示が止まって役に立たない
392 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 13:26:29.70 ID:Px3+LsGd0.net] >>382 Debug.Printの次にDoEventsを書けばすぐに出力される
393 名前:デフォルトの名無しさん [2017/12/09(土) 20:32:20.11 ID:uW7BpcjHa.net] コメント関連ありがとう。 もう、人には見せない用だけどくどいくらいコメント書きまくってるw
394 名前:デフォルトの名無しさん [2017/12/10(日) 08:18:11.50 ID:PzHPENwqa.net] VBAの開発環境について デバッグ作業してると2画面欲しくなるんだけど皆さんどうしてる? vBEの画面と通常の画面をフルスクリーンで見たいし、VBEもコード書き込む画面のほかに現在の変数が分かる画面と実行結果が分かる画面が欲しいからノート1台でやってると画面グチャグチャ
395 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 08:41:31.53 ID:2VZ9i3vi0.net] ノートはUPS付きのデスクトップとして使ってる 24インチのモニタに繋いで 無線キーボードとマウスで操作
396 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 09:29:22.82 ID:s+zBVK9X0.net] モニタ2枚でやってるけど ツールボックスのウィンドウとかフォームが画面の境界に表示されたりして 地味に対応していない感を醸し出してる。 フルHD以上なら1枚でもVBEを端っこによけておけば窮屈じゃないと思う。 それよりエディタの貧弱ぶりをどうにかしてほしい。 今時のIDEを触ると、VBEはふた昔前のオマケ機能なんだなと思い知る。
397 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 12:22:00.56 ID:w7IPLNC5r.net] まあデバッグが必要になる様なマクロなんかこさえんなっで事だ
398 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 13:02:23.44 ID:rJurKCVR0.net] デバグが不要なマクロって相当短くないと無理だろ
399 名前:デフォルトの名無しさん [2017/12/10(日) 19:23:33.18 ID:RKQe6ZfS0.net] バグ発生に関与する要因としてコードの量のみを気にかけている → 初心者またはそれに準ずる低スキルのもち主 >>388 を受けてバグが一切発生しない事を想定している → 0か100でしか物事を考えられないアスペ デバッグをデバグと言っている → ガチのジジイか極端にセンスの悪い意識高い系 たった一言でここまでプロファイリング出来ました
400 名前:デフォルトの名無しさん [2017/12/10(日) 20:54:53.56 ID:DUp9AezHa.net] え??コード書き書きしたら一度も動作チェックしないで実装するの? すげー! ほぼ途中で止まって黄色くなる身としては信じられない. 全ての動作の確認と変数の動作に変な所がないか見るの楽しい. それに人が書いたコードで動作チェックするにもf8必要だし ただ、F8連打も大変だから超ゆっくり動作する機能でもあればいいのに
401 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 21:56:00.33 ID:tyDER63C0.net] 虫見付けるたんびに「バッグだ!バッグだ!」言うんか 自分の発言に違和感無いんか
402 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 22:02:23.86 ID:UfhTQ4hV0.net] プログラムがおかしい以上バグはバグだ 開発中に個人で見つけてるから影響が小さいというに過ぎないが べつにいいじゃんバグでも
403 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 22:28:29.51 ID:rJurKCVR0.net] リリース版を出すかどうかをデバグ作業と呼ぶかどうかの境界線にしてるって事なのかな? バグまみれでリリースして、ネット経由でパッチを当てるのが当たり前になった事が原因で、 そういう感覚が生まれたって考えるとなかなか興味深い現象だな。
404 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 22:54:03.35 ID:5raOMeRU0.net] お前、リアルで嫌われ者だろ たった一文でここまでプロファイリング出来ました
405 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 23:42:33.59 ID:05lOR9eq0.net] 質問です。(スレチかもだけど、他よりここの人たちのほうがLevel高そうなので) Excel2013 @Win10 64bit Core i7 Mem8GB ここ数日でAutoFilterのパフォーマンスが急に悪くなったと感じています。 テーブルは2000行*50列程度。 症状としてはフィルタリング済みのシートをSelectする際にタイムラグが発生します。 最初原因が分からなかったのですが、設計を少しずつ切り落としていった結果、 フィルタ範囲に入力規則が設定されていたのが原因でした。 その内容はIMEOffのみ。 フィルタがかかってない場合は瞬時にシート切替できるのに、フィルタリングされていると 切替に数秒待たされます。 フィルタ列が増えるとラグが倍増します。 また、列要素の先頭行付近の要素でフィルタされている場合の方が影響が大きいです。 2〜3日前までこのようなことはなかったのに、、何かExcel環境自体がかわったのかと 思いくまなく調べるのですが、原因が掴めません。 (つづく)
406 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 23:43:42.33 ID:05lOR9eq0.net] >>396 (つづき) マクロやシート上の把握できていない設計要素の影響を除外するために新規xlsxファイル で試しました。 前提:評価ブック以外のブックは開かない。 シート1:2000行*50列の表を作成、A-Zの1文字をランダムに埋め、AutoFilter設置。 書式設定、条件付き書式等は一切行わない。 入力規則は評価条件とする。(IME制御なしの場合とIME-Offの場合) フィルタ実施時は、2列絞り込む。 シート2:空シート 評価用Macro(シート1) Option Explicit Dim st As Single, ed As Single Private Sub Worksheet_Deactivate() st = Timer End Sub Private Sub Worksheet_Activate() ed = Timer: Debug.Print ed - st End Sub (つづく)
407 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 23:44:00.59 ID:05lOR9eq0.net] >>396 (つづき) 評価方法: 1)フィルタ設置のシート1を表示 2)Ctrlキーを押しながら、PgDn→PgUpを連続して押下。 3)Immediateウィンドウで計測時間を確認。 上記を5回程度実施 条件と結果: Case IME制御なし+フィルタなし ▼平均時間:約70msec Case IME制御なし+フィルタ-On ▼平均時間:約70msec Case IME-Off+フィルタなし ▼平均時間:約70msec Case IME-Off+フィルタ-On ▼平均時間:約7000msec ちなみに1列フィルタリングした場合は、約1400msec程度でした。 対症療法としては「入力規則使うな」となりそうですが、2〜3日前までは上記 現象は発生していなかったので、、原因療法が知りたいです。 どなたか上記現象分かるかたいらっしゃいませんか?
408 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 23:47:36.15 ID:VPQqZskd0.net] >>398 思い当たるのは、FCUでIMEの挙動がおかしくなったという報告多数な件
409 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 03:47:36.99 ID:/hRyHJmR0.net] >>399 Version1703なのでまだFallは当たってないようです。
410 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 11:20:26.75 ID:TIu41blJ0.net] ホントMSはアップデートなのかウイルスなのか分からんことするよな・・・
411 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 13:06:28.39 ID:NoGJiqM0H.net] >>401 ちなみに職場の環境 Excel2010 @Win7 Excel2013 @Win8 では再現しませんでした。 やっぱりなんらかのUpdateが当たったのか、それとも自分でなんかやらかしてるのか、、、
412 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 13:32:28.01 ID:pEROMoD00.net] 午前中にメッセージが出てアプデするか? とか聞きゃあがったから「あいよ」ってんで気軽に再起動した 90%ぐらい完了した後で Cannot だってやんの しょーもないから電源落として午後
413 名前:再起動したら また「アプデするか?」 って もうね、アホかと [] [ここ壊れてます]
414 名前:デフォルトの名無しさん mailto:sage [2017/12/12(火) 01:03:48.16 ID:vtwEo9S/0.net] Windows 押しつけがましいアップデートメッセージが出て いいえしまくってたんだけど ちょっと目を離して風呂入ってたら勝手に合意したことにしてOSインストールされてた そんな俺が客先で作らされてるのは顧客が一日黙ってたら契約に合意したことになるシステム
415 名前:デフォルトの名無しさん mailto:sage [2017/12/12(火) 04:17:56.67 ID:VGkGFTOK0.net] 質問です。 LastCellって簡単に取得できるのにHomePositionってこれといった決定打がないんですかね? SendKeys以外で簡単に安定して取得する方法ってありますか? できればSelectしなくてよい方法で。
416 名前:デフォルトの名無しさん [2017/12/12(火) 11:56:45.28 ID:R9+tEHmjd.net] ADODB.Streamで大きめのテキストファイルを読むときLoadFromFileが重いので、Openの引数でファイル指定してから ReadTextするようにしたいんですがうまくいきません。 パスをそのまま書いても、"file://C:temp/data.txt"のような書き方をしてもことごとくOpenのところで落ちてしまいます。 どう書けばいいんでしょうか? ちなみに先頭100行を試し読みするときとかに使いたいです。
417 名前:名無し mailto:sage [2017/12/12(火) 12:18:28.61 ID:KlMiw57eM.net] >>406 それならコード貼ったほうが早い 使い方云々が知りたいだけならググればいいし
418 名前:デフォルトの名無しさん [2017/12/12(火) 12:50:26.86 ID:R9+tEHmjd.net] >>407 スマホなのでちょっと待ってて
419 名前:デフォルトの名無しさん mailto:sage [2017/12/13(水) 11:40:21.94 ID:5F7kXiJk0.net] 名前を付けて保存する際 最近使った“アイテム”が 今週〜,先週〜,しばらく前,という順番で使用履歴の各ファイル名が表示されます。 これを表示させない設定を教えてください。 よろしくお願いいたします。 スペック ↓ OS=Win10 Excel2016 Officeバージョン=1710
420 名前:デフォルトの名無しさん mailto:407 [2017/12/13(水) 14:40:49.78 ID:5F7kXiJk0.net] ↑すいません、質問するべき板を間違えました。ここはVBAでしたね。 他で聞いてみます。
421 名前:デフォルトの名無しさん mailto:sage [2017/12/13(水) 22:03:05.49 ID:lbNGI0B20.net] チョイ前に変数の宣言が話題になってたから俺も一ネタ言いたい 「redim で変数の宣言が出来る仕様はやめて欲しい」 変数名を間違えた時にエラーで気付けるように普段から変数の宣言を強制してるんだけど、 redim で配列を変更する時に変数名を間違えても 新たな別の変数扱いされてエラーにならないから気付かないことがある 配列変数でも宣言は dim 、要素変更は redim っていう風にしといてくれたらと願ってやまない
422 名前:デフォルトの名無しさん [2017/12/13(水) 23:22:51.89 ID:b+I23nON0.net] Application.GetOpenFilename でファイルのパスを求められることが分かった Application.GetOpenFilename Workbooks.Open.Filename:=Application.GetOpenFilename ってできないことが意味がわらない あと Workbooks(Application.GetOpenFilename)ってやるとパス付のでエラーになってしまうこともわかった Workbookオブジェクトに適当な変数を宣言して iとする i = Application.GetOpenFilename i.worksheet()ってできない意味がわからない i = Workbooks.Open(filename:= ApplicationGetOpenFilename) i.worksheets() これならできる意味がわからない ()で戻り値をくくるのはわかる でもこの場合の戻り値はパス付戻り値であるから Applcation.GetOpen.... はいらないのでは?パス付戻り値ならば i = Application.GetOpenFilename でもできるのでは?WorkBookオブジェクト変数だから 誰か答えられる?
423 名前:デフォルトの名無しさん mailto:sage [2017/12/13(水) 23:34:03.63 ID:fRI8/I3E0.net] そういう言語仕様なので
424 名前:デフォルトの名無しさん [2017/12/13(水) 23:49:56.82 ID:b+I23nON0.net] わりと真面目に答えてくれ オブジェクト変数に直接パス付のファイル名をぶち込んでエラーになるのが意味わからない なんのためのオブジェクト変数なんだ Workbooks.Open(filename:= ApplicationGetOpenFilename) これもパス付のファイル名なのになんで格納できるんだ?
425 名前:デフォルトの名無しさん mailto:sage [2017/12/14(木) 00:01:33.96 ID:iqnmwrCv0.net] まず型というものを理解してください つぎに、プロパティというものを理解してください つぎに、オブジェクトにはデフォルトプロパティというものがあるのを理解してください あと名前付き引数に対する理解も必要ですね VBAではSetでの代入とLet(を省略した)代入では意味が違うので、それもちゃんと区別してください いちいち全部ここで解説はせんが このぐらい理解すればたぶん答えはわかるだろ