Excel VBA質問箱 IV

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

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


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

【32275】マクロに関する質問! 助けてください けんけん 05/12/12(月) 8:20 質問[未読]
【32276】Re:マクロに関する質問! 助けてください ちくたく 05/12/12(月) 8:35 発言[未読]
【32277】Re:マクロに関する質問! 助けてください やっちん 05/12/12(月) 8:54 発言[未読]
【32279】Re:マクロに関する質問! 助けてください けんけん 05/12/12(月) 9:14 お礼[未読]
【32281】Re:マクロに関する質問! 助けてください ちくたく 05/12/12(月) 9:29 回答[未読]
【32284】Re:マクロに関する質問! 助けてください やっちん 05/12/12(月) 9:54 発言[未読]
【32292】Re:マクロに関する質問! 助けてください けんけん 05/12/12(月) 11:59 お礼[未読]
【32294】Re:マクロに関する質問! 助けてください けんけん 05/12/12(月) 12:14 質問[未読]
【32295】Re:マクロに関する質問! 助けてください やっちん 05/12/12(月) 12:27 発言[未読]
【32298】Re:マクロに関する質問! 助けてください けんけん 05/12/12(月) 13:01 回答[未読]
【32297】Re:マクロに関する質問! 助けてください Kein 05/12/12(月) 12:51 発言[未読]
【32305】Re:マクロに関する質問! 助けてください やっちん 05/12/12(月) 16:28 発言[未読]

【32275】マクロに関する質問! 助けてください
質問  けんけん  - 05/12/12(月) 8:20 -

引用なし
パスワード
   ↓のようなマクロを組んでいるのですがSheet("1")を
もしSheetタブでSheetの名前を2に変更したら、Sheet("2").Range・・
に変わる方法は無いでしょうか?

 .Range("J2").Value = Sheets("1").Range("g3").Text

説明がヘタクソなのですが、要は

 x = Sheet名

 .Range("J2").Value = Sheets("x").Range("g3").Text

みたいな感じにする事は出来るのでしょうか?

ついでに そのSheetのセルA1にそのSheet名を反映させる方法はあるのでしょうか?

親切な方教えて下さいm(_ _)m


  

【32276】Re:マクロに関する質問! 助けてください
発言  ちくたく WEB  - 05/12/12(月) 8:35 -

引用なし
パスワード
   けんけん さん。
おはようございます。

うーん、ちょっと、混乱してるみたいなので、
整理ついでに、回答を。

>↓のようなマクロを組んでいるのですがSheet("1")を
>もしSheetタブでSheetの名前を2に変更したら、Sheet("2").Range・・
>に変わる方法は無いでしょうか?

.Range("J2").Value = Sheet1.Range("G3").Text
みたいなやりかたをやれば、名前を変えようとも大丈夫(だと思います)。

> x = Sheet名
>
> .Range("J2").Value = Sheets("x").Range("g3").Text

これは、悩むことなく上のコードでできるはずですが。

>ついでに そのSheetのセルA1にそのSheet名を反映させる方法はあるのでしょうか?

Sheets("x").Range("A1").Value = x とかですかね?

Sheet1.NameみたいなNameメソッドを使う方法があります。

【32277】Re:マクロに関する質問! 助けてください
発言  やっちん  - 05/12/12(月) 8:54 -

引用なし
パスワード
   こんにちは。
>.Range("J2").Value = Sheet1.Range("G3").Text
ここでの「Sheet1」はプロパティWINDOWに表示されている
オブジェクト名です。
シート名(NAMEプロパティ)と別になっているので
シート名を変更してもオブジェクト名に影響がありません。

【32279】Re:マクロに関する質問! 助けてください
お礼  けんけん  - 05/12/12(月) 9:14 -

引用なし
パスワード
   なるほど!!!!

SHEET1みたいな感じでやってみて成功しました!!

有難うございますぅ!!

すこし考えすぎでいた面もありました。

助かりました!

しかし・・
A1セルにSHEET名を反映させる方法が未だ理解できません・・・

A1に直接何か関数を入力するのでしょうか?

初心者なものでスミマセン・・

【32281】Re:マクロに関する質問! 助けてください
回答  ちくたく WEB  - 05/12/12(月) 9:29 -

引用なし
パスワード
   けんけんさん。
おはようございます。

Sub test()
   Sheet1.Range("A1") = Sheet1.Name
End Sub

これで、シート名が取得されるはずです。
ためしに、シートの名前をいろいろ変えて実行してみてください。

関数というか、シートっていろんな情報含んでますよね、
その、シートの中の、特に名前の情報を取り出してね、
という感じのものです。
(さっき、メソッドと書きましたが、プロパティですかね)

