Excel VBA質問箱 IV

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

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


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

【78042】Re:マクロでグラフ作成
発言  γ  - 16/3/13(日) 19:03 -

引用なし
パスワード
   3つじゃなく4つでした。
系列順序ですね、最後は。
提示した情報で読み解けるはずです。
・ツリー全体表示

【78041】Re:マクロでグラフ作成
お礼  のりっぺ  - 16/3/13(日) 18:27 -

引用なし
パスワード
   ありがとうございました。

この記述でまず仕組みを理解してから修正してみようと思います。
ありがとうございました。

頼んだのは現役を退職された方で副収入でやってるみたいです。
・ツリー全体表示

【78040】Re:マクロでグラフ作成
発言  γ  - 16/3/13(日) 12:07 -

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

  '作画
  Dim s As String
  
  With ActiveSheet.ChartObjects(1).Chart
    For i = 1 To .SeriesCollection.Count
      s = "=SERIES(" & sheet & "!R6C" & i + 41 & ":R7C" & i + 41 & "," _
              & sheet & "!R" & SC & "C1:R" & LC & "C1," _
              & sheet & "!R" & SC & "C" & i + 41 & ":R" & LC & "C" & i + 41 & "," _
              & i & ")"
      Debug.Print s
      .SeriesCollection(i).Formula = s
    Next i
  End With
 
  などとして、内容を確認して下さい。

  SERIESに与える3つの要素は、それぞれ
  ・凡例項目、
  ・横軸ラベル、
  ・グラフ値
  です。
 
  すでにある折れ線グラフの系列を一つ選択して、
  数式のところに現れる文字列をよく観察して、
  それぞれが何を示すか理解することが先決です。

余談:
会社でマクロ作成を依頼するルートがあるんですね?
そういう商売が普及しているのか。知らなかった。
これからは、ここでも幾ばくか払ってもらえないかな。www
・ツリー全体表示

【78039】Re:マクロでグラフ作成
発言  のりっぺ  - 16/3/13(日) 9:43 -

引用なし
パスワード
   ▼γ さん:
>こんにちは。
>
>そのコードはどこから持ってきたものですか?
>その説明をしてください。
>SheetとかLCとかSCとかはどのように設定されたもの?
>そういうセル範囲を指定しているんでしょう、としか言えない。
>
>あなたの目的(数値がどこに配置されていて、どのような種類のグラフを
>書こうとしているのか)を説明するのが先決でしょう。
>そして、マクロ記録をしてみるのが、最上の方法でしょう。


>>返答ありがとうございます。
コードは作成依頼したものです。
それを参考に自分でアレンジしたかったのですが、
依頼すると有料ですので・・・

説明不足でしたね申し訳ございません。
5つの項目について指定期間の折れ線グラフを作成するものです。

グラフに関する記述はシートの5つの列の指定範囲のグラフを表して
居るものだと思いますが私には分かりません。

以下の範囲で説明が出来るようでありましたらお願い致します。

'グラフ作成

  Dim i As Long, SC As Long, LC As Long, CL As Long
  SC = StartCell
  LC = LastCell
  
    
  '作画
 
   With ActiveSheet.ChartObjects(1).Chart
    For i = 1 To .SeriesCollection.Count
    .SeriesCollection(i).Formula = _
    "=SERIES(" & sheet & "!R6C" & i + 41 & ":R7C" & i + 41 & "," & sheet & "!R" & SC & "C1:R" & LC & "C1," & sheet & "!R" & SC & "C" & i + 41 & ":R" & LC & "C" & i + 41 & "," & i & ")"
    Next i
  End With
End Sub
・ツリー全体表示

【78038】Re:マクロでグラフ作成
発言  γ  - 16/3/13(日) 7:21 -

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

そのコードはどこから持ってきたものですか?
その説明をしてください。
SheetとかLCとかSCとかはどのように設定されたもの?
そういうセル範囲を指定しているんでしょう、としか言えない。

