Excel VBA質問箱 IV

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

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


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

【81319】Re:印刷について
発言  マナ  - 20/6/2(火) 21:19 -

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

動作確認用に、ばっさり削除しました。
これで、印刷されますか。

Sub 見積書作成()
  Dim lst As Worksheet, tmp As Worksheet, sh As Worksheet
  
  'リストのあるシート
  Set lst = Sheets("データ")
  '請求書テンプレート
  Set tmp = Sheets("見積書")
  
  tmp.Copy After:=Sheets(Sheets.Count)
  Set sh = ActiveSheet
 
  sh.Range("D1").Value = lst.Range("a2").Value
  
  sh.PrintOut

 End Sub
・ツリー全体表示

【81318】Re:別シートへ転記したい場合
発言  マナ  - 20/6/2(火) 20:52 -

引用なし
パスワード
   ▼[名前なし] さん:

>sh.Range("A2:AN10").Value = sh2.Range("A3:AN11").Value

左辺と右辺が逆ですよ。

転記先.Value=元データ.Value
です。


まずは、簡単な↓こっちで考えることにします。

>sh1.Range("A2","AN10")copy sh2.Range("A3")

毎回変わるのは、AN10 と A3 の部分ですね。
A3のほうは、すでにできていると思いますので
AN10のほうを、こことかを参考に考えてみてください。
ht tp://officetanaka.net/excel/vba/tips/tips130.htm
・ツリー全体表示

【81317】印刷について
質問  kanikaani  - 20/6/2(火) 20:33 -

引用なし
パスワード
   VBAで見積書を作っています
件数ごとに自動的に見積書を作成することはできるのですが、印刷することができません

もしかしたら私のパソコンやエクセルの設定がおかしいのかもしれませんが
私の作成しているVBAのほうが間違っている可能性が一番大きいと思うので
質問させていただきました。

『元々作成していたもの』
Sub 見積書作成()
Dim lst As Worksheet, tmp As Worksheet, sh As Worksheet
Dim i As Long
'リストのあるシート
Set lst = Sheets("データ")
'請求書テンプレート
Set tmp = Sheets("見積書")

ActiveSheet.PrintOut Preview:=True

'B列2行目から最終行の手前まで
For i = 2 To lst.Cells(Rows.Count, "B").End(xlUp).Row
'テンプレコピー
tmp.Copy After:=Sheets(Sheets.Count)
With lst
'新規シート名はB列の文字列
ActiveSheet.Name = .Cells(i, "B") & "様"
Set sh = ActiveSheet

'番号/名前
Range("D1").Value = Worksheets("データ").Range("a" & i).Value
Range("A5").Value = Worksheets("データ").Range("b" & i).Value

'コピペ部分/行列を入れ替えて値でペースト
.Range(.Cells(i, "C"), .Cells(i, "J")).Copy
sh.Range("A12").PasteSpecial Paste:=xlPasteValues, Transpose:=True
.Range(.Cells(i, "K"), .Cells(i, "R")).Copy
sh.Range("C12").PasteSpecial Paste:=xlPasteValues, Transpose:=True

'計算
Range("D12:D19").Formula = "=(B12:B19*C12:C19)"
Range("D20").Formula = "=SUM(D12:D19)"
Range("D21").Formula = "=D20*0.05"
Range("D22").Formula = "=D20+D21"
Range("B9") = Range("D22")

[ActiveSheet.PrintOut
  ActiveSheet.Printpreview
  .PrintOut
  .Printpreview などを試しています]
End With
Next i
Application.CutCopyMode = False

 End Sub
・ツリー全体表示

【81316】Re:マクロでのOutlookの自動化
発言  マルチネス  - 20/6/2(火) 15:00 -

引用なし
パスワード
   回答者への参考として。

ht tp://www.excel.studio-kazu.jp/kw/20200602034014.html
・ツリー全体表示

【81315】マクロでのOutlookの自動化
質問  エジル  - 20/6/1(月) 21:52 -

引用なし
パスワード
   エクセル初心者です。失礼いたします。


エクセルで別のセルにある(D1:D2,G1:G2,M1:M2)
データを表にまとめ、Outolookの本文下に添付したいです。

Unionなどを活用して、別のセルを選択することはできます。
しかし、表にすることができません。

「オブジェクトが存在しない」、「型が一致しない」が表示されます。

