Excel VBA質問箱 IV

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

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


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

【79901】Re:シート内にセル参照があるか調べる方法
質問  ペーターパン  - 18/5/21(月) 12:24 -

引用なし
パスワード
   ▼マナ さん:
>▼ペーターパン さん:
>>
>>具体的にはシート全体でセル参照を禁止したいです。
>
>数式入力を禁止というわけではない?
>
>例えば、
>=A1*1
>のようなのはOKでしょうか。

マナさん

お返事が遅くなり申し訳ありません。
数式入力はOKです。
セル参照のみを禁止したいです。
・ツリー全体表示

【79900】Re:PivotCache.Create で type mismatch...
お礼  hoyahoyamachine  - 18/5/21(月) 12:10 -

引用なし
パスワード
   ▼マナ さん:
>▼hoyahoyamachine さん:
>
>ht tps://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/pivotcaches-create-method-excel?f=255&MSPPError=-2147217396
>
>ここでは、
>
>> 文字列を使用してブック、ワークシート、およびセル範囲を指定するか、
>> 名前付き範囲を設定して名前を文字列として渡すことをお勧めします。
>> Range オブジェクトを渡すと、"型の不一致" エラーが予期せず発生します。
>
>としか記載されていませんが
>検索すると、↓を指定している事例ばかりでしたので、
>ReferenceStyle:=xlR1C1
>
>もし、うまくいかない場合は、試してみてください。

たいへんご丁寧なアドバイスありがとうございました。

ピボットテーブル作成のマクロ記録を眺めると、SourceTypeとTableDestinationは外部参照かつR1C1形式の文字列で記録されおり、
貴方アドバイスの二条件を追加した以下のコードでうまくいきました。

Set pvtCache = Workbooks("RSB.xlsm").PivotCaches.Create( _
          SourceType:=xlDatabase, _
          SourceData:=DBTop.CurrentRegion.Address(External:=True, ReferenceStyle:=xlR1C1), _
          Version:=xlPivotTableVersion12)

Set pvtTbl = pvtCache.CreatePivotTable( _
          TableDestination:=tblTop.Address(External:=True, ReferenceStyle:=xlR1C1), _
          TableName:="PReport", _
          DefaultVersion:=xlPivotTableVersion12)

他のコード上にあるメッソドでも範囲指定のパラメータにRangeオブジェクトを書いていて、本来エラーだけどもエラーが発生していない場合があるかもしれないと、ナニゲに思った次第です。
・ツリー全体表示

【79899】Re:PivotCache.Create で type mismatch...
発言  マナ  - 18/5/20(日) 10:08 -

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

ht tps://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/pivotcaches-create-method-excel?f=255&MSPPError=-2147217396

ここでは、

> 文字列を使用してブック、ワークシート、およびセル範囲を指定するか、
> 名前付き範囲を設定して名前を文字列として渡すことをお勧めします。
> Range オブジェクトを渡すと、"型の不一致" エラーが予期せず発生します。

としか記載されていませんが
検索すると、↓を指定している事例ばかりでしたので、
ReferenceStyle:=xlR1C1

もし、うまくいかない場合は、試してみてください。
・ツリー全体表示

【79898】Re:PivotCache.Create で type mismatch...
発言  マナ  - 18/5/19(土) 21:54 -

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

>SourceDataの引数に(Range).Addressを追加しました。

external:=true が必要では?
・ツリー全体表示

【79897】Re:PivotCache.Create で type mismatch...
発言  hoyahoyamachine  - 18/5/19(土) 20:21 -

引用なし
パスワード
   ▼γ さん:
>ヘルプを確認して
>他の定数がないか確認してください。
>私のはExcel10なので試せません。

ご教示ありがとうございます。
いまほど SourceDataの引数に .Addressを書き加え担当からの返信を待っているところです。
進展あれば一連のスレッドにご報告いたします。
・ツリー全体表示

【79896】Re:PivotCache.Create で type mismatch...
発言  hoyahoyamachine  - 18/5/19(土) 19:53 -

引用なし
パスワード
   ▼マナ さん:
>▼hoyahoyamachine さん:
>
>たぶん、
>
>ht tp://www.excel.studio-kazu.jp/kw/20180116191515.html

