Excel VBA質問箱 IV

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

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


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

【80989】Re:数字の表示形式について
お礼  マナ  - 19/7/2(火) 20:56 -

引用なし
パスワード
   ▼γ さん:
>表示形式
>0".00"

初めてみました。
勉強になります。
 
・ツリー全体表示

【80988】Re:数字の表示形式について
回答  γ  - 19/7/2(火) 20:43 -

引用なし
パスワード
   表示形式
0".00"
でよいかも。

こちらはVBA質問箱であって、
ExelとVBAの質問箱じゃないですよ、
・ツリー全体表示

【80987】Re:数字の表示形式について
発言  マナ  - 19/7/2(火) 20:35 -

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

ここはExcel VBA(マクロ)の質問掲示板です。

ROUND関数で四捨五入して
セルの書式設定で表示形式を、0.00
・ツリー全体表示

【80986】数字の表示形式について
質問  mikky  - 19/7/2(火) 18:59 -

引用なし
パスワード
   数字の表示形式を、四捨五入かつ小数点以下は第2位まで00と変換したいのですが、その場合はどのような構文を使えばよいのでしょうか。

(例)
444.6 → (変換)445.00
394.44→ (変換)394.00
578.4→ (変換)578.00

恐れ入りますがご教授願います。
・ツリー全体表示

【80985】Re:2回に1回エラーが出る
お礼  さと  - 19/7/1(月) 12:36 -

引用なし
パスワード
   よろずやさん、γさん

ありがとうございました。
原因が分かってすっきりしました。
・ツリー全体表示

【80984】Re:application.runでのマクロの呼び出し...
お礼  初心者  - 19/6/30(日) 17:29 -

引用なし
パスワード
   なるほど、&でつなげばよかったのですね!

無事に動かすことができました!

ありがとうございます!
・ツリー全体表示

【80983】Re:application.runでのマクロの呼び出し...
発言  マナ  - 19/6/30(日) 16:17 -

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

>application.run x!y

application.run x & "!" & y

では?
変数は & でつなぎます。
・ツリー全体表示

【80982】application.runでのマクロの呼び出しに...
質問  初心者  - 19/6/30(日) 15:19 -

引用なし
パスワード
   for i = 1 to sheets(1).cells(rows.count,1).end(xlup).row

