ich habe eine Frage zu VBA (Betriebssystem: Mac-OS 7.5.5, XL 5.0a
englisch):
Wie kann ich Texte mit mehr als 255 Zeichen in eine MsgBox bzw. eine
TextBox uebertragen?
Mein Problem:
Ich moechte gerne ueber VBA laengere Texte (in der Groessenordnung von
400 Zeichen) anzeigen. Wenn ich das ueber den Befehl
MsgBox MeinText
versuche, werden lediglich 255 Zeichen angezeigt, der Rest verschwindet.
Ich habe es dann mit Dialogblaettern versucht, in denen der Text mittels
einer TextBox angezeigt wird - klappt prima :-)
Da ich aber eine ganze Reihe verschiedener Texte anzuzeigen habe, bin
ich auf die glorreiche Idee gekommen, die TextBox erst unmittelbar vor
der Anzeige des Dialogblattes zu fuellen, und zwar mit
DialogSheets(1).TextBoxes(1).Text = MeinText
weil ich vermeiden moechte, lediglich zur Anzeige von Texten ca 30
Dialogblaetter in meiner XL-Datei mitzuschleppen (macht die Geschichte
nicht gerade uebersichtlich). Hier reicht dann ein Dialog. Leider wird
wird der Text wieder nach 255 Zeichen abgeschnitten :-(
Offensichtlich kann VBA nicht mehr Zeichen auf einmal verarbeiten - und
zwar unabhaengig davon, ob sie in einem oder als "Summe" von
Zeichenketten uebertragen werden sollen, also
DialogSheets(1).TextBoxes(1).Text = MeinText1 & MeinText2
Auch die Angabe des Textes selber (also "Bla Bla Bla ..." 400 Zeichen
oder so) statt der Variablen funktioniert nicht, ebenfalls
gleichgueltig, ob ich den Text in Folgezeilen herunterbreche, oder eine
einzige lange Monsterzeile in meinem VBA-Script habe.
Die TextBox kann ja wohl mehr als diese begrenzte Anzahl von Zeichen
aufnehmen (ich hab's ja gesehen, siehe oben), und die Online-Hilfe
behauptet, eine MsgBox koenne ca. 1024 Zeichen darstellen. Nur: wie
bekomme ich diese Anzahl Zeichen hinein?
Mit herzlichem Dank fuer Eure Muehe
Markus Weyers
MailTo: MWey...@ford.com
zu Deinem Problem der folgende Artikel aus der MS-KB:
================================================================
Text of copyrighted KB article follows:
================================================================
XL5: Passed Strings Greater Than 255 Characters Are Truncated
Article ID: Q105416
--------------------------------------------------------------------
The information in this article applies to:
- Microsoft Excel for Windows, version 5.0
- Microsoft Excel for Macintosh, version 5.0
--------------------------------------------------------------------
SYMPTOMS
========
In Microsoft Excel, if you use a Microsoft Visual Basic Programming System,
Applications Edition procedure to pass a string greater than 255 characters
to an object such as a text box, the text is truncated to 255 characters.
CAUSE
=====
This behavior occurs because in Microsoft Excel, you cannot have more than
255 characters per cell. As a result, any strings greater than 255
characters passed from a Visual Basic procedure to any Microsoft Excel-
specific function or object is truncated to 255 characters.
This limit applies to all strings passed from a Visual Basic procedure to a
Microsoft Excel sheet (it is not exclusive to information passed to cells).
For example, if you pass a text string longer than 255 characters to a text
box, either on a worksheet or a dialog sheet, the text is truncated even
though a text box can hold up to 10,240 characters.
WORKAROUND
==========
To insert more than 255 characters in a text box, you can use the
Characters property to insert multiple string variables by using either of
the following examples:
Microsoft provides examples of Visual Basic procedures for illustration
only, without warranty either expressed or implied, including but not
limited to the implied warranties of merchantability and/or fitness for a
particular purpose. This Visual Basic procedure is provided 'as is' and
Microsoft does not guarantee that it can be used in all situations.
Microsoft does not support modifications of this procedure to suit customer
requirements for a particular purpose. Note that a line that is preceded by
an apostrophe introduces a comment in the code--comments are provided to
explain what the code is doing at a particular point in the procedure. Note
also that an underscore character (_) indicates that code continues from
one line to the next. You can type lines that contain this character as one
logical line or you can divide the lines of code and include the line
continuation character. For more information about Visual Basic for
Applications programming style, see the "Programming Style in This Manual"
section in the "Document Conventions" section of the "Visual Basic User's
Guide."
Example 1
---------
In the example below, the character length of each variable is 100. Each
Insert method inserts another string at the position at the end of the
previous string.
Sub NoLoop()
Dim var1 as String, var2 as String, var3 as String
Dim first As Integer, secnd As Integer, third As Integer
' Note that each of the strings within quotation marks should be entered
' on one line
var1 = _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
var2 = _
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
var3 = _
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccc"
var4 = _
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
dddddddddddddddddddddddddddddddd"
'Character length of each variable string is 100 characters
' Define variable equal to length of first string
first = Len(var1) + 1
' Define variables equal to length of original string plus
' length of each additional string
secnd = first + Len(var2)
third = secnd + Len(var3)
' Insert first string into text box
DialogSheets(1).TextBoxes(1).Characters.Insert String:=var1
' Insert second string at the location of the end of the first string
DialogSheets(1).TextBoxes(1).Characters(first).Insert String:=var2
' Insert third string at the location of the end of the second string
' and so on
DialogSheets(1).TextBoxes(1).Characters(secnd).Insert String:=var3
DialogSheets(1).TextBoxes(1).Characters(third).Insert String:=var4
End Sub
Example 2
---------
Sub Loop ()
Dim i as Integer
Dim mytxt As String
' Assign mytxt variable to the desired string
' String should be entered as one line
mytxt = "this is the desired string longer than 255 characters"
With DialogSheets(1).TextBoxes(1)
' Initialize text in text box
.Text = ""
For i = 0 To Int(Len(mytxt) / 255)
.Characters(.Characters.Count + 1).Insert Mid(mytxt, (i * 255) + _
1, 255)
Next
End With
End Sub
MORE INFORMATION
================
Visual Basic, Applications Edition is an improvement over using the
Microsoft Excel 4.0 macro language in that you CAN use Visual Basic
procedures for parsing, reading, and writing from a file up to 64K in size.
When you use strings in a Visual Basic procedure, you are not limited to
255 characters; if you are using Microsoft Windows version 3.1, you can use
strings up to 64K.
REFERENCES
==========
"User's Guide," version 5.0, page 113
KBCategory: kbprg kbcode
KBSubcategory:
Copyright 1993 Microsoft Corporation. All rights reserved.
--------------------------------------------------------------------------------
Gruss Hans
--
****************************************************
* Herber's Excel-Server - letztes Update: 19.02.98 *
* http://www.herber.de - Mail: her...@herber.de *
* Microsoft MVP - Excel *
****************************************************
Markus Weyers schrieb in Nachricht <34F316...@t-online.de>...
Ich habe allerdings jetzt noch eine Frage, die sich mehr mit
"Netiquette" als mit Excel beschaeftigt. Ich lese diese NG im
allgemeinen an meinem Arbeitsplatz (waehrend der Pause, oder vor/nach
der Arbeit, bitteschoen). Hier kann ich allerdings nicht posten, d.h.
mein Posting bleibt in der "Firewall" der Company haengen. Daher
antworte ich, wenn ich denn mal eine Antwort weiss, per e-mail (das
funktioniert).
Der Austausch per e-mail ausserhalb der NG, das ist hier schon ein
paarmal diskutiert worden, ist eher unerwuenscht. Aber, was soll ich
machen; ich gehe nicht jeden Abend von zu Hause aus on-line (nach einem
Tag am Bildschirm reicht's mir haeufig), von der Arbeit aus geht's
nicht. Also lieber gar nicht posten, oder mit ein paar Tagen
Verspaetung, oder eben doch per e-mail? Mich wuerde mal Eure Meinung zu
diesem Thema interessieren.
Also, bis demnaechst
Markus Weyers
MailTo:MWey...@ford.com
vielen Dank für das Kompliment.
Deine Frage bezüglich der Postings in die NG und als EMail zu Excel-Themen würde
ich so beantworten, daß sich die Themendiskussion vorwiegend in der NG abspielen
sollte. Antworten, die direkt an den Fragesteller gepostet werden, ohne daß eine
Info in die NG gestellt wird, haben die Nachteile, daß sich dritte NG-Abonnenten
möglicherweise mit einem Problem herumschlagen, das sich für den Fragesteller
inzwischen erledigt hat, daß die Lösung an ebenfalls an einer Antwort
interessierten vorbeigeht und daß Irrtümer und Denkfehler - ich weiß, wovon ich
rede - nicht korrigiert werden.
Auf das aus Deiner persönlichen Situation resultierende Problem kann ich nur
sagen: Beantworte die Fragen weiter per EMail. Eine Antwort über einen Nebenweg
ist besser, als keine Antwort.
Meinerseits handhabe ich es so, daß ich in Fällen, bei denen ich zu
Lösungsansätzen begleitend Musterarbeitsmappen weitergebe, in die NG und als
Mail poste. Wenn ich den Eindruck habe, daß das Problem weitere Interessenten
finden könnte, stelle ich eine Demodatei auf meinen Excelserver und verweise
hierauf.
Gruss Hans
--
****************************************************
* Herber's Excel-Server - letztes Update: 19.02.98 *
* http://www.herber.de - Mail: her...@herber.de *
* Microsoft MVP - Excel *
****************************************************
Markus Weyers schrieb in Nachricht <34F5BB...@t-online.de>...
>Der Austausch per e-mail ausserhalb der NG, das ist hier schon ein
>paarmal diskutiert worden, ist eher unerwuenscht. Aber, was soll ich
>machen; ich gehe nicht jeden Abend von zu Hause aus on-line (nach einem
>Tag am Bildschirm reicht's mir haeufig), von der Arbeit aus geht's
>nicht. Also lieber gar nicht posten, oder mit ein paar Tagen
>Verspaetung, oder eben doch per e-mail? Mich wuerde mal Eure Meinung zu
>diesem Thema interessieren.
>
Hast Du Zugang zum www?
Dann vielleicht...
----== Posted via Deja News, The Leader in Internet Discussion ==----
http://www.dejanews.com/
Gruß HW
--
---==## Hans Werner Hofmann ##==---
Fachschule fuer Lebensmitteltechnik
E.C.Baumann-Str.22 95326 Kulmbach
INFO: http://www.tmt.de/~hhofmann