人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAで、Rangeのデバックプリント方法について質問です。

Rangeのデータをデバックプリントする方法はいくつかありますが、
一番最良の方法を教えて下さい。
カンマ区切りで2次元配列を表示できるような感じになるかと思います。

よろしくお願いします。

●質問者: pochi1234
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●50ポイント ベストアンサー

Sub main()
 Dim r As Excel.Range
 Set r = Range("A1:B3")
 Call d_print(r)
End Sub

Sub d_print(r As Range)
 Dim i, k As Long
 For i = 1 To r.Rows.Count
 Debug.Print r.Cells(i, 1).Value;
 For k = 2 To r.Columns.Count
 Debug.Print "," & r(i, k).Value;
 Next k
 Debug.Print ""
 Next i
End Sub

一塊の文字列にしてから出力するのではなく、
セル1つ1つを出力するほうが、
トラブル発生箇所を特定しやすくなるため上記のようにしてあります


うぃんどさんのコメント
上では変数に入れてから投げてますけど、 いきなりrangeを投げてもいいですよ >|vb| Call d_print(Range("A1:C3")) ||< あとは好みで

pochi1234さんのコメント
Msgboxを使用してRange内容を行列で表示する方法がほしかったです。 質問が明確ではなくてすみません。 ですが ご回答頂きありがとうございます。

うぃんどさんのコメント
>Msgboxを使用してRange内容を行列で表示する方法がほしかったです 後だしされても、困るのですが・・・ 次からは先に言ってくださいね 下記が例です >|vb| Sub main() Dim r As Excel.Range Set r = Range("A1:B3") Call d_print(r) End Sub Sub d_print(r As Range) Dim i, k As Long, s As String s = "" For i = 1 To r.Rows.Count s = s & r.Cells(i, 1).Value For k = 2 To r.Columns.Count s = s & " , " & r(i, k).Value Next k s = s & vbCrLf Next i MsgBox s End Sub ||<

2 ● きゃづみぃ
●50ポイント

まず VBAの画面で

[参照設定]ダイアログボックスの[参照]ボタンをクリックして、「C:\Windows\System32\FM20.DLL」もしくは「C:\WINNT\Sytem32\FM20.DLL」(OSによって異なります)を選択します。


これは クリップボードを取得するための関数を使えるようにするためです。
http://www.moug.net/tech/exvba/0150091.html

Sub test()
Call dprint(Range("C3:E5"))

End Sub

Sub dprint(rg As Range)
 rg.Copy
 
 Dim TempObject As MSForms.DataObject
 
 
 Set TempObject = New MSForms.DataObject
 
 With TempObject
 .GetFromClipboard
 Debug.Print .GetText
 End With
 
 Set TempObject = Nothing

End Sub

きゃづみぃさんのコメント
なお、質問には カンマ区切りとありますが セルの中に入っている文字列が 100,000というような場合は、セルの区別がつきにくくなると思うので タブ区切りがいいですよ。

きゃづみぃさんのコメント
つまり >> 一番最良の方法を教えて下さい。 << となるかと思います。

pochi1234さんのコメント
質問の趣旨と違うのか私のレベルが低いのか理解が難しいです。 クリップボードは使用せずに、Msgboxを使用してRangeを表示する方法がほしかったです。 ですが、そういう方法があるということを教えて頂きありがとうございます。

きゃづみぃさんのコメント
残念ながら Msgboxを使用するのは 一番最良の方法とは 思ってません。 デバッグプリントは イミディエイトに出力するものですし。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