No.3ベストアンサー
- 回答日時:
あ、なるほど。
そういう手もありましたね。>#2,TAGOSAKU7 さんAPIを使わないのであれば、
Type typS1
a As String * 1
b As String * 1
c As String * 1
d As String * 1
e As String * 1
f As String * 1
End Type
Type TypS2
a As String * 6
End Type
Type TypS3
a(5) As String * 1
End Type
Sub test()
Dim S1 As typS1
Dim S2 As TypS2
Dim S3 As TypS3
S2.a = "一二三四五六"
LSet S1 = S2
MsgBox S1.c
LSet S3 = S2
MsgBox S3.a(2)
End Sub
ってな方法も…
ありがとうございました。
そうそう、LSETです。昔、VBで使ったなあと思っていて、普通にMoveしても、属性エラーでひっかかるから、
どうやってたかな・・・と、悩んでました。
本当に、胸のつかえがとれました。感謝です。
No.4
- 回答日時:
あ!LSetの存在!すっかり忘れてた!
無理にAPIを使う必要ないです。LSetで十分です。
MoveMemoryでできない事が、まれにLSetでできてしまう事もあります。
No.2
- 回答日時:
確実に全角が入っていないないという条件で、、、
構造体を作り、それを配列にしたら、連続した領域が配列に割り当たるため、メモリコピーが可能です。このサンプルは固定長に限り有効です。
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Long, Source As Long, ByVal Length As Long)
Private Type typString
str1byte As String * 1
End Type
Private Sub Form_Load()
Dim strA As String * 50
Dim strB(1 To 50) As typString
Dim i As Long
Dim strWk As String
'ダミーデータ
For i = 1 To 50
strWk = strWk & Chr(i + &H20)
Next i
strA = strWk
'文字バイト数のメモリコピー
Call CopyMemory(ByVal VarPtr(strB(1)), ByVal StrPtr(strA), ByVal LenB(strA))
End Sub
Private Sub Form_Load()
Dim strA As String * 50
Dim strB(1 To 50) As typString
Dim i As Long
Dim strWk As String
'ダミーデータ
For i = 1 To 50
strWk = strWk & Chr(i + &H20)
Next i
strA = strWk
'文字バイト数のメモリコピー
Call CopyMemory(ByVal StrPtr(strB(1)), ByVal StrPtr(strA), ByVal LenB(strA))
End Sub
No.1
- 回答日時:
ん~、ちょっと、仰りたいことが掴めないのですが、こういうこと、でしょうか?
Sub test()
Dim a() As Byte
Dim s As String
s = StrConv("ABCDEFG", vbFromUnicode)
a() = s
MsgBox Chr(a(6))
End Sub
MidBとかを使う方が汎用的だとは思いますが、現行のVBAではとりあえずは上記のようなことがこなせます。
「行儀が悪い」やり方ですが(^^;
ありがとうございます。
言葉足らずでもうしわけございません。
stra as string *50
を
strb(50) as string *1
に入れる、もしくは再定義(参照)して、
strb(1)~strb(50)をループで処理したいんです。
MIDを使えば、できるのはわかっておりますが、
処理時間をいくらか短縮したいので、再定義でなんとかなりませんかね・・・
COBOLやPL1だと簡単にできるのに、むずがゆいばかりです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- マウス・キーボード Google検索の英語キーボード 英語のキーボードの配列が元に戻らなくなりました まえの配列は左上に 1 2022/06/19 11:41
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) エクセルでフィルタ後の列の重複を回避したい 6 2022/10/13 12:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
VB.NETの配列にExcelから読み込...
-
エクセルでXY座標に並べられた...
-
Redim とEraseの違いは?
-
配列の中の最大値とそのインデ...
-
テキストボックの文字を一行ず...
-
VB6のメモリ解放に関して
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
構造体配列内の文字列検索のよ...
-
vba フィルター 複数条件 3つ以...
-
free()関数の多用 と Segment...
-
2次元配列のソート
-
VBAのワークシート関数で配列の...
-
Dir関数で読み取り順を操作でき...
-
ASPで配列を作る方法
-
excel vbaの配列なんですが・・・
-
配列の中から最大値だけ取り出...
-
大量の変数を定義するにはどう...
-
グラフの「項目軸ラベルに使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報