VBA'ya yeni bir satır ekledikten sonra nasıl açılan liste ekleyebilirim


0

Yeni bir satır ekledikten sonra iki öğeli bir açılır liste eklemeye çalışıyorum. Aşağıdaki kod düzgün çalışmıyor.

     Dim varUserInput As Variant
     varUserInput = InputBox("Enter Row Number where you want to add a row:", 
    "What Row?")
    If varUserInput = "" Then Exit Sub
    RowNum = varUserInput
    Rows(RowNum + 1).Insert Shift:=xlDown
    With Sheet1.RowNum.listBox1
     .AddItem "Paris"
     .AddItem "New York"
    End With

Burada ne yapmaya çalıştığını tam olarak bilmiyorum. ListBox1Zaten var mı yoksa eklemek mi istiyorsun? Ayrıca, RowNumbir dize - Rangeihtiyacınız olacak bir referans almak için Sheet1.Rows(RowNum).
Comintern

@Comintern - Listbox'ı otomatik olarak yeni
satıra

@Comintern Açılır Liste
user3713336

Yanıtlar:


0

Bunu dene:

Sub Macro1()

RowNum = InputBox("Enter Row Number where you want to add a row:", "What Row?")
If RowNum = "" Then Exit Sub

Range("A1").Offset(RowNum, 0).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="London,Sydney"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With
End Sub

Not: Bunun çoğunu Geliştirici sekmesindeki Makro Kaydet aracını kullanarak kaydettim, ardından kodunuzun bölümlerini kullanmak için düzenledim. Bu aşağı açılır doğrulama listesi gibi bir şey eklemek için gereken kodun tam olarak kullanıldığından emin olmamanız yararlı bir yöntemdir.

Düzenleme: Aynı anda iki liste eklemek için:

Sub Macro1()
'ask user for row to insert data
RowNum = InputBox("Enter Row Number where you want to add a row:", "What Row?")
If RowNum = "" Then Exit Sub

'insert dropdowns in column A
Range("A1").Offset(RowNum, 0).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="London,Sydney"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

'inset second drop down in column E
Range("E1").Offset(RowNum, 0).Select '<-- change reference to E
'Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove '<-- line removed as don't need to insert twice

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="New York,Jakarta"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

End Sub

ve birçok özdeş listeyle:

Sub Macro1()
Dim RowNum As Integer
Dim Lists As Integer

'ask user for row to insert data
RowNum = InputBox("Enter Row Number where you want to add a row:", "What Row?")

'insert row
Range("A1").Offset(RowNum, 0).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

'ask how many drop down lists to make
Lists = InputBox("Enter number of drop down lists to make in this row:", "Number?")

i = 0

Do While i < Lists And i < 1000
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Hong Kong,Rome,Wellington,Cairo"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

    'move across one cell
    ActiveCell.Offset(0, 1).Range("A1").Select

    i = i + 1
Loop


End Sub

Bu çalışmıyor, satırın tamamını ekleyemiyor ve bu yöntemi kullanarak 2 açılır liste
ekleyemiyorsunuz

üzgünüm, hiç kitap kullanmadım. Sadece 15 yıl çalıştığımdan ve emin olmadığım zaman internetteki kodlara bakıyorum. Makro Kaydı işleviyle oynamayı ve ne ürettiğini görmenizi öneririm - Göreli Referanslar açık ve açık olmadan. Ve döngülerin nasıl çalıştığını öğrenin. Bir kez yineleme ile kod yapabilir, tekrarı kaldıran makrolar yapabilirsiniz.
Sir Adelaide

İki açılır liste eklemeye çalıştığımda çalışmıyor. Yanlış bir şey yapıyorum .... Biraz değiştiriyorum - Aralık ("A1", "E1"). Ofset (RowNum, 0) .Select
user3713336

Range işlevi giriş olarak yalnızca bir hücre referansı alır, aynı anda "A1" ve "E1" veremezsiniz. İki açılanlar için bir örnek göstereceğim.
Sir Adelaide

Adeladie --- vay en iyisin .... ne yapabilirim veya senin gibi bir kodlayıcı olmak için kendimi nasıl geliştirebilirim ... lütfen bana bazı ipuçları veya kitaplar ver. ya da youtube'da öğretici var mı ....
user3713336
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.