Excel VBA質問箱 IV

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

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


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

【78246】Excel2013グラフの操作
質問  North  - 16/6/7(火) 16:27 -

引用なし
パスワード
   Excel2013です。
積み上げ縦棒グラフ(データテーブル有)のプロットエリアの位置を操作したいと考えています。

以下のようにした場合
Dim sSg As Single
sSg = ActiveSheet.ChartObjects(1).Chart.PlotArea.Left
ActiveSheet.ChartObjects(1).Chart.PlotArea.Left = sSg - 5
意図した結果にならず、グラフ全体のレイアウトも崩れてしまいます。

また、いったんデータテーブルなしとしても
 ActiveSheet.ChartObjects(1).Chart.SetElement (msoElementDataTableNone)
 sSg = ActiveSheet.ChartObjects(1).Chart.PlotArea.Left
 ActiveSheet.ChartObjects(1).Chart.PlotArea.Left = sSg - 5
 ActiveSheet.ChartObjects(1).Chart.SetElement (msoElementDataTableShow)
同様に意図した結果にならず、グラフのレイアウトも崩れてしまいます。

レイアウトを崩さずに、プロットエリアの位置を正しく変更するための、ご助言いただきたくお願いします。
・ツリー全体表示

【78245】Re:下一桁を1あげるマクロ
お礼  えり  - 16/6/7(火) 16:20 -

引用なし
パスワード
   みなさまありがとうございます。
返信が遅くなり申し訳ありません。
いただいたものを試したら上手くいきました。
作業効率が格段にあがります!
本当にありがとうございました!
・ツリー全体表示

【78244】Re:2つのセルをマッチングして、同じ文字...
発言  β  - 16/6/7(火) 13:49 -

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

特に日本語というものは、その中を単語に分解するということが
もう、大変というか、完全なしょりというのは不可能に近いといわれていて
AIのような処理が必要になってくるようですね。

ht p://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1168864501

ただ(私は実際には使ったことはないのですが)Ms.Word の機能をVBAから呼び出して
使うことができるようです。
(ある程度までしかできないとは思いますが)

ht p://upa-pc.blogspot.jp/2015/04/word-vba-sentence-to-words.html

単語に分解してしまえば、あとはなんとでもなりますよね。

>
・ツリー全体表示

【78243】2つのセルをマッチングして、同じ文字列...
質問  sasa  - 16/6/7(火) 11:03 -

引用なし
パスワード
   2つのセルをマッチングして、同じ文字列に色を塗りたい

初めまして。
表題にある通り、2つのセルをマッチングして、
同じ単語があれば、その単語に色を塗るマクロを作成したいと考えています。

例としましては、

 A1セル 青森県産りんご60kg詰め合わせ    
 B1セル 青森県産の美味しいりんごです。60kgと納得の大容量です!産地直送です!

上記のような場合、B1セルの「青森県産」「りんご」「60kg」の部分を
赤字に塗るようなものです。

人の目で見た場合は、
A1セルは「青森県産」「りんご」「60kg」「詰め合わせ」という意味の、
4つの単語から形成されているんだな、というのが簡単に分かりますが、
マクロ側にしてみれば、単語という概念がそもそもありませんよね…?

だからといって、A1セルを1文字ずつ取り出してマッチングするのでは、
不要な文字(例でいう、B1セルの産地直送の「産」)も塗られてしまいます。


なので、そもそもこういった事が可能なのかどうか、
100%完璧ではなくても、出来る限り希望に見合った動作を実現するには、
どのようにするのが良いのか…。

マナーとして、少しでも何らかのコードを提示するべきであるのは重々承知しておりますが、
どういった手段を取ればいいのか、まったく思いつかない状態です…。

よろしければアドバイスを頂けますと幸いです。

どうぞよろしくお願いいたします。
・ツリー全体表示

【78242】Re:実行時エラー13 型が一致しません
発言  独覚  - 16/6/3(金) 15:12 -

引用なし
パスワード
   ▼助けて さん:
もしかして「数式」-「計算方法」の計算方法の設定が手動になっていませんか?

もし、手動になっているとコピー時に最初のセルの値がそのまま表示されるようになり
式を入力しなおすとその時点で計算しなおします。