あなたの目的(数値がどこに配置されていて、どのような種類のグラフを
書こうとしているのか)を説明するのが先決でしょう。
そして、マクロ記録をしてみるのが、最上の方法でしょう。
・ツリー全体表示

【78037】マクロでグラフ作成
発言  のりっぺ  - 16/3/12(土) 22:56 -

引用なし
パスワード
   マクロ初心者です。
マクロで任意の日付間のグラフを作成したいのですが、参考にしている記述で分からない所が有ります。
私には理解不能なので、分かりやすく説明して頂けると助かります。
よろしくお願い致します。

'作画
 
   With ActiveSheet.ChartObjects(1).Chart
    For i = 1 To .SeriesCollection.Count
    .SeriesCollection(i).Formula = _
    "=SERIES(" & sheet & "!R6C" & i + 41 & ":R7C" & i + 41 & "," & sheet & "!R" & SC & "C1:R" & LC & "C1," & sheet & "!R" & SC & "C" & i + 41 & ":R" & LC & "C" & i + 41 & "," & i & ")"
    Next i
  End With
End Sub
・ツリー全体表示

【78036】Re:VLOOKUP関数の検索値を変数にする方法
お礼  真田● E-MAIL  - 16/3/9(水) 18:54 -

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

ありがとうございます。

今夜、確認してみます。
・ツリー全体表示

【78035】Re:VLOOKUP関数の検索値を変数にする方法
発言  ichinose  - 16/3/9(水) 6:59 -

引用なし
パスワード
   ▼真田● さん:
>▼β さん:
>MATCH関数というのがあるのですか
>奥が深いですね
>後で、調べてみます。
>
>別ファイルをRangeで指定する場合は、下の書き方で正解なのでしょうか?
>
>Range("[商品コード.xlsx]Sheet1!A$1:B$394"),
標準モジュールでは、使用頻度は低いですが間違いではありません。

シートモジュールでは、エラーに成ります。

どこでも通用させるには


Application.Range("[商品コード.xlsx]Sheet1!A$1:B$394")
こんな記述です。


βさんの記述が一般的ですけど・・・。
・ツリー全体表示

【78034】Re:VLOOKUP関数の検索値を変数にする方法
発言  β  - 16/3/8(火) 19:26 -

引用なし
パスワード
   ▼真田● さん:

Workbooks("商品コード.xlsx").Sheets("Sheet1").Range("A1:B394")

といった記述をします。
(ブックが開かれているという前提です)
・ツリー全体表示

【78033】Re:VLOOKUP関数の検索値を変数にする方法
質問  真田● E-MAIL  - 16/3/8(火) 17:41 -

引用なし
パスワード
   ▼β さん:
MATCH関数というのがあるのですか
奥が深いですね
後で、調べてみます。

別ファイルをRangeで指定する場合は、下の書き方で正解なのでしょうか?

Range("[商品コード.xlsx]Sheet1!A$1:B$394"),
・ツリー全体表示

【78032】Re:VLOOKUP関数の検索値を変数にする方法
発言  β  - 16/3/8(火) 11:25 -

引用なし
パスワード
   ▼真田● さん:

>VBAではVLOOLUPは使わない方が良いと言ってる人がおいようですが

想像ですけど、たぶん

結果1 =Application.VLOOKUP(検索文字列,検索領域,2,FALSE)
結果2 =Application.VLOOKUP(検索文字列,検索領域,3,FALSE)
結果3 =Application.VLOOKUP(検索文字列,検索領域,5,FALSE)

といったようなコード。
同じ検索文字列ですね。VLOOKUPは検索領域に、その検索文字列があるかどうかを
チェックしますよね。
そうすると、↑の3つのコード、同じ検索を3回行っていることになります。
取り出すものがかわるだけですよね。

