Excel VBA質問箱 IV

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

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


6249 / 13644 ツリー ←次へ | 前へ→

【46369】ユーザーフォーム上で列変更 takashi 07/2/1(木) 1:51 質問[未読]
【46376】Re:ユーザーフォーム上で列変更 へっぽこ 07/2/1(木) 11:09 発言[未読]
【46377】Re:ユーザーフォーム上で列変更 りん@とおりすがり 07/2/1(木) 11:12 回答[未読]
【46385】Re:ユーザーフォーム上で列変更 takashi 07/2/1(木) 14:12 発言[未読]
【46390】Re:ユーザーフォーム上で列変更 りん@とおりすがり 07/2/1(木) 16:46 回答[未読]
【46396】Re:ユーザーフォーム上で列変更 takashi 07/2/1(木) 18:37 お礼[未読]

【46369】ユーザーフォーム上で列変更
質問  takashi  - 07/2/1(木) 1:51 -

引用なし
パスワード
   現在下記コードをユーザーフォーム上で利用しているのですが
B列をたとえばD列あるいはG列というように[書式の都合で変更したい]
ユーザーフォームにテキストボックスを置き簡単に列変更できませんか。?
テキストボックスでいいのか悪いのかその辺もわかりません。
ご指導お願いできますか。
Option Explicit

Private Sub CommandButton1_Click()
With ActiveCell
    If .Column <> 2 Or .Value <> "" Then ※ここの2を変更 4or7
      MsgBox "セルの場所が不適切です"
      Exit Sub
    End If
End With

Dim i As Long
Dim r As Long
Dim myRes As Variant

r = ActiveCell.Row

myRes = MsgBox("小計を出します", vbYesNo)
If myRes = vbYes Then
For i = r - 1 To 1 Step -1
  If Cells(i, 1).Value = "小計" Or Cells(i, 1).Value = _
    "合計" Or Cells(i, 1).Value = "計" Then
  If i = r - 1 Then
    MsgBox ("計算する行がありません")
  Else
    Cells(r, 2).Value = "=sum(B" & i + 1 & ":B" & r - 1 & ")" 
    Cells(r, 1).Value = "小計" ※2とBを変更 4or7 DorG
  End If
    i = 1
  End If
  Next
 End If
End Sub


Private Sub CommandButton2_Click()
With ActiveCell
    If .Column <> 2 Or .Value <> "" Then ※ここの2を変更 4or7
      MsgBox "セルの場所が不適切です"
      Exit Sub
    End If
End With

Dim i As Long
Dim r As Long
Dim myRes As Variant

r = ActiveCell.Row

myRes = MsgBox("合計を出します", vbYesNo)

For i = r - 1 To 1 Step -1
  If Cells(i, 1).Value = "合計" Or Cells(i, 1).Value = "計" Then
  If i = r - 1 Then
    MsgBox ("計算する行がありません")
  Else
    Cells(r, 2).Value = "=sumif(A" & i + 1 & ":B" & r - 1 & _
      ",""小計"",B" & i + 1 & ":B" & r - 1 & ")"
    Cells(r, 1).Value = "合計" ※2とBを変更 4or7 DorG
  End If
    i = 1
  End If
 Next
End Sub

【46376】Re:ユーザーフォーム上で列変更
発言  へっぽこ  - 07/2/1(木) 11:09 -

引用なし
パスワード
   質問の内容が良く分からないのですが。

あとマクロをそのままドンと貼るのではなく、
関係ない部分を取り除いた小さなサンプルを貼る様に心がけたほうが
良いと思います。

【46377】Re:ユーザーフォーム上で列変更
回答  りん@とおりすがり  - 07/2/1(木) 11:12 -

引用なし
パスワード
   takashi さん、こんにちわ。

>現在下記コードをユーザーフォーム上で利用しているのですが
>B列をたとえばD列あるいはG列というように[書式の都合で変更したい]
>ユーザーフォームにテキストボックスを置き簡単に列変更できませんか。?
>テキストボックスでいいのか悪いのかその辺もわかりません。
>ご指導お願いできますか。
オプションボタン風リストボックスで分岐するならこんな感じ。

フォームにリストボックスをひとつ(ListBox1)追加しておいてください。
列分岐のリストボックスを追加します

Private Sub UserForm_Initialize()
  'OptionGroupのようなリストボックスを作成
  Dim ldat(1 To 3, 1 To 2) As Variant
  '組みあわせを間違えないように気をつけて
  ldat(1, 1) = "B": ldat(1, 2) = 2
  ldat(2, 1) = "D": ldat(2, 2) = 4
  ldat(3, 1) = "G": ldat(3, 2) = 7
  'ldat(4, 1) = "AA": ldat(4, 2) = 27 という展開も可能
  'リストボックス設定
  With ListBox1
   .MultiSelect = fmMultiSelectSingle
   .ListStyle = fmListStyleOption
   .List = ldat
   .BoundColumn = 2
   .ListIndex = 0 'デフォはB
  End With
End Sub

Private Sub CommandButton1_Click()
  Dim rc1 As String '列情報:文字
  Dim rc2 As Integer '列情報:番号
  rc1 = ListBox1.Text
  rc2 = ListBox1.Value
  '
<<以下略>>

以下、
Bとしていたところを変数rc1に、
 例: Cells(r, 2).Value = "=sum(" & rc1 & i + 1 & ":" & rc1 & r - 1 & ")"