計算方法の設定を自動にするとコピー時点で計算されるようになります。
・ツリー全体表示

【78241】Re:パワーポイントマクロとの連携
お礼  りった  - 16/6/3(金) 9:57 -

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

> ひとつは、パワーポイントからエクセルを起動して操作してやることです。
> パワーポイントやワードのVBAからエクセルVBAを操作するには、
> VBEの画面で「ツール」→「参照設定」でMicrosoft Excel 14.0 Object Library
> (数字はオフィスのバージョンによって異なります)にチェックを入れれば良いいです。

有難うございます。やってみます。

> どう考えたって、それは差込印刷の典型であって、
> そうするのが一番簡単なわけです。

そうなんでしょうね。(やったことは無いですが)

> プレゼンテーションでもないのに PowerPointを送りつけるほうが
> よほどどうかしてます。

同感です。

> そうしたことを求める人に注意してあげるべきです。

注意しても通る見込みが無く、関係が悪化するだけなのでしません。提出先は別会社ですし。
そもそも、「マニュアルでやるのが本来の有り方で、自動化してサボろうなんてけしからん」
って文化(宗教?)なので、相談するだけで危険なのです。
・ツリー全体表示

【78240】Re:FindとFindNextについて
お礼  SHIIN  - 16/6/3(金) 8:03 -

引用なし
パスワード
   ▼β さん:
>▼SHIIN さん:
>
>学校のほうに書きこんでおきました。

申し訳ありません。
ありがとうございます。
・ツリー全体表示

【78239】Re:FindとFindNextについて
発言  β  - 16/6/3(金) 7:56 -

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

学校のほうに書きこんでおきました。
・ツリー全体表示

【78238】FindとFindNextについて
質問  SHIIN  - 16/6/3(金) 1:56 -

引用なし
パスワード
   For i = 2 To Lastrow1 ※Sheet1の最終行
Set fnd =Sheet2.Colmuns("N").Find(Sheet1.Cells(i,4))
でSheet2のN列をSheet1の入っている値で検索すると思うのですが、
その後、If文でNothingをどうするかという処理を入れるのですが、
FindとFindNextの仕様に関して、「検索の終端を検知できずループしてしまう」
というのを聞き、その場合、If文に入る前にFindの部分で永久ループしてしまう
気がしたのですが、実際はそうはなりませんでした。
これは仕様なのでしょうか?
・ツリー全体表示

【78237】Re:パワーポイントマクロとの連携
発言  γ  - 16/6/2(木) 20:32 -

引用なし
パスワード
   # 自宅からしかコメントできませんので、遅くなりました。

> パワーポイント側からエクセルマクロを呼べるのでしょうか?
> それが可能なら、件数取得関数と、n件目取得関数を作ればいいのかなと思いますが、
> byRefの引数は使えるのでしょうか?
> 例:public sub getListData(byVal iNo as long, byRef sItemNo as String, byRef sAddress as String)

既にコメントがありましたように、Office familyなので、お互いのオブジェクトを操作することが可能です。
リストを配列によみこんで、それを元に、繰り返し処理をすればいいだけです。

> 最悪、Excelでパワーポイントマクロのコードを作って、VBA エディタに貼り付けますが、それをやってしまうと他の人に作業を任せられなくなります。

え?じゃあ、何を質問しているのですか?

----------
> > Powerpointでなければならない必然性を説明してください。
> フォーマットがPowerpointで提供され、Powerpointファイルを提出する必要が有るからです。
回答ありがとうございました。
でもそれは質問するうえでの成り行きでしょうね。
そう言わないと質問にならないからでしょ?

だって、どう考えたって、それは差込印刷の典型であって、
そうするのが一番簡単なわけです。
プレゼンテーションでもないのに PowerPointを送りつけるほうが
よほどどうかしてます。そうしたことを求める人に注意してあげるべきです。

ですので、私は
PowerPointの操作マクロを提示しません。
まあ、できないと解釈して貰って結構です。

どなたかが回答を寄せていただけるかもしれません。(一度発言されてその後消されたので)
期待してお待ち下さい。
・ツリー全体表示

【78236】Re:パワーポイントマクロとの連携
回答  亀マスター  - 16/6/2(木) 20:09 -

