• ベストアンサー

エクセルでやりたい

任意で作ったダイアルログボックスに名前 あいうえお と入れたら セルA1にあいうえおと入る 次に名前 あいうえおを削除してかきくけこと入れると セルA2にかきくけこ これを繰り返して準じ下のセルに文字がどんどん入っていくなんて出来るものですか? 教えてください ダイアルログボックスも標準機能で任意で作れるものですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.4

> これって横に進むこと(セルB1 C1と)もできますか? できます。#2のコードに少し手を加えて、列数を変数にします。 mycul の値が列数です。 mycul = 1ならA列 mycul = 2ならB列、 mycul = 3ならC列・・・・となります。 Private Sub CommandButton1_Click() Dim myrow As Integer Dim mycul As Integer mycul = 1 With ActiveSheet  If .Cells(1,mycul).Value = "" Then   myrow = 1  Else   myrow = .Range(Cells(.Rows.Count, mycul).End(xlUp).Address).Row + 1  End If  .Cells(myrow, mycul).Value = TextBox1.Value End With End Sub

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

ワークシートにテキストボックスを1つ貼りつける(注1)。 そのテキストボックスをダブルクリックするとVBE画面に変る。 そこで上部左の「General」部をTextbox1、上部右の「Declarations」部を「Keydown」をクリックして選ぶ Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) End Sub の2行が出る。 その2行の中間に Static i As Integer If KeyCode = 13 Then i = i + 1 Cells(i, "A") = TextBox1.Text TextBox1.Text = "" をコピペして Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Static i As Integer If KeyCode = 13 Then i = i + 1 Cells(i, "A") = TextBox1.Text TextBox1.Text = "" End If End Sub とする。 デザインモードを脱して(注2) ワークシートのテキストボックスに文字を入れてEnterキーを押すと、A1にデータがセットされる。次のデータ入力+EnterキーでA2、以下下方向にデータが入ります。 (注1)メニュー余白部で右クリック。コントロールツールボックスをクリック。ツールボックスが出るから、テキストボックスのアイコンを探し、クリック。シート上にマウスを移動すると+になり、右下方向にドラッグするとテキストボックスが現れる。 (注2)鉛筆と定規の組み合わさったアイコンの凹みをクリックして複元(平板化)する。

jyon-31
質問者

お礼

ありがとうございます むずかしそうですがやってみます

  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

自分スタイルのダイアログボックスであればVBEで作る必要があります。 まずダイアログボックスの作成方法ですが、 1, Alt+F11キーを押します。 2, VisualBasicEditorが立ち上がりますので、左の方のプロジェクトエクスプローラの"VBAProject(ファイル名)"を右クリックして。 メニューから[挿入]>[ユーザーフォーム]とします。 これで白紙のユーザーフォームができます。次に、ユーザーフォームだけでは文字の記入ができませんので、テキストボックスを1個配置します。 1, 白紙のユーザーフォームが立ち上がりますのでツールボックスのコントロール群ボタンからテキストボックス(ab| のボタン)をクリックします。 2, 白紙のユーザーフォーム上でドラッグすれば、その範囲にテキストボックスが配置されます。 3, ついでにコマンドボタンも一個配置しておきましょう。 次に、VBAのコードディングに移ります。ユーザーフォームに配置したコマンドボタンを右クリックしてメニューから[コードの表示]を選択すると Private Sub CommandButton1_Click() End Sub と書かれたコードウインドウが立ち上がります。これは先ほど配置したコマンドボタン(CommandButton1)をクリックしたらどんな動作をさせるか記述するプロシージャです。 このプロシージャにA列の最下段を検出してそこにテキストボックスの値を転記するコードを記述します。 Private Sub CommandButton1_Click() Dim myrow As Integer With ActiveSheet  If .Range("A1").Value = "" Then   myrow = 1  Else   myrow = .Range(Cells(.Rows.Count, 1).End(xlUp).Address).Row + 1  End If  .Cells(myrow, 1).Value = TextBox1.Value End With End Sub なお、EXCEL5.0ダイアログシートを使う場合でもボタンクリックのマクロで上記のような、セル最下段検索と値の転記コードが必要です。

jyon-31
質問者

お礼

ありがとうございます やってみたら初めてマクロができましたよ これって横に進むこと(セルB1 C1と)もできますか?

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

セルA1を項目名として使うなら 「データ」「フォーム」でお望みの機能になります。 セルA1に項目名を入力後「データ」「フォーム」にします。 項目名(A)[  ]となるので[]内に登録する内容を記入してEnterで A2に登録されます。[]内が空白になるので入力の繰り返し B列以降に項目名があればそのすべてに入力で同じことが可能です。

jyon-31
質問者

お礼

なるほど  便利機能な機能ですね ありがとうございます

関連するQ&A

専門家に質問してみよう