0

私はこのようなデータシートを持っています

ページ1

衣装:ジョセフ

ID: 12345

(衣装とID)を含むフォームをより簡単に手動で作成します。フォーム内に情報があります。

ページ内の特定のセルに情報を配信する挿入ボタンがあります。

Private Sub CommandButton1_Click()

i = Cells(Rows.Count, 1).End(xlUp).Row + 23 'Get last empty cell in column A
Range("D" & i).Value = TextBox1
'Range("D1").Value = TextBox1
Range("D2").Value = TextBox4
Range("C4").Value = TextBox2
Range("C5").Value = TextBox3
    If OptionButton1.Value = True Then
       Range("A7").Value = OptionButton1.Caption
       ElseIf OptionButton2.Value = True Then
       Range("A7").Value = OptionButton2.Caption
       ElseIf OptionButton3.Value = True Then
       Range("A7").Value = OptionButton3.Caption
       Else
       Range("A7").Value = OptionButton4.Caption
     End If
Unload Me
End Sub   

私の問題は、ワークシートの 2 ページ目で同じことを行う必要があることです。マクロをコピーして貼り付けて 2 ページ目で同じことを行うと、値が同じ位置で 2 ページ目にある必要がありますが、マクロは、ページの同じセルの日付を解放します 1, コードを見ると、Value = TextBox1 を「D1 に設定しました.マクロをコピーしてフォームを呼び出した後に数式が必要です.アクティブなシートに貼り付けます.現在のように最初のページにはありません。カウンターを置いてみますがうまくいきません。どんな助けでも大歓迎です。

この図では、sheet1 "hoja1" と page1 "pagina 1"、およびロード フォーム (datos del presupuesto) が表示されます。 ここに画像の説明を入力

また、シート 1 以外のページ 2 (ページ 2) の画像 2 もあります。このページでは、ページ 1 (マクロとすべて) と同じものをコピーして貼り付け、挿入ボタンを押してフォームを読み込みます。 2ページではなく1ページで行います。

ここに画像の説明を入力

これは、1 つのページをコピーしてマクロを貼り付けるときに役立つ数式である必要があります。すべてのセル値をページにプルし、すべてのデータを貼り付けます。

4

1 に答える 1

1

特定のシートから範囲を取得する場合は、範囲の前にそのシートを使用します。

Sheet1.Range("D" & i).Value = TextBox1 'takes cell from first sheet.
Sheet2.Range..... 'takes cell from second sheet.


ActiveWorkbook.Worksheets("SheetName").Range.... 'you get sheets by their names

シートを変数に入れることもできるので、シート名を繰り返す代わりにそれを使い続けることができます:

Dim TargetSheet as Worksheet
Set TargetSheet = ActiveWorkbook.Worksheets("SheetName")

TargetSheet.Range.....
TargetSheet.Range......
TargetSheet.Range......

したがって、コードは次のようになります。

Private Sub CommandButton1_Click()

    'First thing: select your specific sheet:
    Dim MySheet as Worksheet
    Set MySheet = ActiveWorkbook.Worksheets("TheNameOfYourSheet")

    'Now, before every range or cell, take them FROM that specific sheet
    i = MySheet.Cells(Rows.Count, 1).End(xlUp).Row + 23 'Get last empty cell in column A

    'Select your pivot cell (don't forget MySheet)
    Dim PivotCell as Range
    Set PivotCell = MySheet.Range("D" & i)

    'Put the value in the pivot
    PivotCell.Value = TextBox1 

    'Now you can start using the offsets (it's really better, as you commented)
    PivotCell.Offset(0,1).Value = TextBox4 'That would be D2 if Pivot is D1

    'I'm not sure if you can use negative offsets, 
    'if not, take the top left cell of your target area as pivot -
    'But there surely will be an error if the offset falls to the left or above A1
    PivotCell.Offset(3, -1).Value = TextBox2 'That is C4 -         
    PivotCell.Offset(4,-1).Value = TextBox3 'C5

    If OptionButton1.Value = True Then
        PivotCell.Offset(6,-3).Value = OptionButton1.Caption ' A7
    ElseIf OptionButton2.Value = True Then
        PivotCell.Offset(6,-3).Value = OptionButton2.Caption
    ElseIf OptionButton3.Value = True Then
        PivotCell.Offset(6,-3).Value = OptionButton3.Caption
    Else
        PivotCell.Offset(6,-3).Value = OptionButton4.Caption
    End If

    Unload Me
End Sub   

さらに良いことの1つはName、細胞に対するものです。Excel 画面の左上には、選択したセルの座標が表示されるテキスト ボックスがあります (「A1」、「B2」など)。そのボックスに名前を入力すると、次のようなコードでその名前付きセルを使用できます。

ActiveSheet.Range("NamedCell")
于 2013-05-24T19:56:00.120 に答える