Melewati string yang lebih lama dari 255 karakter yang terpotong di Excel

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 213841 - Melihat produk di mana artikel ini berlaku.
Untuk Microsoft Excel 97 dan sebelumnya dan Microsoft Excel 98 dan versi sebelumnya dari artikel ini, lihat 105416.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Jika Anda menggunakan Microsoft Visual Basic untuk aplikasi prosedur untuk lulus string yang lebih besar daripada panjang untuk karakter 255 objek, seperti kotak teks, Microsoft Excel dapat memotong string untuk 255 karakter atau mungkin gagal untuk memasukkan string dalam kotak teks.

Perilaku ini juga umum terjadi ketika Anda mencoba untuk menyampaikan lebih dari 255 karakter Sambungan atau SourceData argumen PivotTableWizard. Ketika Anda mencoba untuk melakukan hal ini, Anda menerima berikut pesan galat:
Galat run-time '1004':
Metode PivotTableWizard kelas lembar kerja gagal
CATATAN: Perilaku ini mempengaruhi variabel Excel lainnya.

PENYEBAB

Di Microsoft Excel 7.0 atau sebelumnya, perilaku ini terjadi karena batas karakter per sel adalah 255 karakter. Akibatnya, string besar dari 255 karakter panjangnya yang lulus dari prosedur Visual Basic untuk setiap fungsi Microsoft Excel atau objek yang dipotong ke 255 karakter.

Dalam Excel, Anda dapat menggunakan lebih dari 255 karakter dalam sel; Namun, ketika Anda melewati string yang lebih besar dari 255 karakter panjangnya dari prosedur Visual Basic, Excel menggunakan desain yang sama yang menggunakan versi sebelumnya.

Batas ini berlaku untuk semua string yang Anda lulus dari Visual Basic prosedur untuk Excel sheet; Hal ini tidak eksklusif untuk informasi Anda lulus untuk sel. Sebagai contoh, jika Anda melewati string teks yang lebih panjang dari 255 karakter untuk kotak teks pada lembar kerja atau selembar dialog, Excel memotong teks meskipun kotak teks dapat menampung hingga 10,240 karakter.

TEKNIK PEMECAHAN MASALAH

Microsoft menyediakan contoh pemrograman hanya sebagai ilustrasi, tanpa jaminan apa pun baik tersurat maupun tersirat. Termasuk, namun tidak terbatas pada, jaminan tersirat mengenai kelayakan untuk diperdagangkan atau kesesuaian untuk keperluan tertentu. Artikel ini mengasumsikan bahwa Anda telah terbiasa dengan bahasa pemrograman yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan mendebug prosedur. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, namun mereka tidak akan memodifikasi contoh untuk memberikan fungsionalitas tambahan atau menyusun prosedur untuk memenuhi persyaratan khusus Anda. Untuk memasukkan lebih dari 255 karakter dalam kotak teks, menggunakan Karakterproperti untuk memasukkan beberapa variabel string. Contoh 1 dan 2 berisi makro yang menggunakan Karakter properti untuk melakukan hal ini.

Untuk lulus lebih dari 255 karakter untuk Sambungan atau SourceData argumen, mengkonversi string panjang untuk sebuah array. Untuk melihat contoh makro yang menggunakan fungsi ditetapkan pengguna, lihat contoh 3.

Contoh 1

Dalam contoh berikut, panjang karakter setiap variabel adalah 100. Setiap Masukkan metode menyisipkan string lainnya pada posisi di ujung tali sebelumnya.
Sub NoLoop()
   Dim var1 As String, var2 As String, var3 As String, var4 As String
   Dim first As Integer, second As Integer, third As Integer

   ' Create four text string, each 100 characters in length.     
   var1 = String(100,"a")
   var2 = String(100,"b")
   var3 = String(100,"c")
   var4 = String(100,"d")

   ' The character length of each variable string is 100 characters.
   ' Define the variable equal to length of the first string.
   first = Len(var1) + 1
   ' Define variables equal to length of the original string plus
   ' the length of each additional string.
   second = first + Len(var2)
   third = second + Len(var3)

   ' Select the text box on the worksheet.
   ActiveSheet.Shapes("Text Box 1").Select

   With Selection

      ' Place the first string into the text box.
      .Characters.Text = var1

      ' Place the second, third, and fourth text strings into the
      ' text box. 
      .Characters(Start:=first).Text = var2
      .Characters(Start:=second).Text = var3
      .Characters(Start:=third).Text = var4
   End With
