Excel VBA 質問スレ Part41©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2016/04/27(水) 04:11:46.79ID:Nk+oP5xRコード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part40
http://echo.2ch.net/test/read.cgi/tech/1455817784/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 122
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
0283デフォルトの名無しさん
2016/05/20(金) 22:14:31.20ID:d/ZNR8o9すいません、さっぱりわかりません。
? 100
100
? "a" & 100
a100
?"a"&100
a 64
?"a100"
a100
?"b"&100
b 64
?"x"&100
x 64
010が2byteで64かなーというのは想像できますが、
何故こうなるのでしょうか
0284デフォルトの名無しさん
2016/05/20(金) 22:20:25.08ID:Pie8/Dil?"a"&1 を
?"a" & 1 のように
&の前後に空白を入れてやれば"a1"と出力される
試しにコード上で
Debug.Print "a"&1 と&の前後に空白なしで記述すると
Debug.Print "a"; &O1 に自動変換されるので
おそらく文字型と数値型の2つの型のデータが出力されている
数値型データの場合、先頭に空白が入る模様
0285デフォルトの名無しさん
2016/05/20(金) 22:33:41.48ID:d/ZNR8o9なるほど
&N01
&P01
ではだめで
&O01
でいいのは何ででしょう?
0286デフォルトの名無しさん
2016/05/20(金) 22:39:11.93ID:Pie8/Dil先頭 &H の数値は16進数
0287デフォルトの名無しさん
2016/05/20(金) 22:39:59.19ID:RMEVZVQK&O は8進数
0288デフォルトの名無しさん
2016/05/20(金) 22:50:42.69ID:d/ZNR8o9ありがとうございます!
こういうのは数値リテラルというのでしょうか?
0289デフォルトの名無しさん
2016/05/20(金) 23:18:49.15ID:V/0gJxiWa-64
0290デフォルトの名無しさん
2016/05/21(土) 01:56:41.84ID:DHWj1BOs>数値型データの場合、先頭に空白が入る模様
先頭は符号。正の符号が空白で表されてる
0291デフォルトの名無しさん
2016/05/21(土) 18:06:47.94ID:8UwytgDTMin,max関数で最小、最大値を求める作業を複数のcsvファイルで行いたい場合どのようにすべきでしょうか?
具体的には=max(a2:a56)という動作をを1000個のcsvファイルに対してまとめて行い、各csvファイルの最大値を1つのファイルにまとめる動作を行いたいです。
1000個csvファイルのデータの位置(a2:a56)は同じです。
このような動作を行うマクロは組むことができるのでしょうか?
Vba始めてばかりなので間違いなどあればすみません。
0292デフォルトの名無しさん
2016/05/21(土) 18:31:55.59ID:3PJd0Iymマクロの記録をしてそれを繰り返せば良い
0293デフォルトの名無しさん
2016/05/21(土) 19:00:55.32ID:2DvXotsFまたIDが変わってしまったのですが質問者です。
申し訳ありません。そのセル範囲を含む情報が含まれるということは、
どういうことなのでしょうか?
例えば、1列目を指定してFindで検索し、
検索した結果見つかったセルの値をaに入れたとします。
1列目に検索したいものが複数あり再検索したい場合、
再度、Findを記述するかFindNextでAfterにaを指定すると思いますが、
そのaのセル範囲を含む情報というのは、何を示しているのでしょうか?
0294デフォルトの名無しさん
2016/05/21(土) 21:23:45.26ID:a3pocFu9Dim a As Range
Set a = Range("A1:A10").Find("検索文字列")
↑で、A1のセルがヒットしたとする場合
↓下記と同義のRangeオブジェクトが変数aに設定される
Set a = Range("A1")
Range プロパティ (Excel)
https://msdn.microsoft.com/ja-jp/library/office/dn301006.aspx
で、Rangeオブジェクトにはセルに関するいろんなプロパティを保持している
a.Value '<-セルの値(既定プロパティ)
a.Address '<-セルの参照範囲
a.Row '<-セルの行番号
a.Column '<-セルの列番号
…
Findメソッドがどのプロパティを参照しているかは知らないが
Afterに指定されたセル(※Rangeオブジェクト)の行番号、列番号
もしくはアドレスから次の検索セルを判断していると思われる
0295デフォルトの名無しさん
2016/05/21(土) 21:53:40.84ID:2DvXotsFF8やF5で実行を止めながら確認しても、aには値しか見えないですが、
実はRangeオブジェクトが入っているという事なのですね。
それはExcelの仕様という事なのでしょうか?
0296デフォルトの名無しさん
2016/05/21(土) 22:46:05.51ID:a3pocFu9変数の詳細な内容が見たいなら
ローカルウィンドウ なり ウォッチウィンドウ で確認するといい
Excel VBA 入門講座 ローカルウィンドウ
http://excelvba.pc-users.net/fol8/8_2.html
Excel VBA 入門講座 ウォッチウィンドウ
http://excelvba.pc-users.net/fol8/8_3.html
0297デフォルトの名無しさん
2016/05/21(土) 22:47:52.19ID:DHWj1BOsそれデフォルトプロパティが見えてるだけ
ちゃんとウォッチ式追加してウォッチウィンドウで見てみろ
0298デフォルトの名無しさん
2016/05/21(土) 23:20:54.65ID:2DvXotsF>>297
了解しました。ありがとうございます。
今確認してみてるのですが、
列指定してFindし、その結果を元に再検索に再度FindのAfterで
最初の検索結果を指定しその次から検索していますが、
空白が指定された場合、ちゃんと表の範囲内を検索し、
先頭に戻ってくれているのは確認できました。
結果としては非常にありがたいのですが、何故そうなるのかがわかりません。
列は指定しましたが、表の範囲は指定していないのに・・・
0299デフォルトの名無しさん
2016/05/22(日) 01:20:39.82ID:RVVHScN00300デフォルトの名無しさん
2016/05/22(日) 01:38:56.00ID:vMk8bbvq0302デフォルトの名無しさん
2016/05/22(日) 09:40:44.20ID:vMk8bbvq質問すればよろし
回答するスレではないんで、
回答するのは気分次第だけどな
0303デフォルトの名無しさん
2016/05/22(日) 10:36:35.32ID:F3XVlBdeApplication.Dialogs(xlDialogSendMail).〜
でアクティブブックをそのまま.xlsmとして添付メールすることはできるのですが、送り先にxlsに変換して送りたいです
FileFormat的な処理をしてワンクッション無しでそういった事を、するのは可能でしょうか?
宜しくお願いします
0304デフォルトの名無しさん
2016/05/22(日) 11:40:55.24ID:viRK9kIz>xlsに変換して
>アクティブブックを〜ことはできる
>ワンクッション無しで
ワンクッションとは?
0305デフォルトの名無しさん
2016/05/22(日) 12:37:39.34ID:F3XVlBdeコマンドボタンワンクリックで済ませたいので、一つのイベントプロシージャに収めたいという事です
もし別の処理をしないと不可能だという事でしたら、もう一つボタンを追加したりして対応したいと思いますが、何かいい方法がありましたらご教授お願いします
0306デフォルトの名無しさん
2016/05/22(日) 12:55:07.15ID:MkPG05kK素人だけど書いてみた Excel2003/Vistaで動作確認
http://codepad.org/h9iBcEZo
1列目のある範囲の最大値だけなんでCSVをワークシートへは取り込んでない
動作おかしかったらリスト読んで適当に直して
0307デフォルトの名無しさん
2016/05/22(日) 14:00:36.34ID:uwOrwjCqSaveAsで一旦.xls(xlExcel8形式あたり)で保存してから送信すれば行けるんじゃね
0308デフォルトの名無しさん
2016/05/23(月) 19:14:37.25ID:+L6Gybj90309デフォルトの名無しさん
2016/05/23(月) 20:04:34.59ID:fFz6fB8+あんた・・・それは
やめた方が
いいな!
0310デフォルトの名無しさん
2016/05/23(月) 23:02:51.54ID:EBQbKa6e自己解決したのですが
ちなみに止めた方がいい理由って何ですか?
気になります
0311デフォルトの名無しさん
2016/05/23(月) 23:05:46.46ID:OgrQhKAM0312デフォルトの名無しさん
2016/05/23(月) 23:40:18.70ID:fFz6fB8+もう考えない方がいい
どうしてもだ!
スレの住人として
忠告する!
じゃあ俺は
これで・・・またな
0313デフォルトの名無しさん
2016/05/23(月) 23:44:12.90ID:zjNqCcoU結論からいうとできました
Implements は複数設定できるので
後はそれぞれのインターフェースを
実装すれば良いだけでした
0314デフォルトの名無しさん
2016/05/25(水) 19:58:38.92ID:vZFTiHPJ亀レスすみません。
マクロの記憶だと作業中のファイルのみしかマクロが機能しないのでは無いでしょうか?
また、1000個のファイルに対して一つ一つマクロ実行するのは大変なので、1000個のcsvファイルの最大値を一つのファイルにまとめる作業を、一度に出来る方法は無いのでしょうか?
0315デフォルトの名無しさん
2016/05/25(水) 20:22:35.58ID:tfoRBKUB対象が同じフォルダに入っているファイル全部とかだったら別にどうってことなくね?
0316デフォルトの名無しさん
2016/05/25(水) 20:48:22.69ID:RqoGasre0317デフォルトの名無しさん
2016/05/25(水) 21:45:43.06ID:1qBlGVzrレスありがとうございます。
315さんの言う通り、対象は同じフォルダに入ってるファイルすべてです。
どうってこと無いというのは、やり方が簡単という事でしょうか?
宜しければ、マクロの記憶を繰り返す以外にもう少し具体的に教えていただければ幸いです。簡単な例文や使用すればいい関数など...
最近vbaを始めたばかりで、まだrangeやif文を習った程度の知識でして...
あと、拡張子にcsvが付いてたのでcsvファイルと言ってたのですが、対象となるのは普通のエクセルのファイルです。
>>316
ありがとうございます。
検討してみます。
0318デフォルトの名無しさん
2016/05/25(水) 22:41:50.45ID:enDBv6qD拡張子がcsvのファイルをテキストエディタで開いてみたら?
excel vba for
をググって繰り返しのやり方を調べる
試しに3個のファイルを対象にして作ってみる
0319デフォルトの名無しさん
2016/05/25(水) 23:17:20.71ID:CznCF+TX1度にやる方法は無いかと言われれば
無いこともないけど、本当にその方法が有効かはまた別問題。
例えばADO接続でCSVファイルからSQLで値を取得するときは
フォルダがDB、その中にある各CSVファイルがテーブル扱いになるので、
そのフォルダ内の対象になるCSVファイル名を先に全て取得しておいて
SQLでUNIONで繋げておけばできるけど、
本当にそれが速くて簡単かは相当疑問が残るよね。
0320デフォルトの名無しさん
2016/05/25(水) 23:21:01.56ID:Uf48Qhpgとりあえず、1つのファイルに対する処理を完成させる
後はループ処理で更新するファイルを変えつつ↑の処理を繰り返す
ところでループ処理は判ってんの?
do until とか
0321デフォルトの名無しさん
2016/05/25(水) 23:39:18.00ID:tfoRBKUBもしかしてこれがネック?
0322317
2016/05/25(水) 23:42:26.41ID:1qBlGVzrご回答いただいた方法で試してみます。
0323デフォルトの名無しさん
2016/05/26(木) 00:10:51.15ID:tOkM+sU0306に書いたんだけど動かなかったの?
ファイル名の取得は306のプロシージャでできるはず
csvじゃなくてxlsを読むならfunctionのところを自分なりに書き換えろ
0324デフォルトの名無しさん
2016/05/26(木) 03:19:58.19ID:tOkM+sU0xls読込みの追加と306でのcsv読込関数の訂正をあげとく
http://codepad.org/syUhdaGh
ExecuteExcel4Macro って命令使うともっと早くなるらしいけど
俺にはうまく使えなかった
CSVの方が早いので用意できるならCSVファイルで処理した方がいいと思う
他の人も言ってる様にスクリプトなんかも使いやすいし
0325デフォルトの名無しさん
2016/05/26(木) 07:35:57.45ID:yzIVgV2w>ExecuteExcel4Macro って命令使うともっと早くなるらしいけど
Microsoftからとっくにサポート打ち切られているようなの持ち出すのやめれ
0326デフォルトの名無しさん
2016/05/26(木) 08:48:16.33ID:EV8ndBzbってあったようだけど、今は無くなってる?
0327デフォルトの名無しさん
2016/05/26(木) 10:01:25.13ID:tOkM+sU0>Microsoftからとっくにサポート打ち切られているようなの
ここなんかは Office 2013 and later って書いてるけど今は打ち切られたのか?
https://msdn.microsoft.com/ja-jp/library/office/ff193589.aspx
0328デフォルトの名無しさん
2016/05/26(木) 14:46:41.03ID:TLCYm3V6参考書に、離れた行や列を非表示にするにはRangeプロパティのあとにEntireを使いましょうとあります。
RangeプロパティのあとにいきなりRows.Hidden=Trueとしても意図していた作業ができるのですが、Entireはなぜ必要なのでしょうか。
0329デフォルトの名無しさん
2016/05/26(木) 15:31:24.30ID:UrTJJdUS>>327書いたんだけど ExecuteExcel4Macro って互換性維持の為だけにあるみたいなんだね
後々使えなくなるって意味で言ってたって事がようやく理解できた
変な事書いてすまんかった
0330デフォルトの名無しさん
2016/05/26(木) 15:44:42.47ID:Dvh4dhBn安全のためだからできるんならいらないんじゃね
0331デフォルトの名無しさん
2016/05/26(木) 20:16:50.15ID:lgiuDAuhRowsは連続した行しか指定できないけど、EntireRowsは離れた行を指定できるからじゃね。
0332デフォルトの名無しさん
2016/05/27(金) 01:04:42.25ID:gB8QuuHHHiddenに関しては特に問題ないだろうけど、
部分的なセル範囲を含む“行全体”を厳密に扱いたいなら
EntireRowの方が安全かな
Debug.Print Range("A1:A3").EntireRow.Address
→ $1:$3
Debug.Print Range("A1:A3").Rows.Address
→ $A$1:$A$3
Debug.Print Rows("1:3").Address
→ $1:$3
0333デフォルトの名無しさん
2016/05/27(金) 23:11:50.47ID:4UuWR9R4遅くなりましたが、皆さんありがとうございます!
なにぶん初心者なもので、下手にオリジナリティを出さずに慣れるまでは公式に則ってきちんと学ばなければと思いました
またお世話になるかもしれませんが、そのときは何卒よろしくお願いします
0334デフォルトの名無しさん
2016/05/28(土) 00:22:34.85ID:MsTgKpLn0335334
2016/05/28(土) 00:24:50.50ID:MsTgKpLn0336デフォルトの名無しさん
2016/05/28(土) 01:38:03.64ID:GZWeia2p試しにデータを以下のように確認してみると、
時刻じゃない日付値が返ってくるのが原因かも
Debug.Print TimeSerial(23, 59, 59.99)
→ 1899/12/31
TimeValue関数で時刻部分だけ取り出すようにしてみては?
Application.OnTime TimeValue(TimeSerial(Hour(Now()), Minute(Now()), 59.99)), "a"
0337デフォルトの名無しさん
2016/05/28(土) 03:56:22.62ID:z46njfbnまずTimeSerialの秒に59以上を渡したときの動作は未定義だな
これは繰り上がった00秒を返してるっぽいので、23:59:59.99は繰り上がって翌日の日付のある時刻を返してる
Application.OnTimeは、指定された時刻が日付持ってるかどうかで動作を変えてる
日付を持ってないときは当日の指定時刻、日付を持ってるときは指定日付の指定時刻に処理実行
23時59分のときだけ、日付付きの時刻を渡してるが、その日付は過去の日付なので
処理が即実行されてる
まあ多分こういう事じゃないかと
0338デフォルトの名無しさん
2016/05/28(土) 08:26:40.26ID:CHU6gzT20339デフォルトの名無しさん
2016/05/28(土) 10:45:40.89ID:+66MKZ0qあんまり新しい情報はなさそうだからAriawaseのコードでも読めばどうだろう
0340デフォルトの名無しさん
2016/05/28(土) 15:04:42.16ID:gKP/LNYFコントロール+F11 を間違えて押と変なタブが作られますがこれは一体何ですか?!!!
0341デフォルトの名無しさん
2016/05/28(土) 15:15:08.16ID:g8NfG/nKマクロ4.0
vba以前についていたマクロ機能。化石なので使う事はまず無い
ただevaluateだけは何度かこのスレの質問で見たな。使ったことはないけどな
http://officetanaka.net/excel/function/tips/tips57.htm
0342デフォルトの名無しさん
2016/05/28(土) 16:10:52.16ID:gKP/LNYFありがとうございます。
0343334
2016/05/28(土) 20:18:24.66ID:MsTgKpLn修正頑張ります!
0344デフォルトの名無しさん
2016/05/29(日) 09:38:21.80ID:AwN+e4jtユーザーフォームのコマンドボタンを押す→マクロ実行→Application.Visible = True で
ユーザーフォームを非アクティブにして、わざわざシートを一度クリックしなくてもすぐにシートのセルに入力出来るようにしてました
もう2013で再現する事は不可能なのでしょうか?
または違う方法で再現できないでしょうか?
よろしくお願いします
0345デフォルトの名無しさん
2016/05/29(日) 13:46:01.40ID:9s1DeJLcシートAのA列にJANコード、B列に商品名が並んでいます。
JANと商品名はA1とB1、A2とB2…と対応しており、データの個数は都度変わります。
欲しいのは以下のVBAプログラムです。
1.シートBのA1のセルにシートAのA1のJANコードを入力し、シートの見出しを「当日の日付+商品名B1」にする。
2.以下、JANコードの数だけシートBをコピーして同じ作業を繰り返す。
です。
その際、
1.シートAとBは同じファイル内にあります。
2.シートBにはA1を検索値としたvlookup関数が入っている。
3.見出しに記載される商品名はJANと対応する商品名。
4.日付は、出来れば「2016年05月29日」なら「160529」と表記させたい。
無理ならどのような表記でも大丈夫ですが、なるべく短く表記したい。
上のファイル自体を今から作るので、シートA、Bの名前は実際には変わります。
またシートBのJANを入力するセルも実際にはA1ではありません。
なので後から変えられるように、プログラムのどこがシートABの名前の部分でどこがシートBのA1を表しているのかも教えてもらえるとありがたいです。
分かる方いらっしゃいましたらよろしくお願いいたします。
0346デフォルトの名無しさん
2016/05/29(日) 13:52:33.92ID:m6zFG5bY報酬は?
0347デフォルトの名無しさん
2016/05/29(日) 17:38:02.13ID:OB5e45ZSamazonのせどり関係?
ここまで、やりたい事が具体的に分かれば、この通りすれば出来るんじゃない?
この程度でつまずくなら、厳しいと思うが
データ個数が変わる場合も含めてロジックを組むなら、VLOOKUPは使わない方が良いのでは?
配列なども勉強した方が良いよ
0348デフォルトの名無しさん
2016/05/29(日) 17:55:57.68ID:8akYxdWk1万でどう?
0349デフォルトの名無しさん
2016/05/29(日) 19:22:22.37ID:GTS7K4/Tお前の半日〜1日分の給料に該当するだろ
ざっと作って30分〜1時間くらいのものに
どれだけ手入れるつもりだよ
0350デフォルトの名無しさん
2016/05/29(日) 19:37:22.60ID:DU/FdEem延長、指名、同伴オプションも相談のります
0351デフォルトの名無しさん
2016/05/29(日) 19:51:23.53ID:IL/FFzdQ0352デフォルトの名無しさん
2016/05/29(日) 19:56:44.56ID:iENwe/Jr0353デフォルトの名無しさん
2016/05/29(日) 20:02:58.52ID:l+XEODYT0354デフォルトの名無しさん
2016/05/29(日) 20:52:32.53ID:qZvodTNYそんな発想が出るってどんな安い単価の世界で生きてるんだ…
0355デフォルトの名無しさん
2016/05/29(日) 20:53:43.81ID:GCJVxvYj0356デフォルトの名無しさん
2016/05/29(日) 21:02:37.79ID:O2TO5DJ70357デフォルトの名無しさん
2016/05/29(日) 21:29:17.79ID:PpnqKVZyバカ発見
0358デフォルトの名無しさん
2016/05/29(日) 21:31:54.50ID:IxwT55oU学生は気楽でいいな
0359デフォルトの名無しさん
2016/05/29(日) 22:31:24.29ID:iENwe/Jr0360デフォルトの名無しさん
2016/05/29(日) 23:03:21.50ID:9s1DeJLcレスいただいた方ありがとうございました。
丸投げで申し訳ないと思ったので自分なりに今プログラムを作っています。
>>347
Amazonではないです。
JANに紐付いた商品情報をvlookupで読み込むフォームがあるのですが、毎回シートをコピーしてJANを貼り付けて見出しを変えるという手間が大変なのでVBAを組みたいと思いました。
今VBAを勉強しているところです。
>>355
ありがとうございます。
いただいたプログラム、まだ自分には難しいのですがwithやdate関数の使い方など勉強になります。
とりあえず今のところ、シートをコピーしてJANを貼り付け、見出しを「日付+商品名」にするところまで出来ました。
あとはJANの数だけ上の作業を繰り返すプログラムが出来れば完成です。
自分でやってみて分からなければまた質問します。
ありがとうございました。
0361デフォルトの名無しさん
2016/05/30(月) 00:11:04.77ID:MwQPmEOY連投すみません。奇跡的に出来ました。
ちなみに下のようなプログラムです。
Sub 商品別作成 ()
dim i as integer
i = 2
do until worksheets("リスト").cells(i.1).value = ""
worksheets("原紙").copy after:= worksheets(worksheets.count)
with worksheets(worksheets.count)
.cells(1,2).value = worksheets("リスト").cells(i,1)
.name = year(date) & month(date) & day(date) & worksheets(worksheets.count).cells(1,4)
end with
i = i + 1
loop
end Sub
です。
携帯からの書き込みのため見にくくて申し訳ありません。
手元にあった参考書と>>355さんのプログラムを参考に作りました。
自分で作っておきながらよく理解できていないところもあります。
たとえば、
worksheets(worksheets.count)
がなぜワークシートの末尾という意味になるのか、とか。
長文すみません。ありがとうございました。
0362デフォルトの名無しさん
2016/05/30(月) 00:21:17.07ID:MGJW0QKJ0363デフォルトの名無しさん
2016/05/30(月) 00:29:54.80ID:4yKaoPuEworksheets.countプロパティにはワークブックの持ってるワークシートの枚数がセットされてて、ワークシートの追加や削除で値が増減する
メインでworksheets(1)って使ってるでしょ? これは1枚目のワークシートの事
ワークシートが5枚あればworksheets.countの値は5になるのでworksheets(5)って指定するのと同じこと
検索すると詳しい解説がいっぱい見つかるから読んでみるといい
0364デフォルトの名無しさん
2016/05/30(月) 00:33:15.23ID:TRF4/Pejworksheets(番号を表す数値)
ワークシートが3つある場合は、0から2までで表される
番号を表す数値に3を指定すると4番目の新しいワークシートになる
worksheets.countはワークシートの数を表す
つまりワークシートが3つあれば、3となる
よってワークシートが3つあれば、worksheets(worksheets.count)は
worksheets(3)となり0から始まる4番目のワークシートとなるから
ワークシートの末尾と同じことになる
0365デフォルトの名無しさん
2016/05/30(月) 01:25:38.78ID:4HMhVwgA2シートある表の比較で、
2行目から比較なので
For i = 2 To Lastrow1 ※1シート目の最終行まで
For j = 2 To Lastrow2 ※2シート目の最終行まで
If Sheet1.Cells(i,2) = Sheet2.Cells(j,2) Then ※2列目に番号があり合ってれば
For i2 = 1 To LastColumn1 ※1シートの最終列まで
If Sheet1.Cells(i,i2) <> Sheet2.Sheet2.Cells(j,i2) Then
Sheet1.Cells(i,i2).Interior.ColorIndex = 3
End If
If Sheet1.Cells(i,i2).Interior.ColorIndex <> xlNone Then
Sheet1.Rows(i).EntireRow.Copy Destination:=Sheet3.Rows(i)
End If
Next i2
End If
Next j
Next i
1シートと2シートを比べ、1シートの差異のセルに色を塗り、
3シート目に行ごとコピーしているのですが、
1シートにしかない行、2シートにしかない行もあり、
それも3シートにコピーしたいのですが、どのようにしたらよいでしょうか?
0366デフォルトの名無しさん
2016/05/30(月) 03:35:34.52ID:lz7aZWOJこんな感じかな?
For r1 = 2 To Lastrow1 ' ※1シート目の最終行まで
flag = True
For r2 = 2 To Lastrow2 ' ※2シート目の最終行まで
If Sheet1.Cells(r1, 2) = Sheet2.Cells(r2, 2) Then ' ※2列目に番号があり合ってれば
flag = False ' ※この行はコピーしない
End If
Next r2
If flag Then ' ※この行は1シートにしかないので
Sheet1.Rows(r1).EntireRow.Copy Destination:=Sheet3.Rows(r1) ' ※3シートにコピー
End If
Next r1
For r2 = 2 To Lastrow2 ' ※2シート目の最終行まで
flag = True
For r1 = 2 To Lastrow1 ' ※1シート目の最終行まで
If Sheet1.Cells(r1, 2) = Sheet2.Cells(r2, 2) Then ' ※2列目に番号があり合ってれば
flag = False ' ※この行はコピーしない
End If
Next r1
If flag Then ' ※この行は2シートにしかないので
Sheet2.Rows(r2).EntireRow.Copy Destination:=Sheet3.Rows(r2) ' ※3シートにコピー
End If
Next r2
0367デフォルトの名無しさん
2016/05/30(月) 04:47:59.06ID:4HMhVwgAありがとうございます。
したい事はできたのですが、
このflagというのはどういう意味なのでしょうか?
0368デフォルトの名無しさん
2016/05/30(月) 06:28:58.71ID:MwQPmEOY>>364
ありがとうございます。
なるほど。
>>361では本当は「ワークシート1の後にワークシート1をコピーして、コピーしたワークシートに作業する」ということがしたかったんですが、その場合は
Sub 商品別作成 ()
dim i as integer
i = 2
do until worksheets("リスト").cells(i.1).value = ""
worksheets(1).copy after:= worksheets(1)
with worksheets(2)
.cells(1,2).value = worksheets("リスト").cells(i,1)
.name = year(date) & month(date) & day(date) & worksheets(2).cells(1,4)
end with
i = i + 1
loop
end Sub
というプログラムにすれば、ワークシートの名前は関係なしに一枚目をコピーして二枚目に作業する、ということになりますか?
0369デフォルトの名無しさん
2016/05/30(月) 08:09:31.18ID:4yKaoPuEWorksheets(n)で指定する場合のnは左からみたシートの並びになるらしいので
Worksheets(1).copy after:= worksheets(1) を実行したときには
最新のコピーは常に左から2枚目の位置に来る事とコピー元のシート位置は左端(1枚目)から変えちゃいけない事を
意識できればいいんじゃないかな
0370デフォルトの名無しさん
2016/05/30(月) 20:24:27.53ID:dvnyr15v「手取り」っていまいちよく理解できないんだよね。
支給額から税金とか差し引いた額ってことだろうけど、
その差し引きく額には会社の団体保険の医療保険とか持ち株会の月額とか寮費とかは含まれるの?
たまに「手取り○万円しか無いんだよ!」って言う人に詳しく聞くと、
上記のようなものも差し引いて実際に自分の口座に振り込まれる額を言う人がいるんだけど、
それって「手取り」って言って正しいの?
0371デフォルトの名無しさん
2016/05/30(月) 20:49:50.01ID:9zgDAfYa手取りは基本的に保険など差し引いて振り込まれる額、つまり自由に使える金
寮費は微妙だけど、振り込まれる額を指す場合が多いと思う
0372デフォルトの名無しさん
2016/05/30(月) 20:50:32.53ID:iGtTjZst引くのは税金と健康保険と雇用保険と介護保険じゃね
0373デフォルトの名無しさん
2016/05/30(月) 20:57:22.49ID:4q9S9srQ確かに契約社員やってる人には
分かり辛いかもしれないね
0374デフォルトの名無しさん
2016/05/30(月) 21:11:27.51ID:iGtTjZst年金保険もか
0375デフォルトの名無しさん
2016/05/30(月) 22:21:18.67ID:VvWJADwM0376デフォルトの名無しさん
2016/05/30(月) 22:26:40.27ID:iGtTjZst寮費とかはその人が寮を使ってるからだし
自動車保険も給与から引くようにしなくても良いんじゃね
健康保険とか雇用保険とか年金は全員引かれるもの
VBAとは関係ないが
0377デフォルトの名無しさん
2016/05/30(月) 22:28:58.68ID:9zgDAfYa真剣に考えて損したわ
0378デフォルトの名無しさん
2016/05/30(月) 22:37:26.71ID:VvWJADwM給与明細見たら、
組合費、組合積立金、寮の食堂での食費、寮自治会費も給料から引かれてたわ
手取りっていっても会社によって全然ちがうのね
ちな三菱系
0379デフォルトの名無しさん
2016/05/30(月) 22:49:20.47ID:JaLXIj0Gただそう言うのまで入れると何の金額のことかワケわからんようになるから手取りってそう言うのは入れないように思う
0380デフォルトの名無しさん
2016/05/30(月) 22:50:34.41ID:dvnyr15vニュースと >>359 の「手取り」の文章とで、昔の関連会社の人との会話の中でふと思ったことを
連想して思い出したら書かずにはいられなかっただけなんだ。ごめんよ。
0381デフォルトの名無しさん
2016/05/30(月) 22:59:06.74ID:MGJW0QKJもうすぐボーナスじゃないか
0382デフォルトの名無しさん
2016/05/30(月) 23:25:53.51ID:FNI4oSJu一般的には給与から源泉徴収税、住民税特別徴収、健康保険料、年金保険料、雇用保険料を引いた額
■ このスレッドは過去ログ倉庫に格納されています