Excel VBA質問箱 IV

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

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


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

【69866】セル位置のへんこう nima papa 11/9/9(金) 9:41 質問[未読]
【69868】Re:セル位置のへんこう Yuki 11/9/9(金) 11:57 発言[未読]
【69869】Re:セル位置のへんこう Yuki 11/9/9(金) 12:00 発言[未読]
【69872】Re:セル位置のへんこう nina papa 11/9/9(金) 20:55 発言[未読]
【69873】Re:セル位置のへんこう Yuki 11/9/10(土) 8:56 発言[未読]

【69866】セル位置のへんこう
質問  nima papa  - 11/9/9(金) 9:41 -

引用なし
パスワード
   VBAの組み方がわかりません

変更前
11111|05|08|10
22222|
33333|05|08|10
44444|05| |10
G1111|
F4444|05|


変更後
11111|05
11111|08
11111|10
33333|05
33333|08
33333|10
44444|05
44444|10
F4444|05
変更前から変更後にするには・・・
分る方ご教授願いただければら幸いです

【69868】Re:セル位置のへんこう
発言  Yuki  - 11/9/9(金) 11:57 -

引用なし
パスワード
   ▼nima papa さん:
>VBAの組み方がわかりません
こんにちは。
Sheet1から結果をSheet2に出しています。

Sub TBL_SET()
  Dim i    As Long
  Dim j    As Long
  Dim k    As Long
  Dim varT  As Variant
  Dim varR() As Variant
  
  varT = Worksheets("Sheet1").Range("A1").CurrentRegion
  ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 3)
  
  For i = 1 To UBound(varT)
    For j = 2 To UBound(varT, 2)
      If varT(i, j) <> Empty Then
        k = k + 1
        varR(k, 1) = varT(i, 1)
        varR(k, 2) = varT(i, j)
      End If
    Next
  Next
  With Worksheets("Sheet2")
    .Cells.ClearContents
    .Range("A1").Resize(k, 2).Value = varR
  End With
End Sub

【69869】Re:セル位置のへんこう
発言  Yuki  - 11/9/9(金) 12:00 -

引用なし
パスワード
   >▼nima papa さん:
変更です
>ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 3)
ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 2)
                          ↑に変更してください

【69872】Re:セル位置のへんこう
発言  nina papa  - 11/9/9(金) 20:55 -

引用なし
パスワード
   ▼Yuki さん:
>>▼nima papa さん:
>変更です
>>ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 3)
>ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 2)
>                          ↑に変更してください

お返事有難うございます
マジ感動しました;;

しかしなぜ・・・
ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 3)
で実行確認取れましたが・・

【69873】Re:セル位置のへんこう
発言  Yuki  - 11/9/10(土) 8:56 -

引用なし
パスワード
   ▼nina papa さん:
>しかしなぜ・・・
>ReDim varR(1 To UBound(varT) * UBound(varT, 2), 1 To 3)
>で実行確認取れましたが・・

それは配列が必要数より大きいからです。
varR(行数,桁数) で
行数はデータの数分確保して
桁数は2列分あれば良いのに3としてあるから2に変更してOKです。

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