こういったときには VLOOKUP を使わず、MATCH で検索し、ヒットすれば
その行の該当の列の値を取得するほうが、処理効率はいいですよね。

そういうことを言っているのだと思います。

それと、

>この数式に問題があるでしょうか?

まず、検索領域って、別ブックだったのですか?
いずれにしても、その検索領域の記述は間違っています。
アップされたコードのそれは【セルの数式】での記述スタイルですね。
VBAで使う場合は、VBAとしての記述(Rangeオブジェクトを使って記述)することが
必要です。

それと、検索文字列の商分コードですけど、検索したあとセット?
検索前にセットして検索することが必要ですよ。
・ツリー全体表示

【78031】Re:フッタのフォントサイズを取得するには
お礼  ふるった  - 16/3/8(火) 11:07 -

引用なし
パスワード
   独覚 さん

ありがとうございました!
教えて頂いた方法で対応します。
助かりました。
・ツリー全体表示

【78030】Re:フッタのフォントサイズを取得するには
発言  独覚  - 16/3/8(火) 10:51 -

引用なし
パスワード
   ▼ふるった さん:
単純に左側のフッターにシート名表示でフォントサイズを変えてある場合です。

&10&A
となっている場合。

Sub test()
  Dim a  As Integer
  
  a = Replace(Replace(Worksheets("Sheet1").PageSetup.LeftFooter, "&A", ""), "&", "")
  MsgBox a
End Sub

他の設定も行っている、などがあればそれも考慮してVBAを組み立てることになります。
・ツリー全体表示

【78029】Re:フッタのフォントサイズを取得するには
お礼  ふるった  - 16/3/8(火) 10:33 -

引用なし
パスワード
   独学さん
ありがとうございます!!
シート名→ファイル名の変更ができました。

お手数ですが、文字列操作で文字サイズ部分だけ
抜き出す方法もお教え願えないでしょうか?


▼独覚 さん:
>▼ふるった さん:
>文字列操作で文字サイズ部分だけ抜き出す方法もありますがReplace関数を使って「&A」
>(シート名)を「&F」(ファイル名)に置き換えてはどうでしょう?
>
>Sub test()
>  With Worksheets("Sheet1").PageSetup
>    .LeftFooter = Replace(.LeftFooter, "&A", "&F")
>  End With
>End Sub
>
>これだとフッター中の文字サイズ部分は変わりません。
・ツリー全体表示

【78028】Re:フッタのフォントサイズを取得するには
回答  独覚  - 16/3/8(火) 10:19 -

引用なし
パスワード
   ▼ふるった さん:
文字列操作で文字サイズ部分だけ抜き出す方法もありますがReplace関数を使って「&A」
(シート名)を「&F」(ファイル名)に置き換えてはどうでしょう?

Sub test()
  With Worksheets("Sheet1").PageSetup
    .LeftFooter = Replace(.LeftFooter, "&A", "&F")
  End With
End Sub

これだとフッター中の文字サイズ部分は変わりません。
・ツリー全体表示

【78027】Re:フッタのフォントサイズを取得するには
質問  ふるった  - 16/3/8(火) 9:59 -

引用なし
パスワード
   独覚さん

返事ありがとうございます。

一部ドキュメントのフッタにシート名が設定されている事が判明し、
ファイル名に統一することになりました。

PageSetup.LeftFooter = "&10 &F"
と指定すればフォントサイズ10で左フッタにファイル名を設定できる所までは
できているのですが、全てのドキュメントがサイズ10で固定されてしまい、
一部中央フッタと被るのです。

そこで現在のフォントサイズを維持したまま
フッタをシート名からファイル名に変更したいのです。
(シート名長さとファイル名の長さが同じため、
サイズを維持すれば被らない。
ただし、フォントサイズはドキュメント毎に異なる)

現在のフォントサイズを維持する事を目的に、現在のフォントサイズを変数に
引っ張り込みたいのですが、なにか良い案はないでしょうか?

