Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8073 / 13645 ツリー ←次へ | 前へ→

【35210】文字列に変換 Hi 06/2/23(木) 20:41 質問[未読]
【35215】Re:文字列に変換 かみちゃん 06/2/23(木) 20:59 回答[未読]
【35216】Re:文字列に変換 Kein 06/2/23(木) 20:59 回答[未読]
【35222】Re:文字列に変換 Hirofumi 06/2/23(木) 22:02 回答[未読]
【35282】Re:文字列に変換 Hi 06/2/25(土) 12:59 お礼[未読]

【35210】文字列に変換
質問  Hi  - 06/2/23(木) 20:41 -

引用なし
パスワード
   A列の数字を全て文字列に変換したいのですが、下のコードでは
#NAME?が出てしまいます。問題点をご指摘いただけませんでしょうか?

Dim i As Long
For i = Range("A16").Row To Range("A65536").End(xlUp).Row
Cells(i, 2).Formula = "=Cells(i, 1)&"""""
Next

また
下のコードでは循環参照になり全て0になります。
問題点をご指摘頂きたくお願いします。
Dim R As Range
Dim MyR As Range
Set MyR = Range("A16", Range("A65536").End(xlUp))
For Each R In MyR
  If R <> "" Then
 R.Offset(, 1).Formula = "=R&"""""
  End If
Next

【35215】Re:文字列に変換
回答  かみちゃん  - 06/2/23(木) 20:59 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> Cells(i, 2).Formula = "=Cells(i, 1)&"""""

Cellsというワークシート関数はないからです。
Cells(i, 2).Value = "'" & Cells(i, 1).Value
とします。

> R.Offset(, 1).Formula = "=R&"""""

R.Offset(, 1).Value = "'" & R.Value
とします。

【35216】Re:文字列に変換
回答  Kein  - 06/2/23(木) 20:59 -

引用なし
パスワード
   >A列の数字を全て文字列に変換
変換した結果はB列に表示するのですね ? A列の数値が数式の計算結果ではなく
直接入力した数値である、という前提で・・

Dim MyR As Range, C As Range

On Error GoTo ELine
Set MyR = Range("A16", Range("A65536").End(xlUp)) _
.SpecialCells(2, 1)
On Error GoTo 0
For Each C In MyR
  C.Offset(, 1).Value = "'" & C.Value
Next
Set MyR = Nothing
ELine:

というようなコードで出来るはずです。
もし数式の結果なら Set MyR 〜 SpecialCells(3, 1) とします。

【35222】Re:文字列に変換
回答  Hirofumi  - 06/2/23(木) 22:02 -

引用なし
パスワード
   こんなので、善いかも?

Option Explicit

Public Sub Sample()

  Dim i As Long
  Dim lngRows As Long
  Dim rngList As Range
  Dim vntData As Variant
  Dim strResult() As String
  Dim strProm As String
  
  'Listの左上隅セル位置を基準として設定(列見出しの最左セル位置)
  Set rngList = ActiveSheet.Cells(16, "A")
  With rngList
    'データ行数を取得
    lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row + 1
    'データが無い場合
    If lngRows <= 1 And .Value = "" Then
      strProm = "データが有りません"
      GoTo Wayout
    End If
    'データを配列に取得
    vntData = .Resize(lngRows + 1).Value
  End With
  
  'String型の結果用配列を確保
  ReDim strResult(1 To lngRows, 1 To 1)
  
  'データを文字列にして結果用配列に格納
  For i = 1 To lngRows
    strResult(i, 1) = CStr(vntData(i, 1))
  Next i
  
  '結果用配列を出力
  rngList.Resize(lngRows).Value = strResult
  
  strProm = "処理が完了しました"
  
Wayout:
    
  Set rngList = Nothing
  
  MsgBox strProm, vbInformation
  
End Sub

【35282】Re:文字列に変換
お礼  Hi  - 06/2/25(土) 12:59 -

引用なし
パスワード
   ▼かみちゃんさん Kein さん Hirofumi さん:

お礼が遅くなりました。
よく分かりました、ありがとうございました。
これからもよろしくお願いします。

8073 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free