Dim tableaddress As String
Set tableaddress = Union(Range("D1"),Range("D2"))
Set tableaddress = Union(Range("D1:D2"))
Set tableaddress = Union(Range("M1:M2"))

Call ws.Range(tableaddress).Copy
objMail.GetInspector().WordEditor.Windows(1).Selection.Paste

お助けください。
よろしくお願いします。
・ツリー全体表示

【81314】Re:別シートへ転記したい場合
お礼  [名前なし]  - 20/6/1(月) 16:11 -

引用なし
パスワード
   マナさん
Sh1のA2:AN10の値を、Sh2のA3に転記する場合

上記の場合
私は下記を考えました。

sh1.Range("A2","AN10")copy sh2.Range("A3")

又は
sh.Range("A2:AN10").Value = sh2.Range("A3:AN11").Value
・ツリー全体表示

【81313】Re:B列に1~10を繰り返し入力したい
お礼  初心者  - 20/5/29(金) 21:20 -

引用なし
パスワード
   マナさん

返信遅くないすみません。

ご教授ありがとうございます。
繰り返し処理、隣接セル終点までの処理共に実行できました。
・ツリー全体表示

【81312】Re:別シートへ転記したい場合
発言  マナ  - 20/5/29(金) 18:55 -

引用なし
パスワード
   ▼[名前なし] さん:

では、まずは条件固定で考えてみてください。

例えば、Sh1のA2:AN10の値を、Sh2のA3に転記する場合は、どう書きますか。
・ツリー全体表示

【81311】Re:別シートへ転記したい場合
お礼  [名前なし]  - 20/5/29(金) 13:20 -

引用なし
パスワード
   マナさん
ご教授ありがとうございます。

何分VBAを始めたばかりでマクロを記録して色々やっている状態なので
とてもありがたいです。

End(Xlup)を with Sh1として下記としてみたのですが【型が一致しません】と
なってしまいます。この場合は各シートの何かが違うという事なのでしょうか。
質問ばかりで申し訳ございませんが、またご教授いただけたらと思います。

  Dim Sh1 As Worksheet
  Dim Sh2 As Worksheet
  Dim myRow As Long
   Set Sh1 = Worksheets("入力")
   Set Sh2 = Worksheets("データ")
 
   'データ転記
   With Sh1
        myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
      End With
     With Sh2
        myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range(.Range("A" & myRow), .Range("AN" & myRow)).Value = Sh1.Range("A2:AN2").Value
        .Range("AN" & myRow).Value = Sh1.Range("C2").Value * Sh1.Range("AN2").Value
      End With
      With Sh1
        .Range("A2:AN2").ClearContents
      End With

End Sub
 
・ツリー全体表示

【81310】Re:B列に1~10を繰り返し入力したい
発言  マナ  - 20/5/28(木) 20:10 -

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

こっちのほうが理解しやすいかも

Sub test2()
  Dim k As Long
  Dim n As Long

  For k = 1 To 300
    n = n + 1
    If n > 10 Then n = 1
    Cells(k, 2).Value = n
  Next
  
End Sub


300の部分は、End(xlUP).Rowなどで求めるとよいです。
・ツリー全体表示

【81309】Re:B列に1~10を繰り返し入力したい
発言  マナ  - 20/5/28(木) 19:59 -

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

一例です

Sub test()
  Dim k As Long

  For k = 1 To 300
    Cells(k, 2).Value = (k - 1) Mod 10 + 1
  Next
  
End Sub
・ツリー全体表示

【81308】Re:行を列に変更したい。
発言  マナ  - 20/5/28(木) 19:50 -

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

こんな感じで考えてみてください

1)C1:F1をコピー
2)B2に行列入れ替えて貼り付け
3)1)を値クリア
5)これを5行おきに繰り返す
・ツリー全体表示

【81307】Re:別シートへ転記したい場合
発言  マナ  - 20/5/28(木) 19:41 -

引用なし
パスワード
   ▼[名前なし] さん:

Sh1も、Sh2のように、End(xlUp)で最終行を求めるとよいと思います。
途中に。空白行がないなら、CurrentRegionを津kってもよいです。
・ツリー全体表示

【81306】B列に1~10を繰り返し入力したい
質問  初心者  - 20/5/28(木) 17:23 -

引用なし
パスワード
   VBA初心者です。
以下の処理コードをご教授頂けると幸いです。

