Excel VBA 質問スレ Part51
■ このスレッドは過去ログ倉庫に格納されています
スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※関連スレ VBAなんでも質問スレ Part2 http://mevius.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 http://mevius.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 126 https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/ ※前スレ Excel VBA 質問スレ Part50 http://mevius.2ch.net/test/read.cgi/tech/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f) 初期値をfalseにする理由 trueの時は色づけという流れにしたいので、予めfalseにしておく必要がある boolean型の初期値はtrueなので。 途中でfalseを入れる理由 i=1 のままで j を最終行までループさせてチェック その次に i=2 にして j を同じく最終行までループさせてチェックするのだが i=1 でのチェックが終わった結果 true なら i=2 でのチェックに備えて false に初期化する必要がある これは基本的に最初の初期化と同じ考え方 Hanteiの初期化、j のループの直前に置けばIf文の後の変数初期化がいらなくなる気がする・・・ >>288 なるほどわかりやすい このプログラムを日本語化して >>285 最初の変数初期化は全く必要無い。 そもそもこういうBooleanな変数を用意することに疑問。 こういう変数は、どうにもそれが無いとプログラムが組み立てられない時に使うべきで、出来るなら使わない方向で組み立てるべき。 そして、やってる内容を見ればこんなもの使わない方向で組み立てられる。 こういうコードはやりたいことを論理的につめられていない時に安易に書き出してしまった時になりやすい。 はっきり言ってクソコード。 全く参考にならん。 1.最初の初期化はいらん。 宣言後の初期値はFalseだから。 逆に初期値をTrueにする場合は初期化が必要。 途中の初期化については、jに関する1つの処理が終わった時にTrueになってたら次の処理の結果がおかしくなるから必要。 2.Exit Forのことを言ってるなら最も内側のFor Nextから抜けるからとしか言えん。仕様だね。 3.If〜Thenは〜がTrueかどうかを判定している。 If i=0 Thenはiが0だったらと考えがちだが正しくはi=0の文がTrueかどうかを判定している。 イミディエイトウィンドウに?(10=10)と入力してEnterキーを押すとTrueとなるし?(10=5)と入力してEnterキーを押すとFalseになる。 >>285 同じこといってるかもしれんけどこの場合変数Hanteiが丸々要らない if文の中にセルの色変更のコードを書けばいい 仮に、この変数がいるとしてもどんな値が入っててもどうせfalseにするんだからif分岐してる意味がわからない もっと言うとHanteiとかいう変数名がクソ過ぎる なんの判定かさっぱりわからん canChangeColorとかnotMatchValueとかしとけば目的が分かりやすいのに A列の各セルの情報と合致するものが、C列に一件も無かった場合、 次に合致するデータが現れるまでA列の背景色を変え続ける という処理なのでHanteiが要らない様に書き換えるって難しい気がするんだけど。 >>293 ごめん、そこちゃんと読み込めてなかったわ 一致したら変えると勘違いした なんにしてもフラグの初期化は頭かケツでいいと思うけど 似たようなソースコードを作ってみました なぜだかエラーがでます Sub test() Dim i As Long Dim j As Long Dim U As Long For i = 1 To Cells(Rows.Count, 1).End(xUp).Row For j = 1 To Cells(Rows.Count, 3).End(xUp).Row If Cells(i, 1) = Cells(j, 3) Then U = 1 End If Next j If U = 1 Then U = 0 Else Cells(j, 3).ColorIndex = 3 End If Next i End Sub >>293 確かに一致したものが無かったらだからBoolean使う方が自然か。 使わなくても簡単だけど自然なBoolean使うのが正しいわ。 俺も勘違いした。 ちなみに、一致せずに全てチェックしてjのループを終了した場合のjの値を調べればBooleanはいらんし、そもそもFind使ってループ1つにしてもいらん。 この仕様を見た場合、絶対こんなコード書かないけど、俺が書くとした場合の配列にぶちこむ方法はBoolean使うのが自然だな。 ちなみにランダムで10000行にデータ入れた場合、このコードで320秒、Find使う方法で22秒、配列入れる方法で9秒だった。 小学生がなんで3×5が15になるの?って聞いてるのに 俺なら電卓で答えだすぜ!って息巻いてる人のようにみえる 学習の初段階でつまずいてる人への的確な回答ではないわな なんつうか、これが俺の後輩なら、フローチャート書いてみって言いたくなるな もうフローチャートなんて10年以上見てないけどな >1なぜ変数を初期化するのか? あってもなくてもこのコードなら動くけど すべての言語が変数を初期化してくれるわけではないので、変数は必ず自分で初期化しろって作法もある 自分で初期化すれば、初期値を間違えて覚えていたりしてもバグになりにくいしな(Booleanの初期値はFalse) >2なぜNextjでjだけループが終わるのか? ちょっと質問の真意がわからん ForとNextは1対1で対応するんで、Next jならjのループ終端だぞ >3If Hantei Then (もしも変数の場合は。。。) もはや意味がわからない IfとThenの間に書くのは、条件式と呼ばれる式(文じゃないよ) 式の値がTrueかFlaseで条件分岐する そして変数はそれだけで式として成り立つ。この場合は変数の内容そのものが式の値 If Hantei=True Thenって書いても良いんだけど、(とくにBooleanに対する=Trueは)冗長だと言って嫌う作法もある VBAはExcelが現役だから、いつまでたっても入門者が一定数いるよなぁ はっきり言えば、今どきのブログラムの勉強にはVBAは向かないよ ブック名 C:\book.xlsx シート名 データ 説明文パート 1〜5行目 データパート ..ヘッダ A6〜Z6 ..データ A7〜Z* ..データ件数 不定 プロバイダ Microsoft.ACE.OleDB.12.0 このような設定でヘッダとデータをselect文で全件取得するにはどうすればいいですか? >>299-300 超初心者の話かよ。 VBAエキスパートの話じゃなかったんか? あと、If Hantei Thenを分からないって言ってるのは感覚の話で、君の説明じゃ分からないと思うぜ。 Hantei=Trueという式自体に値があって、それが正しい場合にその値は(Hantei=True)=Trueという結果になっているということが感覚的に分からないと理解できんだろ。 初心者はHanteiとTrueが等しかった場合と感覚的に理解してるんだから。 その感覚ではIf Hantei Thenが理解出来ない。 >>301 SQLで任意のセル範囲を取得する場合はFROM文で取得出来たはず。 SELECT * FROM [ データ$A6:Z1000] みたいな形。 ただその条件だとデータベースに投げる前にエクセル上で整形した方が効率いいと思うけど。 if hentai = true then 変態は正義 まず>>285 のプログラムを動作順に日本語訳してくれよ >>305 簡単だろ。 A列のそれぞれのセルに対してC列に同じ値が無かったら色を付けてる。 1.A2からA列の最終セルまで1つ1つのセル(以下Aiとする)について以下を繰り返す。 2.C2からC列の最終セルまでにAiと同じ値が有ったときHanteiをTrueに設定。 3.HanteiがFalseの場合(C列にAiと等しい値はなかった場合)はAiに色を付ける。 4.HanteiがTrueの場合はFalseに設定。(どんな場合だろうがFalseに設定したいが、既にFalseなのにFalseに設定する必要は無い。単にFalseに初期化してるだけ。) 5.Aiの次のセルに対して繰り返し処理続行する。 >>302 「VBAエキスパート」という資格の勉強をしている超初心者の話だろ? VBA始めて3日と書いてるし エキスパート名乗ってる割にはバグくさいコードなんだよな。 If Not Hantei Then Cells(i, 1).Interior.ColorIndex = 6 Hantei = False っていう書き方がたぶん本来意図した仕様に近いと思うんだけども。 >>307 勉強してる奴が質問してるんであって、 このコードはそいつが書いたもんじゃない。 VBAエキスパート公式ってんだから、 資格の参考書かなんかに載ってるんだろ。 >>308 いや、この書き方自体は良くあるよ。 あんたのも間違いじゃない。 ○○でもわかる ○○のすべて ○○エキスパート ○○完全ガイド こういうタイトル付いてるのは初心者向け >>310 だから初心者用の本に載ってるコードが分からないと言ってるんだからこその>>299 のツッコミなわけだろ? 本に載ってるコードの評価をしてくれという質問ではない エクセル相談所にあった質問で、とりあえずVBAなしじゃ出来ないって言っといったんだけど、VBAでリストの絞り込みって一度で出来る? 多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって事だと思うんですけど。 インターネットの選択方式でそんなの見た事あるけど一から開発するの面倒くさそう。 ユーザーフォームと2次元配列でも使えばできるかな? ちなみにこの機能の名称あれば教えて欲しいです。 自分も配列すら参考書でかじったくらいでその必要性がわかってない初心者です お力添えをお願いします チェックボックスでチェック入れたら行の高さを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 どこが間違っているのかご教示お願いします。 >>315 行は適当に変えてくれ 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 >>315 フォームコントロールならこっちだわ コントロール名は適当に変えてくれ 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 >>317 ありがとうございます!!!こちらで動作しました!!本当に有難うございます!!! 〉〉314 できるの? 入力規則の絞り込みじゃないよ? 階層化してリストから直接下層に移動(3段階くらい)して選択する方法だよ? >>312 違う。 そのコード書いた奴に向かって言ってるのと、躓いてる奴にはそのコードはよろしくないと言ってる。 何の例かは分からんが、もっと現実的なコードにすべきなんだぜ。 >>320 しかも、わかりにくいかもしれないけど条件ちゃんと書いてあるんだけどね 入力規則の絞り込み検索じゃない。 階層ごとにクリック選択する事すらめんどくさいと言ってるんだよ。 一度の選択でリストの階層移動ができるかどうかを質問主は相談所で聞いていて 自分はVBAないとだめだよと回答したけどVBAだとどうなんだろうとこっち で聞きなおしてみたんだけど、 >>321 こういう糞レスがつくからスレが過疎るんだぞ ちゃんと、VBAでリストの絞り込みって一度で出来る? こう書いて その下に 多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって こう書いてあるんだけど読み取れない? しかも、前文にエクセル相談所にあった質問こうも書いてあるし。 で、わざわざVBAで聞いてるのにわからないかー 具体的なコードが伴わない場合は外野がなんかゴチャゴチャ言っている程度に聞き流すべき。 >>321 の質問はウィンドウズ標準のメニューバーみたいな形を想定しているみたいなので、 外部参照にMicrosoft Toolbarとかあれば、それを追加して解決するんじゃないかな。 >>326 > 多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって マウス操作にはクリックも含むのが普通だと思うぞ >>325 無駄なレスしてなにか楽しいのか? >>327 あっちのスレ読めばわかるけどそもそも VBA 使わずにできるかどうかの問題になってるから Toolbar 云々の話ですらない お前さんこそ聞き流すべき >>328 どちらかというと>>313 の質問に答えた形だけど。 向こうの質問にこっちで答える義理もないし。 >>313 それは、VBAでも出来ないと思う。 というかWindowsの標準動作と違う。 似たようなのは出来るかもしれないけど。 コンボボックスじゃなくメニューなら出来るかな。 見ためが違うけど。 見ためをコンボボックスにしたいならコンボボックス使わずにフォ−ムに描画した方が楽じゃね? コンボボックスだと選択しないとイベント発生させるのが難しいし、イベント発生時にブルダウンが閉じるのが通常動作だから。 サブクラスでHITTEST検出で出来るかどうか。 VBAではウルトラC級に難しい。 >>327 メニューバーの見ためは駄目なんじゃないの? 俺もメニューバーが現実的だとは思うけど。 >>313 階層付きMenuで3項同時に入力するってこと? 自分だったらContextMenuの改造またはPopupでやるかな。 見た目悪いけど、最下層をデリミタ区切りのフルセットにすれば Splitして投げ込むだけでいいでしょ? CellのContextMenuだとあとで標準に戻すこと考えないと いけないので最近はもっぱらPopupばかり使ってる。 Cellのプルダウンだと表示数に限りがあるけど、Popupだと 画面サイズいっぱいまでいけるし、、 あ、もちろんCommandBarsのアレのことです。 >>313 いえ、1つ目のリストを表示して、マウスの位置をその位置まで持ってきて 2つ目のリストを表示してって3つ目のリストを最終的に表示するみたいな。 エクセルの旧表示みたいな感じで、ファイル→検索みたいな感じです。 多分 >>333 いやだからそれって、階層メニューのことでしょ? 手近なところでいうと、、、たとえばFireFoxだと、 表示 > テキストエンコーディング > 自動判別 > 日本語 みたいな。この手のMenuって、onMouseOverイベントで 下層が勝手に開いていきますよね。 それで各階層の選択肢を全部入力値として使うことじゃないの? そう、これはメニューの動作なんだ。 コンボボックスで実現するのはとても難しい。 ほとんどの奴は上級者でも不可能と言うだろう。 それとも俺の知らない何かがあるかもしれないけど。 コンボの配下にメニュー作ろうとすると怒られた。 階層メニューによる一括入力、自分でも使うかもと思い作ってみたよ。 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 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 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 5)引数付きのOnActionコマンドの生成に普段使っている関数 ん?書き込めない、、なんで? 要は文字列生成がメンドーだから関数使ってるだけなんだけど、、 刻んでみる。 5)引数付きのOnActionコマンドの生成に普段使っている関数 Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String ) 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関数は禁則? 書き込めた。 Chr関数で引っかかっていたみたい。実際は半角です。 インデントは全角スペースになっているので変換が必要です。 VBEにコピペすると、全角スペースは自動的に半角スペースに変換されるから意識する必要ない エクセルのVBAで、サーバー上にディレクトリを作成して、そこにファイルを移動させたいのですが、 MkDIRで作成できませんでした。どうすればよいでしょうか? >>345 FileSystemObject使えばできますよ。 サーバー側の権限は大丈夫ですか? >>346 ありがとうございます! dim myFSO as new filesystemobject myFSO.CreateFolder (サーバー上のつくるディレクトリ名)でいけますか? それともカレントドライブをサーバー上に移動すべきでしょうか? 質問です。 プロシージャの処理の途中でイミディエイトウィンドウをうまくクリアする方法はありますか? あるかないかでいえば、 ないこともないアル 地道にセンドキーでキー送って 全選択してデリートしてって方法がな 関係ないけどブックを開くとイミディエイトウィンドウ上の変数が消滅するの困る >>350 その際はFocusをVBEに移してイミディエイトPaneをアクティブにする操作を挟むのでしょうか? エクセルのVBAで競馬予想ソフト作っている人っていますか? >>352 デバッグ クリア VBAで検索したら 幸せになれるかもよ VBAでコンボボックスのリストのみクリアってどうやってやるんですか? >>355 正式にやるのは多分すごく難しい。 Win32APIでコンボボックス内のリストボックスに対してどうにかするということになると思う。 しかし、単純に strCombo=ComboBox1.Text ComboBox1.Clear ComboBox1.Text=strCombo でテキストが一瞬クリアされたのは見えないから現実的な案だと思う。 シートの非表示設定について Sheets(”sheet1").Visible = False でシート非表示設定をしたのですが元々非表示だとバグになってしまいます。 釦を押せば特定のシートのみを表示できるようにしたいんですけど表示時非表示時がランダムで 非表示時でもそのコード無視するかと思ったら非表示なのに非表示にするんじゃねぇと怒られた。 >>357 VisibleプロパティがBooleanで状態を返すのでIfで分岐させる If Sheets("sheet1").Visible Then Sheets("sheet1").Visible = False Else Sheets("sheet1").Visible = True End If こうすると実行するたびに表示/非表示が切り替えられる >>35 8 ありがとうございます。できました。 なんとなく、if文使うのかなと思ったのですがif文が思いつかなかった。 Elseの下を消すことで、非表示時は非表示のままのする思い通りの事が出来ました。 >>358 それだと非表示の時は表示されるからElseはいらねえだろ。 俺も Sheets("sheet1").Visible=(Not Sheets("sheet1").Visible) と最初考えたけどやっぱIf文にしないと駄目かと考えた。 >>359 たぶん他人にも使わせるのだと思いますが シートをシート名じゃなくオブジェクト名で指定すると 誰かが勝手にシート名を変えても関係ないのでオススメ。 さらにわかりやすいオブジェクト名に書き換えると、尚良し。 オブジェクト名はVBEのプロパティウィンドウの(オブジェクト名)を見てね。 初期値はSheet1なので Sheets("sheet1")をSheet1に置き換えてもうごくはず。 >>360 あとから余計なこと書いたかなーと思ったけど、本人が気づいてくれてよかった。 〉〉361 ど素人で何もわからないままマクロの記述させながら必要なところ コピペしてとネットコピペでほとんどコード打ち込まず作ってるので まだ、オブジェクトまで触ってません。 今度触ってみたいと思います。 標準モジュールは逆になんのモジュールかわからなくなるの必要なモジュールと区別するために名前つけてるけど sheet名はそのままです。 >>285 ワシはティンコを2本もっている 2本目はとっておきだ(´・ω・`)b >>363 マジ気になるわー V字になってるのか、真ん中で2段になってんのか、前後に生えてんのか? 1本は普通だが、もう1本はデコに生えてんのか? コードのコメントについて どこまで記入してますか? 素人なもんで変数の内容から 変更前のコードまでコメント化してるからコード自体が長くなる。 社内のVBAコード見るとコメントほとんど書いてなくてf8で追っても、よくわからないからなにがいいか分からない 設計さえキチンとしていれば大抵はコメント要らない。 Dim SLine As Long:SLine = 3 '読み込むファイルのヘッダーが二行ある為 みたいにプログラム依存でないパラメータを解説する時に使ったりはする。 ある程度の習熟が必要なので、ステップ実行でも何してるか分からない(正常に追えない原因が分からない)のであれば、 まだコメントの必要性について論ずる段階では無いので特に要らないんじゃないかな。 自分の昔書いたコードを改修しようとして訳分からないみたいなのを何度も経験して始めてコメントの要点が掴めると思う。 >>365 変数名からなるべく中身を類推できるようにつけてコメは最小限にしてる。 後で迷うくらいならつけたほうがいいと思う。コード記述して直後は完全にわかってるから迷うポイントに気づけない。一週間後とかに再レビューして、「コレなにやってんだろ?」と引っかかった所はポイントかな。 あとExcel本体の不具合、制限回避とかコメしてないと中々思い出せないことがある。 コメントは書いた方が良いんだが、余計なのはいらない。 変数名で分かるものは必要ない。 むしろどういう処理かのコメントを書く場合が多い。 それもそこのメンバーのレベルによる。 書ける奴らが集まってるなら、こんなもん分かるだろと書かない場合も多い。 コメントは処理の内容についてはしない なぜその処理をするのかつかみにくいとリッキーだったり使用上やむを得ないときに理由を簡潔に書く 変更履歴をコード上に書くのは愚の骨頂だけどVBAだとほかに方法が少ないから自分かチームでルール決めるしかないな 質問です。 シミュレータソフトをVBAを使って制御しています。順々にモデルを解析していき、逐次計算結果がエクセルに反映表示されるような動作をします。 ただそのとき、きちんと逐次結果が表示されていく場合と画面に全く結果が表示されずプログラムが終わった途端に一気に数値が表示される場合とがあります。 途中でも解析結果が分かるよう安定して逐次表示するようにしたいのですが解決策分かる方いたら教えてください。 なお画面更新はもちろんオンです。調べたところdo eventsというのでWindowsに制御を渡すやり方もあるようですが、途中の動作が割り込む可能性がありそれは避けたいです。 自分も普段はほとんどコメント書かない。 適切な命名とコードの流れで処理は説明して、意図や補足説明にコメントを書くのが正しいと思ってる。 ただ、VBAではかなり細かく書いてる。理由は、VBAの時点でどうやっても読みづらいから。 勝手に行間調整するせいで int n WorkBook book みたいな整列ができないし、Dim n As Integerって構文自体が無駄な単語多くて、数並んでいると読む気がなくなる。 スコープの区切りにEndを使うのも()よりコードに埋もれて見づらいしVBEの色設定は貧弱だし。 VBAに限ってはコメントで処理追った方が楽だって最近は思ってる。 早くエクセル操作に向いたもっとまともな言語出ないかな。 そうか、ここもvba方式なんだった。 int__________a WorkBook___book みたいにタイプと変数名で表っぽく配置することね。 >>372 VBAは宣言しないのがデフォなんだから、いちいちDimなんちゃらってやってたら、そりゃ不便だろ。 >>374 そうではなくて、変数の宣言構文がシンプルではないところを言っていると思うよ。 宣言しない奴のコードは読みたくないな。 宣言全部入れてから持って来いと言うかも。 >>373 VBAに慣れてれば、そんなの違和感無いけどな。 >>371 それじゃコメントのしようがない。 どんな風に制御しているのかとか、結果はそのシュミレータソフトから取ってきてるんだろうけど、そこから逐次結果が得られてるのかとかの詳細が分からんと何とも言えない。 Debug.Print もApplication.Statusbar もちょっと処理が重くなってくると表示が止まって役に立たない >>380 Debug.Printの次にDoEventsを書けばすぐに出力される コメント関連ありがとう。 もう、人には見せない用だけどくどいくらいコメント書きまくってるw VBAの開発環境について デバッグ作業してると2画面欲しくなるんだけど皆さんどうしてる? vBEの画面と通常の画面をフルスクリーンで見たいし、VBEもコード書き込む画面のほかに現在の変数が分かる画面と実行結果が分かる画面が欲しいからノート1台でやってると画面グチャグチャ ノートはUPS付きのデスクトップとして使ってる 24インチのモニタに繋いで 無線キーボードとマウスで操作 モニタ2枚でやってるけど ツールボックスのウィンドウとかフォームが画面の境界に表示されたりして 地味に対応していない感を醸し出してる。 フルHD以上なら1枚でもVBEを端っこによけておけば窮屈じゃないと思う。 それよりエディタの貧弱ぶりをどうにかしてほしい。 今時のIDEを触ると、VBEはふた昔前のオマケ機能なんだなと思い知る。 まあデバッグが必要になる様なマクロなんかこさえんなっで事だ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる