2016-10-10 19 views
0

私はテーブルを持つ複数のスライドを持っている、各テーブルは3列を持っている、最後の列は "参照値"であり、プレゼンテーション中に非表示にしてボタンやハイパーリンクを押すだけで、各行は個別に私はそれが可能だと私は本当にコーディングで新しいので、私はテーブルの背景色である白(テーブルの背景色)から赤にセルのテキスト形式を変更することによってそれを行うことができたと思うが、私は一度にすべてのテーブルのためにそれを行うことができます私はそれらのそれぞれについて個別の値が必要です。 (私は自分自身を明確にしたいと思う)。これは私がこれまでにやっていることです:Powerpointのテーブルからデータを表示/非表示にする方法は?

Sub format() 

Dim s As Slide 
Dim oSh As Shape 
Dim oTbl As Table 


For Each s In ActivePresentation.Slides 

For Each oSh In s.Shapes 
    If oSh.HasTable Then 
     Set oTbl = oSh.Table 

     With oTbl.Cell(2, 3).Shape.TextFrame.TextRange 
        .Text = "4500-9000" 
        .Font.Size = 12 
        .Font.Color = vbRed 
       End With 
    End If 
Next 
Next s 
End Sub 

をしかし、これは彼らのすべてが大切異なる持っているので、私は、それが特定のテーブル内の特定の細胞を一つずつ変更したい、私が持っているすべてのテーブルの上に同じセルを変更します。私はアニメーションでこれを行うことができることを知っていますが、私はむしろこのようにしたいと思います。

EDIT:ボタンを押す代わりに、ポインタを空のセルに重ねることでデータを取得し、カーソルをセルの上に置いたときに再び非表示にするとよいでしょう。

スライドショー中にプレゼンテーションに何か変更を加えても、最後に変更が残っています。つまり、一度しか動作しない場合、すべての値を修正して再度非表示にする必要があります。終了時にプレゼンテーション中に行われた変更を復元する方法はありますか?

答えて

0

あなたのサブをADPT、あなたがこのように処理するテーブルとセルへの参照を渡すことにより、別のプロシージャから呼び出すことができます。たとえば

Sub FormatTableCell(oTbl As Shape, lRow As Long, lCol As Long) 

    With oTbl.Cell(lRow, lCol).Shape.TextFrame.TextRange 
    .Text = "4500-9000" 
    .Font.Size = 12 
    .Font.Color = vbRed 
    End With 

End Sub 

With ActivePresentation  
    FormatTableCell .Slides(1).Shapes("MyTable"), lRow:=1, lCol:=1 
End With 

について上にカーソルを置き、カーソルを移動すると、これはPowerPointのトリッキーな側面です。形状上にマウスを乗せたときにコードを実行するトリガーがありますが、形状の上にホバーするトリガーはありません。後者を実現するには、スライドの背面レイヤーに透明な四角形を配置し、マウスの上にマウスを置いてホバーアウトトリガーをスプーフィングすることができます。あなたのコードを書くと、このような署名であなたのVBAプロシージャをトリガする機能オーバー挿入/アクション/マウスを使用:この方法は、形状のみを渡すこと

Public Sub FormatThisTable(oTbl As Shape) 

注意(あなたのテーブルを大文字と小文字の区別はありません)。私が見ることができる唯一の方法は、非常に複雑なWindows APIを多く使用して、テーブルの画面上の座標に相対的なマウスカーソルの位置を検出することです。

別のアプローチでは、表を別々の図形のセットにグループ化したり、上記のマウスのイン/アウト技術を使用して可視性のプロパティを表示/非表示、管理する必要があるセルごとにカバー形状を作成できます。

http://www.pptfaq.com/FAQ00004_Make_your_VBA_code_in_PowerPoint_respond_to_events.htm

+0

私はそれを動作させることができません – acm0420

+0

エラーが表示されます "シェイプコレクションにMyテーブルが見つかりません" – acm0420

+0

私が与えた例では、コードで識別されるようにテーブルの名前を付けたと仮定します。これを行うには、Alt + F10を押して選択ペインを開きます。テーブルを選択し、選択ペインでコードと同じ名前を設定します。 "MyTable"(またはあなたが望むもの)。シェイプは名前プロパティまたはインデックスで参照できます。名前を使用する際の問題は、ユーザーがそれを変更して100%ばかげたことではないということです。あなたはコードを介してのみアクセス可能なタグを使用することができますが、もう少し複雑です。 –

0

ステップ1 起動PowerPoint、およびオープン:

最後の点について、あなたはクラスモジュールのコードと、この方法をお見せするために良い記事を必要とするアプリケーションレベルのイベントを使用する必要があります非表示にする行を含むPPTXファイル。画面の左側にあるスライドパネルで適切なスライドをクリックします。 ステップ2 スライド上のスプレッドシートをダブルクリックすると、そのスプレッドシートを編集できます。非表示にする行を選択します。 [ホーム]タブをクリックし、[セル]セクションを探します。 "フォーマット"オプションをクリックすると、利用可能な機能のリストが表示されます。 ステップ3 「表示」セクションの「&表示の非表示」の上にポインタを置きます。選択した行を非表示にするには、[行を非表示]オプションをクリックします。 PowerPointスライドに戻るには、スプレッドシートの外側をクリックします。

関連する問題