探検
Excel VBA 質問スレ Part51
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sd4a-O827)
2017/11/08(水) 11:26:30.13ID:+KUB1/9hdスレ立ての際は一行目に
!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)
322デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/03(日) 11:39:56.54ID:JkBkmVnb0323デフォルトの名無しさん (ワッチョイ 6681-9GJZ)
2017/12/03(日) 12:12:17.46ID:HLUSF6su0 >>320
しかも、わかりにくいかもしれないけど条件ちゃんと書いてあるんだけどね
入力規則の絞り込み検索じゃない。
階層ごとにクリック選択する事すらめんどくさいと言ってるんだよ。
一度の選択でリストの階層移動ができるかどうかを質問主は相談所で聞いていて
自分はVBAないとだめだよと回答したけどVBAだとどうなんだろうとこっち
で聞きなおしてみたんだけど、
しかも、わかりにくいかもしれないけど条件ちゃんと書いてあるんだけどね
入力規則の絞り込み検索じゃない。
階層ごとにクリック選択する事すらめんどくさいと言ってるんだよ。
一度の選択でリストの階層移動ができるかどうかを質問主は相談所で聞いていて
自分はVBAないとだめだよと回答したけどVBAだとどうなんだろうとこっち
で聞きなおしてみたんだけど、
324デフォルトの名無しさん (ドコグロ MMb1-YtI1)
2017/12/03(日) 12:58:31.51ID:A600L+iiM >>323
さすがにそれは読み取れん
さすがにそれは読み取れん
325デフォルトの名無しさん (オイコラミネオ MM2e-JNzg)
2017/12/03(日) 13:12:35.66ID:bN8T4SKTM >>321
こういう糞レスがつくからスレが過疎るんだぞ
こういう糞レスがつくからスレが過疎るんだぞ
326デフォルトの名無しさん (ワッチョイ 6681-9GJZ)
2017/12/03(日) 13:54:27.80ID:HLUSF6su0 ちゃんと、VBAでリストの絞り込みって一度で出来る? こう書いて
その下に
多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって
こう書いてあるんだけど読み取れない?
しかも、前文にエクセル相談所にあった質問こうも書いてあるし。
で、わざわざVBAで聞いてるのにわからないかー
その下に
多分第1候補のリストを出したままその右には第2のリスト候補が表示されそれを第3候補までマウスの操作だけで選択させようって
こう書いてあるんだけど読み取れない?
しかも、前文にエクセル相談所にあった質問こうも書いてあるし。
で、わざわざVBAで聞いてるのにわからないかー
327デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/03(日) 15:23:42.34ID:icSWQcwl0 具体的なコードが伴わない場合は外野がなんかゴチャゴチャ言っている程度に聞き流すべき。
>>321の質問はウィンドウズ標準のメニューバーみたいな形を想定しているみたいなので、
外部参照にMicrosoft Toolbarとかあれば、それを追加して解決するんじゃないかな。
>>321の質問はウィンドウズ標準のメニューバーみたいな形を想定しているみたいなので、
外部参照にMicrosoft Toolbarとかあれば、それを追加して解決するんじゃないかな。
328デフォルトの名無しさん (ワッチョイ eab3-YtI1)
2017/12/03(日) 15:57:02.43ID:pXIsIngK0329デフォルトの名無しさん (ワッチョイ 66b9-MbHU)
2017/12/03(日) 16:12:49.11ID:icSWQcwl0330デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/03(日) 17:11:02.86ID:JkBkmVnb0 >>313
それは、VBAでも出来ないと思う。
というかWindowsの標準動作と違う。
似たようなのは出来るかもしれないけど。
コンボボックスじゃなくメニューなら出来るかな。
見ためが違うけど。
見ためをコンボボックスにしたいならコンボボックス使わずにフォ−ムに描画した方が楽じゃね?
コンボボックスだと選択しないとイベント発生させるのが難しいし、イベント発生時にブルダウンが閉じるのが通常動作だから。
サブクラスでHITTEST検出で出来るかどうか。
VBAではウルトラC級に難しい。
それは、VBAでも出来ないと思う。
というかWindowsの標準動作と違う。
似たようなのは出来るかもしれないけど。
コンボボックスじゃなくメニューなら出来るかな。
見ためが違うけど。
見ためをコンボボックスにしたいならコンボボックス使わずにフォ−ムに描画した方が楽じゃね?
コンボボックスだと選択しないとイベント発生させるのが難しいし、イベント発生時にブルダウンが閉じるのが通常動作だから。
サブクラスでHITTEST検出で出来るかどうか。
VBAではウルトラC級に難しい。
331デフォルトの名無しさん (ワッチョイ 9e9f-FJWj)
2017/12/03(日) 17:13:47.51ID:JkBkmVnb0332デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/03(日) 18:36:56.64ID:RpLqv7Ag0 >>313
階層付きMenuで3項同時に入力するってこと?
自分だったらContextMenuの改造またはPopupでやるかな。
見た目悪いけど、最下層をデリミタ区切りのフルセットにすれば
Splitして投げ込むだけでいいでしょ?
CellのContextMenuだとあとで標準に戻すこと考えないと
いけないので最近はもっぱらPopupばかり使ってる。
Cellのプルダウンだと表示数に限りがあるけど、Popupだと
画面サイズいっぱいまでいけるし、、
あ、もちろんCommandBarsのアレのことです。
階層付きMenuで3項同時に入力するってこと?
自分だったらContextMenuの改造またはPopupでやるかな。
見た目悪いけど、最下層をデリミタ区切りのフルセットにすれば
Splitして投げ込むだけでいいでしょ?
CellのContextMenuだとあとで標準に戻すこと考えないと
いけないので最近はもっぱらPopupばかり使ってる。
Cellのプルダウンだと表示数に限りがあるけど、Popupだと
画面サイズいっぱいまでいけるし、、
あ、もちろんCommandBarsのアレのことです。
333デフォルトの名無しさん (アウアウオー Sa12-9GJZ)
2017/12/03(日) 22:48:18.35ID:DUCKYmEka >>313
いえ、1つ目のリストを表示して、マウスの位置をその位置まで持ってきて
2つ目のリストを表示してって3つ目のリストを最終的に表示するみたいな。
エクセルの旧表示みたいな感じで、ファイル→検索みたいな感じです。
多分
いえ、1つ目のリストを表示して、マウスの位置をその位置まで持ってきて
2つ目のリストを表示してって3つ目のリストを最終的に表示するみたいな。
エクセルの旧表示みたいな感じで、ファイル→検索みたいな感じです。
多分
334デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 00:43:15.26ID:oPXdl+lm0 >>333
いやだからそれって、階層メニューのことでしょ?
手近なところでいうと、、、たとえばFireFoxだと、
表示 > テキストエンコーディング > 自動判別 > 日本語
みたいな。この手のMenuって、onMouseOverイベントで
下層が勝手に開いていきますよね。
それで各階層の選択肢を全部入力値として使うことじゃないの?
いやだからそれって、階層メニューのことでしょ?
手近なところでいうと、、、たとえばFireFoxだと、
表示 > テキストエンコーディング > 自動判別 > 日本語
みたいな。この手のMenuって、onMouseOverイベントで
下層が勝手に開いていきますよね。
それで各階層の選択肢を全部入力値として使うことじゃないの?
335デフォルトの名無しさん (ワッチョイ 9e9f-w/Tc)
2017/12/04(月) 02:58:02.92ID:Fxj9yJGL0 そう、これはメニューの動作なんだ。
コンボボックスで実現するのはとても難しい。
ほとんどの奴は上級者でも不可能と言うだろう。
それとも俺の知らない何かがあるかもしれないけど。
コンボボックスで実現するのはとても難しい。
ほとんどの奴は上級者でも不可能と言うだろう。
それとも俺の知らない何かがあるかもしれないけど。
336デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:21:07.64ID:oPXdl+lm0 コンボの配下にメニュー作ろうとすると怒られた。
階層メニューによる一括入力、自分でも使うかもと思い作ってみたよ。
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
階層メニューによる一括入力、自分でも使うかもと思い作ってみたよ。
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
337デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:23:18.02ID:oPXdl+lm0 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
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
338デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:24:02.05ID:oPXdl+lm0 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
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
339デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:28:37.65ID:oPXdl+lm0 5)引数付きのOnActionコマンドの生成に普段使っている関数
ん?書き込めない、、なんで?
要は文字列生成がメンドーだから関数使ってるだけなんだけど、、
ん?書き込めない、、なんで?
要は文字列生成がメンドーだから関数使ってるだけなんだけど、、
340デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:36:14.51ID:oPXdl+lm0 刻んでみる。
5)引数付きのOnActionコマンドの生成に普段使っている関数
Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String )
5)引数付きのOnActionコマンドの生成に普段使っている関数
Function MkAction( strCMD As String, Optional arg1 As String, Optional arg2 As String )
341デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:41:24.99ID:oPXdl+lm0 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関数は禁則?
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関数は禁則?
342デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 03:44:57.18ID:oPXdl+lm0 書き込めた。
Chr関数で引っかかっていたみたい。実際は半角です。
インデントは全角スペースになっているので変換が必要です。
Chr関数で引っかかっていたみたい。実際は半角です。
インデントは全角スペースになっているので変換が必要です。
343デフォルトの名無しさん (ワッチョイ f1f7-681q)
2017/12/04(月) 07:27:39.63ID:65GoxPZl0 VBEにコピペすると、全角スペースは自動的に半角スペースに変換されるから意識する必要ない
344デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/04(月) 07:55:50.52ID:oPXdl+lm0 >>343
本当ですね。 tnx!
本当ですね。 tnx!
345デフォルトの名無しさん (ワッチョイ a57b-JjO2)
2017/12/05(火) 20:57:29.50ID:dwGLun0F0 エクセルのVBAで、サーバー上にディレクトリを作成して、そこにファイルを移動させたいのですが、
MkDIRで作成できませんでした。どうすればよいでしょうか?
MkDIRで作成できませんでした。どうすればよいでしょうか?
346デフォルトの名無しさん (ワッチョイ b5b3-85w6)
2017/12/05(火) 21:25:35.80ID:JPkeWfWn0347デフォルトの名無しさん (ワッチョイ a57b-JjO2)
2017/12/05(火) 21:34:50.27ID:dwGLun0F0 >>346 ありがとうございます!
dim myFSO as new filesystemobject
myFSO.CreateFolder (サーバー上のつくるディレクトリ名)でいけますか?
それともカレントドライブをサーバー上に移動すべきでしょうか?
dim myFSO as new filesystemobject
myFSO.CreateFolder (サーバー上のつくるディレクトリ名)でいけますか?
それともカレントドライブをサーバー上に移動すべきでしょうか?
348デフォルトの名無しさん (ワッチョイ 1111-JjO2)
2017/12/06(水) 00:43:40.01ID:D6s1mPo40 >>347
試してみたら?
試してみたら?
349デフォルトの名無しさん (ワッチョイ 6693-bpph)
2017/12/06(水) 11:15:00.00ID:8dpxpCOD0 質問です。
プロシージャの処理の途中でイミディエイトウィンドウをうまくクリアする方法はありますか?
プロシージャの処理の途中でイミディエイトウィンドウをうまくクリアする方法はありますか?
350デフォルトの名無しさん (アウアウカー Sa55-YkX8)
2017/12/06(水) 11:39:53.74ID:MQk7+ulPa あるかないかでいえば、
ないこともないアル
地道にセンドキーでキー送って
全選択してデリートしてって方法がな
ないこともないアル
地道にセンドキーでキー送って
全選択してデリートしてって方法がな
351デフォルトの名無しさん (スプッッ Sdea-gD61)
2017/12/06(水) 11:46:45.28ID:vAzWmOhld 関係ないけどブックを開くとイミディエイトウィンドウ上の変数が消滅するの困る
352デフォルトの名無しさん (ワッチョイ 6693-qSQT)
2017/12/06(水) 13:39:40.38ID:yYTt94fN0 >>350
その際はFocusをVBEに移してイミディエイトPaneをアクティブにする操作を挟むのでしょうか?
その際はFocusをVBEに移してイミディエイトPaneをアクティブにする操作を挟むのでしょうか?
353デフォルトの名無しさん (ワッチョイ 5d8a-MbHU)
2017/12/06(水) 16:07:50.81ID:ykbUk5IV0 エクセルのVBAで競馬予想ソフト作っている人っていますか?
354デフォルトの名無しさん (アウアウカー Sa55-YkX8)
2017/12/06(水) 19:37:25.77ID:sdGXOm2ja355デフォルトの名無しさん (ワッチョイ 6a9b-vhf4)
2017/12/06(水) 21:02:08.65ID:H8Zs2M1B0 VBAでコンボボックスのリストのみクリアってどうやってやるんですか?
356デフォルトの名無しさん (アウアウカー Sa55-FJWj)
2017/12/06(水) 23:12:55.48ID:ClwZMpdPa >>355
正式にやるのは多分すごく難しい。
Win32APIでコンボボックス内のリストボックスに対してどうにかするということになると思う。
しかし、単純に
strCombo=ComboBox1.Text
ComboBox1.Clear
ComboBox1.Text=strCombo
でテキストが一瞬クリアされたのは見えないから現実的な案だと思う。
正式にやるのは多分すごく難しい。
Win32APIでコンボボックス内のリストボックスに対してどうにかするということになると思う。
しかし、単純に
strCombo=ComboBox1.Text
ComboBox1.Clear
ComboBox1.Text=strCombo
でテキストが一瞬クリアされたのは見えないから現実的な案だと思う。
357デフォルトの名無しさん (ワッチョイ ff81-iX7J)
2017/12/07(木) 10:43:49.53ID:cGZzJnMw0 シートの非表示設定について
Sheets(”sheet1").Visible = False
でシート非表示設定をしたのですが元々非表示だとバグになってしまいます。
釦を押せば特定のシートのみを表示できるようにしたいんですけど表示時非表示時がランダムで
非表示時でもそのコード無視するかと思ったら非表示なのに非表示にするんじゃねぇと怒られた。
Sheets(”sheet1").Visible = False
でシート非表示設定をしたのですが元々非表示だとバグになってしまいます。
釦を押せば特定のシートのみを表示できるようにしたいんですけど表示時非表示時がランダムで
非表示時でもそのコード無視するかと思ったら非表示なのに非表示にするんじゃねぇと怒られた。
358デフォルトの名無しさん (ワッチョイ bf9f-F7Qh)
2017/12/07(木) 10:55:46.75ID:SgQPpSGG0 >>357
VisibleプロパティがBooleanで状態を返すのでIfで分岐させる
If Sheets("sheet1").Visible Then
Sheets("sheet1").Visible = False
Else
Sheets("sheet1").Visible = True
End If
こうすると実行するたびに表示/非表示が切り替えられる
VisibleプロパティがBooleanで状態を返すのでIfで分岐させる
If Sheets("sheet1").Visible Then
Sheets("sheet1").Visible = False
Else
Sheets("sheet1").Visible = True
End If
こうすると実行するたびに表示/非表示が切り替えられる
359デフォルトの名無しさん (ワッチョイ ff81-iX7J)
2017/12/07(木) 11:24:06.29ID:cGZzJnMw0 >>358
ありがとうございます。できました。
なんとなく、if文使うのかなと思ったのですがif文が思いつかなかった。
Elseの下を消すことで、非表示時は非表示のままのする思い通りの事が出来ました。
ありがとうございます。できました。
なんとなく、if文使うのかなと思ったのですがif文が思いつかなかった。
Elseの下を消すことで、非表示時は非表示のままのする思い通りの事が出来ました。
360デフォルトの名無しさん (アウアウカー Saeb-ipAI)
2017/12/07(木) 11:50:17.69ID:/U/N3RBoa >>358
それだと非表示の時は表示されるからElseはいらねえだろ。
俺も
Sheets("sheet1").Visible=(Not Sheets("sheet1").Visible)
と最初考えたけどやっぱIf文にしないと駄目かと考えた。
それだと非表示の時は表示されるからElseはいらねえだろ。
俺も
Sheets("sheet1").Visible=(Not Sheets("sheet1").Visible)
と最初考えたけどやっぱIf文にしないと駄目かと考えた。
361デフォルトの名無しさん (ワッチョイ bf9f-F7Qh)
2017/12/07(木) 12:06:28.65ID:SgQPpSGG0362デフォルトの名無しさん (ワッチョイ ff81-iX7J)
2017/12/07(木) 13:06:30.92ID:cGZzJnMw0 〉〉361
ど素人で何もわからないままマクロの記述させながら必要なところ
コピペしてとネットコピペでほとんどコード打ち込まず作ってるので
まだ、オブジェクトまで触ってません。
今度触ってみたいと思います。
標準モジュールは逆になんのモジュールかわからなくなるの必要なモジュールと区別するために名前つけてるけど
sheet名はそのままです。
ど素人で何もわからないままマクロの記述させながら必要なところ
コピペしてとネットコピペでほとんどコード打ち込まず作ってるので
まだ、オブジェクトまで触ってません。
今度触ってみたいと思います。
標準モジュールは逆になんのモジュールかわからなくなるの必要なモジュールと区別するために名前つけてるけど
sheet名はそのままです。
363デフォルトの名無しさん (バットンキン MM7f-jLfE)
2017/12/07(木) 21:42:15.17ID:F/BnOZfeM364デフォルトの名無しさん (スフッ Sdbf-JIMd)
2017/12/07(木) 22:24:29.94ID:QxT2u2P9d365デフォルトの名無しさん (アウアウオー Sadf-QeeD)
2017/12/08(金) 00:07:26.11ID:8mEkhztWa コードのコメントについて
どこまで記入してますか?
素人なもんで変数の内容から
変更前のコードまでコメント化してるからコード自体が長くなる。
社内のVBAコード見るとコメントほとんど書いてなくてf8で追っても、よくわからないからなにがいいか分からない
どこまで記入してますか?
素人なもんで変数の内容から
変更前のコードまでコメント化してるからコード自体が長くなる。
社内のVBAコード見るとコメントほとんど書いてなくてf8で追っても、よくわからないからなにがいいか分からない
366デフォルトの名無しさん (ワッチョイ ffb9-LVSJ)
2017/12/08(金) 00:27:27.18ID:tPe4A27O0 設計さえキチンとしていれば大抵はコメント要らない。
Dim SLine As Long:SLine = 3 '読み込むファイルのヘッダーが二行ある為
みたいにプログラム依存でないパラメータを解説する時に使ったりはする。
ある程度の習熟が必要なので、ステップ実行でも何してるか分からない(正常に追えない原因が分からない)のであれば、
まだコメントの必要性について論ずる段階では無いので特に要らないんじゃないかな。
自分の昔書いたコードを改修しようとして訳分からないみたいなのを何度も経験して始めてコメントの要点が掴めると思う。
Dim SLine As Long:SLine = 3 '読み込むファイルのヘッダーが二行ある為
みたいにプログラム依存でないパラメータを解説する時に使ったりはする。
ある程度の習熟が必要なので、ステップ実行でも何してるか分からない(正常に追えない原因が分からない)のであれば、
まだコメントの必要性について論ずる段階では無いので特に要らないんじゃないかな。
自分の昔書いたコードを改修しようとして訳分からないみたいなのを何度も経験して始めてコメントの要点が掴めると思う。
367デフォルトの名無しさん (JP 0Hbb-LgyW)
2017/12/08(金) 00:40:24.89ID:MH/bn/0fH >>365
変数名からなるべく中身を類推できるようにつけてコメは最小限にしてる。
後で迷うくらいならつけたほうがいいと思う。コード記述して直後は完全にわかってるから迷うポイントに気づけない。一週間後とかに再レビューして、「コレなにやってんだろ?」と引っかかった所はポイントかな。
あとExcel本体の不具合、制限回避とかコメしてないと中々思い出せないことがある。
変数名からなるべく中身を類推できるようにつけてコメは最小限にしてる。
後で迷うくらいならつけたほうがいいと思う。コード記述して直後は完全にわかってるから迷うポイントに気づけない。一週間後とかに再レビューして、「コレなにやってんだろ?」と引っかかった所はポイントかな。
あとExcel本体の不具合、制限回避とかコメしてないと中々思い出せないことがある。
368デフォルトの名無しさん (ワッチョイ bf9f-MQ7n)
2017/12/08(金) 00:50:05.27ID:04xg1k3G0 コメントは書いた方が良いんだが、余計なのはいらない。
変数名で分かるものは必要ない。
むしろどういう処理かのコメントを書く場合が多い。
それもそこのメンバーのレベルによる。
書ける奴らが集まってるなら、こんなもん分かるだろと書かない場合も多い。
変数名で分かるものは必要ない。
むしろどういう処理かのコメントを書く場合が多い。
それもそこのメンバーのレベルによる。
書ける奴らが集まってるなら、こんなもん分かるだろと書かない場合も多い。
369デフォルトの名無しさん (アウアウイー Sa8b-W7LT)
2017/12/08(金) 08:12:21.44ID:WX0K1LcLa コメントは処理の内容についてはしない
なぜその処理をするのかつかみにくいとリッキーだったり使用上やむを得ないときに理由を簡潔に書く
変更履歴をコード上に書くのは愚の骨頂だけどVBAだとほかに方法が少ないから自分かチームでルール決めるしかないな
なぜその処理をするのかつかみにくいとリッキーだったり使用上やむを得ないときに理由を簡潔に書く
変更履歴をコード上に書くのは愚の骨頂だけどVBAだとほかに方法が少ないから自分かチームでルール決めるしかないな
370デフォルトの名無しさん (アウアウイー Sa8b-W7LT)
2017/12/08(金) 08:13:11.00ID:WX0K1LcLa とリッキー→トリッキー
使用→仕様
使用→仕様
371デフォルトの名無しさん (スプッッ Sd3f-sF5C)
2017/12/08(金) 18:16:29.95ID:3k7CQU1Hd 質問です。
シミュレータソフトをVBAを使って制御しています。順々にモデルを解析していき、逐次計算結果がエクセルに反映表示されるような動作をします。
ただそのとき、きちんと逐次結果が表示されていく場合と画面に全く結果が表示されずプログラムが終わった途端に一気に数値が表示される場合とがあります。
途中でも解析結果が分かるよう安定して逐次表示するようにしたいのですが解決策分かる方いたら教えてください。
なお画面更新はもちろんオンです。調べたところdo eventsというのでWindowsに制御を渡すやり方もあるようですが、途中の動作が割り込む可能性がありそれは避けたいです。
シミュレータソフトをVBAを使って制御しています。順々にモデルを解析していき、逐次計算結果がエクセルに反映表示されるような動作をします。
ただそのとき、きちんと逐次結果が表示されていく場合と画面に全く結果が表示されずプログラムが終わった途端に一気に数値が表示される場合とがあります。
途中でも解析結果が分かるよう安定して逐次表示するようにしたいのですが解決策分かる方いたら教えてください。
なお画面更新はもちろんオンです。調べたところdo eventsというのでWindowsに制御を渡すやり方もあるようですが、途中の動作が割り込む可能性がありそれは避けたいです。
372デフォルトの名無しさん (アウーイモ MM1b-CLVY)
2017/12/08(金) 19:13:35.05ID:jJUgyerEM 自分も普段はほとんどコメント書かない。
適切な命名とコードの流れで処理は説明して、意図や補足説明にコメントを書くのが正しいと思ってる。
ただ、VBAではかなり細かく書いてる。理由は、VBAの時点でどうやっても読みづらいから。
勝手に行間調整するせいで
int n
WorkBook book
みたいな整列ができないし、Dim n As Integerって構文自体が無駄な単語多くて、数並んでいると読む気がなくなる。
スコープの区切りにEndを使うのも()よりコードに埋もれて見づらいしVBEの色設定は貧弱だし。
VBAに限ってはコメントで処理追った方が楽だって最近は思ってる。
早くエクセル操作に向いたもっとまともな言語出ないかな。
適切な命名とコードの流れで処理は説明して、意図や補足説明にコメントを書くのが正しいと思ってる。
ただ、VBAではかなり細かく書いてる。理由は、VBAの時点でどうやっても読みづらいから。
勝手に行間調整するせいで
int n
WorkBook book
みたいな整列ができないし、Dim n As Integerって構文自体が無駄な単語多くて、数並んでいると読む気がなくなる。
スコープの区切りにEndを使うのも()よりコードに埋もれて見づらいしVBEの色設定は貧弱だし。
VBAに限ってはコメントで処理追った方が楽だって最近は思ってる。
早くエクセル操作に向いたもっとまともな言語出ないかな。
373デフォルトの名無しさん (アウアウオー Sadf-CLVY)
2017/12/08(金) 19:16:35.83ID:wpv6YuQca そうか、ここもvba方式なんだった。
int__________a
WorkBook___book
みたいにタイプと変数名で表っぽく配置することね。
int__________a
WorkBook___book
みたいにタイプと変数名で表っぽく配置することね。
374デフォルトの名無しさん (ワッチョイ ffb9-LVSJ)
2017/12/08(金) 19:34:22.58ID:tPe4A27O0 >>372
VBAは宣言しないのがデフォなんだから、いちいちDimなんちゃらってやってたら、そりゃ不便だろ。
VBAは宣言しないのがデフォなんだから、いちいちDimなんちゃらってやってたら、そりゃ不便だろ。
375デフォルトの名無しさん (ワッチョイ 37c3-gbWp)
2017/12/08(金) 20:15:19.13ID:F+K0Jtko0 >>374
そうではなくて、変数の宣言構文がシンプルではないところを言っていると思うよ。
そうではなくて、変数の宣言構文がシンプルではないところを言っていると思うよ。
376デフォルトの名無しさん (スップ Sd3f-6IXG)
2017/12/08(金) 20:45:47.90ID:kuqPkTCcd やれやれ、また長い関数を書いてしまった
377デフォルトの名無しさん (アウアウカー Saeb-ipAI)
2017/12/09(土) 01:25:45.78ID:naguWC2La 宣言しない奴のコードは読みたくないな。
宣言全部入れてから持って来いと言うかも。
宣言全部入れてから持って来いと言うかも。
378デフォルトの名無しさん (アウアウカー Saeb-ipAI)
2017/12/09(土) 01:27:01.02ID:vu3Y0INla >>373
VBAに慣れてれば、そんなの違和感無いけどな。
VBAに慣れてれば、そんなの違和感無いけどな。
379デフォルトの名無しさん (アウアウカー Saeb-ipAI)
2017/12/09(土) 01:39:08.64ID:vu3Y0INla >>371
それじゃコメントのしようがない。
どんな風に制御しているのかとか、結果はそのシュミレータソフトから取ってきてるんだろうけど、そこから逐次結果が得られてるのかとかの詳細が分からんと何とも言えない。
それじゃコメントのしようがない。
どんな風に制御しているのかとか、結果はそのシュミレータソフトから取ってきてるんだろうけど、そこから逐次結果が得られてるのかとかの詳細が分からんと何とも言えない。
380デフォルトの名無しさん (スップ Sd3f-6IXG)
2017/12/09(土) 11:52:36.39ID:oQ1pndO0d Debug.Print もApplication.Statusbar もちょっと処理が重くなってくると表示が止まって役に立たない
381デフォルトの名無しさん (ワッチョイ 77f7-CoKo)
2017/12/09(土) 13:26:29.70ID:Px3+LsGd0 >>380
Debug.Printの次にDoEventsを書けばすぐに出力される
Debug.Printの次にDoEventsを書けばすぐに出力される
382デフォルトの名無しさん (アウアウオー Sadf-QeeD)
2017/12/09(土) 20:32:20.11ID:uW7BpcjHa コメント関連ありがとう。
もう、人には見せない用だけどくどいくらいコメント書きまくってるw
もう、人には見せない用だけどくどいくらいコメント書きまくってるw
383デフォルトの名無しさん (アウアウオー Sadf-QeeD)
2017/12/10(日) 08:18:11.50ID:PzHPENwqa VBAの開発環境について
デバッグ作業してると2画面欲しくなるんだけど皆さんどうしてる?
vBEの画面と通常の画面をフルスクリーンで見たいし、VBEもコード書き込む画面のほかに現在の変数が分かる画面と実行結果が分かる画面が欲しいからノート1台でやってると画面グチャグチャ
デバッグ作業してると2画面欲しくなるんだけど皆さんどうしてる?
vBEの画面と通常の画面をフルスクリーンで見たいし、VBEもコード書き込む画面のほかに現在の変数が分かる画面と実行結果が分かる画面が欲しいからノート1台でやってると画面グチャグチャ
384デフォルトの名無しさん (ワッチョイ b7e3-mHr+)
2017/12/10(日) 08:41:31.53ID:2VZ9i3vi0 ノートはUPS付きのデスクトップとして使ってる
24インチのモニタに繋いで
無線キーボードとマウスで操作
24インチのモニタに繋いで
無線キーボードとマウスで操作
385デフォルトの名無しさん (ワッチョイ bf9f-F7Qh)
2017/12/10(日) 09:29:22.82ID:s+zBVK9X0 モニタ2枚でやってるけど
ツールボックスのウィンドウとかフォームが画面の境界に表示されたりして
地味に対応していない感を醸し出してる。
フルHD以上なら1枚でもVBEを端っこによけておけば窮屈じゃないと思う。
それよりエディタの貧弱ぶりをどうにかしてほしい。
今時のIDEを触ると、VBEはふた昔前のオマケ機能なんだなと思い知る。
ツールボックスのウィンドウとかフォームが画面の境界に表示されたりして
地味に対応していない感を醸し出してる。
フルHD以上なら1枚でもVBEを端っこによけておけば窮屈じゃないと思う。
それよりエディタの貧弱ぶりをどうにかしてほしい。
今時のIDEを触ると、VBEはふた昔前のオマケ機能なんだなと思い知る。
386デフォルトの名無しさん (オッペケ Sr8b-GErp)
2017/12/10(日) 12:22:00.56ID:w7IPLNC5r まあデバッグが必要になる様なマクロなんかこさえんなっで事だ
387デフォルトの名無しさん (ワッチョイ ffb9-LVSJ)
2017/12/10(日) 13:02:23.44ID:rJurKCVR0 デバグが不要なマクロって相当短くないと無理だろ
388デフォルトの名無しさん (ワッチョイ 3703-ZqID)
2017/12/10(日) 19:23:33.18ID:RKQe6ZfS0 バグ発生に関与する要因としてコードの量のみを気にかけている
→ 初心者またはそれに準ずる低スキルのもち主
>>386を受けてバグが一切発生しない事を想定している
→ 0か100でしか物事を考えられないアスペ
デバッグをデバグと言っている
→ ガチのジジイか極端にセンスの悪い意識高い系
たった一言でここまでプロファイリング出来ました
→ 初心者またはそれに準ずる低スキルのもち主
>>386を受けてバグが一切発生しない事を想定している
→ 0か100でしか物事を考えられないアスペ
デバッグをデバグと言っている
→ ガチのジジイか極端にセンスの悪い意識高い系
たった一言でここまでプロファイリング出来ました
389デフォルトの名無しさん (アウアウオー Sadf-QeeD)
2017/12/10(日) 20:54:53.56ID:DUp9AezHa え??コード書き書きしたら一度も動作チェックしないで実装するの?
すげー!
ほぼ途中で止まって黄色くなる身としては信じられない.
全ての動作の確認と変数の動作に変な所がないか見るの楽しい.
それに人が書いたコードで動作チェックするにもf8必要だし
ただ、F8連打も大変だから超ゆっくり動作する機能でもあればいいのに
すげー!
ほぼ途中で止まって黄色くなる身としては信じられない.
全ての動作の確認と変数の動作に変な所がないか見るの楽しい.
それに人が書いたコードで動作チェックするにもf8必要だし
ただ、F8連打も大変だから超ゆっくり動作する機能でもあればいいのに
390デフォルトの名無しさん (ワッチョイ bf8a-StTJ)
2017/12/10(日) 21:56:00.33ID:tyDER63C0 虫見付けるたんびに「バッグだ!バッグだ!」言うんか 自分の発言に違和感無いんか
391デフォルトの名無しさん (ワッチョイ ff81-F7Qh)
2017/12/10(日) 22:02:23.86ID:UfhTQ4hV0 プログラムがおかしい以上バグはバグだ
開発中に個人で見つけてるから影響が小さいというに過ぎないが
べつにいいじゃんバグでも
開発中に個人で見つけてるから影響が小さいというに過ぎないが
べつにいいじゃんバグでも
392デフォルトの名無しさん (ワッチョイ ffb9-LVSJ)
2017/12/10(日) 22:28:29.51ID:rJurKCVR0 リリース版を出すかどうかをデバグ作業と呼ぶかどうかの境界線にしてるって事なのかな?
バグまみれでリリースして、ネット経由でパッチを当てるのが当たり前になった事が原因で、
そういう感覚が生まれたって考えるとなかなか興味深い現象だな。
バグまみれでリリースして、ネット経由でパッチを当てるのが当たり前になった事が原因で、
そういう感覚が生まれたって考えるとなかなか興味深い現象だな。
393デフォルトの名無しさん (ワッチョイ bfc5-qmOZ)
2017/12/10(日) 22:54:03.35ID:5raOMeRU0 お前、リアルで嫌われ者だろ
たった一文でここまでプロファイリング出来ました
たった一文でここまでプロファイリング出来ました
394デフォルトの名無しさん (ワッチョイ ff93-StTJ)
2017/12/10(日) 23:42:33.59ID:05lOR9eq0 質問です。(スレチかもだけど、他よりここの人たちのほうがLevel高そうなので)
Excel2013 @Win10 64bit Core i7 Mem8GB
ここ数日でAutoFilterのパフォーマンスが急に悪くなったと感じています。
テーブルは2000行*50列程度。
症状としてはフィルタリング済みのシートをSelectする際にタイムラグが発生します。
最初原因が分からなかったのですが、設計を少しずつ切り落としていった結果、
フィルタ範囲に入力規則が設定されていたのが原因でした。
その内容はIMEOffのみ。
フィルタがかかってない場合は瞬時にシート切替できるのに、フィルタリングされていると
切替に数秒待たされます。
フィルタ列が増えるとラグが倍増します。
また、列要素の先頭行付近の要素でフィルタされている場合の方が影響が大きいです。
2〜3日前までこのようなことはなかったのに、、何かExcel環境自体がかわったのかと
思いくまなく調べるのですが、原因が掴めません。
(つづく)
Excel2013 @Win10 64bit Core i7 Mem8GB
ここ数日でAutoFilterのパフォーマンスが急に悪くなったと感じています。
テーブルは2000行*50列程度。
症状としてはフィルタリング済みのシートをSelectする際にタイムラグが発生します。
最初原因が分からなかったのですが、設計を少しずつ切り落としていった結果、
フィルタ範囲に入力規則が設定されていたのが原因でした。
その内容はIMEOffのみ。
フィルタがかかってない場合は瞬時にシート切替できるのに、フィルタリングされていると
切替に数秒待たされます。
フィルタ列が増えるとラグが倍増します。
また、列要素の先頭行付近の要素でフィルタされている場合の方が影響が大きいです。
2〜3日前までこのようなことはなかったのに、、何かExcel環境自体がかわったのかと
思いくまなく調べるのですが、原因が掴めません。
(つづく)
395デフォルトの名無しさん (ワッチョイ ff93-StTJ)
2017/12/10(日) 23:43:42.33ID:05lOR9eq0 >>394
(つづき)
マクロやシート上の把握できていない設計要素の影響を除外するために新規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
(つづく)
(つづき)
マクロやシート上の把握できていない設計要素の影響を除外するために新規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
(つづく)
396デフォルトの名無しさん (ワッチョイ ff93-StTJ)
2017/12/10(日) 23:44:00.59ID:05lOR9eq0 >>394
(つづき)
評価方法:
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日前までは上記
現象は発生していなかったので、、原因療法が知りたいです。
どなたか上記現象分かるかたいらっしゃいませんか?
(つづき)
評価方法:
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日前までは上記
現象は発生していなかったので、、原因療法が知りたいです。
どなたか上記現象分かるかたいらっしゃいませんか?
397デフォルトの名無しさん (ワッチョイ 77f7-CoKo)
2017/12/10(日) 23:47:36.15ID:VPQqZskd0 >>396
思い当たるのは、FCUでIMEの挙動がおかしくなったという報告多数な件
思い当たるのは、FCUでIMEの挙動がおかしくなったという報告多数な件
398デフォルトの名無しさん (ワッチョイ ff93-StTJ)
2017/12/11(月) 03:47:36.99ID:/hRyHJmR0 >>397
Version1703なのでまだFallは当たってないようです。
Version1703なのでまだFallは当たってないようです。
399デフォルトの名無しさん (ワッチョイ 578a-LVSJ)
2017/12/11(月) 11:20:26.75ID:TIu41blJ0 ホントMSはアップデートなのかウイルスなのか分からんことするよな・・・
400デフォルトの名無しさん (JP 0Hbb-LVSJ)
2017/12/11(月) 13:06:28.39ID:NoGJiqM0H >>399
ちなみに職場の環境
Excel2010 @Win7
Excel2013 @Win8
では再現しませんでした。
やっぱりなんらかのUpdateが当たったのか、それとも自分でなんかやらかしてるのか、、、
ちなみに職場の環境
Excel2010 @Win7
Excel2013 @Win8
では再現しませんでした。
やっぱりなんらかのUpdateが当たったのか、それとも自分でなんかやらかしてるのか、、、
401デフォルトの名無しさん (ワッチョイ bf8a-StTJ)
2017/12/11(月) 13:32:28.01ID:pEROMoD00 午前中にメッセージが出てアプデするか? とか聞きゃあがったから「あいよ」ってんで気軽に再起動した
90%ぐらい完了した後で Cannot だってやんの しょーもないから電源落として午後再起動したら
また「アプデするか?」 って もうね、アホかと
90%ぐらい完了した後で Cannot だってやんの しょーもないから電源落として午後再起動したら
また「アプデするか?」 って もうね、アホかと
402デフォルトの名無しさん (ワッチョイ 7781-F7Qh)
2017/12/12(火) 01:03:48.16ID:vtwEo9S/0 Windows
押しつけがましいアップデートメッセージが出て
いいえしまくってたんだけど
ちょっと目を離して風呂入ってたら勝手に合意したことにしてOSインストールされてた
そんな俺が客先で作らされてるのは顧客が一日黙ってたら契約に合意したことになるシステム
押しつけがましいアップデートメッセージが出て
いいえしまくってたんだけど
ちょっと目を離して風呂入ってたら勝手に合意したことにしてOSインストールされてた
そんな俺が客先で作らされてるのは顧客が一日黙ってたら契約に合意したことになるシステム
403デフォルトの名無しさん (ワッチョイ ff93-StTJ)
2017/12/12(火) 04:17:56.67ID:VGkGFTOK0 質問です。
LastCellって簡単に取得できるのにHomePositionってこれといった決定打がないんですかね?
SendKeys以外で簡単に安定して取得する方法ってありますか?
できればSelectしなくてよい方法で。
LastCellって簡単に取得できるのにHomePositionってこれといった決定打がないんですかね?
SendKeys以外で簡単に安定して取得する方法ってありますか?
できればSelectしなくてよい方法で。
404デフォルトの名無しさん (スッップ Sdbf-6IXG)
2017/12/12(火) 11:56:45.28ID:R9+tEHmjd ADODB.Streamで大きめのテキストファイルを読むときLoadFromFileが重いので、Openの引数でファイル指定してから
ReadTextするようにしたいんですがうまくいきません。
パスをそのまま書いても、"file://C:temp/data.txt"のような書き方をしてもことごとくOpenのところで落ちてしまいます。
どう書けばいいんでしょうか?
ちなみに先頭100行を試し読みするときとかに使いたいです。
ReadTextするようにしたいんですがうまくいきません。
パスをそのまま書いても、"file://C:temp/data.txt"のような書き方をしてもことごとくOpenのところで落ちてしまいます。
どう書けばいいんでしょうか?
ちなみに先頭100行を試し読みするときとかに使いたいです。
405名無し (ワンミングク MM7f-ToMk)
2017/12/12(火) 12:18:28.61ID:KlMiw57eM406デフォルトの名無しさん (スッップ Sdbf-6IXG)
2017/12/12(火) 12:50:26.86ID:R9+tEHmjd >>405
スマホなのでちょっと待ってて
スマホなのでちょっと待ってて
407デフォルトの名無しさん (ワッチョイ ffb8-+aO5)
2017/12/13(水) 11:40:21.94ID:5F7kXiJk0 名前を付けて保存する際
最近使った“アイテム”が
今週〜,先週〜,しばらく前,という順番で使用履歴の各ファイル名が表示されます。
これを表示させない設定を教えてください。
よろしくお願いいたします。
スペック
↓
OS=Win10
Excel2016
Officeバージョン=1710
最近使った“アイテム”が
今週〜,先週〜,しばらく前,という順番で使用履歴の各ファイル名が表示されます。
これを表示させない設定を教えてください。
よろしくお願いいたします。
スペック
↓
OS=Win10
Excel2016
Officeバージョン=1710
408デフォルトの名無しさん (ワッチョイ ffb8-+aO5)
2017/12/13(水) 14:40:49.78ID:5F7kXiJk0 ↑すいません、質問するべき板を間違えました。ここはVBAでしたね。
他で聞いてみます。
他で聞いてみます。
409デフォルトの名無しさん (ワッチョイ 9f23-HquM)
2017/12/13(水) 22:03:05.49ID:lbNGI0B20 チョイ前に変数の宣言が話題になってたから俺も一ネタ言いたい
「redim で変数の宣言が出来る仕様はやめて欲しい」
変数名を間違えた時にエラーで気付けるように普段から変数の宣言を強制してるんだけど、
redim で配列を変更する時に変数名を間違えても
新たな別の変数扱いされてエラーにならないから気付かないことがある
配列変数でも宣言は dim 、要素変更は redim っていう風にしといてくれたらと願ってやまない
「redim で変数の宣言が出来る仕様はやめて欲しい」
変数名を間違えた時にエラーで気付けるように普段から変数の宣言を強制してるんだけど、
redim で配列を変更する時に変数名を間違えても
新たな別の変数扱いされてエラーにならないから気付かないことがある
配列変数でも宣言は dim 、要素変更は redim っていう風にしといてくれたらと願ってやまない
410デフォルトの名無しさん (ワッチョイ 9faf-F7Qh)
2017/12/13(水) 23:22:51.89ID:b+I23nON0 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オブジェクト変数だから
誰か答えられる?
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オブジェクト変数だから
誰か答えられる?
411デフォルトの名無しさん (ワッチョイ ffa5-HVUt)
2017/12/13(水) 23:34:03.63ID:fRI8/I3E0 そういう言語仕様なので
412デフォルトの名無しさん (ワッチョイ 9faf-F7Qh)
2017/12/13(水) 23:49:56.82ID:b+I23nON0 わりと真面目に答えてくれ
オブジェクト変数に直接パス付のファイル名をぶち込んでエラーになるのが意味わからない
なんのためのオブジェクト変数なんだ
Workbooks.Open(filename:= ApplicationGetOpenFilename)
これもパス付のファイル名なのになんで格納できるんだ?
オブジェクト変数に直接パス付のファイル名をぶち込んでエラーになるのが意味わからない
なんのためのオブジェクト変数なんだ
Workbooks.Open(filename:= ApplicationGetOpenFilename)
これもパス付のファイル名なのになんで格納できるんだ?
413デフォルトの名無しさん (ワッチョイ de9d-RjCm)
2017/12/14(木) 00:01:33.96ID:iqnmwrCv0 まず型というものを理解してください
つぎに、プロパティというものを理解してください
つぎに、オブジェクトにはデフォルトプロパティというものがあるのを理解してください
あと名前付き引数に対する理解も必要ですね
VBAではSetでの代入とLet(を省略した)代入では意味が違うので、それもちゃんと区別してください
いちいち全部ここで解説はせんが
このぐらい理解すればたぶん答えはわかるだろ
つぎに、プロパティというものを理解してください
つぎに、オブジェクトにはデフォルトプロパティというものがあるのを理解してください
あと名前付き引数に対する理解も必要ですね
VBAではSetでの代入とLet(を省略した)代入では意味が違うので、それもちゃんと区別してください
いちいち全部ここで解説はせんが
このぐらい理解すればたぶん答えはわかるだろ
414デフォルトの名無しさん (ワッチョイ de9d-RjCm)
2017/12/14(木) 00:13:48.84ID:iqnmwrCv0 まじめに答えといてやるけど
>オブジェクト変数に直接パス付のファイル名をぶち込んでエラーになるのが意味わからない
たぶんお前がやってるのは、そのオブジェクト変数のデフォルトプロパティに代入しようとした
で、そのオブジェクトがそれを受け入れないからエラーがでたんだろうな
>Workbooks.Open(filename:= ApplicationGetOpenFilename)
>これもパス付のファイル名なのになんで格納できるんだ?
格納の意味が分からん
ApplicationGetOpenFilename(の結果)をたんにOpenの(filename)引数として渡してるだけ
ApplicationGetOpenFilenameの結果がOpenのfilename引数として適当だからエラーが出なかっただけ
>オブジェクト変数に直接パス付のファイル名をぶち込んでエラーになるのが意味わからない
たぶんお前がやってるのは、そのオブジェクト変数のデフォルトプロパティに代入しようとした
で、そのオブジェクトがそれを受け入れないからエラーがでたんだろうな
>Workbooks.Open(filename:= ApplicationGetOpenFilename)
>これもパス付のファイル名なのになんで格納できるんだ?
格納の意味が分からん
ApplicationGetOpenFilename(の結果)をたんにOpenの(filename)引数として渡してるだけ
ApplicationGetOpenFilenameの結果がOpenのfilename引数として適当だからエラーが出なかっただけ
415デフォルトの名無しさん (アークセー Sxc7-Zhdx)
2017/12/14(木) 00:14:33.99ID:FrwGQASIx パス付戻り値っていう表現が凄い
Application.GetOpenFilenameの戻り値は、パス文字列か、パス文字列の配列か、ダイアログがキャンセルされたときに返されるFalseかのいずれかしかない
パス付って、何にパスがくっついてると理解してるんだろう
パスが戻り値そのものだろう
Application.GetOpenFilenameの戻り値は、パス文字列か、パス文字列の配列か、ダイアログがキャンセルされたときに返されるFalseかのいずれかしかない
パス付って、何にパスがくっついてると理解してるんだろう
パスが戻り値そのものだろう
416デフォルトの名無しさん (ワッチョイ d2af-8sno)
2017/12/14(木) 00:18:35.88ID:oVDd8Fug0417デフォルトの名無しさん (ワッチョイ d2af-8sno)
2017/12/14(木) 00:21:23.88ID:oVDd8Fug0 >>415
パスってのは
¥C:のことだろ?
openメゾットの戻り値も¥C:ついてるのに
WBオブジェクト変数に格納できる意味がわからない
専門用語でこたえるな わかりやすく答えろ
外人相手に口喧嘩して勝ち誇ってるやつと同じだわ
パスってのは
¥C:のことだろ?
openメゾットの戻り値も¥C:ついてるのに
WBオブジェクト変数に格納できる意味がわからない
専門用語でこたえるな わかりやすく答えろ
外人相手に口喧嘩して勝ち誇ってるやつと同じだわ
418デフォルトの名無しさん (ワッチョイ d2af-8sno)
2017/12/14(木) 00:23:38.19ID:oVDd8Fug0 workbookのオブジェクト変数のデフォルトプロパティってなんだよ
そこを答えろ
答えろって言わないと答え出て来ねえのかよ
そこを答えろ
答えろって言わないと答え出て来ねえのかよ
419デフォルトの名無しさん (ワッチョイ d2af-8sno)
2017/12/14(木) 00:24:22.55ID:oVDd8Fug0 ちなみにおれはVBA初めて3時間
ここまでの疑問が出るだけすごいと思うけど
ここまでの疑問が出るだけすごいと思うけど
420デフォルトの名無しさん (ワッチョイ d223-AMYv)
2017/12/14(木) 00:24:26.11ID:0XKK4N9O0 >>410
>Workbooks.Open.Filename:=Application.GetOpenFilename
>ってできないことが意味がわ「か」らない
Workbooks.Open Filename:=Application.GetOpenFilename
なら動くんだが、それではダメ?(open と filename の間は半角スペース)
何故かと言えば言語の仕様として
引数はピリオドで繋ぐものではないからとしか言いようがない
(workbooks はオブジェクト、open はメソッド、filename:=~ はその引数)
>i = Application.GetOpenFilename
>i.worksheet「s」()ってできない意味がわからない
変数i が workbook型だとして、Application.GetOpenFilename の戻り値はworkbook型ではない。
戻り値はvariant型なんだけど、キャンセル時に false になるだけで、ファイルが選択されていれば文字列が返される
複数ファイルが選択されてても文字列が配列で帰るだけ
それに、i がworkbook型変数なので set を付けないとダメ
i が variant型変数 なら文字列か false が帰るだけでヤッパリ workbook としての挙動はしない
i.worksheet「s」() っていうのも、worksheetオブジェクトは
既に開いているブックのシートしか指定出来ないから、i がブックとしてオープンしてなきゃ当然ダメ
>i = Workbooks.Open(filename:= ApplicationGetOpenFilename)
>i.worksheets()
>これならできる意味がわからない
set i = Workbooks.Open(filename:= ApplicationGetOpenFilename)
じゃないと動かないよ
理由は前述のとおり
>Workbooks.Open.Filename:=Application.GetOpenFilename
>ってできないことが意味がわ「か」らない
Workbooks.Open Filename:=Application.GetOpenFilename
なら動くんだが、それではダメ?(open と filename の間は半角スペース)
何故かと言えば言語の仕様として
引数はピリオドで繋ぐものではないからとしか言いようがない
(workbooks はオブジェクト、open はメソッド、filename:=~ はその引数)
>i = Application.GetOpenFilename
>i.worksheet「s」()ってできない意味がわからない
変数i が workbook型だとして、Application.GetOpenFilename の戻り値はworkbook型ではない。
戻り値はvariant型なんだけど、キャンセル時に false になるだけで、ファイルが選択されていれば文字列が返される
複数ファイルが選択されてても文字列が配列で帰るだけ
それに、i がworkbook型変数なので set を付けないとダメ
i が variant型変数 なら文字列か false が帰るだけでヤッパリ workbook としての挙動はしない
i.worksheet「s」() っていうのも、worksheetオブジェクトは
既に開いているブックのシートしか指定出来ないから、i がブックとしてオープンしてなきゃ当然ダメ
>i = Workbooks.Open(filename:= ApplicationGetOpenFilename)
>i.worksheets()
>これならできる意味がわからない
set i = Workbooks.Open(filename:= ApplicationGetOpenFilename)
じゃないと動かないよ
理由は前述のとおり
421デフォルトの名無しさん (アークセー Sxc7-Zhdx)
2017/12/14(木) 00:32:01.43ID:FrwGQASIx >>417
Openメソッドの戻り値はパスではなく、Workbookオブジェクトそのものだ
開いているブックの集まりであるWorkbooksコレクションオブジェクトに、引数Filenameで指定したブックを追加して、戻り値としてそのブックそのものを返す処理だ
何か根本的に勘違いしてるだろ君
Openメソッドの戻り値はパスではなく、Workbookオブジェクトそのものだ
開いているブックの集まりであるWorkbooksコレクションオブジェクトに、引数Filenameで指定したブックを追加して、戻り値としてそのブックそのものを返す処理だ
何か根本的に勘違いしてるだろ君
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 食品の高騰対策、政府が交付金の「特別枠」検討 原則全ての自治体で [蚤の市★]
- 【超絶悲報】日本政府「高市さんの答弁撤回はない。政権として弱腰と映る姿勢は見せられない」これもう立憲岡田の議員辞職しかないだろ [519511584]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 台湾「高市さんが台湾人の悲願を叶えてくれた!」これじゃ高市さん発言撤回できないぢゃん😰 [523957489]
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
