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)
115デフォルトの名無しさん (JP 0Hcd-59Nk)
2017/11/17(金) 20:16:29.56ID:Iig4V4n+H Dir関数で末尾$のフォルダを確認するとエラーになる。
(配下のフォルダはエラーにならない)
これ、どんな理由でしょうか?
(配下のフォルダはエラーにならない)
これ、どんな理由でしょうか?
116デフォルトの名無しさん (ワッチョイ 869d-67WJ)
2017/11/18(土) 00:56:48.74ID:lwdaQlHz0117デフォルトの名無しさん (JP 0Hcd-59Nk)
2017/11/18(土) 12:07:28.26ID:+9+JGsY3H >>116
ですよね。すんません。
'Case NG
?Dir("¥¥Svr¥Share$", vbDirectory)
'Case OK
?Dir("¥¥Svr¥Share$¥Sub", vbDirectory)
アクセス権は親フォルダから継承していますので双方UNCアクセス可能な状態です。Domain Admins権限で実行しています。
GetAttrの戻りは双方 16 です。
共有名に$をつけない場合は発生しないように見受けられます、、、
と、思ったのですが、$の有無ではなくて、共有フォルダ自体を指定すると発生するようです。
エラーは、52: ファイル名または番号が不正です。となります。
ご教示お願いします。
ですよね。すんません。
'Case NG
?Dir("¥¥Svr¥Share$", vbDirectory)
'Case OK
?Dir("¥¥Svr¥Share$¥Sub", vbDirectory)
アクセス権は親フォルダから継承していますので双方UNCアクセス可能な状態です。Domain Admins権限で実行しています。
GetAttrの戻りは双方 16 です。
共有名に$をつけない場合は発生しないように見受けられます、、、
と、思ったのですが、$の有無ではなくて、共有フォルダ自体を指定すると発生するようです。
エラーは、52: ファイル名または番号が不正です。となります。
ご教示お願いします。
118デフォルトの名無しさん (JP 0Hcd-59Nk)
2017/11/18(土) 12:11:55.49ID:+9+JGsY3H119デフォルトの名無しさん (JP 0Hcd-59Nk)
2017/11/18(土) 13:20:32.42ID:+9+JGsY3H >>116
末尾を"¥"で終わらせるとエラーにならないことがわかりました。でも戻りが "." になります。わからなくもないですが "Share$" を期待していたので、、
どう解釈すればいいのでしょうか。
(Dir を使う際は末尾 "¥" を励行したほうがいい?)
末尾を"¥"で終わらせるとエラーにならないことがわかりました。でも戻りが "." になります。わからなくもないですが "Share$" を期待していたので、、
どう解釈すればいいのでしょうか。
(Dir を使う際は末尾 "¥" を励行したほうがいい?)
120デフォルトの名無しさん (ワッチョイ 869d-67WJ)
2017/11/18(土) 17:21:41.22ID:lwdaQlHz0 UNCパスでそこは共有名であってフォルダ名じゃない気がするが
121デフォルトの名無しさん (ワッチョイ 821a-2Rtq)
2017/11/18(土) 17:56:31.65ID:HVgorTjE0 すいません wordのVBAです。 画像貼りつけて文字列の折り返しを背景にするのに下記では2行目で
描画の対象とならないオブジェクトが選ばれているためにtypeメソッドまたはプロパティは使用できません。
となりますが、どうしたらよいですか?
Selection.InlineShapes.AddPicture FileName:="a.jpg", SaveWithDocument:=True
Selection..ShapeRange.WrapFormat.Type=wdWrapBehind
描画の対象とならないオブジェクトが選ばれているためにtypeメソッドまたはプロパティは使用できません。
となりますが、どうしたらよいですか?
Selection.InlineShapes.AddPicture FileName:="a.jpg", SaveWithDocument:=True
Selection..ShapeRange.WrapFormat.Type=wdWrapBehind
122デフォルトの名無しさん (JP 0Hcd-59Nk)
2017/11/18(土) 19:38:08.85ID:+9+JGsY3H123デフォルトの名無しさん (JP 0Hcd-59Nk)
2017/11/18(土) 22:21:46.28ID:+9+JGsY3H 立て続けにすんません。
onAction の引数について、全角英数記号が半角に解釈されて実行されてしまうのは既知の仕様でしょうか?
ひらがなカタカナは被害を受けないようです。
CommandBars.ActiveControl.Caption
CommandBars.ActiveControl.OnAction
あたりで変換前の文字列を救出できるようですが、、根本的対応はないのでしょうか。
上記で躓いてしまい、公式で情報をみつけられなかったもので、、
onAction の引数について、全角英数記号が半角に解釈されて実行されてしまうのは既知の仕様でしょうか?
ひらがなカタカナは被害を受けないようです。
CommandBars.ActiveControl.Caption
CommandBars.ActiveControl.OnAction
あたりで変換前の文字列を救出できるようですが、、根本的対応はないのでしょうか。
上記で躓いてしまい、公式で情報をみつけられなかったもので、、
124デフォルトの名無しさん (ワッチョイ 869f-W+Hj)
2017/11/19(日) 10:05:19.39ID:M3mw+ZdH0 >>121
まずさ、Selection使うの辞めようぜ。
Hoge.Select
Selection.Fuga
という形が有ったらたいてい
Hoge.Fuga
という形にできる。
つまりね、大抵は選ぶ必要がない。
ある程度書ける人は選ぶ処理をいかに無くすかを考える。
そうすればApplication.ScreenUpdating=False使っても
速度が変わらなくなる。
ちらつき防止のために使うのが有用なのは変わらないんだけど。
.Selectを使うのはユーザーに明示的に場所を示す場合と、
本当にどうしようもない場合がごくまれにあるだけだ。
オブジェクトブラウザでShapeRangeとかWrapFormatを
調べてそこに何が(型)期待されてるかを調べる。
後は合わせれば良いだけだ。
まずさ、Selection使うの辞めようぜ。
Hoge.Select
Selection.Fuga
という形が有ったらたいてい
Hoge.Fuga
という形にできる。
つまりね、大抵は選ぶ必要がない。
ある程度書ける人は選ぶ処理をいかに無くすかを考える。
そうすればApplication.ScreenUpdating=False使っても
速度が変わらなくなる。
ちらつき防止のために使うのが有用なのは変わらないんだけど。
.Selectを使うのはユーザーに明示的に場所を示す場合と、
本当にどうしようもない場合がごくまれにあるだけだ。
オブジェクトブラウザでShapeRangeとかWrapFormatを
調べてそこに何が(型)期待されてるかを調べる。
後は合わせれば良いだけだ。
125デフォルトの名無しさん (ワッチョイ 869f-W+Hj)
2017/11/19(日) 10:10:14.58ID:M3mw+ZdH0126デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/19(日) 11:46:20.87ID:JvH46D6m0127デフォルトの名無しさん (ワッチョイ 46e9-e7SK)
2017/11/19(日) 11:56:21.06ID:aexN4+ic0 追加願いますって何を言ってるんだ???
128デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/19(日) 12:23:26.42ID:JvH46D6m0129デフォルトの名無しさん (ワッチョイ 46e9-e7SK)
2017/11/19(日) 12:30:59.55ID:aexN4+ic0 select使わない理由は誤作動の原因になるからの方が多いんじゃないか
もちろんパフォーマンスも大きく変わるけど、言うほど変わらない
それよりもコード上、何のブック、シートがactivateになっているかを把握する方が遥かにめんどくさい
もちろんパフォーマンスも大きく変わるけど、言うほど変わらない
それよりもコード上、何のブック、シートがactivateになっているかを把握する方が遥かにめんどくさい
130デフォルトの名無しさん (ワッチョイ 6eb9-dUYE)
2017/11/19(日) 12:55:38.95ID:YlgcavI50 作ってるものが偏っているからActiveSheetやSelectionを使う機会がないだけで、
もっと操作補助的な面の強いマクロなら使う場面もあるかもしれない。
もっと操作補助的な面の強いマクロなら使う場面もあるかもしれない。
131デフォルトの名無しさん (ワッチョイ 46e9-e7SK)
2017/11/19(日) 12:57:36.65ID:aexN4+ic0 確かにコードの最後にcells(1,1).selectはよく書くけど、それ以外のselectは>>124の通り「本当にどうしようもない場合」だけだな
オートシェイプかなんかでsetできなかったような、忘れたけど
オートシェイプかなんかでsetできなかったような、忘れたけど
132デフォルトの名無しさん (ワッチョイ 918a-F9AU)
2017/11/19(日) 13:53:20.81ID:wFQIPa4T0 IOと純粋関数部分を分けるようにと、Hな言語から学んだよ。
133デフォルトの名無しさん (ドコグロ MMca-ZIVp)
2017/11/19(日) 13:59:20.49ID:ZK6mPT5SM >>130
> もっと操作補助的な面の強いマクロなら使う場面もあるかもしれない。
まあそれが
> .Selectを使うのはユーザーに明示的に場所を示す場合と、
> 「ユーザーが明示的に選択したオブジェクトを処理する場合」
なわけだが
> もっと操作補助的な面の強いマクロなら使う場面もあるかもしれない。
まあそれが
> .Selectを使うのはユーザーに明示的に場所を示す場合と、
> 「ユーザーが明示的に選択したオブジェクトを処理する場合」
なわけだが
134デフォルトの名無しさん (ワッチョイ 869f-W+Hj)
2017/11/19(日) 16:16:58.30ID:M3mw+ZdH0 >>129
誤動作とか以前に無駄なことをしたくないという自然な考えがある。
Cells(1,1).Select
Cells(1,2).Select
Cells(1,1).Select
と書かれてたらなんじゃこれと思うだろ。
マクロの記録は操作を自然に記録してしまうけど、
やりたいことはそれじゃない。
それにコードも汚くなって読みたくないものになる。
誤動作とか以前に無駄なことをしたくないという自然な考えがある。
Cells(1,1).Select
Cells(1,2).Select
Cells(1,1).Select
と書かれてたらなんじゃこれと思うだろ。
マクロの記録は操作を自然に記録してしまうけど、
やりたいことはそれじゃない。
それにコードも汚くなって読みたくないものになる。
135デフォルトの名無しさん (アウアウオー Saca-6S2d)
2017/11/19(日) 16:18:58.83ID:8D87jpDPa ユーザーが明示的に選択したものに〜
ってのもぶっちゃけ運用の問題の気もするが
マクロ化の範囲にもよるんだけども
可能な限り避けるべきってのは正しいでしょ
ってのもぶっちゃけ運用の問題の気もするが
マクロ化の範囲にもよるんだけども
可能な限り避けるべきってのは正しいでしょ
136デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/19(日) 17:16:48.30ID:JvH46D6m0 >>135
>可能な限り避けるべきってのは正しいでしょ
そうなの?
実際それをやることは少ないけど、別に避けてるわけじゃないな。
「ボタンを押すと、選択しているセルの書式を〜する」なんて処理はたまにある。
>可能な限り避けるべきってのは正しいでしょ
そうなの?
実際それをやることは少ないけど、別に避けてるわけじゃないな。
「ボタンを押すと、選択しているセルの書式を〜する」なんて処理はたまにある。
137デフォルトの名無しさん (アウアウカー Sa49-z9KJ)
2017/11/19(日) 17:30:54.95ID:SAgRzZs9a ユーザーが明示的に選択したものに処理を与えるってのはアリだとは思う。
でもそれはHoge.Selectでは無くてSelectionを使う場合だよね。
でもそれはHoge.Selectでは無くてSelectionを使う場合だよね。
138デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/19(日) 17:35:35.45ID:JvH46D6m0139デフォルトの名無しさん (ワッチョイ 02b3-ZIVp)
2017/11/19(日) 17:48:04.11ID:lBNHVI9l0140デフォルトの名無しさん (ワッチョイ 46e9-e7SK)
2017/11/19(日) 17:50:02.84ID:aexN4+ic0141デフォルトの名無しさん (ワッチョイ 821a-2Rtq)
2017/11/19(日) 20:49:12.88ID:eK6D85VJ0 wordのマクロ組んでる人おらんのかな?
142デフォルトの名無しさん (ワッチョイ 46e9-3zcL)
2017/11/19(日) 21:18:16.41ID:aexN4+ic0 >>121>>141
そもそもwordを使わない
あととりあえず動くコードを書いてくれ
Selection..ShapeR
ピリオドがニコあって邪魔
で、差し込んだ画像の文字列の折り返しってのが何がしたいのか良く分からん
テキストボックスなら分かるしそれで通るけど
そもそもwordを使わない
あととりあえず動くコードを書いてくれ
Selection..ShapeR
ピリオドがニコあって邪魔
で、差し込んだ画像の文字列の折り返しってのが何がしたいのか良く分からん
テキストボックスなら分かるしそれで通るけど
143デフォルトの名無しさん (ワッチョイ 821a-2Rtq)
2017/11/19(日) 21:23:25.50ID:eK6D85VJ0 >>142 画像のレイアウトで背面にしたいんですよ。 なんかしらんけど動いて、なぜか前面で貼りつけられました。
なんかEXCELと勝手が違いますぬ・・・。
なんかEXCELと勝手が違いますぬ・・・。
144デフォルトの名無しさん (ワッチョイ 46e9-3zcL)
2017/11/19(日) 21:27:01.10ID:aexN4+ic0145デフォルトの名無しさん (ワッチョイ 821a-2Rtq)
2017/11/19(日) 21:31:31.01ID:eK6D85VJ0146デフォルトの名無しさん (ワッチョイ f9b3-6S2d)
2017/11/19(日) 22:32:44.41ID:Z3cAV0my0 wordはスレ違いだけどな
あんまりvbaと親和性もないし
あくまで文書ツールだからな
あんまりvbaと親和性もないし
あくまで文書ツールだからな
147デフォルトの名無しさん (ワッチョイ 1d03-FHhe)
2017/11/19(日) 22:50:31.56ID:1/mWyqVE0 おいおいExcelかてただの文書ツールやぞw
148デフォルトの名無しさん (ワッチョイ 46e9-3zcL)
2017/11/19(日) 22:56:21.06ID:aexN4+ic0 >>147
釣りはほどほどに
釣りはほどほどに
149デフォルトの名無しさん (ワッチョイ 02b3-ZIVp)
2017/11/19(日) 23:23:51.19ID:lBNHVI9l0 文書ツールとしてExcel使う奴はたくさんいるけど w
150デフォルトの名無しさん (ワッチョイ 869f-W+Hj)
2017/11/20(月) 08:54:30.90ID:6BLE5ZLY0 >>145
まず君が貼り付けたのは何かを考えよう。
マクロ記録が示すコードを見ればInlineShapeだろう。
InlineShapeを調べれば文字列の中の位置を指定した図形ということらしい。
要は10文字目に挿入とかさ。
InlineShapeにはWrapFormatプロパティは無い。
文字列の折り返しを背景にするというのは回り込み等を自動でやるわけでその結果文字が動くだろ。
それじゃ位置を指定したことにならない。
だから出来ない。
それじゃあどうするかというと、InlineShapeをShapeに変換するというのが1つ。
InlineShapeにはConvertToShapeというのがあるから、それをShapeで受けてやればShapeにはWrapFormatプロパティがある。
Dim iShp As InlineShape
Dim Shp As Shape
Set iShp=Document("hoge.doc").Characters(10).InlineShapes.AddPicture("C:¥fuga.jpg")
Set Shp=iShp.ConvertToShape
Shp.WrapText.Type=wdWrapThrough
しかしそもそも最初からInlineShapeじゃなくてShapeを貼り付ければ問題にならない。
Set shp=Documents("hoge.doc").Shapes.AddPicture("C:¥fuga.jpg")
shp.WrapText.Type wdWrapThrough
Shapeは位置を指定出来ないといっても何文字目という意味で指定出来ないだけで、Left、Top、Width、Heightでの位置指定はできる。
今回の問題もSelectionだったな。
何のオブジェクトを触ってるのかはっきりさせずに組んでるからエラーの意味も分からない。
まず君が貼り付けたのは何かを考えよう。
マクロ記録が示すコードを見ればInlineShapeだろう。
InlineShapeを調べれば文字列の中の位置を指定した図形ということらしい。
要は10文字目に挿入とかさ。
InlineShapeにはWrapFormatプロパティは無い。
文字列の折り返しを背景にするというのは回り込み等を自動でやるわけでその結果文字が動くだろ。
それじゃ位置を指定したことにならない。
だから出来ない。
それじゃあどうするかというと、InlineShapeをShapeに変換するというのが1つ。
InlineShapeにはConvertToShapeというのがあるから、それをShapeで受けてやればShapeにはWrapFormatプロパティがある。
Dim iShp As InlineShape
Dim Shp As Shape
Set iShp=Document("hoge.doc").Characters(10).InlineShapes.AddPicture("C:¥fuga.jpg")
Set Shp=iShp.ConvertToShape
Shp.WrapText.Type=wdWrapThrough
しかしそもそも最初からInlineShapeじゃなくてShapeを貼り付ければ問題にならない。
Set shp=Documents("hoge.doc").Shapes.AddPicture("C:¥fuga.jpg")
shp.WrapText.Type wdWrapThrough
Shapeは位置を指定出来ないといっても何文字目という意味で指定出来ないだけで、Left、Top、Width、Heightでの位置指定はできる。
今回の問題もSelectionだったな。
何のオブジェクトを触ってるのかはっきりさせずに組んでるからエラーの意味も分からない。
151デフォルトの名無しさん (オッペケ Srd1-FHhe)
2017/11/20(月) 12:21:51.39ID:phW/Gatbr152デフォルトの名無しさん (アウアウオー Saca-6S2d)
2017/11/20(月) 13:11:30.03ID:tncAZsVja >>151
Jカスこんなところでも下らねー釣りしてんじゃねえよ
Jカスこんなところでも下らねー釣りしてんじゃねえよ
153デフォルトの名無しさん (ワッチョイ 869f-z9KJ)
2017/11/20(月) 15:08:27.78ID:6BLE5ZLY0 WordVBAで使いにくいのは記録出来ても良さそうなものが記録出来ない所。
ただ、これはこっちが出来ても良さそうと勝手に思ってるだけでMS的にはまずい何かが有るのかもしれない。
それよりも困るのは
Debug.Print Typename(hoge)
とやってSelectionが帰ってくる所。
型を知りたいのにSelectionは無いだろう。
ただ、これはこっちが出来ても良さそうと勝手に思ってるだけでMS的にはまずい何かが有るのかもしれない。
それよりも困るのは
Debug.Print Typename(hoge)
とやってSelectionが帰ってくる所。
型を知りたいのにSelectionは無いだろう。
154デフォルトの名無しさん (アウアウオー Saca-6S2d)
2017/11/20(月) 17:44:20.81ID:PC8rzjhFa155デフォルトの名無しさん (ワッチョイ 46e9-jGnz)
2017/11/20(月) 19:16:12.47ID:3EUEsxu/0 >>153
笑ったw
笑ったw
156デフォルトの名無しさん (ワッチョイ a961-RjUU)
2017/11/20(月) 19:56:44.52ID:HiJj2X0L0157デフォルトの名無しさん (ワッチョイ 821a-2Rtq)
2017/11/20(月) 21:46:53.19ID:dynAF7sP0 >>150 ありがとうございます。 じつはそれで解決しました。
マクロで記録したらinlineshapeで、なんやねんこれ?と理解していなかったことが原因でした。
マクロで記録したらinlineshapeで、なんやねんこれ?と理解していなかったことが原因でした。
158デフォルトの名無しさん (ワッチョイ a960-IKRN)
2017/11/20(月) 22:35:57.11ID:bUEYENj70 前スレ943様の下記ファイル、もう一度upしていただく訳にはいきませんでしょうか。
DLしようと思いながら、失念していて、先ほどしようとしたところ消えてしまっていました。
943様、お手数をおかけしますが何卒よろしくお願いいたします。
943デフォルトの名無しさん (ワッチョイ 06e9-FqSh)2017/11/05(日) 15:01:02.75ID:2uRc+T650>>944>>958
>>942
写真は辞めてくれ。見るのめんどくさい
出てきたからあげるわ
大体やりたいことはこれだと思う
・設定シートのB列に表示したいもの。C列は入力する文字を入れる
・入力シートのA1に「う」と入れて決定。リストが現れて「東京」「北海道」が現れるので選択する
もちろん「う」じゃなくても「東」なんかでもいい。場合によってはB列に「渋谷」とかいれてもいいかもしれない
https://dotup.org/uploda/dotup.org1380568.zip.html
自分で言うのも何だがこれ超便利。かなりオススメ
DLしようと思いながら、失念していて、先ほどしようとしたところ消えてしまっていました。
943様、お手数をおかけしますが何卒よろしくお願いいたします。
943デフォルトの名無しさん (ワッチョイ 06e9-FqSh)2017/11/05(日) 15:01:02.75ID:2uRc+T650>>944>>958
>>942
写真は辞めてくれ。見るのめんどくさい
出てきたからあげるわ
大体やりたいことはこれだと思う
・設定シートのB列に表示したいもの。C列は入力する文字を入れる
・入力シートのA1に「う」と入れて決定。リストが現れて「東京」「北海道」が現れるので選択する
もちろん「う」じゃなくても「東」なんかでもいい。場合によってはB列に「渋谷」とかいれてもいいかもしれない
https://dotup.org/uploda/dotup.org1380568.zip.html
自分で言うのも何だがこれ超便利。かなりオススメ
159デフォルトの名無しさん (ワッチョイ 46e9-jGnz)
2017/11/20(月) 23:57:02.00ID:3EUEsxu/0 こういう時はせめてエクセルアップロードできるアップローダーぐらい探してくると良いぞ
160デフォルトの名無しさん (ワッチョイ 869f-W+Hj)
2017/11/21(火) 02:44:24.85ID:eIBN2cFq0161デフォルトの名無しさん (ワッチョイ 068a-RuWE)
2017/11/21(火) 13:03:45.67ID:OSkNtsZi0 途中経過はどうでもいいから結果を教えろ って人間がどんどん増えてんだな 経営者かよ
162デフォルトの名無しさん (ワッチョイ bdb5-fAsB)
2017/11/21(火) 16:28:44.72ID:7aGtp6cN0 結果はいいから途中経過を教えろ、なんて頭おかしいだろ何言ってんだか
163デフォルトの名無しさん (アウアウオー Saca-6S2d)
2017/11/21(火) 17:41:32.87ID:rp//GM45a164デフォルトの名無しさん (スップ Sd22-A9yG)
2017/11/21(火) 18:15:13.21ID:22dwRLVAd 世の中は論理的にできているのに>>162が論理的でないのはなぜなのか
165デフォルトの名無しさん (ワッチョイ 46e9-IwP8)
2017/11/21(火) 19:38:11.84ID:49Yzjg710 >>164
単に逆裏待遇を理解していないだけかと
単に逆裏待遇を理解していないだけかと
166デフォルトの名無しさん (スッップ Sd22-l4/q)
2017/11/21(火) 21:45:55.72ID:vcSymdG+d vbaを勉強中の者です。
市販で売られている本など調べても載っていないのですが、for文で使われる変数名が「i」ですが、なぜ「i」なのですか?
「i」の意味を教えて頂けませんか?
既出でしたらすみません
市販で売られている本など調べても載っていないのですが、for文で使われる変数名が「i」ですが、なぜ「i」なのですか?
「i」の意味を教えて頂けませんか?
既出でしたらすみません
167デフォルトの名無しさん (ワッチョイ 02eb-Ti+n)
2017/11/21(火) 21:52:07.73ID:x41b941k0 >>166
iterationのiって事でいいじゃん
iterationのiって事でいいじゃん
168デフォルトの名無しさん (ワッチョイ 46e9-IwP8)
2017/11/21(火) 21:58:13.94ID:49Yzjg710169デフォルトの名無しさん (ワッチョイ 869f-HNOF)
2017/11/21(火) 22:07:12.83ID:L3nv/JJz0 今グーグル先生に聞いたらFORTRANからの名残だってでてきた
170デフォルトの名無しさん (ワッチョイ a1f7-VFQ0)
2017/11/21(火) 22:14:29.41ID:wrH3tJZg0 >>169
昔読んだVBだかVBAだかの書籍にはトピックとして掲載してた書籍もあったような記憶が
昔読んだVBだかVBAだかの書籍にはトピックとして掲載してた書籍もあったような記憶が
171デフォルトの名無しさん (スッップ Sd22-l4/q)
2017/11/21(火) 22:17:05.57ID:vcSymdG+d172デフォルトの名無しさん (スッップ Sd22-l4/q)
2017/11/21(火) 22:17:55.51ID:vcSymdG+d >>170さんもレスありがとう!
173デフォルトの名無しさん (ワッチョイ f9b3-6S2d)
2017/11/21(火) 22:18:54.65ID:2WJixd7Q0 integerのiだと思ってたわ
174デフォルトの名無しさん (ワッチョイ 918a-F9AU)
2017/11/21(火) 22:47:14.99ID:FV1Lkm8B0 >>166
数学でijkは行列などの添え字で使う。
fortranでネストしたループ回すときって、微分方程式を離散化したものを解いたりするパターンが多くて、
二次元や三次元の多次元配列を使ってるだろうから、自然とijkになる。
で、数学のiはintegerからきてる、といったぐあいでは?
数学でijkは行列などの添え字で使う。
fortranでネストしたループ回すときって、微分方程式を離散化したものを解いたりするパターンが多くて、
二次元や三次元の多次元配列を使ってるだろうから、自然とijkになる。
で、数学のiはintegerからきてる、といったぐあいでは?
175デフォルトの名無しさん (スッップ Sd22-l4/q)
2017/11/21(火) 23:38:11.98ID:vcSymdG+d176デフォルトの名無しさん (ワッチョイ 25f7-2nK2)
2017/11/22(水) 06:03:08.32ID:nhDpu2iz0 今から60年前にアメリカのIBM社で開発されたFORTRAN(フォートラン)というコンピューター言語があって
そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり
ループカウンターは整数だからFOR文でもIを使ったという歴史がある
一方で昔のBASIC言語ではすべての変数が実数型というのが基本仕様だったので、Iを使う意味はあまりなかったけど、
FORTRANに憧れた世代が書き方を真似してそのまま定着した
という年寄りの昔話
そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり
ループカウンターは整数だからFOR文でもIを使ったという歴史がある
一方で昔のBASIC言語ではすべての変数が実数型というのが基本仕様だったので、Iを使う意味はあまりなかったけど、
FORTRANに憧れた世代が書き方を真似してそのまま定着した
という年寄りの昔話
177デフォルトの名無しさん (ワッチョイ 918a-F9AU)
2017/11/22(水) 18:32:45.15ID:mA48vywq0 >>175
数学、論理学とは非常に近しいと思う。
関数型プログラミングてスタイルもあるし、
数学の証明をある程度自動化する言語もある。CoqとかAgdaとか。
VBAにもそろそろ高階関数が欲しいですね、MSさん期待してます。
数学、論理学とは非常に近しいと思う。
関数型プログラミングてスタイルもあるし、
数学の証明をある程度自動化する言語もある。CoqとかAgdaとか。
VBAにもそろそろ高階関数が欲しいですね、MSさん期待してます。
178デフォルトの名無しさん (ワッチョイ e18a-8CrJ)
2017/11/22(水) 18:50:12.14ID:k1sKIAfY0 愛があるからかと思った
179デフォルトの名無しさん (ワッチョイ bdc3-Vht8)
2017/11/22(水) 18:53:30.30ID:/wgdkUUe0 ループカウンタにi、j、kを使うようになったのはC言語の影響が一番大きい。
180デフォルトの名無しさん (アメ MMcd-b1Oe)
2017/11/22(水) 20:12:17.87ID:Ce6/du3cM どこまで使う?
自分はnまで。
ループ変数以外で1文字の変数は使わない。
自分はnまで。
ループ変数以外で1文字の変数は使わない。
181デフォルトの名無しさん (アウアウカー Sa49-z9KJ)
2017/11/22(水) 20:20:06.35ID:t2AK8w6Da 出来ればkまでにしたいね。
実際は思うようにいかなくて俺もnぐらいまで使ったことある。
でも1文字辞めることもある。
実際は思うようにいかなくて俺もnぐらいまで使ったことある。
でも1文字辞めることもある。
182デフォルトの名無しさん (ワッチョイ 46e9-RjUU)
2017/11/22(水) 20:57:00.17ID:fITl6ULj0183答えはI〜N (ドコグロ MM41-ZIVp)
2017/11/22(水) 21:18:19.80ID:W0SJQGiTM184デフォルトの名無しさん (ワッチョイ f9b3-6S2d)
2017/11/22(水) 21:46:50.38ID:T8s4U7Y50 最近デザパタに凝っててイテレーターパターンやってるけどなかなかいいよ
まあいかに多重ループしないかは大事だわ
まあいかに多重ループしないかは大事だわ
185デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/22(水) 21:49:25.89ID:HR2X/8WF0 イテレータと多重ループ回避って関係あったっけ?
186デフォルトの名無しさん (ワッチョイ f9b3-6S2d)
2017/11/22(水) 21:55:38.62ID:T8s4U7Y50187デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/22(水) 22:48:54.39ID:HR2X/8WF0 VBAでイテレータパターンて難しそうだ
ループをなくす、って方向の方が良さそうです。
ループをなくす、って方向の方が良さそうです。
188デフォルトの名無しさん (ワッチョイ 02e7-GXP8)
2017/11/22(水) 22:51:49.31ID:HR2X/8WF0 方向の方w
189デフォルトの名無しさん (ワッチョイ 229c-AWKa)
2017/11/22(水) 23:20:15.38ID:pTVfJfW70 Excel2010です。
文字列を引数に文字列を返すユーザ定義関数を作りました。
アドインにしてチーム内に配布しようと思ってます。
試しに新規ブックで使ってみたところ、開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。
関数の中の処理を全て消しても保存確認メッセージがでます。
文字列を返すだけの関数なので、保存確認メッセージを出ないようにしたいのですが、どうすればよいでしょうか。
文字列を引数に文字列を返すユーザ定義関数を作りました。
アドインにしてチーム内に配布しようと思ってます。
試しに新規ブックで使ってみたところ、開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。
関数の中の処理を全て消しても保存確認メッセージがでます。
文字列を返すだけの関数なので、保存確認メッセージを出ないようにしたいのですが、どうすればよいでしょうか。
190デフォルトの名無しさん (ワッチョイ bfe9-rwnT)
2017/11/23(木) 00:02:49.97ID:Kpe6aW6i0 >>189
中身を見ないとわからない
Function Foo(bar As Long)
Foo = bar * 2
End Function
と作ってみたけど
>開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。
この減少は起きなかったよ
何か別の所に原因があると思う
中身を見ないとわからない
Function Foo(bar As Long)
Foo = bar * 2
End Function
と作ってみたけど
>開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。
この減少は起きなかったよ
何か別の所に原因があると思う
191デフォルトの名無しさん (ワッチョイ 079f-6+xn)
2017/11/23(木) 06:39:11.72ID:Y2T7cP8D0 >>189
それって要するにvlookupの事?
それって要するにvlookupの事?
192デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
2017/11/23(木) 13:05:29.27ID:IQVJTYbd0 >>190
簡単に書くとこんな感じの関数です。
Function Kubun(code as string) as string
if (left(code,3) = "123") then Kubun = "A"
end function
if文が大量に続くので共通化してアドインで配布しようと思ってます。
これをKubun.xlbとしてアドインフォルダに保存しました。
新規BookでセルA1に123、セルB1に =Kubun(A1) と入力したところ
セルB1にAと表示され、関数は機能しました。
その後保存した新規Bookを開き何もせず閉じようとすると保存確認メッセージがでます。
簡単に書くとこんな感じの関数です。
Function Kubun(code as string) as string
if (left(code,3) = "123") then Kubun = "A"
end function
if文が大量に続くので共通化してアドインで配布しようと思ってます。
これをKubun.xlbとしてアドインフォルダに保存しました。
新規BookでセルA1に123、セルB1に =Kubun(A1) と入力したところ
セルB1にAと表示され、関数は機能しました。
その後保存した新規Bookを開き何もせず閉じようとすると保存確認メッセージがでます。
193デフォルトの名無しさん (ワッチョイ 5feb-g2WY)
2017/11/23(木) 13:22:13.30ID:fJlhhdGs0194デフォルトの名無しさん (ワッチョイ 7f93-ULKC)
2017/11/23(木) 13:42:02.49ID:UTTVtMan0195デフォルトの名無しさん (スップ Sd7f-cUxe)
2017/11/23(木) 14:06:43.11ID:1VQF43Qed196デフォルトの名無しさん (スップ Sd7f-cUxe)
2017/11/23(木) 14:07:06.07ID:1VQF43Qed かぶった
197デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
2017/11/23(木) 14:35:16.43ID:IQVJTYbd0 すいません。拡張子は違ったかもしれません。
198デフォルトの名無しさん (ワッチョイ 67f7-hcjg)
2017/11/23(木) 15:49:16.74ID:AvEDQSYF0199デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
2017/11/23(木) 17:02:33.93ID:IQVJTYbd0200デフォルトの名無しさん (アークセー Sxfb-ECpi)
2017/11/23(木) 17:02:38.88ID:mWIv05A8x >>114
要らない
要らない
201デフォルトの名無しさん (ワッチョイ bf9d-h3cN)
2017/11/23(木) 17:22:13.82ID:k3nQdCAx0 >>199
おそらく
A1が変わってないときに、=Kubun(A1) という式が必ず同じ値を返すという「保証」ができないので
B1セルが変更されている可能性を排除できない
ということで変更されている(可能性がある)と判断されてる
ユーザ定義関数は中身チェックしないで非決定的だって判断だな
シート開くときに再計算するかどうかのオプション設定なかったっけ?最悪手動かな
おそらく
A1が変わってないときに、=Kubun(A1) という式が必ず同じ値を返すという「保証」ができないので
B1セルが変更されている可能性を排除できない
ということで変更されている(可能性がある)と判断されてる
ユーザ定義関数は中身チェックしないで非決定的だって判断だな
シート開くときに再計算するかどうかのオプション設定なかったっけ?最悪手動かな
202デフォルトの名無しさん (ササクッテロレ Spfb-g2WY)
2017/11/23(木) 17:30:51.41ID:JDomtUrWp203デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
2017/11/23(木) 19:42:47.05ID:IQVJTYbd0204デフォルトの名無しさん (ワッチョイ 5feb-g2WY)
2017/11/23(木) 20:00:32.08ID:fJlhhdGs0 >>203
関数が呼ばれると言うことは変更されると言うことだから
保存確認ダイアログが出るのが普通
savedプロパティを変更する方法とか
calculationプロパティをマニュアルにする方法とか
方法はあるかもしれないけど
他の問題が起きるようになるかもしれない
関数が呼ばれると言うことは変更されると言うことだから
保存確認ダイアログが出るのが普通
savedプロパティを変更する方法とか
calculationプロパティをマニュアルにする方法とか
方法はあるかもしれないけど
他の問題が起きるようになるかもしれない
205デフォルトの名無しさん (ワッチョイ 078a-lrN+)
2017/11/23(木) 23:21:24.29ID:SB9DcOfL0 Application.DisplayAlerts = False
のこと?
のこと?
206デフォルトの名無しさん (ワッチョイ 27a4-cUCq)
2017/11/24(金) 11:41:27.83ID:h1FhSyIp0 質問です。Excel 2016で、Autofilerされたシートの内容を参照するために
(wsはワークシートオブジェクトです)
Debug.Print ws.AutoFilterMode →この結果は True
Debug.Print ws.AutoFilter.FilterMode →この結果も True
Dim rgFilter As Range
Set rgFilter = ws.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
For Each e In rgFilter
Debug.Print e
Next e
こんな感じで参照しようとしてるんですが、
参照してるシートでフィルターが掛かっていても、いなくても
同じように全件(25行なら25行)がイミディエイトに表示されます。
絞り込まれた結果のみを表示するためにはどうしたら良いのでしょうか?
(wsはワークシートオブジェクトです)
Debug.Print ws.AutoFilterMode →この結果は True
Debug.Print ws.AutoFilter.FilterMode →この結果も True
Dim rgFilter As Range
Set rgFilter = ws.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
For Each e In rgFilter
Debug.Print e
Next e
こんな感じで参照しようとしてるんですが、
参照してるシートでフィルターが掛かっていても、いなくても
同じように全件(25行なら25行)がイミディエイトに表示されます。
絞り込まれた結果のみを表示するためにはどうしたら良いのでしょうか?
207デフォルトの名無しさん (ワッチョイ 67f7-3JRZ)
2017/11/24(金) 11:52:22.18ID:BOT2k7iW0 >>206
Set rgFilter = ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
Set rgFilter = ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
208デフォルトの名無しさん (ワッチョイ 27a4-cUCq)
2017/11/24(金) 12:05:42.58ID:h1FhSyIp0209デフォルトの名無しさん (ワッチョイ 27a4-cUCq)
2017/11/24(金) 12:12:04.66ID:h1FhSyIp0 Dim MaxRow As Long
MaxRow = ws.Range("A" & Rows.Count).End(xlUp).row
これを追加して、
Set rgFilter = ws.Range("A1:A" & MaxRow).CurrentRegion.SpecialCells(xlCellTypeVisible)
にしてみても、結果は>>206と同じになりました。
んー謎です
MaxRow = ws.Range("A" & Rows.Count).End(xlUp).row
これを追加して、
Set rgFilter = ws.Range("A1:A" & MaxRow).CurrentRegion.SpecialCells(xlCellTypeVisible)
にしてみても、結果は>>206と同じになりました。
んー謎です
210デフォルトの名無しさん (アウアウイー Safb-2sqJ)
2017/11/24(金) 13:34:47.29ID:bxAooAvMa211デフォルトの名無しさん (イモイモ Se0f-u0W/)
2017/11/24(金) 16:52:13.42ID:x6NJ51zce Sheets("Sheet1").Columns(2).Insert Shift:=xlToLeft
Sheets("Sheet1").Columns(2).Insert Shift:=xlToRight
この二行の動作の差が分からないので
違いを教えてください
Sheets("Sheet1").Columns(2).Insert Shift:=xlToRight
この二行の動作の差が分からないので
違いを教えてください
212デフォルトの名無しさん (JP 0Heb-ULKC)
2017/11/24(金) 17:34:32.78ID:HKDmIDHRH213デフォルトの名無しさん (ワッチョイ 5f58-h3cN)
2017/11/24(金) 19:18:42.44ID:V+PY16OM0214デフォルトの名無しさん (アウアウオー Sa1f-h3cN)
2017/11/25(土) 12:49:09.41ID:roqaXNhOa エクセルVBAですがあるシートで入力し別のシートに転記するというコードを記入しているのですが
For文でやろうとするとうまくいきません。元々のシートの行が11行目から始まり転記先のシートが2行目から始まるのでネストを使って以下のようにコードを組んでみたのですが2行目の入力データが転記先のデータに2行追加されてしまいました。
1行目と2行目はそれぞれ別のデータが記述されておりそのまま転記できるようなコードにしたいです。
もしかしたら、そもそもforだとだめなのかもしれません。ちなみに入力するデータが11行目から始まり終わりは20行目で終わります。
がとりあえず繰り返し構文でできればかまいません。下記のコードをどう変えればいいか教えてください。
Sub 登録()
Set syougai = Sheets("障害記録") 'シート名にて指定しているので変更しない事
Set itigi = Sheets("一時データ") 'シート名にて指定しているので変更しない事
Const hiduke As Long = 19 '日付列の定数
Const gouki As Long = 17 '号機の列の定数
Const era As Long = 18 'エラーコードの列の定数
Const hyou1 As Long = 11 '障害集計表上の定数
Const kisyu As Long = 21
Const syuukei1 As Long = 21
For i = 2 To 3
For j = 11 To 12
itigi.Cells(i, 1).Value = syougai.Cells(j, hiduke).Value '日付
itigi.Cells(i, 2).Value = syougai.Cells(j, gouki).Value '号機
itigi.Cells(i, 3).Value = syougai.Cells(j, kisyu).Value '機種
itigi.Cells(i, 4).Value = syougai.Cells(j, era).Value 'エラーコード
itigi.Cells(i, 5).Value = syougai.Cells(j, syuukei1).Value '集計データ
i = i + 1
j = j + 1
Next j
Next i
End Sub
For文でやろうとするとうまくいきません。元々のシートの行が11行目から始まり転記先のシートが2行目から始まるのでネストを使って以下のようにコードを組んでみたのですが2行目の入力データが転記先のデータに2行追加されてしまいました。
1行目と2行目はそれぞれ別のデータが記述されておりそのまま転記できるようなコードにしたいです。
もしかしたら、そもそもforだとだめなのかもしれません。ちなみに入力するデータが11行目から始まり終わりは20行目で終わります。
がとりあえず繰り返し構文でできればかまいません。下記のコードをどう変えればいいか教えてください。
Sub 登録()
Set syougai = Sheets("障害記録") 'シート名にて指定しているので変更しない事
Set itigi = Sheets("一時データ") 'シート名にて指定しているので変更しない事
Const hiduke As Long = 19 '日付列の定数
Const gouki As Long = 17 '号機の列の定数
Const era As Long = 18 'エラーコードの列の定数
Const hyou1 As Long = 11 '障害集計表上の定数
Const kisyu As Long = 21
Const syuukei1 As Long = 21
For i = 2 To 3
For j = 11 To 12
itigi.Cells(i, 1).Value = syougai.Cells(j, hiduke).Value '日付
itigi.Cells(i, 2).Value = syougai.Cells(j, gouki).Value '号機
itigi.Cells(i, 3).Value = syougai.Cells(j, kisyu).Value '機種
itigi.Cells(i, 4).Value = syougai.Cells(j, era).Value 'エラーコード
itigi.Cells(i, 5).Value = syougai.Cells(j, syuukei1).Value '集計データ
i = i + 1
j = j + 1
Next j
Next i
End Sub
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 台湾「高市さんが台湾人の悲願を叶えてくれた!」これじゃ高市さん発言撤回できないぢゃん😰 [523957489]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【高市悲報】神谷「部下が間違えて脱炭素を脱酸素て書いたんですよ😡それ読んだだけなのに挙げ足とるな!小学生か!」 [359965264]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
