掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MSFlexGridでデータを貼り付けするには? (ID:84140)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
なんとか、自分で解決出来ました。 要するに、MSFlexGridからMSFlexGridへの コピー時に、動作が変なので、以下のようにしてあります。 MSFlexGridからエクセルへのコピーは、今までのコードで正常に行っています。 その他、若干コードは分かりやすくいたしました。 ご参考にしてください。 Dim GridTemp As String Private Sub Edit_Copy_Click() 'コピー Dim TempText As String TempText = MSFlexGrid1.Clip Clipboard.Clear Clipboard.SetText TempText 'MSFlexGridからコピーの場合、一時保存 GridTemp = TempText End Sub Private Sub Edit_Paste_Click() '貼り付け Dim TempText As String Dim IRow As Integer Dim ICol As Integer IRow = 1 ICol = 1 TempText = Clipboard.GetText 'データの行数、列数を得る Search TempText, IRow, ICol '範囲を指定し、貼り付け With MSFlexGrid1 If .Row + IRow <= .Rows And .Col + ICol <= .Cols Then .RowSel = .Row + IRow - 1 .ColSel = .Col + ICol - 1 .Clip = TempText Else MsgBox "貼り付け先が範囲外です", vbOKOnly, "警告" End If End With End Sub Private Sub Search(ByVal Temp As String, r As Integer, C As Integer) 'データの行数、列数を得る Dim TmpString As String Dim MyTemp As String '貼り付けデータの一時保存 MyTemp = Temp '1行分の文字列を得る Chr(13)=リターン TmpString = Left(Temp, InStr(Temp, Chr(13))) '列数を得る Chr(9)=タブ Do Until InStr(TmpString, Chr(9)) = 0 TmpString = Mid(TmpString, InStr(TmpString, Chr(9)) + 1) C = C + 1 Loop '行数を得る Do Until InStr(Temp, Chr(13)) = 0 Temp = Mid(Temp, InStr(Temp, Chr(13)) + 1) r = r + 1 Loop r = r - 1 'MSFlexGridからのコピーの場合 If MyTemp = GridTemp Then r = r + 1 If r = 1 Then '列数を得る Do Until InStr(MyTemp, Chr(9)) = 0 MyTemp = Mid(MyTemp, InStr(MyTemp, Chr(9)) + 1) C = C + 1 Loop End If End If End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.