2としていたところを変数rc2に訂正して試してみてください。
 例:  If .Column <> rc2 Or .Value <> "" Then

【46385】Re:ユーザーフォーム上で列変更
発言  takashi  - 07/2/1(木) 14:12 -

引用なし
パスワード
   ▼りん@とおりすがり さん:
ありがとうございます。
Private Sub CommandButton1_Click()はバッチリなのですが

Private Sub CommandButton2_Click()の下記の部分がうまくいきません
  Else
    Cells(r, rc2).Value = "=sumif(A" & i + 1 & ":" & rc1 & r - 1 & _
      ",""小計"",rc1" & i + 1 & ":" & rc1 & r - 1 & ")"
       ~~~~~~~~~~~~~~~~~~~
    Cells(r, 1).Value = "合計"
問題ありますか?
 =SUMIF(A4:G5,"小計",'rc14':G5)のセルの値になってます
>
>>現在下記コードをユーザーフォーム上で利用しているのですが
>>B列をたとえばD列あるいはG列というように[書式の都合で変更したい]
>>ユーザーフォームにテキストボックスを置き簡単に列変更できませんか。?
>>テキストボックスでいいのか悪いのかその辺もわかりません。
>>ご指導お願いできますか。
>オプションボタン風リストボックスで分岐するならこんな感じ。
>
>フォームにリストボックスをひとつ(ListBox1)追加しておいてください。
>列分岐のリストボックスを追加します
>
>Private Sub UserForm_Initialize()
>  'OptionGroupのようなリストボックスを作成
>  Dim ldat(1 To 3, 1 To 2) As Variant
>  '組みあわせを間違えないように気をつけて
>  ldat(1, 1) = "B": ldat(1, 2) = 2
>  ldat(2, 1) = "D": ldat(2, 2) = 4
>  ldat(3, 1) = "G": ldat(3, 2) = 7
  ldat(4, 1) = "K": ldat(3, 2) = 11
            ~~~~~~~~~ 3 ,2はどういう数値を
いれればよいでしょうか
この数値の入れ方教授ください。例Jの場合 Lの場合???

Private Sub CommandButton2_Click()
  Dim rc1 As String '列情報:文字
  Dim rc2 As Integer '列情報:番号
  rc1 = ListBox1.Text
  rc2 = ListBox1.Value
 
With ActiveCell
    If .Column <> rc2 Or .Value <> "" Then
      MsgBox "セルの場所が不適切です"
      Exit Sub
    End If
End With

Dim i As Long
Dim r As Long
Dim myRes As Variant

r = ActiveCell.Row

myRes = MsgBox("合計を出します", vbYesNo)

For i = r - 1 To 1 Step -1
  If Cells(i, 1).Value = "合計" Or Cells(i, 1).Value = "品    名" Then
  If i = r - 1 Then
    MsgBox ("計算する行がありません")
  Else
    Cells(r, rc2).Value = "=sumif(A" & i + 1 & ":" & rc1 & r - 1 & _
      ",""小計"",rc1" & i + 1 & ":" & rc1 & r - 1 & ")"
    Cells(r, 1).Value = "合計"
  End If
    i = 1
  End If
 Next
End Sub
>  'ldat(4, 1) = "AA": ldat(4, 2) = 27 という展開も可能
>  'リストボックス設定
>  With ListBox1
>   .MultiSelect = fmMultiSelectSingle
>   .ListStyle = fmListStyleOption
>   .List = ldat
>   .BoundColumn = 2
>   .ListIndex = 0 'デフォはB
>  End With
>End Sub
>
>Private Sub CommandButton1_Click()
>  Dim rc1 As String '列情報:文字
>  Dim rc2 As Integer '列情報:番号
>  rc1 = ListBox1.Text
>  rc2 = ListBox1.Value
>  '
> <<以下略>>
>
>以下、
>Bとしていたところを変数rc1に、
> 例: Cells(r, 2).Value = "=sum(" & rc1 & i + 1 & ":" & rc1 & r - 1 & ")"
>
>2としていたところを変数rc2に訂正して試してみてください。
> 例:  If .Column <> rc2 Or .Value <> "" Then

【46390】Re:ユーザーフォーム上で列変更
回答  りん@とおりすがり  - 07/2/1(木) 16:46 -

引用なし
パスワード
   takashi さん、こんにちわ。

>Private Sub CommandButton2_Click()の下記の部分がうまくいきません

SUMIF(検索範囲、検索値、データ範囲)のはずなので、数式は、
  "=sumif(A" & i + 1 & ":A" & r - 1 & _
      ",""小計""," & rc1 & i + 1 & ":" & rc1 & r - 1 & ")"

4つ目の条件があるならば、配列の宣言も変えてください。
>>  Dim ldat(1 To 4, 1 To 2) As Variant
>>  '組みあわせを間違えないように気をつけて
>>  ldat(1, 1) = "B": ldat(1, 2) = 2
>>  ldat(2, 1) = "D": ldat(2, 2) = 4
>>  ldat(3, 1) = "G": ldat(3, 2) = 7
   ldat(4, 1) = "K": ldat(4, 2) = 11

Jは10、Lは12です。

【46396】Re:ユーザーフォーム上で列変更
お礼  takashi  - 07/2/1(木) 18:37 -

引用なし
パスワード
   ▼りん@とおりすがり さん:
お騒がせしました。
CommandButton1,2共OKです
ありがとうございました。
大事に利用させていただきます。
また、お願いします。

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