私はVBAで新しく学習しています。私はすべてのシート上で値(前に "Number"として定義)を検索するコードを作成できました。特定のセルに特定の値を持つシートの場合は、シートから範囲をコピーしてから貼り付けます新しいワークシート。私はコピー&ペースト(以下のコードを参照)を使用していないと言っておく価値があります。コードは正常に動作しますが、新しいシートにソースと同じ書式を保持したいと思います。私はいくつかのことを試しましたが、うまくいくものはCopy
/Paste
タイプのコーディングを使用しなければならないことを意味します。コードの後半では、ActiveSheet
が変更されるので問題になります。他の試みは機能しません。さらに、新しいシートに貼り付ける範囲の修正カラム幅を持たせたいと思います。VBA:ソース書式と列幅を追加する場所は?
問題のコードは次のとおりです。 FYI =変数Number
は、コードの前半で定義されています。また、コードの早い段階で新しいシートを作成します。
私の質問:
敵下記のコード、「コピー」や「貼り付け」タイプのコーディングを使用することなく、ソースからの書式設定を維持する方法があります。
以下のコードでは、新しいスタッフが貼り付けられる列の幅をどうにか修正できますか?
コードを書くためのより優れた、よりエレガントな方法があれば、私はそれを感謝します。
For k = 1 To wscount - 1
If Worksheets(k).Range("F2").Value = Number Then
j = j + 1
Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)).Value = Worksheets(k).Range("F1:F100").Value
End If
Next
コピー/ペーストを使用する場合は、.PasteSpecial xlValuesAndNumberFormatsとxlPasteColumnWidthsを使用できます。私はこれが同じ行にあることができれば肯定的ではありませんが、各過去のオプションを示すために2行のコードを持つだけの単純さです。 – Cyril
一度に1つのフォーマットを設定する必要があります。ソース形式の背景色やフォント色からコピーするには、値を設定する行を複製し、 '.value'を' .font.color'または '.interior.color'に変更します。私は別の方法を考えることができません。 – Gordon
の場合、 '.width'を使うことができますが、if文(J = 1の場合は列幅を設定する)を入れる価値があるので、各列でこれを1回だけ行う必要があります。複数回設定します。 – Gordon