8 karakterli kullanıcı adı oluşturmak için Excel Makrosu


2

Sekiz karakterli bir kullanıcı adı oluşturmak için bir Excel VBA makrosu kullanmaya çalışıyorum. Bir hücreye girilirse, formüller çalışıyor gibi görünüyor. E-tablomda, B6'da soyadı, C6'da ilk adı ve D6'da orta adımı sahibim. Sonuçlar G6'da. Soyadı ve ad uzunluğu <8 ise, orta ad, kullanıcı adına dahil edilir. İşte ne var:

Sub Macro1()

' Macro1 Macro

Range("G6").Select

If Len(B6) >= 7 Then
    ActiveCell.FormulaR1C1 = "=LOWER(CONCATENATE(LEFT(RC[-5],7),LEFT(RC[-4],1))"
Else
'    ActiveCell.FormulaR1C1 = "=LOWER((LEFT(RC[-5],7)&LEFT(RC[-4],(8-LEN(RC[-5])))))"

End If

End Sub

Henüz orta adı ekleyerek henüz kısa bir şifreye girmedim. Bu diğerlerine ikincil.

Yanıtlar:


3

Şahsen, bunun için kullanıcı tanımlı bir işlev yaratacağım, bu şekilde bir çalışma sayfası işlevi çıktısı almak için bir alt seçeneğe ihtiyacınız yok

Bunun için sadece G6'ya girersiniz =username(C6,D6,G6). İlave fayda, bakım ve kodlarınızı derhal makroya okumak ve herhangi bir hücreye başvuru yapmak zorunda kalmama kodunun okunabilirliğinin artmasıdır.

Public Function UserName(ByVal firstName As String, ByVal lastName As String, ByVal middleInitial As String) As String
    Dim result As String
    If Len(firstName) + Len(lastName) >= 8 Then
        result = firstName & lastName
    Else: result = firstName & middleInitial & lastName
    End If

    If Len(result) > 8 Then result = Left(result, 8)

    UserName = result
End Function

Bu, benzer fonksiyonlar için de kolayca kullanılabilir çünkü okunması kolaydır.

Yalnızca Dimdeğişkenleri girerek ve ilgili hücrelerine ayarlayarak bir alt olarak tutmak istiyorsanız aynı kod türünü kullanabilirsiniz .

Bu işlevin mantığına ilişkin önemli bir not - girişiminizde ilk + orta + sonun 8'den küçük olma olasılığını hesaba katmazsınız, bu yüzden ne yapmak istediğinizi bilmiyorum. Belki maksimum 8’iniz bu yüzden 5 olup olmaması önemli değil - eğer öyleyse, karakter eklemede bir mantık ekleyin. Ayrıca, bu kullanıcı adı oluşturuyorsa, büyük olasılıkla mevcut kullanıcı adlarına göre kontrol etmek ve çoğaltmalar için ayarlamak isteyeceksiniz.


Thansks; çok yararlı. Bir deneyeceğim.
Zengin

@Rich çalışırsa, soruyu eksiksiz olarak işaretlemek için lütfen cevabın yanındaki yeşil onay işaretini tıkladığınızdan emin olun.
Raystafarian,
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.