Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


187 / 3841 ページ ←次へ | 前へ→

【78728】Re:ファルダ内の画像を任意のセルに貼り...
発言  β  - 17/1/10(火) 19:36 -

引用なし
パスワード
   ▼VBA勉強中 さん:

あぁ、 A や B は 数字ではなく 文字列ですね。
でも、提示した疑問は同様ですので説明よろしく。

さらに、

>"画像フォルダ"の写真が重複なくすべて使われるまで行いたいです。

重複なく というところが、何を意味するのかわかりません。
・ツリー全体表示

【78727】Re:ファルダ内の画像を任意のセルに貼り...
発言  β  - 17/1/10(火) 19:30 -

引用なし
パスワード
   ▼VBA勉強中 さん:

>A-Bという名前の画像を探す(画像はひとまとめにして"画像フォルダ"に入れています)

A や B とは セルにある数字で、その2つの数字から A-B を求め、その数字が画像ファイル名ということですか?

もし、そうであれば、

>また、この作業を"画像フォルダ"の写真が重複なくすべて使われるまで行いたいです。

画像フォルダにいくつの画像がいるがあるのかわかりませんが、すべて使われるまでといっても
A-B の計算結果に合致したい数字の画像ファイルは限られていますので、逆にいえば
使われない画像ファイルもあるということではないですか??
・ツリー全体表示

【78726】ファルダ内の画像を任意のセルに貼り付け...
質問  VBA勉強中  - 17/1/10(火) 17:11 -

引用なし
パスワード
   質問です。
以下の手順のマクロを組みたいと考えています。
前提として、ひな形となるブックが存在し、それを開いている状態です。

sheet1のcells(5,4)の値の右3文字(Aとします)、cells(7,4)の値(Bとします)
A-Bという名前の画像を探す(画像はひとまとめにして"画像フォルダ"に入れています)
見つかった画像をsheet1.cells(5,6)に貼り付け、縦横比を保ちセル全体の約90%の大きさに縮尺し、セルの中央に揃える


その後参照するセルを、cells(5,4)をcells(5,15) cells(7,4)をcells(7,15)
貼り付け位置を、cells(5,17)に変更し同様の操作を行う

と言ったことをしたいです。
また、この作業を"画像フォルダ"の写真が重複なくすべて使われるまで行いたいです。

参照セルがこの後やや不規則になるのですが、for next構文で書いていく場合
セルの値に変数iを用いて例えば、cells(2*i+12,15)等、数列の一般項のような書き方をすることは可能でしょうか。
ご教授よろしくお願いします。shapeオブジェクトって言葉もつい先ほど知った程度のものです。柔らかく教えてもらえると幸いです。
・ツリー全体表示

【78725】Re:重複を除いた出勤日数
発言  γ  - 16/12/31(土) 8:26 -

引用なし
パスワード
   (基本方針)に従って質問の記載をしてください。
以下引用。

マルチポストについて
別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、というのはモラルに反します。「解決したからいいや」というのではありません。

また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

====
解決したならその旨、報告いただきたい。
・ツリー全体表示

【78724】重複を除いた出勤日数
質問  ひさし E-MAIL  - 16/12/31(土) 0:51 -

引用なし
パスワード
   excel の下記行データに於いて従業員・月毎の出勤日数をカウントするマクロを教えてください。
この時、日が"99"は除外する。

sumproductとcountifを組み合わせてできますか。

従業員番号、月、日、作業コード


1,12,1,001
1,12,2,002
1,12,99,123
1,12,2,003
1,12,2,001
1,12,15,001
2,12,3,001
この時1の12月の出勤日数3を求めたい
・ツリー全体表示

【78723】Re:新しく取得したブックの名前について
お礼  VBA勉強2日目  - 16/12/28(水) 10:47 -

引用なし
パスワード
   お2人に同時に返信する方法がわからなかったので同時宛先が1人になってしまいすみません。

Sub test()
  Application.ScreenUpdating = False
Dim i
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  Workbooks.Add
  ActiveWorkbook.SaveAs Workbooks("データ追加"). _
  Worksheets("sheet1").Cells(i, "A").Value
  ActiveWorkbook.Close False
Next

End Sub

これで無事、意図した通りに動きました。
ありがとうございます!
・ツリー全体表示

【78722】Re:新しく取得したブックの名前について
お礼  VBA勉強2日目  - 16/12/28(水) 9:43 -

引用なし
パスワード
   おはようございます

まずは1回のみの試行でやってみて繰り返しはその後、ということですね
今後も役に立つ思考をありがとうございます!

うまくできそうです
・ツリー全体表示

【78721】Re:新しく取得したブックの名前について
お礼  VBA勉強2日目  - 16/12/28(水) 9:41 -

引用なし
パスワード
   おはようございます。

重要そうなキーワードをありがとうございます!
そこから調べてやってみます
・ツリー全体表示

【78720】Re:新しく取得したブックの名前について
発言  マナ  - 16/12/27(火) 22:40 -

引用なし
パスワード
   ▼VBA勉強2日目 さん:
まずは、1つのブックを追加して保存するマクロを考えて下さい。
for〜nextを使った繰り返しは、その後です。

1)新規ブックを追加
2)追加したブックをA1セルの名前で保存
3)追加したブックを閉じる

Sub test()
  
  Workbooks.Add
  ActiveWorkbook.SaveAs ThisWorkbook.Worksheets("データ追加").Cells(1, "A").Value
  ActiveWorkbook.Close False
  
End Sub
・ツリー全体表示

【78719】Re:新しく取得したブックの名前について
回答  オムライス  - 16/12/27(火) 17:42 -

引用なし
パスワード
   こんにちは

ヒントだけですが。
作成したブックに「名前をつけて保存」をしたいのですよね。

それであれば、SaveAsメソッドを使うことになります。
・ツリー全体表示

【78718】新しく取得したブックの名前について
質問  VBA勉強2日目  - 16/12/27(火) 16:57 -

引用なし
パスワード
   こんばんは、早速ですが質問です

新しくブックを作った後、cell(A,1)~(A,5)を参照してブックに名前をつけて保存をしたいのですが、
Sub bookad()
  Application.ScreenUpdating = False
  Dim i
  For i = 1 To 5
    Application.SheetsInNewWorkbook = 1
    Workbooks.Add
    Workbooks("データ追加").Activate
    Sheets("データ追加").Cells(i, 2). _
    Value = ActiveWorkbook.Name
  Next
End Sub
途中ですが名前がうまくつきません、ご教授お願いいたします。
・ツリー全体表示

【78717】Re:セルに入力されたら印刷
発言  γ  - 16/12/22(木) 0:51 -

引用なし
パスワード
   >Private Sub Worksheet_Change(ByVal Target As Range)を2つ利用しているため
>エラーになります回避方法ありますか。

同じ質問を何度もしないようにしてください。

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=78439;id=excel
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=78472;id=excel
・ツリー全体表示

【78716】Re:セルに入力されたら印刷
お礼  北風  - 16/12/21(水) 17:58 -

引用なし
パスワード
   ▼β さん:
>▼北風 さん:
>
>1つのモジュールに同じ名前のプロシジャを書くことはできません。
>現在のものと、アップしたものが共存できるように組み立てることが必要です。
>現在のものを、そのまま、コピペでアップしてください。

β さん:
有難うございます。
頑張ってやってみます
・ツリー全体表示

【78715】Re:ペーストのVBA
お礼  初心  - 16/12/21(水) 16:24 -

引用なし
パスワード
   ▼β さん:
うわー!!!!ありがとうございます!!!!
教えていだたいたコードでできました! 今回とても勉強になりました。
奥が深いですね。もっともっと勉強していきたいと思います!

>▼初心 さん:
>
>このメッセージが出るということは wsInvoiceシートの21行目から下に
>結合セルがあるということです。
>
>よく調べてみてください。
>
>なお、処理後、F列をクリアしているということは、次回処理する際には
>1 がたっていないわけですから、必ず 1 をつけてから操作する必要がありますね。
>
>まぁ、それはともあれ、アップされたコードでやろうとしていることを継承して
>コード記述をかえてみました。参考までに。
>(それでも、結合セルがあれば、これもエラーになります)
>
>★印のところは実際のシート名にしてください。
>
>Sub Sample()
>  Dim wsData As Worksheet
>  Dim wsInvoice As Worksheet
>  
>  Set wsData = Sheets("Sheet1")    '★
>  Set wsInvoice = Sheets("Sheet2")  '★
>  
>  wsInvoice.Range("A1", wsInvoice.UsedRange).Columns("A:H").Offset(20).ClearContents
>  wsData.AutoFilterMode = False '念のためいったんリセット
>  
>  wsData.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:="1"
>  wsData.AutoFilter.Range.Copy wsInvoice.Range("A21")
>  
>  On Error Resume Next
>  wsData.ShowAllData
>  On Error GoTo 0
>  
>  wsData.AutoFilter.Range.Columns("F").Offset(1).ClearContents
>    
>  wsInvoice.Select
>  
>End Sub
・ツリー全体表示

【78714】Re:ペーストのVBA
発言  β  - 16/12/21(水) 14:58 -

引用なし
パスワード
   ▼初心 さん:

このメッセージが出るということは wsInvoiceシートの21行目から下に
結合セルがあるということです。

よく調べてみてください。

なお、処理後、F列をクリアしているということは、次回処理する際には
1 がたっていないわけですから、必ず 1 をつけてから操作する必要がありますね。

まぁ、それはともあれ、アップされたコードでやろうとしていることを継承して
コード記述をかえてみました。参考までに。
(それでも、結合セルがあれば、これもエラーになります)

★印のところは実際のシート名にしてください。