set book = workbooks.open(thisworkbook.path & "\" sheets(1).cells(i,1) & ".xlsm")

application.run 質問部分

book.close savechanges:=true

というマクロを作ったのですが、質問部分が ブック名!マクロ名 になるとは思うのですが、それらをセルを参照して取得することは可能でしょうか?

例えば

x = cells(i,1)
y = cells(i,2)

application.run x!y

になるのかと思ってやってみたのですが動かなかったので、もし可能ならばご教授頂けると幸いです。
・ツリー全体表示

【80981】Re:対応した2つのセル選択を同時に繰り...
発言  ピンク  - 19/6/28(金) 13:59 -

引用なし
パスワード
   参考になりますかな?
Sub Test()
  Dim dt As Range, n As Long
  
  n = 3
  For Each dt In Range("C4,C12,C25")
    MsgBox dt.Address & " の時は" & vbCrLf & _
      Sheets("rawdata").Range(dt.Address).Offset(-n).Address(External:=True)
    n = n + 4
  Next
End Sub
・ツリー全体表示

【80980】Re:対応した2つのセル選択を同時に繰り...
回答  よろずや  - 19/6/28(金) 9:55 -

引用なし
パスワード
   Sub Test()
  Dim i As Long
  For i = 0 To 2
    Sheets("Sheet1").Range(Split("C4,C12,C25", ",")(i)).Copy
    Sheets("Sheet2").Range(Split("C1,C5,C14", ",")(i)).PasteSpecial xlPasteValues
  Next i
End Sub

みたいな感じ。
・ツリー全体表示

【80979】対応した2つのセル選択を同時に繰り返す...
質問  KH  - 19/6/27(木) 23:46 -

引用なし
パスワード
   以下のコードでfor eachで繰り返し処理をしています(C4,C12,C25)。
次にHlookupの中のrange("C1")も繰り返し処理を同時にしたいです(違うシートのC1,C5,C14)。
つまり、C4の時はC1、C12の時はC5、C25の時はC14というように対応したもので繰り返しを行いたいです。

説明が下手で申し訳ありません。

分かる方、教えていただければと思います。


Sub 生データ貼り付け()
  Application.ScreenUpdating = False
  Dim dt As Range
  For Each dt In Range("C4,C12,C25")
    Dim i As Long
    i = 0
    dt.Select
    Do
      Selection.Value = WorksheetFunction _
      .HLookup(ActiveCell.Offset(-1, 0), Sheets("rawdata").Range("C1").CurrentRegion, 2, 0)
      i = i + 1
      Selection.Offset(0, 1).Select
    Loop While ActiveCell.Offset(-1, 0).Value <> ""
  Next
End Sub
・ツリー全体表示

【80978】Re:選択セルのみ変更して繰り返す
お礼  KH  - 19/6/27(木) 23:19 -

引用なし
パスワード
   ▼ピンク さん:

そっちにいれれば良いんですね!
色々とありがとうございました
・ツリー全体表示

【80977】Re:2回に1回エラーが出る
回答  γ  - 19/6/27(木) 22:10 -

引用なし
パスワード
   既にコメントをいただいていて、重複になって恐縮です。

質問者さん、コードの提示ご苦労さまでした。

変数宣言の位置というよりも
> a = Selection.Rows.Count
> b = Selection.Columns.Count
という命令よりも前に、
.Range("B2").CurrentRegion.Offset(2, 1).Select
を実行していることが重要です。
「コードのなかで選択(Selectionを限定)」していることがポイントです。

つまり、
> ■19/6/23(日) 19:23のコードでは、
> 無造作に
>  a = Selection.Rows.Count
>  b = Selection.Columns.Count
> で始まっている。
> そのとき何が選択されているか分かったものじゃない。
という状態から脱したことが大きいのです。
プロシージャの開始時点における冗長性(可能性が多いこと)がなくなったことが大きいのです。

----------
なお、変数宣言の位置について補足すれば、
実行前であれば、
・使用の直前であっても
・プロシージャーの先頭に纏めても
動作に影響はありません。誤解無きよう。
・ツリー全体表示

【80976】Re:ピボットから.GetDataで総計を取る際
発言  マナ  - 19/6/27(木) 19:48 -

引用なし
パスワード
   ▼とうもろこし さん:

ピボットのレイアウトを具体的に説明してください。
・ツリー全体表示

【80975】Re:ピボットから.GetDataで総計を取る際
質問  とうもろこし  - 19/6/27(木) 19:20 -

引用なし
パスワード
   ▼マナ さん:
>▼とうもろこし さん:
>
>ht tp://officetanaka.net/excel/vba/tips/tips186.htm

早速のご返信ありがとうございます。
まさにそのページを見ながら作業していたのですが、解決できずでした…
申し訳ないのですが、具体的な修正ポイントをご指摘いただけますと大変助かります。
・ツリー全体表示

【80974】Re:ピボットから.GetDataで総計を取る際
発言  マナ  - 19/6/27(木) 19:02 -

引用なし
パスワード
   ▼とうもろこし さん:

ht tp://officetanaka.net/excel/vba/tips/tips186.htm
・ツリー全体表示

【80973】ピボットから.GetDataで総計を取る際
質問  とうもろこし  - 19/6/27(木) 18:47 -

引用なし
パスワード
   みなさま、こんにちは。
最近VBAを触り始めて、業務効率化のために日々勉強しております。

表題の件について質問をさせてください。
今、会社ごとの売上をまとめたピボットから、VBAで会社ごとの総計を取り出すという
コードを書こうとしているのですが、うまく実行されず困っております。

ピボットは20社程度の月ごとの売り上げをまとめており、
今回取り出したいのは会社ごとの総計売上となります。
一旦、以下のように記述しました。

Dim 総計 As Double
Dim 会社名 As String
Dim i As Long

  With ActiveSheet.PivotTables(1)
    For i = 1 To .PivotFields("対象企業").PivotItems.Count
    会社名 = .PivotFields("対象企業").PivotItems(i)
    総計 = .GetData(会社名)
    Next i
  End With

そうすると以下のようなエラーメッセージが出現しました。
実行時エラー '1004':
アイテム名が曖昧です。ピボットテーブル レポートのほかのフィールドに、同じ名前のアイテムが有る可能性があります。

構文"フィールド[アイテム]"を使用してください。例えば、アイテムが"オレンジ"でフィールドが"生産物"の場合、"生産物[オレンジ]にします。"

そこで、上記エラーを受けて、以下のように修正しました。

Dim 総計 As Double
Dim 会社名 As String
Dim i As Long

  With ActiveSheet.PivotTables(1)
    For i = 1 To .PivotFields("対象企業").PivotItems.Count
    会社名 = .PivotFields("対象企業").PivotItems(i)
    総計 = .GetData("対象企業[会社名]")
    Next i
  End With

しかし、今後はアイテム名が見つかりません。というエラーが出てうまく実行されずにいます。
どこか初歩的なところで間違えているのか、エラーメッセージで各種検索をかけてもうまく解決できなかったので、お手数ですが解決策をご存知でしたらご教示ください。

何卒宜しくお願いします。
・ツリー全体表示

【80972】Re:2回に1回エラーが出る
発言  よろずや  - 19/6/27(木) 16:54 -

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

>  a = Selection.Rows.Count

この文の意味を誤解してるのではないでしょうか?

誤:a と Selection.Rows.Count は同じと定義する。

正:この時点の Selection.Rows.Count の値を a に代入する。
・ツリー全体表示

【80971】Re:2回に1回エラーが出る
発言  よろずや  - 19/6/27(木) 14:22 -

引用なし
パスワード
   提示されたものの無駄を省くと、以下の様になります。

Option Explicit
Sub 当月入力準備()
  Dim a As Long, b As Long
  Application.ScreenUpdating = False
  With Sheets("7月").Range("B2")   
    With .CurrentRegion
      a = .Rows.Count
      b = .Columns.Count
    End With
    .Offset(2, 1).Resize(a - 3, b - 1).Copy
    .Offset(3, 1).Resize(a - 3, b - 1).PasteSpecial xlPasteValues
    .Offset(2, 1).Resize(a - 6, b - 1).ClearContents
  End With
End Sub

マクロの記録では、Select Selection がやたら出てきますが、
これらは、基本的には不要です。

処理としてこれで正しいのかどうかは、シートの構成が判りませんので、不明です。
・ツリー全体表示

【80970】Re:複数シートデータを一つのシートに1行...
お礼  カピ  - 19/6/27(木) 13:21 -

引用なし
パスワード
   ▼マナ さん:
アドバイスありがとうございました。
・ツリー全体表示

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