よろしくお願い致します。
・ツリー全体表示

【78026】Re:フッタのフォントサイズを取得するには
発言  独覚  - 16/3/8(火) 9:29 -

引用なし
パスワード
   ▼ふるった さん:

以下はマクロの記録で記録したものです。
(該当部分のみ)
左側に「aaaa」と入力し、斜体で文字サイズを「10」に、真ん中に「aaa」と入力、
文字サイズを「72」に、右側に「aaaaa」と入力文字サイズは変更せず(規定)。

>  With ActiveSheet.PageSetup
>    〜
>    .LeftFooter = "&""-,斜体""&10aaaa"
>    .CenterFooter = "&72aaa"
>    .RightFooter = "aaaaa"

さらに
Sub a()
  MsgBox Worksheets("Sheet1").PageSetup.LeftFooter
  MsgBox Worksheets("Sheet1").PageSetup.CenterFooter
  MsgBox Worksheets("Sheet1").PageSetup.RightFooter
  
End Sub

&"-,斜体"&10aaaa
&72aaa
aaaaa
と表示されました。

どうも文字サイズを変更した場合はフッターに設定した文字の頭に「&サイズ」そがつくようです。
また、フッターに数字が設定された場合は
&10 123
のようにフッター文字とサイズの間にスペースが入るようです。

その他の設定などはマクロの記録で確認してみてください。

ヘルプでの説明は
>ブックまたはセクション内の左のフッターで、文字列の配置を取得または設定します。
だけでした。
・ツリー全体表示

【78025】Re:VLOOKUP関数の検索値を変数にする方法
発言  マナ  - 16/3/7(月) 20:59 -

引用なし
パスワード
   ▼真田● さん:

>エラーになった時の処理

βさんの最初の回答にあるように
WorksheetFunction.VLookUp
だと、マクロがエラーで止まっちゃうので、
Application.VLookUp
を使用しているのがポイントです。

他の掲示板ですが
ht tp://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=174828&rev=0
ここのappleさんの 2016/03/04(22:02 の説明を読んでみてください


>VBAではVLOOLUPは使わない方が良いと言ってる人がおいようですが

ごめんなさい。わたしにはわかりません。
というか、vlookupが使えるものなら積極的に使います。
vlookupに限らず、ワークシート関数を使うことにためらいはありません。

でも、先のコードが希望の動作であるなら、
やはり今回のようなケースでマクロを使う必要はないと思います。

コードを書いてみたのは、appleさんの説明を試してみただけで、
何度も申し上げていますが、わたしならC列に予めvlookupを入力しておくと思います。
・ツリー全体表示

【78024】フッタのフォントサイズを取得するには
回答  ふるった  - 16/3/7(月) 17:46 -

引用なし
パスワード
   フッタの文字をマクロで変更したいのですが、サイズの指定をせずに実行すると
標準サイズに戻ってしまい、中央のフッタと重なってしまいます。
サイズの指定をすれば良いのですが、対象のファイルが大量にあり、
それぞれ最適なサイズが異なります。

現状は最適なサイズが指定されているため、フォントサイズを維持しつつ、
文字のみ変更したいのです。
現在のフッタのフォントサイズを変数に入れ、その変数を指定して
フッタの文字を変更しようとしています。

フッタのフォントサイズを取得する方法をお教え下さい。
・ツリー全体表示

【78023】Re:VLOOKUP関数の検索値を変数にする方法
質問  真田● E-MAIL  - 16/3/7(月) 16:36 -

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

ありがとうございます。
完璧でした。

一つ質問なのですが、エラーになった時の処理は
この数式にはどの部分に入っているのでしょうか?


ついでに教えていただけたら幸いですが
VBAではVLOOLUPは使わない方が良いと言ってる人がおいようですが
同じ処理を、エラーの少ない方法で処理することは可能なのでしょうか?
・ツリー全体表示

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