WindFallerのプロフィール

@WindFaller WindFaller
ありがとう数952
質問数0
回答数1,312
ベストアンサー数
465
ベストアンサー率
57%
お礼率
0%

  • 登録日2012/09/30
  • VBA作業の効率化

    お世話になります。 さて、少し取り留めのない質問なのですが よろしくお願いします。 お陰様ある程度VBAの作業に慣れてきた感じがしています。 それで作業量が多くなってくると 同じような構文などを入力したりコピーしたりすることに疑問を持ち始めました。 例えば、作業の内容で、 for~のループの構文を書くことが多いです。  ワークブックを取得するループ  シートを取得するループ  セルの値を取得するループ  HTMLのタグを探すループ  ...etc などその都度構文を入力していますが、 もっと効率的にできないものかと思っています。 他のサイトの引用ですが 感じていることはこのようなことです。 ・時間がかかる ・大量の「コピー&貼り付け」は人間なのでミスが発生する可能性がある。 ・この仕様が変更になった場合、修正個所が多すぎる。 http://homepage1.nifty.com/rucio/main/shokyu/jugyou30.htm 定番のモジュールをエクスポートしておいて 新しく作る時にインストールするとかもあるのでしょうけど あまり効率的でないなぁと感じています。 そもそもコピペなども 大量になってくるとコピペ元を探すのも大変になってきます。 今後、どのようなことに心がければ、  作業を効率化していけるか?  入力する量を減らしていけるか?  が、さっぱり想像がつかないので質問させていただきました。 なにかヒントでももらえれば幸いです。 よろしくお願いします。

    • ken123
    • 回答数7
  • Excel2013,macroのcopy

    Excel2013でマクロ実行するのですが、最後のstepの「条件付き書式」のcopyが上手く行きません。どなたかご教授お願いします。 A~J列x約4000行(1行~5行まではTytle行)のsheetです。 A列は日付で、過去からの日付となって居ます。 このsheetを見易くする為にA6行に 「条件付き書式」 =mod(month(A6),2)=0 を設定し、下記のmacro式でA6~J4000にCOPYするのですが、結果は上手く行きません。 ※1:偶数月行のA列のみ正確に書式設定されるが、全列(A~J)にならない。 ※2:奇数月のところどころ(列)に書式が設定される。 の不具合が生じます。 考えられる原因は何でしょうか?、ご教授願えませんでしょうか?。 与えたmacro Range("A6").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(MONTH(A6),2)=0" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 11200714 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = True Selection.Copy Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("A6").Select End Sub

  • EXCEL マクロ につきまして

    お世話になっております。 以前、同様の質問をさせていただきまして、 その拡張バージョンをつくりたいと考えております。 Sub macro1() Dim myPath As String Dim myFile As String Dim c As Long Dim LastRowr As Long Application.ScreenUpdating = False myPath = ThisWorkbook.Path & "\" myFile = Dir(myPath & "*.xls") c = 6 Do Until myFile = "" If myFile <> ThisWorkbook.Name Then Workbooks.Open Filename:=myPath & myFile lastrow = Worksheets("特定のシート").Range("A65536").Row ThisWorkbook.Worksheets(2).Cells(1, c).Resize(lastrow, 1).Value = Worksheets("特定のシート").Range("H1").Resize(lastrow, 1).Value Workbooks(myFile).Close False c = c + 1 End If myFile = Dir() Loop Application.ScreenUpdating = True On Error Resume Next ActiveSheet.Name = Format(Date, "mmdd") On Error GoTo 0 End Sub こちらは"特定のシート"の特定の列(H)のみをひたすらフォーマットに 貼り付けていくものですが、コピペしたい列が増えた場合(数は一定ではない) のバージョンができればと思っております。 正直まったくわかりません。 1)データが何列あるかは不定 2)行1~3には自動的に何らかのデータが振られてしまっており(連番等)  データの終わりとして使えそうなのは、行4に「0」が入っていること  (但し0は非表示にしております) "特定のシート"名・データがH列から始まる等は変わりません。 現状の記述を改修、もしくは全とっかえでも構いません。 なにとぞよろしくお願い致します。

  • マクロでプリンタの選択

    EXCEL2010で、プリンタを選択するダイアログを表示するマクロの記述についてですが、 Dim xPrt As String With Application xPrt = .ActivePrinter .Dialogs(xlDialogPrinterSetup).Show End With を実行したら、表示されたダイアログにキャンセルのボタンがあったのでクリックしたところ、OKのボタンと同じように印刷が始まってしまいました。 キャンセルしたらマクロが終了するようにしたいのですが、どのような記述が必要でしょうか? ご指導のほど、よろしくお願い致します。

    • no---bu
    • 回答数2
  • 複数条件の検索と抽出

    複数店舗を運営しており、片方の店舗の在庫csvが以下の様になっています。   A   |  B   |  C   |  D  |  E   |  F   |  G  | 商品型番 | 不使用 | 不使用 | コードA | 不使用 | コードB |  在庫  | 00001|     |     |  カラー|     |ブラック |    5| 00001|     |     |  カラー|     |シルバー |    9| 00008|     |     |  カラー|     |ブラック |    1| 00008|     |     |  カラー|     |シルバー |    0| 00055|     |     |  東芝用|     |     |   15| 00055|     |     |  日立用|     |     |   55| 上記の在庫を別店舗の在庫csvに登録する際に、VLOOKUPを使用して以下の表に抽出したいのですが、   A   |  B   |  C   |  D  |  E   |  F   |  G  | 商品型番 | 不使用 | 不使用 | コードC | 不使用 |  在庫  | 不使用 | 00001|     |     |ブラック |     |    *|     | 00001|     |     |シルバー |     |    *|     | 00008|     |     |ブラック |     |    *|     | 00008|     |     |シルバー |     |    *|     | 00055|     |     |東芝用  |     |    *|     | 00055|     |     |日立用  |     |    *|     | コードCにはコードAとコードBの両方のデータが入っている *の箇所に在庫数を持ってきたい 不使用行は別データが入っているので削除不可 上記の場合にIF関数とVLOOKUP関数を使用して在庫数を入れる事は可能でしょうか。 いくつか調べてみたのですが、上記のような条件の場合の説明が無かった為、 もし可能であればご教授頂ければと思っています。 よろしくお願いします。

    • saisola
    • 回答数3