Pemula dengan makro/vba di sini.

Saya memiliki templat dengan dua tombol - satu menyalin dan menempelkan lembar ke tab baru, yang kedua akan menambahkan baris berdasarkan tombol Perintah dari input manual

Apakah ada cara bagi saya untuk mengedit kode sehingga akan memasukkan jumlah baris untuk ditambahkan berdasarkan nilai sel di dalam templat - misalnya, tambahkan jumlah baris berdasarkan nilai di Sel D16

Private Sub CommandButton2_Click()
Dim numrow
numrow = Application.InputBox("Please enter number of rows to add. Note: please refer to total installments (Cell D16)", "Insert Row", , , , , , 1)

If IsNumeric(numrow) Then

For i = 1 To numrow

Call INRW

Next i
End If

End Sub

Kode untuk INRW seperti di bawah ini

Sub INRW()

ActiveSheet.Unprotect "Password"

Range("B" & Rows.Count).End(xlUp).Select

ActiveCell.Offset(-2).EntireRow.Insert Shift:=xlDown

Range("B22").End(xlDown).Offset(-1).Copy
Range("B22").End(xlDown).PasteSpecial xlPasteFormulas
Range("B22").End(xlDown).Offset(1).PasteSpecial xlPasteFormulas

Range("H22").End(xlDown).Offset(-1).Select
Range(ActiveCell, ActiveCell.End(xlToRight)).Copy
Range("H22").End(xlDown).PasteSpecial xlPasteFormulas
ActiveCell.Offset(1).PasteSpecial xlPasteFormulas

ActiveSheet.Protect "Password"

End Sub

Atau mungkinkah saya langsung menjalankan INRW setelah menyalin lembar?

Public Sub CopySheetAndRename()
    Dim newName As String

    On Error Resume Next
    newName = InputBox("Enter the name for the copied worksheet")

    If newName <> "" Then
        ActiveSheet.Copy After:=Worksheets(Sheets.Count)
        On Error Resume Next
        ActiveSheet.Name = newName
        Range("$D$3").Value = newName
    End If

    Dim n As Name
    For Each n In ActiveWorkbook.Names
    n.Visible = True
    Next n

End Sub

File awalnya berfungsi, saya mencoba merampingkan proses penggunaan file.

Tujuan dari file tersebut adalah untuk

  1. Pengguna untuk membuat salinan dari tab template menggunakan tombol - CopySheetAndRename
  2. Pengguna untuk memasukkan nama tab - yang akan menjadi ID unik - yang cocok dengan informasi yang menautkan ke database informasi di buku kerja yang sama tetapi pada tab yang berbeda
  3. Sel dalam template yang baru dibuat kemudian akan mencari kembali ke database untuk mengekstrak bit data yang relevan dengan id unik itu - salah satunya adalah jumlah numerik untuk jumlah kolom yang akan ditambahkan
  4. Dalam file saat ini, pengguna kemudian harus memasukkan jumlah baris secara manual untuk ditambahkan berdasarkan informasi ini
  5. Namun saya mencoba untuk merampingkan proses dengan meminta makro menambahkan jumlah baris yang ditentukan setelah lembar baru dibuat.
  6. Saya ingin menyimpan kotak input karena pengguna dapat memilih untuk menambahkan baris lebih dari jumlah yang ditentukan di D16

Semoga masuk akal

0
Tommy Li 20 September 2019, 06:27

1 menjawab

Jawaban Terbaik

Mencoba

Range("D16").Value

Atau

Cells(16, 4).Value

Untuk referensi nilai di Sel D16

Jika Anda ingin menyingkirkan kotak input, cukup ganti dengan pernyataan InputBox dengan

numrow = Range("D16").Value

Jika Anda akan menetapkannya sebagai nilai default dari kotak input, masukkan ke dalam argumen ke-3 dari pemanggilan metode InputBox()

numrow = Application.InputBox("Please enter number of rows to add. Note: please refer to total installments (Cell D16)", "Insert Row", Range("D16").Value, , , , , 1)

Untuk versi terbaru Anda yang diedit, saya tidak mengerti mengapa menyalin lembar terkait dengan pertanyaan awal.

0
henrywongkk 20 September 2019, 05:12