2016-07-11 10 views
1

私は、1枚のシートから必要な値を選択し、それを別のシートのセルに配置するvbaスクリプトを作成しています。私の現在のスクリプトは適切な値を決定しますが、値をシートに入れることはできません。この関数は常に!Valueエラーを返します。次の抜粋の第6行のコードブレーク:VBAを使用してExcelでテキストをセルに挿入する

Function PrintTest(Cell) 
Dim iRow As Integer 
Dim bs As Worksheet 
Set bs = ThisWorkbook.Sheets("By System") 
iRow = Cell.Row 
bs.Cells(iRow, 6).Value = "Hello World" 
End Function 

は私も.Textを使用して試してみましたが、それはどちらか動作しませんでした。どんな助けもありがとう。

注:実際のスクリプトでは、テキストは別のシートからシードされ、変数に格納されます。私は多くの異なる細胞に同じテキストを得る方法を探しているわけではありません。

更新:空白のセルG4としてExcelスプレッドシートからCellが渡されています。 は4と定義されています。また、これが役立つかどうかはわかりませんが、「システムで」という名前のExcelワークシートで「PrintTest(G4)」とタイプしている関数を呼び出すことはできません

更新2:Scott Holtzmanが質問に答えましたコメントで。興味のある人は、セル内から呼び出されたUDFからセルに書き込むことはできません。修正はボタンから呼び出すことでした。

+0

あなたがエラーを取得する 'Row'の値が何であるかを役に立てば幸い? 'Cell'は定義されていないので私は尋ねます。おそらく、関数の引数に 'Cell As Range'と書かれています。また、なぜこれは機能ですか、結果を返さないのですか? –

+0

私はCell G4をCellとして渡しています。行は4として出力されます.G4は一般的な書式設定の空のセルです。これは正直なところ私の意図が途中で変わったためです。私はその偉大な習慣ではないことを知っていますが、何も返さない関数はまだ動作するはずです。右?また、Cell As Rangeは問題を解決しませんでした。助けてくれてありがとう! – Dan

+0

私はちょうどテストし、それは私にとって完璧に動作します。またScott氏は変数名 'Row'について良い点を挙げました。 'Row'はExcelで予約されているキーワードなので、これを' iRow'などに変更します。 –

答えて

0

Cells(行、列)でセル値を設定します.Value = "Some text" シートがアクティブな場合は、アドレスを完全修飾する必要はありません。シートをアクティブにすると、常にセルを使用できます。別のシートからデータを取得する必要がある場合は、シート名(「マイシート」)で住所を修飾する必要があります。セル(行、列)。値。

また、コードにはRow = Cell.Rowが含まれていますが、どのセルがアクティブであるかはわかりません。その場合、あなたは何らかの任意の価値を得ています。おそらくあなたのエラーがどこにあるのでしょうか。 Cell.Row = ?????また、行は優れた単語です。あなたの変数にintRowのようなものを使用してください。たとえば、intRow = 25です。セル(intRow、6).Value = "My Cell"。カーソルがセル上にある場合、intRow = ActiveCell.Rowと言うことができます。

このような問題が発生した場合、コードにブレークポイントを設定します(この例では、Setステートメント)。次にコードを実行します。 set文で停止すると、F8キーを押して一度に1行ずつステップし、変数を調べることができます。次にRowが本当に数字かゴミだけかどうかを確認します。

+0

ありがとうScott、私はより詳細に質問を更新しました。これはスクリプトの一部なので、完全な場所が必要です。2つの異なるシートから描画する必要があります。このスクリプトは約70回実行されるため、ウィンドウが常に切り替わることは望ましくありません。私はCell G4を渡しています。関数を呼び出すと、 'Row'は4と定義されています – Dan

関連する問題