参考になりました。
SourceDataの引数に(Range).Addressを追加しました。

当然のことながら手元のExcel2016ではエラー発生はなかったので、問題のあったPC(Excel2013)で確認するよう依頼します。

引き続き後程報告いたします。
・ツリー全体表示

【79895】Re:PivotCache.Create で type mismatch...
発言  マナ  - 18/5/19(土) 18:59 -

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

たぶん、

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

【79894】Re:PivotCache.Create で type mismatch...
発言  γ  - 18/5/19(土) 18:19 -

引用なし
パスワード
   ヘルプを確認して
他の定数がないか確認してください。
私のはExcel10なので試せません。
・ツリー全体表示

【79893】Re:PivotCache.Create で type mismatch...
発言  hoyahoyamachine  - 18/5/19(土) 17:49 -

引用なし
パスワード
   ▼γ さん:
>Version:=xlPivotTableVersion12
>のあたりでしょうか。
>xlPivotTableVersion14
>を試してみてはいかがでしょう。

さっそくの回答ありがとうございます。
試してみましたが同じ結果でした。

いま海外でそろそろ対象PCから離れることになります。
引き続きご教示いただいた場合には返信が遅れますことをお含みおきください。

帰国してExcel2013が会社内にあれば試してみようと思います。
・ツリー全体表示

【79892】Re:PivotCache.Create で type mismatch...
発言  γ  - 18/5/19(土) 17:35 -

引用なし
パスワード
   Version:=xlPivotTableVersion12
のあたりでしょうか。
xlPivotTableVersion14
を試してみてはいかがでしょう。
・ツリー全体表示

【79891】PivotCache.Create で type mismatch エ...
質問  hoyahoyamachine  - 18/5/19(土) 17:07 -

引用なし
パスワード
   いろいろ調べているのですが、手掛かりがつかめません。初めての質問ですがよろしくお願いいたします。

下記コードのPivotCache.Createで Runtime error '13' type mismatch が返ります。
Excel2013英語版(Win7 32bit)、1台のPCで発生し、同2016(Win10 64bit)日本語版の2台のPCでは発生しません。
アドイン上にコードはあり、ブックRSB.xlsm上のシートDBのレコード数が変化するデータベースからシートPRへピボットテーブルを出力する手順です。

Sub SampleCode()
Dim pvtCache As PivotCache
Dim pvtTbl As PivotTable
Dim DBTop As Range
Dim tblTop As Range

Set DBTop = Workbooks("RSB.xlsm").Sheets("DB").Range("A1")
Set tblTop = Workbooks("RSB.xlsm").Sheets("PR").Range("A1")

Workbooks("RSB.xlsm").Sheets("PR").Cells.Delete

Set pvtCache = Workbooks("RSB.xlsm").PivotCaches.Create( _
          SourceType:=xlDatabase, _
          SourceData:=DBTop.CurrentRegion, _
          Version:=xlPivotTableVersion12)

Set pvtTbl = pvtCache.CreatePivotTable( _
          TableDestination:=tblTop, _
          TableName:="PReport", _
          DefaultVersion:=xlPivotTableVersion12)
....
End Sub

原因の絞り込みに関するヒントなどのご教示をいただけると助かります。
・ツリー全体表示

【79890】Re:画像付データベース
回答  γ  - 18/5/19(土) 11:34 -

引用なし
パスワード
   コメントにはリンク貼り付けのようなことができないとすれば、
画像を直接、リンク貼り付けして、
そのVisibleプロパティをコントロールしたらどうですか?

SelectionChangeプロシージャの中で、
それぞれの画像について、
・Tagetが画像のTopLeftCellとBottomRightCellで決まる範囲と
 共通領域をもつなら、画像のVisibleプロパティを True(つまり表示)
・そうでないなら、画像のVisibleプロパティを False(つまり非表示)
という処理を実行します。

手元で実行していないので、
・所要時間
・使い勝手
はわかりませんが、
ひとつのアイデアとして検討してみてはどうでしょうか。


追記:
(1)セル選択のつど処理は動きますが、さほど重い処理になる予感はしません。
(2)多数のシートに分かれているなら、Workbook_SheetSelectionChangeを
  使うことになるでしょう。
・ツリー全体表示

