No.3ベストアンサー
- 回答日時:
こんなものはいかがでしょうか?
標準モジュールに以下を全て入れて下さい。
-------------------------------------------------------------------------
Dim 文字列 As String
Sub GetXX()
Dim セル As Range
Dim 頭 As Long
文字列 = "'"
For Each セル In Selection
頭 = InStr(セル.Value, "=")
If 頭 <> 0 Then
If Len(文字列) > 1 Then 文字列 = 文字列 & Chr(10)
文字列 = 文字列 & Mid(セル.Value, 頭 + 1)
End If
Next
End Sub
Sub PutXX()
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
With .Font
.Name = "MS Pゴシック"
.Size = 11
End With
.Value = 文字列
End With
End Sub
-------------------------------------------------------------------------
☆ 使い方
① 取り込む範囲を選択状態にして下さい
②「GetXX」を実行する
③ 貼り付け個所を選択状態にして下さい
④「PutXX」を実行する
※「文字列 = "'"」はエクセルが勝手に変な書式設定にしないようにしています。
※ 結合セルのセル高は自動で広げられません
No.2
- 回答日時:
あくまでも、私が使うとしたら、こういうものを作っているだろう、という前提で作りました。
ですから、説明のしようがありません。いわゆるフル装備で、クリツプボードを経由して、貼り付けるスタイルです。MsgBox も、順調に進んでいる場合は、自動的に消えます。
ショートカットキーで起動しますから、以下の場合は、やりにくいのですが、
Ctrl + Alt + C でデータ格納
Ctrl + Alt + V でデータは貼り付けになります。カスタマイズできます。
たぶん、もっとわかりやすいものを作る方がいらっしゃるでしょうから、その方に譲ります。
'//標準モジュール
Option Explicit
Private objCB As Object
Private Declare Function MessageBoxTimeoutA Lib "user32" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long, ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long
Sub SettingKeys()
'ショートカットキー設定
'//適当にカスタマイズしてください。
'/SHIFT +/CTRL ^/ ALT %
Application.OnKey "^%c", "GetDatatoClipBoard" 'CTRL+Alt -> C
Application.OnKey "^%v", "PasteFromData" 'CTRL+Alt -> V
End Sub
Sub GetDatatoClipBoard()
'データをクリツプボードに入れる
Dim buf As String
Dim i As Long, c
Set objCB = CreateObject("new:1C3B4210-F441-11CE-B9EA-00AA006B1A69")
If TypeName(Selection) <> "Range" Then
MsgBox "範囲を選択してください。", vbExclamation: Exit Sub
End If
For Each c In Selection
i = InStr(1, c.Value, ":=", 1)
If i > 0 Then
If buf = "" Then
buf = Mid(c.Value, i + 2)
Else
buf = buf & vbLf & Mid(c.Value, i + 2)
End If
End If
Next
With objCB
.SetText buf ''変数のデータをDataObjectに格納する
.PutInClipboard
Beep
End With
Selection.Offset(1).Select
MessageBoxTimeoutA 0&, "クリツプボードに格納しました", "Excel", vbMsgBoxSetForeground, 0, 2000 '2秒待ち
End Sub
Sub PasteFromData()
'ペースト
Dim buf2 As String
Dim Rng As Range
Dim k As Long
If TypeName(Selection) <> "Range" Then
MsgBox "セルを選択してください。", vbExclamation: Exit Sub
End If
Set Rng = Selection.Cells(1)
Rng.MergeCells = False
With Rng.Resize(2)
.Merge
.Font.Name = "MS Pゴシック"
.Font.Size = 11
.HorizontalAlignment = xlCenter
End With
With objCB
On Error Resume Next
.GetFromClipboard ''クリップボードからDataObjectにデータを取得する
buf2 = .GetText ''DataObjectのデータを変数に取得する
If (buf2 = "" Or Err.Number <> 0) Then MsgBox "格納したデータがありません。", vbCritical: Exit Sub
On Error GoTo 0
End With
Rng.Value = buf2
k = Len(buf2) - Len(Replace(buf2, vbLf, ""))
Rng.EntireRow.RowHeight = Rng.Cells(1).RowHeight * k
End Sub
Sub SetOffKeys()
'設定キーの解除
Application.OnKey "^%c", ""
Application.OnKey "^%v", ""
End Sub
No.1
- 回答日時:
こんにちは
エクセルのセル内改行は文字コード10の一文字です。
ですので、1行ずつに分けるならChr(10)を区切り文字として分割すれば良いです。
Split関数で配列に分割できますが、引数は0ベースになります。
仮に、元の値がA1セルにあって、分割後のn番目の文字列を求めたいとするなら、
Split(Range("A1").Value, Chr(10))(n)
で得られますので、それぞれ「=の前の文字列」と連結すればよさそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) ExcelのVBAコードについて教えてください。 1 2022/06/20 09:22
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセルのセル値に対応してマクロを実行する方法を教えてください セルA1が「1」の時にマクロ名「マク 2 2022/06/19 18:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
Excelのチェックボックスの使い...
-
エクセルのセルの枠を超えて文...
-
Excelで数式内の文字色を一部だ...
-
エクセル オートフィルタで絞...
-
貼り付けで複数セルに貼り付けたい
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
Excelでのコメント表示位置
-
【Excel】 セルの色での判断は...
-
セルをクリック⇒そのセルに入力...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル 足して割る
-
(Excel)数字記入セルの数値の後...
-
excelのCOUNTIF関数で、『範囲=...
-
複数のセルのいずれかに数字が...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
エクセルで縦に1112223...
-
エクセルで Aならば1. Bならば2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報