【32284】Re:マクロに関する質問! 助けてください
発言  やっちん  - 05/12/12(月) 9:54 -

引用なし
パスワード
   >   Sheet1.Range("A1") = Sheet1.Name
下のように書くとイメージがわくでしょうか?
   Sheet1.Range("A1").Value = Sheet1.Name
セルのA1の値にシート名を入れています。

【32292】Re:マクロに関する質問! 助けてください
お礼  けんけん  - 05/12/12(月) 11:59 -

引用なし
パスワード
   なるほど!! 有難うございます。

理解できました。

【32294】Re:マクロに関する質問! 助けてください
質問  けんけん  - 05/12/12(月) 12:14 -

引用なし
パスワード
   以前この掲示板で教えていただいたのですが、下記のプログラムの変更分を教えて欲しいです。

以前はユーザーフォームでのパターンを教えていただいたのですが、
sheet1で入力されたデーターをsheet名("DATA")に記録させたいのです。

----------------------------------------
Option Explicit

Private wksList As Worksheet
Private vntPos As Variant
Private lngRow As Long

Private Sub UserForm_Initialize()

  vntPos = Array("K5", "D7", "F7", "F4", "H4"・・・・・)
  
 
  Set wksList = Workbooks("伝票データー.xls").Worksheets("Format")
  With wksList
    '伝票一覧の最終行を取得
    lngRow = .Range("A65536").End(xlUp).Row
    '最終行が3未満なら
    If lngRow < 3 Then
      lngRow = 3
    '最終行が3以上なら+1
    Else
      lngRow = lngRow + 1
    End If
  End With
  
End Sub

Private Sub UserForm_Terminate()

  Set wksList = Nothing
 
End Sub

Private Sub OkBtn_Click()

  Dim i As Long
 
  With Workbooks("伝票入力.xls").Worksheets("確認表")
    'データ位置全てに就いて繰り返し
    For i = 0 To UBound(vntPos)
      'データ位置のデータを順番に転記
      wksList.Cells(lngRow, i + 1).Value _
            = .Range(vntPos(i)).Value
    Next i
  End With
 
  '書き込み行を更新
  lngRow = lngRow + 1
  
  Workbooks("伝票データー.xls").Save
 
End Sub
--------------------------------------------------

変更点を教えて下さい。 このプログラムさえ解かれば完成なのですが・・・

助けてくださいm(_ _)m

【32295】Re:マクロに関する質問! 助けてください
発言  やっちん  - 05/12/12(月) 12:27 -

引用なし
パスワード
   ▼けんけん さん:
内容の違うものは別のスレッドにしてください。
題名は内容のわかるものでお願いします。
また、現在の仕様と変更点を詳しく書かれないと
意図が伝わりません。

【32297】Re:マクロに関する質問! 助けてください
発言  Kein  - 05/12/12(月) 12:51 -

引用なし
パスワード
   元の質問は
>もしSheetタブでSheetの名前を2に変更したら、Sheet("2").Range・・
>に変わる方法
を尋ねていましたよね ? 解決したみたいだけど、何かちょっと違う方向にずれて
いってませんか ? もし上記の内容から回答するとすれば

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  With Sheets("Sheet1")
   .Range("J2").Value = Sh.Range("G3").Text
   .Range("A1").Value = Sh.Name
  End With
End Sub

というイベントマクロを、ThisWorkbookモジュールに入れて下さい。と、なります。
なお、仮に転記先のシートは Sheet1 にしています。

【32298】Re:マクロに関する質問! 助けてください
回答  けんけん  - 05/12/12(月) 13:01 -

引用なし
パスワード
   申し訳御座いません・・・

別のスレッドで詳しい質問内容と一緒に質問させて頂きます。

【32305】Re:マクロに関する質問! 助けてください
発言  やっちん  - 05/12/12(月) 16:28 -

引用なし
パスワード
   ▼Kein さん:
>元の質問は
>>もしSheetタブでSheetの名前を2に変更したら、Sheet("2").Range・・
>>に変わる方法
>を尋ねていましたよね ? 解決したみたいだけど、何かちょっと違う方向にずれて
>いってませんか ? もし上記の内容から回答するとすれば
>
>Private Sub Workbook_SheetActivate(ByVal Sh As Object)
>  With Sheets("Sheet1")
>   .Range("J2").Value = Sh.Range("G3").Text
>   .Range("A1").Value = Sh.Name
>  End With
>End Sub
>
>というイベントマクロを、ThisWorkbookモジュールに入れて下さい。と、なります。
>なお、仮に転記先のシートは Sheet1 にしています。

おっしゃるとおりですね。ずれてますね。
けんけんさん、失礼しました。

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