引用なし
パスワード
   パワーポイントのフォーマットがどのようなものかよくわかってないのですが、エクセルのデータを取り込みたいということであれば方法はあります。

ひとつは、パワーポイントからエクセルを起動して操作してやることです。
パワーポイントやワードのVBAからエクセルVBAを操作するには、VBEの画面で「ツール」→「参照設定」でMicrosoft Excel 14.0 Object Library(数字はオフィスのバージョンによって異なります)にチェックを入れれば良いいです。

この状態で、
Dim Xls As New Excel.Application
とすれば、Xlsを使ってエクセルを操作できます。

ただし、外部へ配布するなら、参照設定がうまくいかないことがあるので、参照設定は使わず、
Dim Xls As Object
Set Xls = CreateObject("Excel.Application")
とした方がいいでしょう。


もう一つの方法は、ADO接続でエクセルファイルをデータベースファイルとして扱うことです。これも参照設定を使う方法と使わない方法がありますが、私はADOを使ったことがないので、詳しくはわかりません。
・ツリー全体表示

【78235】Re:パワーポイントマクロとの連携
発言  りった  - 16/6/2(木) 11:26 -

引用なし
パスワード
   回答有難うございます。

> Powerpointでなければならない必然性を説明してください。
フォーマットがPowerpointで提供され、Powerpointファイルを提出する必要が有るからです。
Wordでの提出は、お願いしてもまず通りません。

現状、Wordの差し込み印刷も分かってません。調べたらわかるのかもしれませんが。
・ツリー全体表示

【78234】Re:パワーポイントマクロとの連携
発言  γ  - 16/6/1(水) 20:22 -

引用なし
パスワード
   詳しく聞かないといけないのかもしれませんが、
普通は Wordの「差し込み印刷」でする作業ではないですか?
powerpointマクロも書けるだろうが、
Wordのそれなら、ツールになっているからマクロすら不要です。
一度調べてみてはどうでしょうか。

もし勘違いなら、Powerpointでなければならない必然性を説明してください。
・ツリー全体表示

【78233】Re:ファイルの削除
回答  りった  - 16/6/1(水) 19:12 -

引用なし
パスワード
   こういうことですか?

Sub test()
  Dim sFullPath As String
  Dim iWbCnt As Long
  Dim wb As Workbook
  Dim wbDel As Workbook

  iWbCnt = 0
  For Each wb In Workbooks   ' 開いてる全てのワークブックについて処理する
    Select Case wb.Name   ' ワークブックの名前で分岐
    Case "PERSONAL.XLSB"   ' 個人用マクロブックの場合は処理無し
    Case "PERSONAL.XLS"   ' 個人用マクロブックの場合は処理無し(Excel2007以上)
    Case ThisWorkbook.Name  ' 本ファイルと同じ名前の場合
      iWbCnt = iWbCnt + 1
    Case Else
      iWbCnt = iWbCnt + 1
      sFullPath = wb.Path & "\" & wb.Name ' 削除するためにフルパス保持
      Set wbDel = wb
    End Select
  Next

  If iWbCnt <> 2 Then
    MsgBox "ファイルを二つだけ開いた状態で実行してください。"
    Exit Sub
  End If

  '#######################################
  Range("D9:G10").Select
  With Selection.Font
    .Name = "MS P明朝"
    .Size = 14
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
  End With
  Range("D9:G10").Select
  '#######################################

  wbDel.Close False ' ファイルを閉じる
  Kill sFullPath   ' ファイルを削除する

End Sub
・ツリー全体表示

【78232】Re:下一桁を1あげるマクロ
発言  β  - 16/6/1(水) 16:22 -

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

>=LEFT(A1,LEN(A1)-1)&VALUE(RIGHT(A1,1))+1
>これだと
>123499 --> 1234910
>になってしまいませんか?

ひゃぁ!おっしゃる通りです。(汗)

要は、繰り上がりをするのかしないのかを質問したんですが
その際に不慣れな数式を使ってしまって墓穴を掘りましたね・・・・
・ツリー全体表示

【78231】Re:下一桁を1あげるマクロ
回答  りった  - 16/6/1(水) 14:39 -

引用なし
パスワード
   数字として計算してからゼロ埋めするのはどうでしょう?

Sub test()
  Dim r As Range
  For Each r In Selection
    r = Right("000000" & (r + 1), 6)
  Next