Sub Sample()
  Dim wsData As Worksheet
  Dim wsInvoice As Worksheet
  
  Set wsData = Sheets("Sheet1")    '★
  Set wsInvoice = Sheets("Sheet2")  '★
  
  wsInvoice.Range("A1", wsInvoice.UsedRange).Columns("A:H").Offset(20).ClearContents
  wsData.AutoFilterMode = False '念のためいったんリセット
  
  wsData.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:="1"
  wsData.AutoFilter.Range.Copy wsInvoice.Range("A21")
  
  On Error Resume Next
  wsData.ShowAllData
  On Error GoTo 0
  
  wsData.AutoFilter.Range.Columns("F").Offset(1).ClearContents
    
  wsInvoice.Select
  
End Sub
・ツリー全体表示

【78713】Re:ペーストのVBA
回答  初心  - 16/12/21(水) 14:29 -

引用なし
パスワード
   ▼β さん またまたありがとうございます。
>1.コピー後、ペースト前に 10秒間 Wait している理由は?
→コピーとペーストまでの操作時間が影響している可能性があるのかもという
記述を調べている時にみつけたので、追加してみました。ただこれが必要なのか
現状ではわからないんです。ごめんなさい

>
>2.Range("F3:F200").Select
>  Selection.ClearContents
>
>  コピペ後、抽出判定領域の F列をクリアしている意味は?
次に使う人が使いやすい様にクリアした方がいいのかなとおもった次第です。 
ここのシートには、商品データがあり
フィルタを使って必要なものを表示→請求書へ転記というものを作りたく。


>
>3.ActiveSheet.Range("$A$2:$F$134").AutoFilter Field:=6
>  ActiveSheet.Range("$A$2:$F$200").AutoFilter Field:=1
>  
>  処理後、フィルタリング状態を解除し、全データ表示にしたいのでしょうけど
→はいそのとおりなんです。

>  1)アップされたコードには見当たりませんが A列でもフィルタリングしているのですか?
→はい。A列にはカテゴリーとして一覧があるので カテゴリをフィルタ→F列に商品があるので必要商品を1と入力して選んだものをコピーする様にしたかったんです。
>  2)F列とA列の領域、一方は134行目まで、一方は200行目と、違っているのはなぜですか?
→申し訳ありません、データの数が増えてもいいように、134→200にしたものを
片方変更もれです。
・ツリー全体表示

【78712】Re:ペーストのVBA
お礼  初心  - 16/12/21(水) 14:22 -

引用なし
パスワード
   お返事ありがとうございます。

エラー内容は、この操作には、同じサイズの結合せるが必要ですと
出るんですが、結合してるセルもないので・・・サイズなのかなと思ったりしたんですが違うみたいで・・・

▼β さん:
>▼初心 さん:
>
>コードそのものは、改善できるところ(もしくは、修正しなければいけないところ)がたくさんありますが、
>とりあえずwsDataシートに、正しいタイトル行があり、
>かつ、抽出対象データがあればエラーにはなりませんよ。
>
>抽出対象データがなければ
>
>Selection.SpecialCells(xlCellTypeVisible).Select
>
>でエラーになりますが。
>
>1004エラーとともに、なぜ1004エラーになったのかのメッセージが出ているはずですが
>どういったメッセージでしたか?
>
>wsInvoiceシートにシート保護がかかっているということはないですか?
・ツリー全体表示

【78711】Re:ペーストのVBA
発言  β  - 16/12/21(水) 13:25 -

引用なし
パスワード
   ▼初心 さん:

ついでに質問します。

1.コピー後、ペースト前に 10秒間 Wait している理由は?

2.Range("F3:F200").Select
  Selection.ClearContents

  コピペ後、抽出判定領域の F列をクリアしている意味は?

3.ActiveSheet.Range("$A$2:$F$134").AutoFilter Field:=6
  ActiveSheet.Range("$A$2:$F$200").AutoFilter Field:=1
  
  処理後、フィルタリング状態を解除し、全データ表示にしたいのでしょうけど

  1)アップされたコードには見当たりませんが A列でもフィルタリングしているのですか?
  2)F列とA列の領域、一方は134行目まで、一方は200行目と、違っているのはなぜですか?
・ツリー全体表示

【78710】Re:ペーストのVBA
発言  β  - 16/12/21(水) 13:11 -

引用なし
パスワード
   ▼初心 さん:

コードそのものは、改善できるところ(もしくは、修正しなければいけないところ)がたくさんありますが、
とりあえずwsDataシートに、正しいタイトル行があり、
かつ、抽出対象データがあればエラーにはなりませんよ。

抽出対象データがなければ

Selection.SpecialCells(xlCellTypeVisible).Select

でエラーになりますが。

1004エラーとともに、なぜ1004エラーになったのかのメッセージが出ているはずですが
どういったメッセージでしたか?

wsInvoiceシートにシート保護がかかっているということはないですか?
・ツリー全体表示

【78709】Re:セルに入力されたら印刷
発言  β  - 16/12/21(水) 13:01 -

引用なし
パスワード
   ▼北風 さん:

1つのモジュールに同じ名前のプロシジャを書くことはできません。
現在のものと、アップしたものが共存できるように組み立てることが必要です。
現在のものを、そのまま、コピペでアップしてください。
・ツリー全体表示

187 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free