2011-01-06 17 views
0

http://www.juiceanalytics.com/writing/more-on-excel-in-cell-graphingに表示されているように、セル内グラフを生成するマクロを作成しようとしています。私はまだVBAをかなり新しくしており、ワークシート関数の使用経験はほとんどありません。これは私がこれまで試みたことです。Excel VBAで相対セル参照を使用したREPT関数のループ

誰かがこの問題を解決するのに役立つなら、私はGoogleを徘徊して何も見つけることができないため、すばらしいと思います!

Sub GraphsInCell() 
Dim inCellBar As String, barData As Long 

barData = ActiveSheet.Range("E4:E" & FinalRow).Value 
'repeats "|" string based on Column E values in order to 
'produce a small in-cell bar 
inCellBar = Application.WorksheetFunction.Rept("|", barData) 

For Each i In ActiveSheet.Range("F4:F" & FinalRow) 
    With ActiveSheet.Range("F4:F" & FinalRow) 
     .Value = inCellBar 
    End With 
Next 

End Sub 

これはコードの大きな本体からの小さなスニペットですが、それ以外はすべて正常に動作します。違反コードはすべて上です。

私は基本的にREPT関数に 'number_times'(例:= REPT( "|"、number_times))として相対セルの値を使用させる必要があります。誰でもこれを行う方法や私のコードスニペットの何が間違っているのか知っていますか?

ありがとうございました。


は、背景情報として、私は見出し、「送信者」、「電子メール」、「手紙」、「ファックス」、「合計」と「グラフ」で小さなテーブルを持っています。 'Total'は3列前のSUMで、グラフにREPT関数を含めるようにします。本当に簡単なセットアップ。設定されている、それは追加の変数なしでは動作しませんようにコードのコンテキストの確認

Sub GraphsInCell() 
Dim c As Range 
Dim TheRange As Range 

Set TheRange = Range("E4:E20") 

For Each c In TheRange.Cells 
    If IsNumeric(c.Value) Then 
     c.Offset(0, 1) = String(c.Value, "|") 
    End If 
Next 
End Sub 

答えて

2

ないが、私は思う:


Lunatikの答えとディックKusleikaさんのコメントから、最終的なコードサンプルは以下の通りですこれはあなたが達成しようとしていることであり、あなたのコードを更新するための正しい方向を指すべきです。

Sub GraphsInCell() 
    Dim c As Range 
    Dim TheRange As Range 

    Set TheRange = Range("E4:E20") 

    For Each c In TheRange.Cells 
     If IsNumeric(c.Value) Then 
      c.Offset(0, 1) = WorksheetFunction.Rept("|", c.Value) 
     End If 
    Next 
End Sub 

明らかに、使用する範囲を定義するために独自の方法を使用する必要があります。

また、コードはテキストまたは空のセルを処理しますが、負の値ではエラーになります。これがどのように最良に処理されるかは、おそらくあなたのニーズに左右されます。

+0

応答Lunatikのおかげで、あなたはランタイムエラー424を提供したサンプル - オブジェクトが必要です。私はまだデバッグをカバーしていないので、それを修正する方法がわかりません。何か案は? – Kurt

+0

奇妙なことに、そのコードには何も珍しいことはなく、私が知っていることは何もオブジェクトエラーをスローするものではありません。新しいブックの空のモジュールにコードを貼り付けると同じエラーが発生しますか?依存関係はありませんので、新しいワークブックで動作するはずです。 どの行でエラーがありますか?あるいは、pコードをコンパイルしているとき、つまり行にないときはエラーです。 – Lunatik

+0

遅れて申し訳ありませんが、私の仕事のPCはちょうど死亡しました。私は個別のモジュールでスニペットをテストすることができたし、うまくいきました。私は機械が死んだが行を強調表示しなかったので、エラーの種類をテストする機会はなかった。保存していないのでもう一度書き込む必要がありますが、それまでの間は何があったのか分かりますか? – Kurt

関連する問題