【79889】画像付データベース
質問  そば  - 18/5/18(金) 23:50 -

引用なし
パスワード
   簡単なデータベースをつくりました。
レコード一つ一つに画像を付けたいと思いまして、
コメント欄に画像を貼りつける機能をマクロで加えました。
こうすればカーソルを持っていくだけで、画像が表示されるからです。

その機能自体はうまくいったのですが、
レコードが3000を超えてくると、
データが重くなってしまい、
開くまでに5分以上かかるようになってしまいました。

画像データはjpegで、ファイルサイズも小さくしているつもりです。

画像データを別フォルダに保存して、
リンクを貼り付ければ一応解決するのですが、
カーソルを持っていくだけで、画像が表示されるようにしたいです。

なにかいいアイデアがあるでしょうか?
よろしくお願いします。
・ツリー全体表示

【79888】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/18(金) 19:49 -

引用なし
パスワード
   ▼ペーターパン さん:
>
>具体的にはシート全体でセル参照を禁止したいです。

数式入力を禁止というわけではない?

例えば、
=A1*1
のようなのはOKでしょうか。
・ツリー全体表示

【79887】Re:シート内にセル参照があるか調べる方法
質問  ペーターパン E-MAIL  - 18/5/18(金) 19:06 -

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

回答ありがとうございます。
具体的にはシート全体でセル参照を禁止したいです。

>▼ペーターパン さん:
>
>この辺でしょうか?
>ht tp://excelwork.info/excel/dependents/
>ht tp://excelwork.info/excel/precedents/
>
>もう少し何をしたいか具体的なほうが適切な回答がもらえるかも。
・ツリー全体表示

【79886】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/18(金) 18:57 -

引用なし
パスワード
   ▼ペーターパン さん:

この辺でしょうか?
ht tp://excelwork.info/excel/dependents/
ht tp://excelwork.info/excel/precedents/

もう少し何をしたいか具体的なほうが適切な回答がもらえるかも。
・ツリー全体表示

【79885】シート内にセル参照があるか調べる方法
質問  ペーターパン  - 18/5/18(金) 14:20 -

引用なし
パスワード
   シートの中に「=B28」のようにセルを参照しているセルがある場合、その「=B28」と入力しているセルの位置を取得したいです。
どのような方法があるでしょうか?

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

【79884】Re:keycodeのエビデンスが取りたい
回答  よろずや  - 18/5/18(金) 5:57 -

引用なし
パスワード
   ▼まぎ さん:
>ただ、いまだにKeyCode定数がどこのプロシージャ?で処理されているのかわかりません。

どこを探しても見つかりませんよ。
システムが全部やってくれます。
その処理の途中で、ユーザープログラムで細工したければどうぞという感じで
システムがデータを渡してくれるのがイベントプロシージャです。
>MonthTextBox_KeyDown
から抜けた所でシステムが文字コードに変換して、
>MonthTextBox_KeyPress
でまたユーザプログラムに「結果」を渡してくれます。
そこから抜けるとシステムがまた文字列に変換して、
>MonthTextBox_Change
でまたユーザープログラムに結果を渡してくれます。

というように、肝心な処理は全部システムがやってくれています。
イベントプロシージャは、その結果を受け取っているだけです。
・ツリー全体表示

【79883】Re:keycodeのエビデンスが取りたい
質問  まぎ  - 18/5/18(金) 1:16 -

引用なし
パスワード
   ▼よろずや さん:
>ht tps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1136824631

回答ありがとうございます。
回答者さんのURLで大まかににイメージができました。

ただ、いまだにKeyCode定数がどこのプロシージャ?で処理されているのかわかりません。
Private Sub MonthTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

if KeyCode = 49

  debug.print "1キー入力されたよ"

End if

End sub

このような感じで処理を走らせた時、この「KeyCode」に値49が代入されていると思うのですが、
こちらのkeyCodeはどこのなんていうプロシージャ?に値が返され
処理が走っているのでしょうか?
初心者ですみませんがご回答頂けると幸いです。
・ツリー全体表示

【79882】Re:keycodeのエビデンスが取りたい
回答  よろずや  - 18/5/17(木) 19:00 -

引用なし
パスワード
   ht tps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1136824631
・ツリー全体表示

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