1列に1~10、1~10の値を繰り返し入力したいです。
また、C列が空セルになるまで繰り返したい。
(C列が300行の場合B列の処理を30回)


B C
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
2
3


・ツリー全体表示

【81305】行を列に変更したい。
質問  初心者  - 20/5/28(木) 16:58 -

引用なし
パスワード
   VBA初心者です。
以下の行から列に改編するコードをご教授頂きたいです。

B1からF1の値を
B1からB5に改編したいです。
続けてB6からF6の値をB6からB10
5行飛ばしで5回程繰り返したい。
  

 B  C  D  E  F
1 B1 C1 D1 E1 F1
2 .
3 .
4 .
5 ・
6 B6 C6 D6 E6 F6
7 .
 .
 .


    ↓


  B  C  D  E  F
1 B1
2 C1
3 D1
4 E1
5 F1
6 B6
7 C6
8 D6
9 E6
10 F6
11
12


以上の様に5行飛ばしで5回程繰り返したい。 
・ツリー全体表示

【81303】別シートへ転記したい場合
質問  [名前なし]  - 20/5/27(水) 19:43 -

引用なし
パスワード
   現在 シート1『入力』シート2『データ』として転記の自動VBAを作ってみたいと思っています
A〜ANの行の転機です 
※毎回入力シートに入る件数は変わります

下記ですと A2からAN2に入力した分のみしか反映できないんです…
入力シートの最初から最後まで転記したい場合は どこを変更したらいいのでしょうか‥‥ 

Sub データの転記()
  Dim Sh1 As Worksheet
  Dim Sh2 As Worksheet
  Dim myRow As Long
   Set Sh1 = Worksheets("入力")
   Set Sh2 = Worksheets("データ")
   
   'データ転記
     With Sh2
        myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range(.Range("A" & myRow), .Range("AN" & myRow)).Value = Sh1.Range("A2:AN2").Value
        .Range("AN" & myRow).Value = Sh1.Range("C2").Value * Sh1.Range("AN2").Value
      End With
      With Sh1
        .Range("A2:AN2").ClearContents
      End With

End Sub

また、転記をしたデータでオートフィルターを使った場合 重複している名前をカウントしないで集計する方法はありますでしょうか

=SUMPRODUCT(1/COUNTIF(A1:A15,A1:A15))を使用してみましたが可視の部分以外も
カウントしてしまうんです…
・ツリー全体表示

【81302】Re:高速化と並び替え
発言  初心者  - 20/5/27(水) 3:11 -

引用なし
パスワード
   ▼マナ さん:
すみませんでした。
自分で試してみます。
・ツリー全体表示

【81301】Re:高速化と並び替え
発言  マナ  - 20/5/26(火) 22:58 -

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


>いったいどのコードが原因なのかご教示ください。
>

4行しかないのだから、
全部試しても、4回で判明するのでは。
・ツリー全体表示

【81300】高速化と並び替え
質問  初心者 E-MAIL  - 20/5/26(火) 20:26 -

引用なし
パスワード
   7万行、10列のデータをから、1行ごとに3列目のデータ抽出し、
抽出データをもとにソートをかけるような場合なのですが、どうも高速化するために記述しているコードが邪魔をして、うまく並び替えができません。
高速化のコードを消せばうまく作動するのですが、高速化のコードがあると並べ替えができずに完了してしまします。

いったいどのコードが原因なのかご教示ください。

以下記述している高速化のコード

' ウィンドウを最小化する
Application.WindowState = xlMinimized

'高速化
Application.EnableEvents = False '動作の停止
Application.Calculation = xlCalculationManual '自動計算の停止
Application.ScreenUpdating = False '画面更新の停止
Application.DisplayAlerts = False '確認ダイアログ非表示

〜処理コード〜

'高速化停止
Application.EnableEvents = True '動作の開始
Application.Calculation = xlCalculationAutomatic '自動計算の開始
Application.ScreenUpdating = True '画面更新の開始
Application.DisplayAlerts = True '確認ダイアログ表示

'ウィンドウを最大化する
Application.WindowState = xlMaximized
・ツリー全体表示

【81299】Re:参照関数を教えてください
発言  マナ  - 20/5/26(火) 20:22 -

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

ここは、ExcelのVBA(マクロ)に関する質問掲示板です。
関数に関する質問は、板違いです。
・ツリー全体表示

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