End Sub


▼えり さん:
>001254
>004526
>009503
>   ・
>   ・
>   ・
>  続く
>
>このように1つの列に数字が並んでいる
>全てのセルは「文字列になってれいる
>
>数字の下1桁に&#10133;1するしたい
>001255
>004527
>009504
>どのようなマクロを組めば良いでしょうか。
>ご教授下さい。
・ツリー全体表示

【78230】パワーポイントマクロとの連携
質問  りった  - 16/6/1(水) 14:30 -

引用なし
パスワード
         お世話になります。

リストと送り状フォーマットを元に、送り状を作りたいです。
・リストはExcelで、送り先やItemNo等が記載されています。
・送り状フォーマットはパワーポイントで、送り先やItemNo等の記入欄が有ります。
・送り状のファイルは一つで、中に100個ぐらいの送り状が入ります。

パワーポイントマクロはいまいち分かりませんが、スライドをコピーして新しいファイルを作ることは出来ました。
文字を変えるのも自力解決できるでしょう。(多分)

Excelマクロとパワーポイントマクロをどう連携させたら良いでしょうか?
Excelマクロからパワーポイントマクロの関数を呼べるのでしょうか?
でもその場合関数引数がものすごい数になってしまいますよね?

パワーポイント側からエクセルマクロを呼べるのでしょうか?
それが可能なら、件数取得関数と、n件目取得関数を作ればいいのかなと思いますが、
byRefの引数は使えるのでしょうか?
例:public sub getListData(byVal iNo as long, byRef sItemNo as String, byRef sAddress as String)

最悪、Excelでパワーポイントマクロのコードを作って、VBA エディタに貼り付けますが、それをやってしまうと他の人に作業を任せられなくなります。

尚、送り状フォーマットをExcelに取り込んで、Excelマクロ(よく使ってます)で作ろうとも思ったのですが、
パワーポイントファイル自体も提出必要なので、その方法は出来ません。
・ツリー全体表示

【78229】Re:下一桁を1あげるマクロ
発言  独覚  - 16/6/1(水) 14:25 -

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

=LEFT(A1,LEN(A1)-1)&VALUE(RIGHT(A1,1))+1
これだと
123499 --> 1234910
になってしまいませんか?

=LEFT(A1,LEN(A1)-1)&MOD(RIGHT(A1,1)+1,10)

=LEFT(A1,LEN(A1)-1)&RIGHT(RIGHT(A1,1)+1,1)
でどうでしょうか?
・ツリー全体表示

【78228】Re:WorksheetFunction
発言  γ  - 16/5/31(火) 22:38 -

引用なし
パスワード
   金曜の投稿からだいぶ経ちました。
どうして質問したまま放置するんでしょうか?
他の質問者さんは、回答があったら返事されていますよ。

忙しいなら忙しいなりに、少なくとも、
"拝見しました。時間をかけて考えてみます"の
ひと言くらい返すのが、人としての礼儀じゃないかな。

それほど忙しいのなら、
もっと適切なタイミングで質問したらどうですか?
コメントするのはこちらの勝手で、頼んだわけではない、
確かにその通りだが、それは放置して良いことにはならない。
そうは思わないか?

もっとたくさんの回答が来るまで待ってからまとめて返事をしよう、
ということなのか?
勘違いによるミスの話に、
それほどたくさんの回答が寄せられるはずもない。一人で十分だ。

回答者にとって、質問者がだんまりを決め込み、
回答が棚晒しにされることほど不快なことはない。
他の方のやりとりの仕方を学習してから質問して欲しい。
・ツリー全体表示

【78226】Re:下一桁を1あげるマクロ
発言  β  - 16/5/31(火) 17:08 -

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

最後の1桁のみを1アップするのか
( 123499 --> 123490 )
それにともなって全体を変えるのか
( 123499 --> 123500 )

後者なら、どういうことはないはずですので前者ですか?
つまり 数式でいえば A列に値があるとして
B1 に =LEFT(A1,LEN(A1)-1)&VALUE(RIGHT(A1,1))+1
これを下にフィルコピーしたような結果をマクロで作成したいということですか?

で、元の値を置換ですか?
それとも別の列に表示ですか?
・ツリー全体表示

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