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)
143 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 17:30:54.95 ID:SAgRzZs9a.net] ユーザーが明示的に選択したものに処理を与えるってのはアリだとは思う。 でもそれはHoge.Selectでは無くてSelectionを使う場合だよね。
144 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 17:35:35.45 ID:JvH46D6m0.net] >>138 なるほど 最初のきっかけとなった>>125 の1行目が、 >まずさ、Selection使うの辞めようぜ。 だったからずっと Selection のことを語っていた
145 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 17:48:04.11 ID:lBNHVI9l0.net] >>136 優先順位の問題でしょ > ユーザーが明示的に選択したものに〜 って言う仕様の方が > 可能な限り避けるべき より優先されるのは当たり前
146 名前:デフォルトの名無しさん [2017/11/19(日) 17:50:02.84 ID:aexN4+ic0.net] >>138 あぁそれはアリ 会社によっては多用するだろう
147 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 20:49:12.88 ID:eK6D85VJ0.net] wordのマクロ組んでる人おらんのかな?
148 名前:デフォルトの名無しさん [2017/11/19(日) 21:18:16.41 ID:aexN4+ic0.net] >>122 >>142 そもそもwordを使わない あととりあえず動くコードを書いてくれ Selection..ShapeR ピリオドがニコあって邪魔 で、差し込んだ画像の文字列の折り返しってのが何がしたいのか良く分からん テキストボックスなら分かるしそれで通るけど
149 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 21:23:25.50 ID:eK6D85VJ0.net] >>143 画像のレイアウトで背面にしたいんですよ。 なんかしらんけど動いて、なぜか前面で貼りつけられました。 なんかEXCELと勝手が違いますぬ・・・。
150 名前:デフォルトの名無しさん [2017/11/19(日) 21:27:01.10 ID:aexN4+ic0.net] >>144 エクセルと勝手が違うんじゃなくて、ただただ猛烈に使いにくいだけ で、上手く行ったので質問は終了ってこと?
151 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 21:31:31.01 ID:eK6D85VJ0.net] >>145 とりあえずは。 また多分色々とお伺いすることになると思いますが、 なにとぞよろしくお願いいたします。
152 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 22:32:44.41 ID:Z3cAV0my0.net] wordはスレ違いだけどな あんまりvbaと親和性もないし あくまで文書ツールだからな
153 名前:デフォルトの名無しさん [2017/11/19(日) 22:50:31.56 ID:1/mWyqVE0.net] おいおいExcelかてただの文書ツールやぞw
154 名前:デフォルトの名無しさん [2017/11/19(日) 22:56:21.06 ID:aexN4+ic0.net] >>148 釣りはほどほどに
155 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 23:23:51.19 ID:lBNHVI9l0.net] 文書ツールとしてExcel使う奴はたくさんいるけど w
156 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 08:54:30.90 ID:6BLE5ZLY0.net] >>146 まず君が貼り付けたのは何かを考えよう。 マクロ記録が示すコードを見れば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だったな。 何のオブジェクトを触ってるのかはっきりさせずに組んでるからエラーの意味も分からない。
157 名前:デフォルトの名無しさん [2017/11/20(月) 12:21:51.39 ID:phW/Gatbr.net] >>150 そらそれが本来の使い方やもの なに勘違いしてニヤニヤしとんねんお前 気色悪い奴だな
158 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 13:11:30.03 ID:tncAZsVja.net] >>152 Jカスこんなところでも下らねー釣りしてんじゃねえよ
159 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 15:08:27.78 ID:6BLE5ZLY0.net] WordVBAで使いにくいのは記録出来ても良さそうなものが記録出来ない所。 ただ、これはこっち
160 名前:ェ出来ても良さそうと勝手に思ってるだけでMS的にはまずい何かが有るのかもしれない。 それよりも困るのは Debug.Print Typename(hoge) とやってSelectionが帰ってくる所。 型を知りたいのにSelectionは無いだろう。 [] [ここ壊れてます]
161 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 17:44:20.81 ID:PC8rzjhFa.net] >>154 型名調べる関数もうひとつあったよね あんま使わんから忘れたけど
162 名前:デフォルトの名無しさん [2017/11/20(月) 19:16:12.47 ID:3EUEsxu/0.net] >>154 笑ったw
163 名前:デフォルトの名無しさん [2017/11/20(月) 19:56:44.52 ID:HiJj2X0L0.net] >>154 ? typename(hoge)とやったら Emptyと出てきたぞ。 あなた↓の頭と同じでカラッポ。
164 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 21:46:53.19 ID:dynAF7sP0.net] >>151 ありがとうございます。 じつはそれで解決しました。 マクロで記録したらinlineshapeで、なんやねんこれ?と理解していなかったことが原因でした。
165 名前:デフォルトの名無しさん [2017/11/20(月) 22:35:57.11 ID:bUEYENj70.net] 前スレ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 自分で言うのも何だがこれ超便利。かなりオススメ
166 名前:デフォルトの名無しさん [2017/11/20(月) 23:57:02.00 ID:3EUEsxu/0.net] こういう時はせめてエクセルアップロードできるアップローダーぐらい探してくると良いぞ
167 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 02:44:24.85 ID:eIBN2cFq0.net] >>157 www hogeをなんだと思ってる? そりゃそのまま打てばEmptyが帰ってくるだろう。 hogeで察してくれんかね。 カラッポなのは誰の頭だよ。
168 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 13:03:45.67 ID:OSkNtsZi0.net] 途中経過はどうでもいいから結果を教えろ って人間がどんどん増えてんだな 経営者かよ
169 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 16:28:44.72 ID:7aGtp6cN0.net] 結果はいいから途中経過を教えろ、なんて頭おかしいだろ何言ってんだか
170 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 17:41:32.87 ID:rp//GM45a.net] >>163 普通は結果教えてもらうなら過程も学ぶんだよ まあ、別に学びの場じゃないけどね ただ、腐ってもプログラムだからな 結果だけ知ってもその場しのぎ以上にはならんだろ
171 名前:デフォルトの名無しさん [2017/11/21(火) 18:15:13.21 ID:22dwRLVAd.net] 世の中は論理的にできているのに>>163 が論理的でないのはなぜなのか
172 名前:デフォルトの名無しさん [2017/11/21(火) 19:38:11.84 ID:49Yzjg710.net] >>165 単に逆裏待遇を理解していないだけかと
173 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 21:45:55.72 ID:vcSymdG+d.net] vbaを勉強中の者です。 市販で売られている本など調べても載っていないのですが、for文で使われる変数名が「i」ですが、なぜ「i」なのですか? 「i」の意味を教えて頂けませんか? 既出でしたらすみません
174 名前:デフォルトの名無しさん [2017/11/21(火) 21:52:07.73 ID:x41b941k0.net] >>167 iterationのiって事でいいじゃん
175 名前:デフォルトの名無しさん [2017/11/21(火) 21:58:13.94 ID:49Yzjg710.net] >>167 >168の通りだけど、もう完全に形骸化している 「i」でもいいし「ページ番号」など日本語表記でもいい ちなみに俺は「k」から「m」「l」「n」と続ける 単に見間違いにくいように
176 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:07:12.83 ID:L3nv/JJz0.net] 今グーグル先生に聞いたらFORTRANからの名残だってでてきた
177 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:14:29.41 ID:wrH3tJZg0.net] >>170 昔読んだVBだかVBAだかの書籍にはトピックとして掲載してた書籍もあったような記憶が
178 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:17:05.57 ID:vcSymdG+d.net] >>168-170 ありがとうございます! ホント助かりました! 引っ掛かり進まなかったので、これで進みます。 納得できてよかったです ありがとうございます
179 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:17:55.51 ID:vcSymdG+d.net] >>171 さんもレスありがとう!
180 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:18:54.65 ID:2WJixd7Q0.net] integerのiだと思ってたわ
181 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:47:14.99 ID:FV1Lkm8B0.net] >>167 数学でijkは行列などの添え字で使う。 fortranでネストしたループ回すときって、微分方程式を離散化したものを解いたりするパターンが多くて、 二次元や三次元の多次元配列を使ってるだろうから、自然とijkになる。 で、数学のiはintegerからきてる、といったぐあいでは?
182 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 23:38:11.98 ID:vcSymdG+d.net] >>174 、174 数学からなんですか?! プログラムと数学は違うものと思っていました。ありがとう
183 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 06:03:08.32 ID:nhDpu2iz0.net] 今から60年前にアメリカのIBM社で開発されたFORTRAN(フォートラン)というコンピューター言語があって そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり ループカウンターは整数だからFOR文でもIを使ったという歴史がある 一方で昔のBASIC言語ではすべての変数が実数型というのが基本仕様だったので、Iを使う意味はあまりなかったけど、 FORTRANに憧れた世代が書き方を真似してそのまま定着した という年寄りの昔話
184 名前:デフォルトの名無しさん [2017/11/22(水) 14:34:48.52 ID:NEZKz7+Jn] 質問です。 マクロ有効ブックがデスクトップにある時はマクロが動くのに ブックが他のフォルダにあると、マクロが動きません。 原因が判る方いらっしゃいますでしょうか? 因みにコードは以下の通りです。シートコピーの所で躓きます。 Sub フォーム() 'フォームベースを日数分コピー Dim fd As Date, ed As Date '月初月末 Dim x As Integer, i As Integer '日数とシート枚数 Dim ans '入力欄に入力された値 ans = Application.InputBox("YYYY/MM形式で入力") fd = DateValue(ans & "/1") '年/月/1 日となる ed = DateSerial(Year(fd), Month(fd) + 1, 0) x = Day(ed) '月の日数 For i = 1 To (x - 1) '日数分のシートを生成 Sheets(1).Copy After:=Sheets(Sheets.Count) Next i '繰り返し Sheets(1).Range("F1").Value = DateSerial(Year(fd), Month(fd), 1) End Sub
185 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 18:32:45.15 ID:mA48vywq0.net] >>176 数学、論理学とは非常に近しいと思う。 関数型プログラミングてスタイルもあるし、 数学の証明をある程度自動化する言語もある。CoqとかAgdaとか。 VBAにもそろそろ高階関数が欲しいですね、MSさん期待してます。
186 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 18:50:12.14 ID:k1sKIAfY0.net] 愛があるからかと思った
187 名前:デフォルトの名無しさん [2017/11/22(水) 18:53:30.30 ID:/wgdkUUe0.net] ループカウンタにi、j、kを使うようになったのはC言語の影響が一番大きい。
188 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 20:12:17.87 ID:Ce6/du3cM.net] どこまで使う? 自分はnまで。 ループ変数以外で1文字の変数は使わない。
189 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 20:20:06.35 ID:t2AK8w6Da.net] 出来ればkまでにしたいね。 実際は思うようにいかなくて俺もnぐらいまで使ったことある。 でも1文字辞めることもある。
190 名前:デフォルトの名無しさん [2017/11/22(水) 20:57:00.17 ID:fITl6ULj0.net] >>182 あんまり1文字変数は使わない 処理行数や処理列数などを使ってるわ 年取ると覚えるのが大変なんだよ
191 名前:答えはI〜N mailto:sage [2017/11/22(水) 21:18:19.80 ID:W0SJQGiTM.net] >>177 > そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり 嘘書くなよ... X, Y, Z が整数型とかあり得んわ
192 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:46:50.38 ID:T8s4U7Y50.net] 最近デザパタに凝っててイテレーターパターンやってるけどなかなかいいよ まあいかに多重ループしないかは大事だわ
193 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:49:25.89 ID:HR2X/8WF0.net] イテレータと多重ループ回避って関係あったっけ?
194 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:55:38.62 ID:T8s4U7Y50.net] >>187 いやまあ、見た目上ループ変数は減るからw よってるからよくわからんなってるわ すまん
195 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:48:54.39 ID:HR2X/8WF0.net] VBAでイテレータパターンて難しそうだ ループをなくす、って方向の方が良さそうです。
196 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:51:49.31 ID:HR2X/8WF0.net] 方向の方w
197 名前:デフォルトの名無しさん [2017/11/22(水) 23:20:15.38 ID:pTVfJfW70.net] Excel2010です。 文字列を引数に文字列を返すユーザ定義関数を作りました。 アドインにしてチーム内に配布しようと思ってます。 試しに新規ブックで使ってみたところ、開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。 関数の中の処理を全て消しても保存確認メッセージがでます。 文字列を返すだけの関数なので、保存確認メッセージを出ないようにしたいのですが、どうすればよいでしょうか。
198 名前:デフォルトの名無しさん [2017/11/23(木) 00:02:49.97 ID:Kpe6aW6i0.net] >>191 中身を見ないとわからない Function Foo(bar As Long) Foo = bar * 2 End Function と作ってみたけど >開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。 この減少は起きなかったよ 何か別の所に原因があると思う
199 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 06:39:11.72 ID:Y2T7cP8D0.net] >>191 それって要するにvlookupの事?
200 名前:デフォルトの名無しさん [2017/11/23(木) 13:05:29.27 ID:IQVJTYbd0.net] >>192 簡単に書くとこんな感じの関数です。 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を開き何もせず閉じようとすると保存確認メッセージがでます。
201 名前:デフォルトの名無しさん [2017/11/23(木) 13:22:13.30 ID:fJlhhdGs0.net] >>194 再計算されてるから 値は変化しないけどセルの内容は更新されていると予想
202 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 13:42:02.49 ID:UTTVtMan0.net] >>194 アトインって *.xla じゃなかったっけ? *.xlb だとなんかいいことあるの? (ツールバー設定とかを記憶するファイルだと思ってた)
203 名前:デフォルトの名無しさん [2017/11/23(木) 14:06:43.11 ID:1VQF43Qed.net] >>194 xlbってなんだっけ? xlamじゃないの?
204 名前:デフォルトの名無しさん [2017/11/23(木) 14:07:06.07 ID:1VQF43Qed.net] かぶった
205 名前:デフォルトの名無しさん [2017/11/23(木) 14:35:16.43 ID:IQVJTYbd0.net] すいません。拡張子は違ったかもしれません。
206 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 15:49:16.74 ID:AvEDQSYF0.net] >>194 ネットで検索してみると回答は>>195 氏の「再計算」で正解だと思うよ そのユーザー定義関数の中で使ってる関数の中に再計算が発生する関数が含まれているのでは? 簡単な例でいくと新規ブックのセルA1に=TODAY()と入力し確定、そのブックを保存し閉じる そのブックを開くとTODAY関数による再計算が発生するため何もせずに閉じようとしても保存確認出る それと同じことでは
207 名前:デフォルトの名無しさん [2017/11/23(木) 17:02:33.93 ID:IQVJTYbd0.net] >>200 192の通り使っているのはif文とLeft関数だけです。 試しに関数の中の処理を全て消してみたのですが、 状況は変わりませんでした。
208 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:02:38.88 ID:mWIv05A8x.net] >>115 要らない
209 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:22:13.82 ID:k3nQdCAx0.net] >>201 おそらく A1が変わってないときに、=Kubun(A1) という式が必ず同じ値を返すという「保証」ができないので B1セルが変更されている可能性を排除できない ということで変更されている(可能性がある)と判断されてる ユーザ定義関数は中身チェックしないで非決定的だって判断だな シート開くときに再計算するかどうかのオプション設定なかったっけ?最悪手動かな
210 名前:デフォルトの名無しさん [2017/11/23(木) 17:30:51.41 ID:JDomtUrWp.net] >>201 その関数にDebug.print 文を仕込んでおいて 呼ばれたかどうかを確認してみたら?
211 名前:デフォルトの名無しさん [2017/11/23(木) 19:42:47.05 ID:IQVJTYbd0.net] >>203 保存確認メッセージを防ぐ方法はないですかね? >>204 関数は呼ばれていますが、それだと何か方法ありますか?
212 名前:デフォルトの名無しさん [2017/11/23(木) 20:00:32.08 ID:fJlhhdGs0.net] >>205 関数が呼ばれると言うことは変更されると言うことだから 保存確認ダイアログが出るのが普通 savedプロパティを変更する方法とか calculationプロパティをマニュアルにする方法とか 方法はあるかもしれないけど 他の問題が起きるようになるかもしれない
213 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 23:21:24.29 ID:SB9DcOfL0.net] Application.DisplayAlerts = False のこと?
214 名前:デフォルトの名無しさん [2017/11/24(金) 11:41:27.83 ID:h1FhSyIp0.net] 質問です。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行)がイミディエイトに表示されます。 絞り込まれた結果のみを表示するためにはどうしたら良いのでしょうか?
215 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 11:52:22.18 ID:BOT2k7iW0.net] >>208 Set rgFilter = ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
216 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 12:05:42.58 ID:h1FhSyIp0.net] >>209 素早いご回答ありがとうございます。 修正してみましたが、今度は絞込みあり/なし何れも1行だけになりました 何だか難しい操作ですねえ…
217 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 12:12:04.66 ID:h1FhSyIp0.net] Dim MaxRow As Long MaxRow = ws.Range("A" & Rows.Count).End(xlUp).row これを追加して、 Set rgFilter = ws.Range("A1:A" & MaxRow).CurrentRegion.SpecialCells(xlCellTypeVisible) にしてみても、結果は>>208 と同じになりました。 んー謎です
218 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 13:34:47.29 ID:bxAooAvMa.net] >>205 あるにはあるけどクソめんどくさいぞ すべてのセルの初期値保持しといて、閉じるときに確認して値に変更なければsavedをtrueにしてから閉じる、とかね
219 名前:デフォルトの名無しさん [2017/11/24(金) 16:52:13.42 ID:x6NJ51zce.net] Sheets("Sheet1").Columns(2).Insert Shift:=xlToLeft Sheets("Sheet1").Columns(2).Insert Shift:=xlToRight この二行の動作の差が分からないので 違いを教えてください
220 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:34:32.78 ID:HKDmIDHRH.net] >>213 現在のcolumns(2)の中身が左にずれるか、そのままか、かな? 当てずっぽうだけど。
221 名前:デフォルトの名無しさん [2017/11/24(金) 19:18:42.44 ID:V+PY16OM0.net] >>206 >>212 アドインをあきらめます。 ありがとうございました。
222 名前:デフォルトの名無しさん [2017/11/25(土) 12:49:09.41 ID:roqaXNhOa.net] エクセル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
223 名前:デフォルトの名無しさん [2017/11/25(土) 13:36:20.17 ID:fp6T8Ewd0.net] 〉〉214 ネストの使い方間違ってると思うのですがどう直せばいいのかわかりません。
224 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 13:39:02.15 ID:Sg1k8TV00.net] >>216 itigi じゃなくて itiji にしろ シート名「にて」はやめてシート名「で」にしろ i = i + 1 と j = j + 1 は不要なので消せ
225 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 13:55:20.06 ID:QhU2UVSF0.net] >>216 単純にシートで開始行がずれているだけなら For i = 2 to 3 itigi.Cells(i, 1).Value = syougai.Cells(i +9, hiduke).Value 以下略 Next でいいんじゃないでしょうか ループはネストすると 内側のループだけ全部回して外に抜ける、を外のループの回数 だから、ネストでは意図した動作にならないでしょう >>218 も言っているけど、Nextで変数に勝手に+1されるから足さなくていい
226 名前:デフォルトの名無しさん [2017/11/25(土) 14:08:02.51 ID:fp6T8Ewd0.net] ありがとうございました。 できました。
227 名前:デフォルトの名無しさん [2017/11/25(土) 15:25:06.65 ID:P/RTUJJid.net] てか hiduke なんて変数名使うくらいなら「日付」のほうが10倍まし
228 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:03:29.39 ID:dlgn0p0Vx.net] そもそもVBAでやることなのかな 転記先の一時データのシートのセルに障害記録シートのセルを参照する式を書くだけで良くない?
229 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:17:31.37 ID:4suMRhlB0.net] 変数名ぐらい自由にしてやれw
230 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:23:34.66 ID:Yv0FOuti0.net] >>216 値を取得しながら転記しようとするから混乱する コレクションなり配列なりに一回格納してから転記するようにすればネスト要らん
231 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:30:52.78 ID:Yv0FOuti0.net] >>223 変数名は大事でしょ こいつの変数の付け方は最悪に近いわ 代入の式見なかったらなんのことだかわからねー
232 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:32:47.09 ID:+Jz8ZPqE0.net] 本人できたって言ってるのにグダグダ言う奴ウザイわ
233 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:35:56.02 ID:ISZ6M3sb0.net] hidukeと日付のどちらか選べと言われたら、hidikeを選ぶ。
234 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:37:28.74 ID:S5e4mFeJd.net] 仕事内容を記録するエクセルを作成したく、 シート名は各個人名でフォームを開くボタン設置。 登録用に必要項目をフォームで作り、転記するサンプルマクロを書いたんですが、今後必要項目が増えたり、減ったりしたときに人数分フォームを弄ったりマクロ書き換えるのは面倒ななんですけど、一個をものを共有し使用するにはどうしたらいいですか? 各個人のエクセルを開き、作ったボタンで共通のエクセルを開きフォームを開いて転記させるとか? 共通のエクセルを読み取り専用で開き書き込む時に自分のエクセルを開いて転記させるとか? なんかうまいやり方ないですか?
235 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:42:32.82 ID:Sg1k8TV00.net] >>227 何が言いたいんだW
236 名前:デフォルトの名無しさん [2017/11/25(土) 17:52:49.62 ID:M1jU9gED0.net] >>228 シート毎つまり人毎にボタンを作るなら そのボタンをクリックした時にその人独自の値をグローバル変数とかに代入して フォームは共通のものを呼び出す フォームに入力されたものを書き込む時は さっきのグローバル変数を見て 書き込み先のシートとかを特定する
237 名前:デフォルトの名無しさん [2017/11/25(土) 17:53:40.22 ID:M1jU9gED0.net] >>230 同時に複数の人がそのエクセルファイルを使わない事が前提だけど
238 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:31:33.42 ID:S5e4mFeJd.net] >>231 同時に開くことがあるんですよ。
239 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:33:58.83 ID:MqKvnHus0.net] >>228 一つのエクセルファイルを複数人で同時に使うのはいろいろ大変だと思う。 共有共通にせず個人毎に違うファイルを使ってもらって、 仕事内容記録フォルダに入ってるファイル全てをまとめて集計するマクロを作った方がよさそ。
240 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:34:51.02 ID:Sg1k8TV00.net] >>232 データはなんでもいいからDBに書き込んでエクセルはインプット画面として割り切りなさい マジで
241 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 18:38:42.16 ID:Yv0FOuti0.net] エクセルの共有はマジで地雷 運用を見直した方がいい
242 名前:デフォルトの名無しさん [2017/11/25(土) 19:34:05.10 ID:PrfYax++p.net] >>232 入力するのが一人で他の人が見るだけなら問題ない 複数人が同時に書き込むならエクセルじゃなくて ウェブアプリとかにした方が良いと思う
243 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 19:37:11.17 ID:T5+qbkCf0.net] mdbを複数ユーザーで同時に掴めるなら、SQLでデータを投げれば動作するんじゃないの。 入力フォーム作りがクソ面倒くさいからエクセルでやるのは愚策中の愚策なのは確かだけど。