End Sub
				

Contoh 2

Contoh ini menggunakan struktur perulangan untuk memasukkan string panjang ke dalam kotak teks.
Sub Looper()
   Dim i as Integer
   Dim mytxt As String

   ' Create a string 1000 characters in length.
   mytxt = WorksheetFunction.Rept("test", 250)

   ActiveSheet.Shapes("Text Box 1").Select
      
   With Selection

      ' Initialize text in text box.
      .Text = ""
      For i = 0 To Int(Len(mytxt) / 255)
      .Characters(.Characters.Count + 1).Text = Mid(mytxt, (i * 255) + _
         1, 255)
      Next

   End With

End Sub
				

Contoh 3: Mengkonversi teks ke Array PivotTableWizard

Contoh ini menciptakan sebuah PivotTable dari Microsoft Access database. Mengkonversi nilai untuk Sambungan argumen untuk menggunakan arrayStringToArray fungsi karena string lebih besar daripada panjang 255 karakter.
Sub ExecuteLongConnection()

    'Declare variables.
    Dim Chan As Variant
    Dim LongConnection As Variant
    Dim NumRows, NumCols As Variant

    ' Set LongConnection to a long connection string
    ' (> 127 characters).
    LongConnection = "ODBC;DBQ=\\mustang2\databases\nwind.mdb;" _
       & "DefaultDir=\\mustang2\databases;Driver={Microsoft " _
       & "Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" _
       & "ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;" _
       & "PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;" _
       & "UserCommitSync=Yes"

    ' Execute the PivotTableWizard method and use the StringToArray
    ' function to convert the long string to elements in an array.
    ActiveSheet.PivotTableWizard SourceType:=xlExternal, SourceData:= _
           Array("SELECT Employees.EmployeeID, Employees.Region," _
           & "Employees.Country FROM `\\mustang2\databases\NWIND`" _
           & ".Employees Employees"), _
           TableDestination:="", TableName:="PivotTable1", _
           BackgroundQuery:=False, _
           Connection:=StringToArray(LongConnection)

'NOTE: You can add your own code to add fields to the pivot table.

End Sub

Function StringToArray(Query As Variant) As Variant

   Const StrLen = 127 ' Set the maximum string length for
                      ' each element in the array to return
                      ' to 127 characters.
   Dim NumElems As Integer
   Dim Temp() As String

   ' Divide the length of the string Query by StrLen and
   ' add 1 to determine how many elements the String array
   ' Temp should contain, and redimension the Temp array to
   ' contain this number of elements.

   NumElems = (Len(Query) / StrLen) + 1
   ReDim Temp(1 To NumElems) As String

   ' Build the Temp array by sequentially extracting 127
   ' segments of the Query string into each element of the
   ' Temp array.

   For i = 1 To NumElems
      Temp(i) = Mid(Query, ((i - 1) * StrLen) + 1, StrLen)
   Next i

   ' Set the function StringToArray to the Temp array so it
   ' can be returned to the calling procedure.

   StringToArray = Temp

End Function
				

REFERENSI

Untuk informasi lebih lanjut tentang mendapatkan bantuan dengan Visual Basic untuk aplikasi, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
226118Daftar sumber daya yang tersedia untuk membantu Anda mempelajari Visual Basic untuk aplikasi pemrograman
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properti

ID Artikel: 213841 - Kajian Terakhir: 20 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
Kata kunci: 
kbdtacode kberrmsg kbprb kbprogramming kbmt KB213841 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:213841

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com